Vhdl 使用自定义IP时块设计中未定义的类型

Vhdl 使用自定义IP时块设计中未定义的类型,vhdl,simulation,fpga,xilinx,vivado,Vhdl,Simulation,Fpga,Xilinx,Vivado,我正忙于获得一些使用Xilinx Vivado的实践经验 从github()获取一个VHDL正弦发生器,我用它制作了一个IP包。我定义了端口: 因此,“in_phase”端口的类型为unsigned 打包IP后,我创建了一个带有块设计的新项目,并实例化了IP: 这工作,我可以综合设计。然而,模拟失败了。我在精化日志中发现以下错误: Starting static elaboration ERROR: [VRFC 10-619] entity port in_phase does not ma

我正忙于获得一些使用Xilinx Vivado的实践经验

从github()获取一个VHDL正弦发生器,我用它制作了一个IP包。我定义了端口:

因此,“in_phase”端口的类型为unsigned

打包IP后,我创建了一个带有块设计的新项目,并实例化了IP:

这工作,我可以综合设计。然而,模拟失败了。我在精化日志中发现以下错误:

Starting static elaboration
ERROR: [VRFC 10-619] entity port in_phase does not match with type std_logic_vector of component port [/home/dinne/Xilinx/projects/nexys4ddr_tst/nexys4ddr_tst.ip_user_files/bd/design_1/ip/design_1_sincos_gen_0_0/sim/design_1_sincos_gen_0_0.vhd:80]
ERROR: [VRFC 10-619] entity port out_sin does not match with type std_logic_vector of component port [/home/dinne/Xilinx/projects/nexys4ddr_tst/nexys4ddr_tst.ip_user_files/bd/design_1/ip/design_1_sincos_gen_0_0/sim/design_1_sincos_gen_0_0.vhd:81]
ERROR: [VRFC 10-619] entity port out_cos does not match with type std_logic_vector of component port [/home/dinne/Xilinx/projects/nexys4ddr_tst/nexys4ddr_tst.ip_user_files/bd/design_1/ip/design_1_sincos_gen_0_0/sim/design_1_sincos_gen_0_0.vhd:82]
不知怎的,端口类型发生了变化。如果我检查例如“in_phase”端口的端口属性,我会看到类型为“undef”。

另外,如果我检查生成的IP包装器代码,我会看到端口类型已经更改。同样,“in_phase”端口应为无符号端口,但为“std_logic_vector”


如何修复IP端口类型并使模拟运行?

Vivado仅允许自定义IP使用类型为
std\u logic
std\u logic\u vector
的端口。详情请参阅。在本文件第12页的“顶级HDL要求”一节中,他们明确提到:

无论顶层端口类型如何,当您合成上下文外IP(OOC)时,生成的IP网络列表端口将转换为std_逻辑或std_逻辑向量转换后的网络列表端口可能会导致RTL模拟出现类型不匹配问题。对于Verilog,不支持使用复杂或拆分端口的模块声明

在同一文档第63页的“端口和接口”部分下:

°类型名称:端口类型(标准逻辑或标准逻辑向量)


由于每个自定义IP都被视为顶级实体,因此很遗憾,不支持在顶级端口中使用
无符号
类型。

Vivado只允许自定义IP使用类型为
std\u logic
std\u logic\u vector
的端口。详情请参阅。在本文件第12页的“顶级HDL要求”一节中,他们明确提到:

无论顶层端口类型如何,当您合成上下文外IP(OOC)时,生成的IP网络列表端口将转换为std_逻辑或std_逻辑向量转换后的网络列表端口可能会导致RTL模拟出现类型不匹配问题。对于Verilog,不支持使用复杂或拆分端口的模块声明

在同一文档第63页的“端口和接口”部分下:

°类型名称:端口类型(标准逻辑或标准逻辑向量)

由于每个自定义IP都被视为顶级实体,因此很遗憾,不支持在顶级端口中使用
unsigned
类型