1

测试台中的变量大多被实例化为bit而不是reg. 但bit只是 2 个状态变量(0 和 1),reg是 4 个状态变量(0,1,x 和 z)。为什么人们将bit其用作测试台变量?我接手了一个旧项目,所有的测试台变量都是bit. 所以当检查器执行检查时

if (data_rtl === data_expected) // reg[63:0] data_rtl, bit[63:0] data_expected

我无法在 data_expected 端执行 X 检查。当然它很常见bit,为什么人们这样做?systemverilog中的bitover有什么好处?reg

4

3 回答 3

3

通常,您的测试台的激励生成和预测组件中不需要 4 状态类型。两态模拟的好处是内存开销更少,这有效地使数据缓存的大小翻了一番。您基本上只需要在适当的时间在测试台和 DUT 之间的接口中检查 X。X 在设计中的生成和传播本身就是一个广泛的话题。当涉及到您设计的不同领域中的 X 时,大多数模拟要么过于乐观要么过于悲观,因此非常不准确。有时,在这些情况下最好使用静态分析(时序或形式)工具。

于 2016-04-25T21:37:39.307 回答
1

在某种程度上,你回答了你自己的问题。bit 是一个两态变量。对于许多验证测试平台应用程序,x 和 z 值不是必需的。额外两种状态的计算/内存开销,以及对变量设置为 z 或 x 的可能性的额外关注,都不需要,因此不使用。

于 2016-04-25T12:50:20.227 回答
0

bit & reg 有一些关键的区别

  • reg是 4 状态变量(1 或 0 或 X 或 Z,默认为 X),但bit为 2 状态变量(0 或 1,默认为 0)

现在这对我们有什么影响。

  • 4 状态变量,对于硬件来说是必需的,就像在硬件中一样,取决于电线的电压电平和驱动器,电线的逻辑值可以是 1 或 0 或 X 或 Z。所以从硬件的角度来看,reg应该使用。

  • 但是从刺激的角度来看,我们通常不需要 X 或 Z 状态,因为您永远不会驱动未知 (X) 或没有任何驱动器 (Z) 的电线。所以在这种情况下,可以使用位,因为bit它只包含 2 个状态。

希望你能有所作为

于 2016-05-01T15:28:14.603 回答