System verilog 为什么指定的导线是x
我正在实现一个MIPS指令解码器,但在wave中,我看到所有赋值逻辑变量,如jump、immediate_I、regWrite等都是xxx,尽管我已按如下方式初始化它们。即使我假设,例如,在跳跃中,J是X,它不应该还是0而不是X吗System verilog 为什么指定的导线是x,system-verilog,modelsim,circuit,System Verilog,Modelsim,Circuit,我正在实现一个MIPS指令解码器,但在wave中,我看到所有赋值逻辑变量,如jump、immediate_I、regWrite等都是xxx,尽管我已按如下方式初始化它们。即使我假设,例如,在跳跃中,J是X,它不应该还是0而不是X吗 assign immediate_i = (opcode == (ADDI || ANDI || SLTI || XORI || LW || SW )) ? 1'b1 : 1'b0; assign memRead = LW ? 1'b1:1'
assign immediate_i = (opcode == (ADDI || ANDI || SLTI || XORI || LW || SW )) ? 1'b1 : 1'b0;
assign memRead = LW ? 1'b1:1'b0;
assign memtoReg = LW ? 1'b1:1'b0 ;
assign memWrite = SW ? 1'b1:1'b0;
assign jump = J ? 1'b1:1'b0;
assign jumpReg = JR ? 1'b1:1'b0;
assign bgtz = BGTZ ? 1'b1:1'b0;
jump
是x,因为J
是x。逻辑
信号在时间0时初始化为x。我猜您的casez
从未激活J=1
行,因此J仍然是x
module tb;
logic J;
assign jump = J ? 1'b1:1'b0;
initial begin
#5;
$display($time, " J=%b jump=%b", J, jump);
end
endmodule
输出:
5 J=x jump=x
这不是问题的答案,但我不知道为什么需要
assignmemread=LW这样的东西?1'b1:1'b0代码>分配memRead=LW有什么问题
nguthrie我做了memRead=LW,但在这种情况下发生了x初始化问题。我可以这样解释,当LW为1时,memRead=1,但当LW不是1时,memRead得到x,它不应该得到x。
5 J=x jump=x