为什么 yosys 重新编号向量端口?
Why does yosys renumber vector ports?
我的顶级 verilog 模块为 myStorm ice40 板上的四个 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 对象中的起始偏移和方向提示 (upto/downto) 来生成单位网络名称。
现在已在提交 5c2c78e2dd 中修复此问题。感谢您提醒我注意此事。
更新到最新的 git Yosys 负责人,您应该会得到您期望的结果。
我的顶级 verilog 模块为 myStorm ice40 板上的四个 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 对象中的起始偏移和方向提示 (upto/downto) 来生成单位网络名称。
现在已在提交 5c2c78e2dd 中修复此问题。感谢您提醒我注意此事。
更新到最新的 git Yosys 负责人,您应该会得到您期望的结果。