即使分配了一个值,Verilog 模块输出也是 X

Verilog module output is X even when assigned a value

我有一个简单的 8 位奇偶校验模块来检查结果和设置标志。

此模块的输出始终为 X,我终究无法弄清楚原因。这是代码:

module parity8 (p, low8);

   output p;
   input [7:0] low8;

   wire [3:0] pchka;
   wire [1:0] pchkb;
   wire parity_bar;

   xor2$ xora0 (pchka[0], low8[0], low8[1]),
         xora1 (pchka[1], low8[2], low8[3]),
         xora2 (pchka[2], low8[4], low8[5]),
         xora3 (pchka[3], low8[6], low8[7]),

         xorb0 (pchkb[0], pchka[0], pchka[1]),
         xorb1 (pchkb[1], pchka[2], pchka[3]), 

         xorp (parity_bar, pchkb[0], pchkb[1]);

   inv1$ pinv (p, parity_bar);

endmodule

parity_bar 总是有正确的值,我尝试制作另一个线 ptest,它替换了最后一行的 p。 Ptest 有正确的值,所以我尝试添加:

assign p = ptest;

然而模块的输出仍然是X。甚至尝试分配p = 1'b1;它没有改变。希望这不是显而易见的事情,感谢您的帮助。

正如 Greg 所指出的,问题在于 p 在一个位向量中驱动了一个位,该位向量被赋值为全 0。我已经驳回了这一点,因为我有几个模块在同一个位向量上驱动位。我想只有当分配值和模块产生的值不相同时才会出现问题。