CN104899369A - 一种利用perl脚本的仿真器多线程运行方法 - Google Patents
一种利用perl脚本的仿真器多线程运行方法 Download PDFInfo
- Publication number
- CN104899369A CN104899369A CN201510291677.XA CN201510291677A CN104899369A CN 104899369 A CN104899369 A CN 104899369A CN 201510291677 A CN201510291677 A CN 201510291677A CN 104899369 A CN104899369 A CN 104899369A
- Authority
- CN
- China
- Prior art keywords
- multithreading
- emulator
- perl
- test
- operation method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012360 testing method Methods 0.000 claims abstract description 33
- 239000013598 vector Substances 0.000 claims abstract description 16
- 230000005284 excitation Effects 0.000 claims description 13
- 238000004088 simulation Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 abstract description 10
- 238000013461 design Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008140 language development Effects 0.000 description 1
- 238000001558 permutation test Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及仿真器的,特别涉及一种利用PERL脚本的仿真器多线程运行方法。本发明利用Perl脚本使单线程仿真器支持多线程UVM测试向量并行运行,通过使用最新的Perl编译器的多线程调用模块,使原本只支持单线程,单CPU的逻辑仿真器,能够同时启动多线程,调用多CPU同时工作,并能在UVM验证环境中同时运行多个测试向量,从而加快验证收敛速度。
Description
技术领域
本发明涉及仿真器的,特别涉及一种利用PERL脚本的仿真器多线程运行方法。
背景技术
UVM是芯片验证业界最新研发的一种验证方法学。工程师用它可创建坚实、可重用、具互操作性的验证组件和验证平台。UVM提供基于SystemVerilog语言开发的一套库函数,工程师通过调用库可以省去自己从零开始开发验证环境的麻烦。
UVM与SystemVerilog为验证人员开发面向对象的验证环境提供了极大方便,使得验证环境以及测试向量的开发效率大幅提高。然而随之而来的是大量的测试向量需要在仿真器上运行,大的芯片验证项目会有几千个测试向量,而且这些测试向量使用不同的随机数进行随机化测试,需要消耗大量的计算资源以及计算时间。大部分芯片设计所用的服务器都具有多个计算单元,并且支持通过发布式任务提交将计算任务提交至不同服务器上。新的EDA软件也大多支持多处理器协同运算,所以能够较快的对大量测试激励进行仿真。但是老版本的EDA工具有些并不支持多线程运行,使用这样的EDA仿真工具,就无法发挥新的硬件平台的效率。所以对于不愿意升级到最新版EDA工具,但是需要提高仿真效率的团队,就需要通过另外途径来运行多线程。
Perl语言是一种广泛应用的脚本语言。Perl 是一种能完成任务的语言。从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。Perl 既强大又好用,所以它被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从图形处理到文档处理,从数据库操作到网络管理。很多人用 Perl 进行快速处理那些很难分析或转换的大批量数据。新版本的Perl,在编译器安装时,可以选择安装支持多线程功能,此功能对多处理器的平台的应用开发,有巨大帮助。
Perl语言也广泛应用在集成电路的设计开发的各个环节,一个完善的集成电路开发环境中,一般会有大量的Perl程序用来自动产生设计环境,自动分析各设计步骤输出的报告,并提交设计代码以及文档等。
发明内容
为了解决现有技术的问题,本发明提供了一种利用PERL脚本的仿真器多线程运行方法,其通过使用最新的Perl编译器的多线程调用模块,使原本只支持单线程,单CPU的逻辑仿真器,能够同时启动多线程,调用多CPU同时工作,并能在UVM验证环境中同时运行多个测试向量,从而加快验证收敛速度的方法。
本发明所采用的技术方案如下:
一种利用PERL脚本的仿真器多线程运行方法,包括以下步骤:
A、先对运行环境进行基本设置;
B、对所有源文件进行编译;
C、借助Perl语言的多线程能力,启动多个仿真进程,分别运行不同的测试向量;
D、多线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。
步骤A中,仿真器只启动一个线程。
步骤A中,所述的基本设置包括运行目录的准备,初始化文件的生成,源代码文件的检出。
步骤B中,所述的源文件包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码。
本发明提供的技术方案带来的有益效果是:
本发明利用Perl脚本使单线程仿真器支持多线程UVM测试向量并行运行,通过使用最新的Perl编译器的多线程调用模块,使原本只支持单线程,单CPU的逻辑仿真器,能够同时启动多线程,调用多CPU同时工作,并能在UVM验证环境中同时运行多个测试向量,从而加快验证收敛速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术下单线程运行UVM测试向量的流程图。
图2为现有技术下利用多线程仿真器多线程运行UVM测试向量的流程图。
图3为本发明的利用Perl脚本使单线程仿真器支持多线程UVM测试向量并行运行的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
如图1,为传统的仿真器单线程运行方法:假设需要运行n个测试激励,第一步先对运行环境进行基本设置,包括运行目录的准备,初始化文件的生成,源代码文件的检出等。第二步对所有源文件,包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码进行编译。第三步,单线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。所有以上步骤都基于单线程进行执行,这是最传统的模式,对仿真器软件以及硬件平台,都没有特殊要求,但是执行需要较长时间。
如图2,为现有技术下多线程仿真器的多线程运行方法:
假设EDA软件以及硬件平台都支持多线程,需要运行n个测试激励,第一步先对运行环境进行基本设置,包括运行目录的准备,初始化文件的生成,源代码文件的检出等,这步只启动一个线程。第二步对所有源文件,包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码进行编译,这一步可以启动多个线程。第三步,多线程线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。第一步以及最后一步基于单线程进行执行,中间的编译,仿真都启动多线程,这对仿真器软件以及硬件平台,都要求有多线程支持,执行时间大为缩短。
本实施例针对硬件平台支持多线程,但是EDA仿真软件只有单线程的情况,可以使用如图3所示的方法,在仿真的步骤借助Perl语言的多线程能力,启动多个仿真进程,分别运行不同的测试向量,虽然每个仿真进程都是单线程的,但是由于多个仿真进程同时启动,也大大加速了仿真的进度。
以下是为使用Perl具体实现多进程仿真的代码示例:
首先最外层循环将所有的测试激励以及随机数种子0-9都遍历一遍。内层程序中,先检测一下正在运行的线程有哪些,如果正在运行的线程的数目小于可以并行运行的线程数目nb_process,我们就以当前的随机数种子和测试激励名为参数,再启动一个子进程,并且记录下来。如果正在运行的线程的数目不小于可以并行运行的线程数目nb_process,我们则每隔一个时间周期ck_interval检测一次正在运行的进程数,直到正在运行的线程的数目小于可以并行运行的线程数目nb_process,我们再插入一个进程。通过以上操作,我们可以保证在所有仿真结束前,总会有nb_process个进程在同时执行。这里的nb_process一般设置为当前硬件平台支持的最大线程数目。
通过以上的Perl脚本的使用,单线程仿真器就可以支持多线程UVM测试向量批处理时的并行运行了,仿真时间可以大幅降低。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种利用PERL脚本的仿真器多线程运行方法,包括以下步骤:
A、先对运行环境进行基本设置;
B、对所有源文件进行编译;
C、借助Perl语言的多线程能力,启动多个仿真进程,分别运行不同的测试向量;
D、多线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。
2.根据权利要求1所述的一种利用PERL脚本的仿真器多线程运行方法,其特征在于,所述的步骤A中,仿真器只启动一个线程。
3.根据权利要求1所述的一种利用PERL脚本的仿真器多线程运行方法,其特征在于,所述的步骤A中,所述的基本设置包括运行目录的准备,初始化文件的生成,源代码文件的检出。
4.根据权利要求1所述的一种利用PERL脚本的仿真器多线程运行方法,其特征在于,所述的步骤B中,所述的源文件包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510291677.XA CN104899369A (zh) | 2015-06-01 | 2015-06-01 | 一种利用perl脚本的仿真器多线程运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510291677.XA CN104899369A (zh) | 2015-06-01 | 2015-06-01 | 一种利用perl脚本的仿真器多线程运行方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104899369A true CN104899369A (zh) | 2015-09-09 |
Family
ID=54032031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510291677.XA Pending CN104899369A (zh) | 2015-06-01 | 2015-06-01 | 一种利用perl脚本的仿真器多线程运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104899369A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105785789A (zh) * | 2015-12-29 | 2016-07-20 | 上海科梁信息工程股份有限公司 | 高空飞艇的仿真系统 |
CN109684681A (zh) * | 2018-12-06 | 2019-04-26 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 应用uvm验证平台的高层次化验证方法 |
CN110457070A (zh) * | 2019-08-16 | 2019-11-15 | 北京中科寒武纪科技有限公司 | 验证方法及装置以及相关产品 |
CN110543395A (zh) * | 2019-08-30 | 2019-12-06 | 北京中科寒武纪科技有限公司 | 验证方法、装置以及相关产品 |
CN110765663A (zh) * | 2019-11-25 | 2020-02-07 | 中冶赛迪重庆信息技术有限公司 | 一种基于参数化仿真的并发处理方法及系统 |
CN111767652A (zh) * | 2020-06-30 | 2020-10-13 | 北京世冠金洋科技发展有限公司 | 一种仿真运算方法、装置及电子设备 |
CN113342583A (zh) * | 2021-06-08 | 2021-09-03 | 海光信息技术股份有限公司 | 芯片验证系统、方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271533A1 (en) * | 2006-05-17 | 2007-11-22 | Kabushiki Kaisha Toshiba | System lsi verification system and system lsi verification method |
CN103034758A (zh) * | 2012-12-07 | 2013-04-10 | 南通大学 | 集成电路逻辑优化并行处理方法 |
CN103324568A (zh) * | 2012-03-21 | 2013-09-25 | 国际商业机器公司 | 用于测试程序的方法和装置 |
-
2015
- 2015-06-01 CN CN201510291677.XA patent/CN104899369A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070271533A1 (en) * | 2006-05-17 | 2007-11-22 | Kabushiki Kaisha Toshiba | System lsi verification system and system lsi verification method |
CN103324568A (zh) * | 2012-03-21 | 2013-09-25 | 国际商业机器公司 | 用于测试程序的方法和装置 |
CN103034758A (zh) * | 2012-12-07 | 2013-04-10 | 南通大学 | 集成电路逻辑优化并行处理方法 |
Non-Patent Citations (1)
Title |
---|
牛新辉: "并行处理仿真器PPSIM", 《小型微型计算机系统》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105785789A (zh) * | 2015-12-29 | 2016-07-20 | 上海科梁信息工程股份有限公司 | 高空飞艇的仿真系统 |
CN109684681A (zh) * | 2018-12-06 | 2019-04-26 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 应用uvm验证平台的高层次化验证方法 |
CN110457070A (zh) * | 2019-08-16 | 2019-11-15 | 北京中科寒武纪科技有限公司 | 验证方法及装置以及相关产品 |
CN110543395A (zh) * | 2019-08-30 | 2019-12-06 | 北京中科寒武纪科技有限公司 | 验证方法、装置以及相关产品 |
CN110765663A (zh) * | 2019-11-25 | 2020-02-07 | 中冶赛迪重庆信息技术有限公司 | 一种基于参数化仿真的并发处理方法及系统 |
CN111767652A (zh) * | 2020-06-30 | 2020-10-13 | 北京世冠金洋科技发展有限公司 | 一种仿真运算方法、装置及电子设备 |
CN111767652B (zh) * | 2020-06-30 | 2023-06-23 | 北京世冠金洋科技发展有限公司 | 一种仿真运算方法、装置及电子设备 |
CN113342583A (zh) * | 2021-06-08 | 2021-09-03 | 海光信息技术股份有限公司 | 芯片验证系统、方法、装置、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104899369A (zh) | 一种利用perl脚本的仿真器多线程运行方法 | |
Huang et al. | Instruction-level abstraction (ila) a uniform specification for system-on-chip (soc) verification | |
US7945888B2 (en) | Model-based hardware exerciser, device, system and method thereof | |
Wang et al. | SODA: Software defined FPGA based accelerators for big data | |
CN102576314A (zh) | 具有横跨多个处理器的数据并行线程之映射处理逻辑 | |
Qian et al. | Accelerating RTL simulation with GPUs | |
US20240004776A1 (en) | User-space emulation framework for heterogeneous soc design | |
Ta et al. | Simulating multi-core RISC-V systems in gem5 | |
Donald et al. | An efficient, practical parallelization methodology for multicore architecture simulation | |
CN101777007A (zh) | 片上多核处理器的并行功能仿真系统及其方法 | |
Mack et al. | User-space emulation framework for domain-specific soc design | |
Yip et al. | The ForeC synchronous deterministic parallel programming language for multicores | |
Rubini et al. | Scheduling analysis from architectural models of embedded multi-processor systems | |
Raghav et al. | Full system simulation of many-core heterogeneous SoCs using GPU and QEMU semihosting | |
DeRose et al. | Relative debugging for a highly parallel hybrid computer system | |
Zhang et al. | Verifying cooperative software: a SMT-based bounded model checking approach for deterministic scheduler | |
Asavoae et al. | Formal modeling and verification for timing predictability | |
Lantreibecq et al. | Model checking and co-simulation of a dynamic task dispatcher circuit using CADP | |
CN105446822B (zh) | 基于Linux的软件异常处理系统及方法 | |
US11796593B2 (en) | Compiler-based code generation for post-silicon validation | |
Jun-Feng | Application development methods based on multi-core systems | |
Vinay et al. | Design and Programming for Multicore machines: An Empirical study on time and effort required by programmer | |
Foucher et al. | Online codesign on reconfigurable platform for parallel computing | |
Liu et al. | A Framework for Developing Parallel Applications with high level Tasks on Heterogeneous Platforms | |
Leupers et al. | Programming MPSoC platforms: Road works ahead! |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150909 |
|
WD01 | Invention patent application deemed withdrawn after publication |