Vivado 无法识别 Yosys 生成的 EDIF 文件中的单元格
Vivado doesn't recognize cell in EDIF file generated by Yosys
我正在尝试使用 Yosys 生成一个 edif 文件,然后我将其与 Vivado tcl 脚本一起使用来为 Artix 7 (xc7a15t) FPGA 生成比特流。但是,Vivado 似乎无法处理 edif 文件中的一些单元格。
当我在 Vivado 中完全使用相同的 verilog 和约束文件时,比特流创建得很好,当我将它加载到 FPGA 上时它按预期工作。
我已经根据示例 here 对我的工作流程进行了建模。
具体来说,我使用以下 shell 脚本作为 yosys 和 Vivado 命令的前端:
#!/bin/bash
yosys run_yosys.ys
vivado -nolog -nojournal -mode batch -source run_vivado.tcl
run_yosys.ys:
read_verilog top.v
synth_xilinx -edif top.edif -top top
run_vivado.tcl
read_xdc top.xdc
read_edif top.edif
link_design -part xc7a15tftg256-1 -top top
opt_design
place_design
route_design
report_utilization
report_timing
write_bitstream -force top.bit
top.v(简单的眨眼示例):
`default_nettype none
module top (
input wire clk,
output reg led);
reg [24:0] cnt = 25'b0;
always @(posedge clk) begin
cnt <= cnt + 1'b1;
if (cnt == 25'b0) begin
led <= !led;
end
else begin
led <= led;
end
end
endmodule // top
top.xdc:
create_clock -period 25.000 -name clk -waveform {0.000 12.500} [get_ports clk]
set_property -dict {IOSTANDARD LVCMOS33 PACKAGE_PIN N11} [get_ports clk]
set_property -dict {IOSTANDARD LVCMOS33 PACKAGE_PIN D1} [get_ports led]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property CFGBVS VCCO [current_design]
Vivado tcl 命令 opt_design
生成以下错误:
ERROR: [DRC INBB-3] Black Box Instances: Cell 'GND' of type 'GND/GND' has undefined contents and is considered a black box. The contents of this cell must be defined for opt_design to complete successfully.
单元格 'VCC'
出现同样的错误。
我在调用 link_design
时也收到了与此相关的警告:
CRITICAL WARNING: [Netlist 29-181] Cell 'GND' defined in file 'top.edif' has pin 'Y' which is not valid on primitive 'GND'. Instance 'GND' will be treated as a black box, not an architecture primitive
我在这里使用 Yosys 不正确吗?正确的流程是什么?我是 Yosys 的新手,所以如果我错过了一些明显的东西,请原谅我。
我正在使用 Yosys 0.8+147 和 Vivado 2017.2
解决方案在 Yosys user manual 中。 Vivado 抱怨 'VCC' 和 'GND' 单元格,因此我们必须将 -nogndvcc
选项传递给 write_edif
。正如 -nogndvcc
选项的描述中所解释的,要做到这一点,我们必须使用 hilomap
将 VCC 和 GND 与自定义驱动程序相关联。完整的赛灵思综合是通过以下方式实现的:
synth_xilinx -top top
hilomap -hicell VCC P -locell GND G
write_edif -nogndvcc top.edif
我正在尝试使用 Yosys 生成一个 edif 文件,然后我将其与 Vivado tcl 脚本一起使用来为 Artix 7 (xc7a15t) FPGA 生成比特流。但是,Vivado 似乎无法处理 edif 文件中的一些单元格。
当我在 Vivado 中完全使用相同的 verilog 和约束文件时,比特流创建得很好,当我将它加载到 FPGA 上时它按预期工作。
我已经根据示例 here 对我的工作流程进行了建模。
具体来说,我使用以下 shell 脚本作为 yosys 和 Vivado 命令的前端:
#!/bin/bash
yosys run_yosys.ys
vivado -nolog -nojournal -mode batch -source run_vivado.tcl
run_yosys.ys:
read_verilog top.v
synth_xilinx -edif top.edif -top top
run_vivado.tcl
read_xdc top.xdc
read_edif top.edif
link_design -part xc7a15tftg256-1 -top top
opt_design
place_design
route_design
report_utilization
report_timing
write_bitstream -force top.bit
top.v(简单的眨眼示例):
`default_nettype none
module top (
input wire clk,
output reg led);
reg [24:0] cnt = 25'b0;
always @(posedge clk) begin
cnt <= cnt + 1'b1;
if (cnt == 25'b0) begin
led <= !led;
end
else begin
led <= led;
end
end
endmodule // top
top.xdc:
create_clock -period 25.000 -name clk -waveform {0.000 12.500} [get_ports clk]
set_property -dict {IOSTANDARD LVCMOS33 PACKAGE_PIN N11} [get_ports clk]
set_property -dict {IOSTANDARD LVCMOS33 PACKAGE_PIN D1} [get_ports led]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property CFGBVS VCCO [current_design]
Vivado tcl 命令 opt_design
生成以下错误:
ERROR: [DRC INBB-3] Black Box Instances: Cell 'GND' of type 'GND/GND' has undefined contents and is considered a black box. The contents of this cell must be defined for opt_design to complete successfully.
单元格 'VCC'
出现同样的错误。
我在调用 link_design
时也收到了与此相关的警告:
CRITICAL WARNING: [Netlist 29-181] Cell 'GND' defined in file 'top.edif' has pin 'Y' which is not valid on primitive 'GND'. Instance 'GND' will be treated as a black box, not an architecture primitive
我在这里使用 Yosys 不正确吗?正确的流程是什么?我是 Yosys 的新手,所以如果我错过了一些明显的东西,请原谅我。
我正在使用 Yosys 0.8+147 和 Vivado 2017.2
解决方案在 Yosys user manual 中。 Vivado 抱怨 'VCC' 和 'GND' 单元格,因此我们必须将 -nogndvcc
选项传递给 write_edif
。正如 -nogndvcc
选项的描述中所解释的,要做到这一点,我们必须使用 hilomap
将 VCC 和 GND 与自定义驱动程序相关联。完整的赛灵思综合是通过以下方式实现的:
synth_xilinx -top top
hilomap -hicell VCC P -locell GND G
write_edif -nogndvcc top.edif