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

SystemVerilog类对象创建代码在Synopsys VCS中报语法错误求助

问题原因与解决方法

你遇到的这个Syntax error是因为SystemVerilog不允许在模块的声明区域直接执行对象实例化语句,类的new()调用属于执行性代码,必须放在过程块(比如initial或always)内部。

你的原代码里,P = new();和C = new();直接写在module main;的声明段,这违反了语法规则——模块声明区只能放置变量、句柄、连线等静态声明,而实际执行的操作必须封装在过程块中。

修正后的完整代码

class parent; 
  int a = 10; 
endclass

class child extends parent; 
  int b = 10; 
endclass

module main; 
  parent P; 
  child C; 

  initial begin
    // 将对象实例化语句移到initial过程块内
    P = new(); 
    C = new(); 
    $display("a=%d\n",C.a); 
  end 
endmodule

补充说明

把实例化语句移入initial块后,Synopsys VCS就能正常编译运行了。initial块是SystemVerilog中用于执行一次性初始化操作的过程块,非常适合用来完成类对象的实例化、仿真初始化这类任务。

内容的提问来源于stack exchange,提问作者K. Piyush

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:23:02