版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39789553/article/details/121249415
两者区别
在用vivado 生成IP核时,有两种综合方式:Global和out of context per IP。Global模式可以理解为全局综合,当整个工程中的某个文件修改综合时,之前生成的IP核将被重新综合,而out of context per IP模式被称为OOC模式,在生成综合IP核时,已经将IP核综合为网表文件和IP调用文件,在后续整个工程实现时,不再对IP核的源文件进行综合实现,而是直接将网表与其他模块一起实现。个人理解有些像软件工程编译时的增量编译,因此IP采用OOC模式可以大大解决整个工程的综合时间,毕竟FPGA目前的综合时间还是太漫长了。
两者综合流图区别如下:
OOC生成的文件
OOC模式下将生成的文件包括:
1、.dcp (design checkpoint)文件
2、.vhdl或.v的网表文件
3、以”stub”结尾的类似于软件里的头文件,作用是跟工程中的其他文件一起综合
注意、注意、注意
1、更新IP核参数时需注意
采用OOC模式生成IP核后,如果还需要对IP的参数或初始值进行修改,则需要先对IP核进行复位,然后重新选择OOC模式生成IP核。复位的具体操作如下,右键点开需要操作的IP核然后点击reset output product。
2、IP核中包括高阻态时需注意
如果封装的IP核中存在三态(高阻态)赋值,OOC模式综合操作将会受到影响,例如:
assign my_signal = enable?din1:1’bz。
FPGA仅支持I/O输出端口的高阻态,在器件内部是不允许的,如果使用OOC模式,综合工具并不知道某个具体的信号连接I/O输出还是器件内部连接,最后,综合工具会将这个高阻信号转换为某个逻辑值,而不是高阻态。解决办法是在IP核的RTL中实例化一个三态缓存,例如:
OBUF u1(.l(din1), .T(n_enable), .O(my_signal))。