合成AXI IP期间出现未知错误

时间:2016-04-18 07:27:10

标签: verilog vivado zynq

我正在尝试使用Xilinx Vivado中的IP封装工具来创建一个带有AXI-Lite接口的协处理器,并将其用于我的数字系统工程类的Zynq SoC设计中。协处理器是我们已经开发的GCD计算器,作为先前任务的一部分。我按照指导员的指示从GCD计算器中创建了一个IP,我们从位于here的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
);

谢谢,

-Andrew

1 个答案:

答案 0 :(得分: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));