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

Intel Quartus Prime中Verilog读取.mif文件的$readmemh语法错误

解决Quartus中$readmemh读取MIF文件触发的Error(10170)语法错误

错误原因

$readmemh是Verilog仿真系统任务,仅支持读取纯十六进制格式的文件(如.hex),而MIF是Quartus专用的内存初始化文件,包含DEPTH、WIDTH、BEGIN等结构化语法,和$readmemh的预期格式完全不兼容。你的MIF文件首行的配置内容(比如以D/W开头的定义行)被$readmemh当作十六进制数据解析,因此触发首行附近的语法错误。此外你提供的Verilog代码缺少initial关键字,begin块没有合法的上下文,这也是潜在语法问题。

解决方案

方案1:转换MIF为HEX文件后用$readmemh读取

  1. 在Quartus中打开sine3_test1.MIF文件
  2. 点击菜单栏File -> Save As,在格式下拉框选择Hexadecimal (Intel-Format) File (*.hex),保存为sine3_test1.hex
  3. 修改Verilog代码:
    reg [7:0] memory[0:255];
    initial begin
        $readmemh("sine3_test1.hex", memory);
    end
    

方案2:直接用Quartus综合属性绑定MIF文件

如果仅需综合后硬件使用初始化数据,可将MIF文件加入Quartus项目,通过综合属性绑定初始化:

reg [7:0] memory[0:255] /* synthesis ram_init_file = "sine3_test1.MIF" */;

这种方式由Quartus综合工具直接解析MIF完成内存初始化,无需使用$readmemh。

额外注意事项

  • 确保文件存放在Quartus项目根目录,或在代码中指定正确的相对路径
  • 若需仿真、综合阶段都使用初始化数据,优先选择方案1,因为$readmemh可被仿真工具识别,HEX文件也能被Quartus综合调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:15:18