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

Vivado中Verilog代码调用$size报错需切换SystemVerilog模式问题求助

错误原因

error: system call size not allowed in this dialect use system Verilog mode

$size是SystemVerilog专属的内置系统函数,不属于标准Verilog(IEEE 1364标准)的语法范围。你当前Vivado工程默认采用标准Verilog编译模式,不识别该系统函数,因此触发编译错误。

可直接落地的解决方案
  • 方案1:启用SystemVerilog编译模式(推荐,无需修改代码)
    你可以选择全局修改工程配置,或者仅修改单个文件属性:

    1. 全局配置:打开Vivado工程后依次点击Tools -> Settings -> Language Options,将Verilog dialect选项设置为SystemVerilog,保存后重新编译即可。
    2. 单文件配置:直接将对应.v源文件的后缀修改为.sv,Vivado会自动对该文件启用SystemVerilog编译规则,不影响工程内其他Verilog文件。
  • 方案2:替换为标准Verilog兼容写法(无需修改编译配置)
    如果你不想启用SystemVerilog模式,可直接替换$size(data)的调用:

    1. 若data的位宽是固定16位,直接用数值16替换$size(data)即可。
    2. 若data的位宽是参数化定义的,比如:
      parameter DATA_W = 16;
      wire [DATA_W-1:0] data;
      
      直接用定义位宽的参数DATA_W替换$size(data)即可。

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:06:02