推荐答案
测试一下
题目
分析下面的一段程序,正确的打印结果是:
A.CBA
B. BCA
C.ABC
D.C
参考答案与知识点
参考答案
正确答案是A。该程序使用了fork...join_none结构,内部包含两个并行块:begin...end中的两个display语句分别带有延时#20和#10。fork...join_none的特点是:启动所有分支后立即执行后续语句,不等待分支完成。因此,执行流程如下:时间0时,启动两个分支(分别等待20和10时间单位后打印A和B),然后立即执行join_none之后的语句#5 $display("C"),即等待5时间单位后打印C。所以时间5时打印C,时间10时打印B,时间20时打印A。最终打印顺序为C、B、A,对应选项A.CBA。易错点:混淆join_none与join(等待所有分支完成)或join_any(等待任一分支完成),或者忽略#5延时导致误解为同时打印。注意,$display默认换行,但顺序打印结果即为CBA。
涉及知识点
- fork-join_none的并行与非阻塞特性
- SystemVerilog时间调度与延时
- 分支语句的启动与执行顺序
- $display的打印时机