【问题标题】:Verilog : syntax error : unexpected SYSTEM_IDENTIFIER on using $displayVerilog:语法错误:使用 $display 时出现意外的 SYSTEM_IDENTIFIER
【发布时间】:2013-07-24 17:09:45
【问题描述】:

我的目标是编写一个测试夹具,它从输入文件中读取十六进制值并将其显示到屏幕上。我正在使用以下代码,但在“$display ("%d:%h",j,srcPacketIn[j]);" 行出现语法错误。确切的错误是:

** 错误:C:\altera\13.0\test.v(32): near "$display": 语法错误,意外的 SYSTEM_IDENTIFIER

有人可以帮帮我吗?

module test_fixtures;
parameter TestCycles = 12;
parameter ClockPeriod = 10;


reg [7:0] srcPacketIn [0:(5*TestCycles)-1];

reg clock, reset;
genvar j;


initial
    begin
        $readmemh("input.h",srcPacketIn);
    end
initial
    begin
        reset = 0;
        clock = 1;
    end

always #ClockPeriod clock = ~clock;



        for (j=0; j < 59; j=j+1)
          begin
          $display ("%d:%h",j,srcPacketIn[j]);
        end
endmodule

【问题讨论】:

  • 奇怪的是,当我总是在 $display 之前使用 #
  • For 循环需要在程序块内(always/initial/etc)。你只是没有复制那部分吗?
  • 非常感谢..那是错误..

标签: verilog


【解决方案1】:

代码可在 Icarus Verilog 0.9.6 中使用,但更改如下。
在此处编译/模拟结果:EDA Playground

module test_fixtures;
parameter TestCycles = 12;
parameter ClockPeriod = 10;


reg [7:0] srcPacketIn [0:(5*TestCycles)-1];

reg clock, reset;
integer j; // <-- CHANGED


initial
    begin
        $readmemh("input.h",srcPacketIn);
    end
initial
    begin
        reset = 0;
        clock = 1;
    end

always #ClockPeriod clock = ~clock;

initial begin // <-- ADDED
        for (j=0; j < 59; j=j+1)
          begin
          $display ("%d:%h",j,srcPacketIn[j]);
        end
      end // <-- ADDED
endmodule

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多