Timing simulation error on bus


J

JSreeniv

Hi all,
I am running post route timing simulations for my modules where the
targeted device is Actel proasic3.
I had net list and sdf files for running these simulations.
When running for Min,Typ,Max simulations, i am getting the simulations
results on waveform for only Typ and Max but not for Min. For Min
simulation up to some steps are running and the output bus become idle
until the end of simulation time finishes.
I came to know that by adding 1 ps resolution time then it works,..so
i went for that by giving 1 ps at Modelsim vsim command line its
surprise to see the all results. I am happy but why it is happen for
the Min simulation only ..

Please anyone give some knowledge on this...why it happens

Thanks
 
Ad

Advertisements

K

KJ

I came to know that by adding 1 ps resolution time then it works,..so
i went for that by giving 1 ps at Modelsim vsim command line its
surprise to see the all results. I am happy but why it is happen for
the Min simulation only ..

Please anyone give some knowledge on this...why it happens

Presumably because the typ and max simulation models did not try to
delay anything by less than 1 ns but the min simulation did (assuming
that you previously had 1 ns time resolution).

KJ
 
J

JSreeniv

Presumably because the typ and max simulation models did not try to
delay anything by less than 1 ns but the min simulation did (assuming
that you previously had 1 ns time resolution).

KJ

Hi KJ,
I am still not getting the reason why it happen, yes as from your
response my previous max and typ simulations are had 1 ns time
resolution.

Thanks
 
Ad

Advertisements

K

Kenn Heinrich

JSreeniv said:
I am still not getting the reason why it happen, yes as from your
response my previous max and typ simulations are had 1 ns time
resolution.

In VHDL, if you specify a time less that the resolution limit, the
simulator turns that into zero time. That means that events which have
a proper ordering when executed with a 1 ps limit:

if rising_edge(clk)
a <= '1' after 100 ps; -- a happend after clk
b <= '0' after 200 ps; -- b happens later than a
end if;

will become equivalent to a system with totally different order

if rising_edge(clk)
a <= '1' after 0 ns;
b <= '0' after 0 ns; -- b,a both happen one delta cycle after clk
end if;

This usually messes things up pretty badly :)

- Kenn
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top