CN108228314B - 一种基于设备规约的虚拟原型错误检测方法 - Google Patents
一种基于设备规约的虚拟原型错误检测方法 Download PDFInfo
- Publication number
- CN108228314B CN108228314B CN201711265443.3A CN201711265443A CN108228314B CN 108228314 B CN108228314 B CN 108228314B CN 201711265443 A CN201711265443 A CN 201711265443A CN 108228314 B CN108228314 B CN 108228314B
- Authority
- CN
- China
- Prior art keywords
- register
- virtual prototype
- error detection
- key component
- hardware
- 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
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/45516—Runtime code conversion or optimisation
-
- 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/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Abstract
本发明公开了一种基于设备规约的虚拟原型错误检测方法,包括以下步骤:步骤1:使用SystemRDL语言描述硬件设备的规约;步骤2:将硬件设备规约转化为一个可执行的FDM模型;步骤3:通过运行硬件设备的虚拟原型来记录抓取到设备运行的trace序列;步骤4:将FDM模型和trace序列作为输入,利用符号执行引擎对虚拟原型进行错误检测。本发明基于硬件设备的SystemRDL规约,通过自动转换工具可以得到对应硬件设备的FDM模型并以此为参照来检测硬件设备虚拟原型中可能存在的错误,从而能够在早期系统设计的时候及时发现错误。
Description
技术领域
本发明属于计算机技术领域,涉及硬件设备规约转换技术、虚拟原型状态抓取技术及符号执行技术,尤其涉及到了对硬件设备规约的建立,并将不可执行的设备规约转换为可执行的设备模型,并作为硬件设备的高阶参照标准,实现了以此为参照来检测设备虚拟原型中可能存在的错误。
背景技术
规约(Specification)是指针对设计或协议所应该遵循的一组约束。它是作为后期实施行为的参照标准。硬件设备规约定义了一个设备在设计之初给定的设备应该遵循的约束并以此为参照。目前工业界广泛采用SystemRDL语言来描述一个硬件设备的规约,并且它贯穿于该硬件设备的整个生命周期。它不仅可以作为硬件设备后期具体实现的参照标准,还可以用于在不同组织或不同硬件厂商之间共享该硬件设备IP(IntellectualProperty)。SystemRDL语言的发展增强了传统使用说明文档来描述设备规约的可读性和可操作性,近年来伴随着硬件工程师需求的提高,SystemRDL的表达能力也在不断地增强,预计近一两年内官方会发布SystemRDL v2.0版本,让工程师们可以更加高效地描述一个硬件设备的规约。
然而,现阶段的SystemRDL v1.0版本尚且存在一些表达能不足的问题,难以完成对设备寄存器的行为逻辑的描述。所以,增强其表达能力已经成为一个迫切需要解决的问题。同时,使用SystemRDL描述的设备规约是不能直接执行的,需要对其加以转换才能使之成为可执行的设备模型。
符号执行(Symbolic Execution)是计算机领域中一种非常重要的方法,在计算机软硬件及控制系统的测试和验证中得到了广泛的应用。对于可执行程序中的某些变量可以设置为符号化的变量,通过在符号执行引擎中使用相应的符号值代替真实值加以执行。同时在执行过程中如果遇到了分支,并且该分支的判断条件中存在符号变量,那么符号执行引擎将会对该分支创建所有可能的分支进程来分别执行不同的情况。在程序执行的最后,符号执行引擎会将执行过程中记录的各个符号变量的表达式以合取的方式传递给约束求解器并返回相应符号变量的具体值。
发明内容
本发明的目的是提出一种基于设备规约的虚拟原型错误检测方法,该方法将使用SystemRDL语言来描述硬件设备规约转换成一种可执行的FDM模型,由于使用SystemRDL语言来描述硬件设备规约是一个硬件设备的参照标准,从而可以将可执行的FDM模型视作该硬件设备的可执行参照模型,并以此来检测该硬件设备的其他具体实现(如设备的虚拟原型)是否满足了设备的规约,是否在具体实现中存在可能的错误。
实现本发明目的的具体技术方案是:
一种基于设备规约的虚拟原型错误检测方法,包括以下步骤:
步骤1:使用SystemRDL语言描述硬件设备的规约;
步骤2:将硬件设备规约转化为一个可执行的FDM模型;
步骤3:通过运行硬件设备的虚拟原型来记录抓取到设备运行的trace序列;
步骤4:以前两个步骤为基础,将FDM模型和trace序列作为输入,利用符号执行引擎对虚拟原型进行错误检测。
本发明提出的基于设备规约的虚拟原型错误检测方法中,所述硬件设备规约采用SystemRDL语言进行描述,所述SystemRDL语言包括:field、register、register file、address map、signal、macro和function关键组件和设备寄存器的属性;其中,
所述关键组件field用于指定设备寄存器的每一位或某几位所具备的属性和名称;
所述关键组件register用于描述硬件设备所具有的寄存器,同时指定相应寄存器的属性、实例名称以及地址偏移量;
所述关键组件register file用于描述某些寄存器被划分归并为一个组;
所述关键组件address map用于指定所述寄存器或寄存器组组合成为一个硬件设备地址空间;
所述关键组件signal用于定义一条连线连接其他组件的输入或输出;
所述关键组件macro用于定义在“function”组件中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
所述关键组件function用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述。
所述设备寄存器的属性用于指定设备寄存器所应具备的特性,包括读写访问权限,寄存器的位宽。
本发明提出的基于设备规约的虚拟原型错误检测方法中,使用SystemRDL语言描述的硬件设备规约是不可执行的,需将该硬件设备规约转换为可执行的FDM模型。
本发明提出的基于设备规约的虚拟原型错误检测方法中,所述抓取硬件设备虚拟原型运行时的trace序列是通过在虚拟机中运行对应硬件设备的虚拟原型并加以记录。
本发明提出的基于设备规约的虚拟原型错误检测方法,将转换得到的可执行FDM模型和从虚拟原型抓取得到的trace序列作为输入,利用符号执行引擎来符号化执行FDM模型并将状态结果与虚拟原型trace序列中的相应状态做对比进行错误检测。
本发明提出的基于设备规约的虚拟原型错误检测方法中,所述可执行的FDM模型,其组成是基于C/C++格式的源代码文件集合,包含了硬件设备模型的主函数和各个接口寄存器的行为逻辑;其中:
所述主函数用于控制硬件设备模型的输入输出;
所述接口寄存器的行为逻辑用于描述接口寄存器在影响设备动作请求后的状态变迁。
本发明提出的基于设备规约的虚拟原型错误检测方法中,所述抓取的虚拟原型运行时的trace序列是该硬件设备虚拟原型在运行过程中设备接口寄存器的状态变化以及相应的动作请求。
本发明的有益效果:可以高效地将硬件工程师建立的使用SystemRDL语言描述的硬件设备规约转换为一个可执行的FDM模型,同时抓取设备虚拟原型在运行时的trace序列,以此作为输入,通过符号执行引擎来符号化执行FDM模型并将状态结果与虚拟原型trace序列中的相应状态做对比进行错误检测。这将减少硬件设备设计中的错误并极大地提高硬件设计的正确性。
附图说明
图 1为本发明的流程图;
图 2为本发明中抓取设备运行的trace序列的框架图。
具体实施方式
结合以下具体实施例和附图,对本发明作进一步的详细说明。
本发明提供了一种基于设备规约的虚拟原型错误检测方法,包括以下步骤:
步骤1:使用SystemRDL语言描述硬件设备的规约;
步骤2:将硬件设备规约转化为一个可执行的FDM模型;
步骤3:通过运行硬件设备的虚拟原型来记录抓取到设备运行的trace序列;
步骤4:以前两个步骤为基础,将FDM模型和trace序列作为输入,利用符号执行引擎对虚拟原型进行错误检测。
本发明中对SystemRDL语言的扩展内容包括:
关键组件macro:扩展该关键组件是用于定义在关键组件“function”中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value。
关键组件function:扩展该关键组件是用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述。
关键组件macro和关键组件function的语法格式遵循SystemRDL语言中原有的关键组件(如关键组件reg)的语法格式。
本发明中,将使用SystemRDL语言描述的硬件设备的规约转换为FDM模型,该转换方法包括以下内容:
关键组件macro的主体映射成FDM模型中的宏定义;例如
macrogeneral_macro{
CTRL_RST=0x04000000;
TCTL_EN=0x00000002;
...
};
该macro的主体中的两条语句CTRL_RST=0x04000000和TCTL_EN=0x00000002将分别映射到FDM模型中#define CTRL_RST 0x04000000和#define TCTL_EN 0x00000002。
关键组件reg的regwidth属性和field主体映射成FDM模型中的union结构体,其中regwidth属性的值被用于限定寄存器变量的字节大小,如32限定了寄存器变量的长度大小为4字节,而reg组件中的每个field主体设定了FDM模型中该寄存器结构体中的对应的位域;例如:
regReg_CTRL_type {
regwidth = 32;
field {desc = "Link Reset"; swwe=true;} LRST[3:3] = 1'b1;
field {desc = "Currently Reserved";} Rsvd4[4:4] = 0;
...
};
其中的regwidth属性值32映射到FDM模型中CTRL寄存器变量的类型为uint32_t;而field主体将映射到
Union _Reg_CTRL_inst {
...
struct {
...
uint32_t LRST :1;
uint32_t Rsvd4 :1;
}。
关键组件function 的主体部分映射到FDM模型中的函数;例如:
functionasyn_tctl_func{
voidrun_tctl(DeviceState* pdevState) {
pdevState->reg_TDT_inst.value&= 0xffff;
if(!(pdevState->reg_TCTL_inst.value& TCTL_EN))
...
}
}映射到FDM模型中的run_tctl(DeviceState* pdevState)函数(由runDeviceTransaction(DeviceState *pdevState)函数调用);
Function syn_tctl_func{
voidwrite_tctl (DeviceState *pdevState, uint32_t value, uint64_toffset){
...
}
}映射到FDM模型中的write_tctl_func(pdevState, value, offset)函数(由devRegWrite(DeviceState *pdevState, uint32_t value, uint64_t offset)函数调用)。
此外,关键组件reg的对象实例化语句(包含寄存器的地址)映射成FDM模型中的宏定义;例如Reg_TCTL_typereg_TCTL_inst @0x00400是表示TCTL寄存器的一个实例并指定了该寄存器的地址(或称为偏移量)为0x00400,这部分信息会映射到FDM模型中的宏定义#define Reg_TCTL_inst 0x00400。
基于以上所述,能够完成使用SystemRDL语言来描述一个硬件设备的规约。为了对设备虚拟原型进行错误检测,需要抓取设备虚拟原型在运行时的trace文件,该文件中每一条记录保存了运行过程中硬件设备接口状态以及相应的驱动程序发出的操作请求。如图2所示,该图是抓取设备虚拟原型运行的trace序列的框架图,其中通过在虚拟机系统内核中挂载一个内核模块(系统库函数插桩模块),该模块实现了对指定的系统内核库函数(例如iowrite32(), ioread32(),writel(),readl()等函数)进行插桩,一旦这些指定的库函数被相应的硬件设备驱动程序调用了,那么在执行到内核函数时会去执行用户指定的插桩服务程序,针对不同的系统内核函数做相应的处理(例如访问当前时刻设备接口寄存器的值,即这些接口寄存器映射在内存中某个存储空间的值)。如图2所示,原本在未挂载系统库函数插桩模块时,硬件设备驱动程序是调用系统库函数直接与硬件设备进行交互,当挂载了系统库函数插桩模块时,原始系统库函数执行轨迹就被改变了,中间会调用用户插桩的服务程序,这就方便用户进行抓取当前时刻硬件设备的接口状态。
图2中的系统库函数插桩模块作为一个库,抓取Trace序列的用户程序通过采用回调函数的机制实现了在系统库函数被执行时将抓取Trace序列的用户程序作为插桩服务程序来执行,进而就可以在抓取Trace序列的用户程序中将抓取的当前时刻的硬件设备接口状态以及相应的驱动程序发出的操作请求写入到trace文件中。
最后,以FDM模型和trace文件作为输入,根据trace文件中记录的每一条记录利用符号执行引擎来执行FDM模型,并以FDM模型为参照,对比其与虚拟原型执行的状态之间的差异来判断虚拟原型在执行过程中是否存在错误。
Claims (6)
1.一种基于设备规约的虚拟原型错误检测方法,其特征在于,该方法包括以下步骤:
步骤1:使用SystemRDL语言描述硬件设备的规约;
步骤2:将硬件设备规约转化为一个能够执行的FDM模型;
步骤3:通过运行硬件设备的虚拟原型来记录抓取到设备运行的trace序列;
步骤4:将FDM模型和trace序列作为输入,利用符号执行引擎对虚拟原型进行错误检测;其中:
所述硬件设备规约描述语言SystemRDL包括:field、register、register file、address map、signal、macro和function关键组件和设备寄存器的属性;
所述将硬件设备的规约转换为一个能够执行的FDM模型,包括以下内容:
关键组件macro的主体映射成FDM模型中的宏定义;
关键组件reg的regwidth属性和field主体映射成FDM模型中的union结构体;
关键组件function 的主体部分映射到FDM模型中的函数;
关键组件reg的对象实例化语句映射成FDM模型中的宏定义。
2.如权利要求1所述的虚拟原型错误检测方法,其特征在于,
所述关键组件field用于指定设备寄存器的每一位或某几位所具备的属性和名称;
所述关键组件register用于描述硬件设备所具有的寄存器,同时指定相应寄存器的属性、实例名称以及地址偏移量;
所述关键组件register file用于描述某些寄存器被划分归并为一个组;
所述关键组件address map用于指定所述寄存器或寄存器组组合成为一个硬件设备地址空间;
所述关键组件signal用于定义一条连线连接其他组件的输入或输出;
所述关键组件macro用于定义在“function”组件中描述设备寄存器行为逻辑时要使用的宏,格式是macro_name=value;
所述关键组件function用于定义硬件设备寄存器的行为逻辑,其格式是在该组件的主体部分按照C语言函数定义的格式进行描述;
所述设备寄存器的属性用于指定设备寄存器所应具备的特性,包括读写访问权限,寄存器的位宽。
3.如权利要求1所述的虚拟原型错误检测方法,其特征在于,所述能够执行的FDM模型,其组成是基于C/C++格式的源代码文件集合,包括了硬件设备模型的主函数和各个接口寄存器的行为逻辑;其中,
所述主函数用于控制硬件设备模型的输入输出;
所述接口寄存器的行为逻辑用于描述接口寄存器在影响设备动作请求后的状态变迁。
4.如权利要求1所述的虚拟原型错误检测方法,其特征在于,所述通过运行硬件设备的虚拟原型来记录抓取到设备运行的trace序列是:在虚拟机中运行对应硬件设备的虚拟原型,记录并抓取该虚拟原型运行时的trace序列。
5.如权利要求1所述的虚拟原型错误检测方法,其特征在于,所述利用符号执行引擎对虚拟原型进行错误检测是:利用符号执行引擎来符号化执行FDM模型并将状态结果与虚拟原型trace序列中的相应状态做对比进行错误检测。
6.如权利要求4所述的虚拟原型错误检测方法,其特征在于,所述记录并抓取该虚拟原型运行时的trace序列是:该硬件设备虚拟原型在运行过程中设备接口寄存器的状态变化以及相应的动作请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711265443.3A CN108228314B (zh) | 2017-12-05 | 2017-12-05 | 一种基于设备规约的虚拟原型错误检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711265443.3A CN108228314B (zh) | 2017-12-05 | 2017-12-05 | 一种基于设备规约的虚拟原型错误检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228314A CN108228314A (zh) | 2018-06-29 |
CN108228314B true CN108228314B (zh) | 2021-08-20 |
Family
ID=62653762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711265443.3A Active CN108228314B (zh) | 2017-12-05 | 2017-12-05 | 一种基于设备规约的虚拟原型错误检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108228314B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542698A (zh) * | 2018-10-10 | 2019-03-29 | 华东师范大学 | 一种基于变异测试的虚拟原型错误检测方法 |
CN112860267B (zh) * | 2021-04-23 | 2021-07-30 | 武汉深之度科技有限公司 | 一种内核裁剪方法及计算设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005072140A2 (en) * | 2004-01-16 | 2005-08-11 | Caitlyn Harts | Method and apparatus to perform client-independent database queries |
CN101710735A (zh) * | 2009-12-11 | 2010-05-19 | 江西省电力科学研究院 | 智能变电站和主站共享建模方法 |
CN102333031A (zh) * | 2011-09-07 | 2012-01-25 | 江苏润和软件股份有限公司 | 一种基于设备适配技术的设备智能接入系统及其方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089759A1 (en) * | 2007-10-02 | 2009-04-02 | Fujitsu Limited | System and Method for Providing Symbolic Execution Engine for Validating Web Applications |
-
2017
- 2017-12-05 CN CN201711265443.3A patent/CN108228314B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005072140A2 (en) * | 2004-01-16 | 2005-08-11 | Caitlyn Harts | Method and apparatus to perform client-independent database queries |
CN101710735A (zh) * | 2009-12-11 | 2010-05-19 | 江西省电力科学研究院 | 智能变电站和主站共享建模方法 |
CN102333031A (zh) * | 2011-09-07 | 2012-01-25 | 江苏润和软件股份有限公司 | 一种基于设备适配技术的设备智能接入系统及其方法 |
Non-Patent Citations (4)
Title |
---|
Characterisation and verification of an FPGA signal generator for spectrally efficient wireless FDM;Marcus R Perrett等;《IEEE Xplore》;20120621;第1-5页 * |
Post-silicon Conformance Checking with Virtual Prototypes;Li Lei等;《DAC》;20131231;第1-4页 * |
RDL: An executable temporal logic for the specification and design of real-time systems;D.Gabbay等;《IEEE Xplore》;20020806;第1-6页 * |
基于FSM的测试理论、方法及评估;刘攀;《计算机学报》;20110630;第34卷(第6期);第965-984页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108228314A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220252665A1 (en) | On-chip Debugging Device and Method | |
CN100573537C (zh) | 一种soc芯片系统级验证系统及方法 | |
US20040019827A1 (en) | Emulation interface system | |
US9176848B2 (en) | Program debugger and program debugging | |
US20120179447A1 (en) | Hybrid Simulation System and Method | |
US7861070B2 (en) | Trace compression method for debug and trace interface wherein differences of register contents between logically adjacent registers are packed and increases of program counter addresses are categorized | |
CN106371847B (zh) | Windows xp系统下CPCI总线RS422通信驱动方法及系统 | |
CN105511887A (zh) | 一种硬件可视化编程构架 | |
US10713144B2 (en) | Virtual processor enabling real-time in situ disassembly and debugging in SoC environment | |
CN108228314B (zh) | 一种基于设备规约的虚拟原型错误检测方法 | |
CN102480467A (zh) | 一种基于网络通讯协议的soc软硬件协同仿真验证方法 | |
CN105824750B (zh) | 一种在NorFlash程序空间调试的软断点模拟方法 | |
CN113591422A (zh) | 芯片验证中测试案例流程信息的生成系统及应用 | |
CN109542760B (zh) | 一种基于设备规约的虚拟原型变异测试用例生成方法 | |
US10816600B1 (en) | Protocol analysis and visualization during simulation | |
CN116662134A (zh) | 一种基于eBPF的Linux内核性能追踪工具 | |
CN100481093C (zh) | 验证目标系统的验证系统及其验证方法 | |
US8661425B1 (en) | Method, apparatus, and computer-readable medium for storing data associated with a firmware program | |
US11954951B2 (en) | Component of electric vehicle, data collecting system for electric vehicle, and data collecting method for electric vehicle | |
CN113076233B (zh) | 一种io性能检测方法、装置、设备及存储介质 | |
CN1831785A (zh) | 应用于固件程序除错的微处理器与方法 | |
CN100474266C (zh) | 一种用于数字信号处理器的调试系统及其调试方法 | |
CN109783417B (zh) | 一种串口通讯装置及方法 | |
EP1367489A1 (en) | A microprocessor development system | |
US20150106792A1 (en) | Method of presenting trace data with improved efficiency by using hosted formatted output commands |
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 |