что будет выводом следующего кода verilog ..? - PullRequest
0 голосов
/ 15 мая 2019
module abc(input clk, output a);
reg a;
always @(posedge clk)
begin
a=0;
$monitor("%d",a);
end

always @(posedge clk)
begin
a=1;
$monitor("%d",a);
end

Каким будет первый выход после первого импульса CLK? если мы не хотим никакого значения по умолчанию для reg (нам нужно значение для a) ...?

1 Ответ

2 голосов
/ 16 мая 2019

Это состояние гонки.Verilog не гарантирует порядок выполнения между процессами, синхронизированными с одним и тем же событием.Один инструмент моделирования может выбрать первый блок.другой инструмент может выбрать второй блок.Инструменты синтеза не допускают многократных присвоений одной и той же переменной из разных блоков.

...