我正在尝试使用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
答案 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));