在SystemVerilog中模拟数据的问题

问题描述 投票:0回答:1

我正在设计 ALU,它有 4 位输入 2 位操作代码,4 位结果输出用于加减运算。和 4 位 ALUflag 输出。

我认为我的测试平台可能是错误的,因为我没有找到任何有用的 ALU 测试平台,尤其是在 systemverilog 中。这是我的 ALU 和测试台代码。我还得到了名为 MUX2、MUX4、Fulladder 的文件,我已经知道它们工作正常。

我的ALU代码。

module alu( input  logic [3:0] A, B,
input  logic [1:0]  ALU_control,
output logic [3:0] Result,
output logic [3:0]  ALU_flag );

    wire [3:0] mux2_output;
    MUX2 k_0(B,~B,ALU_control[0],mux2_output) ;
    
    wire [3:0] sum;
    wire [2:0] c;
    fulladder i_0 (A[0],mux2_output[0],ALU_control[0],sum[0],c[0]);
    fulladder i_1 (A[1],mux2_output[1],c[0],sum[1],c[1]);
    fulladder i_2 (A[2],mux2_output[2],c[1],sum[2],c[2]);
    fulladder i_3 (A[3],mux2_output[3],c[2],sum[3],Cout);
    
    MUX4 j_0(sum,sum,A&B,A|B,ALU_control,Result);
    
    assign ALU_flag[3] = ~Result;
    assign ALU_flag[2] = Result;
    assign ALU_flag[1] = Cout & ~ALU_control[1];
    assign ALU_flag[0] = (A ~^ B ~^ ALU_control[0]) & ~ALU_control[1];


endmodule

和我的测试台代码

module alu_test();
logic [3:0] A, B, Result, ALU_flag;
logic [1:0] ALU_control;

alu dut(
   .A(A),
   .B(B),
   .Result(Result),
   .ALU_Flag(ALU_flag)
   );

    initial begin
       A = 1100; B = 0011; ALU_control = 00; #20;
       $display(Res,Flag);
    end
endmodule
verilog system-verilog xilinx vivado test-bench
1个回答
0
投票

是的,你的测试平台有问题。如果你的模拟器没有给你编译错误,那么试试其他模拟器,比如 EDA Playground 上的那些。

当我使用 Cadence 模拟器时,例如,我得到这些错误:

       $display(Res,Flag);
                  |
xmelab: *E,CUVUNF (./tb.sv,14|18): Hierarchical name component lookup failed for 'Res' at 'alu_test'.
       $display(Res,Flag);
                       |
xmelab: *E,CUVUNF (./tb.sv,14|23): Hierarchical name component lookup failed for 'Flag' at 'alu_test'.

你声明了一个名为

Result
的信号,但是你没有声明一个名为
Res
的信号。

更改时这些错误消失:

   $display(Res,Flag);

至:

   $display(Result,ALU_flag);

另一个可能的问题是在这一行:

   A = 1100; B = 0011; ALU_control = 00; #20;

所有这些数字都是十进制格式。您可能希望它们采用二进制格式,这需要您使用

'b
基本前缀:

   A = 'b1100; B = 'b0011; ALU_control = 'b00; #20;
© www.soinside.com 2019 - 2024. All rights reserved.