无法在Modelsim中编译Micron的DDR3内存模型

Unable to compile Micron's DDR3 memory model in Modelsim

我从 Micron 的网站 (link) 下载了我将使用 Modelsim (2019.2) 在模拟中测试的 DDR3 内存模型 (link)。

我按照 README 文件中的说明进行编译,但 运行 出现语法错误!我认为 Micron 不会制作错误代码 public 并提供给开发人员。

Modelsim 命令:

vlog +define+sg25 C:/Micro_projects/FPGA/hdl/micron/ddr3/ddr3.v

错误

# ** Error: (vlog-13069) C:/Micro_projects/FPGA/hdl/micron/ddr3/ddr3.v(421): near ";": syntax error, unexpected ';', expecting '('.
# ** Error: C:/Micro_projects/FPGA/hdl/micron/ddr3/ddr3.v(424): Illegal declaration after the statement near line '421'.  Declarations must precede statements.  Look for stray semicolons.
# ** Error: (vlog-13069) C:/Micro_projects/FPGA/hdl/micron/ddr3/ddr3.v(433): near "integer": syntax error, unexpected integer, expecting IDENTIFIER or genvar.
# ** Error: C:/Micro_projects/FPGA/hdl/micron/ddr3/ddr3.v(433): (vlog-13205) Syntax error found in the scope following 'i'. Is there a missing '::'?
initial
begin : file_io_open
    reg [BA_BITS - 1 : 0] bank;
    reg [ROW_BITS - 1 : 0] row;
    reg [COL_BITS - 1 : 0] col;
    reg [BA_BITS + ROW_BITS + COL_BITS - 1 : 0] addr;
    reg [BL_MAX * DQ_BITS - 1 : 0] data;
    string _char;                                          //LINE 421
    integer in, fio_status;

    if (!$value$plusargs("model_data+%s", tmp_model_dir))
    begin
        tmp_model_dir = "/tmp";
        $display(
            "%m: at time %t WARNING: no +model_data option specified, using /tmp.",
            $time
        );
    end

    for (integer i = 0; i < `BANKS; i = i + 1)
        memfd[i] = open_bank_file(i);

我希望有人可以建议我如何进行。我已经联系了美光,但还没有收到他们的消息(已经几天了)。我被卡住了,欢迎任何评论!

谢谢, 苏拉比

错误来自包含 string 的行,这是一个 SystemVerilog 关键字。

您需要使用 modelsim -sv 选项启用 SystemVerilog 语法。