2

我正在尝试使用 Xilinx Vivado 中的 IP 封装工具来创建具有 AXI-Lite 接口的协处理器,并将其用于我的数字系统工程课程的 Zynq SoC 设计中。协处理器是一个 GCD 计算器,我们已经在之前的任务中开发了它。我按照讲师的指示从 GCD 计算器中创建了一个 IP,我们大致按照位于此处的 PDF 中的教程 4A来创建 AXI 接口(显然修改了 I/O 声明以适应 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
);

谢谢,

-安德鲁

4

1 回答 1

2

在我看来,您正试图从实例化模块的输出中驱动变量。在 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)); 
于 2016-04-18T07:46:36.927 回答