You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么这段Verilog模块第9行提示invalid module item错误?

报错原因
  • Verilog语法规定,forever属于过程控制语句,必须嵌套在initial或always这类过程块内部使用,不能直接作为模块的顶层成员存在。
  • 你提交的代码中将forever语句放在了所有过程块之外,直接归属于module作用域,不属于合法的模块项,因此编译器抛出语法错误和非法模块项报错。
修正方案

方案1:将forever移入initial块

完全保留原本逻辑,仅调整语句位置即可正常运行:

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

方案2:使用always块生成时钟

这是Verilog生成时钟的更常用写法,always块本身为永久循环执行的过程块,不需要额外加forever:

module Pulse(clock);
  output reg clock;
  
  initial
    clock = 1'b0;
    
  always #10 clock = ~clock;
endmodule

两种方案生成的时钟都是周期20ns、占空比50%的预期效果。

内容的提问来源于stack exchange,提问作者Circuit_Breaker0.7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 00:36:04