0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分析那些对仿真速度影响较大的编码风格

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-08-11 09:26 次阅读

做动态仿真验证通常会遇到要等待仿真结果的情况,特别是在调试某个测试用例的时候。很多时候,工程师们会自然地认为仿真速度大部分依赖于跑仿真任务的服务器本身的性能,以及EDA仿真工具的能力。而实际上,高效的验证环境以及代码质量也是影响仿真速度的关键因素。

另一方面,提高仿真速度这回事,对于芯片工程师来说本身就是“求人不如求己”。提高服务器机器性能意味着更大的资金投入,更高性能的仿真工具也不是一时半会能达成的。而探索更高效的验证方法学,构建更高执行效率的代码是当下就能做的事情。

本文的主要内容参考来自于Cliff Cummings在2019年DVCon会议上发表的文章:Yikes! Why is My SystemVerilog Still So Slooooow. 这篇文章主要探讨了SystemVerilog仿真速度跟Coding风格之间的关系,文章中有详细的实验目标、方法和数据结果呈现。本文将摘录和分析那些对仿真速度影响较大的编码风格。

使用向量操作代替单bit操作

仿真器在做完整向量计算的速度比单bit计算要高。根据参考文献的数据,在某款仿真工具下,最高提速可以达到3倍以上。 下面是一个例程,分别呈现不同的代码实现风格。

8fa84634-190e-11ed-ba43-dac502259ad0.png

避免在循环中实例化对象

这个技巧关系到内存的分配和回收。低效的内存管理会导致严重的cache miss、堆栈管理开销和垃圾回收开销,尽管这些都是操作系统帮我们做的。 当我们需要一种新的数据结构时,可以使用结构体struct就不用class,类的例化和垃圾回收都是开销。创建一个对象的时候,不要上来就是一个new,可以考虑是否可以重用之前创建过的对象。 如下例程,应用这个技巧在三款主流仿真工具上都能带来仿真速度收益,最高有超过一半的速度提升。

8fcb1038-190e-11ed-ba43-dac502259ad0.png

条件判断字符串处理

在仿真过程中不断地打印信息或者读写文件会导致仿真速度非常慢,毕竟调用计算机IO效率并不高。在UVM中有健全的report管理机制,可以根据设定的verbosity等级来判断是否需要打印信息出来。 除了信息打印,字符串的格式处理也是很大的开销。如果借用report的管理机制来判断是否有必要进行字符串格式处理,可以非常有效地提高仿真速度。 如下例程,带有条件判断的代码在三款主流仿真工具上都能带来仿真速度收益,而且这个收益非常大,达到了33倍~100倍。

8ff502b2-190e-11ed-ba43-dac502259ad0.png

减少不必要的端口采样或驱动

这是另一种减少不必要操作的技巧。要知道在UVM中,操作TLM analysis port是开销比较大的,因为端口的驱动行为,都会通过回调机制来执行关联到该端口的所有consumer的端口动作。理解这个实现机制,其实还得看看UVM的源码,这里就不做展开解析了。 此外,某些个analysis port是否连接到其他component是依赖于当前的验证环境的,如果根据analysis port的状态判断是否进行端口驱动,可以减少一些不必要的操作。 如下例程,在monitor的run_phase中根据其analysis port状态来进行端口采样和广播给其他组件,可以带来一部分的仿真速度收益。

901ac16e-190e-11ed-ba43-dac502259ad0.png

用回调函数代替低效的随机约束

SystemVerilog提供了很多种随机化变量和添加随机约束的方法,具体可以参考公众号的另外两篇文章《暗藏玄机的SV随机化》《五花八门的SystemVerilog随机约束》。在设计随机约束的时候,除了要确保约束不冲突(即约束有解)之外,还需要避免产生无效的约束解。 其实,SV已经提供了pre_randomize() / post_randomize()两个分别在求解随机值前后会执行的回调函数。灵活使用这两个函数可以避免一些非常低效的约束行为。 如下例程,使用post_randomize对随机后的数列进行排序,可以避免在约束中使用循环去限制每一个数列元素,从而获得数十倍的仿真速度提升。

903fb50a-190e-11ed-ba43-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真
    +关注

    关注

    50

    文章

    4070

    浏览量

    133552
  • 仿真器
    +关注

    关注

    14

    文章

    1017

    浏览量

    83722
  • bit
    bit
    +关注

    关注

    0

    文章

    48

    浏览量

    32012

