systemVerilog中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态。
具体怎么使用,一定要考虑场景。乱用数据类型,容易在仿真中引入莫名其妙的问题,定位起来怪麻烦。