CN116820922A - 面向基于risc-v指令集的向量控制模块的验证方法及平台 - Google Patents
面向基于risc-v指令集的向量控制模块的验证方法及平台 Download PDFInfo
- Publication number
- CN116820922A CN116820922A CN202310474941.8A CN202310474941A CN116820922A CN 116820922 A CN116820922 A CN 116820922A CN 202310474941 A CN202310474941 A CN 202310474941A CN 116820922 A CN116820922 A CN 116820922A
- Authority
- CN
- China
- Prior art keywords
- function
- control module
- vector
- verification
- vector control
- 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
- 239000013598 vector Substances 0.000 title claims abstract description 156
- 238000012795 verification Methods 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000012360 testing method Methods 0.000 claims abstract description 72
- 230000005284 excitation Effects 0.000 claims abstract description 62
- 230000006870 function Effects 0.000 claims description 158
- 238000012545 processing Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000009131 signaling function Effects 0.000 claims description 3
- 238000013515 script Methods 0.000 abstract description 8
- 238000013461 design Methods 0.000 description 11
- 238000004088 simulation Methods 0.000 description 11
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000007717 exclusion Effects 0.000 description 3
- 230000007306 turnover Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000011002 quantification Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- -1 AXI Chemical compound 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Classifications
-
- 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/3676—Test management for coverage analysis
-
- 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
- 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/3692—Test management for test results analysis
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明公开了一种面向基于RISC‑V指令集的向量控制模块的验证方法及平台,包括提取RISC‑V指令集的向量控制模块的功能点;根据功能点列表,编写激励信号;利用所编写的激励信号对向量控制模块的功能点进行验证。该验证方案提升向量控制模块的可靠性,大幅度的降低流片风险,有效地减轻子系统级和系统级的验证负担。该平台具有较好的通用性,可以作为系统级芯片模块和处理器中模块的验证平台,由于使用带约束的随机测试激励和Makefile脚本,可以有效缩短验证时间,提高验证效率,保证芯片流片质量。
Description
技术领域
本发明涉及处理器和计算技术领域,尤其涉及一种面向基于RISC-V指令集的向量控制模块的验证方法及平台。
背景技术
随着云计算、边缘计算以及车载智能计算等领域高速发展,RISC-V处理器芯片结构日趋复杂,芯片验证面临前所未有的挑战。目前芯片验证占整个芯片研发大约70%人力和物力资源,流片失败的原因中验证不充分导致的功能错误约占70%。模块级验证是系统级验证的前提,它能减轻系统级验证的负担,使之专注于互联、交互响应和接口等功能验证。模块验证的侧重点在模块本身功能的验证,验证计划的重点是功能点、验证架构和测试用例,模块级验证能够覆盖的绝不到下一级验证去覆盖。模块级验证具有优势如下:首先,模块级验证可以更早的发现、定位和修改缺陷;其次,模块相对子系统和系统,具有功能单一、结构简单的特点,导致验证工作也相对简单。最后,模块通常包含复杂的时序关系、较多控制信号,系统级验证中很多寄存器的可控性较差,难以提高覆盖率,而模块级验证能较为简单地控制内部信号,减轻可控性问题。
处理器中的模块级验证和系统级芯片中的模块级验证有一定得区别。系统级芯片中的模块是以AMBA、AXI、AHB等标准总线进行互联,因此,系统级芯片中的模块级验证通常是基于交易仿真验证,通过不同层次的复用和标准化的验证IP来提高验证效率。
但现有处理器内部的模块为了追求高性能,通常使用自定义的接口,系统级芯片以标准总线为核心的模块级验证方法并不完全适合微处理器模块级验证,RISC-V处理器中功能点的功能覆盖率和代码覆盖率低,导致验证时间长,芯片流片质量低。
发明内容
为解决上述现有技术中存在的部分或全部技术问题,本发明提供一种面向基于RISC-V指令集的向量控制模块的验证方法及平台,能够提高功能覆盖率和代码覆盖率,缩短验证时间,保证芯片流片的质量。
本发明的技术方案如下:
一方面,本发明公开的一种面向基于RISC-V指令集的向量控制模块的验证方法,包括:
提取RISC-V指令集的向量控制模块的功能点;
根据功能点列表,编写激励信号;
利用所编写的激励信号对向量控制模块的功能点进行验证。
进一步地,所述功能点列表中至少包括vset{i}vl{i}指令功能点、csr指令功能点和生成元素/位有效信号功能点。
进一步地,对功能点进行验证的方法包括:
根据提取的功能点列表、以及激励信号与功能点的对应关系,编写参考模型;
将激励信号输入向量控制模块,获取所述向量模块处理后的第一控制信号和所述第一控制信号对应的第一覆盖率;
利用参考模型对激励信号进行处理,获取所述参考模型处理后的第二控制信号;
通过对所述第一控制信号和第二控制信号进行比较,得出向量控制模块功能点是否正确;通过第一覆盖率的大小,得出功能点是否齐全。
进一步地,对功能点进行验证后,若所验证的功能点出现错误,则对错误功能点进行分析修复,若不出现错误,则完成验证。
进一步地,对错误功能点进行分析修复的方法为:根据功能点列表和预设功能点列表对应的覆盖率和功能,重新对参考模型和激励信号进行编写,或对向量控制模块中的指令进行修改。
进一步地,还包括利用所生成的激励信号和参考模型对向量控制模块的功能点的功能进行验证。
进一步地,对向量模块的功能点的功能进行验证时:
根据提取的功能点列表、以及激励信号与功能点功能的对应关系,编写参考模型;
将激励信号输入向量控制模块,获取所述向量模块处理后的第三控制信号和所述第三控制信号对应的第三覆盖率;
利用参考模型对激励信号进行处理,获取所述参考模型处理后的第四控制信号;
通过对所述第三控制信号和第四控制信号进行比较,得出向量控制模块功能点功能是否正确;通过第三覆盖率的大小,得出功能点功能是否完整。
进一步地,对向量模块功能点的覆盖率验证和向量功能点的功能覆盖率的验证结果均为预设覆盖率。
进一步地,对向量模块功能点的覆盖率和向量功能点的功能覆盖率验证的结果未达到预设覆盖率时,对未覆盖的部分进行重复验证,直至所有功能点的验证结果均达到预设,在进行是否达到预设计算时,将所有未覆盖的部分和覆盖部分的覆盖率进行求和,与预设值进行比较,若等于预设值则达到预设,若小于预设值,则未达到预设,进行重复验证。
另一方面,本发明公开的一种面向基于RISC-V指令集的向量控制模块验证方法的验证平台,包括:
激励信号生成器,所述激励信号生成器用于产生定向测试激励信号和带约束的随机测试激励信号;
参考模块,所述参考模块中含有参考模型,在对所输入的激励信号进行处理时,所述参考模块调用所述参考模型,所述参考模型用于接收所述激励信号生成器输出的控制信号,并对所输出的控制信号进行运算处理,与所述激励信号生成器的输入端电连接;
向量控制模块,所述向量控制模块接收激励信号生成器生成的激励信号,并将所述激励信号处理输出为控制信号,用于控制向量运算和向量处理;
监视器,所述监视器的一端接收所述向量控制模块输出测试信号,并将所输出的测试信号传送至比较器;
比较器,所述比较器一端用于接收所述参考模型输出的参考结果,另一端用于接收所述监视器传递的运行结果,并与参考模型的运行结果进行比较,用于判断通过向量控制模块和参考模块后的控制信号是否一致;
覆盖率分析模块,所述覆盖率分析模块用于接收所述参考模型输出的数据和所述监视器监视的数据。
本发明技术方案的主要优点如下:
本发明针对处理器中RISC-V向量控制模块的特点,通过先提取功能点,再构建以覆盖率驱动的验证平台,完成定向测试和带约束的随机测试,收集功能覆盖率和代码覆盖率,并对未覆盖到的情况进行分析。该验证方案提升向量控制模块的可靠性,大幅度的降低流片风险,有效地减轻子系统级和系统级的验证负担。该平台具有较好的通用性,可以作为系统级芯片模块和处理器中模块的验证平台,由于使用带约束的随机测试激励和Makefile脚本,可以有效缩短验证时间,提高验证效率,保证芯片流片质量。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
在附图中:
图1为本发明一种面向基于RISC-V指令集的向量控制模块的验证方法的流程示意图;
图2为本发明一种面向基于RISC-V指令集的向量控制模块的验证平台的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明实施例提供的技术方案。
实施例1
如附图1所示,本发明实施例提供了一种面向基于RISC-V指令集的向量控制模块的验证方法,该方法包括:
提取RISC-V指令集的向量控制模块的功能点;
根据功能点列表,编写激励信号;
利用所编写的激励信号对向量控制模块的功能点进行验证。
进一步地,所述功能点列表中至少包括vset{i}vl{i}指令功能点、csr指令功能点和生成元素/位有效信号功能点。
进一步地,对功能点进行验证的方法包括:
根据提取的功能点列表、以及激励信号与功能点的对应关系,编写参考模型;
将激励信号输入向量控制模块,获取所述向量模块处理后的第一控制信号和所述第一控制信号对应的第一覆盖率;
利用参考模型对激励信号进行处理,获取所述参考模型处理后的第二控制信号;
通过对所述第一控制信号和第二控制信号进行比较,得出向量控制模块功能点是否正确;通过第一覆盖率的大小,得出功能点是否齐全。
进一步地,对功能点进行验证后,若所验证的功能点出现错误,则对错误功能点进行分析修复,若不出现错误,则完成验证。
进一步地,对错误功能点进行分析修复的方法为:根据功能点列表和预设功能点列表对应的覆盖率和功能,重新对参考模型和激励信号进行编写,或对向量控制模块中的指令进行修改。
进一步地,还包括利用所生成的激励信号和参考模型对向量控制模块的功能点的功能进行验证。
进一步地,对向量模块的功能点的功能进行验证时:
根据提取的功能点列表、以及激励信号与功能点功能的对应关系,编写参考模型;
将激励信号输入向量控制模块,获取所述向量模块处理后的第三控制信号和所述第三控制信号对应的第三覆盖率;
利用参考模型对激励信号进行处理,获取所述参考模型处理后的第四控制信号;
通过对所述第三控制信号和第四控制信号进行比较,得出向量控制模块功能点功能是否正确;通过第三覆盖率的大小,得出功能点功能是否完整。
进一步地,对向量模块功能点的覆盖率验证和向量功能点的功能覆盖率的验证结果均为预设覆盖率。
需要说明的是,预设覆盖率为100%。
进一步地,对向量模块功能点的覆盖率和向量功能点的功能覆盖率验证的结果未达到预设覆盖率时,对未覆盖的部分进行重复验证,直至所有功能点的验证结果均达到预设,在进行是否达到预设计算时,将所有未覆盖的部分和覆盖部分的覆盖率进行求和,与预设值进行比较,若等于预设值则达到预设,若小于预设值,则未达到预设,进行重复验证。
具体地,在本发明中,功能点正确性,通过向量控制模块和参考模型输出信号,比对确定;功能点个数够不够,是通过向量控制模块覆盖率体现。
具体地,上述覆盖率包括功能覆盖率和代码覆盖率。
具体地,功能覆盖率验证的目的就是确保设计在实际环境中的行为正确,验证计划列出的相应功能应该如何激励、验证和测量都应该和功能描述文档相匹配,收集哪些功能已经被覆盖其实就是在收集设计的覆盖率。如果某个功能在设计中被遗漏,代码覆盖率可能发现不了这个问题,但是功能覆盖率可以发现。改进功能覆盖率一个简单的方法是仅仅增加仿真时间或者尝试新的随机种子。每一次仿真就会产生一个带有覆盖率信息的数据库,所有的信息整合到一起就可以得到功能覆盖率,可以衡量整体的进展程度。通过分析覆盖率数据得到修改回归测试集的方法:如果覆盖率在稳定增长,添加新的种子或者加长测试就可以了;覆盖率增长缓慢,添加额外的约束来产生更多激励;覆盖率停止增长,说明某些测试点没有被覆盖到,那么就需要创建新的测试了;如果覆盖率为百分百但是依然有新的设计漏洞,那么覆盖率可能没有覆盖到某些设计功能区域。
具体地,代码覆盖率不添加任何额外的HDL代码,工具会通过分析源代码和增加隐藏代码来自动完成代码覆盖率的统计,测试完成以后代码覆盖率工具便会创建相应的数据库,覆盖率数据被转换为可读格式进行输出。代码覆盖率是衡量验证进展的最简易的方式。代码覆盖率的最终结果用于衡量执行了设计中的多少代码。
具体地,在本实施例的一些可选的实施方式中,代码覆盖率在执行过程中包含了:
行覆盖率:表示多少行代码已经被执行。
路径覆盖率:表示在穿过代码和表达式的路径中有哪些被执行过。
翻转覆盖率:表示哪些单位比特变量的值为0后者为1。
状态机覆盖率:表示状态机有哪些状态和状态转换已经被访问过。
具体地,向量控制模块是向量加速部件的核心单元,主要功能包括:配置向量类型(Vector Type,简称vtype)寄存器、配置控制状态寄存器(Control and Status Register,简称csr)、生成元素和位有效信号、生成Load/Store元素有效信号、传递元素位宽(VectorSelected Element Width,简称vsew)和寄存器中向量个数(Vector Length,简称vl),详细描述如下所示:
具体地,vsew设置向量的标准元素宽度,待测模块中最大向量的标准元素宽度为64位,若vsew大于64则报错;vlmul用于设置一条指令可以同时操作向量寄存器个数,向量控制模块不支持一条指令可以同时操作多个向量寄存器,vlmul值为1。
配置vtype寄存器,使用vset{i}vl{i}指令完成对向量类型寄存器的配置,在配置过程中需要预先做出硬件是否支持的判断。
配置csr,使用控制状态寄存器的控制指令对向量状态控制寄存器进行读写操作,每一个线程有独立的一套控制状态寄存器。生成元素和位有效信号,根据运算指令类型、向量长度、元素大小、掩码值等,生成元素有效信号或位有效信号,发送给向量寄存器控制模块,向量寄存器控制模块以位有效信号作为按位使能信号,将运算部件产生的运算结果写入向量寄存器中。生成Load/Store元素有效信号,根据运算指令类型、向量长度、元素大小、掩码值等,生成元素有效信号,发送给向量寄存器控制模块。传递vsew和VL,根据整型和浮点指令的线程号,将线程对应的元素位宽和寄存器中向量个数分别发给整型运算部件和浮点运算部件。
具体地,本发明中的向量浮点模块中所提取的向量功能点为:vset{i}vl{i}指令功能点、csr指令功能点和生成元素/位有效信号功能点。
具体地,本发明中的向量浮点模块中所提取的下向量功能点(向量控制模块的功能点列表)的具体数量和类型如下表1所示:
表1:向量控制模块提取的功能点统计
具体地,上述表1中:vsetvli指令作用是通过立即数(zimm)和源寄存器(rs1)配置向量类型(vtype)寄存器。向量类型寄存器具有决定每个向量寄存器中元素的组织形式、向量寄存器的分组方式、单个向量寄存器的元素组成、指示如何处理屏蔽元素和向量结果中超过当前向量长度的元素等功能,结构如表2所示。
表2:vtype寄存器结构图
具体地,在上述表2中:vill为非法设置标记位,高电平表示硬件不匹配;reserved为保留区;vma(vector mask agnostic)用于控制目的寄存器被屏蔽元素的行为;vta(vector tail agnostic)用于控制目的寄存器尾部元素的行为;vma和vta为0时,采用undisturbed策略,目的寄存器相应元素集合,将保持原来的值。vma和vta为1时,采用agnostic策略,目的寄存器相应元素集合,全部写1。vsew设置向量的标准元素宽度,待测模块中最大向量的标准元素宽度为64位,若vsew大于64则报错;vlmul用于设置一条指令可以同时操作向量寄存器个数,向量控制模块不支持一条指令可以同时操作多个向量寄存器,vlmul值为1。
具体地,vsetvli指令结构如表3所示。
具体地,在上述表3中,zimm为立即数,rs1为源寄存器地址,rd为目的寄存器地址,vsetvli[6:0]为操作码。
具体地,vsetvli指令作用是通过立即数(zimm)和源寄存器(rs1)配置向量类型(vtype)寄存器。”
具体地,vsetvli指令功能是将zimm[7:0]赋值给vtype[7:0],将zimm[8]赋值给vtype[31]。如果vsew>64或vlmul≠1,则表示硬件不支持,此时vtype寄存器最高位写1,其余位写0。在硬件支持情况下,如果rs1地址和rd地址都为0,此时,vl值不变,不返回vl的值给rd;如果rs1地址为0且rd地址不为0,此时,vl值为vlmax,返回vl的值给rd;其他情况,将vlmax和rs1中比较小的值赋值给vl,返回vl的值给rd。其中,vlmax表示一条向量指令可以操作的元素最大个数。
具体地,依据vsetvli指令特点,将功能点分为两类,一类是硬件不支持情况,另一类是硬件支持情况。并将具体功能点编号、功能点描述、检查方式和测试用例等列出,如表4所示。
表4:提取vsetvli指令功能点列表
具体地,在进行仿真验证和覆盖率进行分析时:
具体地,仿真验证在进行测试时,包括定向测试和随机测试两种方式;
具体地,在进行定向测试时,以测试用例名创建定向激励文件,将该测试用例的所用功能点的定向测试都写到里面。通过$fopen、$feof、$fgets、$sscanf等函数,将定向性测试激励加载到验证平台,并用makefile来选取不同的测试用例激励。
具体地,在进行随机测试时,通过脚本建立两类随机,第一类是不同测试用例之间的随机;第二类是测试用例中某段信号的随机,如寄存器地址、寄存器值、线程号等随机。仿真过程中,必须使用带有约束条件的随机进行测试,否则很难覆盖功能点,例如vsetvli指令的操作码为1010111,没有约束条件的随机概率为0.0078,随机仿真很难覆盖到,因此需要在操作码(1010111,...,1110011)中随机取一个,有效增加命中概率,提升仿真效率。
具体地,在进行覆盖率分析时,分别对功能覆盖率和代码覆盖率进行分析,具体地,在对功能覆盖率进行分析时,从定向测试和随机测试两方面的测试结果进行分析:
具体地,在本发明的优选实施例中,功能覆盖率表示对功能点是否完全覆盖,主要关注整个设计特性的信息,包括各种边界情形及各种故障可能,本申请通过定向测试和带约束的随机测试相结合的方式实现。
具体地,定向测试结果分析为:在向量控制模块中,一共提取332个功能点,需要83位十六进制数表示。当定向测试激励加载到验证平台时,若是对应的功能点被覆盖,则对应功能点的位置会标记为1。以vsetvli_vsew测试用例为例进行说明,结果如表5所示,表示第0-3个功能点已被覆盖,因此,会标记为f(4’b1111)。
表5:vsetvli_vsew功能定向测试结果
具体地,随机测试结果分析为:在随机测试中,需要将测试用例之间和测试用例中的信号段进行随机化,并覆盖所有待测功能点,即覆盖率达100%,才能达到随机测试要求,如表6所示。
表6:向量控制模块随机测试结果
具体地,在完成定向测试和随机测试后,需要对待测模块进行定向测试和随机测试的协同测试,进一步验证功能点测试的正确性。定向测试中,每个测试用例对对应的功能点进行覆盖,所有定向测试用例共同完成对所有功能点的覆盖,覆盖率为100%。随机测试对向量控制模块所有功能点进行覆盖,由表7可知待测模块的所有功能点均已被覆盖,覆盖率为100%。
表7:向量控制模块功能点覆盖情况
具体地,在进行代码覆盖率分析时,包括对覆盖情况的分析和未覆盖情况的分析两种类型。
具体地,在本发明的优选实施例中,在对覆盖情况的分析时:代码覆盖率主要包括代码覆盖率、条件覆盖率、翻转覆盖率、分支覆盖率、状态机覆盖率和断言覆盖率。向量控制模块代码中未使用状态机和断言,因此,本发明未涉及状态机覆盖率和断言覆盖率。RSIC-V向量控制模块的代码覆盖率测试结果,如表8所示。
具体地,在本发明的优选实施例中,代码覆盖率,表示仿真过程中被执行的源代码占全部源代码的比例。通过对未覆盖代码分析,发现设计中的问题或测试用例漏洞。当代码覆盖率无法提高时,分析代码未覆盖原因,主要是测试用例疏忽、冗余代码或是起保护作用的代码。
具体地,条件覆盖率,判定式中有多个条件时,要求每个条件的取值均得到验证。
具体地,翻转覆盖率,本发明采用两态(0和1)翻转,对待测模块的所有输入信号翻转情况进行统计。对于单比特的信号,只有发生从0到1和从1到0的翻转,针对该信号的翻转覆盖率才是全面地。对于多比特信号,可分解为多个单比特信号得出。
分支覆盖率,用于度量程序中每个判定的分支(包括if,else和case等)是否都被测试到。为了保证向量控制模块的验证质量,要求代码覆盖率、条件覆盖率、分支覆盖率需要达到100%,翻转覆盖率大于80%。
表8:向量控制模块覆盖率
模块名称 | 代码覆盖率 | 条件覆盖率 | 翻转覆盖率 | 分支覆盖率 |
向量控制模块 | 97.63% | 96.23% | 81.95% | 92.23% |
具体地,在对未覆盖的情况进行分析时,为了提升向量控制模块的验证质量,需要对未覆盖的待测代码进行分析,并进行覆盖率处理。对代码未覆盖情况分析,发现case语句在分支语句完备的情况下,还存在default分支,导致default分支无法被执行到,如表9所示,一共16处,排除后代码覆盖率为100%。
表9:代码未被覆盖仿真结果
具体地,在对条件未覆盖情况分析,发现向量控制模块中第404行条件未覆盖,如表10示,信号ex5_instr.vsetvli_type.rs1为0和信号ex5_instr.vsetvli_type.rd都为0情况未覆盖。在对条件覆盖率分析时,发现ex5_instr.vsetvli_type.rs1和ex5_instr.vsetvli_type.rd都为0已经出现过,由于if-else语句条件优先级的原因,在第398行执行而无法到第404行执行,如表11所示。上述情况,一共3处,排除后条件覆盖率为100%。
表10:条件未被覆盖仿真结果
具体地,在对分支未覆盖情况分析,发现在待测模块的196行,存在case语句的default分支未覆盖,如表11和表12所示。iu_vu_rf0_tid为2bit信号,表示0到3线程,作为case语句条件时,四种情况均已经列出(00、01、10、11),因此,不会执行default分支。上述类似情况,一共6处,排除后分支覆盖率为100%。
表11
表12
具体地,通过对未覆盖的待测代码进行分析,并进行覆盖率处理,使得覆盖率得到提升,结果如表13所示。代码覆盖率、条件覆盖率和分支覆盖率为100%,翻转覆盖率为81.95%,均满足模块验证的覆盖率要求。
表13:排除后的向量控制模块覆盖率
模块名称 | 代码覆盖率 | 条件覆盖率 | 翻转覆盖率 | 分支覆盖率 |
向量控制模块 | 100% | 100% | 81.95% | 100% |
具体地,在构建验证平台之前需要撰写验证计划,目的在于,所撰写的验证计划为包括对所验证的功能点进行确定,对所确定的功能点进行列表形成功能点列表,对所列表的功能点的覆盖率和功能点功能的覆盖率进行预设。及对所列表功能点的验证顺序和方法进行编写。
作为一些可选的方式:需要说明的是,为了加速芯片验证效率,本申请针对向量控制模块特点,优化设计验证流程,构建高效率验证平台,以功能覆盖率和代码覆盖率为牵引量化验证进度。通过RISC-V向量控制模块验证,有效提升向量控制模块的可靠性,降低流片风险,减轻子系统级验证和系统级验证负担,使之专注于互联、交互响应和接口验证。
在本发明中,通过将激励信号同时传输至向量控制模块和参考模型中,对所输入的激励信号进行处理,生成控制信号,在本发明中功能点正确性,通过向量控制模块和参考模型输出信号,比对确定;功能点个数够不够,通过向量控制模块覆盖率体现,实现功能点的全覆盖和功能点的功能全覆盖,从而保证了流片质量。
实施例2
本发明的一种面向基于RISC-V指令集的向量控制模块的验证平台,如图2所示,包括:
激励信号生成器,所述激励信号生成器用于产生定向测试激励信号和带约束的随机测试激励信号;
参考模块,所述参考模块中含有参考模型,在对所输入的激励信号进行处理时,所述参考模块调用所述参考模型,所述参考模型用于接收所述激励信号生成器输出的控制信号,并对所输出的控制信号进行运算处理,与所述激励信号生成器的输入端电连接;
向量控制模块,所述向量控制模块接收激励信号生成器生成的激励信号,并将所述激励信号处理输出为控制信号,用于控制向量运算和向量处理;
监视器,所述监视器的一端接收所述向量控制模块输出测试信号,并将所输出的测试信号传送至比较器;
比较器,所述比较器一端用于接收所述参考模型输出的参考结果,另一端用于接收所述监视器传递的运行结果,并与参考模型的运行结果进行比较,用于判断通过向量控制模块和参考模块后的控制信号是否一致;
覆盖率分析模块,所述覆盖率分析模块用于接收所述参考模型输出的数据和所述监视器监视的数据。
作为一种可实施的方式,覆盖率分析模块所实现的是一个功能,列举说明,如:一个工程代码有100行。设计规范提取10个功能点,按10个功能点写测试用例,测试功能时候只是用到了80行代码。余下的20行代码,应该还是有其他功能的,因此要去设计文档提查看是否有遗漏功能点,再次开发新的测试用例,直到代码覆盖率100%。
具体地,本发明中的向量控制模块的验证平台,优选System Verilog和Makefile语言来实现,采用System Verilog搭建硬件验证平台、产生测试激励,Makefile脚本控制平台执行。
需要说明的是:激励信号生成器生成的两个激励信号是一样的,向量控制模块是实际芯片中使用的模块,参考模型是根据向量控制模块的功能,编写的模型。在实际应用时,给一样的测试信号,来判断向量控制模块是否有具有预设的功能。如设计手册中预设的功能等。
具体地,本发明面向基于RISC-V指令集的向量控制模块的验证平台的原理为:
激励信号生成器将所产生的激励信号同时传至参考模型、向量控制模块的输入端。激励信号通过参考模型后,输出至比较器中。与此同时,激励信号通过向量控制模块输出测试信号,通过监视器将向量控制模块测得的结果送到比较器。,接收监视器传递的运行结果,并与参考模型的运行结果进行对比。若相等,表示功能正确;若不相等,表示功能错误,log日志记录当前运行状态以供调试使用。激励信号通过参考模型和监视器得到的测试结果时,都会有覆盖率生成,以功能覆盖率和代码覆盖率为牵引量化验证进度。
需要说明的是:在一些可选的实施方式中,向量控制模块和参考模型都是依据所对应的手册或预设的手册进行编写,向量控制模块可以流片,而参考模块用于调用和实现参考模型或自身的功能,不可以流片。
需要说明的是,本发明的上述语言和脚本包括但不限于所列举的类型,与上述所列举的语言和脚本功能相似的,能够达到本发明相同功能的语言和脚本均属于本发明保护的范围,即本发明所指的脚本和语言仅是为了说明本发明的平台结构进行示例性的说明。
需要说明的是,在本发明中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。此外,本发明中“前”、“后”、“左”、“右”、“上”、“下”均以附图中表示的放置状态为参照。
最后应说明的是:以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,包括:
提取RISC-V指令集的向量控制模块的功能点;
根据功能点列表,编写激励信号;
利用所编写的激励信号对向量控制模块的功能点进行验证。
2.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,所述功能点列表中至少包括vset{i}vl{i}指令功能点、csr指令功能点和生成元素/位有效信号功能点。
3.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,对功能点进行验证的方法包括:
根据提取的功能点列表、以及激励信号与功能点的对应关系,编写参考模型;
将激励信号输入向量控制模块,获取所述向量模块处理后的第一控制信号和所述第一控制信号对应的第一覆盖率;
利用参考模型对激励信号进行处理,获取所述参考模型处理后的第二控制信号;
通过对所述第一控制信号和第二控制信号进行比较,得出向量控制模块功能点是否正确;通过第一覆盖率的大小,得出功能点是否齐全。
4.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,对功能点进行验证后,若所验证的功能点出现错误,则对错误功能点进行分析修复,若不出现错误,则完成验证。
5.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,对错误功能点进行分析修复的方法为:根据功能点列表和预设功能点列表对应的覆盖率和功能,重新对参考模型和激励信号进行编写,或对向量控制模块中的指令进行修改。
6.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,还包括利用所生成的激励信号和参考模型对向量控制模块的功能点的功能进行验证。
7.根据权利要求6所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,对向量模块的功能点的功能进行验证时:
根据提取的功能点列表、以及激励信号与功能点功能的对应关系,编写参考模型;
将激励信号输入向量控制模块,获取所述向量模块处理后的第三控制信号和所述第三控制信号对应的第三覆盖率;
利用参考模型对激励信号进行处理,获取所述参考模型处理后的第四控制信号;
通过对所述第三控制信号和第四控制信号进行比较,得出向量控制模块功能点功能是否正确;通过第三覆盖率的大小,得出功能点功能是否完整。
8.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,对向量模块功能点的覆盖率验证和向量功能点的功能覆盖率的验证结果均为预设覆盖率。
9.根据权利要求1所述的一种面向基于RISC-V指令集的向量控制模块的验证方法,其特征在于,对向量模块功能点的覆盖率和向量功能点的功能覆盖率验证的结果未达到预设覆盖率时,对未覆盖的部分进行重复验证,直至所有功能点的验证结果均达到预设,在进行是否达到预设计算时,将所有未覆盖的部分和覆盖部分的覆盖率进行求和,与预设值进行比较,若等于预设值则达到预设,若小于预设值,则未达到预设,进行重复验证。
10.一种面向基于RISC-V指令集的向量控制模块验证方法的验证平台,其特征在于,包括:
激励信号生成器,所述激励信号生成器用于产生定向测试激励信号和带约束的随机测试激励信号;
参考模块,所述参考模块中含有参考模型,在对所输入的激励信号进行处理时,所述参考模块调用所述参考模型,所述参考模型用于接收所述激励信号生成器输出的控制信号,并对所输出的控制信号进行运算处理,与所述激励信号生成器的输入端电连接;
向量控制模块,所述向量控制模块接收激励信号生成器生成的激励信号,并将所述激励信号处理输出为控制信号,用于控制向量运算和向量处理;
监视器,所述监视器的一端接收所述向量控制模块输出测试信号,并将所输出的测试信号传送至比较器;
比较器,所述比较器一端用于接收所述参考模型输出的参考结果,另一端用于接收所述监视器传递的运行结果,并与参考模型的运行结果进行比较,用于判断通过向量控制模块和参考模块后的控制信号是否一致;
覆盖率分析模块,所述覆盖率分析模块用于接收所述参考模型输出的数据和所述监视器监视的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310474941.8A CN116820922A (zh) | 2023-04-28 | 2023-04-28 | 面向基于risc-v指令集的向量控制模块的验证方法及平台 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310474941.8A CN116820922A (zh) | 2023-04-28 | 2023-04-28 | 面向基于risc-v指令集的向量控制模块的验证方法及平台 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116820922A true CN116820922A (zh) | 2023-09-29 |
Family
ID=88128349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310474941.8A Pending CN116820922A (zh) | 2023-04-28 | 2023-04-28 | 面向基于risc-v指令集的向量控制模块的验证方法及平台 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820922A (zh) |
-
2023
- 2023-04-28 CN CN202310474941.8A patent/CN116820922A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4266226B2 (ja) | 選択的に有効にされるチェッカーを用いた設計検証システムおよび方法 | |
JP7270764B2 (ja) | 人工知能チップ検証 | |
US8972785B2 (en) | Classifying processor testcases | |
US6993736B2 (en) | Pending bug monitors for efficient processor development and debug | |
CN100405323C (zh) | 一种在指令级随机测试中支持ejtag测试的实现方法 | |
US20070005322A1 (en) | System and method for complex programmable breakpoints using a switching network | |
CN109885905B (zh) | 一种提高数字电路功能验证效率的验证系统 | |
JP3825572B2 (ja) | 半導体集積回路の設計検証装置、方法及び記憶媒体 | |
Yang et al. | JIT trace-based verification for high-level synthesis | |
US6567934B1 (en) | Method and apparatus for verifying multiprocessing design in a unit simulation environment | |
CN101894073B (zh) | 基于控制流交集的缺陷自动定位装置及其自动定位方法 | |
Bombieri et al. | Functional qualification of TLM verification | |
CN111624475B (zh) | 大规模集成电路的测试方法及系统 | |
CN115794639B (zh) | 基于流程的可视化测试及可视化仿真模拟测试系统和方法 | |
CN116820922A (zh) | 面向基于risc-v指令集的向量控制模块的验证方法及平台 | |
CN115422865B (zh) | 仿真方法及装置、计算设备、计算机可读存储介质 | |
Zhang et al. | Automatic test program generation for out-of-order superscalar processors | |
Cao et al. | A post-silicon trace analysis approach for system-on-chip protocol debug | |
Hsieh et al. | On application of data mining in functional debug | |
US20050171756A1 (en) | Method and apparatus for the automatic correction of faulty wires in a logic simulation hardware emulator / accelerator | |
Bertacco | Post-silicon debugging for multi-core designs | |
Refan et al. | Bridging presilicon and postsilicon debugging by instruction-based trace signal selection in modern processors | |
CN116256620B (zh) | Chiplet集成芯片的检测方法、装置、电子设备及存储介质 | |
CN117762718B (zh) | 一种指令监测方法、装置、设备及存储介质 | |
Bindu | A Rigorous Approach to Microprocessor Verification using UVM |
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 |