如何在测试台的真实 table 中分配 Don't Care 值?
How to I assign Don't Care values in truth table of test bench?
我想为优先编码器 4-2 创建一个测试台。我试图在应该时将 Don't Care 值分配给 reg 变量,但发生错误:
(test.v(14): (vlog-2730) 未定义变量:'x'.)。
我的测试台代码是:
module enc_4_to_2_behavioral_test;
reg InD3,InD2,InD1,InD0;
wire OutY1,OutY0,OutZeros;
enc_4_to_2_behavioral CUT1(.D3(InD3),.D2(InD2),.D1(InD1),.D0(InD0),.Y1(OutY1),.Y0(OutY0),.Zeros(OutZeros));
initial
begin
InD3=0; InD2=0; InD1=0; InD0=0;
#10 InD3=1; InD2=0; InD1=0; InD0=0;
#10 InD3=x; InD2=1; InD1=0; InD0=0;
#10 InD3=x; InD2=x; InD1=1; InD0=0;
#10 InD3=x; InD2=x; InD1=x; InD0=1;
#10 $stop;
end
initial $monitor($time, ,"InD3=%b, InD2=%b, InD1=%b, InD0=%b, OutY1=%b, OutY0=%b, OutZeros=%b", InD3,InD2,InD1,InD0,OutY1,OutY0,OutZeros);
endmodule
我该如何解决这个错误?
您需要用 x
指定基数。例如:InD0 = 1'bx;
在代码中使用 0 和 1 指定基数是可选的,但为了保持一致性,我在所有地方都进行了更改:
initial begin
InD3=1'b0; InD2=1'b0; InD1=1'b0; InD0=1'b0;
#10 InD3=1'b1; InD2=1'b0; InD1=1'b0; InD0=1'b0;
#10 InD3=1'bx; InD2=1'b1; InD1=1'b0; InD0=1'b0;
#10 InD3=1'bx; InD2=1'bx; InD1=1'b1; InD0=1'b0;
#10 InD3=1'bx; InD2=1'bx; InD1=1'bx; InD0=1'b1;
#10 $stop;
end
没有基本说明符,Verilog 将裸 x
视为变量名,如错误消息所示。
我想为优先编码器 4-2 创建一个测试台。我试图在应该时将 Don't Care 值分配给 reg 变量,但发生错误:
(test.v(14): (vlog-2730) 未定义变量:'x'.)。
我的测试台代码是:
module enc_4_to_2_behavioral_test;
reg InD3,InD2,InD1,InD0;
wire OutY1,OutY0,OutZeros;
enc_4_to_2_behavioral CUT1(.D3(InD3),.D2(InD2),.D1(InD1),.D0(InD0),.Y1(OutY1),.Y0(OutY0),.Zeros(OutZeros));
initial
begin
InD3=0; InD2=0; InD1=0; InD0=0;
#10 InD3=1; InD2=0; InD1=0; InD0=0;
#10 InD3=x; InD2=1; InD1=0; InD0=0;
#10 InD3=x; InD2=x; InD1=1; InD0=0;
#10 InD3=x; InD2=x; InD1=x; InD0=1;
#10 $stop;
end
initial $monitor($time, ,"InD3=%b, InD2=%b, InD1=%b, InD0=%b, OutY1=%b, OutY0=%b, OutZeros=%b", InD3,InD2,InD1,InD0,OutY1,OutY0,OutZeros);
endmodule
我该如何解决这个错误?
您需要用 x
指定基数。例如:InD0 = 1'bx;
在代码中使用 0 和 1 指定基数是可选的,但为了保持一致性,我在所有地方都进行了更改:
initial begin
InD3=1'b0; InD2=1'b0; InD1=1'b0; InD0=1'b0;
#10 InD3=1'b1; InD2=1'b0; InD1=1'b0; InD0=1'b0;
#10 InD3=1'bx; InD2=1'b1; InD1=1'b0; InD0=1'b0;
#10 InD3=1'bx; InD2=1'bx; InD1=1'b1; InD0=1'b0;
#10 InD3=1'bx; InD2=1'bx; InD1=1'bx; InD0=1'b1;
#10 $stop;
end
没有基本说明符,Verilog 将裸 x
视为变量名,如错误消息所示。