FPGA网表器件并行重映射方法与装置与流程

摘要: 本技术涉及eda,特别涉及一种fpga网表器件并行重映射方法与装置。背景技术:1、‌在fpga(现场可编程门阵列)的设计、验证及仿真流程中,设计验证人员通常需要...
FPGA网表器件并行重映射方法与装置与流程

本技术涉及eda,特别涉及一种fpga网表器件并行重映射方法与装置。

背景技术:

1、‌在fpga(现场可编程门阵列)的设计、验证及仿真流程中,设计验证人员通常需要使用各种电子设计自动化(eda)综合工具(例如synopsys的synplify或xilinx的vivado等),将硬件描述语言编写的寄存器传输级(rtl)代码综合为门级网表文件。在业界标准中,这种门级网表通常采用电子设计交换格式(edif)进行存储与传输。

2、然而,由于不同的eda工具厂商或综合工具链内置的fpga器件库(primitive celllibrary)存在原语命名、端口定义以及参数配置上的差异,导致同一种逻辑功能在不同的综合器中会被映射为不同的原语器件。例如,一个36kb的块存储器(block ram),在synplify综合器中可能被命名为“ramb36s4”,而在vivado综合器默认流程中则被命名为“ramb36e2”。此外,时钟原语(如bufg与bufgce)、数字信号处理原语(如dsp48e2)以及常规触发器原语等,在不同的综合工具之间往往也存在命名和端口引脚的不兼容。这种器件库之间的异构性,会导致下游eda工具在执行诸如资源统计(resource estimation)、时序与功耗建模(modeling)、拥塞与性能评估(performance evaluation)以及后续的布局布线实现(implementation)等核心任务时出现器件无法识别、参数缺失或连接关系断裂等运行异常。

3、针对上述逻辑原语差异问题,现有的解决手段主要包括以下几种,但各自存在显著的缺陷:

4、1.手动修改网表:验证人员在文本编辑器中逐个查找并替换不兼容的器件原语。这种方法在面对包含数百万个器件、文件大小达数十至数百gb的大型设计时,不仅效率极低,而且极易引入人工串扰错误,在实际工程中完全不可行。

5、2.统一综合工具链:强制要求整个设计和验证团队在全流程中使用同一家厂商的综合工具。但这严重丧失了工具选择的灵活性,且无法利用不同综合工具在特定电路结构(如算术逻辑或存储结构)上的综合优化优势。

6、3.编写脚本进行字符替换:编写常规脚本(如python、perl或tcl脚本)对edif文件执行批量字符串替换。这种手段只能处理极简单的单元名称映射,当面对复杂的器件端口映射(如引脚更名、悬空、反相)、层级嵌套关系以及超大文本读取时,由于缺乏对网表语法结构的动态感知和层次化处理能力,极易破坏网表的逻辑完整性。

7、同时,随着现代超大规模微处理器和soc验证设计的复杂度呈指数级增长,综合生成的edif网表文件物理大小已普遍达到10gb至100gb以上级别。传统的器件映射方法或重映射脚本在面对此类超大型网表时,通常需要将整个文件一次性读入系统内存,这会导致计算节点面临极大的内存开销,甚至直接因内存溢出(oom,out of memory)而导致综合工具或映射流程异常终止。此外,传统的串行替换机制无法有效利用现代多核处理器或分布式集群的并行计算资源,使得巨型网表的替换耗时动辄长达数小时乃至数天,严重制约了fpga设计验证的效率。

8、因此,如何在保证网表层次逻辑和原语端口完整性的前提下,实现一种能够自适应处理超大规模网表文件、具备高负载均衡性且全自动化的fpga网表器件并行重映射方案,是目前eda软件及fpga设计验证领域急需解决的技术瓶颈。

技术实现思路

1、本技术提供一种fpga网表器件并行重映射方法与装置,能够高效处理大型fpga网表文件,显著降低内存开销,缩短重映射时间,并确保网表逻辑完整性。

2、一方面,本技术提供一种fpga网表器件并行重映射方法,所述方法包括:

3、接收至少一个原始网表文件,若所述原始网表文件的大小超过预设的文件大小阈值,利用网表解析工具将所述原始网表文件解析为层次化的模块结构,基于各模块的物理大小估算值执行分割操作,得到多个子网表文件;其中被拆分出的子模块在其父模块中被转换为保留端口接口而移除内部实现的抽象占位结构表示;

4、收集网表分割步骤产生的所有所述子网表文件以及所有被标记为不分割的文件,将所收集的文件分配到多个并行任务中,并驱动目标器件映射工具以并行模式对所分配的文件执行器件库重映射,得到重映射子网表文件;

5、针对每个所述原始网表文件,收集经并行重映射步骤后得到的所有所述重映射子网表文件,根据网表层次结构中的标识信息,将被标记为抽象占位结构的模块引用与相应的完整模块定义进行匹配,重建完整的层次化网表,并导出最终的完整重映射网表文件。

6、另一方面,本技术提供一种fpga网表器件并行重映射方法装置,所述装置包括:

7、网表分割模块,用于接收至少一个原始网表文件,若所述原始网表文件的大小超过预设的文件大小阈值,利用网表解析工具将所述原始网表文件解析为层次化的模块结构,基于各模块的物理大小估算值执行分割操作,得到多个子网表文件;其中被拆分出的子模块在其父模块中被转换为保留端口接口而移除内部实现的抽象占位结构表示;

8、并行重映射模块,用于收集网表分割步骤产生的所有所述子网表文件以及所有被标记为不分割的文件,将所收集的文件分配到多个并行任务中,并驱动目标器件映射工具以并行模式对所分配的文件执行器件库重映射,得到重映射子网表文件;

9、网表重合并模块,用于针对每个所述原始网表文件,收集经并行重映射步骤后得到的所有所述重映射子网表文件,根据网表层次结构中的标识信息,将被标记为抽象占位结构的模块引用与相应的完整模块定义进行匹配,重建完整的层次化网表,并导出最终的完整重映射网表文件。

10、本技术实施例提供的技术方案带来的有益效果至少包括:本技术通过引入网表分割步骤,将超大规模的原始网表文件解析为层次化的模块结构,并基于各模块的物理大小估算值进行分割,生成多个子网表文件。这一策略有效地将一个难以处理的巨型文件分解为多个可管理的小文件,从而从根本上规避了传统方法在处理超大文件时面临的内存溢出问题。

11、通过并行重映射步骤,将这些子网表文件基于负载均衡调度策略分配到多个并行任务中,并驱动目标器件映射工具以批量并行模式执行重映射。相比于传统串行处理方式,这种并行化处理机制极大地提升了处理效率。

12、通过收集所有重映射子网表文件,并根据网表层次结构中的标识信息自动匹配黑盒引用与完整模块定义,重建完整的层次化网表。这一自动化重合并机制保证了在分割和并行处理后,原始网表的逻辑完整性和层次结构能够被精确恢复,避免了人工干预可能引入的错误,确保了最终输出网表的正确性和可用性。

13、通过“分割-并行重映射-重合并”的整体技术构思,不仅有效解决了超大规模fpga网表文件在器件库重映射过程中面临的内存溢出和效率低下问题,而且在保证网表逻辑完整性的前提下,实现了自动化、高效率的器件库兼容性处理,为fpga设计验证领域提供了一种创新且实用的解决方案。