把子模块包含网表的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中调用。

Vivado

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

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

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

Vivado

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

问题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。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分