问一个x传递的问题
时间:12-12
整理:3721RD
点击:
verilog里面类似于
if(a)
b = 1
else
b = 2
这样的代码
如果a为x的话
VCS仿真器会认为if不成立
直接让b = 2
而不是让b = x,从而把这个x传递下去
请问有什么方法可以让这个x传递下去呢?
if(a)
b = 1
else
b = 2
这样的代码
如果a为x的话
VCS仿真器会认为if不成立
直接让b = 2
而不是让b = x,从而把这个x传递下去
请问有什么方法可以让这个x传递下去呢?
把else的条件写全,然后再加个分支
if(a)
else if(~a)
else
lint类工具会报冗余,不过你传递x本来就是仿仿
VCS Xprop
http://www.synopsys.com/CN/Tools/Verification/FunctionalVerification/Pages
/vcs-xprop-ds.aspx
b = a ? 1 : 2
正解;
另外有个开源tool 可以把else分支针对x进行扩展,也叫xprop
http://vrq.sourceforge.net
assign b = a ? 1 : 2;
用casex可否?
casex(a)
1: b=1;
0: b=2;
default: b=x;
endcase
不知道b多少位,2位好了,多位类似。
t = |a;
b = { ~t, t};
谢谢!
看来就是为了解决这个问题的
这是VCS自带的功能吗?
你这个工具和VCS XProp有什么关系么?
没关系
一个要钱一个不要钱
一个add-on,要钱的。cadence,mentor家都有类似的解决方案