CN116701085B - RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置 - Google Patents

RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置 Download PDF

Info

Publication number
CN116701085B
CN116701085B CN202310648072.6A CN202310648072A CN116701085B CN 116701085 B CN116701085 B CN 116701085B CN 202310648072 A CN202310648072 A CN 202310648072A CN 116701085 B CN116701085 B CN 116701085B
Authority
CN
China
Prior art keywords
signal
instruction
verified
read
processor
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
Application number
CN202310648072.6A
Other languages
English (en)
Other versions
CN116701085A (zh
Inventor
刘易铖
冯维直
吴志林
张立军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN202310648072.6A priority Critical patent/CN116701085B/zh
Publication of CN116701085A publication Critical patent/CN116701085A/zh
Application granted granted Critical
Publication of CN116701085B publication Critical patent/CN116701085B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2273Test methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明提供一种RISC‑V处理器Chisel设计指令集一致性的形式验证方法及装置,所述方法包括:在待验证处理器中引出该待验证处理器的输入信号和第一执行结果;将输入信号传递给指令集参考模型,以得到第二执行结果;将第一执行结果与第二执行结果一致作为待验证性质,并生成指令的验证范围约束;将包含参考模型、待验证性质和验证范围约束的待验证处理器转换为FIRRTL中间表示,并依据FIRRTL中间表示,得到迁移系统;基于迁移系统及其包含的性质和约束,得到待验证处理器的验证结果。本发明通过一个模块化、与原文对应、可参数化配置的参考模型描述RISC‑V指令集规范的行为,减轻了验证人员对形式化验证知识的需求,无需人工编写待验证的性质。

Description

RISC-V处理器Chisel设计指令集一致性的形式验证方法及 装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置。
技术背景
RISC-V是一个新兴的开源精简指令集架构,由加州大学伯克利分校在2010年首次发布。RISC-V通过对现有指令集架构的学习,吸收了现有各体系结构的优点,去除了对历史遗留问题的顾及和旧有技术的依赖。RISC-V作为精简指令集,包含较少种类的指令,同时采用模块化设计,并且保留大量的自定义编码空间,允许用户根据需求进行精简或扩展。
Chisel是由加州大学伯克利分校设计的开源硬件构建语言,在目前流行的敏捷硬件开发中发挥重要作用。Chisel将硬件构造元语添加到Scala编程语言中,为用户提供了现代编程语言的能力,可以编写复杂的、参数化的电路生成器,生成可综合的Verilog代码。
处理器设计的基本要求是符合对应指令集规范的要求。对于使用Chisel语言设计的RISC-V处理器现有的验证指令集一致性的方法如下。
使用测试方法,测试Chisel设计是否满足指令集规范的要求。Chisel语言通过ChiselTest库支持对其硬件设计使用传统方法进行测试。ChiselTest库可以对电路设计进行仿真,模拟电路的执行情况。对Chisel上的RISC-V处理器设计可以编写测试脚本,模拟处理器执行一系列的指令,检查指令执行的结果是否符合指令集规范。
利用Chisel生成的Verilog代码,进行测试或者形式化验证。Verilog作为硬件描述语言在硬件设计领域有广泛的应用,有丰富的工具进行测试或者形式化验证。对于测试,可以使用Verilator等工具对Verilog进行仿真,执行指令序列,检查执行结果。对于形式化验证方法,可以手工编写或利用商业工具中提供的针对RISC-V指令集一致性的SVA性质进行验证;或者利用Verilog的等价性验证工具,与处理器Verilog参考模型进行等价性验证。
但目前并没有针对RISC-V处理器Chisel设计的指令集一致性的形式验证方案。对于Chisel上的测试方法,其问题在于不能对处理器设计进行完备的验证,即通过测试不能保证设计的正确性。对Chisel生成的Verilog进行测试或形式验证的方法,延长了工具链,需要再根据生成的Verilog代码与不同的工具对接。
发明内容
针对以上问题,本发明公开了一种RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置。本发明通过一个模块化、与原文对应、可参数化配置的参考模型描述RISC-V指令集规范的行为,减轻了验证人员对形式化验证知识的需求,无需人工编写待验证的性质;通过一系列同步接口和辅助工具,简化了待验证处理器设计和参考模型之间的连接,并可以方便的设置验证范围;使用形式化方法中的模型检测技术,对指定的验证范围,如果存在设计问题则一定能发现;全部验证的连接与配置工作在Chisel代码中完成;当发现错误时,可以返回对应波形反例。
本发明的技术方案包括:
一种RISC-V处理器Chisel设计指令集一致性的形式验证方法,所述方法包括:
在待验证处理器中引出该待验证处理器的输入信号和第一执行结果;
将输入信号传递给指令集参考模型,以得到第二执行结果;其中,所述指令集参考模型是根据RISC-V指令集规范并利用Chisel编写的用于获取指令信号参考结果的计算模型;
将所述第一执行结果与所述第二执行结果一致作为待验证性质,并生成指令的验证范围约束;
将包含参考模型、待验证性质和验证范围约束的待验证处理器转换为FIRRTL中间表示,并依据所述FIRRTL中间表示,得到迁移系统;
基于迁移系统及其包含的性质和约束,得到所述待验证处理器的验证结果。
进一步地,所述输入信号包括:指令信号和指令valid信号;其中,所述指令信号为计算类指令或调度类指令;
所述第一执行结果包括:第一指令PC信号和若干个第一通用寄存器信号;
所述第二执行结果包括:第二指令PC信号和若干个第二通用寄存器信号;
或,
所述输入信号包括:指令信号、指令valid信号和读内存数据信号;其中,所述指令信号为访存类指令;
所述第一执行结果包括:第一指令PC信号、若干个第一通用寄存器信号和第一访存接口信号;其中,所述第一访存接口信号包括:第一读/写内存数据信号、第一读/写内存valid信号、第一读/写内存地址信号和第一读/写内存位宽信号;(第一读/写内存数据信号指第一读内存数据信号和第一写内存数据信号,两个信号并非一个公用信号,其他读/写信号同理)
所述第二执行结果包括:第二指令PC信号、若干个第二通用寄存器信号和第二访存接口信号;其中,所述第二访存接口信号包括:第二读/写内存数据信号、第二读/写内存valid信号、第二读/写内存地址信号和第二读/写内存位宽信号。
进一步地,所述将输入信号传递给指令集参考模型,以得到所述指令信号的第二执行结果,包括:
根据所述指令valid信号判断指令信号是否有效;
在所述指令信号有效的情况下,每个时钟执行一条指令;
依据所述指令集参考模型支持的位宽及指令集扩展,以及指令集规范中不同指令的格式,判定所述指令信号的类型;
依据指令信号类型,对指令进行译码,以获得获取寄存器地址或立即数;
在所述指令信号为计算类指令或调度类指令的情况下,基于所述寄存器地址或所述立即数,执行所述指令信号,更新寄存器值;
在所述指令信号为访存指令的情况下,基于所述寄存器地址或所述立即数,执行所述指令信号,更新寄存器值和访存接口值;
在每条指令信号执行完毕后,得到所述指令信号的参考结果。
进一步地,将所述第一执行结果与所述第二执行结果一致作为待验证性质,所述待验证性质包括:
第一指令PC信号与第二指令PC信号相同;
全部第一通用寄存器信号与对应第二通用寄存器信号相同;
第一读/写内存valid信号、第一读/写内存地址信号、第一读/写内存位宽信号、第一写内存数据信号与对应第二读/写内存valid信号、第二读/写内存地址信号、第二读/写内存位宽信号、第二写内存数据信号相同。
进一步地,所述生成指令验证范围约束,包括:
依据选择的指令集合,判断指令信号是否所述选择的指令集合内;
设置指令在所述选择指令集合内作为验证的前置条件。
进一步地,所述基于迁移系统及其包含的性质和约束,得到所述待验证处理器的验证结果,包括:
将迁移系统输出为BTOR2格式;
调用模型检测工具,对BTOR2格式的迁移系统进行形式化验证,在满足指令验证范围约束的前提下,检查状态空间内是否有违反待验证性质的情况;
如果发现反例,根据Chisel和BTOR2的对应关系生成反例波形。
进一步地,所述将包含参考模型和待验证性质的待验证处理器转换为FIRRTL中间表示之前,还包括:
设置指令集参考模型使用的位宽:32或64;
设置指令集参考模型支持的扩展指令集:RVM整数乘除标准扩展、RVC压缩指令标准扩展。
一种RISC-V处理器Chisel设计指令集一致性的形式验证装置,所述装置包括:
待验证处理器,用于基于输入信号,得到第一执行结果;
辅助模块,用于从待验证处理器中引出该待验证处理器的输入信号和第一执行结果,并将所述输入信号和所述第一执行结果传递给同步模块;生成指令的验证范围;
同步模块,用于将所述输入信号和所述第一执行结果传递给指令集参考模型;将所述执行结果与所述参考结果一致作为待验证性质;
指令集参考模型,用于基于输入信号,得到第二执行结果;其中,所述指令集参考模型是根据RISC-V指令集规范并利用Chisel编写的用于获取指令信号参考结果的计算模型;
检测模块,用于将包含参考模型、待验证性质和验证范围约束的待验证处理器转换为FIRRTL中间表示,并依据所述FIRRTL中间表示,得到迁移系统;基于迁移系统及其包含的性质和约束,得到所述待验证处理器的验证结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述任一项所述的方法。
一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令在被执行时实现上述任一项所述的方法。
与现有的技术相比,本发明至少具有以下有益效果:
1)Chisel层面端到端的验证方案。可以将整个处理器设计作为整体进行验证,不需要拆分模块;整个验证的连接与配置工作在Chisel中完成;无需使用Chisel断言编写RISC-V指令集一致性性质;可以返回对应的反例波形图。
2)简单的处理器信号同步接口。只需提取指令信号、寄存器信号、访存信号,即可获取处理器的执行情况。
3)提供结构清晰、可配置的参考模型。利用Chisel和Scala的语法特性,对应RISC-V指令集规范文档原文分模块实现;可根据需要配置参考模型支持的位宽和扩展指令集。
附图说明
图1是RISC-V处理器Chisel设计指令集一致性的形式验证方法的流程图。
具体实施方法
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明实施例的一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
本发明的RISC-V处理器Chisel设计指令集一致性的形式验证方法,通过一个Chisel编写的指令集参考模型,表达RISC-V指令集规范中约定的行为;通过同步模块与辅助模块,连接待验证处理器和参考模型,设置验证范围,组成包含性质的待验证系统;转换为迁移系统模型,调用模型检测工具求解;如果有则生成反例波形。
具体步骤包括:
步骤1:根据RISC-V指令集规范,利用Chisel编写指令集参考模型,接受用户参数化控制参考模型支持功能。
本发明的参考模型支持RISC-V指令集中32/64位基础指令集I、乘除指令集M、压缩指令集C。参考模型每个时钟执行一条指令,效仿迁移系统模型的形式,通过当前值now信号和下一时钟值next信号描述每个寄存器值的变化情况。
步骤2:在Chisel设计的待验证处理器中引出输入信号和第一执行结果,分别接入辅助模块;辅助模块跨模块传递信号,接入同步模块。
在本实施例中,输入信号包括指令信号和指令valid信号,其中,在指令信号为计算类指令或调度类指令的情况下,第一执行结果包括第一指令PC信号和若干个第一通用寄存器信号;在指令信号为访存类指令的情况下,第一执行结果包括第一指令PC信号、若干个第一通用寄存器信号和第一访存接口信号,且该第一访存接口信号包括第一读/写内存数据信号、第一读/写内存valid信号、第一读/写内存地址信号和第一读/写内存位宽信号。
步骤3:同步模块将输入信号作为参考模型执行的指令输入,以得到第二执行结果。
在本实施例中,在指令信号为计算类指令或调度类指令的情况下,第二执行结果包括:第二指令PC信号和若干个第二通用寄存器信号;在指令信号为访存类指令的情况下,第二执行结果包括:第二指令PC信号、若干个第二通用寄存器信号和第二访存接口信号,且该第二访存接口信号包括第二读/写内存数据信号、第二读/写内存valid信号、第二读/写内存地址信号和第二读/写内存位宽信号。
同步模块通过辅助模块获取待验证处理器的指令信号(包括指令valid信号、指令信号、指令PC信号)、32个通用寄存器信号、访存接口信号(包括读写valid信号、访存地址信号、访存数据信号、访存位宽信号);将指令信号传递给参考模型进行执行,获取执行结果;通过assert指令生成待验证性质要求执行后两者寄存器、访存信号相同。
之后,参考模型的执行流程如下:根据指令valid信号判断输入指令是否有效;对于有效的指令信号,依据指令集规范中不同指令的格式,判断指令类型,调用相应代码执行指令;指令执行首先按照对应格式译码,获取所需寄存器地址或立即数,然后对于计算类和调度类指令,根据计算规则修改next信号组中的相应寄存器,对于访存类指令,结合访存数据信号修改寄存器值和访存接口值。此外参考模型利用Chisel和Scala的语法特点,分模块实现扩展指令集,根据用户传入的位宽信息和扩展指令集支持情况控制参考模型功能,并且通过io接口暴露寄存器状态信息。
4)将第一执行结果与第二执行结果一致作为待验证性质,并使用辅助模块提供的方法,生成指令的验证范围约束。
辅助模块中,根据指令集规范对不同指令集扩展的划分及指令功能,将所有参考模型支持的指令分成若干集合,复用参考模型代码,提供接口生成判断传入的指令信号是否属于当前集合的性质;对于需要验证的指令,可以选择相应的一些集合接口生成约束性质,传入assume指令实现对验证范围的配置。
需要说明的是,本发明的辅助模块利用整体连接和飞线机制,跨模块传递处理器信号;通过寄存器控制信号延迟;通过复用参考模型代码和assume指令支持快速配置验证指令范围。对于处理器任意模块中连接到辅助模块相应接口上的信号,辅助模块接收信号并通过唯一编号注册飞线;与同步模块连接时,根据飞线编号获取对应处理器信号,支持参数控制信号延迟。
5)将包含参考模型和待验证性质和验证范围约束的待验证处理器转换为FIRRTL中间表示,进而转换为迁移系统。
6)基于迁移系统及其包含的性质和约束,得到待验证处理器的验证结果。
在一个实施例中,本发明将迁移系统输出为BTOR2格式,调用模型检测工具进行验证;如果发现反例,根据Chisel和BTOR2的对应关系生成反例波形。
具体来说,模型检测工具接收到包含待验证处理器、参考模型、待验证性质的完整迁移系统模型,通过指定或者默认的模型检测算法,按照配置的模型检测参数,对迁移系统进行形式化验证。在assume中设置的性质始终满足的前提下,检查所有状态空间中是否有状态违反assert中待验证性质的情况;即在配置的指令验证范围内,检查是否有状态使得待验证处理器和参考模型执行结果不同。如果有,模型检测工具返回违反assert的反例,描述到达坏状态的整个路径,包括迁移系统每个阶段的输入信号和状态信号的值。
综上所述,本发明相比于其他的形式化验证方法,基本不需要用户具有形式化验证的知识,使用Chisel的语法连接电路信号即可,降低了形式化验证方法的使用难度;针对RISC-V指令集一致性验证问题设计,无需使用Chisel断言编写待验证性质,可以在不同Chisel处理器设计中复用;验证的配置与运行均在Chisel代码中完成,自动调用后端模型检测工具;参考模型采用模块化实现,可参数化配置,可与指令集规范文档原文对应。相比于测试方法,形式化方法的验证更完备,无需设置测试用例。相比于利用Verilog工具的验证方法,验证工作流程更短,不用再在Verilog代码层面进行连接配置等工作。
以下以NutShell处理器的验证过程为例。NutShell是使用Chisel开发的基于RISC-V的顺序单发射处理器实现。基于9级流水线顺序设计,支持M、S、U三个特权级,支持I、M、A、C、Zicsr与Zifencei指令扩展。
在NutShell上的实验流程如下:
1.将本发明的项目作为依赖加入NutShell项目。
2.在NutShell处理器的写回模块,实例化参考模型和同步模块,配置指令集位宽及拓展RV64IMC。
3.获取写回模块执行的指令信号;使用辅助模块在寄存器模块中获取寄存器信号、在访存模块中获取访存信号;将获取的信号传入同步模块。
4.使用辅助模块设置指令验证范围为IMC指令集合。
5.调用ChiselTest中的verify函数,设置模型检测后端为Pono,通过BMC算法检查17个周期,进行验证。
在一个小时内,Pono可以发现17个时钟周期以内在NutShell中故意设置的错误,并返回相应反例,ChiselTest根据模型检测反例生成对应的反例波形。验证过程中,1至4步仅需使用Chisel和Scala语法调用提供的同步模块和辅助模块,第5步仅需设置两个简单的验证参数。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (9)

