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

模拟寄存器文件时Modelsim中的Verilog编译器错误,verilog,modelsim,Verilog,Modelsim,我正试图编写一些verilog代码来创建一个包含32位寄存器的寄存器文件 下面是我的代码: 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

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

下面是我的代码:

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年之前和2001年之后的语法组合。我建议您的端口使用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
    );