AXI IP 综合期间的未知错误

Unknown Error during synthesis of AXI IPs

我正在尝试使用 Xilinx Vivado 中的 IP 封装工具来创建具有 AXI-Lite 接口的协处理器,并将其用于我的数字系统工程 class 的 Zynq SoC 设计中。协处理器是一个 GCD 计算器,我们已经在之前的任务中开发了它。我按照讲师的指示从 GCD 计算器中创建了一个 IP,并且我们松散地按照位于 here 的 PDF 中的教程 4A 创建了 AXI 接口(I/O 声明显然被修改以适应 GCD计算器)。我有一个来自 AXI IP 和 GCD IP 的名为 'data' 运行 的数据总线,用于将值发送到计算器。但是,当我尝试综合设计时,出现以下错误:

[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
);

谢谢,

-安德鲁

在我看来,您正试图从实例化模块的输出中驱动变量。在 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));