CN110059390B - 待测器件验证装置及相关产品 - Google Patents

待测器件验证装置及相关产品 Download PDF

Info

Publication number
CN110059390B
CN110059390B CN201910288744.0A CN201910288744A CN110059390B CN 110059390 B CN110059390 B CN 110059390B CN 201910288744 A CN201910288744 A CN 201910288744A CN 110059390 B CN110059390 B CN 110059390B
Authority
CN
China
Prior art keywords
node
target
instruction sequence
instruction
value
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
CN201910288744.0A
Other languages
English (en)
Other versions
CN110059390A (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.)
Cambricon Technologies Corp Ltd
Original Assignee
Cambricon Technologies Corp Ltd
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 Cambricon Technologies Corp Ltd filed Critical Cambricon Technologies Corp Ltd
Priority to CN201910288744.0A priority Critical patent/CN110059390B/zh
Publication of CN110059390A publication Critical patent/CN110059390A/zh
Application granted granted Critical
Publication of CN110059390B publication Critical patent/CN110059390B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Programmable Controllers (AREA)

Abstract

本申请提供了一种待测器件验证装置及相关产品,该待测器件验证装置用于进行机器状态验证,本申请实施例通过构建地址依赖树,并根据机器状态快照反复对指令序列进行验证,直到获得作错误指令,从而,可准确、快速地对指令序列进行验证,确定错误指令所在的位置,提高机器状态验证的效率。

Description