1.一种RISC-V处理器Chisel设计指令集一致性的形式验证方法,其特征在于,所述方法包括:
在待验证处理器中引出该待验证处理器的输入信号和第一执行结果;
将输入信号传递给指令集参考模型,以得到第二执行结果;其中,所述指令集参考模型是根据RISC-V指令集规范并利用Chisel编写的用于获取指令信号参考结果的计算模型;
所述输入信号包括:指令信号和指令valid信号;其中,所述指令信号为计算类指令或调度类指令;
所述第一执行结果包括:第一指令PC信号和若干个第一通用寄存器信号;
所述第二执行结果包括:第二指令PC信号和若干个第二通用寄存器信号;
或,
所述输入信号包括:指令信号、指令valid信号和读内存数据信号;其中,所述指令信号为访存类指令;
所述第一执行结果包括:第一指令PC信号、若干个第一通用寄存器信号和第一访存接口信号;其中,所述第一访存接口信号包括:第一读/写内存数据信号、第一读/写内存valid信号、第一读/写内存地址信号和第一读/写内存位宽信号;
所述第二执行结果包括:第二指令PC信号、若干个第二通用寄存器信号和第二访存接口信号;其中,所述第二访存接口信号包括:第二读/写内存数据信号、第二读/写内存valid信号、第二读/写内存地址信号和第二读/写内存位宽信号;
将所述第一执行结果与所述第二执行结果一致作为待验证性质,并生成指令的验证范围约束;
将包含参考模型、待验证性质和验证范围约束的待验证处理器转换为FIRRTL中间表示,并依据所述FIRRTL中间表示,得到迁移系统;
基于迁移系统及其包含的性质和约束,得到所述待验证处理器的验证结果。
2.如权利要求1所述的方法,其特征在于,所述将输入信号传递给指令集参考模型,以得到所述指令信号的第二执行结果,包括:
根据所述指令valid信号判断指令信号是否有效;
在所述指令信号有效的情况下,每个时钟执行一条指令;
依据所述指令集参考模型支持的位宽及指令集扩展,以及指令集规范中不同指令的格式,判定所述指令信号的类型;
依据指令信号类型,对指令进行译码,以获得获取寄存器地址或立即数;
在所述指令信号为计算类指令或调度类指令的情况下,基于所述寄存器地址或所述立即数,执行所述指令信号,更新寄存器值;
在所述指令信号为访存指令的情况下,基于所述寄存器地址或所述立即数,执行所述指令信号,更新寄存器值和访存接口值;
在每条指令信号执行完毕后,得到所述指令信号的参考结果。
3.如权利要求1所述的方法,其特征在于,将所述第一执行结果与所述第二执行结果一致作为待验证性质,所述待验证性质包括:
第一指令PC信号与第二指令PC信号相同;
全部第一通用寄存器信号与对应第二通用寄存器信号相同;
第一读/写内存valid信号、第一读/写内存地址信号、第一读/写内存位宽信号、第一写内存数据信号与对应第二读/写内存valid信号、第二读/写内存地址信号、第二读/写内存位宽信号、第二写内存数据信号相同。
4.如权利要求1所述的方法,其特征在于,所述生成指令验证范围约束,包括:
依据选择的指令集合,判断指令信号是否所述选择的指令集合内;
设置指令在所述选择指令集合内作为验证的前置条件。
5.如权利要求1所述的方法,其特征在于,所述基于迁移系统及其包含的性质和约束,得到所述待验证处理器的验证结果,包括:
将迁移系统输出为BTOR2格式;
调用模型检测工具,对BTOR2格式的迁移系统进行形式化验证,在满足指令验证范围约束的前提下,检查状态空间内是否有违反待验证性质的情况;
如果发现反例,根据Chisel和BTOR2的对应关系生成反例波形。
6.如权利要求1所述的方法,其特征在于,所述将包含参考模型和待验证性质的待验证处理器转换为FIRRTL中间表示之前,还包括:
设置指令集参考模型使用的位宽:32或64;
设置指令集参考模型支持的扩展指令集:RVM整数乘除标准扩展、RVC压缩指令标准扩展。
7.一种RISC-V处理器Chisel设计指令集一致性的形式验证装置,其特征在于,所述装置包括:
待验证处理器,用于基于输入信号,得到第一执行结果;
辅助模块,用于从待验证处理器中引出该待验证处理器的输入信号和第一执行结果,并将所述输入信号和所述第一执行结果传递给同步模块;生成指令的验证范围;
同步模块,用于将所述输入信号和所述第一执行结果传递给指令集参考模型;将所述第一执行结果与第二执行结果一致作为待验证性质;
指令集参考模型,用于基于输入信号,得到第二执行结果;其中,所述指令集参考模型是根据RISC-V指令集规范并利用Chisel编写的用于获取指令信号参考结果的计算模型;
所述输入信号包括:指令信号和指令valid信号;其中,所述指令信号为计算类指令或调度类指令;
所述第一执行结果包括:第一指令PC信号和若干个第一通用寄存器信号;
所述第二执行结果包括:第二指令PC信号和若干个第二通用寄存器信号;
或,
所述输入信号包括:指令信号、指令valid信号和读内存数据信号;其中,所述指令信号为访存类指令;
所述第一执行结果包括:第一指令PC信号、若干个第一通用寄存器信号和第一访存接口信号;其中,所述第一访存接口信号包括:第一读/写内存数据信号、第一读/写内存valid信号、第一读/写内存地址信号和第一读/写内存位宽信号;
所述第二执行结果包括:第二指令PC信号、若干个第二通用寄存器信号和第二访存接口信号;其中,所述第二访存接口信号包括:第二读/写内存数据信号、第二读/写内存valid信号、第二读/写内存地址信号和第二读/写内存位宽信号;
检测模块,用于将包含参考模型、待验证性质和验证范围约束的待验证处理器转换为FIRRTL中间表示,并依据所述FIRRTL中间表示,得到迁移系统;基于迁移系统及其包含的性质和约束,得到所述待验证处理器的验证结果。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令在被执行时实现权利要求1至6中任一项所述的方法。
CN202310648072.6A 2023-06-02 2023-06-02 RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置 Active CN116701085B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310648072.6A CN116701085B (zh) 2023-06-02 2023-06-02 RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310648072.6A CN116701085B (zh) 2023-06-02 2023-06-02 RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置

