CN112559045B - 一种基于riscv的随机指令生成平台及方法 - Google Patents
一种基于riscv的随机指令生成平台及方法 Download PDFInfo
- Publication number
- CN112559045B CN112559045B CN202011542820.5A CN202011542820A CN112559045B CN 112559045 B CN112559045 B CN 112559045B CN 202011542820 A CN202011542820 A CN 202011542820A CN 112559045 B CN112559045 B CN 112559045B
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- type
- riscv
- module
- 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
- 238000000034 method Methods 0.000 title claims abstract description 12
- 230000006870 function Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 5
- 230000005284 excitation Effects 0.000 claims description 2
- 238000010200 validation analysis Methods 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 abstract description 6
- 238000012795 verification Methods 0.000 abstract description 5
- 238000013461 design Methods 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明属于集成电路设计技术领域,具体涉及一种基于RISCV的随机指令生成平台及方法,该生成平台包括:指令生成器模块,用于初始化平台,添加约束并随机、拼接形成指令,将生成的指令输入DUT中;指令模拟器模块,用于读取指令,将指令解码,然后执行指令;比较器模块,比较DUT与指令模拟器模块输出的结果。所述指令生成器模块包括初始化单元、指令约束单元和指令拼接单元。所述指令模拟器模块包括指令读取单元、指令解码单元和指令执行单元。所述指令约束单元包含基于RISCV指令规则约束和基于流水线的规则约束;以解决现有的随机指令生成技术可复用性和覆盖率不足的问题,提高验证效率。
Description
技术领域
本发明属于集成电路设计技术领域,具体涉及一种基于RISCV的随机指令生成平台及方法。
背景技术
随机指令生成技术最早用于快速高效验证处理器,随着集成电路工艺的发展,芯片的规模越来越大,需要引入随机指令生成器生成指令来应对越来越复杂的处理器结构和种类繁多的指令集。随机指令生成技术通过生成随机化指令,在保证CPU性能的前提下,产生更科学的随机化指令,提高验证的速度和覆盖率。
目前的随机指令生成技术大多采用简单的随机指令生成或者针对特定的处理器设计,可复用性和覆盖率都不足,难以提高验证覆盖率,因此亟需研发一种基于RISCV的随机指令生成平台及方法来解决上述问题。
发明内容
针对现有技术的不足,本发明提供了一种基于RISCV的随机指令生成平台及方法,以解决现有的随机指令生成技术可复用性和覆盖率不足的问题,提高验证效率。
本发明通过以下技术方案予以实现:
一种基于RISCV的随机指令生成平台,能够生成随机化指令进行验证,该生成平台包括:
指令生成器模块,用于初始化平台,添加约束并随机、拼接形成指令,将生成的指令输入DUT中;
指令模拟器模块,用于读取指令,将指令解码,然后执行指令;
比较器模块,比较DUT与指令模拟器模块输出的结果。
优选的,所述指令生成器模块包括初始化单元、指令约束单元和指令拼接单元。
优选的,所述指令模拟器模块包括指令读取单元、指令解码单元和指令执行单元。
优选的,所述指令约束单元包含基于RISCV指令规则约束和基于流水线的规则约束。
优选的,所述指令拼接单元包括单条指令拼接模块和程序拼接模块,分别根据RISCV指令生成规则和RISCV程序规则生成指令和程序。
一种包含上述所述的随机指令生成平台的实现方法,包括如下步骤:
步骤1、搭建基于UVM的随机指令生成平台,在generate类中生成随机指令;
步骤2、指令生成器模块将指令进行分类;
步骤3、指令生成器模块根据指令布局生成操作码、操作数、格式类型;
步骤4、指令生成器模块根据RISCV指令规则拼接形成合法指令;
步骤5、指令生成器模块构建具体场景,根据程序规则拼接步骤4中生成的RISCV指令形成合法程序。
优选的,所述步骤2中的指令进行分类时,具体包括ALU指令、分支跳转指令、存储指令、控制指令和浮点运算指令。
优选的,所述步骤5中的具体场景,程序规则遵循流水线中存在的结构相关冲突,具体的包括ALU冲突、访存冲突、数据相关冲突和转移指令冲突。
优选的,所述步骤5中的程序规则,具体包括约束乘除法之间周期、约束取指指令与取操作数指令之间的周期、约束取操作数与写寄存器之间周期和构建包含循环的完整程序的方式。
本发明的有益效果为:
所述指令生成器模块采用UVM平台搭建,对RISCV指令的各个部分进行约束并随机化,根据指令规则进行拼接形成单条指令,然后根据程序规则拼接形成完成程序,将程序输入DUT中,所示指令模拟器模块读取指令生成器模块产生的程序指令,进行解码并指行,所述比较器比较DUT的结果与指令模拟器模块的仿真结果;
本发明的基于RISCV的随机指令生成平台能够根据需求对指令的数量、类型、复杂度、权重进行配置,生成符合条件的随机指令,然后根据程序规则拼接形成完成程序,通过指令模拟器模块对随机指令进行仿真,最后进行比较,相比于现有的随机指令生成方法,可复用性和覆盖率更高,验证效率更快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于RISCV的随机指令生成平台的示意图;
图2是本发明提供的指令约束单元的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
请参阅图1所示:本实施例一具体提供了一种基于RISCV的随机指令生成平台,能够生成随机化指令,其结构示意图如图1所示,该生成平台包括指令生成器11模块、指令模拟器12模块、比较器13模块,其中指令生成器11模块,用于初始化平台,添加约束并随机、拼接形成指令,将生成的指令输入DUT中;指令模拟器12模块,用于读取指令,将指令解码,然后执行指令;比较器13模块,用于比较DUT与指令模拟器12模块的结果;
具体的,指令生成器11模块包括初始化单元111、指令约束单元112和指令拼接单元113;指令模拟器模块包括指令读取单元121、指令解码单元122和指令执行单元123;
具体的,指令生成器11模块将指令分成ALU指令、分支跳转指令、存储指令、控制指令和浮点运算指令,每种指令有对应的操作码、操作数、格式类型,对操作码、操作数、格式类型进行约束,生成随机指令,指令拼接单元将分别拼接成对应的完整指令。
具体的,指令生成器11模块将根据权重生成不同数量的main函数指令,子函数指令,中断处理函数指令,程序初始化指令,指令拼接单元根据完整的程序生成规则拼接形成一个能运行的完整程序。
具体的,程序规则主要遵循如下:考虑流水线中存在的复杂问题,包括结构相关冲突,具体的包括ALU冲突,访存冲突,数据相关冲突,转移指令冲突。
具体的,针对存在的结构相关冲突,其中ALU冲突和访存冲突,采用约束乘除法之间周期的方法,防止资源冲突来解决ALU冲突,采用约束取指指令与取操作数指令之间的周期来解决访存冲突。
具体的,针对数据相关冲突,采用约束取操作数与写寄存器之间周期的方式解决数据相关冲突。
具体的,针对转移指令冲突,需要构建包含循环的完整程序,对于普通循环,需要包含进入循环与出循环,当调用子函数的时候,需要约束返回值,与恢复现场的指令,对于多层嵌套循环,需要约束返回地址的最大值。
指令生成器11模块采用UVM平台搭建,对RISCV指令的各个部分进行约束并随机化,根据指令规则进行拼接形成单条指令,然后根据程序规则拼接形成完成程序,将程序输入DUT中,所示指令模拟器12模块读取指令生成器11模块产生的程序指令,进行解码并指行,比较器13模块比较DUT的结果与指令模拟器12模块的仿真结果。本发明的基于RISCV的随机指令生成平台能够对RISCV指令的各个部分进行约束并随机化,根据指令规则进行拼接形成单条指令,然后根据程序规则拼接形成完成程序,通过指令模拟器12模块对随机指令进行仿真,最后进行比较。
请继续参阅图2所示:基于实施例一的基础上,本发明还提供了指令约束单元的结构,其结构示意图如图2所示,指令约束单元112包含基类baseic.sv21、历史寄存器类history_reg.sv22、SV类库23,其中基类baseic.sv21包含R型指令24、I型指令25、S型指令26、B型指令27、U型指令28、J型指令29、constr_file类210、generator类211和global_define类212。
具体的,指令约束单元112分为约束模块和控制模块,其中基类baseic.sv21定义了所有指令的基类,包含了RISCV的所有基本指令,所有子类继承于基类,包含了约束的一般场景。
具体的,在随机化指令时,首先对R型指令24、I型指令25、S型指令26、B型指令27、U型指令28、J型指令29六种基本指令进行约束并随机,配置调整6种指令的权重,数量,其次对每种指令的寄存器251、操作码252、功能码253的数量、权重进行约束并随机化,生成随机指令。
具体的,R型指令24包含寄存器241,操作码242和功能码243三种类型,I型指令25包含寄存器251、操作码252、功能码253和立即数254四种类型,S型指令26包含寄存器261、操作码262、功能码263和立即数264四种类型,B型指令27包含寄存器271、操作码272、功能码273和立即数274四种类型,U型指令28包含操作码281、寄存器282和立即数283三种类型,J型指令29包含操作码291、寄存器292和立即数293三种类型,每种类型的数量,长度都根据对应的RISCV指令类型进行约束。
具体的,通过历史寄存器类history_reg.sv22记录每一指令周期用到的寄存器,为解决流水线中的复杂问题做准备。
具体的,通过SV类库23调用SV类库,对基类进行约束。
具体的,通过constr_file类210读取RISCV指令的约束信息。
具体的,通过generator类211产生激励,例化子类的句柄,根据约束条件产生对应的随机结果。
具体的,通过global_define类212进行全局参数的设置,进行各种宏定义。
本发明的基于RISCV的随机指令生成平台能够根据需求对指令的数量、类型、复杂度、权重进行配置,生成符合条件的随机指令,然后根据程序规则拼接形成完成程序,通过指令模拟器对随机指令进行仿真,最后进行比较,相比于现有的随机指令生成方法,可复用性和覆盖率更高,验证效率更快。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种基于RISCV的随机指令生成平台,能够生成随机化指令进行验证,其特征在于,该生成平台包括:
指令生成器模块,用于初始化平台,添加约束并随机、拼接形成指令,将生成的指令输入DUT中;
指令模拟器模块,用于读取指令,将指令解码,然后执行指令;
比较器模块,比较DUT与指令模拟器模块输出的结果;
所述指令生成器模块包括初始化单元、指令约束单元和指令拼接单元;
所述指令模拟器模块包括指令读取单元、指令解码单元和指令执行单元;
所述指令约束单元包含基于RISCV指令规则约束和基于流水线的规则约束;
所述指令拼接单元包括单条指令拼接模块和程序拼接模块,分别根据RISCV指令生成规则和RISCV程序规则生成指令和程序;
指令生成器模块将根据权重生成不同数量的main函数指令,子函数指令,中断处理函数指令,程序初始化指令,指令拼接单元根据完整的程序生成规则拼接形成一个能运行的完整程序;
指令约束单元包含基类baseic.sv、历史寄存器类history_reg.sv、SV类库,其中基类baseic.sv包含R型指令、I型指令、S型指令、B型指令、U型指令、J型指令、constr_file类、generator类和global_define类;
指令约束单元分为约束模块和控制模块,其中基类baseic.sv定义了所有指令的基类,包含了RISCV的所有基本指令,所有子类继承于基类,包含了约束的一般场景;
在随机化指令时,首先对R型指令、I型指令、S型指令、B型指令、U型指令、J型指令六种基本指令进行约束并随机,配置调整六种指令的权重、数量,其次对每种指令的寄存器、操作码、功能码的数量、权重进行约束并随机化,生成随机指令;
R型指令包含寄存器241,操作码242和功能码243三种类型,I型指令包含寄存器251、操作码252、功能码253和立即数254四种类型,S型指令包含寄存器261、操作码262、功能码263和立即数264四种类型,B型指令包含寄存器271、操作码272、功能码273和立即数274四种类型,U型指令包含操作码281、寄存器282和立即数283三种类型,J型指令包含操作码291、寄存器292和立即数293三种类型,每种类型的数量,长度都根据对应的RISCV指令类型进行约束;
通过历史寄存器类history_reg.sv记录每一指令周期用到的寄存器,为解决流水线中的复杂问题做准备;通过SV类库调用SV类库,对基类进行约束;通过constr_file类读取RISCV指令的约束信息;通过generator类产生激励,例化子类的句柄,根据约束条件产生对应的随机结果;通过global_define类进行全局参数的设置,进行各种宏定义。
2.一种包含权利要求 1所述的随机指令生成平台的实现方法,其特征在于,包括如下步骤:
步骤1、搭建基于UVM的随机指令生成平台,在generate类中生成随机指令;
步骤2、指令生成器模块将指令进行分类;
步骤3、指令生成 器模块根据指令布局生成操作码、操作数、格式类型;
步骤4、指令生成器模块根据RISCV指令规则拼接形成合法指令;
步骤5、指令生成器模块构建具体场景,根据程序规则拼接步骤4中生成的RISCV指令形成合法程序。
3.如权利要求2所述的方法,其特征在于,所述步骤2中的指令进行分类时,具体包括ALU指令、分支跳转指令、存储指令、控制指令和浮点运算指令。
4.如权利要求2所述的方法,其特征在于,所述步骤5中的具体场景,程序规则遵循流水线中存在的结构相关冲突,具体的包括ALU冲突、访存冲突、数据相关冲突和转移指令冲突。
5.如权利要求4所述的方法,其特征在于,所述步骤5中的程序规则,具体包括约束乘除法之间周期、约束取指指令与取操作数指令之间的周期、约束取操作数与写寄存器之间周期和构建包含循环的完整程序的方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542820.5A CN112559045B (zh) | 2020-12-23 | 2020-12-23 | 一种基于riscv的随机指令生成平台及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011542820.5A CN112559045B (zh) | 2020-12-23 | 2020-12-23 | 一种基于riscv的随机指令生成平台及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559045A CN112559045A (zh) | 2021-03-26 |
CN112559045B true CN112559045B (zh) | 2022-09-16 |
Family
ID=75031821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011542820.5A Active CN112559045B (zh) | 2020-12-23 | 2020-12-23 | 一种基于riscv的随机指令生成平台及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559045B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115686631B (zh) * | 2022-11-07 | 2023-08-29 | 合芯科技有限公司 | 一种基于知识基的随机指令生成方法、装置及存储介质 |
CN117422025B (zh) * | 2023-12-18 | 2024-03-29 | 青岛本原微电子有限公司 | 一种基于risc-v架构的随机中断调试验证系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826050A (zh) * | 2010-02-03 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 一种用于制造后处理器芯片验证的随机验证方法及装置 |
CN109829313A (zh) * | 2019-02-28 | 2019-05-31 | 中国人民解放军战略支援部队信息工程大学 | 一种基于代码复用编程防御sgx侧信道攻击的方法及装置 |
CN111125996A (zh) * | 2019-12-10 | 2020-05-08 | 上海高性能集成电路设计中心 | 一种伪随机激励生成器的基于双向约束树指令集实现方法 |
CN111124492A (zh) * | 2019-12-16 | 2020-05-08 | 海光信息技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
-
2020
- 2020-12-23 CN CN202011542820.5A patent/CN112559045B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101826050A (zh) * | 2010-02-03 | 2010-09-08 | 北京龙芯中科技术服务中心有限公司 | 一种用于制造后处理器芯片验证的随机验证方法及装置 |
CN109829313A (zh) * | 2019-02-28 | 2019-05-31 | 中国人民解放军战略支援部队信息工程大学 | 一种基于代码复用编程防御sgx侧信道攻击的方法及装置 |
CN111125996A (zh) * | 2019-12-10 | 2020-05-08 | 上海高性能集成电路设计中心 | 一种伪随机激励生成器的基于双向约束树指令集实现方法 |
CN111124492A (zh) * | 2019-12-16 | 2020-05-08 | 海光信息技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112559045A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Leupers | Code optimization techniques for embedded processors: Methods, algorithms, and tools | |
US20180373509A1 (en) | Loop execution with predicate computing for dataflow machines | |
US8893104B2 (en) | Method and apparatus for register spill minimization | |
CN112559045B (zh) | 一种基于riscv的随机指令生成平台及方法 | |
US7010558B2 (en) | Data processor with enhanced instruction execution and method | |
US20160321039A1 (en) | Technology mapping onto code fragments | |
Dam et al. | Machine code verification of a tiny ARM hypervisor | |
Holsti et al. | Status of the Bound-T WCET tool | |
US12039305B2 (en) | Method for compilation, electronic device and storage medium | |
Hardin et al. | A robust machine code proof framework for highly secure applications | |
CN111399911A (zh) | 一种基于多核异构计算的人工智能开发方法及装置 | |
Watanabe et al. | Reduction from branching-time property verification of higher-order programs to HFL validity checking | |
CN114428642B (zh) | 一种基于新型处理器架构的随机指令生成环境 | |
CN107729118A (zh) | 面向众核处理器的修改Java虚拟机的方法 | |
Middendorf et al. | Hardware synthesis of recursive functions through partial stream rewriting | |
CN115469931B (zh) | 一种循环程序的指令优化方法、装置、系统、设备及介质 | |
CN101727513A (zh) | 一种超长指令字处理器的设计和优化方法 | |
CN116450431A (zh) | Cpu参考模型的指令功能测试系统及其方法、计算机设备和存储介质 | |
EP1190305A2 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
CN106970825A (zh) | 一种基于gdb可配置框架的arm7仿真目标机实现方法 | |
Wei et al. | Parallel model checking on pushdown systems | |
Leviathan et al. | Validating software pipelining optimizations | |
US20060168431A1 (en) | Method and apparatus for jump delay slot control in a pipelined processor | |
CN117313595B (zh) | 用于功能验证的随机指令生成方法、设备及系统 | |
Du et al. | Breaking the interaction wall: A DLPU-centric deep learning computing system |
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 |