摘要
Questa One Sim平台的SmartCompile日渐成为战略性解决方案,可显著缩短从初始编译到最终仿真的整体验证周期,提供一整套高效工具,大幅缩短验证周期。通过整合高级功能并优化编码风格,SmartCompile实现了更高效的设计流程,能够直接应对现代数字设计开发所面临的挑战。
议程
序言
传统仿真流程
SmartCompile概述
-主要功能
SmartCompile功能集:解决现代设计验证挑战
1.增量编译与优化
2.独立测试加载
3.AutoPDU(自动预优化设计单元)
4.缓存库流程
5.动态重配置
6.基于网格的分布式优化
7.独立设计二进制文件生成
结语
序言
在如今的半导体行业中,设计工程师面临着越来越大的压力:既要交付日益复杂的数字设计,又要满足严苛的上市时间要求。随着设计复杂性呈指数级增长,传统的编译与仿真工作流程往往成为影响开发进度的瓶颈。大家普遍认为,这些瓶颈是由每次迭代的仿真运行时间所导致的。然而,对复杂设计进行仿真运行配置所花费的时间增加,也是一个重要因素。配置时间乘以验证迭代次数,在整个验证流程中占据了相当大的比重。
虽然仿真运行占据了验证过程的大部分时间,但每次设计编译与展开过程累积起来,同样在整个验证周期中占据了相当可观的比重。任何能够减轻这一开销的方法,累加到整个验证周期中,都能显著地节省时间和计算资源。
面对这些挑战,SmartCompile引入了一套创新工具来解决这一关键问题,将新功能与优化的编码风格改进相结合。这一综合解决方案简化了从编译、优化到仿真的整个设计流程,使工程团队能够在保持设计完整性的同时大幅缩短周转时间。SmartCompile改变了传统的设计编译与仿真方法,帮助数字设计和验证工程师加速开发周期,在当今快节奏的数字市场中获得竞争优势。
传统仿真流程
在常规的验证环境中,每当对设计或验证环境进行修改时,就需要对修改过的文件进行重新编译。幸运的是,大多数工具已经具备了一些功能,可以只编译修改过的文件,而无需重新编译未修改的文件。但在传统流程中,优化和展开阶段却无法做到这一点。即使只对设计或测试平台做了很小的改动,也必须对整个设计进行重新优化和展开。对于小型设计而言,这可能不是什么大问题;但随着设计复杂性持续增加,仿真启动前的准备时间正在成为许多设计和验证工程师的瓶颈。如果每次编译-优化-展开周期都要花半天时间,那么每天只能做两三次设计更改。大部分时间都花在仿真前的准备工作上,之后才能进行有效的设计调试。在持续集成(CI)和持续部署(CD)流程中,这一问题更加严重,因为代码提交的频率更高,每次提交都可能会触发整个流程的重新运行。在这种情况,不仅需要花时间等待编译过程完成,还会消耗大量计算资源——无论是本地资源还是云端资源,这都会显著增加整个验证周期的成本。
SmartCompile概述
SmartCompile是Questa One Sim用于加速硬件设计与验证工作流程的解决方案。与传统方法不同,SmartCompile通过一系列完善的功能特性改变设计流程,从而提高测试平台和RTL的开发与调试效率。

主要功能
1.面向开发的架构
–优化每日多轮编译-优化-仿真循环
–实现设计的快速迭代
–支持仿真定位到特定事件(断点、事务)
2.高级功能集成
–增量编译与优化
–独立测试加载
–AutoPDU
–面向大型设计的缓存库流程
–动态重配置
–基于网格的分布式优化
–生成独立设计二进制文件
3.效率提升
–利用缓存缩短初始构建时间
–支持编译任务的并行处理
–提供后续构建增量编译
–支持按测试灵活切换设计模块
4.资源优化
–拆分单次编译为多个并行进程
–按需生成调试数据
–复用设计展开文件
–动态切换RTL和门级仿真模块
SmartCompile功能集:
解决现代设计验证挑战
首先,让我们探讨SmartCompile在编译过程各阶段所提供的帮助。
使用SmartCompile分而治之

现在,我们逐一了解每项SmartCompile功能如何解决特定问题及其适用场景。
1.增量编译与优化
问题:
当设计局部修改时,需要增量编译和优化机制,以避免全量重新编译和优化
解决方案:
利用基于时间戳的增量编译流程
功能特性包括:
–智能文件变更检测
–头部注释改动容错机制
–文件路径管理
技术细节:
使用vlog/vcom命令加上-tsincr选项即可启用此功能。若使用qrun命令,该功能自动启用,无需额外开关

2.独立测试加载
问题:
每当添加新测试用例时,用户必须重新编译整个测试平台,并重新执行优化和设计展开流程
解决方案:
仅对新测试用例进行编译和优化
复用基础的编译、优化和设计展开文件
显著缩短测试开发和调试时间
技术细节:
独立测试加载的主要优势体现在编译、优化和设计展开阶段

以下介绍在运行多个测试用例下的传统流程。每个测试用例都需要完整的编译、优化和展开过程(如下所示):

