Неизвестная ошибка при синтезе IP-адресов в формате AXI

Я пытаюсь использовать инструменты IP-упаковки в Xilinx Vivado, чтобы создать сопроцессор с интерфейсом AXI-Lite и использовать его в проекте Zynq SoC для моего класса инженерии цифровых систем. Сопроцессор - это калькулятор НОД, который мы уже разработали в рамках предыдущего задания. Я следовал указаниям инструктора по созданию IP-адреса из калькулятора GCD, и мы вольно следовали Уроку 4A из PDF-файла, расположенного здесь, чтобы создать интерфейс AXI (объявления ввода-вывода, очевидно, изменены, чтобы приспособиться к калькулятору GCD). У меня есть шина данных, называемая «данными», работающая с AXI IP и GCD IP для отправки значений на калькулятор. Однако когда я пытаюсь синтезировать дизайн, я получаю следующую ошибку:

[Synth 8-685] variable 'data' should not be used in output port connection'

Ошибка перенаправляет на строку моего экземпляра интерфейса шины AXI, где определен мой порт данных.

Я часами искал в Интернете решение этой ошибки, но даже на веб-сайте Xilinx или в документах Xilinx, которые были нам предоставлены, нет информации об этой ошибке, и я не смог найти ее. аккаунты от всех, у кого возникла такая же ошибка.

Я написал профессору по электронной почте, чтобы узнать, есть ли у него какие-нибудь идеи, но он, вероятно, не проснется еще шесть часов, а задание должно быть выполнено сегодня (завтра?).

Кто-нибудь слышал об этой ошибке или есть идеи, как ее исправить?

Вот фрагмент кода, который содержит источник ошибки:

// Instantiation of Axi Buss Interface S00_AXI
myip_v1.0_0_S00_AVI # (
    .C_S_AXI_DATA_WIDTH(C_S00_AXI_DATA_WIDTH),
    .C_S_AXI_ADDR_WIDTH(C_S00_AXI_ADDR_WIDTH)
) myip_v1_0_S00_AXI_inst (
    .done_async(done_async),
    .go(go),
    .data(data), // The error points to this line
    .S_AXI_ACLK(s00_axi_aclk),
    ... // all remaining ports were generated by the IP tools
);

Спасибо,

-Андрей


person Unrealcow    schedule 18.04.2016    source источник
comment
Можете выложить хоть ошибочные строки?   -  person Paebbels    schedule 18.04.2016
comment
@Paebbels, я отредактировал исходный пост, чтобы добавить строку, на которую указывает ошибка.   -  person Unrealcow    schedule 18.04.2016


Ответы (1)


Мне кажется, что вы пытаетесь управлять переменной из вывода созданного модуля. В Verilog вы не можете управлять переменной из созданного модуля. Это незаконно в Verilog (хотя и не в SystemVerilog):

reg OP;                                     -- this is a variable    
SOME_MODULE MODULE_INST (.IP(IP), .OP(OP)); 

тогда как это не является незаконным:

wire OP;                                    -- this is a net
SOME_MODULE MODULE_INST (.IP(IP), .OP(OP)); 
person Matthew Taylor    schedule 18.04.2016
comment
Это была моя проблема. Большое Вам спасибо. Теперь мне просто нужно выяснить, как отредактировать мой код, чтобы учесть это изменение. - person Unrealcow; 18.04.2016