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盘都不让带,我又记不住,面试的时候把我问的一愣一愣的,好像我是个骗子,都是编的经历一样,其实真的是做过但忘记了,所以人记性差真的吃亏啊。

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

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

相关推荐
物质波波波7 小时前
WS-RPE:面向边缘物理AI实时特征值计算的硬件工作窃取调度器与冗余PE激活架构
人工智能·fpga开发·架构·系统架构·硬件架构
我爱C编程10 小时前
基于FPGA的DSB调制解调系统verilog开发
fpga开发·verilog·fpga·dsb
zlinear数据采集卡11 小时前
USB HS 480M高速传输与SRAM记录仪:DABM-D223数据存储系统全解析
arm开发·嵌入式硬件·fpga开发·开源
逻辑诗篇13 小时前
基于 XCVU13P 的 4 路 100G 光纤 PCIe 处理板 PCIE727 硬件规格全解析
fpga开发
玩嵌入式谁会脱发呀16 小时前
【FPGA】 verilog设计spi读写flash实现数据DMA搬运
fpga开发
LabVIEW开发2 天前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder2 天前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家2 天前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴2 天前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家3 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat