问题 运行 Verilog 测试

Problems running a test in Verilog

我试图 运行 Verilog 上的测试平台,但我一直 运行 遇到一些问题。我在最后添加了错误供大家查看。

这是模块:

module combinational_logic(
    A, 
    B,  
    C,
    D,
    AnotCnotD,
    BCDnot,
    ACnotDnot,
    F,
    );

    input A;
    input B;
    input C;
    input D;
    


    output F;
    output AnotCnotD;
    output BCDnot;
    output ACnotDnot;
    

     
    assign AnotCnotD = ~A&~C&D;
    assign BCDnot = B&C&~D;
    assign ACnotDnot = A&~C&~D;
    assign F = AnotCnotD|CDnot|ACnotDnot;
     
    
    
    
endmodule

这是测试:

`include "project4.v"
module tb_combLogic;


    
    reg A;
    reg B;
    reg C;
    reg D;
    reg F;

    
    wire AnotCnotD;
    wire BCDnot;
    wire ACnotDnot;

    
    combinational_logic uut (
        .A(A), 
        .B(B), 
        .C(C),
        .D(D),
        .AnotCnotD(AnotCnotD),
        .BCDnot(BCDnot),
        .ACnotDnot(ACnotDnot)
    );

    initial begin
        $display("Start of Test.");
        $dumpfile("comb_logic.vcd");
        $dumpvars(0, project4_test);
        $display("End of Test.");
    end
      
endmodule

错误如下:

./project4.v:29: error: Unable to bind wire/reg/memory `CDnot' in `tb_combLogic.uut'
./project4.v:29: error: Unable to elaborate r-value: ((AnotCnotD)|(CDnot))|(ACnotDnot)
project4_test.v:31: error: Unable to bind wire/reg/memory `project4_test' in `tb_combLogic'
3 error(s) during elaboration.

前 2 条消息是让您知道您没有名为 CDnot 的信号。您的意思可能是 BCDnot。变化:

assign F = AnotCnotD|CDnot|ACnotDnot;

至:

assign F = AnotCnotD|BCDnot|ACnotDnot;

第三条消息是让您知道您没有名为 project4_test 的信号或模块实例。解决此问题的一种方法是更改​​:

    $dumpvars(0, project4_test);

至:

    $dumpvars;

这会将两个模块中的所有信号转储到 VCD 文件中。对于大型设计,VCD 文件可能很大。但是,使用此代码您无需担心。