T
Tim Frink
Hi,
I've a question about the simulation of VHDL signals.
In the VHDL standard, it's said for the inertial delay
model (for example here
http://tams-www.informatik.uni-hamburg.de/vhdl/doc/P1076-2000-D3/
P1076_Chap_08.pdf p126):
8.4.1 Updating a projected output waveform
a) All of the new transactions are marked;
b) An old transaction is marked if the time at which it is projected to
occur is less than the time at which the first new transaction is
projected to occur minus the pulse rejection limit;
c) For each remaining unmarked, old transaction, the old transaction is
marked if it immediately precedes a marked transaction and its value
component is the same as that of the marked transaction;
d) The transaction that determines the current value of the driver is
marked;
e) All unmarked transactions (all of which are old transactions) are
deleted from the projected output waveform.
I don't understand c).
Let's say, I've a signal "sig_a" which at the current time (t=2ns)
is assigned the value "0" and I've two more assignments which are
executed at the same time (t=2ns):
sig_a <= '1' after 10ns;
sig_a <= '1' after 11ns;
For the first assignment I would add a transaction at time
t=12ns (1 for sig_a). For the next transaction, I would add
another 1 at time t=13ns. Due to rule c), transaction at time
t=12ns would be kept.
This does not fit to my understanding of real hardware. In my opinion,
"sig_a <= '1' after 11ns" means that the hardware needs 11ns to
"charge" before it can change its state. So, any signal changes in between
which where previously executed (like sig_a <= '0' after 5ns are
omitted. However, in my example this would mean that "charging" which
should take 11ns is shorten to 10ns due to the first assignment
to sig_a since (due to c)) this transaction has the same value
and will be kept.
Could you help me understanding the simulation.
Thank you.
Best regards,
Tim
I've a question about the simulation of VHDL signals.
In the VHDL standard, it's said for the inertial delay
model (for example here
http://tams-www.informatik.uni-hamburg.de/vhdl/doc/P1076-2000-D3/
P1076_Chap_08.pdf p126):
8.4.1 Updating a projected output waveform
a) All of the new transactions are marked;
b) An old transaction is marked if the time at which it is projected to
occur is less than the time at which the first new transaction is
projected to occur minus the pulse rejection limit;
c) For each remaining unmarked, old transaction, the old transaction is
marked if it immediately precedes a marked transaction and its value
component is the same as that of the marked transaction;
d) The transaction that determines the current value of the driver is
marked;
e) All unmarked transactions (all of which are old transactions) are
deleted from the projected output waveform.
I don't understand c).
Let's say, I've a signal "sig_a" which at the current time (t=2ns)
is assigned the value "0" and I've two more assignments which are
executed at the same time (t=2ns):
sig_a <= '1' after 10ns;
sig_a <= '1' after 11ns;
For the first assignment I would add a transaction at time
t=12ns (1 for sig_a). For the next transaction, I would add
another 1 at time t=13ns. Due to rule c), transaction at time
t=12ns would be kept.
This does not fit to my understanding of real hardware. In my opinion,
"sig_a <= '1' after 11ns" means that the hardware needs 11ns to
"charge" before it can change its state. So, any signal changes in between
which where previously executed (like sig_a <= '0' after 5ns are
omitted. However, in my example this would mean that "charging" which
should take 11ns is shorten to 10ns due to the first assignment
to sig_a since (due to c)) this transaction has the same value
and will be kept.
Could you help me understanding the simulation.
Thank you.
Best regards,
Tim