CN114428642A - 一种基于新型处理器架构的随机指令生成环境 - Google Patents
一种基于新型处理器架构的随机指令生成环境 Download PDFInfo
- Publication number
- CN114428642A CN114428642A CN202210169665.XA CN202210169665A CN114428642A CN 114428642 A CN114428642 A CN 114428642A CN 202210169665 A CN202210169665 A CN 202210169665A CN 114428642 A CN114428642 A CN 114428642A
- Authority
- CN
- China
- Prior art keywords
- instruction
- class
- random
- sequence
- processor architecture
- 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.)
- Granted
Links
- 230000006870 function Effects 0.000 claims abstract description 87
- 238000012360 testing method Methods 0.000 claims abstract description 53
- 238000004088 simulation Methods 0.000 claims abstract description 43
- 238000000034 method Methods 0.000 claims abstract description 32
- 230000008569 process Effects 0.000 claims abstract description 24
- 238000012795 verification Methods 0.000 claims abstract description 24
- 238000013515 script Methods 0.000 claims description 24
- 238000012545 processing Methods 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 7
- 238000007639 printing Methods 0.000 claims description 7
- 238000003491 array Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000012942 design verification Methods 0.000 abstract description 3
- 239000013598 vector Substances 0.000 description 7
- 230000005284 excitation Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
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)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及集成电路处理器设计验证技术领域,具体涉及一种基于新型处理器架构的随机指令生成环境,本发明提供的基于新型处理器架构的随机指令生成环境,利用UVM和SystemVerilog验证技术,主要包含对新型处理器架构所有指令进行编码的transaction模块,对指令生成过程中添加约束的sequence模块,定义执行顺序的test模块,实现内存单元读写的memory模块,实现自动化对比的模块,定义各种参数的parameter参数模块,执行仿真生成随机指令序列的sim仿真模块。本发明提供的基于新型处理器架构的随机指令生成环境,模块性强,复用性好,指令生成速度快,应用的功能场景广泛,可靠性高,能满足现代大规模处理器指令集验证的需求。
Description
技术领域
本发明涉及集成电路处理器设计验证技术领域,具体涉及一种基于新型处理器架构的随机指令生成环境。
背景技术
随着处理器设计规模的日益增大,结构的复杂程度越来越高,处理器的功能验证也越来越困难,传统的定向测试激励已经满足不了现在的研发需求。而使用随机验证则能在短时间内产生大量随机测试向量,有助于快速捕获人工定向测试预料不到的角落案例,可以节省大量的时间和人力成本,这一点在现代微处理器验证领域有着非常重要的作用。现有的随机指令生成环境大都复用性较差,只能适用于特定的处理器架构或特定的指令集。或是需要验证人员对于库文件的应用有着很高的熟练度才可以复用到别的处理器架构和指令集中。这些传统的随机指令生成环境大多功能场景单一,复用性较差。
本发明中提出的新型处理器架构随机指令生成环境较为灵活,可以根据具体需求修改transaction模块,复用到不同的处理器架构和指令集上,根据需求修改sequence模块,就可以实现不同的功能场景;可以在比较短的时间内完成大量的测试向量生成;由于是随机指令组合,使得验证的覆盖范围可以更加广泛;可以根据覆盖率情况的改变,及时调整约束,使生成的随机激励更加高效,可靠性更高。
发明内容
针对现有技术的不足,本发明提供了一种基于新型处理器架构的随机指令生成环境,通过算法生成大批量的合法且无序的指令序列,结合新型处理器指令集的验证需求,对指令生成添加一些随机约束,生成特定功能场景的指令序列,最后按照指令集的需求输出特定格式的随机指令文件。随着处理器设计复杂程度越来越高,处理器指令集的验证需要大量的随机指令序列来执行验证,以覆盖更多的验证空间。
本发明通过以下技术方案予以实现:
一种基于新型处理器架构的随机指令生成环境,包括如下:
1)transaction类,其中定义枚举变量,对新型处理器架构所有指令进行编码,主要包含将指令转换成二进制代码,将二进制代码转换成指令的function,对指令的生成过程添加一些基本约束;
2)sequence类,用于对指令生成过程中产生一些配置,包含一些配置的function和task;用来生成新型处理器架构指令集时进行相关的约束,包含跳转地址的约束、存取地址的约束和不触发对界异常的约束;针对新型处理器架构的功能场景,添加锁存储功能函数、模式切换功能函数;
3)test类,作为基础父类,在其基础上扩展各种子类,test类定义执行顺序,使用uvm的phase机制,使得验证组件可以按需自动化执行;
4)parameter参数模块,定义各种参数,包括但不限于:复位PC、最大循环PC次数、跳转指令的跳转范围和各种错误原因的编码;
5)memory类,实现内存单元的读写,创建存放指令的关联数组,定义初始化并写寄存器、打印内存memory中的内容、memory存取这几个function,将最终产生的指令类写入到内存;
6)sim仿真模块主要靠“vcs.mk”和“Makefile”脚本进行仿真,生成仿真相关log文件。
优选的,所述transaction类进行指令模板的构造,包含两个文件“inst_base_txn.sv”和“txn_pkg.sv”;
“inst_base_txn.sv”中定义继承自“uvm_sequence_item”的“inst_base_txn”类,依据新型处理器架构的指令模板分段构造指令,同时添加基础约束,不同的字段组合拼接而成不同的指令,根据指令32位二进制代码标志位不同,使用“inst_decode”函数进行指令的译码,使用“is_in_pc_pa_queue”函数来检查PC是否在PC队列中;
指令模板包含操作码、Ra寄存器、Rb寄存器、Rc寄存器、function、disp、imm字段。
优选的,所述sequence类用于在指令生成过程中添加约束,sequence类包含两个文件“base_seq.sv”和“random_all_seq.sv”;
“base_seq.sv”继承自uvm_sequence,用于添加一些通用的基础约束,且在指令生成过程中添加各种功能场景下不同的约束;
“random_all_seq.sv”类文件继承自“base_seq.sv”,编写多个不同的“random_all_seq.sv”类文件,每个文件中约束函数不同,产生不同功能场景的约束。
优选的,所述“base_seq.sv”文件中包含如下的类:
“rand_gpr”类,按需求随机生成寄存器中的值;
“mem_range”类,定义不同的内存空间段;
“mem_region”类,定义不同的内存空间段的范围,并对其做检查;“base_seq”类,定义了各种约束;
包含如下函数:寄存器的随机、指令pc的计算、生成有效的指令序列、检查是否是跳转指令、生成结束标志位指令、HM/UM/KM模式切换结束指令函数。
优选的,所述“random_all_seq.sv”文件中包含如下的类和函数:
“gen_inst”类,用来生成指令,并在生成指令的过程中添加各种约束,具体包括:各类指令的生成权重、disp域的取值范围、寄存器的选择约束和csr指令索引值的选择约束;
“gen_br_target”类,实现跳转类指令目标地址范围的约束;
“gen_lsu_addr”类,实现存取类指令的目标地址范围的约束;
“task_body”类,该函数真正开始随机生成指令,定义生成指令时函数的执行顺序,定义结束标志位的生成;
指令生成过程添加的约束包含:
1)跳转指令的目标地址约束,使得跳转指令不会跳转到没有指令的位置;
2)存取类指令的目标地址约束,使得存取类指令不会存取到合法范围外的地址中数据;
3)锁存储指令固定搭配约束,锁存储指令可以随机生成在指令序列的任意位置,但每次生成都是固定搭配的格式;
4)函数调用顺序约束,约束指令生成过程中各个函数的调用顺序;
5)一些特定指令功能场景下的约束。
优选的,所述test类用来产生随机指令,定义仿真时的执行架构和顺序,采用UVM的phase机制来实现;
“gen_top.sv”为顶层文件,调用UVM的“run_test”函数用于启动仿真;
“test_base.sv”继承自UVM_TEST,用来定义基础执行顺序;
“random_all_test.sv”继承自“test_base.sv”,定义具体实例的执行顺序,可以根据需求来选择实例化不同的sequence,实现不同的功能场景,不同的“random_all_test.sv”对应着“sequence”模块中不同的“random_all_seq.sv”。
优选的,所述“test_base.sv”文件中包含如下函数:1)“new”,调用基类的初始化函数;2)“build_phase”,调用基类的build_phase;3)“main_phase”,调用基类的main_phase;4)“dump_mem_to_file”,调用“memory”模块中的“mem_storeh”或“mem_storeb”,输出具体的指令。
优选的,各个所述“random_all_test.sv”文件中包含如下函数:1)“new”,调用基类的初始化函数;2)“build_phase”,调用基类的build_phase;3)“main_phase”,调用基类的main_phase,调用“test_base.sv”中的“dump_mem_to_file”函数。
优选的,所述parameter参数模块用来定义一些常用的常量,包括CSR寄存器的索引、地址空间中某段空间的起始地址和结束地址;
所述memory类用来存储“sequence”模块生成的指令,仿真结束后将指令输出到指定的文件中;
所述文件包含“mem.sv”和“memory_pkg.sv”两个文件;
“mem.sv”文件继承自UVM_COMPONENT,定义若干全局的关联数组来存放指令,实现将随机指令序列存入数组、随机指令序列的打印和存取功能;
“memory_pkg.sv”文件用来对“mem.sv”进行打包。
优选的,所述sim仿真模块用来执行仿真生成随机指令序列,采用makefile和shell脚本来实现,包含仿真执行脚本、搭建功能场景的脚本和文本处理的脚本;
进行仿真后,将输出结果处理成适用于DUT的格式;
脚本文件有“Makefile”、“vcs.mk”、“xrun.mk”、“dsim.mk”、“umsim.mk”、“make.sh”类和“bins.sh”类;
可以支持不同的仿真工具,根据仿真器的不同选择不同的仿真脚本,根据不同的功能场景选择生成不同的指令序列,并进行相应的文本处理;
在新型处理器架构的指令集验证环境中,对随机指令在DUT和指令集模拟器中的执行结果进行对比,自动检查DUT和指令集模拟器的运行结果,验证DUT的功能。
本发明的有益效果为:
在本发明中提供了一种新型处理器架构随机指令生成环境,所述随机指令生成环境包括定义枚举变量指令的transaction类、对指令序列进行配置和约束的sequence类、产生随机指令序列的test类、参数定义模块parameter、内存单元读取memory类和执行仿真生成随机指令序列的sim仿真模块。重点在sequence类中,添加了各种不同的function和task,用来生成各种复杂的指令序列,提高了随机指令生成环境的性能,可以方便灵活的实现各个复杂功能场景,可以快速完成大量测试向量的生成。
本发明具有如下优点:
1)及时性:自动生成符合设计规定的合法指令序列,可以在比较短的时间内完成大量随机指令测试向量生成。
2)测试范围广:随机生成的指令序列包含目标处理器支持的所有指令类型,并且由于是随机组合,验证的覆盖范围比定向测试更全面。
3)便捷性:使用自动化的结果对比机制,自动检测DUT和参考模型指令集模拟器的运行结果,并且打印比较结果信息。
4)高效性:可以根据覆盖率情况的改变,及时调整指令约束,使生成的随机指令激励更加高效。
5)可复用性:随机指令生成环境的关键在处理器的指令集,如果不同处理器的指令集不同,可以在随机指令生成环境修改约束和transaction,可应用在多种处理器的验证。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于新型处理器架构的随机指令生成环境结构示意图;
图2是本发明所述基于新型处理器架构的随机指令生成环境的具体应用示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1所示:本实施例具体公开提供了一种基于新型处理器架构的随机指令生成环境的技术方案,该随机指令生成环境主要包含:
transaction类,其中定义枚举变量,对新型处理器架构所有指令进行编码,主要包含将指令转换成二进制代码,将二进制代码转换成指令的function,对指令的生成过程添加一些基本约束;
sequence类,用于对指令生成过中产生一些配置,包含一些配置的function和task,用来生成新型处理器架构指令集时进行相关的约束,包含跳转地址的约束、存取地址的约束、不触发对界异常的约束等。针对新型处理器架构的功能场景,添加锁存储功能函数、模式切换功能函数等函数;
test类,作为基础父类,在它基础上扩展各种子类。test类定义执行顺序,使用uvm的phase机制,使得验证组件可以按需自动化执行;
parameter参数模块,定义各种参数,有复位PC、最大循环PC次数、跳转指令的跳转范围和各种错误原因的编码等,除此之外还定义了一些其他参数;
memory类,实现内存单元的读写,创建存放指令的关联数组,定义初始化并写寄存器、打印内存memory中的内容、memory存取这几个function,将最终产生的指令类写入到内存;
sim仿真模块主要靠“vcs.mk”和“Makefile”脚本进行仿真,生成仿真相关log文件;
在本发明的实施例中,所述transaction类提供指令模板的构造,包含两个文件,分别是“inst_base_txn.sv”和“txn_pkg.sv”。“inst_base_txn.sv”包含一个“inst_base_txn”的类,继承自“uvm_sequence_item”,对所有的指令进行构造,同时加上了一些基础约束,使用“new函数”调用基类的方法,使用“gen_inst_bin_code”函数来构造指令,依据新型处理器架构的指令模板分段搭建指令,指令的模板中包含:操作码,Ra寄存器,Rb寄存器,Rc寄存器,function,disp,imm这几个字段。不同的字段组合起来,拼接而成不同的指令。根据指令32位二进制代码的一些标志位不同,使用“inst_decode”函数进行指令的解码。使用“is_in_pc_pa_queue”函数来检查PC是否在PC队列中。transaction类做一些基础的约束,用来对指令的寄存器和特殊指令的特殊字段添加约束。
在本发明的实施例中,所述sequence类在指令生成过程中添加约束,该sequence类中主要包含“base_seq.sv”和“random_all_seq.sv”类这两个文件,“base_seq.sv”继承自uvm_sequence,用于添加一些通用的基础约束,且在指令生成过程中添加各种功能场景下不同的约束,“random_all_seq.sv”类文件继承自“base_seq.sv”,包含多个不同的“random_all_seq.sv”类文件,每个文件中约束函数不同,产生不同功能场景的约束。“base_seq.sv”文件中包含如下的类和函数:“rand_gpr”,按需求随机生成寄存器中的值;“mem_range”,定义不同的内存空间段;“mem_region”,定义不同的内存空间段的范围,并对其做检查;“base_seq”,为本文件中最重要的类,定义了各种约束,包含寄存器的随机、指令pc的计算、生成有效的指令序列、检查是否是跳转指令、生成结束标志位指令、HM/UM/KM模式切换结束指令等函数。“random_all_seq.sv”文件中包含如下的类和函数:“gen_inst”,用来生成指令,并在生成指令的过程中添加各种约束,如各类指令的生成权重;disp域的值的范围;寄存器的选择约束;csr指令索引值的选择约束;“gen_br_target”,实现跳转类指令目标地址范围的约束;“gen_lsu_addr”,实现存取类指令的目标地址范围的约束;“task_body”,该函数真正开始随机生成指令,定义生成指令时函数的执行顺序,定义结束标志位的生成。指令生成过程添加的约束包含:1)跳转指令的目标地址约束,使得跳转指令不会跳转到没有指令的位置。2)存取类指令的目标地址约束,使得存取类指令不会存取到合法范围外的地址中数据。3)锁存储指令固定搭配约束,锁存储指令可以随机生成在指令序列的任意位置,但每次生成都是固定搭配的格式。4)函数调用顺序约束,约束指令生成过程中各个函数的调用顺序。5)一些特定指令功能场景下的约束。
在本发明的实施例中,所述test类用来产生随机指令,定义仿真时的执行架构和顺序,采用了UVM的phase机制来实现。“gen_top.sv”为顶层文件,调用了UVM的“run_test”函数用于启动仿真。“test_base.sv”继承自UVM_TEST,该文件用来定义基础执行顺序,“test_base.sv”文件中包含如下函数:1)“new”,调用基类的初始化函数。2)“build_phase”:调用基类的build_phase。3)“main_phase”:调用基类的main_phase。4)“dump_mem_to_file”:调用“memory”模块中的“mem_storeh”或“mem_storeb”,输出具体的指令。
“random_all_test.sv”继承自“test_base.sv”,定义具体实例的执行顺序,可以根据需求来选择实例化不同的sequence,实现不同的功能场景,不同的“random_all_test.sv”对应着“sequence”模块中不同的“random_all_seq.sv”。文件中包含如下函数:1)“new”,调用基类的初始化函数。2)“build_phase”,调用基类的build_phase,与具体实例结合。3)“main_phase”,调用基类的main_phase,与具体实例结合,调用“test_base.sv”中的“dump_mem_to_file”函数。
在本发明的实施例中,所述parameter参数模块用来定义一些常用的常量,如CSR寄存器的索引,地址空间中某段空间的起始地址和结束地址,以及其他的一些常量。
在本发明的实施例中,所述memory类用来存储“sequence”模块生成的指令,并在仿真最后将指令输出到一个指定的文件中。包含“mem.sv”,“memory_pkg.sv”两个文件,“mem.sv”继承自UVM_COMPONENT,定义了两个全局的关联数组用于存放指令,实现将指令数据按序存入数组、随机指令序列的打印和存取等功能。“memory_pkg.sv”用来对“mem.sv”进行打包。
在本发明的实施例中,所述sim仿真模块用来执行仿真生成随机指令序列,采用makefile和shell脚本来实现,包含仿真执行脚本、搭建功能场景的脚本和文本处理的脚本。进行仿真后,将输出结果处理成适用于DUT的格式。脚本文件有“Makefile”、“vcs.mk”、“xrun.mk”、“dsim.mk”、“umsim.mk”、“make.sh”类和“bins.sh”类。可以支持不同的仿真工具,根据仿真器的不同选择不同的仿真脚本,根据不同的功能场景选择生成不同的指令序列,并进行相应的文本处理。
在新型处理器架构的指令集验证环境中,对随机指令在DUT和指令集模拟器中的执行结果进行对比,自动检查DUT和指令集模拟器的运行结果,验证DUT的功能。
在本发明中提供了一种新型处理器架构随机指令生成环境,所述随机指令生成环境包括定义枚举变量指令的transaction类、对指令序列进行配置和约束的sequence类、产生随机指令序列的test类、参数定义模块parameter、内存单元读取memory类和执行仿真生成随机指令序列的sim仿真模块。重点在sequence类中,添加了各种不同的function和task,用来生成各种复杂的指令序列,提高了随机指令生成环境的性能,可以方便灵活的实现各个复杂功能场景,可以快速完成大量测试向量的生成。
本发明提供了一种基于新型处理器架构的随机指令生成环境,产生的指令激励是随机的,组合方式也是随机的,可以产生很多意想不到的结果,可以覆盖一些设计验证工程师无法预料的验证空间。随机指令生成环境生成大量随机测试向量,传送给指令集模拟器和DUT,产生指令运行结果,将两者产生的结果进行自动对比,以此验证DUT指令集的正确性。同时根据覆盖率信息的反馈,通过改变约束条件,生成新的特定的随机指令激励,逐步覆盖DUT的验证空间,直到最后完成所有功能点的验证。
具体的,请综合参阅图1和图2。在本发明提出的新型处理器架构的随机指令生成环境中,transaction类继承自uvm_sequence_item,定义基本的指令类,指令类中包含各个指令字段,创建通用指令模板。sequence类继承自uvm_sequence,在随机指令的生成过程中添加约束,同时保证指令的合法性。test类继承自uvm_test,生成随机指令序列,并写入文件中。parameter参数模块定义了各种参数。memory类实现内存的存取。sim仿真模块执行仿真,生成随机指令序列。
请参阅图2,是所述基于新型处理器架构的随机指令生成环境的具体应用示意图:通过随机指令生成环境生成一系列可读的汇编指令;通过编译器将汇编指令转换为指令集模拟器和DUT所需要的二进制文件格式,并加载到指令集模拟器和DUT中,分别执行随机指令序列;将生成的指令执行结果发送给结果对比模块,进行指令执行结果比较,打印相关的比较结果和对比信息,以此验证设计指令集的正确性。
本发明提出的基于新型处理器架构的随机指令生成环境,作为一个独立运行的平台使用,可复用性好,根据指令集验证需求,可以配置不同的指令数量、类型和权重,可以添加约束生成特殊场景的随机指令。可以根据输出的指令生成相应的汇编文件,方便调试定位BUG,提高测试能力。在合法指令格式内,操作码、操作数和指令序列都可以完全随机。
利用UVM和SystemVerilog验证技术,主要包含对新型处理器架构所有指令进行编码的transaction模块,对指令生成过程中添加约束的sequence模块,定义执行顺序的test模块,实现内存单元读写的memory模块,实现自动化对比的模块,定义各种参数的parameter参数模块,执行仿真生成随机指令序列的sim仿真模块。本发明提供的基于新型处理器架构的随机指令生成环境,模块性强,复用性好,指令生成速度快,应用的功能场景广泛,可靠性高,能满足现代大规模处理器指令集验证的需求。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于新型处理器架构的随机指令生成环境,其特征在于,包括如下:
1)transaction类,其中定义枚举变量,对新型处理器架构所有指令进行编码,主要包含将指令转换成二进制代码,将二进制代码转换成指令的function,对指令的生成过程添加一些基本约束;
2)sequence类,用于对指令生成过程中产生一些配置,包含一些配置的function和task;用来生成新型处理器架构指令集时进行相关的约束,包含跳转地址的约束、存取地址的约束和不触发对界异常的约束;针对新型处理器架构的功能场景,添加锁存储功能函数、模式切换功能函数;
3)test类,作为基础父类,在其基础上扩展各种子类,test类定义执行顺序,使用uvm的phase机制,使得验证组件可以按需自动化执行;
4)parameter参数模块,定义各种参数,包括但不限于:复位PC、最大循环PC次数、跳转指令的跳转范围和各种错误原因的编码;
5)memory类,实现内存单元的读写,创建存放指令的关联数组,定义初始化并写寄存器、打印内存memory中的内容、memory存取这几个function,将最终产生的指令类写入到内存;
6)sim仿真模块主要靠“vcs.mk”和“Makefile”脚本进行仿真,生成仿真相关log文件。
2.根据权利要求1所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述transaction类进行指令模板的构造,包含两个文件“inst_base_txn.sv”和“txn_pkg.sv”;
“inst_base_txn.sv”中定义继承自“uvm_sequence_item”的“inst_base_txn”类,依据新型处理器架构的指令模板分段构造指令,同时添加基础约束,不同的字段组合拼接而成不同的指令,根据指令32位二进制代码标志位不同,使用“inst_decode”函数进行指令的译码,使用“is_in_pc_pa_queue”函数来检查PC是否在PC队列中;
指令模板包含操作码、Ra寄存器、Rb寄存器、Rc寄存器、function、disp、imm字段。
3.根据权利要求1所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述sequence类用于在指令生成过程中添加约束,sequence类包含两个文件“base_seq.sv”和“random_all_seq.sv”;
“base_seq.sv”继承自uvm_sequence,用于添加一些通用的基础约束,且在指令生成过程中添加各种功能场景下不同的约束;
“random_all_seq.sv”类文件继承自“base_seq.sv”,编写多个不同的“random_all_seq.sv”类文件,每个文件中约束函数不同,产生不同功能场景的约束。
4.根据权利要求3所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述“base_seq.sv”文件中包含如下的类:
“rand_gpr”类,按需求随机生成寄存器中的值;
“mem_range”类,定义不同的内存空间段;
“mem_region”类,定义不同的内存空间段的范围,并对其做检查;“base_seq”类,定义了各种约束;
包含如下函数:寄存器的随机、指令pc的计算、生成有效的指令序列、检查是否是跳转指令、生成结束标志位指令、HM/UM/KM模式切换结束指令函数。
5.根据权利要求3所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述“random_all_seq.sv”文件中包含如下的类和函数:
“gen_inst”类,用来生成指令,并在生成指令的过程中添加各种约束,具体包括:各类指令的生成权重、disp域的取值范围、寄存器的选择约束和csr指令索引值的选择约束;
“gen_br_target”类,实现跳转类指令目标地址范围的约束;
“gen_lsu_addr”类,实现存取类指令的目标地址范围的约束;
“task_body”类,该函数真正开始随机生成指令,定义生成指令时函数的执行顺序,定义结束标志位的生成;
指令生成过程添加的约束包含:
1)跳转指令的目标地址约束,使得跳转指令不会跳转到没有指令的位置;
2)存取类指令的目标地址约束,使得存取类指令不会存取到合法范围外的地址中数据;
3)锁存储指令固定搭配约束,锁存储指令可以随机生成在指令序列的任意位置,但每次生成都是固定搭配的格式;
4)函数调用顺序约束,约束指令生成过程中各个函数的调用顺序;
5)一些特定指令功能场景下的约束。
6.根据权利要求1所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述test类用来产生随机指令,定义仿真时的执行架构和顺序,采用UVM的phase机制来实现;
“gen_top.sv”为顶层文件,调用UVM的“run_test”函数用于启动仿真;
“test_base.sv”继承自UVM_TEST,用来定义基础执行顺序;
“random_all_test.sv”继承自“test_base.sv”,定义具体实例的执行顺序,可以根据需求来选择实例化不同的sequence,实现不同的功能场景,不同的“random_all_test.sv”对应着“sequence”模块中不同的“random_all_seq.sv”。
7.根据权利要求6所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述“test_base.sv”文件中包含如下函数:1)“new”,调用基类的初始化函数;2)“build_phase”,调用基类的build_phase;3)“main_phase”,调用基类的main_phase;4)“dump_mem_to_file”,调用“memory”模块中的“mem_storeh”或“mem_storeb”,输出具体的指令。
8.根据权利要求6所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
各个所述“random_all_test.sv”文件中包含如下函数:1)“new”,调用基类的初始化函数;2)“build_phase”,调用基类的build_phase;3)“main_phase”,调用基类的main_phase,调用“test_base.sv”中的“dump_mem_to_file”函数。
9.根据权利要求1所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述parameter参数模块用来定义一些常用的常量,包括CSR寄存器的索引、地址空间中某段空间的起始地址和结束地址;
所述memory类用来存储“sequence”模块生成的指令,仿真结束后将指令输出到指定的文件中;
所述文件包含“mem.sv”和“memory_pkg.sv”两个文件;
“mem.sv”文件继承自UVM_COMPONENT,定义若干全局的关联数组来存放指令,实现将随机指令序列存入数组、随机指令序列的打印和存取功能;
“memory_pkg.sv”文件用来对“mem.sv”进行打包。
10.根据权利要求1所述的一种基于新型处理器架构的随机指令生成环境,其特征在于:
所述sim仿真模块用来执行仿真生成随机指令序列,采用makefile和shell脚本来实现,包含仿真执行脚本、搭建功能场景的脚本和文本处理的脚本;
进行仿真后,将输出结果处理成适用于DUT的格式;
脚本文件有“Makefile”、“vcs.mk”、“xrun.mk”、“dsim.mk”、“umsim.mk”、“make.sh”类和“bins.sh”类;
可以支持不同的仿真工具,根据仿真器的不同选择不同的仿真脚本,根据不同的功能场景选择生成不同的指令序列,并进行相应的文本处理;
在新型处理器架构的指令集验证环境中,对随机指令在DUT和指令集模拟器中的执行结果进行对比,自动检查DUT和指令集模拟器的运行结果,验证DUT的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210169665.XA CN114428642B (zh) | 2022-02-23 | 2022-02-23 | 一种基于新型处理器架构的随机指令生成环境 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210169665.XA CN114428642B (zh) | 2022-02-23 | 2022-02-23 | 一种基于新型处理器架构的随机指令生成环境 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114428642A true CN114428642A (zh) | 2022-05-03 |
CN114428642B CN114428642B (zh) | 2024-04-05 |
Family
ID=81313255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210169665.XA Active CN114428642B (zh) | 2022-02-23 | 2022-02-23 | 一种基于新型处理器架构的随机指令生成环境 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114428642B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117037893A (zh) * | 2023-10-08 | 2023-11-10 | 悦芯科技股份有限公司 | 一种用于存储芯片测试机向量产生器的微处理器系统 |
CN117971238A (zh) * | 2024-01-31 | 2024-05-03 | 北京中科昊芯科技有限公司 | 一种用于验证指令集中指令相关的系统及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100205412A1 (en) * | 2007-07-25 | 2010-08-12 | Mcleod Gordon Richard | Control sequencer |
CN101964034A (zh) * | 2010-09-30 | 2011-02-02 | 浙江大学 | 一种模式信息损失最小化的序列类数据隐私保护方法 |
CN103530216A (zh) * | 2013-10-12 | 2014-01-22 | 江苏华丽网络工程有限公司 | 一种基于uvm验证方法学的pcie验证方法 |
CN104462707A (zh) * | 2014-12-19 | 2015-03-25 | 浪潮集团有限公司 | 使用软约束提高uvm验证平台可复用性的方法 |
US20150310159A1 (en) * | 2014-03-05 | 2015-10-29 | Vayavya Labs Private. Limited | Computer-implemented verification system for performing a functional verification of an integrated circuit |
CN105893202A (zh) * | 2016-04-26 | 2016-08-24 | 浪潮(北京)电子信息产业有限公司 | 一种基于uvm的存储控制器功能测试方法及系统 |
-
2022
- 2022-02-23 CN CN202210169665.XA patent/CN114428642B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100205412A1 (en) * | 2007-07-25 | 2010-08-12 | Mcleod Gordon Richard | Control sequencer |
CN101964034A (zh) * | 2010-09-30 | 2011-02-02 | 浙江大学 | 一种模式信息损失最小化的序列类数据隐私保护方法 |
CN103530216A (zh) * | 2013-10-12 | 2014-01-22 | 江苏华丽网络工程有限公司 | 一种基于uvm验证方法学的pcie验证方法 |
US20150310159A1 (en) * | 2014-03-05 | 2015-10-29 | Vayavya Labs Private. Limited | Computer-implemented verification system for performing a functional verification of an integrated circuit |
CN104462707A (zh) * | 2014-12-19 | 2015-03-25 | 浪潮集团有限公司 | 使用软约束提高uvm验证平台可复用性的方法 |
CN105893202A (zh) * | 2016-04-26 | 2016-08-24 | 浪潮(北京)电子信息产业有限公司 | 一种基于uvm的存储控制器功能测试方法及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117037893A (zh) * | 2023-10-08 | 2023-11-10 | 悦芯科技股份有限公司 | 一种用于存储芯片测试机向量产生器的微处理器系统 |
CN117971238A (zh) * | 2024-01-31 | 2024-05-03 | 北京中科昊芯科技有限公司 | 一种用于验证指令集中指令相关的系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114428642B (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5202889A (en) | Dynamic process for the generation of biased pseudo-random test patterns for the functional verification of hardware designs | |
Schlich | Model checking of software for microcontrollers | |
CN114428642B (zh) | 一种基于新型处理器架构的随机指令生成环境 | |
US7596781B2 (en) | Register-based instruction optimization for facilitating efficient emulation of an instruction stream | |
US20130152048A1 (en) | Test method, processing device, test program generation method and test program generator | |
US9626267B2 (en) | Test generation using expected mode of the target hardware device | |
CN102346235A (zh) | 一种面向硬件设备功能的自动测试系统及方法 | |
US8397217B2 (en) | Integrating templates into tests | |
CN111666102A (zh) | 文件格式转换方法、芯片验证方法、相关装置及网络芯片 | |
US20110131031A1 (en) | Dynamic generation of tests | |
US6643800B1 (en) | Method and apparatus for testing microarchitectural features by using tests written in microcode | |
CN110688198B (zh) | 系统调用方法、装置和电子设备 | |
CN117494407A (zh) | 一种加速中央处理单元验证的方法及计算设备 | |
US20130311164A1 (en) | Dynamic generation of test segments | |
Blanqui et al. | Designing a CPU model: from a pseudo-formal document to fast code | |
CN116450431A (zh) | Cpu参考模型的指令功能测试系统及其方法、计算机设备和存储介质 | |
KR0125605B1 (ko) | 프로그램의 아키덱쳐 변환방법 및 장치와 그 방법 및 장치를 사용하여 프로그램의 동작을 검증하는 방법 및 장치 | |
CN114880030A (zh) | 一种指令译码方法及装置、电子设备、存储介质 | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
CN115470151B (zh) | 一种应用运行分析方法、计算设备及存储介质 | |
CN112579169B (zh) | 处理器追踪流的生成方法及装置 | |
CN112084112B (zh) | 热补丁的测试方法、装置和服务器 | |
CN108604205B (zh) | 测试点的创建方法,装置和系统 | |
KR20240014248A (ko) | 주변 장치 모델링을 통한 펌웨어 퍼징 방법 및 장치 | |
CN112631904A (zh) | 函数调用信息的记录方法及设备 |
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 |