quartus24.1版本子模块因时钟问题无法综合通过,FPGA过OOC问题复盘

因为只负责一个子模块,所以需要单独对该子模块进行综合和过OOC,这时候已经有一些加虚拟pin文件,敲命令让子模块能过OOC的方法。但这个方法的前提是先过综合,然后再敲命令让虚拟管脚命令成功,最终可以过OOC。

今天负责的这个模块的一个输入时钟是某个IP核的输入,所以这个IP核对这个输入时钟有要求限制。要求必须是PLL IP的输出时钟才可以。所以这个项目总工程能综合通过,但子模块却卡在了综合这里,一直过不了。我呢,太懒,不想改代码。琢磨了一天也没想出来咋办。

最后领导建议了。

方法一:自己在这个子模块基础上加个top,然后加上PLL IP,然后把这个时钟输出在作为输入接入子模块。这方案当然不是我想要的,哈哈。就不想写代码。

方法二:直接把整个工程跑综合,过了就算通过了。等于不再单独对这个子模块进行OOC检查了。

OOC:概念,out of context 的缩写

上下文无关综合。

这种概念我是来这家公司才知道的,因为之前公司整个项目都是自己做,不涉及子模块问题,但现在公司很系统很细节很螺丝钉,只负责子模块,就有OOC的环节,之前我一直以为就是整个项目跑实现implementation的意思。原来这个OOC是模拟这个过程,在不分配管脚的情况下。

官方解释:FPGA设计通常由多个模块组成,传统综合是将整个设计作为一个整体进行处理。而OOC综合允许独立地对设计中的各个模块进行综合,每个模块的综合过程不依赖于整个设计的上下文信息。

我可是够懒的了,做了好几年了,才理解这个词啥意思......

作用:

提高综合速度:当FPGA设计规模庞大,结构复杂时,整体综合会消耗大量的时间和系统资源。采用OOC综合,不同模块可以并行处理,(也就是不同模块负责人各干各的不用互相等),大大缩短了综合的总时间。例如,一个包含多个复杂IP核和自定义逻辑模块的大型FPGA设计,对各个模块分别进行OOC综合能显著提高效率。很显然小项目可能用不上,大项目甚至是芯片设计的那种可能会用上这种精细的工作。

优化模块性能:在独立综合每个模块时,可以针对该模块的特点进行更精细的优化设置。比如对于一个对时序要求极高的模块,可以单独为其设置更严格的时序约束和优化策略,而不受其他模块的影响,从而提升该模块的性能。

便于模块复用:通过OOC综合得到的模块具有更好的独立性和可移植性。在不同的设计项目中,如果需要复用某个模块,只需将该模块及其相关的OOC综合结果导入即可,无需重新对整个设计进行综合。

使用方式:

模块标记:在设计代码中,需要明确标记哪些模块要进行OOC综合。不同的FPGA开发工具标记方式可能有所不同。例如,在vivado中,可以通过设置属性来指定某个模块为OOC模块。

就我的经验而言,vivado开发这个过程比较容易,在设置中综合设置里面加上命令-mode out_of_context

具体是tools-settings-synthesis more options中输入

-mode out_of_context,然后implementation通过就等于过了OOC单独模块的无上下文综合。

而intel的quartus需要一些脚本操作来完成,相对复杂了一点。需要linux人来配合写个脚本啥的

2025.02.07

好啦!这次经验写到这里。说点题外话,这几年我一直没来写,原因是我进了一家外企,安全管理过于严格,电脑随时被监控,我不敢登录这里。最近打算离职了,突然试了一下,电脑上登录了,结果给我发邮件说我在韩国登录了该博客,吓死我。赶紧退出。所以现在是用手机登录来写的,比较麻烦。

这几年也学到了很多,其实如果电脑不被监控,我也会留下很多经验给大家分享,我是个记忆力极差的人,做完就忘。导致我一直有记录的习惯,下次再遇到就来翻一翻。可是这两年多的经验就失传了,遇到很多问题,但无法写下来,也带不出去公司,电脑u盘都不让带,我又记不住,面试的时候把我问的一愣一愣的,好像我是个骗子,都是编的经历一样,其实真的是做过但忘记了,所以人记性差真的吃亏啊。

面试也是给我说我技术深度不够......目前自卑的很。

简单的看到大家给我的评价,很高兴能帮助到大家,大家问我的问题可能也是很久了有些细节我自己也忘了,就不回复了。如果新工作保密要求不高我会再来分享经验的

相关推荐
仲南音2 天前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner2 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20203 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy3 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia3 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20203 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子3 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安4 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun4 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun5 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议