一种模拟寄存器读写的白盒验证方法、系统、设备及介质与流程

未命名 09-22 阅读:64 评论:0


1.本发明涉及寄存器验证技术领域,特别是涉及一种模拟寄存器读写的白盒验证方法、系统、计算机设备及存储介质。


背景技术:

2.芯片研发过程中,通常采用emulation(仿真模拟器)和fpga(field programmable gate array)来模拟真实的开发环境,以对代码逻辑进行有效验证。然而,这种验证方式不仅对硬件的依赖性较高、成本高,而且无法完成多种配置验证,更不能很好地完成多线程并发验证,极易出现验证资源竞争的排队情况,导致软件无法及时验证或验证不充分,进而导致交付延期或影响芯片系统性能等情况。
3.因此,亟需提供一种不依赖于硬件设备、配置简单灵活且高效可靠的源代码逻辑验证方法。


技术实现要素:

4.本发明的目的是提供一种模拟寄存器读写的白盒验证方法,通过通过软件模拟寄存器读写并依此对源代码逻辑进行验证,解决了芯片逻辑验证方法的应用缺陷,在无需依赖硬件设备的情况下,基于简单灵活的配置实现低成本、高效可靠的多线程逻辑验证,有效缩短验证时长和交付周期,减少交付风险,为芯片系统性能提供可靠保障。
5.为了实现上述目的,有必要针对上述技术问题,提供一种模拟寄存器读写的白盒验证方法、系统、设备及介质。
6.第一方面,本发明实施例提供了一种模拟寄存器读写的白盒验证方法,所述方法包括以下步骤:
7.根据验证需求,预先构建多线程验证任务执行程序;所述多线程验证任务执行程序包括多个待验证逻辑函数;
8.响应于多线程验证任务执行请求,运行所述多线程验证任务执行程序,遍历预设环境配置文件库;
9.解析所述预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程;
10.响应于所述逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果。
11.进一步地,所述根据验证需求,预先构建多线程验证任务执行程序的步骤包括:
12.预先设计验证api接口,并根据所述验证api接口,构建不同的待验证源代码;
13.根据逻辑验证需求,选择所述待验证源代码组合得到不同的待验证逻辑函数;
14.将所有待验证逻辑函数和所述验证api接口集成,得到所述多线程验证任务执行程序。
15.进一步地,所述验证api接口包括初始化api接口、释放空间api接口、结果比较api
接口、读写地址转换api接口、模拟读寄存器api接口和模拟写寄存器api接口;
16.所述初始化api接口,用于分配各个逻辑验证线程运行使用的软件空间,并建立硬件寄存器地址与软件地址间的映射关系;
17.所述释放空间api接口,用于释放各个逻辑验证线程运行使用的软件空间;
18.所述结果比较api接口,用于判断各个待验证逻辑函数执行完成后的寄存器值与对应环境配置文件中寄存器地址的验证期望值是否一致;
19.所述读写地址转换api接口,用于将传入的硬件寄存器地址转换为软件地址或直接输出硬件寄存器地址;
20.所述模拟读寄存器api接口,用于模拟寄存器读取操作;
21.所述模拟写寄存器api接口,用于模拟寄存器写入操作。
22.进一步地,所述根据所述验证api接口,构建不同的待验证源代码的步骤包括:
23.根据预设验证宏开关,设计所述读写地址转换api接口;
24.根据所述读写地址转换api接口,设计所述模拟读寄存器api接口和所述模拟写寄存器api接口;
25.根据所述模拟读寄存器api接口和所述模拟写寄存器api接口,构建不同的待验证源代码。
26.进一步地,所述环境配置文件包括若干个待验证逻辑函数名称、以及分别与各个待验证逻辑函数对应的若干个待分配空间寄存器信息;所述待分配空间寄存器信息包括寄存器地址以及对应的初始值和验证期望值。
27.进一步地,所述根据对应的解析结果,创建对应的逻辑验证线程的步骤包括:
28.判断所述解析结果是否有效;
29.若否,则输出对应的错误日志信息,并结束当前流程;
30.若是,则判断当前逻辑验证线程总数是否达到预设数目,若否,则直接创建对应的逻辑验证线程,反之,则等待所述逻辑验证线程总数降至所述预设数目以下时,创建对应的逻辑验证线程。
31.进一步地,所述由所述逻辑验证线程执行对应的待验证逻辑函数的逻辑验证,得到对应的验证结果的步骤包括:
32.调用所述初始化api接口进行验证环境初始化;
33.响应于验证环境初始化完成,获取待加载配置数据;所述待加载配置数据包括配置文件名称、待验证逻辑函数地址指针数组以及对应的待分配空间寄存器信息地址;
34.遍历所述待验证逻辑函数地址指针数组,执行对应的待验证逻辑函数;
35.响应于各个待验证逻辑函数运行完成,根据对应的待分配空间寄存器信息地址,调用所述结果比较api接口,得到对应的验证结果,并调用所述释放空间api接口进行软件空间释放。
36.进一步地,所述由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果的步骤之后,还包括:
37.释放对应的逻辑验证线程,并更新当前逻辑验证线程总数。
38.进一步地,所述更新当前逻辑验证线程总数的步骤包括:
39.获取访问锁权限,并对所述当前逻辑验证线程总数进行加锁更新;
40.响应于所述加锁更新完成,释放所述访问锁权限。
41.第二方面,本发明实施例提供了一种模拟寄存器读写的白盒验证系统,所述系统包括:
42.程序构建模块,用于根据验证需求,预先构建多线程验证任务执行程序;所述多线程验证任务执行程序包括多个待验证逻辑函数;
43.配置加载模块,响应于多线程验证任务执行请求,运行所述多线程验证任务执行程序,遍历预设环境配置文件库;
44.线程创建模块,用于解析所述预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程;
45.逻辑验证模块,用于响应于所述逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果。
46.第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法的步骤。
47.第四方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
48.上述本技术提供了一种模拟寄存器读写的白盒验证方法、系统、设备及介质,通过所述方法,实现了根据验证需求,预先构建包括多个待验证逻辑函数的多线程验证任务执行程序,响应于多线程验证任务执行请求时,运行多线程验证任务执行程序,遍历预设环境配置文件库,并解析预设环境配置文件库中的各个环境配置文件,根据对应的解析结果,创建对应的逻辑验证线程,以及响应于逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果的技术方案。与现有技术相比,该模拟寄存器读写的白盒验证方法,通过软件模拟寄存器读写并依此对源代码逻辑进行验证,不仅能在有效解决对硬件验证资源过度依赖问题,降低验证成本的基础上,简单灵活且高效可靠地实现对芯片系统不同功能逻辑的持续并发验证,而且能实现软硬不同逻辑验证版本的获取自由,提高应用程序的应用效率和管理效率,还能降低相关验证系统的部署搭建成本,提高验证系统的部署搭建效率,为相关验证人员的操作使用提供极大便利,还能通过实时增加环境配置文件的方式,灵活补增更多不同逻辑场景的验证,进而在有效缩短验证时长和交付周期的同时,保证芯片系统功能的充分验证,减少交付风险,为芯片系统性能提供可靠保障。
附图说明
49.图1是本发明实施例中模拟寄存器读写的白盒验证方法的流程示意图;
50.图2是本发明实施例中模拟寄存器读写的白盒验证方法的另一流程示意图;
51.图3是本发明实施例中模拟寄存器读写的白盒验证方法的详细框架示意图;
52.图4是本发明实施例中模拟寄存器读写的白盒验证系统的结构示意图;
53.图5是本发明实施例中模拟寄存器读写的白盒验证系统的另一结构示意图;
54.图6是本发明实施例中计算机设备的内部结构图。
具体实施方式
55.为了使本技术的目的、技术方案和有益效果更加清楚明白,下面结合附图及实施例,对本发明作进一步详细说明,显然,以下所描述的实施例是本发明实施例的一部分,仅用于说明本发明,但不用来限制本发明的范围。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
56.本发明提供的模拟寄存器读写的白盒验证方法是基于现有采用emulation和fpga模拟真实开发环境对芯片研发逻辑进行验证的应用缺陷,而提出的一种通过软件形式模拟寄存器读写,并依此对芯片研发中涉及的源代码逻辑进行可靠验证的方法,其无需依赖硬件设备,无需对有限硬件测试资源进行排队申请,即可实现低成本、简单、灵活、高效且可靠的多线程逻辑验证,有效缩短验证时长和交付周期,减少交付风险,为芯片系统性能提供可靠保障。下述实施例将对本发明的模拟寄存器读写的白盒验证方法进行详细说明。
57.在一个实施例中,如图1所示,提供了一种模拟寄存器读写的白盒验证方法,包括以下步骤:
58.s11、根据验证需求,预先构建多线程验证任务执行程序;所述多线程验证任务执行程序包括多个待验证逻辑函数;其中,待验证逻辑函数可理解为是芯片研发不同阶段对应的验证需求而封装的待验证逻辑,与对应使用的验证用例对应;对应的,多线程验证任务执行程序可理解为是集成所有待验证逻辑函数,且支持同时由多个线程并发执行不同待验证逻辑函数的组合验证的软件可执行程序,即通过软件形式实现对芯片源代码逻辑进行验证的程序,可做到配置灵活、操作简单、随用随取,完全解决对硬件验证资源过度依赖问题的同时,不仅能极大地降低了相关验证系统的部署搭建成本,而且能有效提高验证系统的部署搭建效率,为验证人员的操作使用提供了极大便利;需要说明的是,多线程验证任务执行程序所使用的程序语言可根据实际应用需求进行选择,此处不作具体限制;
59.为了在提高多线程验证任务执行程序构建效率和运行效率的同时,尽可能提升其通用性和易维护性,本实施例优选地,在预先设计合理且通用的验证api接口的基础上,完成各个待验证逻辑函数对应待验证源代码的构建与集成,同时为执行多线程并发验证提供简单可靠的技术支持;具体的,所述根据验证需求,预先构建多线程验证任务执行程序的步骤包括:
60.预先设计验证api接口,并根据所述验证api接口,构建不同的待验证源代码;其中,验证api接口,原则上可以根据程序开发习惯进行设计,但考虑到api接口除了要满足对应用程序中多模块公用功能的集成的基本应用需求外,还要尽可能简单易用,以减少应用程序的开发和维护工作量,进而提供程序的应用和管理效率,本实施例优选地,设置包括初始化api接口、释放空间api接口、结果比较api接口、读写地址转换api接口、模拟读寄存器api接口和模拟写寄存器api接口的验证api接口;
61.具体的,所述初始化api接口,用于分配各个逻辑验证线程运行使用的软件空间,并建立硬件寄存器地址与软件地址间的映射关系;所述释放空间api接口,用于释放各个逻辑验证线程运行使用的软件空间;所述结果比较api接口,用于判断各个待验证逻辑函数执行完成后的寄存器值与对应环境配置文件中寄存器地址的验证期望值是否一致;所述读写地址转换api接口,用于将传入的硬件寄存器地址转换为软件地址或直接输出硬件寄存器地址;所述模拟读寄存器api接口,用于模拟寄存器读取操作;所述模拟写寄存器api接口,
用于模拟寄存器写入操作;
62.需要说明的是,初始化api接口、释放空间api接口和结果比较api接口是在并发执行的各个逻辑验证线程中调用,读写地址转换api接口在模拟读寄存器api接口和模拟写寄存器api接口中调用,且模拟读寄存器api接口和模拟写寄存器api接口均在待验证源代码中使用;下面对各个接口的应用场景和功能作用进行详细说明:在某个逻辑验证线程调用初始化api接口时,可实现对该线程所需软件空间资源的分配,并对该线程执行相应的各个待验证逻辑函数会涉及的硬件寄存器地址与分配的软件空间中的地址进行合理映射,比如,可将各个硬件寄存器地址与分配软件空间地址保存在一张地址映射表里,当使用模拟读寄存器api接口和模拟写寄存器api接口读写某一硬件寄存器地址时,就可以调用读写地址转换api接口,并由读写地址转换api接口在判断当前运行程序需要使用模拟寄存器(软件地址映射)时,以查找对应的地址映射表的方式找到待访问硬件寄存器地址对应软件地址返回,以对软件地址的读写操作模拟实现对硬件寄存器地址的读写操作,并在完成对应的读写操作后,可通过调用结果比较api接口将读取的软件地址中的值与对应的预期值进行比较,得到一致或不一致的比较结果。
63.本实施例基于验证api接口中的几个简单的api接口设计,就能满足多线程运行所需的软件空间管理和模拟寄存器读取验证,以支撑多线程并发逻辑验证功能的有效运行,在提高程序的应用效率和管理效率的同时,还为各个逻辑验证线程同时执行不同配置场景的高效验证提供可靠保证。
64.待验证源代码可理解为是将芯片研发功能实现所采用的源代码与验证api接口融合实现基于软件模拟读写寄存器功能,用于进行相关逻辑验证的软件代码;具体的,所述根据所述验证api接口,构建不同的待验证源代码的步骤包括:
65.根据预设验证宏开关,设计所述读写地址转换api接口;
66.根据所述读写地址转换api接口,设计所述模拟读寄存器api接口和所述模拟写寄存器api接口;
67.根据所述模拟读寄存器api接口和所述模拟写寄存器api接口,构建不同的待验证源代码。
68.在实际应用中,读写地址转换api接口的实现方式原则上可根据应用设计者喜好自行选择,但为了保证同一套待验证源代码就能同时支持软件化模拟验证直接访问硬件寄存器的实际硬件环境功能验证,减少不必要的人力开发成本,本实施例优选地在读写地址转换api接口中采用预设验证宏开关的方式实现可支持上述两种不同验证模式自由选择的应用效果,具体实现方式可理解为使用同一个宏定义函数给出两种不同的获取地址方式,比如,采用软件模拟读写寄存器时,可根据输入的硬件寄存器地址返回对应的软件地址,而对于采用实际硬件验证,则直接返回输入的需要访问的硬件寄存器地址;对应的,预设验证宏开关可理解为一个可控制运行程序执行时选择上述宏定义函数的具有运行逻辑的编译器或编译器中的宏,比如,可定义软件模拟验证宏,在使用软件模拟验证版本就启用该宏,选择根据输入的硬件寄存器地址返回对应的软件地址的宏定义函数实现,反之,则选择直接返回输入的需要访问的硬件寄存器地址的实现逻辑。
69.本实施例通过使用预设验证宏开关设设计读写地址转换api接口,并基于该读写地址转换api接口,设计模拟读寄存器api接口和模拟写寄存器api接口,进而实现对不同待
验证源代码的构建的方式,可实现在几乎不改变原芯片功能实现代码的基础上,有效实现对硬件寄存器读写操作的模拟,进而基于软件模拟读写寄存器的功能,解决逻辑验证对实际寄存器读写依赖,简单灵活地实现了对芯片系统功能逻辑的有效验证的同时,还能基于一个宏开关实现不同逻辑验证版本的获取自由,为多线程验证任务执行程序的版本构建提供了极大便利。
70.根据逻辑验证需求,选择所述待验证源代码组合得到不同的待验证逻辑函数;其中,逻辑验证需求可理解为不同芯片功能或代码逻辑的验证需求,不同验证需求对应着不同的功能源代码组合,将对应逻辑验证涉及的功能源代码以函数的形式封装,即可得到待验证逻辑函数,此处的待验证逻辑函数可理解为与实际验证过程中所有的验证用例对应。
71.将所有待验证逻辑函数和所述验证api接口集成,得到所述多线程验证任务执行程序。
72.s12、响应于多线程验证任务执行请求,运行所述多线程验证任务执行程序,遍历预设环境配置文件库;其中,预设环境配置文件库可理解为存储各种逻辑验证所需基础环境配置的环境配置文件的统一路径,比如,若所有环境配置文件都存于一个固定文件夹,则该文件夹就可看作是多线程验证执行程序运行时,主程序所需遍历的预设环境配置文件库;
73.s13、解析所述预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程;其中,环境配置文件根据实际验证场景需求,结合预设的待验证逻辑函数编写得到,需要指明验证哪些测试逻辑,及需要分配空间的寄存器地址、初始值、每个待验证逻辑函数执行对应结束时该地址的值等信息,包括若干个待验证逻辑函数名称、以及分别与各个待验证逻辑函数对应的若干个待分配空间寄存器信息;所述待分配空间寄存器信息包括寄存器地址以及对应的初始值和验证期望值;需要说明的是,具体的配置文件格式原则上可在json(javascript object notation)、yml(yaml aint markup language)或xml(extensible markup language)等中任意选择,但考虑到既要便于阅读和编写,又要易于程序解析识别,本实施例优选地采用了层次结构简洁清晰json格式作为支持多线程逻辑验证的环境配置文件格式,在便于前端填写和检查配置的同时,还能提高配置解析速度,进而为多线程逻辑验证的执行效率提供可靠保障。
74.原则上,每个环境配置文件经过编写后的检查都会尽量保证配置无误,即解析时大都能直接得到能够用于验证任务执行使用的待加载配置数据,但考虑到提升多线程验证任务执行程序的健壮性和容错性,本实施例优选地,在对每个环境配置文件完成解析后,都会对相应的解析结果进行有效性校验。具体的,所述根据对应的解析结果,创建对应的逻辑验证线程的步骤包括:
75.判断所述解析结果是否有效;
76.若否,则输出对应的错误日志信息,并结束当前流程;其中,错误日志信息可根据实际需求设置,如打印配置文件名称,提示检查等信息,此处不作具体限制;
77.若是,则判断当前逻辑验证线程总数是否达到预设数目,若否,则直接创建对应的逻辑验证线程,反之,则等待所述逻辑验证线程总数降至所述预设数目以下时,创建对应的逻辑验证线程;其中,预设数目可理解为根据实际运行程序设备的cpu核数或其他使用限制而设置的支持逻辑验证的最大线程数,在实际程序运行过程中,一个有效的环境配置文件
会分配一个逻辑验证线程,以执行该配置文件中的各个待验证逻辑函数进行不同的逻辑验证,具体的预设数目可根据实际应用场景进行合理配置,此处不作具体限制。
78.上述的解析结果在环境配置文件中的各项配置无误的情况下,会得到了一个存储相应配置信息的结构体,但实际应用中,可能会存在环境配置文件编写出错,进而导致解析失败的情况(传递结构体类型为null或对应解析函数返回值为null),若不能在主程序中添加本实施例给出的配置有效性检查,就会导致程序容错性差,运行不稳定,在程序运行过程中接收到一个无效配置文件时,会直接挂掉而无法对其他环境配置文件进行解析加载完成后续的验证任务,直接降低验证效率,且不易于问题定位;具体结构体内容可参见下述伪代码:
[0079][0080][0081]
需要说明的是,上述用于存储环境配置文件中的配置信息的c语言结构体仅为示例性描述,在实际应用中可根据实际需求采用不同的开发语言来实现即可。
[0082]
s14、响应于所述逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果;其中,当前逻辑验证线程总数可理解为当前程序运行中已经存在的执行逻辑验证的线程数目,在某个逻辑验证线程创建成功后,就需要在主程序将当前逻辑验证线程总数加1,便于对系统中逻辑验
证线程创建的管理和维护;
[0083]
上述逻辑验证线程的创建采用现有线程创建方式实现即可,创建成功的每个逻辑验证线程就会获取对应环境配置文件的相关配置信息传递给对应的线程函数,由其根据配置信息执行一个或多个待验证逻辑函数,并得到分别与每个待验证逻辑函数对应的验证结果。具体的,所述由所述逻辑验证线程执行对应的待验证逻辑函数的逻辑验证,得到对应的验证结果的步骤包括:
[0084]
调用所述初始化api接口进行验证环境初始化;其中,验证环境初始化可理解为包括当前线程所需的软件空间分配,以及硬件寄存器地址与该线程分配软件空间地址的映射等基础运行环境配置;
[0085]
响应于验证环境初始化完成,获取待加载配置数据;所述待加载配置数据包括配置文件名称、待验证逻辑函数地址指针数组以及对应的待分配空间寄存器信息地址,具体存储方式可参见上述解析结果处的相应描述,此处不再赘述;
[0086]
遍历所述待验证逻辑函数地址指针数组,执行对应的待验证逻辑函数;其中,待验证逻辑函数的表示可参见下述伪代码示例:
[0087][0088]
需要说明的是,上述用于待验证逻辑函数的c语言伪代码表述仅为示例性描述,在实际应用中可根据实际需求封装对应的待验证源代码采用不同的开发语言来实现即可;
[0089]
响应于各个待验证逻辑函数运行完成,根据对应的待分配空间寄存器信息地址,调用所述结果比较api接口,得到对应的验证结果,并调用所述释放空间api接口进行软件空间释放。
[0090]
为了便于对上述逻辑验证线程执行待验证逻辑函数进行逻辑验证的实现进行说明,下面以同时需要执行上述两个待验证逻辑函数情况的主程序伪代码进行示例性说明:
[0091]
[0092][0093]
本实施例通过合理设计公用验证api接口实现对多线程逻辑验证所需的软件空间资源分配、软硬件地址的映射、以及对软件形式模拟硬件寄存器读写的各个待验证逻辑函数的构建得到多线程验证任务执行程序,结合以动态加载不同预设环境配置文件,构建各个逻辑验证线程执行对应逻辑验证所需的验证场景的技术方案,不仅能有效解决对硬件验证资源过度依赖问题,简单灵活地实现对芯片系统功能逻辑的有效验证,而且能基于一个宏开关实现不同逻辑验证版本获取自由,提高程序的应用效率和管理效率,还能降低相关验证系统的部署搭建成本,提高验证系统的部署搭建效率,为相关验证人员的操作使用提供极大便利的同时,有效缩短验证时长和交付周期,减少交付风险,为芯片系统性能提供可靠保障。
[0094]
在实际应用中,通过上述技术方案就能实现基于软件模拟寄存器读写的多线程并发执行逻辑验证,且在解决现有技术问题的基础上,实现了前述技术效果,但为了保证多线程验证任务执行程序运行过程中的线程资源的有效利用,进而提升逻辑验证任务的执行效率,本实施例优选地设置在每个逻辑验证线程执行完对应的逻辑验证任务后,及时释放对应的线程资源,以支持更多环境配置文件对应的验证场景的验证任务执行。具体的,如图2所示,所述由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果的步骤s14之后,还包括:
[0095]
s15、释放对应的逻辑验证线程,并更新当前逻辑验证线程总数;其中,逻辑验证线程的释放过程理解为线程自身调用相应的结束线程接口发送线程释放信号,当主程序的信号处理函数收到该释放线程信号后,就会将系统的当前逻辑验证线程总数相应减1。
[0096]
此外,考虑到用于对系统中所有逻辑验证线程进行管理和维护的当前逻辑验证线程总数存在多线程并发操作的可能性,为了避免此种场景下,因当前逻辑验证线程总数读写不能准确访问而导致线程资源不能合理利用的情况发生,本实施例优选地,对当前逻辑验证线程总数的所有访问都采用加锁处理;具体的,所述更新当前逻辑验证线程总数的步骤包括:
[0097]
获取访问锁权限,并对所述当前逻辑验证线程总数进行加锁更新;
[0098]
响应于所述加锁更新完成,释放所述访问锁权限。
[0099]
需要说明的是,上述加锁处理可根据实际应用需求进行选取,只需满足相应的应用场景需求即可,此处不作具体限制;
[0100]
本技术实施例如图3所示,实现根据验证需求,预先构建包括多个待验证逻辑函数的多线程验证任务执行程序,在收到多线程验证任务执行请求时,运行多线程验证任务执行程序,遍历解析预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程,由逻辑验证线程根据环境配置文件中配置信息执行相应逻辑验证任务,得到对应的验证结果,以及在执行完相应的逻辑验证任务后,释放线程的软件模拟寄存器读写的白盒验证方案,与现有技术相比,其通过软件模拟寄存器读写并依此对源代码逻辑进行验证,不仅能在有效解决对硬件验证资源过度依赖问题,降低验证成本的基础上,简单灵活且高效可靠地实现对芯片系统不同功能逻辑的持续并发验证,而且能实现软硬不
同逻辑验证版本的获取自由,提高应用程序的应用效率和管理效率,还能降低相关验证系统的部署搭建成本,提高验证系统的部署搭建效率,为相关验证人员的操作使用提供极大便利,还能通过实时增加环境配置文件的方式,灵活补增更多不同逻辑场景的验证,进而在有效缩短验证时长和交付周期的同时,保证芯片系统功能的充分验证,减少交付风险,为芯片系统性能提供可靠保障。
[0101]
需要说明的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。
[0102]
在一个实施例中,如图4所示,提供了一种模拟寄存器读写的白盒验证系统,所述系统包括:
[0103]
程序构建模块1,用于根据验证需求,预先构建多线程验证任务执行程序;所述多线程验证任务执行程序包括多个待验证逻辑函数;
[0104]
配置加载模块2,响应于多线程验证任务执行请求,运行所述多线程验证任务执行程序,遍历预设环境配置文件库;
[0105]
线程创建模块3,用于解析所述预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程;
[0106]
逻辑验证模块4,用于响应于所述逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果。
[0107]
在一个实施例中,如图5所示,所述模拟寄存器读写的白盒验证系统,还包括:
[0108]
线程释放模块5,用于释放对应的逻辑验证线程,并更新当前逻辑验证线程总数。
[0109]
关于一种模拟寄存器读写的白盒验证系统的具体限定可以参见上文中对于一种模拟寄存器读写的白盒验证方法的限定,对应的技术效果也可等同得到,在此不再赘述。上述一种模拟寄存器读写的白盒验证系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0110]
图6示出一个实施例中计算机设备的内部结构图,该计算机设备具体可以是终端或服务器。如图6所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示器和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种模拟寄存器读写的白盒验证方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0111]
本领域普通技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有同的部件布置。
[0112]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上
并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述方法的步骤。
[0113]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法的步骤。
[0114]
综上,本发明实施例提供的一种模拟寄存器读写的白盒验证方法、系统、设备及介质,其模拟寄存器读写的白盒验证方法实现了根据验证需求,预先构建包括多个待验证逻辑函数的多线程验证任务执行程序,在收到多线程验证任务执行请求时,运行多线程验证任务执行程序,遍历解析预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程,由逻辑验证线程根据环境配置文件中配置信息执行相应逻辑验证任务,得到对应的验证结果,以及在执行完相应的逻辑验证任务后,释放线程的技术方案,该方法通过软件模拟寄存器读写并依此对源代码逻辑进行验证,不仅能在有效解决对硬件验证资源过度依赖问题,降低验证成本的基础上,简单灵活且高效可靠地实现对芯片系统不同功能逻辑的持续并发验证,而且能实现软硬不同逻辑验证版本的获取自由,提高应用程序的应用效率和管理效率,还能降低相关验证系统的部署搭建成本,提高验证系统的部署搭建效率,为相关验证人员的操作使用提供极大便利,还能通过实时增加环境配置文件的方式,灵活补增更多不同逻辑场景的验证,进而在有效缩短验证时长和交付周期的同时,保证芯片系统功能的充分验证,减少交付风险,为芯片系统性能提供可靠保障。
[0115]
本说明书中的各个实施例均采用递进的方式描述,各个实施例直接相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。需要说明的是,上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0116]
以上所述实施例仅表达了本技术的几种优选实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和替换,这些改进和替换也应视为本技术的保护范围。因此,本技术专利的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种模拟寄存器读写的白盒验证方法,其特征在于,所述方法包括以下步骤:根据验证需求,预先构建多线程验证任务执行程序;所述多线程验证任务执行程序包括多个待验证逻辑函数;响应于多线程验证任务执行请求,运行所述多线程验证任务执行程序,遍历预设环境配置文件库;解析所述预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程;响应于所述逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果。2.如权利要求1所述的模拟寄存器读写的白盒验证方法,其特征在于,所述根据验证需求,预先构建多线程验证任务执行程序的步骤包括:预先设计验证api接口,并根据所述验证api接口,构建不同的待验证源代码;根据逻辑验证需求,选择所述待验证源代码组合得到不同的待验证逻辑函数;将所有待验证逻辑函数和所述验证api接口集成,得到所述多线程验证任务执行程序。3.如权利要求2所述的模拟寄存器读写的白盒验证方法,其特征在于,所述验证api接口包括初始化api接口、释放空间api接口、结果比较api接口、读写地址转换api接口、模拟读寄存器api接口和模拟写寄存器api接口;所述初始化api接口,用于分配各个逻辑验证线程运行使用的软件空间,并建立硬件寄存器地址与软件地址间的映射关系;所述释放空间api接口,用于释放各个逻辑验证线程运行使用的软件空间;所述结果比较api接口,用于判断各个待验证逻辑函数执行完成后的寄存器值与对应环境配置文件中寄存器地址的验证期望值是否一致;所述读写地址转换api接口,用于将传入的硬件寄存器地址转换为软件地址或直接输出硬件寄存器地址;所述模拟读寄存器api接口,用于模拟寄存器读取操作;所述模拟写寄存器api接口,用于模拟寄存器写入操作。4.如权利要求3所述的模拟寄存器读写的白盒验证方法,其特征在于,所述根据所述验证api接口,构建不同的待验证源代码的步骤包括:根据预设验证宏开关,设计所述读写地址转换api接口;根据所述读写地址转换api接口,设计所述模拟读寄存器api接口和所述模拟写寄存器api接口;根据所述模拟读寄存器api接口和所述模拟写寄存器api接口,构建不同的待验证源代码。5.如权利要求4所述的模拟寄存器读写的白盒验证方法,其特征在于,所述环境配置文件包括若干个待验证逻辑函数名称、以及分别与各个待验证逻辑函数对应的若干个待分配空间寄存器信息;所述待分配空间寄存器信息包括寄存器地址以及对应的初始值和验证期望值。6.如权利要求5所述的模拟寄存器读写的白盒验证方法,其特征在于,所述根据对应的解析结果,创建对应的逻辑验证线程的步骤包括:
判断所述解析结果是否有效;若否,则输出对应的错误日志信息,并结束当前流程;若是,则判断当前逻辑验证线程总数是否达到预设数目,若否,则直接创建对应的逻辑验证线程,反之,则等待所述逻辑验证线程总数降至所述预设数目以下时,创建对应的逻辑验证线程。7.如权利要求5所述的模拟寄存器读写的白盒验证方法,其特征在于,所述由所述逻辑验证线程执行对应的待验证逻辑函数的逻辑验证,得到对应的验证结果的步骤包括:调用所述初始化api接口进行验证环境初始化;响应于验证环境初始化完成,获取待加载配置数据;所述待加载配置数据包括配置文件名称、待验证逻辑函数地址指针数组以及对应的待分配空间寄存器信息地址;遍历所述待验证逻辑函数地址指针数组,执行对应的待验证逻辑函数;响应于各个待验证逻辑函数运行完成,根据对应的待分配空间寄存器信息地址,调用所述结果比较api接口,得到对应的验证结果,并调用所述释放空间api接口进行软件空间释放。8.如权利要求1所述的模拟寄存器读写的白盒验证方法,其特征在于,所述由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果的步骤之后,还包括:释放对应的逻辑验证线程,并更新当前逻辑验证线程总数。9.如权利要求1或8所述的模拟寄存器读写的白盒验证方法,其特征在于,所述更新当前逻辑验证线程总数的步骤包括:获取访问锁权限,并对所述当前逻辑验证线程总数进行加锁更新;响应于所述加锁更新完成,释放所述访问锁权限。10.一种模拟寄存器读写的白盒验证系统,其特征在于,所述系统包括:程序构建模块,用于根据验证需求,预先构建多线程验证任务执行程序;所述多线程验证任务执行程序包括多个待验证逻辑函数;配置加载模块,响应于多线程验证任务执行请求,运行所述多线程验证任务执行程序,遍历预设环境配置文件库;线程创建模块,用于解析所述预设环境配置文件库中的各个环境配置文件,并根据对应的解析结果,创建对应的逻辑验证线程;逻辑验证模块,用于响应于所述逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由所述逻辑验证线程执行对应待验证逻辑函数的逻辑验证,得到对应的验证结果。11.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一所述方法的步骤。12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一所述方法的步骤。

技术总结
本发明提供了一种模拟寄存器读写的白盒验证方法、系统、设备与介质,所述方法包括:根据验证需求,预先构建多线程验证任务执行程序;响应于多线程验证任务执行请求,运行多线程验证任务执行程序,遍历预设环境配置文件库;解析预设环境配置文件库中的各个环境配置文件,并根据解析结果创建对应的逻辑验证线程;响应于逻辑验证线程创建成功,更新当前逻辑验证线程总数,并由逻辑验证线程执行对应待验证逻辑函数的逻辑验证得到验证结果。本发明通过软件模拟寄存器读写并依此对源代码逻辑进行验证,在无需依赖硬件设备的情况下,基于简单灵活的配置实现低成本、高效可靠的多线程逻辑验证,有效缩短验证时长和交付周期,为芯片系统性能提供可靠保障。片系统性能提供可靠保障。片系统性能提供可靠保障。


技术研发人员:徐星辰
受保护的技术使用者:合芯科技(苏州)有限公司
技术研发日:2023.05.04
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