Re: seq. waveform
Hi,
Since you have not specified the delay mechanism so the default delay
mechanism of intertial delay is used for driving signal a.With the
first assignement to a,transaction is scheduled on it and it is
executed when we reach the wait statement.Now when we reach the
statement
a <= something after 2 ns;
something is scheduled as a transaction on a in the signal driver,here
since you have not given the rejection limit so it is taken as the
delay of the first waveform element hence it is taken to be 2 ns.Now
when this transaction is added to the signal driver for signal a,there
is no other transaction in the signal driver hence nothing needs to be
deleted.Now when we reach the statement
a <= something after 4 ns;
another transaction is added to the signal driver for signal a which
already had a transaction scheduled which would have occured at 2ns.Now
when the above statement is executed since you have not specified the
rejection limit it is taken as the delay of the first waveform element
which in this case is 4 ns.So according to the rules of adding
transactions for intertial delay in case in the signal driver we have a
transaction at a space t(time for transaction) - trj(rejection time)
whose value is DIFFERENT then the value of the current transaction it
will be deleted from the the signal driver.So in case you specify both
values as 1 it works and in case you specify the values at those time
to be different the first assignment does not gets executed.
There are many ways to get the waveform that you are desiring,you could
use transport delay or you could use a rejection limit like 1 ns incase
your pulse rejection is like 1 ns.
|