Synplify忽略用户指定初始值提示含义及iCE40寄存器初始化疑问
1. FX1039警告的具体含义
这个警告直白来说就是:你给tp模块里的zf、cf等寄存器(或信号)设置的初始值,Synplify综合工具根本没采纳,直接跳过了。
常见的触发原因有这几种:
- 你可能在Verilog代码里用了
initial块给寄存器赋初始值,但Synplify针对iCE40这个目标器件综合时,不认可这种设置硬件初始状态的方式; - 或者你用了Verilog-2001的声明式初始值(比如
reg [7:0] pc = 8'h00;),但工具判断iCE40硬件不支持这种初始值的物理实现,所以直接忽略; - 另外,开头的
MT206提示说明Auto Constrain模式已开启,工具会优先遵循器件的约束规则处理,不会采纳你自定义的初始值。
2. iCE40系列FPGA能否指定寄存器初始状态?
答案是不能通过硬件层面保证寄存器的上电初始值——iCE40HX1K这类iCE40 FPGA的寄存器结构里,没有内置上电复位或初始值加载的电路,所以上电时寄存器的状态是随机的。
这就是为什么你设置的初始值会被Synplify忽略:工具知道这个器件根本做不到硬件层面的初始值固定,所以干脆直接跳过你的设置,给你发个警告提个醒。
那如果需要系统有确定的初始状态怎么办?唯一可靠的方法是在设计里加显式的复位电路:比如用一个上电复位模块生成全局复位信号,或者用外部输入的复位信号,在上电后主动把所有需要初始化的寄存器复位到你想要的值。这是iCE40设计中实现确定初始状态的标准做法。
内容的提问来源于stack exchange,提问作者PlasticBrain
相关产品推荐
相关产品推荐