Publications (2)

Publication Number Publication Date
CN116701085A CN116701085A (zh) 2023-09-05
CN116701085B true CN116701085B (zh) 2024-03-19

Family

ID=87838569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310648072.6A Active CN116701085B (zh) 2023-06-02 2023-06-02 RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置

Country Status (1)

Country Link
CN (1) CN116701085B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003124A (en) * 1994-05-10 1999-12-14 Sgs-Thomas Microelectronics S.A. Electronic circuit and method for time saving use of a coprocessor
CN1846194A (zh) * 2003-08-28 2006-10-11 美普思科技有限公司 一种在处理器中执行的计算线程的暂停与解除分配的整合机制
CN101187858A (zh) * 2007-12-05 2008-05-28 中国科学院计算技术研究所 一种risc处理器装置及其多模式下数据处理方法
CN111400997A (zh) * 2020-03-26 2020-07-10 超验信息科技(长沙)有限公司 一种基于同步执行的处理器核验证方法、系统及介质
CN115496017A (zh) * 2022-09-06 2022-12-20 中国科学院软件研究所 Chisel断言语言的类SVA扩展及形式化验证方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003124A (en) * 1994-05-10 1999-12-14 Sgs-Thomas Microelectronics S.A. Electronic circuit and method for time saving use of a coprocessor
CN1846194A (zh) * 2003-08-28 2006-10-11 美普思科技有限公司 一种在处理器中执行的计算线程的暂停与解除分配的整合机制
CN101187858A (zh) * 2007-12-05 2008-05-28 中国科学院计算技术研究所 一种risc处理器装置及其多模式下数据处理方法
CN111400997A (zh) * 2020-03-26 2020-07-10 超验信息科技(长沙)有限公司 一种基于同步执行的处理器核验证方法、系统及介质
CN115496017A (zh) * 2022-09-06 2022-12-20 中国科学院软件研究所 Chisel断言语言的类SVA扩展及形式化验证方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
芯片设计形式验证;詹博华,吴志林;《前瞻科技》;第23-32页 *

