您的当前位置:首页正文

一种利用PERL脚本的仿真器多线程运行方法[发明专利]

2024-06-05 来源:小奈知识网
(19)中华人民共和国国家知识产权局

(12)发明专利申请

(10)申请公布号(10)申请公布号 CN 104899369 A (43)申请公布日(43)申请公布日 2015.09.09

(21)申请号 201510291677.X(22)申请日 2015.06.01

(71)申请人浪潮集团有限公司

地址250101 山东省济南市高新区浪潮路

1036号(72)发明人耿介 姜凯 于治楼

(74)专利代理机构济南信达专利事务所有限公

司 37100

代理人姜明(51)Int.Cl.

G06F 17/50(2006.01)

权利要求书1页 说明书4页 附图2页

(54)发明名称

一种利用PERL脚本的仿真器多线程运行方法(57)摘要

本发明涉及仿真器的,特别涉及一种利用PERL脚本的仿真器多线程运行方法。本发明利用Perl脚本使单线程仿真器支持多线程UVM测试向量并行运行,通过使用最新的Perl编译器的多线程调用模块,使原本只支持单线程,单CPU的逻辑仿真器,能够同时启动多线程,调用多CPU同时工作,并能在UVM验证环境中同时运行多个测试向量,从而加快验证收敛速度。

C N 1 0 4 8 9 9 3 6 9 A CN 104899369 A

权 利 要 求 书

1/1页

1.一种利用PERL脚本的仿真器多线程运行方法,包括以下步骤:

A、先对运行环境进行基本设置;B、对所有源文件进行编译;C、借助Perl语言的多线程能力,启动多个仿真进程,分别运行不同的测试向量;D、多线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。

2.根据权利要求1所述的一种利用PERL脚本的仿真器多线程运行方法,其特征在于,所述的步骤A中,仿真器只启动一个线程。

3.根据权利要求1所述的一种利用PERL脚本的仿真器多线程运行方法,其特征在于,所述的步骤A中,所述的基本设置包括运行目录的准备,初始化文件的生成,源代码文件的检出。

4.根据权利要求1所述的一种利用PERL脚本的仿真器多线程运行方法,其特征在于,所述的步骤B中,所述的源文件包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码。

2

CN 104899369 A

说 明 书

一种利用PERL脚本的仿真器多线程运行方法

1/4页

技术领域

[0001]

本发明涉及仿真器的,特别涉及一种利用PERL脚本的仿真器多线程运行方法。

背景技术

UVM是芯片验证业界最新研发的一种验证方法学。工程师用它可创建坚实、可重用、具互操作性的验证组件和验证平台。UVM提供基于SystemVerilog语言开发的一套库函数,工程师通过调用库可以省去自己从零开始开发验证环境的麻烦。

[0003] UVM与SystemVerilog为验证人员开发面向对象的验证环境提供了极大方便,使得验证环境以及测试向量的开发效率大幅提高。然而随之而来的是大量的测试向量需要在仿真器上运行,大的芯片验证项目会有几千个测试向量,而且这些测试向量使用不同的随机数进行随机化测试,需要消耗大量的计算资源以及计算时间。大部分芯片设计所用的服务器都具有多个计算单元,并且支持通过发布式任务提交将计算任务提交至不同服务器上。新的EDA软件也大多支持多处理器协同运算,所以能够较快的对大量测试激励进行仿真。但是老版本的EDA工具有些并不支持多线程运行,使用这样的EDA仿真工具,就无法发挥新的硬件平台的效率。所以对于不愿意升级到最新版EDA工具,但是需要提高仿真效率的团队,就需要通过另外途径来运行多线程。

[0004] Perl语言是一种广泛应用的脚本语言。Perl 是一种能完成任务的语言。从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。Perl 既强大又好用,所以它被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从图形处理到文档处理,从数据库操作到网络管理。很多人用 Perl 进行快速处理那些很难分析或转换的大批量数据。新版本的Perl,在编译器安装时,可以选择安装支持多线程功能,此功能对多处理器的平台的应用开发,有巨大帮助。

[0005] Perl语言也广泛应用在集成电路的设计开发的各个环节,一个完善的集成电路开发环境中,一般会有大量的Perl程序用来自动产生设计环境,自动分析各设计步骤输出的报告,并提交设计代码以及文档等。

[0002]

发明内容

为了解决现有技术的问题,本发明提供了一种利用PERL脚本的仿真器多线程运行方法,其通过使用最新的Perl编译器的多线程调用模块,使原本只支持单线程,单CPU的逻辑仿真器,能够同时启动多线程,调用多CPU同时工作,并能在UVM验证环境中同时运行多个测试向量,从而加快验证收敛速度的方法。

[0006] [0007]

本发明所采用的技术方案如下:

3

CN 104899369 A

说 明 书

2/4页

一种利用PERL脚本的仿真器多线程运行方法,包括以下步骤:

A、先对运行环境进行基本设置;B、对所有源文件进行编译;C、借助Perl语言的多线程能力,启动多个仿真进程,分别运行不同的测试向量;D、多线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。

步骤A中,仿真器只启动一个线程。[0009] 步骤A中,所述的基本设置包括运行目录的准备,初始化文件的生成,源代码文件的检出。

[0010] 步骤B中,所述的源文件包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码。

[0011] 本发明提供的技术方案带来的有益效果是:

本发明利用Perl脚本使单线程仿真器支持多线程UVM测试向量并行运行,通过使用最新的Perl编译器的多线程调用模块,使原本只支持单线程,单CPU的逻辑仿真器,能够同时启动多线程,调用多CPU同时工作,并能在UVM验证环境中同时运行多个测试向量,从而加快验证收敛速度。

[0008]

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使

用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

[0013] 图1为现有技术下单线程运行UVM测试向量的流程图。

[0014] 图2为现有技术下利用多线程仿真器多线程运行UVM测试向量的流程图。

[0015] 图3为本发明的利用Perl脚本使单线程仿真器支持多线程UVM测试向量并行运行的流程图。

[0012]

具体实施方式

[0016] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。[0017] 实施例一

如图1,为传统的仿真器单线程运行方法:假设需要运行n个测试激励,第一步先对运行环境进行基本设置,包括运行目录的准备,初始化文件的生成,源代码文件的检出等。第二步对所有源文件,包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码进行编译。第三步,单线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。所有以上步骤都基于单线程进行执行,这是最传统的模式,对仿真器软件以及硬件平台,都没有特殊要求,但是执行需要较长时间。

[0018]

如图2,为现有技术下多线程仿真器的多线程运行方法:

假设EDA软件以及硬件平台都支持多线程,需要运行n个测试激励,第一步先对运行环

4

CN 104899369 A

说 明 书

3/4页

境进行基本设置,包括运行目录的准备,初始化文件的生成,源代码文件的检出等,这步只启动一个线程。第二步对所有源文件,包括被测对象的源代码,测试平台的源代码,所有测试激励的源代码进行编译,这一步可以启动多个线程。第三步,多线程线程逐个运行所有的测试激励,等所有的方针完成后,分析测试结果,并输出报告。第一步以及最后一步基于单线程进行执行,中间的编译,仿真都启动多线程,这对仿真器软件以及硬件平台,都要求有多线程支持,执行时间大为缩短。

[0019] 本实施例针对硬件平台支持多线程,但是EDA仿真软件只有单线程的情况,可以使用如图3所示的方法,在仿真的步骤借助Perl语言的多线程能力,启动多个仿真进程,分别运行不同的测试向量,虽然每个仿真进程都是单线程的,但是由于多个仿真进程同时启动,也大大加速了仿真的进度。

[0020] 以下是为使用Perl具体实现多进程仿真的代码示例:

首先最外层循环将所有的测试激励以及随机数种子0-9都遍历一遍。内层程序中,先检测一下正在运行的线程有哪些,如果正在运行的线程的数目小于可以并行运行的线程数目nb_process,我们就以当前的随机数种子和测试激励名为参数,再启动一个子进程,并且记录下来。如果正在运行的线程的数目不小于可以并行运行的线程数目nb_process,我们则每隔一个时间周期ck_interval检测一次正在运行的进程数,直到正在运行的线程的数目小于可以并行运行的线程数目nb_process,我们再插入一个进程。通过以上操作,我们可以保证在所有仿真结束前,总会有nb_process个进程在同时执行。这里的nb_process一

5

CN 104899369 A

说 明 书

4/4页

般设置为当前硬件平台支持的最大线程数目。[0021] 通过以上的Perl脚本的使用,单线程仿真器就可以支持多线程UVM测试向量批处理时的并行运行了,仿真时间可以大幅降低。[0022] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

6

CN 104899369 A

说 明 书 附 图

1/2页

图1

图2

7

CN 104899369 A

说 明 书 附 图

2/2页

图3

8

因篇幅问题不能全部显示,请点此查看更多更全内容