[an error occurred while processing this directive]
|
Пример из VHDL :
--------------------------------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.STD_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY AT91R IS
PORT(
NRD: OUT std_logic :='0'
);
END AT91R;
ARCHITECTURE EBI OF AT91R IS
BEGIN
modeler : PROCESS
BEGIN
NRD <= '1' AFTER 100 ns;
WAIT FOR 30 ns;
NRD <= 'Z' AFTER 30 ns;
WAIT;
END PROCESS modeler;
END EBI;
--------------------------------------------------------------------------------------------------------
Симулируется (в ModelSim) как и задумано : через 60 нан от начала симуляции выход переходит в Z-состояние, и далее не изменяется. Т.е. последующая транзакция отменяет предыдущую.
Теперь как я пытался сделать примерно то же самое на Verilog'е :
--------------------------------------------------------------------------------------------------------
`timescale 1ns/1ns;
module tst;
reg a;
wire #10 b=a;
initial
begin: stim
a <= #10 1;
a <= #15 0;
a <= #20 1;
a <= #30 1'bz;
end
initial
begin: st2
a <= #25 0;
end
endmodule
--------------------------------------------------------------------------------------------------------
Если верно утверждение относительно отмены транзакций, то ожидается, что через 35 нан от начала симуляции выход перейдет в "0" и больше изменяться не будет.
Однако же получается, что через 35 нан выход переходит в "0", а еще через 5 нан - в "Z" (то есть a <= #30 1'bz; не отменяется).
А вот такой прием подсмотрен в верилоговской модели IDT'шной FIFO :
--------------------------------------------------------------------------------------------------------
//`timescale 1ns/1ns;
module tst;
reg a;
reg c;
wire b;
assign b = c? a: 0;
initial
begin: stim
c=1;
a <= #10 1;
a <= #15 0;
a <= #20 1;
a <= #50 1'bz;
// c = #10 0;
// a <= #25 0;
end
initial
begin: st2
// disable stim;
c = #35 0;
end
endmodule
--------------------------------------------------------------------------------------------------------
То есть вводится еще одна "переменная" - с. На мой взгляд такой подход несколько кривоват.
Что скажут опытные люди ?
E-mail: info@telesys.ru