为啥这个 Verilog 模块在第 9 行显示“无效模块项”?

Posted

技术标签:

【中文标题】为啥这个 Verilog 模块在第 9 行显示“无效模块项”?【英文标题】:Why does this Verilog module show "invalid module item" on the 9th line?为什么这个 Verilog 模块在第 9 行显示“无效模块项”? 【发布时间】:2021-12-25 19:44:39 【问题描述】:

我正在学习 Verilog 中的循环,并想创建一个时间周期为 20ns 的简单时钟。每当我尝试在 EDA Playground 中运行代码时,都会出现以下错误。

module Pulse(clock);
  output reg clock;
  
  initial
    begin
      clock = 1'b0;
    end
  
  forever #10 clock = ~clock;      //Error is here
endmodule

design.sv:9:语法错误 design.sv:9:错误:无效的模块项。

【问题讨论】:

【参考方案1】:

forever 是程序语句;它不会创建像initialalways 这样的进程。您可以将forever 放在initial 块内,或者直接写

 always #10 clk = ! clk;

【讨论】:

【参考方案2】:

forever 不能在程序块之外使用。如果您将其放在初始块中,它将起作用:

initial
   begin
      clock = 1'b0;
      forever #10 clock = ~clock;  
   end

【讨论】:

以上是关于为啥这个 Verilog 模块在第 9 行显示“无效模块项”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 verilog 关系语句返回 true?

VGATFT显示模块——verilog实现

Verilog无符号除法器-流水线实现

Verilog无符号除法器-流水线实现

Verilog无符号除法器-流水线实现

为啥没有在 Verilog 中正确传递参数?