在独立测试加载流程中,用户只需编译、优化和展开一个可复用的基础测试用例:

基础测试创建完成后,就可以编译和优化新测试,并复用基础测试(如下所示):

3.AutoPDU(自动预优化设计单元)
问题:
随着设计规模增大,优化所需时间更长
对于这些大规模设计,单一优化流程效率低下,因为即使对设计进行微小改动也需要重新优化整个设计
解决方案:
自动将设计划分为多个PDU(预优化设计单元);仅编译和优化被修改的部分,而非整个设计
支持网格化分布处理,用于编译与优化流程
优势:
–并行处理设计单元
–缩短优化时间
–高效处理大规模设计
技术细节:
AutoPDU的优势主要体现在优化阶段,可减少整体优化与加载时间,提升吞吐量
AutoPDU流程:
–初始构建:创建PDU并在网格上运行优化
–增量构建:加载未修改PDU,仅重新优化有代码变更的PDU
采用AutoPDU进行初始构建

后续构建(代码修改后):仅进行增量编译和优化

AutoPDU网格化支持
–使用网格支持,可在初始构建阶段实现PDU的网格并行优化

4.缓存库流程
问题:
当使用代码仓库工作时,新建工作区需要大量构建时间
在使用虚拟机(VM)进行调试或采用CI/CD流程时尤为明显——每次新建VM或CI/CD提交都会触发完整流程的重新运行
解决方案:
创建已编译PDU库的“缓存”,用户可将其复制到工作区,而无需重新运行整个编译与优化阶段
优势:
–消除漫长的初始构建时间
–提供后续构建增量编译
–特别适用于SoC或其他大规模设计
技术细节:
缓存库流程在编译与优化阶段带来收益(如下所示):

持续集成与缓存库流程:
–缓存库流程支持持续集成。持续集成流程可自动创建并维护包含最新代码变更的PDU库
–用户可直接将预编译的PDU拉入本地工作区,避免对新工作区进行不必要的代码编译与优化步骤
–系统智能更新PDU文件路径至用户本地区域,确保仅需编译新变更的代码

5.动态重配置
问题:
用户根据仿真类型和仿真层次的不同,需要对同一设计模块进行不同的配置
当针对某种配置替换相应的设计模块时,需要对整个设计进行重新编译和重新优化
解决方案:
提供一种机制,可在运行时“动态”插入/移除模块;用户可以编译和优化同一模块的不同版本,然后在设计展开阶段选择正确的配置
效果:
–用户可以灵活地为每个测试切换模块
–提升性能,减少资源占用
技术细节:
动态重配置在设计展开与仿真阶段带来收益:
–可按测试需求轻松切换模块
–提升性能,减少资源占用

用户可在仿真时选择配置

6.基于网格的分布式优化
问题:
大型设计需要大量的优化时间
任何能加速该过程的技术都极具价值
解决方案:
将单个优化任务拆分为多个PDU
利用网格计算并行运行优化过程
效果:
–初始构建:网格式运行AutoPDU,缩短整体初始构建时间
–增量构建:仅对代码变更的PDU运行优化过程
技术细节:
分布式优化流程的优势体现在代码生成阶段。它将qopt代码生成分布到多台网格机器上,既提高了并行度又不超出单机内存和核数限制,加快运行速度

7.生成独立设计二进制文件
问题:
调试数据生成与优化阶段耦合
这导致调试数据处理效率低下
解决方案:
将调试数据生成过程从优化阶段剥离,以减少优化时间
优势:
–按需生成调试数据
–调试流程更高效
–减少资源占用
技术细节:
该流程的优势体现在设计二进制文件生成阶段:它将qopt与设计二进制文件生成器分离,仅在必要时生成设计二进制文件(或与qopt并行运行),提升qopt吞吐量

完整SmartCompile解决方案采用“分而治之”策略,能够减少整体仿真设置时间。各阶段减少时间的方式如下所示:

结语
SmartCompile作为一项变革性解决方案应运而生,可直接应对现代硬件设计与验证工作流程中的关键挑战。该技术在改善总周转时间和整体效率方面取得了多项突破性成果:
1.优秀的编译架构
针对单日内多次编译-优化-仿真循环进行优化
通过创新方法实现快速设计迭代
支持增量编译功能,提高后续构建效率
2.性能优化
通过智能缓存库机制消除长时间初始构建瓶颈
利用网格计算实现并行处理和分布式优化
对复杂SoC和大规模设计尤为有效
3.资源管理
在提升性能的同时减少资源使用
智能文件变更检测和代码变更处理
集成调试数据生成与优化阶段,提升效率
4.业务影响
在测试开发与调试阶段实现显著的时间节省
为需要大量优化的设计提供可扩展解决方案
提供全面的效率改进,直接影响开发周期
SmartCompile代表了数字设计开发工具的重大进步,提供了一个兼具速度、效率与可扩展性的强大解决方案。其创新功能与架构改进,对于那些希望在设计过程中保持高质量标准的同时加速开发周期的企业而言,可谓弥足珍贵。
全部0条评论
快来发表一下你的评论吧 !