执行过程:
- for 语句
- i=0, 产生线程1 $display(i time)
- i++ , i = 1 , 产生线程2 $display();
- i++, i = 2, 产生线程3 $display();
- i++, i = 3 ,跳出循环
- join_none
- #0
- 执行三个$display()
#0 时延阻塞了当前线程,并且把它重新调度到当前时间片后启动。
fork...join_none的执行时间
- fork-join_none提起线程本身不会阻塞时间片前进;
- fork-join_none不会立即执行,而是暂时被挂起,在当前时间片的inactive执行,再被执行;
monitor/display/strobe三者的区别:
$monitor用于持续监测指定变量,只要这些变量发生了变化,就会立即显示对应的输出语句。
$strobe命令会在当前时间部结束时完成;而$display是只要仿真器看到就会立即执行。
#systemverilog# 之 event region 和 timeslot 仿真调度(二)_那么菜的博客-CSDN博客