Verilog 如何分配Don';t关心测试台真值表中的值?

Verilog 如何分配Don';t关心测试台真值表中的值?,verilog,test-bench,Verilog,Test Bench,我想为优先级编码器4-2创建一个测试台。我试图在应该的时候将不关心值分配到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(

我想为优先级编码器4-2创建一个测试台。我试图在应该的时候将不关心值分配到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
视为变量名,如错误消息所示