From: johnp on
I assume you're using the raw input clock for this reset logic? If
you're
using the DCM output clock, it will nver count since the DCM is reset.


John Providenza
From: ghelbig on
On Jan 19, 12:20 am, Jonathan Bromley <jonathan.brom...(a)MYCOMPANY.com>
wrote:
> On Mon, 18 Jan 2010 23:50:01 -0800 (PST), "jmi...(a)pop.net" wrote:
> >>          if (|DCM_Delay) begin
> >What character is in front of DCM_Delay in that if statement?
>
> I hope it's a vertical bar, the reduction-OR operator;
> that would make the test effectively "if (DCM_Delay != 0)"
> (which would have been more readable anyway).
>
> The code looks OK to me.  The counter DCM_Delay should
> reset to 4'hf, count down to zero and then remain stuck at
> zero until the next reset.  DCM_Reset should go to zero
> one clock after DCM_Delay reaches zero.
>
> Is there any chance that (a) the clock is not ticking, or
> (b) reset is stuck high?
> --
> Jonathan Bromley

I take both clock and reset to debug pins. They are working as
expected.

More investigation reveals that none of the clocked processes are
running. It's as if there's some big global signal that is holding
every flop in reset.

I've tried 10.1.3 and 11.1.4 - both behave badly. I'm running in
Linux64 (ubuntu 9.10), and can't find the 'enable global reset' option
to turn it off.

I got here trying to debug a DCM power-on reset. I've gone as far as
stripping the code down to this counter and a couple of latches. The
clock is the input to the DCM, but I've removed the DCM completely to
debug this counter.

I've noticed two more strange XST things:
1) If I use 'reset' as an async reset _anywhere_, XST assumes that
it's OK to use it everywhere. Including on instance where I coded it
(reset) as the input to a d-flop, and XST wired it to an async preset.
2) If I connect the counter to debug pins without a name translation
or an OBUF, XST will disconnect the counter from the net. Looking at
the RTL (or technology) schematic shows the output of the counter
dangling.

Frustrated,
Gary.

Comment on #1 above:
The code is
always @ (posedge fpga_clock) reset_d <= reset;
XST ties the D input to '0', and connects reset to the async preset!