把子模块包含网表的RTL代码添加到BD中的方法分享

Vivado以IP为核心的设计理念的一个重要支撑就是IP Integrator(简称IPI,IP集成器)。用户可以很便捷地把VivadoIP Catalog中的IP拖到IPI中形成Block Design(.bd文件)。

同时,对于用户自己的RTL代码,可以借助IP Packager先封装成IP,再导入到IP Catalog中,然后在IPI中使用。

此外,Vitis HLS、Vitis Model Composer都可以将用户设计以IP形式输出供用户导入到IP Catalog中调用。

尽管如此,不得不说借助IP Packager封装IP的过程还是有些繁琐的。当然,我们也要看到封装IP带来的好处就是便于不同设计团队开发使用。IPI的功能仍在不断增强。

一个显著的功能是用户可以直接将RTL代码拖到IPI中构成BD,如下图所示。要求RTL设计的顶层如这里的uart_tx必须是Verilog或VHDL描述。SystemVerilog/VHDL-2008不支持此功能。

此功能被称为模块引用(Module Reference)。

关于模块引用,我们可能会碰到以下问题。

问题1:待引用的顶层采用的是SystemVerilog或VHDL-2008描述的。

因为模块引用不支持SystemVerilog也不支持VHDL-2008,在这种情况下,可以用Verilog或VHDL先对该模块封装以下,这样就可以将封装后的.v或.vhd模块添加到IPI中。

问题2:若待引用的顶层其子模块包含IP Catalog中的IP(以.xci形式存在),那么是否支持此功能?

模块引用功能允许待引用的顶层其子模块包含.xci IP,但并不是所有的IP都支持。可通过如下命令获取不支持此功能的IP。可以看到NoC、CIPS和PS是不支持的。换言之,目前的Vivado版本(2023.1)只能在IPI中直接使用这些IP。

版权声明:
作者:网友投稿
链接:http://qiangcao.com/zs/1469.html
来源:轩哥技术分享
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>