本技术涉及数据处理,特别是涉及一种寄存器传输级模拟加速的方法和相关装置。
背景技术:
1、寄存器传输级别(register transfer level,rtl)是描述数字电路行为的一个抽象层次,它主要关注寄存器之间的逻辑功能,而不是底层的逻辑门和连接拓扑结构。因此,rtl设计通常比门级设计更为简单和高效。rtl模拟是指对rtl的硬件设计进行仿真的过程。rtl模拟是硬件设计流程中的关键步骤之一,它有助于减少开发成本、缩短开发周期并提高设计的可靠性。随着硬件复杂性的不断增加,rtl模拟在硬件设计和验证中的重要性也日益凸显。
2、随着硬件设计的复杂度不断增加,rtl模拟所需的时间也在增长。长时间的仿真会显著影响开发进度,导致产品上市时间推迟、提高开发成本。为此,需要进行rtl模拟加速。目前可以结合参考模型和rtl级模型的优点,同时避免两者的缺陷,以保留文件为中介,实现模型间的状态保留与恢复运行。将参考模型或rtl级模型在特定时刻的软件可见状态按特定格式写入保留文件,在将要运行的模型上读取保留文件,恢复保留点时刻的软件可见状态为该模型的运行初态,以此为基础接力运行,实现激励运行过程在模型切换前后的连续性与一致性。
3、这种技术实现了两种不同层次模型之间的状态任意切换,可以在验证热点附近使用rtl级设计模拟运行,便于调试差错,而在其它非关键运行过程中通过状态保留恢复切换到参考模型上快速运行,从而大大加快了大型测试激励的模拟验证。然而在使用这个方法的过程中,需要在硬件描述语言(hardware description languages,hdl)层面修改代码,使用hdl编程不仅需要专业的硬件知识,硬件的模拟、调试往往也需要大量的时间。
技术实现思路
1、为了解决上述技术问题,本技术提供了一种寄存器传输级模拟加速的方法和相关装置,通过跳过大量重复的循环迭代,保留关键循环迭代,从而减少模拟时间,实现模拟加速。
2、第一方面,本技术实施例提供一种寄存器传输级模拟加速的方法,所述方法包括:
3、获取待执行模拟代码,所述待执行模拟代码具有对应的预设间隔值;
4、对所述待执行模拟代码进行综合编译,得到硬件描述语言代码;
5、基于所述硬件描述语言代码和所述预设间隔值,进行寄存器传输级模拟,得到模拟结果;在所述寄存器传输级模拟的过程中,基于所述预设间隔值跳过所述硬件描述语言代码中的重复循环迭代,对所述硬件描述语言代码中的部分循环迭代进行寄存器传输级模拟,所述部分循环迭代为所述硬件描述语言代码中跳过所述重复循环迭代得到的循环迭代。
6、在一种可能的实现方式中,所述待执行模拟代码中包括变量保存代码和变量还原代码,所述基于所述预设间隔值跳过所述硬件描述语言代码中的重复循环迭代,对所述硬件描述语言代码中的部分循环迭代进行寄存器传输级模拟,包括:
7、基于所述预设间隔值跳过所述重复循环迭代,并利用所述变量还原代码在所述重复循环迭代的位置读取保存的变量值进行寄存器传输级模拟,保存的变量值是利用所述变量保存代码对变量值进行保存得到的。
8、在一种可能的实现方式中,所述获取待执行模拟代码,包括:
9、对c功能模拟代码进行循环体划分,得到多个循环体;
10、为所述多个循环体中每个循环体确定变量值并插入所述变量保存代码,所述变量保存代码用于在c功能模拟过程中对所述变量值进行保存;
11、为所述多个循环体中每个循环体插入所述变量还原代码;
12、基于插入所述变量保存代码和所述变量还原代码的c功能模拟代码,得到所述待执行模拟代码。
13、在一种可能的实现方式中,所述方法还包括:
14、调用所述待执行模拟代码得到循环迭代执行信息;
15、基于所述循环迭代执行信息进行性能预测,得到性能结果。
16、在一种可能的实现方式中,所述基于所述循环迭代执行信息进行性能预测,得到性能结果,包括:
17、获取所述寄存器传输级模拟的过程中模拟的周期总数;
18、基于所述寄存器传输级模拟的过程中模拟的周期总数和所述循环迭代执行信息进行性能预测,得到所述性能结果。
19、在一种可能的实现方式中,所述方法还包括:
20、根据所述性能结果对所述预设间隔值进行调整,得到调整后的预设间隔值,所述待执行模拟代码具有所述调整后的预设间隔值。
21、第二方面,本技术实施例提供一种寄存器传输级模拟加速的装置,所述装置包括:
22、获取单元,用于获取待执行模拟代码,所述待执行模拟代码具有对应的预设间隔值;
23、编译单元,用于对所述待执行模拟代码进行综合编译,得到硬件描述语言代码;
24、模拟单元,用于基于所述硬件描述语言代码和所述预设间隔值,进行寄存器传输级模拟,得到模拟结果;在所述寄存器传输级模拟的过程中,基于所述预设间隔值跳过所述硬件描述语言代码中的重复循环迭代,对所述硬件描述语言代码中的部分循环迭代进行寄存器传输级模拟,所述部分循环迭代为所述硬件描述语言代码中跳过所述重复循环迭代得到的循环迭代。
25、在一种可能的实现方式中,所述待执行模拟代码中包括变量保存代码和变量还原代码,所述模拟单元,用于:
26、基于所述预设间隔值跳过所述重复循环迭代,并利用所述变量还原代码在所述重复循环迭代的位置读取保存的变量值进行寄存器传输级模拟,保存的变量值是利用所述变量保存代码对变量值进行保存得到的。
27、在一种可能的实现方式中,所述获取单元,用于:
28、对c功能模拟代码进行循环体划分,得到多个循环体;
29、为所述多个循环体中每个循环体确定变量值并插入所述变量保存代码,所述变量保存代码用于在c功能模拟过程中对所述变量值进行保存;
30、为所述多个循环体中每个循环体插入所述变量还原代码;
31、基于插入所述变量保存代码和所述变量还原代码的c功能模拟代码,得到所述待执行模拟代码。
32、在一种可能的实现方式中,所述装置还包括调用单元和预测单元:
33、所述调用单元,用于调用所述待执行模拟代码得到循环迭代执行信息;
34、所述预测单元,用于基于所述循环迭代执行信息进行性能预测,得到性能结果。
35、在一种可能的实现方式中,所述预测单元,用于:
36、获取所述寄存器传输级模拟的过程中模拟的周期总数;
37、基于所述寄存器传输级模拟的过程中模拟的周期总数和所述循环迭代执行信息进行性能预测,得到所述性能结果。
38、在一种可能的实现方式中,所述装置还包括调整单元:
39、所述调整单元,用于根据所述性能结果对所述预设间隔值进行调整,得到调整后的预设间隔值,所述待执行模拟代码具有所述调整后的预设间隔值。
40、第三方面,本技术实施例提供一种计算机设备,所述设备包括处理器以及存储器:
41、所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
42、所述处理器用于根据所述程序代码中的指令执行第一方面任一项所述的方法。
43、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质用于存储程序代码,所述程序代码被处理器执行时实现第一方面任一项所述的方法。
44、第五方面,本技术实施例提供一种计算机程序产品,所述计算机程序产品包括程序代码,所述程序代码被处理器执行时实现第一方面任一项所述的方法。
45、由上述技术方案可以看出,获取待执行模拟代码,待执行模拟代码具有对应的预设间隔值;对待执行模拟代码进行综合编译,得到硬件描述语言代码;基于硬件描述语言代码和预设间隔值,进行寄存器传输级模拟,得到模拟结果;在寄存器传输级模拟的过程中,基于预设间隔值跳过硬件描述语言代码中的重复循环迭代,对硬件描述语言代码中的部分循环迭代进行寄存器传输级模拟,部分循环迭代为硬件描述语言代码中跳过重复循环迭代得到的循环迭代。本技术通过跳过大量重复的循环迭代,保留关键循环迭代,从而减少模拟时间,实现模拟加速。
1.一种寄存器传输级模拟加速的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述待执行模拟代码中包括变量保存代码和变量还原代码,所述基于所述预设间隔值跳过所述硬件描述语言代码中的重复循环迭代,对所述硬件描述语言代码中的部分循环迭代进行寄存器传输级模拟,包括:
3.根据权利要求2所述的方法,其特征在于,所述获取待执行模拟代码,包括:
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述基于所述循环迭代执行信息进行性能预测,得到性能结果,包括:
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
7.一种寄存器传输级模拟加速的置,其特征在于,所述装置包括:
8.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序代码,所述程序代码被处理器执行时实现权利要求1-6任一项所述的方法。
10.一种计算机程序产品,所述计算机程序产品包括程序代码,所述程序代码被处理器执行时实现权利要求1-6任一项所述的方法。
