Ken Kundert wrote on Apr 8th, 2014, 12:35am:Andrew,
I think dff2 is okay. The variable state is ignored by the idt operator except when ActNow is nonzero, and that is only true on the time point where state is updated. So, while state may represent hidden state, from the perspective of the model it appears stateless.
-Ken
Ken,
Good point. I guess it's a bit hard for spectre to infer that though.
spectrallypure - if you use the ignore_state attribute in current versions of the simulator, it says:
WARNING (VACOMP-2351): "(* ignore_state *)<<--? integer actNow, out, state;"
"dff.va", line 48: Encountered the 'ignore_state' attribute, which is obsolete and no longer supported. To
ignore the state of a Verilog-A module, use the 'ignore_hidden_state' module attribute instead.
So rather than putting the ignore_state attribute on individual variables, instead using:
(* ignore_hidden_state *) module dff2 (clk, d, reset, q, qb);
did the job. This converges fine for me in my simple testbench - as Ken said, the convergence issue is probably related to the rest of the PLL.
Regards,
Andrew.