我的顶级 verilog 模块为 myStorm ice40 板上的四个 LED 声明信号,这些 LED 标记为“LED1-LED4”。
module top (
output [4:1] LED
);
assign LED = 4'b1010;
endmodule
我在 .pcf 文件中使用相同的编号:
set_io LED[1] 37
set_io LED[2] 38
set_io LED[3] 39
set_io LED[4] 41
但是在 .blif 输出中,yosys 对信号进行了重新编号:
.model top
.inputs
.outputs LED[0] LED[1] LED[2] LED[3]
...
所以 arachne-pnr 提示:
top.pcf:4: fatal error: no port `LED[4]' in top-level module `top'
yosys 是否期望顶级矢量端口始终从零开始编号?
最佳答案
原因是 Yosys BLIF 后端没有使用存储在 Yosys Wire 对象中的开始偏移和方向(向上/向下)的提示来生成单位网络名称。
现在已在提交 5c2c78e2dd 中修复.感谢您提醒我注意这一点。
更新到 Yosys 的最新 git head,你应该会得到你期望的结果。
关于yosys - 为什么 yosys 重新编号向量端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40753094/