微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > 微电子学习交流 > 问一个x传递的问题

问一个x传递的问题

时间:12-12 整理:3721RD 点击:
verilog里面类似于
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家都有类似的解决方案

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top