作者:可爱沉默999 | 来源:互联网 | 2023-02-05 11:21
我是verilog的新手,我有一个问题
假设模块中有2个始终块,该块将首先执行,或者它们将在同一时间执行.如果是这样,r1的值是多少.例如
module example(clk);
input clk;
reg r1;
always @ (posedge clk)
r1 <= 1'b0;
always @ (posedge clk)
r1 <= 1'b1;
endmodule
TIA
1> dave_59..:
这两个always
块创建了两个并行执行的进程.这两个进程都将阻止等待上升clk
事件.当该事件发生时,两个进程都将安排恢复.但是,Verilog/SystemVerilog模拟器使用一个事件队列来序列化应该同时发生的所有事情.您无法预测首先安排哪个流程; 这是模拟竞赛条件.在实践中,模拟器的一个特定版本将始终在另一个之前选择一个过程,因此您将始终看到相同的结果.但是,如果切换到其他工具,甚至更改工具中的某些选项以进行调试或优化,结果可能会发生变化.