当前位置:首页 > 公众号精选 > 芯片验证工程师
[导读]1、Verilogtask和Verilogfunction有什么区别?1.function应在一个仿真时间单元内执行,task可以包含时序控制语句。2.function无法启用task,task可以启用其他task或function。3.function应返回一个单个值,task...

1Verilog task Verilog function有什么区别?

1.function应在一个仿真时间单元内执行,task可以包含时序控制语句。

2.function无法启用tasktask可以启用其他taskfunction

3.function应返回一个单个值,task没有返回值。

 

2、给定以下Verilog 代码,“a”会打印什么值?

always @(posedge clk) begina = 0;a <= 1;$display(a);end这是一个很tricky 的问题!Verilog调度语义意味着当前仿真时间存在一个4级的仿真队列:


1: Active Events (blocking statements)2: Inactive Events (#0 delays, etc)3: Non-Blocking Assign Updates (non-blocking statements)4: Monitor Events ($display, $monitor, etc).由于“a=0”是一个 active event,因此它被安排到第一个“队列”中。“a<=1”中的RHS是一个non-blocking event,因此它被放入第三个队列中。最后,将display 语句放入第4个队列中。只有monitor event队列中的事件完成了才进入到后面的仿真时间。因此,“a=0”会发生,然后显示一个=0。如果我们在下一个仿真时间中查看a的值,它将显示1

 

3、以下两行Verilog代码有什么区别?

#5 a = b; a = #5 b;#5 a=b;等待5个时间单位后再执行“a=b;”的操作。因此,a的值是时间单位5b的值。

a = #5 b; b的值被计算并存储在内部临时寄存器中,在五个时间单位后,将此存储的值赋值给aa的值为b在时间单位为0时的值。

 

4、

c = foo ? a : b;


if (foo) c = a;else c = b;的区别是?

 

foo = 1'bx, a = 'b1, and b = 'b0时,


c = foo ? a : b;会得到“x


if (foo) c = a;else c = b;会得到“0”


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭
关闭