Also Published As

Publication number Publication date
CN116701085A (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
KR100329305B1 (ko) 시스템설계검증방법및설계검증장치
US8122428B2 (en) Methods and apparatus for automation and facilitating design of register maps
US20100293513A1 (en) Method and System for Design Simplification Through Implication-Based Analysis
CN115952758B (zh) 芯片验证方法、装置、电子设备及存储介质
US10970449B2 (en) Learning framework for software-hardware model generation and verification
US11513818B1 (en) Method, product, and system for integrating a hardware accelerator with an extensible processor
KR20080055913A (ko) 집적회로 디자인 시뮬레이션을 위한 어써션의 개발 방법 및시스템과 장치
US8140315B2 (en) Test bench, method, and computer program product for performing a test case on an integrated circuit
JP5109143B2 (ja) 検証装置および検証方法
Lin et al. Concolic testing of SystemC designs
Bombieri et al. Incremental ABV for functional validation of TL-to-RTL design refinement
US7228513B2 (en) Circuit operation verification device and method
CN116701085B (zh) RISC-V处理器Chisel设计指令集一致性的形式验证方法及装置
Bombieri et al. Reusing RTL assertion checkers for verification of SystemC TLM models
CN116157799A (zh) 动态cdc验证方法
Huggi et al. Design and verification of memory elements using python
CN111338761B (zh) 一种51单片机虚拟中断控制器及实现方法
JP2011070343A (ja) 論理エミュレーション方法及び論理エミュレーションプログラム
CN114647568A (zh) 自动化测试方法、装置、电子设备及可读存储介质
Toma et al. Combining several paradigms for circuit validation and verification
Bombieri et al. Correct-by-construction generation of device drivers based on RTL testbenches
US20240176722A1 (en) Automated public certification of specifications and software
KR100928181B1 (ko) 디지털 시스템 설계 방법
CN117971238A (zh) 一种用于验证指令集中指令相关的系统及方法
CN112131807A (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