引言
随着集成电路设计复杂度的不断提升,硬件仿真系统在现代芯片设计流程中扮演着越来越重要的角色。基于FPGA(现场可编程门阵列)的商用硬件仿真系统因其灵活性、全自动化、高性能和可重构性,成为验证大规模集成电路设计的重要工具。然而,随着设计规模的扩大和复杂度的增加,硬件仿真系统的编译过程面临着诸多挑战。本文旨在探讨基于FPGA的硬件仿真系统在编译过程中所遇到的关键问题,并提出相应的优化策略。
硬件仿真的编译流程涉及多个步骤,从硬件描述语言(HDL)的编译到最终生成FPGA比特流,每个步骤都对最终仿真的性能和编译时间有着重要影响。本文将详细分析这些步骤中的优化挑战,并提出一些可能的解决方案,以帮助设计者在保证仿真性能的同时,最大限度地减少编译时间。
1、 硬件仿真的编译流程
硬件仿真的编译流程是一个复杂的过程,包括多个步骤:预处理、综合、分割、布局布线、引脚分配、技术映射、FPGA布局和布线,直到最终为每个FPGA生成比特流。它起始于由Verilog、SystemVerilog或VHDL等硬件描述语言编写的设计代码。这些代码虽然描述了电路的功能和行为,但并不能直接用于FPGA仿真,因此需要经过一系列步骤的转换和优化。
在编译过程中,EDA工具需要进行逻辑重构,将设计中不可合成的部分转换为可合成的电路。例如,SystemVerilog中的断言(assertions)和时序检查(timing checks)等高级语言特性需要被转换为等效的硬件电路。此外,硬件描述语言与外部环境的交互(如DPI(Direct Programming Interface)功能、系统任务或系统功能)也需要通过定义良好的仿真器接口(如SCE-MI(Standard Co-Emulation Modeling Interface))转换为特殊的电路模块。
编译过程其实就是将硬件描述语言转换为具有层级网络拓扑的多FPGA硬件仿真系统中的实现。在整个编译流程中,最大化运行性能和最小化编译时间是关键挑战。EDA供应商提供的硬件仿真系统通常提供多种优化选项和技术,以帮助设计师在编译过程中平衡这两个方面。例如,通过优化逻辑重构、全局布局和布线等步骤,可以减少编译时间并提高仿真性能。同时,合理的引脚分配和技术映射也可以确保设计在目标FPGA上的正确实现和高效运行。接下来我们将重点一一分析。
2、 综合挑战(Synthesis)
在基于FPGA的硬件仿真领域,综合(Synthesis)是将高级硬件描述语言(HDL)精确转换为底层逻辑网表的关键步骤。此过程不仅要求将设计准确映射到FPGA的逻辑资源上,还需应对ASIC设计与FPGA架构间存在的本质差异。以下将详细探讨综合过程中面临的主要挑战,并提出相应的优化策略。
2.1逻辑优化与资源分配
面对大型设计(如200亿门级别),逻辑优化对于提升性能至关重要。优化策略包括:
持续传播与无负载消除:通过传播信号值并消除未使用的逻辑元素,以减少冗余,提升设计效率。
因式分解:将复杂的逻辑表达式分解为更简单的部分,便于FPGA资源的高效利用。
重新定时:调整逻辑操作的执行时序,以优化整体性能和资源占用。
在资源分配方面,需平衡多种资源类型,如内存(DDR、BRAM、LUTRAM、FF)和算术运算单元(DSP、进位链、LUT)。由于FPGA资源有限,且不同资源在性能、功耗和面积方面存在差异,因此需根据设计需求进行精心选择。这通常涉及对设计需求的深入理解及对FPGA架构的熟悉。
2.2时钟域处理
ASIC设计与FPGA设计在时钟域处理上存在显著差异。ASIC具有实现复杂时钟结构的灵活性,而FPGA则依赖专用时钟布线资源来保证低时钟偏差。因此,在处理FPGA上的ASIC设计时,需特别注意时钟管理:
派生时钟的优化:识别并优化组合门控时钟和顺序生成时钟,以减少对FPGA时钟资源的占用。这通常涉及对时钟信号的重新分配和门控逻辑的优化。
低功耗设计的考虑:在低功耗设计中,许多时钟由使能控制电路进一步门控。因此,需考虑断电电路对时钟的影响,并采取相应的优化措施。
2.3控制集缩减
FPGA中的LUT和FF通常按固定分组(如Xilinx的SLICE或Altera的LAB)组织。这些分组共享相同的控制信号(时钟、同步启用、设置/重置)。若技术映射后的网表包含过多具有唯一控制信号的触发器,将导致控制集问题,增加资源占用和布局布线难度。
为解决这一问题,可采取以下策略:
控制信号共享:在可能的情况下,将具有相同控制信号的触发器组合在一起,以减少唯一控制集的数量。这有助于降低资源占用并简化布局布线过程。
优化技术映射:在映射过程中考虑FPGA架构特点,优化逻辑分配以减少控制集冲突。例如,可尝试将逻辑更紧密地组织在一起,以减少跨不同控制集的逻辑连接。
通过实施上述优化策略,可显著提升FPGA硬件仿真的性能和效率。这将有助于缩短设计周期、降低开发成本并提升产品质量。
3、 分割挑战(Partitioning)
分割问题是将DUT划分为数百个部分,以便每个部分都可以在FPGA内实现,而不会超过预先指定的逻辑利用率。传统上,分割的目标是最小化切割尺寸,学术界和工业界都认为hMetis有效地解决了这个问题。因此,我们将列出基于FPGA的硬件仿真中特定的分割问题的挑战如下。
(1) 对于具有数十亿个门的DUT,在构建用于分割的超图时,必须尽可能多地利用设计层次。一个大小合理、接口信号数量最少的设计实例通常被选择为一个不可分割的块,并在超图中表示为一个节点进行划分。对于强调性能优化的硬件仿真,必须扩展此块选择标准以考虑性能方面。然而,在不形成分割的情况下识别时序关键块需要与最终时序良好相关的有效时序估计。
(2) 对于强调高性能的硬件仿真,切割大小并不是仿真性能的准确指标。与切割中的每个信号相关的延迟取决于两个因素。第一个因素是该切割信号布线经过的FPGA间跳数。FPGA间越多的跳数通常意味着越大的延迟。延迟的第二个因素是该切割信号布线中每个FPGA间的TDM比。不幸的是,在布线完成之前,这两个因素的确切值都是不可用的。需要发明一个足够准确的延迟估计,以便分割器朝着性能目标进行优化。此外,这个延迟估计的计算应该足够快,这样它就不会显著减慢分割时间。
(3) FPGA P&R的成功需要合理的利用逻辑约束来进行分割。然而,这往往不足以保证FPGA P&R的成功。因此,我们希望找到一个区域分布尽可能均匀的分割,但代价是分割质量的下降,例如切割尺寸的增加。这种FPGA-P&R友好的分割应该在不增加太多分割时间的情况下获得。
(4) 逻辑复制已被证明在提高性能方面是有效的。基于给定的分割结果,我们可以进行时序分析,提取关键路径信息,并根据FPGA P&R的逻辑利用率约束决定复制的逻辑以获得更好的性能。这里可以应用性能驱动的逻辑复制技术。此外,如果分割者能够预见逻辑复制对性能优化的潜力,并考虑到逻辑复制在分割过程中对性能的影响,那么进一步的改进是可能的。
4、 全局布局挑战(Routing)
在硬件仿真系统中,全局布局(Routing)是紧随分割(Partitioning)之后的关键步骤,尤其在处理基于FPGA的大型设计时,布局问题尤为复杂。
布局被视为分割问题的扩展,它要求不仅确定逻辑实例的归属分割,还需明确这些实例在FPGA上的物理位置。这涉及性能优化的多重挑战,如减少布线拥塞、平衡信号跳数等。
桥接FPGA连接不同板或单元中的FPGA,增加了布线的复杂性。由于桥接FPGA通常面临更多的布线跳过,因此最好在桥接位置布局逻辑较少的分割,以避免布线拥塞。然而,这又与性能优化相冲突,因为更多信号连接到其他板或单元的分割能减少布线跳数。因此,需在性能与布线易用性间做出权衡。
布线图是布线算法遍历以找到连接路径的基础。在构建布线图时,需考虑物理FPGA之间的连接表示,这并非易事。为了优化性能,需将物理FPGA之间的引脚对进一步分组,以便同一组的引脚对由具有类似时序关键性的布线共享。这种分组需平衡性能与布线编译时间,且每次布线拆分和重新布线时都需调整引脚对的拆分,以反映延迟变化。
性能不稳定是布线问题的另一大挑战,源于引脚对分裂变化导致的TDM比率大幅波动。此外,布线资源无容量限制,但出于性能考虑,应限制使用相同引脚对的布线数量。这使得现有的基于协商的布线算法无法直接应用。同时,共享同一引脚对的所有布线具有相同的TDM延迟,这增加了布线优化的复杂性。
由于布线延迟取决于其他布线的特性,增量定时更新在传统布线问题中的适用性降低。在布局过程中,改变共享引脚对的布线延迟可能需要更新多个布线的延迟,而非仅限于被撕裂和重新布线的信号。
全局布局在大规模硬件仿真系统的编译过程中面临多重挑战。为了应对这些挑战,需开发新的布局算法和技术,以平衡性能、布线易用性和编译时间。同时,还需考虑如何有效处理性能不稳定、无容量限制的布线资源以及增量定时更新等独特问题。
5、 引脚分配挑战(Pin Assignment)
引脚分配是硬件仿真系统编译过程中的关键步骤,发生在布线完成后。其核心任务包括信号分组与引脚映射,旨在优化仿真性能并确保FPGA布局与布线(P&R)的成功率。
信号分组涉及将具有相同TDM(时分复用)比率的布线平均分配到不同的LVDS(低压差分信号)引脚对上。例如,若布线步骤产生多条TDM比率相同的布线,这些布线需被均匀分组,每组共享同一LVDS引脚对。这一步骤对于平衡信号负载和减少布线拥塞至关重要。
引脚映射决定每个信号组中的信号应使用哪个物理LVDS引脚对进行传播。这要求了解物理FPGA内LVDS引脚的位置及两个连接FPGA之间LVDS引脚对的连接性。例如,在包含多个线性排列管芯的FPGA中,引脚映射需考虑管芯对之间的LVDS引脚对可用性,并尽量减少管芯边界交叉次数,以降低布线传播延迟并提高仿真性能。以上挑战如何解决?
信号组顺序确定:在包含多个FPGA和LVDS引脚对连接的设计中,确定执行引脚分配的信号组最佳顺序是复杂的。这要求综合考虑性能优化和布线拥塞避免。
并行引脚分配:对于大型设计,并行执行引脚分配以提高效率是必要的。然而,实现最大并行性同时保持最小性能损失是一个挑战,需要采用有效的多线程策略。
时序图构建:为大型设计和更新时间构建完整的时序图非常耗时。因此,在时间预算限制下解决并行引脚分配问题是必要的。
FPGA P&R成功率:引脚分配结果应确保FPGA P&R的高成功率。这要求避免在同一FPGA内非常接近地使用过多具有高TDM比的信号组,以防止本地布线拥塞。
6、 FPGA P&R面临的挑战
FPGA P&R过程是决定FPGA设计时间和成功率的关键因素。这一过程受到多种因素的影响,主要包括FPGA内部路由结构的连接性、FPGA供应商的封装、布局和布线算法,以及网表属性如总输入引脚、平均扇出、再收敛路径、Rent指数和常数等。这些因素共同作用于FPGA P&R过程,影响其实施的效率和成功率。
为了准确描述和预测上述模型中的每一个因素,我们需要采用综合的方法。首先,对于FPGA内部路由结构的连接性,我们需要深入了解FPGA的架构特性,包括其逻辑单元、布线资源和互连模式等。这有助于我们评估不同设计的布线需求和资源利用率。其次,针对FPGA供应商的封装、布局和布线算法,我们需要分析这些算法的工作原理和性能特点,以便更好地理解和优化它们在实际应用中的表现。最后,对于网表属性,我们需要利用先进的EDA工具来提取和分析这些属性,以便在P&R过程中做出更明智的决策。
在并行运行FPGA P&R任务时,为了最大限度地减少FPGA编译时间,我们可以采取以下优化策略:
一方面,利用机器学习技术进行早期预测和反应。机器学习算法可以通过分析历史数据和模式来预测潜在的P&R失败,并在早期阶段采取措施进行干预。例如,我们可以训练一个分类模型来识别可能导致P&R失败的特定设计特征或条件,并在检测到这些特征时自动调整布局或布线策略。这种方法可以显著提高P&R过程的鲁棒性和效率。
另一方面,实施自适应的P&R策略以最大化成功机会。在并行运行多个P&R任务时,我们可以监控每个任务的进展和性能,并根据实时反馈来调整策略。例如,如果某个任务进展缓慢或遇到难以解决的问题,我们可以暂停该任务并启动更多的P&R工作来探索其他可能的解决方案。这种自适应的方法可以确保我们在有限的时间内获得最大的成功机会,同时减少不必要的资源消耗和时间浪费。
7、 小结
大规模硬件仿真系统的编译流程是一个涵盖综合、分割、布局布线、引脚分配、技术映射及FPGA布局布线等多个紧密相连且至关重要的环节,直至最终生成适用于每个FPGA的比特流。这一系列步骤不仅彼此依存,而且各自都承载着独特的挑战,这些挑战对硬件仿真系统的性能与可靠性有着直接且深远的影响。
为了应对这些挑战,我们必须全面审视设计规模、性能标准、资源约束以及算法复杂度等多个维度,不断探索和优化相关技术。正是基于这样的背景,硬件仿真技术不断取得突破,逐步克服了这些难题,引领硬件仿真系统朝着更高效率与更强可靠性的目标迈进。
在这一过程中,思尔芯新一代国产硬件仿真系统就针对编译过程做了一系列的技术优化。该系统凭借其灵活的2亿至96亿门配置、高达4-6MHz的系统运行性能,为用户提供了应对复杂芯片设计仿真需求的强大支持。同时,其高效的全自动编译技术与增量编译加速功能,更是将编译效率提升至8000万门/小时以上,为设计师赢得了宝贵的时间资源,进一步提升了硬件仿真系统的实用性和竞争力。这一系列的创新亮点,不仅展现了思尔芯在硬件仿真技术领域的深厚积累,也为整个行业的发展注入了新的活力。
更多白皮书,可登录思尔芯官网www.s2ceda.com点击“热门资源-技术文档”下载。
关于思尔芯 S2C
思尔芯(S2C)自 2004 年设立上海总部以来始终专注于集成电路 EDA 领域。作为国内首家数字 EDA 供应商,公司业务已覆盖架构设计、软件仿真、硬件仿真、原型验证、数字调试、EDA 云等工具及服务。已与超过 600 家国内外企业建立了良好的合作关系,服务于人工智能、高性能计算、图像处理、数据存储、信号处理等数字电路设计功能的实现,广泛应用于物联网、云计算、5G 通信、智慧医疗、汽车电子等终端领域。
公司总部位于上海,并建立了全球化的技术研发与市场服务网络,在北京、深圳、西安、香港、东京、首尔及圣何塞等地均设有分支机构或办事处。
思尔芯在 EDA 领域的技术实力受到了业界的广泛认可,通过多年耕耘,已在数字前端 EDA 领域构筑了技术与市场的双优势地位。并参与了我国 EDA 团体标准的制定,承担了多项国家及地方重大科研项目,获国家级专精特新“小巨人”企业、国家工业软件优秀产品、上海市企业技术中心等多项荣誉资质。
了解更多详情,请访问www.s2ceda.com