Verilog 触发器启用方程上的X值

Verilog 触发器启用方程上的X值,verilog,Verilog,如果在一次失败的启用方程中有一个x,会发生什么 以下面这样编码的触发器为例 always @(posedge clock) begin if(en) q <= d; end 所以,如果en是x,那么考虑到带有x的if语句的计算结果为0/false,这是否意味着reg q将保持其以前的状态而不锁定新状态,或者在sims中也是x? 这是不是因为使用了不同的模拟器而有所不同 谢谢 X-es将从任何FF输入传播到所有输出。事实上,它们往往会像野火一样在整个设计中传播。如果一个输入是X,那么几

如果在一次失败的启用方程中有一个x,会发生什么

以下面这样编码的触发器为例

always @(posedge clock) begin
  if(en) q <= d;
end
所以,如果en是x,那么考虑到带有x的if语句的计算结果为0/false,这是否意味着reg q将保持其以前的状态而不锁定新状态,或者在sims中也是x? 这是不是因为使用了不同的模拟器而有所不同


谢谢

X-es将从任何FF输入传播到所有输出。事实上,它们往往会像野火一样在整个设计中传播。如果一个输入是X,那么几乎所有的东西都会很快产生X。 有一些例外情况,如:

一个输入为高的或门:即使另一个输入为“X”,输出也为高。 一个输入为低的与门:即使另一个输入为“X”,输出也为低。 但是输入为0和X的双输入或门将产生X


X-es的传播有很好的定义,您应该在所有模拟器中发现相同的行为。

X-es将从任何FF输入传播到所有输出。事实上,它们往往会像野火一样在整个设计中传播。如果一个输入是X,那么几乎所有的东西都会很快产生X。 有一些例外情况,如:

一个输入为高的或门:即使另一个输入为“X”,输出也为高。 一个输入为低的与门:即使另一个输入为“X”,输出也为低。 但是输入为0和X的双输入或门将产生X

X-es的传播有很好的定义,您应该在所有模拟器中发现相同的行为。

因为X指的是未定义的状态,因此在这种情况下不可能进行输出预测。因此,我们将从触发器中得到一个输出,作为X本身

如上所述,在AND和OR门的情况下,输出取决于该门的任何其他输入端子上是否存在1和0逻辑输入。

由于X表示未定义的状态,因此在这种情况下不可能进行输出预测。因此,我们将从触发器中得到一个输出,作为X本身


如上所述,在AND和OR门的情况下,输出取决于该门的任何其他输入端子上是否存在1和0逻辑输入。

如果“if”语句中的任何条件都被视为2状态。Verilog标准从“x”或“z”转换为2状态将产生“0”。因此,如果'en'是'x'或'z',则if-en将为false,这意味着它将保持不变

因此,回答您的问题,reg q将保留该值


如果将一个4状态变量分配给一个2状态变量,即“位”,则在系统verilog中也是如此

如果语句中的任何条件都被视为2状态。Verilog标准从“x”或“z”转换为2状态将产生“0”。因此,如果'en'是'x'或'z',则if-en将为false,这意味着它将保持不变

因此,回答您的问题,reg q将保留该值


如果将一个4状态变量分配给一个2状态变量,即“位”,则在系统verilog中也是如此

为了完整性,SystemVerilog的最新标准IEEE1800-2012规定,如果条件谓词中的值为“bx”,则该语句的计算结果应为false,即与en为“b0”时的值相同,参见第12.4节。这里的其他答案很好地理解了该值在RTL设计的大背景下的含义。

为了完整性,SystemVerilog的最新标准IEEE1800-2012规定,如果条件谓词中的值为“bx”,则该语句的计算结果应为false,即与en为“b0”时的值相同,参见第12.4节。这里的其他答案很好地理解了该值在RTL设计的大背景下的含义。

这可能是OP的有趣读物,这可能是OPE的有趣读物!我预料到了这一点,并在VCS模拟中得到了证明。我想得到更多的意见,但看起来我对这两个案件和@Serge都有2-2分,因为这实际上是危险的x乐观行为,你建议如何抓住这类案件?使用嵌入式断言检查此启用引脚上的x值?不幸的是,如果使用标准verilog 4状态模拟,则需要以特定方式编写“如果”语句,以首先检查非x条件。您还可以编写特定的断言。有一个开源的VRQ解决方案,它重写现有的rtl代码来处理这种情况。在商业领域,VCS也有“xprop”模拟模式来处理它。不知道其他球员的情况。谢谢Serge!我预料到了这一点,并在VCS模拟中得到了证明。我想得到更多的意见,但看起来我对这两个案件和@Serge都有2-2分,因为这实际上是危险的x乐观行为,你建议如何抓住这类案件?使用嵌入式断言检查此启用引脚上的x值?不幸的是,如果使用标准verilog 4状态模拟,则需要编写
ur“if”语句以特定方式首先检查非x条件。您还可以编写特定的断言。有一个开源的VRQ解决方案,它重写现有的rtl代码来处理这种情况。在商业领域,VCS也有“xprop”模拟模式来处理它。不确定其他玩家。当我模拟时,它实际上没有在FF输出上显示X。它只是保持状态,当我模拟时,它实际上没有在FF输出上显示X。它只是保持它的状态