在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2036|回复: 0

[求助] 关于system verilog中的local variable的一个问题

[复制链接]
发表于 2018-11-26 21:58:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
帮忙看一个local variable相关问题sequence local_var;    byte local_data = 8'h0f;            ((b, local_data = 8'h0d, $display("%0dns",$stime,,,"local_data_first=%0h",local_data)) or     (((##0 (local_data == 8'h0f)),  $display("%0dns",$stime,,,"local_data_second=%0h",local_data))))     ##5 (local_data == 8'h0f);                        endsequence gcheck: assert property (@(posedge clk) $rose(en) |-> ##1 local_var);

代码不完整,主要说明想问的问题
仿真过程中我改变了OR里面第二个分支最前面的delay,上述code中为##0,我分别改成##0,##1,##2得到如下log。
1: ##0 or no delay(default as the code show)
# 250ns  local_data_second=f
# 250ns  local_data_first=d
And the assertion passed.
2: ##1
# 250ns  local_data_first=d
# ** Error: Assertion error.
#    Time: 350 ns Started: 230 ns
The assertion failed.
3. ##2
# 250ns  local_data_first=d
# 290ns  local_data_second=f
The assertion passed.

在##1的仿真log中可以看到OR的右边分支是fail的,因为没有display数据,所以我改变了写法希望找出local_data的值在##1下到底是多少
((b, local_data = 8'h0d, $display("%0dns",$stime,,,"local_data_first=%0h",local_data)) or (((##1 !(local_data == 8'h0f)), $display("%0dns",$stime,,,"local_data_second=%0h",local_data)))) ##5 (local_data == 8'h0f);        

The log show:
# 250ns  local_data_first=d
# 270ns  local_data_second=0
# ** Error: Assertion error.
#    Time: 370 ns Started: 230 ns

从我的理解上,进入OR sequence判断后,会在两个并行的thread中各自产生local_data。在第二个分支里,因为没有对local变量再次赋值,所以他的值应该始终是初始赋值的8'h0f,所以为什么在##1的条件下会显示值为8'h0,而在##0和##2会显示是8'h0f。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-26 16:36 , Processed in 0.013948 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表