模拟寄存器文件时Modelsim中的Verilog编译器错误

Verilog compiler errors in Modelsim when simulating register file

我正在尝试编写一些 verilog 代码来创建一个包含 32 个 32 位寄存器的寄存器文件。

Register File Input/Output

下面是我的代码:

module regfile (clk, we, ra1, ra2, wa, wd, rd1, rd2);

    
    input  logic        we, 
    input  logic        clk, 
    input  logic [4:0]  ra1, ra2, wa, 
    input  logic [31:0] wd, 
    output logic [31:0] rd1, rd2;

    logic [31:0]     rf[31:0];

    always @ (posedge clock) 
        begin
            rd1 = rf[ra1];
            rd2 = rf[ra2];
        end  
  
    always_comb
        begin
            if(we == 1)
                rf[wa] = wd;
                
            rf[0] = 0;
        end

endmodule

上面的代码是我根据一些教程文件建模的,所以我很困惑为什么Modelsim会报编译错误。

语法有明显错误吗?

当运行CMD中命令:vsim -do regfile.do

我怎样才能让它输出详细的警告,这样我才能真正看到导致问题的原因?

您使用的是 2001 年之前的语法和 post-2001 语法的奇怪组合。我为您的端口推荐 post-2001 语法:

module regfile (
    input  logic        we, 
    input  logic        clk, 
    input  logic [4:0]  ra1, ra2, wa, 
    input  logic [31:0] wd, 
    output logic [31:0] rd1, rd2
    );