原文标题:SystemVerilog高效仿真技巧

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ESD HBM测试差异较大的结果分析

    ESD HBM测试结果差异较大的原因,通常包括设备/仪器差异、‌校准和维护水平不同、‌环境条件差异、‌测试样本差异、‌测试操作员技能和经验差异以及测试方法选择的不同。
    的头像 发表于 11-18 15:17 375次阅读
    ESD HBM测试差异<b class='flag-5'>较大</b>的结果<b class='flag-5'>分析</b>

    这些电源常用仿真软件,你都知道吗?

    应用的器件建模和分析模组,配合MATLAB的其他工具可进行复杂的建模和数理分析。软件仿真精度高但仿真速度较慢,适合复杂数字控制与逻辑功能的实现。 ▍ Pspice Pspice是由美国
    发表于 10-25 14:20

    磁电编码器和光电编码器的区别

    磁电编码器和光电编码器是两种不同类型的编码器,它们在原理、结构、性能和应用领域上都有所不同。 磁电编码器和光电编码器的区别 1. 引言
    的头像 发表于 10-12 09:54 1050次阅读

    如何提升Pspice仿真速度

    OrCAD PSpice A/D和高级分析技术(A/A)结合了业界先进的模拟、模数混合信号以及分析工具,以提供一个完整的电路仿真和验证解决方案。
    的头像 发表于 10-09 15:15 425次阅读
    如何提升Pspice<b class='flag-5'>仿真速度</b>

    OPA820同样的建波电路mutisim仿真与TINA输出结果差异较大,原因是什么?

    同样的建波电路 mutisim 仿真与TINA 输出结果差异较大,原因是什么?如何调整电路才能让两个软件仿真结果一致,实现检波?
    发表于 08-07 07:45

    旋转编码器控制电机速度

    旋转编码器控制电机速度
    发表于 06-24 09:16 4次下载

    怎么用编码器控制变频器速度

    编码器控制变频器速度是一种常见的工业自动化控制方式,它通过编码器实时监测电机的转速、位置等信息,并将这些信息反馈给变频器,从而实现对电机的精确控制。本文将详细介绍编码器控制变频器
    的头像 发表于 06-23 15:22 2587次阅读
    怎么用<b class='flag-5'>编码</b>器控制变频器<b class='flag-5'>速度</b>?

    怎么用编码器控制变频器速度

    编码器控制变频器速度是一种常见的工业自动化控制方式,它通过编码器实时监测电机的转速、位置等信息,并将这些信息反馈给变频器,从而实现对电机的精确控制。本文将详细介绍编码器控制变频器
    的头像 发表于 06-17 15:11 1327次阅读

    基于PSpice System Option接口的直流电机控制系统设计

    概述基于仿真速度和结果精度之间的权衡,在设计的第一阶段使用高精度模型不是一种有效的方法。高精度模型会使仿真速度变的非常慢,建议在设计过程中的每个阶段使用合适的模型。可能会发现,合适的模型会更容易优化
    的头像 发表于 04-29 08:12 576次阅读
    基于PSpice System Option接口的直流电机控制系统设计

    CAE热仿真中的芯片物性等效建模方法分析

    的特性、精度和仿真速度有着不同要求。因此,根据需求提供满足一定要求的仿真模型是建模工作的关键。 本文在于研究用 ANSYS icepak/Flotherm建模的时候,主要探讨对芯片等材料属性的选取与设置,以及本体模型如何构建。文中给出相关
    的头像 发表于 04-28 09:25 1078次阅读
    CAE热<b class='flag-5'>仿真</b>中的芯片物性等效建模方法<b class='flag-5'>分析</b>

    电路仿真分析的方法步骤

    电路仿真分析是一种通过计算机软件模拟电路的工作原理和性能的方法。它可以帮助电路设计师在设计过程中更好地了解和预测电路的行为,减少实际的试错成本。本文将介绍电路仿真分析的方法步骤。 第一
    的头像 发表于 04-21 10:25 2323次阅读

    MATLAB电路仿真时间要考虑那些因素

    MATLAB电路仿真是一种常用的工具,用于模拟和分析电子电路的性能。在进行电路仿真时,需要考虑各种因素,以确保仿真结果的准确性和可靠性。下面是一些需要考虑的主要因素: 电路拓扑结构:电
    的头像 发表于 04-21 09:27 732次阅读

    STM32F429做的PIL仿真速度非常慢的原因?

    ,但是速度非常慢。不知道是否STM32F429的参数设定有问题。有没有哪位大神做过相关的仿真。补充下:仿真中控制器开关频率是5000khz,采样时间为5e^-5s。 先谢谢了!
    发表于 04-11 07:28

    使用仿真模型进行拓扑分析

    扩展建模技术,安森美(onsemi)使仿真精度进一步提升到更高的水平,此前我们为大家介绍了物理和可扩展仿真模型功能以及使用Cauer网络仿真热行为及评估各项因素对开关损耗的影响,本文将为大家带来使用物理和可扩展
    的头像 发表于 01-05 10:04 943次阅读
    使用<b class='flag-5'>仿真</b>模型进行拓扑<b class='flag-5'>分析</b>

    ADXL345各轴加速度值有较大波动的原因?

    ADXL345各轴加速度值有较大波动 1、如静止不动,其测得的各轴加速度值有近30%-50%的波动 2、芯片转换个位置,静止不动,各轴测的加速度值有十分大的变化,为什么。 难道芯片
    发表于 01-02 08:22