待测器件验证装置及相关产品
技术领域
本申请涉及芯片验证技术领域,具体涉及一种待测器件验证装置及相关产品。
背景技术
随着硅材料半导体工艺接近物理极限,在单位面积的硅材料芯片上集成更多的晶体管变得越来越困难。电子器件中集成电路集成的功能越来越多,处理器需要执行的指令数量也越来越多,这就使执行器中的指令集的验证越来越复杂,对验证技术提出了新的挑战,因此,在对待测器件进行验证时,如何准确、高效地对待测器件进行验证成为需要考虑的问题。
发明内容
本申请实施例提供了一种待测器件验证装置及相关产品,可针对集成指令数量较多的待检测器件,自动、准确地进行机器状态验证,提升机器状态验证效率。
第一方面,提供一种待测器件验证装置,所述待测器件验证装置包括执行器和控制器,其中,
所述执行器,用于根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,所述地址依赖树中每一节点包括用于访问与节点对应的节点指令的地址区间和对应的节点指令的指令标志PC值;
所述控制器,还用于根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,将所述目标PC值对应的节点指令作为所述初始指令序列中导致错误的指令。
第二方面,本申请实施例提供了一种待测器件验证方法,应用于待测器件验证装置,所述待测器件验证装置包括执行器和控制器,所述方法包括:
所述执行器根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,所述地址依赖树中每一节点包括用于访问与节点对应的节点指令的地址区间和对应的节点指令的指令标志PC值;
所述控制器根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,将所述目标PC值对应的节点指令作为所述初始指令序列中导致错误的指令。
可选地,所述方法还包括:
所述控制器在所述目标PC值为所述地址依赖树中的最小PC值时,确定所述目标PC值满足预设条件。
可选地,所述根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,包括:
所述执行器将所述地址依赖树中的第i个节点作为目标节点,所述第i个节点为所述地址依赖树中任一节点;
分别将所述目标节点中的至少一个PC值对应的节点指令作为所述当前指令序列的终止指令,并分别执行所述当前指令序列,获得并保存至少一个所述当前指令序列的机器状态快照;当遍历所述目标节点的所有PC值后,将所述目标节点标记为已被访问的节点;
所述执行器根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果;
若所述目标节点已被访问,且所述目标节点中存在至少一个执行结果错误,所述执行器则将所述第i个节点的每一子节点依次作为所述目标节点,并重复调用所述执行器和所述控制器,直至所述控制器确定所述目标PC值满足预设条件。
可选地,所述执行所述当前指令序列,包括:
所述执行器从所述当前指令序列的第一个指令执行至所述当前指令序列中的终止指令。
可选地,所述执行所述当前指令序列,包括:
若所述当前指令序列的终止指令前面存在至少一个同步点,所述执行器确定所述至少一个同步点中最接近所述节点指令最近的目标同步点,从所述目标同步点对应的指令的后一指令执行所述当前指令序列至所述当前指令序列的终止指令。
可选地,所述根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,包括:
若所述当前指令序列的执行结果错误,且所述当前指令序列的终止指令的PC值小于当前的目标PC值,所述控制器则将所述当前指令序列的终止指令的PC值作为所述目标PC值,之后根据下一当前指令序列的执行结果继续更新所述目标PC值,直至所述目标PC值满足预设条件。
可选地,所述方法还包括:
若所述目标节点已被访问,且所述目标节点对应的所有执行结果均正确,所述执行器则不再访问所述目标节点的子节点。
可选地,所述存储单元包括RAM和寄存器,所述方法还包括:
所述执行器执行所述初始指令序列,获得所述初始指令序列的执行结果;
所述控制器在所述初始指令序列的执行结果错误时,则根据所述初始指令序列的执行结果构建地址依赖树;其中,所述地址依赖树的根节点包含所述初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;所述地址依赖树的下一层节点包含访问过所述上一层节点的中至少一个PC值对应的节点指令的操作数所在的RAM地址区间或寄存器号。
第三方面,本申请实施例提供了一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如第二方面所述的方法步骤。
第四方面,本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如第二方面所述的方法步骤。
第五方面,本申请实施例提供了一种芯片,该芯片包括上述第一方面所述待测器件验证装置。
第六方面,本申请实施例提供了一种芯片封装结构,该芯片封装结构包括上述第五方面所述的芯片;
第七方面,本申请实施例提供了一种板卡,该板卡包括上述第六方面所述的芯片封装结构。
第八方面,本申请实施例提供了一种电子装置,该电子装置包括上述第五方面所述的芯片或者上述第七方面所述的板卡。
可以看出,本申请实施例的待测器件验证装置,通过执行器根据地址依赖树执行当前指令序列,得到当前指令序列的执行结果,控制器根据当前指令序列的执行结果更新目标PC值,直至目标PC值满足预设条件,将目标PC值对应的节点指令作为初始指令序列中导致错误的指令,本申请实施例地址依赖树反复对指令序列进行验证,直到获得导致错误的指令,从而,可准确、快速地对指令序列进行验证,确定导致错误的指令所在的位置,提高机器状态验证的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种待测器件验证装置的结构示意图;
图2A是本申请实施例提供的一种待测器件验证方法的流程示意图;
图2B是本申请实施例提供的一种指令序列的演示示意图;
图2C是本申请实施例提供的一种地址依赖树的演示示意图;
图2D是本申请实施例提供的一种根据地址依赖树执行当前指令序列的流程示意图。
图3是本申请实施例提供的另一种待测器件验证方法的流程示意图,
图4是本申请实施例提供的一种组板卡的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
目前,为了应对集成功能复杂、数量庞大的指令集的待测器件(DUT)等较为复杂的验证场景,申请人着眼于提升待测器件的可观测性和可控制性,提出使用保存机器状态快照的方法来使验证更为灵活便捷。
其中,待测器件的可观测性是指验证人员对待测器件内部的观测能力。验证人员可以通过仿真波形和环境打印观测仿真过程中待测器件的机器状态。对于存储空间较大的RAM,采用文件保存的形式会更为易于分析。待测器件的可控制性是指验证人员对待测器件机器状态的控制能力。例如,验证人员可以使用SystemVerilog中的force语句对待测器件中的信号进行强制赋值操作、或者通过改变待测器件接口信号来改变待测器件的运行状态、或者通过后门访问的方法为待测器件内部的存储器赋值等等。为了提升待测器件的可观测性和可控制性,有利于验证人员分析问题。发明人提出一种利用机器状态快照来提升验证效率的方法。其中,机器状态是指,在运行过程中待测器件中RAM,寄存器,接口信号的取值和模块内部状态机的状态。机器状态快照是指将机器状态用文件形式保存起来。文件可以按待测器件的结构组织,便于验证人员分析。
然而,在验证过程中,由于待测器件的设计和环境搭建方法等原因,并不是每一种激励的输出都能被比较。例如,一些指令的结果在写入RAM时可能存在乱序,使得验证人员在抓取输出信号时难以确定输出属于哪一个指令。又如,不同种类的指令可能共用同一个功能部件,由于功能部件中复杂的时序关系难以确定其输出属于哪一个指令。再如,比较每一种指令的输出可能导致验证环境过于复杂,不便于维护。这些原因可能导致在验证过程中的比对过程是不完全的,也就是说,当一段输入激励输入待测器件后若其输出结果与参考模型不一致,很可能不是激励序列中最后输入的激励所导致的,而可能是激励序列中间的激励所导致的。在激励序列中间定位导致待测器件运行出错的激励很可能是一个非常花费时间的过程。例如,在冗长的指令序列中有两条输入输出IO指令发生了数据竞争,导致待测器件和参考模型的模拟结果之间的比较结果不一致。由于发生数据竞争的位置可能被反复读写过,使得最后出错的位置离发生数据竞争的位置可能相距甚远,寻找出错的原因是一件非常耗费时间的事情。
针对上述问题,可将待测器件中的指令集中的指令分为两种:可以实时检测结果的指令和不能实时检测结果的指令。其中,可以实时检测结果的指令是指在待测器件仿真过程中,指令执行完之后,验证环境能从待测器件中抓取某些信号取得其运行结果并进行比对的指令,也就是说环境能实时地知道指令执行的对错。不能实时检测结果的指令则是环境无法在待测器件仿真过程中抓取信号从而比对其结果的指令。对于不能实时比较结果的指令,若其在仿真过程中的运行发生错误,环境对该错误的检测会有延迟,如通过在指令运行完之后比较RAM中存留的数据发现。所以,对于可以实时检测结果的指令和不能实时检测结果的指令的混合序列,若在指令序列运行完之后发现RAM或寄存器中存留数据等最终机器状态不正确,而指令序列运行过程中未发现错误,那么就需要回溯是指令序列中哪个指令导致运行错误。即使是在运行过程中发现可以实时检测结果的指令运行错误,也有可能是因为可以实时检测结果的指令与其之间的不能实时检测结果的指令之间存在联系(如数据相关等),由这些存在联系的不能实时检测结果的指令运行错误所导致。因此,为了能快速定位导致待测器件仿真结果出错的指令,本申请提出通过加入探针指令针对集成功能复杂、数量庞大的指令集的待测器件进行验证的方案。
下面介绍本申请使用的待测器件验证装置。参阅图1,提供了一种待测器件验证装置,该待测器件验证装置包括处理器101和存储单元102,其中,处理器101包括执行器10、控制器11,执行器还包括比较器,所述存储单元102包括寄存器21和随机存取存储器RAM22。其中,
所述执行器,用于根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,所述地址依赖树中每一节点包括用于访问与节点对应的节点指令的地址区间和对应的节点指令的指令标志PC值;
所述控制器,还用于根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,将所述目标PC值对应的节点指令作为所述初始指令序列中导致错误的指令。
其中,所述寄存器和所述RAM,用于存储待验证的初始指令序列,所述初始指令序列中包含n个指令,n为大于1的整数。
在一个可能的实施例中,所述控制器还用于:
在所述目标PC值为所述地址依赖树中的最小PC值时,确定所述目标PC值满足预设条件。
在一个可能的实施例中,在所述根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果方面,所述执行器具体用于:
将所述地址依赖树中的第i个节点作为目标节点,所述第i个节点为所述地址依赖树中任一节点;
分别将所述目标节点中的至少一个PC值对应的节点指令作为所述当前指令序列的终止指令,并分别执行所述当前指令序列,获得并保存至少一个所述当前指令序列的机器状态快照;当遍历所述目标节点的所有PC值后,将所述目标节点标记为已被访问的节点;
根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果;
若所述目标节点已被访问,且所述目标节点中存在至少一个执行结果错误,则将所述第i个节点的每一子节点依次作为所述目标节点,并重复调用所述执行器和所述控制器,直至所述控制器确定所述目标PC值满足预设条件。
在一个可能的实施例中,在所述执行所述当前指令序列方面,所述执行器具体用于:
从所述当前指令序列的第一个指令执行至所述当前指令序列中的终止指令。
在一个可能的实施例中,在所述执行所述当前指令序列方面,所述执行器具体用于:
若所述当前指令序列的终止指令前面存在至少一个同步点,确定所述至少一个同步点中最接近所述节点指令最近的目标同步点,从所述目标同步点对应的指令的后一指令执行所述当前指令序列至所述当前指令序列的终止指令。
在一个可能的实施例中,在所述根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件方面,所述控制器具体用于:
若所述当前指令序列的执行结果错误,且所述当前指令序列的终止指令的PC值小于当前的目标PC值,则将所述当前指令序列的终止指令的PC值作为所述目标PC值,之后根据下一当前指令序列的执行结果继续更新所述目标PC值,直至所述目标PC值满足预设条件。
在一个可能的实施例中,所述执行器还用于:
若所述目标节点已被访问,且所述目标节点对应的所有执行结果均正确,则不再访问所述目标节点的子节点。
在一个可能的实施例中,所述装置还包括存储单元,所述存储单元包括RAM和寄存器,
所述执行器,还用于执行所述初始指令序列,获得所述初始指令序列的执行结果;
所述控制器,还用于在所述初始指令序列的执行结果错误时,则根据所述初始指令序列的执行结果构建地址依赖树;其中,所述地址依赖树的根节点包含所述初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;所述地址依赖树的下一层节点包含访问过所述上一层节点的中至少一个PC值对应的节点指令的操作数所在的RAM地址区间或寄存器号。
如图2A所示,图2A为本申请实施例提供的一种待测器件验证方法的流程示意图,应用于待测器件验证装置,所述待测器件验证装置包括执行器和控制器;所述方法包括:
201、执行器根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,所述地址依赖树中每一节点包括用于访问与节点对应的节点指令的地址区间和对应的节点指令的指令标志PC值。
具体地,存储单元中存储有初始指令序列,该初始指令序列可以包含多条指令。请参阅图2B,图2B为本申请实施例提供的一种初始指令序列的演示示意图,如图2B所示,指令序列包含可以实时对比结果的指令以及不能实时对比结果的指令。其中,实时对比结果的指令,可以在指令序列执行过程中,实时地获知该指令的执行结果是否正确。不能实时对比结果的指令,即使在指令序列的执行过程中出错也不会报错。因此,若初始指令序列中有不能实时比对结果的指令输出错误结果,错误结果可能被其他指令作为操作数从而导致其他指令输出错误结果,最终导致一条能实时比对结果的指令输出错误结果被验证环境发现或执行完初始指令序列后的最终机器状态快照错误被验证环境发现,需要找出导致初始指令序列执行过程中导致错误的指令所在的位置。
其中,当前指令序列是指,每一次进行验证时根据地址依赖树中的节点的地址区间对应的节点指令确定的指令序列。具体地,该当前指令序列中指令为初始指令序列中的指令,该当前指令序列的长度小于或等于初始指令序列的长度,该当前指令序列的起始指令可以与该初始指令序列的起始指令一致,该当前指令序列的终止指令可以根据地址依赖树进行确定。可选地,执行器每一次可确定地址依赖树中的节点的一个PC值对应的节点指令,然后以该节点指令作为当前指令序列的终止指令,该初始指令序列的起始指令可作为该当前指令序列的起始指令,从而获得当前指令序列。应当清楚的是,该地址依赖树中任意节点中的PC值指向的节点指令均为初始指令序列中的指令。
可选地,本申请实施例中,在执行器根据地址依赖树执行当前指令序列之前,还可包括以下步骤:
A1、所述执行器执行所述初始指令序列,获得所述初始指令序列的执行结果;
A2、所述控制器在所述初始指令序列的执行结果错误时,则根据所述初始指令序列的执行结果构建地址依赖树;其中,所述地址依赖树的根节点包含所述初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;所述地址依赖树的下一层节点包含访问过所述上一层节点的中至少一个PC值对应的节点指令的操作数所在的RAM地址区间或寄存器号。
本申请实施例中,执行器可执行初始指令序列,获得初始指令序列的执行结果。例如,执行器可以从初始指令序列的起始指令执行该初始指令序列至其终止指令,获得一机器状态快照。之后,比较器可以将该机器状态快照与模拟器(reference model)输出的机器状态快照进行比对,若该机器状态快照与模拟器输出的机器状态快照一致,则可确定该初始指令序列的执行结果正确。若该机器状态快照与模拟器输出的机器状态快照不一致,则可确定该初始指令序列的执行结果不正确。进一步地,控制器在初始指令序列的执行结果错误时,可根据初始指令序列的执行结果构建地址依赖树。
可选地,在其他实施例中,在执行所述初始指令序列之后,若存在一条可以实时比对错误结果的指令输出错误结果,根节点包含的地址区间就是该可以实时比对结果的指令输出结果的地址区间。
具体地,控制器可根据初始指令序列的执行结果构建地址依赖树,该地址依赖树中各个PC值对应的节点指令可以是不能实时比对结果的指令。其中,地址依赖树的根节点包含初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;根节点的子节点包含初始指令序列中输出错误结果的指令的操作数所在的RAM地址区间或寄存器号,所述子节点的次级子节点包含该子节点中节点指令的操作数所在的RAM地址区间或寄存器号。也就是说,按照地址依赖树从上到下的关系,所述地址依赖树的下一层节点包含访问过上一层节点的地址信息的指令的操作数所在的RAM地址区间或寄存器号。
其中,地址依赖树中包括多个节点,每一节点还包含访问该节点中的地址区间的节点指令的PC值,每一PC值对应一个初始指令序列中的节点指令,PC值是一个可以唯一标记任何一个核的任意一条指令的标志量,表明当前执行的指令是哪个指令。地址依赖树中每一节点中每一PC值对应的节点指令为不能实时比较结果的指令。
请参阅图2C,图2C为本申请提供的一种地址依赖树的演示示意图,其中,地址依赖树包括6个节点,每一节点包含至少一个PC值,每一PC值对应一个初始指令序列中的节点指令。第1节点,即根节点包含PC值a和PC值b,第1节点中的PC值a和b可以是该指令序列中输出错误结果的指令对应的PC值。第2节点和第3节点为第1节点的子节点,第2节点包含PC值c,该PC值c指向的节点指令的执行结果可以是第1节点中PC值a和/或b对应的节点指令的操作数。第3节点包含PC值d和PC值e,同理,该PC值d和e指向的节点指令的执行结果可以是第1节点中PC值a和/或b对应的节点指令的操作数。第4节点和第5节点为第2节点的子节点,第4节点包含PC值f和PC值g,该PC值f和g指向的节点指令的执行结果可以是第2节点中PC值c对应的指令的操作数。第5节点包含PC值h,该PC值h指向的节点指令的执行结果可以第2节点中PC值c对应的节点指令的操作数。第6节点为第3节点的子节点,第6节点包含PC值i,该PC值i指向的节点指令的执行结果可以是第3节点中PC值d和/或e对应的节点指令的操作数。
可选地,请参阅图2D,图2D为本申请实施例提供的一种根据地址依赖树执行当前指令序列的流程示意图,上述步骤201中,根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,可包括以下步骤:
11、所述执行器将所述地址依赖树中的第i个节点作为目标节点,分别将所述目标节点中的至少一个PC值对应的节点指令作为所述当前指令序列的终止指令,并分别执行所述当前指令序列,获得并保存至少一个所述当前指令序列的机器状态快照;其中,所述第i个节点可以为所述地址依赖树中任一节点。
其中,机器状态是指,在运行过程中待测器件中RAM的状态值、寄存器的状态值、接口信号的取值和模块内部状态机的状态。机器状态快照是指将机器状态用文件形式保存起来。本申请实施例中,可根据机器状态快照确定当前指令序列的执行结果是否正确。
具体地,步骤11中,执行器分别将所述目标节点中的各个PC值对应的节点指令作为所述当前指令序列的终止指令,执行所述当前指令序列,获得并保存所述当前指令序列的机器状态快照,具体包括:假定目标节点包含k个PC值,k为正整数,依次遍历目标节点中的k个PC值对应的节点指令,针对每一PC值对应的节点指令,可将该节点指令作为当前指令序列的终止指令,从而可以获得k个不同的当前指令序列。之后执行器可以分别执行各个所述当前指令序列,获得并保存k个所述当前指令序列的机器状态快照,从而,可得到k个机器状态快照,可以理解,k个机器状态快照即为至少一个当前指令序列的至少一个机器状态快照。
12、所述执行器根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果。
具体地,步骤12中,执行器根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果,具体可包括:可在存储单元预先存储指令序列运行至每一节点指令时对应的正确结果,进而,在得到当前指令序列的机器状态快照后,执行器中的比较器可将机器状态快照中当前指令序列的执行结果与预先存储的当前指令序列的正确结果(可以是当前指令序列对应的正确的机器状态快照)进行比较,若执行结果与正确结果一致,可确定当前指令序列的执行结果正确。若执行结果与正确结果不一致,可确定当前指令序列的执行结果不正确。从而,可得到目标节点对应的至少一个当前指令序列的至少一个执行结果。
可选地,待测器件验证装置还包括参考模型,参考模型可在执行器执行当前指令序列中的指令时,同步获取正在执行的指令,并根据所述指令进行模拟,得到模拟的正确结果。即,参考模型可以同步执行指令序列中的指令,并获得该指令序列中各个指令的执行结果(该执行结果可以是各个指令对应的机器状态快照)。本申请实施例认为参考模型的执行结果总是正确的。进一步地,比较器可根据当前指令序列的机器状态快照确定当前指令序列的执行结果是否正确,具体地,比较器可将当前指令序列的机器状态快照中的执行结果与参考模型中模拟的正确结果进行比较,若执行结果与正确结果一致,可确定当前指令序列的执行结果正确。若执行结果与正确结果不一致,可确定当前指令序列的执行结果不正确。
13、若所述目标节点已被访问,且所述目标节点中存在至少一个执行结果错误,所述执行器则将所述第i个节点的每一子节点依次作为所述目标节点,并重复调用所述执行器和所述控制器,直至所述控制器确定所述目标PC值满足预设条件。
其中,第i个节点可以是地址依赖树中任一节点,首先,可将第i个节点作为目标节点,在目标节点未被访问时,可遍历目标节点中的PC值,然后,标记目标节点已访问,若目标节点已被访问,且目标节点中存在至少一个执行结果错误,依次将目标节点的每个子节点作为目标节点,并重复以上操作。
进一步可选地,上述方法还包括如下步骤:
当执行器遍历所述目标节点的所有PC值后,将所述目标节点标记为已被访问的节点。
其中,步骤13中,若目标节点已被访问,且目标节点对应的所有执行结果中存在至少一个执行结果错误,所述执行器则将所述第i个节点的每一子节点依次作为所述目标节点,具体可包括:若目标节点已被访问,且目标节点的地址空间包括一个PC值,则若该一个PC值的节点指令对应的当前指令序列的执行结果错误,则执行器可将第i个节点的每一子节点依次作为所述目标节点;若目标节点已被访问,且目标节点的地址空间包括多个PC值,则若该多个PC值中存在至少一个PC值的节点指令对应的当前指令序列的执行结果错误,则执行器可将第i个节点的每一子节点依次作为所述目标节点。
可选地,本申请实施例中,上述方法还可包括以下步骤:
若所述目标节点已被访问,且所述目标节点对应的所有执行结果均正确,所述执行器则不再访问所述目标节点的子节点。
可见,通过在目标节点对应的所有执行结果均正确的情况下,控制执行器不再访问目标节点的子节点,可减少将目标节点的子节点中所有PC值的所有节点指令对应的当前指令序列进行重复执行的操作,从而,可减少对初始指令序列重复执行的次数,缩短确定导致错误的指令的时间,进而,提高待验证器件的验证效率。
当然,在其他实施例中,不管目标节点是否被访问,均可以将其子节点作为目标节点。也就是说,执行器可以遍历地址依赖树的各个节点。可选地,执行器遍历地址依赖树可以是按照深度优先规则进行遍历,如本申请实施例中步骤11-13的方式。当然,执行器遍历地址依赖树还可以是按照广度优先规则进行遍历,本申请实施例中并不限定其具体的遍历方式。
可选地,上述步骤11中,执行所述当前指令序列,可包括以下步骤:
所述执行器从所述当前指令序列的第一个指令执行至所述当前指令序列中的终止指令。
本申请实施例中,每一次执行当前指令序列,可从当前指令序列的第一个指令执行至当前指令序列中的终止指令。
可选地,上述步骤11中,执行所述当前指令序列,可包括以下步骤:
若所述当前指令序列的终止指令前面存在至少一个同步点,所述执行器确定所述至少一个同步点中最接近所述节点指令最近的目标同步点,从所述目标同步点对应的指令的后一指令执行所述当前指令序列至所述当前指令序列的终止指令。
本申请实施例中,指令序列中可能存在至少一个同步点,其中,同步点可以是同步指令,同步点也可以是待测器件所支持的同步操作,在进行机器验证的过程中,同步点能够保证在其之前的指令已经全部被执行完毕,同步点之后的指令对应的快照能够用于恢复模拟过程。
其中,考虑到若每一次执行当前指令序列,都从当前指令序列的第一个指令开始执行,则会存在当前指令序列中很多指令重复执行多次的情况,因此,可在每一次执行当前指令序列过程中,确定最接近所述节点指令的目标同步点,然后从目标同步点执行当前指令序列至终止指令,如此,无需重复执行从第一个指令到目标同步点的指令,而直接从目标同步点开始执行指令序列至节点指令,从而,可加快指令序列的执行速率,提高验证速率。
举例说明,如图2C所示的地址依赖树,首先,可将根节点,即第1节点作为目标节点,可分别将第1节点的PC值a对应的第一节点指令和PC值b对应的第二节点指令作为当前指令序列的终止指令,从而可以获得两个当前指令序列,分别执行两个当前指令序列,即执行器可从当前指令序列的第1条指令(该当前指令序列的第1条指令可以是初始指令序列的第1条指令)或同步点执行当前指令序列至第一节点指令,获得并保存当前指令序列的第一机器状态快照。然后,执行器可以根据第一机器状态快照确定当前指令序列的执行结果是否正确。同理,执行器从当前指令序列的第1条指令(该当前指令序列的第1条指令可以是初始指令序列的第1条指令)或同步点执行当前指令序列至第二节点指令,获得并保存当前指令序列的第二机器状态快照。然后,执行器可以根据第二机器状态快照分别确定当前指令序列的执行结果是否正确。若第一机器状态快照对应的执行结果错误,和/或第二机器状态快照对应的执行结果错误,则将根节点的每一子节点分别作为目标节点,即将第2节点和第3节点均作为目标节点。
其中,当第2节点为目标节点,执行器可将PC值c对应的第三节点指令作为当前指令序列的终止指令,执行所述当前指令序列,即执行器可从当前指令序列的第1条指令(该当前指令序列的第1条指令可以是初始指令序列的第1条指令)或同步点执行当前指令序列至第三节点指令,获得并保存当前指令序列的第三机器状态快照。若第三机器状态快照对应的当前指令序列的执行结果为错误,则可将第2节点的每一子节点作为目标节点,即将第4节点和第5节点分别作为目标节点。以此类推,可在地址依赖树中当前访问的目标节点对应的存在至少一个执行结果错误时,进一步对目标节点的子节点对应的当前指令序列进行验证,直至控制器确定目标PC值满足预设条件。若第三机器状态快照对应的当前指令序列的执行结果正确,则可以不再访问第2节点的子节点,从而可以提高验证效率。
其中,当第3节点为目标节点,执行器可将PC值d对应的第四节点指令作为当前指令序列的终止指令,执行所述当前指令序列,即执行器可从当前指令序列的第1条指令(该当前指令序列的第1条指令可以是初始指令序列的第1条指令)或同步点执行当前指令序列至第四节点指令,获得并保存当前指令序列的第四机器状态快照。同理,执行器可将PC值e对应的第五节点指令作为当前指令序列的终止指令,执行所述当前指令序列,即执行器可从当前指令序列的第1条指令(该当前指令序列的第1条指令可以是初始指令序列的第1条指令)或同步点执行当前指令序列至第五节点指令,获得并保存当前指令序列的第五机器状态快照。若第四机器状态快照对应的当前指令序列的执行结果为正确,且第五机器状态快照对应的当前指令序列的执行结果为正确,则不再访问第3节点的子节点,即可对地址依赖树中第3节点以下的子节点进行“剪枝”,从而,可减少执行当前指令序列的次数,提高验证效率。
若第四机器状态快照和/或第五机器状态快照错误,则可以继续访问该第3节点的子节点,即将该第3节点的子节点作为目标节点。也就是说,可进一步访问第4节点和第5节点,将第4节点和第5节点分别作为目标节点,并分别根据各个目标节点中包含的至少一个PC值获得至少一个当前指令序列,然后根据各个当前指令序列的执行结果更新目标PC值,直至控制器确定目标PC值满足预设条件。具体地,各个目标节点的执行过程与上文中的叙述一致,具体可参见上文的记载。
可选地,目标节点的子节点有多个时,针对多个子节点之间的访问顺序不做限制,即第2节点和第3节点的访问顺序不作限制,可以先对第2节点进行访问,后对第3节点进行访问,也可以先对第3节点进行访问,后对第2节点进行访问。
可见,本申请实施例,针对不满足“目标节点对应的至少一个执行结果中存在节点指令执行错误”条件的目标节点,通过不针对该类目标节点的子节点进行重新验证,可减少执行当前指令序列的次数,提高找到导致错误的指令的速率。
202、控制器根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,将所述目标PC值对应的节点指令作为所述初始指令序列中导致错误的指令。
其中,目标PC值的初始值是执行初始指令序列时输出错误结果的指令对应的PC值。
进一步地,在目标PC值满足预设条件时,控制器可将目标PC值对应的节点指令作为初始指令序列中导致错误的指令。
可选地,本申请实施例中,在每一次更新目标PC值之后,还可包括以下步骤:
所述控制器在所述目标PC值为所述地址依赖树中的最小目标PC值时,确定所述目标PC值满足预设条件。
其中,在每一次更新目标PC值,可得到的最小目标PC值,即导致错误机器状态快照的指令的PC值。
可选地,上述步骤202中,根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,可包括以下步骤:
若所述当前指令序列的执行结果错误,且所述当前指令序列的终止指令的PC值小于当前的目标PC值,所述控制器则将所述当前指令序列的终止指令的PC值作为所述目标PC值,之后根据下一当前指令序列的执行结果继续更新所述目标PC值,直至所述目标PC值满足预设条件。
具体地,针对第i个节点作为目标节点时,目标节点中的第j个PC值对应的当前指令序列中的第j个节点指令,第j个PC值为目标节点的各个PC值中任一PC值,在将第j个节点指令作为终止指令,执行当前执行序列,获得并保存所述当前指令序列的第j个机器状态快照之后,若根据第j个机器状态快照确定的当前指令序列的的执行结果错误,且第j个PC值小于当前的目标PC值,则控制器可将第j个PC值PC值作为目标PC值。然后,将j累加一次,即将所述第j+1个PC值对应的当前指令序列中的第j+1个节点指令作为终止指令,执行当前执行序列,获得并保存所述当前指令序列的第j+1个机器状态快照,根据第j+1个机器状态快照对应的当前指令序列的执行结果继续更新所述目标PC值,以此类推,直到遍历目标节点中包含的所有PC值。
举例说明,如图2C所示的地址依赖树,目标PC值的初始值为执行初始指令序列时输出错误结果的指令对应的PC值t,首先,当根节点作为目标节点时,可将PC值a对应的第一节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第一机器状态快照。若第一机器状态快照对应的当前指令序列的执行结果错误,但PC值a不小于当前的目标PC值t,则目标PC值为t。若第一机器状态快照对应的当前指令序列的执行结果错误,但PC值a小于当前的目标PC值t,则目标PC值更新为a。执行器还可以将PC值b对应的第二节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第二机器状态快照。若第二机器状态快照对应的当前指令序列的执行结果错误,且假定PC值b小于当前的目标PC值t或假定PC值b小于当前的目标PC值a,则控制器将PC值b作为目标PC值。
进一步地,将第2节点和第3节点分别作为目标节点,其中,访问第2节点和第3节点的顺序不做限制。当第2节点为目标节点,将PC值c对应的第三节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第三机器状态快照。若第三机器状态快照对应的当前指令序列的执行结果错误,且假定PC值c小于当前的目标PC值b,则控制器将PC值c作为目标PC值。
进一步地,可将第2节点的子节点分别作为目标节点,即将第4节点和第5节点分别作为目标节点。其中,当第4节点为目标节点,将PC值f对应的第六节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第六机器状态快照。若第六机器状态快照对应的当前指令序列的执行结果为错误,且假定PC值f小于当前的目标PC值c,则控制器将PC值f作为目标PC值。执行器还可以将PC值g对应的第七节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第七机器状态快照。若第七机器状态快照对应的当前指令序列的执行结果为正确,目标PC值为当前的目标PC值不变,即目标PC值为PC值f。当第5节点为目标节点,将PC值h对应的第八节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第八机器状态快照,若第八机器状态快照对应的当前指令序列的执行结果为正确,目标PC值为当前的目标PC值不变,即目标PC值为PC值f。
之后,执行器可以遍历第3节点及其子节点(第6节点)。即当第3节点为目标节点,将PC值d对应的第四节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第四机器状态快照。若第四机器状态快照对应的当前指令序列的执行结果为正确,目标PC值为当前的目标PC值不变。即目标PC值为PC值f。执行器还可以将PC值e对应的第五节点指令作为当前指令序列的终止指令,执行当前指令序列,获得并保存当前指令序列的第五机器状态快照。若第五机器状态快照对应的当前指令序列的执行结果为正确,目标PC值为当前的目标PC值不变,即目标PC值为PC值f。此外,不再访问第3节点的子节点,即不再访问第6节点。进一步地,考虑到第6节点不作为目标节点,因此,目标PC值f为最小的目标PC值,进而,可确定目标PC值f对应的当前指令序列中的节点指令为导致错误的指令。
上述实施例中,执行器按照深度优先的规则访问地址依赖树中的各个节点,即先访问第2节点及其子节点,再访问第3节点及其子节点。当然,在其他实施例中,执行器还可以按照广度优先的规则访问地址依赖树中的各个节点。例如,执行器在访问完第2节点后,可以先访问第3节点,再访问第2节点的子节点。上述实施例仅用于举例说明,本申请实施例中并不限定执行器对地址依赖树的访问方式。
可选地,上述方法还可包括以下步骤:
存储单元将来自于所述执行器的机器状态快照按照与所述待测器件的架构一致的树结构进行存储。
其中,机器状态快照可以通过与待测器件的架构一致的树结构进行存储,从而便于找到验证人员感兴趣的部件对应的机器状态快照。具体地,一个部件的机器状态快照可以存储在一个单独的字典内,因此包含多个部件的硬件系统可以包含多个子字典。此外,为便于机器状态快照的查找,可以设置一个包括所有机器状态快照的路径的索引文件,帮助验证人员进行查找。
可以看出,本申请提供的技术方案,通过执行器根据地址依赖树执行当前指令序列,得到当前指令序列的执行结果,控制器根据当前指令序列的执行结果更新目标PC值,直至目标PC值满足预设条件,将目标PC值对应的节点指令作为初始指令序列中导致错误的指令,本申请实施例地址依赖树反复对指令序列进行验证,直到获得导致错误的指令,从而,可准确、快速地对指令序列进行验证,确定导致错误的指令所在的位置,提高机器状态验证的效率。
如图3所示,图3为本申请实施例提供的另一种待测器件验证方法的流程示意图,应用于待测器件验证装置,所述待测器件验证装置包括执行器和控制器;所述方法包括:
301、执行器执行初始指令序列,获得所述初始指令序列的执行结果。
302、控制器在所述初始指令序列的执行结果错误时,则根据所述初始指令序列的执行结果构建地址依赖树;其中,所述地址依赖树的根节点包含所述初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;所述地址依赖树的下一层节点包含访问过所述上一层节点的中至少一个PC值对应的节点指令的操作数所在的RAM地址区间或寄存器号。
303、执行器将所述地址依赖树中的第i个节点作为目标节点,分别将所述目标节点中的至少一个PC值对应的节点指令作为所述当前指令序列的终止指令,并分别执行所述当前指令序列,获得并保存至少一个所述当前指令序列的机器状态快照。
304、执行器根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果。
305、若所述目标节点已被访问,且所述目标节点对应的所有执行结果中存在至少一个执行结果错误,所述执行器则将所述第i个节点的每一子节点依次作为所述目标节点,并重复调用所述执行器和所述控制器,直至所述控制器确定所述目标PC值满足预设条件。
306、若所述当前指令序列的执行结果错误,且所述当前指令序列的终止指令的PC值小于当前的目标PC值,所述控制器则将所述当前指令序列的终止指令的PC值作为所述目标PC值,之后根据下一当前指令序列的执行结果继续更新所述目标PC值,直至所述目标PC值满足预设条件。
需要说明的是,本实施例所述的内容的具体实现方式可参见上述方法,在此不再叙述。
本申请还揭露了一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如图2A或图3所示的待测器件验证方法的步骤。
本申请还揭露了一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如图2A或图3所示的待测器件验证方法的步骤。
在一些实施例里,还公开了一种芯片,其包括了上述待测器件验证装置。
在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。请参阅图4,图4提供了一种板卡,上述板卡除了包括上述芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392;
所述存储器件390与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。可以理解,当每一组所述存储单元中采用DDR4-3200颗粒时,数据传输的理论带宽可达到25600MB/s。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接口装置还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(MicroController Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一些实施例里,申请了一种电子装置,其包括了上述芯片或者上述板卡。
电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:RandomAccess Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (15)

1.一种待测器件验证装置,其特征在于,所述待测器件验证装置包括执行器和控制器,其中,
所述执行器,用于根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,所述地址依赖树中每一节点包括用于访问与节点对应的节点指令的地址区间和对应的节点指令的指令标志PC值;
所述控制器,还用于根据至少一个所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,将所述目标PC值对应的节点指令作为初始指令序列中导致错误的指令;在所述目标PC值为所述地址依赖树中的最小PC值时,确定所述目标PC值满足预设条件;
在所述根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果方面,所述执行器具体用于:
将所述地址依赖树中的第i个节点作为目标节点,所述第i个节点为所述地址依赖树中任一节点;
分别将所述目标节点中的至少一个PC值对应的节点指令作为所述当前指令序列的终止指令,并分别执行所述当前指令序列,获得并保存至少一个所述当前指令序列的机器状态快照;
根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果。
2.根据权利要求1所述的装置,其特征在于,所述执行器具体用于:
若所述目标节点未被访问,则遍历所述目标节点中的PC值;
当遍历所述目标节点的所有PC值后,将所述目标节点标记为已被访问的节点;
若所述目标节点已被访问,且所述目标节点中存在至少一个执行结果错误,则将所述第i个节点的每一子节点依次作为所述目标节点,并重复调用所述执行器和所述控制器,直至所述控制器确定所述目标PC值满足预设条件。
3.根据权利要求1所述的装置,其特征在于,在所述执行所述当前指令序列方面,所述执行器具体用于:
从所述当前指令序列的第一个指令执行至所述当前指令序列中的终止指令。
4.根据权利要求1所述的装置,其特征在于,在所述执行所述当前指令序列方面,所述执行器具体用于:
若所述当前指令序列的终止指令前面存在至少一个同步点,确定所述至少一个同步点中最接近所述节点指令的目标同步点,执行所述当前指令序列中从所述目标同步点对应的指令的后一指令至所述当前指令序列的终止指令之间的指令。
5.根据权利要求1所述的装置,其特征在于,在所述根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件方面,所述控制器具体用于:
若所述当前指令序列的执行结果错误,且所述当前指令序列的终止指令的PC值小于当前的目标PC值,则将所述当前指令序列的终止指令的PC值作为所述目标PC值,之后根据下一当前指令序列的执行结果继续更新所述目标PC值,直至所述目标PC值满足预设条件。
6.根据权利要求1所述的装置,其特征在于,所述执行器还用于:
若所述目标节点已被访问,且所述目标节点对应的所有执行结果均正确,则不再访问所述目标节点的子节点。
7.根据权利要求1所述的装置,其特征在于,所述装置还包括存储单元,所述存储单元包括RAM和寄存器,
所述执行器,还用于执行所述初始指令序列,获得所述初始指令序列的执行结果;
所述控制器,还用于在所述初始指令序列的执行结果错误时,则根据所述初始指令序列的执行结果构建地址依赖树;其中,所述地址依赖树的根节点包含所述初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;所述地址依赖树的下一层节点包含访问过上一层节点的至少一个PC值对应的节点指令的操作数所在的RAM地址区间或寄存器号。
8.一种待测器件验证方法,其特征在于,应用于待测器件验证装置,所述待测器件验证装置包括执行器和控制器,所述方法包括:
所述执行器根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,所述地址依赖树中每一节点包括用于访问与节点对应的节点指令的地址区间和对应的节点指令的指令标志PC值;
所述控制器根据至少一个所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,将所述目标PC值对应的节点指令作为初始指令序列中导致错误的指令;在所述目标PC值为所述地址依赖树中的最小PC值时,确定所述目标PC值满足预设条件;所述根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,包括:
所述执行器将所述地址依赖树中的第i个节点作为目标节点,所述第i个节点为所述地址依赖树中任一节点;
分别将所述目标节点中的至少一个PC值对应的节点指令作为所述当前指令序列的终止指令,并分别执行所述当前指令序列,获得并保存至少一个所述当前指令序列的机器状态快照;
所述执行器根据每一所述当前指令序列的机器状态快照,分别确定各个所述当前指令序列的执行结果是否正确,得到所述目标节点对应的至少一个当前指令序列的至少一个执行结果。
9.根据权利要求8所述的方法,其特征在于,所述根据地址依赖树执行当前指令序列,得到所述当前指令序列的执行结果,还包括:
若所述目标节点未被访问,则遍历所述目标节点中的PC值;
当遍历所述目标节点的所有PC值后,将所述目标节点标记为已被访问的节点;
若所述目标节点已被访问,且所述目标节点中存在至少一个执行结果错误,所述执行器则将所述第i个节点的每一子节点依次作为所述目标节点,并重复调用所述执行器和所述控制器,直至所述控制器确定所述目标PC值满足预设条件。
10.根据权利要求8所述的方法,其特征在于,所述执行所述当前指令序列,包括:
所述执行器从所述当前指令序列的第一个指令执行至所述当前指令序列中的终止指令。
11.根据权利要求8所述的方法,其特征在于,所述执行所述当前指令序列,包括:
若所述当前指令序列的终止指令前面存在至少一个同步点,所述执行器确定所述至少一个同步点中最接近所述节点指令的目标同步点,执行所述当前指令序列中从所述目标同步点对应的指令的后一指令至所述当前指令序列的终止指令之间的指令。
12.根据权利要求8所述的方法,其特征在于,所述根据所述当前指令序列的执行结果更新目标PC值,直至所述目标PC值满足预设条件,包括:
若所述当前指令序列的执行结果错误,且所述当前指令序列的终止指令的PC值小于当前的目标PC值,所述控制器则将所述当前指令序列的终止指令的PC值作为所述目标PC值,之后根据下一当前指令序列的执行结果继续更新所述目标PC值,直至所述目标PC值满足预设条件。
13.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若所述目标节点已被访问,且所述目标节点对应的所有执行结果均正确,所述执行器则不再访问所述目标节点的子节点。
14.根据权利要求8所述的方法,其特征在于,所述待测器件验证装置还包括存储单元,所述存储单元包括RAM和寄存器,所述方法还包括:
所述执行器执行所述初始指令序列,获得所述初始指令序列的执行结果;
所述控制器在所述初始指令序列的执行结果错误时,则根据所述初始指令序列的执行结果构建地址依赖树;其中,所述地址依赖树的根节点包含所述初始指令序列中输出错误结果的指令的输出结果所在的RAM地址区间或寄存器号;所述地址依赖树的下一层节点包含访问过上一层节点的至少一个PC值对应的节点指令的操作数所在的RAM地址区间或寄存器号。
15.一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求8-14任一项所述的方法。
CN201910288744.0A 2019-04-10 2019-04-10 待测器件验证装置及相关产品 Active CN110059390B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910288744.0A CN110059390B (zh) 2019-04-10 2019-04-10 待测器件验证装置及相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910288744.0A CN110059390B (zh) 2019-04-10 2019-04-10 待测器件验证装置及相关产品

Publications (2)

Publication Number Publication Date
CN110059390A CN110059390A (zh) 2019-07-26
CN110059390B true CN110059390B (zh) 2022-12-09

Family

ID=67317583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910288744.0A Active CN110059390B (zh) 2019-04-10 2019-04-10 待测器件验证装置及相关产品

Country Status (1)

Country Link
CN (1) CN110059390B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795903B (zh) * 2019-09-12 2023-08-15 中科寒武纪科技股份有限公司 指令处理方法、装置及相关产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938228B1 (en) * 2001-07-20 2005-08-30 Synopsys, Inc. Simultaneously simulate multiple stimuli and verification using symbolic encoding
CN101103333A (zh) * 2004-11-22 2008-01-09 高通股份有限公司 经由分支校正进行预解码错误处理
CN101604289A (zh) * 2009-07-10 2009-12-16 杭州电子科技大学 一种嵌入式系统的错误侦测和修复方法
CN103198260A (zh) * 2013-03-28 2013-07-10 中国科学院信息工程研究所 一种二进制程序漏洞自动化定位方法
CN104573228A (zh) * 2015-01-06 2015-04-29 中国人民解放军国防科学技术大学 面向兼容设计的微处理器硅后验证装置与验证方法
CN106021040A (zh) * 2016-05-04 2016-10-12 中国人民解放军国防科学技术大学 一种基于线形汇编指令差异性变换的dsp软错误检测方法
CN107315961A (zh) * 2017-07-11 2017-11-03 北京奇虎科技有限公司 程序漏洞检测方法及装置、计算设备、存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009157457A (ja) * 2007-12-25 2009-07-16 Optim Corp 端末装置、故障診断方法およびプログラム
JP4334598B1 (ja) * 2008-04-16 2009-09-30 株式会社東芝 情報処理装置およびエラー訂正方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938228B1 (en) * 2001-07-20 2005-08-30 Synopsys, Inc. Simultaneously simulate multiple stimuli and verification using symbolic encoding
CN101103333A (zh) * 2004-11-22 2008-01-09 高通股份有限公司 经由分支校正进行预解码错误处理
CN101604289A (zh) * 2009-07-10 2009-12-16 杭州电子科技大学 一种嵌入式系统的错误侦测和修复方法
CN103198260A (zh) * 2013-03-28 2013-07-10 中国科学院信息工程研究所 一种二进制程序漏洞自动化定位方法
CN104573228A (zh) * 2015-01-06 2015-04-29 中国人民解放军国防科学技术大学 面向兼容设计的微处理器硅后验证装置与验证方法
CN106021040A (zh) * 2016-05-04 2016-10-12 中国人民解放军国防科学技术大学 一种基于线形汇编指令差异性变换的dsp软错误检测方法
CN107315961A (zh) * 2017-07-11 2017-11-03 北京奇虎科技有限公司 程序漏洞检测方法及装置、计算设备、存储介质

Also Published As

Publication number Publication date
CN110059390A (zh) 2019-07-26

Similar Documents

Publication Publication Date Title
CN113076227B (zh) Mcu验证方法、系统和终端设备
CN102169846B (zh) 一种在集成电路晶圆测试过程中实现多维变量密码并行写入的方法
CN108628734B (zh) 一种功能程序调试方法和终端
JPS6063644A (ja) デイジタル装置の動作のモデリング方法及び装置
CN110261758B (zh) 待测器件验证装置及相关产品
CN103970634A (zh) 一种大型互连芯片用基于添加检测逻辑的背靠背环回验证方法
CN114449254A (zh) 一种准确性高的摄像头模组otp烧录方法及系统
CN110059390B (zh) 待测器件验证装置及相关产品
CN114548027A (zh) 在验证系统中追踪信号的方法、电子设备及存储介质
US9342425B2 (en) Test apparatus and test module
CN110765716A (zh) 数字产品的仿真信号查看方法及系统
US20130231885A1 (en) Test apparatus and test module
CN109902001B (zh) 对未初始化变量的检测方法及终端设备
CN115732025A (zh) Ram访问冲突的验证方法及验证装置
CN111157906A (zh) Soc精度测试方法、装置及系统
US9811450B2 (en) Semiconductor test apparatus for controlling tester
CN110059391B (zh) 待测器件验证装置及相关产品
CN110956998A (zh) 一种存储器测试装置与系统
JP2013140549A (ja) 半導体試験装置、半導体試験方法及びそのプログラム
CN115470125A (zh) 基于日志文件的调试方法、设备以及存储介质
CN117597669A (zh) 一种测试方法、系统及装置
CN105425095B (zh) 一种接线测试方法及装置
CN114077538A (zh) 程序调试方法、装置及可读存储介质
CN112131811A (zh) 一种fpga的时序参数提取方法
CN115510782B (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
CB02 Change of applicant information

Address after: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant after: Zhongke Cambrian Technology Co.,Ltd.

Address before: 100000 room 644, No. 6, No. 6, South Road, Beijing Academy of Sciences

Applicant before: Beijing Zhongke Cambrian Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant