CN111782217B - 快速高效产生cache一致性测试C程序的系统及方法 - Google Patents
快速高效产生cache一致性测试C程序的系统及方法 Download PDFInfo
- Publication number
- CN111782217B CN111782217B CN202010582371.0A CN202010582371A CN111782217B CN 111782217 B CN111782217 B CN 111782217B CN 202010582371 A CN202010582371 A CN 202010582371A CN 111782217 B CN111782217 B CN 111782217B
- Authority
- CN
- China
- Prior art keywords
- file
- scene
- uvm
- script
- generating
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
- G06F8/454—Consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45508—Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
- G06F9/45512—Command shells
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计算机程序技术领域,具体涉及一种快速高效产生cache一致性测试C程序的系统及方法,包括UVM测试平台,所述UVM测试平台内设置action部件、cfg部件、scenario部件和scheduler部件模块,在脚本解析yaml文件后通知所述UVM测试平台,所述UVM获取到基本的参数配置后生成场景文件,经脚本调度仿真后,输出生成目标文件;本发明基于SV/UVM base,构建出的轻量级generator,能快速高效产生大量得cache coherency测试C用例;生成构造场景的同时,生成场景coverage文件,从而保证了该装置生成的场景具有覆盖性和丰富性;生成构造场景的同时,生成trace yaml文件,方便后期debug,为后期的debug提供了便利。
Description
技术领域
本发明涉及计算机程序技术领域,具体涉及一种快速高效产生cache一致性测试C程序的系统及方法。
背景技术
多数SMP处理器系统使用了MESI协议处理多个处理器之间的Cache-致性。该协议也被称为Illinois protocol,MESI协议在SMP处理器系统中得到了广泛的应用。MESI协议使用四个状态位描述每-个Cache行。
而现在手写C case产出效率低,测试用例少,而且多为定向case;
且Cache一致性场景具有复杂,很难覆盖的特点,所以手写case的场景往往具有单一性。
发明内容
针对现有技术的不足,本发明公开了一种快速高效产生cache一致性测试C程序的系统及方法,用于解决接手写C case产出效率低,测试用例少,而且多为定向case;Cache一致性场景具有复杂,很难覆盖的特点手写case的场景往往具有单一性的问题。
本发明通过以下技术方案予以实现:
第一方面,本发明公开一种快速高效产生cache一致性测试C程序的系统,包括UVM测试平台,所述UVM测试平台内设置action部件、cfg部件、scenario部件和scheduler部件模块,在脚本解析yaml文件后通知所述UVM测试平台,所述UVM获取到基本的参数配置后生成场景文件,经脚本调度仿真后,输出生成目标文件。
更进一步的,所述cfg部件用于配置参数的初始化。
更进一步的,所述scenario部件是随机场景或者定向场景的集合模块。
更进一步的,所述scheduler部件用于统一调度场景,输出生成目标文件。
更进一步的,所述Action部件是内部包含有数据、地址、线程id、依赖关系和属性等信息的随机元素。
更进一步的,所述action部件可扩展读写、原子访问、flush、中断或其他动作,所述action部件所有的扩展action部件将会构成action pool。
更进一步的,所述UVM获取到基本的参数配置后生成场景文件,经VCS仿真工具脚本调度仿真后,输出生成目标文件。
第二方面,本发明公开一种快速高效产生cache一致性测试C程序的方法,所述方法执行时使用第一方面的快速高效产生cache一致性测试C程序的系统,其特征在于,所述方法包括以下步骤:
S1系统上电工作,脚本获取yaml文件;
S2脚本解析yaml文件,并通知UVM测试平台;
S3所述UVM测试平台从action pool中生成n个场景后合并成程序序列,并输出Cfile/coverage/trace文件;
S4脚本调度VCS仿真工具,输出生成目标文件。
更进一步的,所述S3中,SV constraint的约束机制下,可以从action pool中就可以很容易的构造出随机或者用户感兴趣的cache一致性的场景。
更进一步的,所述S3中,生成构造场景的同时,生成场景coverage文件和trace文件,使得生成的场景具有覆盖性和丰富性,方便后期debug。
本发明的有益效果为:
本发明能高效便捷构造cache一致性C case;可随机构造出的cache一致性场景覆盖全面。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是快速高效产生cache一致性测试C程序的系统结构框架图;
图2是快速高效产生cache一致性测试C程序的方法原理图;
图3是本发明实施例核心部件generator机制工作流程图;
图4是本发明实施例generator会将最终得混合场景生成C文件,目标yaml文件和coverage文件图;
图5是本发明实施例True sharing场景图;
图6是本发明实施例False sharing场景图;
图7是本发明实施例存储边界场景图;
图8是本发明实施例中断场景图;
图9是本发明实施例sequential mode(顺序merge)图;
图10是本发明实施例insert mode(一个场景merge到某个场景的中间)图;
图11是本发明实施例interleave mode(不同场景的不同时间level进行merge)图;
图12是本发明实施例merge mode(混合merge)图;
图13是本发明实施例中断场景有效性的覆盖图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例公开如图1所述的一种快速高效产生cache一致性测试C程序的系统,包括UVM测试平台,所述UVM测试平台内设置action部件、cfg部件、scenario部件和scheduler部件模块,在脚本解析yaml文件后通知所述UVM测试平台,所述UVM获取到基本的参数配置后生成场景文件,经脚本调度仿真后,输出生成目标文件。
所述cfg部件用于配置参数的初始化。所述scenario部件是随机场景或者定向场景的集合模块。
所述scheduler部件用于统一调度场景,输出生成目标文件。所述Action部件是内部包含有数据、地址、线程id、依赖关系和属性等信息的随机元素。
所述action部件可扩展读写、原子访问、flush、中断或其他动作,所述action部件所有的扩展action部件将会构成action pool。
所述UVM获取到基本的参数配置后生成场景文件,经VCS仿真工具脚本调度仿真后,输出生成目标文件。
本实施例利用SV的constraints机制,可以随机产生丰富的cache一致性的场景组合。该系统的Coverage机制,保证了cache一致性的场景覆盖性。该系统的trace log机制,为后期的debug提供了便利。
实施例2
本实施例公开如图2所示的一种快速高效产生cache一致性测试C程序的方法,所述方法执行时使用第一方面的快速高效产生cache一致性测试C程序的系统,其特征在于,所述方法包括以下步骤:
S1系统上电工作,脚本获取yaml文件;
S2脚本解析yaml文件,并通知UVM测试平台;
S3所述UVM测试平台从action pool中生成n个场景后合并成程序序列,并输出Cfile/coverage/trace文件;
S4脚本调度VCS仿真工具,输出生成目标文件。
S3中,SV constraint的约束机制下,可以从action pool中就可以很容易的构造出随机或者用户感兴趣的cache一致性的场景。
S3中,生成构造场景的同时,生成场景coverage文件和trace文件,使得生成的场景具有覆盖性和丰富性,方便后期debug。
本实施例能高效便捷构造cache一致性C case;可随机构造出的cache一致性场景覆盖全面。
实施例3
本实施例公开一种基于SV/UVM架构,由cct.py python脚本控制整个装置的流程。
1.首先脚本会吃到一个yaml文件,里面放有基本的case配置,包括case名字,场景选择,仿真参数配置等。
2.脚本解析yaml文件后通知UVM测试平台。这样UVM就拿到了基本的参数配置。
3.在UVM的环境中,有action/cfg/scenario/scheduler等部件模块。
部件cfg里面是各种配置参数的初始化;
部件scenario是随机场景或者定向场景的集合模块;
部件scheduler是用来统一调度场景,输出生成目标文件。
核心点一:Action部件是这个装置的核心部分,里面包含有各种随机元素,如数据,地址,线程id,依赖关系,属性等信息,由action部件可以扩展出许许多多诸如读写,原子访问,flush,中断等动作,所有的扩展action部件将会构成一个action pool,在SVconstraint的约束机制下,可以从action pool中就可以很容易的构造出随机或者用户感兴趣的cache一致性的场景。
核心点二:生成构造场景的同时,生成场景coverage文件,从而保证了该装置生成的场景具有覆盖性和丰富性。
核心点三:生成构造场景的同时,生成trace文件,方便后期debug。
如图2所示的从action pool中生成n个场景,如图3所示的通过部件scheduler,把场景合并成程序序列,然后输出C file/coverage/trace文件。
4.脚本调度VCS仿真工具,输出生成目标文件。
本发明实施例实现了:
1.利用SV的constraints机制,可以随机产生丰富的cache一致性的场景组合。
2.该装置的Coverage机制,保证了cache一致性的场景覆盖性。
3.该装置的trace log机制,为后期的debug提供了便利。
实施例4
本实施例对核心部件generator机制工作流程介绍:如图3所示;
1.基于SV/UVM架构,充分利用SV的constraint机制和coverage机制;
2.首先会有一个action pool,里面有各种的动作集合,像读,写,中断,原子访问等。
3.从action pool中我们可以生成各种对应的组合场景,这样我们就有一个类似action的scenario pool;
4.由generator从scenario pool中随机选择n个场景,
5.随机n个场景中的actions,然后通过scheduler调度merge生成最终的混合场景;
6.然后使用model矫正check的数据;
7.最后,generator会将最终得混合场景生成C文件,目标yaml文件和coverage文件(参见图4)。
基本存储操作单元,包含地址,读写方式,操作大小等信息;
生成的场景举例:
如图5所示的True sharing场景;如图6所示的False sharing场景;如图7所示的存储边界场景;如图8所示的中断场景。
实施例5
本实施例对Generator merge场景方式介绍:
支持4种merge模式:
如图9所示的sequential mode(顺序merge);如图10所示的insert mode(一个场景merge到某个场景的中间);如图11所示的interleave mode(不同场景的不同时间level进行merge);如图12所示的merge mode(混合merge)。
coverage收集介绍:
Memory的属性:访问大小1/2/4/8byte;访问方式读/写;遍历访问所有core。
Address的关系:Equal;Overlap;Contain;False sharing;遍历访问所有core。
边界访问:Upper boundary;Middle boundary;Lower boundar;遍历访问所有的core。
Cache state转换:NtoT NtoB TtoB TtoN BtoT BtoN;遍历访问所有得core。
Cache属性覆盖:覆盖所有得set/way/bank。
访问memory size在cache line位置覆盖;
如图13所示中断场景有效性得覆盖:中断没有和其他场景merge起来就认为是无效。
综上,本发明基于SV/UVM base,构建出的轻量级generator,能快速高效产生大量得cache coherency测试C用例;
生成构造场景的同时,生成场景coverage文件,从而保证了该装置生成的场景具有覆盖性和丰富性;
生成构造场景的同时,生成trace yaml文件,方便后期debug。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (1)
1.一种快速高效产生cache一致性测试C程序的系统,其特征在于,包括UVM测试平台,所述UVM测试平台内设置action部件、cfg部件、scenario部件和scheduler部件模块,在脚本解析yaml文件后通知所述UVM测试平台,所述UVM获取到基本的参数配置后生成场景文件,经脚本调度仿真后,输出生成目标文件,基于SV/UVM架构,由cct.py python脚本控制整个装置的流程,脚本会获取一个yaml文件,里面放有基本的case配置,包括case名字,场景选择,仿真参数配置,脚本解析yaml文件后通知UVM测试平台,UVM拿到了基本的参数配置;
所述cfg部件用于配置参数的初始化;
所述scenario部件是随机场景或者定向场景的集合模块;
所述scheduler部件用于统一调度场景,输出生成目标文件;
所述Action部件是内部包含有数据、地址、线程id、依赖关系和属性信息的随机元素,所述action部件可扩展读写、原子访问、flush、中断或其他动作,所述action部件所有的扩展action部件将会构成action pool,所述UVM获取到基本的参数配置后生成场景文件,经VCS仿真工具脚本调度仿真后,输出生成目标文件;
通过快速高效产生cache一致性测试C程序的方法包括以下步骤:
S1系统上电工作,脚本获取yaml文件;
S2脚本解析yaml文件,并通知UVM测试平台;
S3所述UVM测试平台从action pool中生成n个场景后合并成程序序列,并输出C file/coverage/trace文件,SV constraint的约束机制下,从action pool中构造出随机或者用户感兴趣的cache一致性的场景,且生成构造场景的同时,生成场景coverage文件和trace文件;
S4脚本调度VCS仿真工具,输出生成目标文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010582371.0A CN111782217B (zh) | 2020-06-23 | 2020-06-23 | 快速高效产生cache一致性测试C程序的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010582371.0A CN111782217B (zh) | 2020-06-23 | 2020-06-23 | 快速高效产生cache一致性测试C程序的系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782217A CN111782217A (zh) | 2020-10-16 |
CN111782217B true CN111782217B (zh) | 2023-05-09 |
Family
ID=72757012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010582371.0A Active CN111782217B (zh) | 2020-06-23 | 2020-06-23 | 快速高效产生cache一致性测试C程序的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782217B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114580344B (zh) * | 2022-04-24 | 2022-08-16 | 飞腾信息技术有限公司 | 测试激励生成方法、验证方法、验证系统及相关设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212362A (zh) * | 2006-12-26 | 2008-07-02 | 中兴通讯股份有限公司 | 一种融合多类型测试工具的自动化测试装置及方法 |
CN104657555A (zh) * | 2015-02-11 | 2015-05-27 | 北京麓柏科技有限公司 | 一种基于uvm验证方法学的toe的验证方法及平台 |
CN104935936A (zh) * | 2015-06-15 | 2015-09-23 | 东南大学 | 基于uvm的熵解码器验证方法及装置 |
CN105446841A (zh) * | 2015-11-24 | 2016-03-30 | 无锡江南计算技术研究所 | 缓存一致性测试方法 |
WO2017019113A1 (en) * | 2015-07-29 | 2017-02-02 | Hewlett Packard Enterprise | Concurrency testing |
CN107688468A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 推测执行处理器中分支指令与分支预测功能的验证方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681937B (zh) * | 2012-05-15 | 2016-05-18 | 浪潮电子信息产业股份有限公司 | 一种缓存一致性协议正确性验证方法 |
CN103455460B (zh) * | 2012-06-01 | 2017-11-14 | 广东新岸线计算机系统芯片有限公司 | 一种验证高级微控制器总线接口的装置 |
CN103150228B (zh) * | 2013-02-22 | 2014-06-04 | 中国人民解放军国防科学技术大学 | 面向高速缓冲存储器的可综合伪随机验证方法及装置 |
US9310433B2 (en) * | 2014-04-18 | 2016-04-12 | Breker Verification Systems | Testing SOC with portable scenario models and at different levels |
US10002218B2 (en) * | 2015-03-12 | 2018-06-19 | Cavium, Inc. | Verification of a multichip coherence protocol |
CN105912415B (zh) * | 2016-04-05 | 2017-12-29 | 浪潮电子信息产业股份有限公司 | 一种验证cache一致性协议的方法及装置 |
CN105959176B (zh) * | 2016-04-25 | 2019-05-28 | 浪潮(北京)电子信息产业有限公司 | 基于Gem5模拟器的一致性协议测试方法和系统 |
CN109813999B (zh) * | 2019-01-22 | 2020-05-19 | 山东大学 | 一种配电网故障诊断算法自动测试平台、方法及应用 |
CN110457070B (zh) * | 2019-08-16 | 2020-11-24 | 安徽寒武纪信息科技有限公司 | 验证方法及装置以及相关产品 |
CN110865971B (zh) * | 2019-10-30 | 2023-04-07 | 南京杰思微电子技术有限公司 | Soc芯片的验证系统及其方法 |
-
2020
- 2020-06-23 CN CN202010582371.0A patent/CN111782217B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101212362A (zh) * | 2006-12-26 | 2008-07-02 | 中兴通讯股份有限公司 | 一种融合多类型测试工具的自动化测试装置及方法 |
CN104657555A (zh) * | 2015-02-11 | 2015-05-27 | 北京麓柏科技有限公司 | 一种基于uvm验证方法学的toe的验证方法及平台 |
CN104935936A (zh) * | 2015-06-15 | 2015-09-23 | 东南大学 | 基于uvm的熵解码器验证方法及装置 |
WO2017019113A1 (en) * | 2015-07-29 | 2017-02-02 | Hewlett Packard Enterprise | Concurrency testing |
CN105446841A (zh) * | 2015-11-24 | 2016-03-30 | 无锡江南计算技术研究所 | 缓存一致性测试方法 |
CN107688468A (zh) * | 2016-12-23 | 2018-02-13 | 北京国睿中数科技股份有限公司 | 推测执行处理器中分支指令与分支预测功能的验证方法 |
Non-Patent Citations (2)
Title |
---|
Rapid motion planning algorithm for optimal UVMS interventions in semi-structured environments using GPUs;Panagiotis Sotiropoulos 等;《Robotics and Autonomous Systems》;第74卷;第15-29页 * |
基于UVM的WIFI数字基带验证方法的研究;周轲;《中国优秀硕士学位论文全文数据库信息科技辑》(第2期);第I136-712页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111782217A (zh) | 2020-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3754496B1 (en) | Data processing method and related products | |
US9690630B2 (en) | Hardware accelerator test harness generation | |
CN109144515B (zh) | Dcs图形化算法组态的离线仿真方法和装置 | |
US7861217B2 (en) | Non-graphical model dependencies in graphical modeling environments | |
US20090031290A1 (en) | Method and system for analyzing parallelism of program code | |
US8892386B2 (en) | Method and apparatus for post-silicon testing | |
RU2005126695A (ru) | Система и способ для выбора режимов выполнения тестового примера для автоматизации повторно выполняемого тестирования | |
JP2018536227A5 (zh) | ||
CN105389261B (zh) | 异步测试的方法及装置 | |
US10216495B2 (en) | Program variable convergence analysis | |
US20210406443A1 (en) | Verification platform for system on chip and verification method thereof | |
CN116049035B (zh) | 一种缓存一致性的验证和调试的实现方法 | |
US20130254747A1 (en) | Method and apparatus for testing programs | |
CN111782217B (zh) | 快速高效产生cache一致性测试C程序的系统及方法 | |
US8397217B2 (en) | Integrating templates into tests | |
Feljan et al. | Task allocation optimization for multicore embedded systems | |
JP5562394B2 (ja) | Hdl環境のためのグローバルクロックハンドラーオブジェクト | |
CN102331961B (zh) | 并行模拟多个处理器的方法及系统、调度器 | |
KR20150101870A (ko) | 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치 | |
US20230097765A1 (en) | Pseudorandom Thread Generation | |
US20220326915A1 (en) | Method for generating program for use in accelerator for deep learning | |
Lapalme et al. | . NET framework-a solution for the next generation tools for system-level modeling and simulation | |
US20110225400A1 (en) | Device for Testing a Multitasking Computation Architecture and Corresponding Test Method | |
Di Carlo et al. | On the in-field test of the GPGPU scheduler memory | |
US8489367B2 (en) | Modeling a matrix for formal verification |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |