在fpga开发过程中,往往是模块化的分工合作,大家做好自己的模块再统一添加到顶层。
rtl代码是透明,当你不想公开自己的代码而只想提供一个黑盒子时,就需要想别的办法。
xilinx vivado提供IP封装的功能,但是不能提供加密,所以可行的办法是提供网表来供顶层使用。
模块的网标生成需要注意三个问题:
1、将模块作为顶层综合时,端口会被工具认作是I/O而添加IO BUF;
2、端口的很多信号由于没有驱动所以会被工具优化掉;
3、xilinx工具无法确定网表使用者是否有IP核的licence,所以制作网表的rtl内不能包含xilinx的IP核。
以上问题都能想办法规避,
1、IO BUF可以不用管,工具会将不是顶层模块的端口的IO BUF优化掉,当然你也可以自己去删;
2、在模块的端口添加(*KEEP = "TRUE"*),保证信号不被优化;
3、一定需要用到xilinx的IP核的话就将IP核作为你的模块的一个平行模块。
网标的生成也很简单,将模块作为顶层综合后,路径下会有checkpoint,而该文件会包含顶层例化的.v和.vhd、网表.edf.。将该文件加入工程替代.v或.vhd即可。