I've always been told that a signal updates its values after a wait statement, or after a rising edge if we have for example
if rising_edge(clk) then
but in this testbench, after the first wait statement and giving values Rst, Load, and Data, which are signals, it updates those signals instantly, if I use ModelSim, it doesn't wait after the second wait statement to update those signals.
readVec: PROCESS
VARIABLE VectorLine: LINE;
VARIABLE VectorValid: BOOLEAN;
VARIABLE vRst: STD_LOGIC;
VARIABLE vLoad: STD_LOGIC;
VARIABLE vData: STD_LOGIC_VECTOR(7 DOWNTO 0);
VARIABLE vQ: STD_LOGIC_VECTOR(7 DOWNTO 0);
VARIABLE space: CHARACTER;
BEGIN
WHILE NOT ENDFILE (vectorFile) LOOP
readline(vectorFile, VectorLine); -- put file data into line
read(VectorLine, vRst, good => VectorValid);
NEXT WHEN NOT VectorValid;
read(VectorLine, space);
read(VectorLine, vLoad);
read(VectorLine, space);
read(VectorLine, vData);
read(VectorLine, space);
read(VectorLine, vQ);
WAIT FOR ClkPeriod/4;
Rst <= vRst;
Load <= vLoad;
Data <= vData;
Qexpected <= vQ;
WAIT FOR (ClkPeriod/4) * 3;
END LOOP;
ASSERT FALSE
REPORT "Simulation complete"
SEVERITY NOTE;
WAIT;
END PROCESS;