【问题标题】:Undefined type in block design when using custom IP使用自定义 IP 时模块设计中的未定义类型
【发布时间】:2018-08-02 15:10:14
【问题描述】:

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

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

所以“in_phase”端口的类型是无符号的。

打包 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 端口类型并让模拟运行?

【问题讨论】:

    标签: vhdl simulation fpga xilinx vivado


    【解决方案1】:

    Vivado 仅允许将 std_logicstd_logic_vector 类型的端口用于自定义 IP。详情请见here。在本文档第 12 页的 顶级 HDL 要求部分下,他们清楚地提到:

    无论顶级端口类型如何,当您合成 IP 上下文外 (OOC) 时,生成的 IP 网表端口都将转换为 std_logic 或 std_logic_vector。 转换后的网表端口可能会导致 RTL 仿真出现类型不匹配问题。对于 Verilog,不支持具有复杂或拆分端口的模块声明。

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

    ° 类型名称: 端口类型(std_logic 或 std_logic_vector)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多