Yosys优化移除GPIO RX模块是否属于预期行为?
iCE40 Icestick上Yosys优化RX模块的行为分析
这种优化移除模块的行为属于预期行为,核心原因在于Yosys综合器的死逻辑清除机制:
- 综合器会自动判定并移除对最终电路功能无贡献的“死逻辑”。如果你的
rxi模块输出没有连接到任何后续有效逻辑(比如未驱动其他模块、寄存器或输出引脚),哪怕它的输入接的是GPIO引脚,综合器也会认为这个模块是冗余的,进而将其优化移除。 - 添加
(* keep *)标记本质是强制工具保留指定模块,这完全符合Yosys的标记逻辑,并非特殊“修复”手段。
如果你想避免这种自动优化,有两种常规处理方式:
- 确保
rxi模块的输出被接入实际会被使用的电路路径(比如驱动TX引脚、写入寄存器用于后续逻辑判断等) - 若确实需要保留未被使用的输入模块,可继续使用
(* keep *)标记,这是最直接的强制保留手段
内容的提问来源于stack exchange,提问作者Cornelius Korinthia
相关产品推荐
相关产品推荐

