Vivado не распознает ячейку в EDIF-файле, созданном Yosys - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь использовать Yosys для создания файла edif, который затем использую в сценариях Vivado tcl для создания потока битов для FPGA Artix 7 (xc7a15t).Однако Vivado, похоже, испытывает проблемы с несколькими ячейками в файле edif.

Когда я полностью использую тот же файл verilog и ограничений в Vivado, поток битов создается нормально, и он работает, как и ожидалось, при загрузкеэто на ПЛИС.

Я смоделировал свой рабочий процесс на примере здесь .

В частности, я использую следующий скрипт оболочки в качестве интерфейса для 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 (простой пример blinky):

`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

1 Ответ

0 голосов
/ 10 февраля 2019

Решение в руководстве пользователя Yosys .Vivado жалуется на ячейки 'VCC' и 'GND', поэтому мы должны передать опцию -nogndvcc в write_edif.Как объяснено в описании опции -nogndvcc, для этого мы должны использовать hilomap, чтобы связать VCC и GND с пользовательскими драйверами.Полный синтез xilinx достигается с:

synth_xilinx -top top
hilomap -hicell VCC P -locell GND G
write_edif -nogndvcc top.edif
...