Описание оборудования Verilog состоит из процедурных блоков. Эти блоки выполняются псевдопараллельно друг относительно друга. Код внутри каждого блока моделируется последовательно в одном временном интервале.
такими процедурными блоками являются все блоки «всегда», начальный блок и последний блок. Вы тестируете начальный блок. Он особенный и выполняется, как следует из названия, в самом начале симуляции. Все операторы последовательно и в момент времени «0».
для блоков always время будет отличным от нуля, но все равно одинаковым для всех инструкций в одном блоке.
Если вы хотите увидеть разницу во времени в начальном блоке, вам нужно добавить задержки, т.е.
initial
begin
r = 0;
$display($time, " ", r);
#1
r = 1;
$display($time, " ", r);
#1
r = r + 2;
$display($time, " ", r);
$finish;
end
в приведенном выше примере я добавил две задержки на 1 цикл. В вашем случае вы должны увидеть, как время увеличивается. Тем не менее, все инструкции выполняются последовательно, задержка просто останавливает выполнение на один цикл.
Чтобы увидеть параллельное поведение, вам понадобится реальное описание оборудования с всегда блоками, и вам нужно смоделировать его для нескольких циклов. Затем вы можете заметить, что порядок печати между разными блоками always будет различаться в зависимости от состояния моделирования. Однако даже в этом случае симулятор завершит симуляцию для всех блоков за время «a», прежде чем он начнет симуляцию для других блоков за время «b».
person
Serge
schedule
20.06.2017