微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC验证交流 > systemVerilog中logic与bit的区别问题

systemVerilog中logic与bit的区别问题

时间:10-02 整理:3721RD 点击:
突然之间看了下手册,看到下面的一个想不通的问题。在顶层模块中要使用logic,而在其中一个模块中使用了bit数据类型。






我想请问一下logic和bit的区别在哪里。谢谢。

IEEE Standard for SystemVerilog—Unified Hardware Design, Specification, and Verification Language
6.11.2 2-state (two-value) and 4-state (four-value) data types
Types that can have unknown and high-impedance values are called 4-state types. These are logic, reg, integer, and time. The other types do not have unknown values and are called 2-state types, for example, bit and int.

logic是对DUT中的wire, reg最真实的模拟,都是四值,无符号。
而且该类型既可以传给wire又可以reg。 用起来很方便。 在传参数给DUT(数字电路)时尽量使用它。
bit是偏软件的概念。 二值变量类型。 可在远离硬件的应用层使用。

thank you

那用bit的可以用logic代替,而logic的确不能用bit替代。这个理解对吗?

logic有0 1 x z 四种状态
bit 只有0 和 1 两种状态

可以这么理解。 不过为什么在logic基础上再引入二值逻辑,主要原因还是要把验证的硬件layer和软件layer分开。在软件世界里只要考虑二值逻辑,用bit的话效率更高。

bit变量换成logic类型,变量初始值就变了,小心出问题

会变成什么?x?

没什么太大的区别,我一般仿真中能编译过就好了


做仿真原来能编译过就好了

logic是4态的,bit是2态的
顶层用logic定义端口是因为logic在有多驱动的情况下会报错,这样可以检查出代码中的多重赋值。其他的一般都能用bit
个人理解

也遇到了这种情况,学习了

1.bit是二值变量,logic是四态变量(0,1,X,Z),四态变量比二值变量在内存中多占一倍的存储空间。
2.连接DUT端口尤其输出端口的变量用logic,因为如果被测设计试图产生X或X,二值变量是没法捕获到。

logic是4态;bit是2态。
具体怎么使用,一定要考虑场景。乱用数据类型,容易在仿真中引入莫名其妙的问题,定位起来怪麻烦。

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

网站地图

Top