CN103984632B - 一种基于错误传播分析的sdc脆弱指令识别方法 - Google Patents
一种基于错误传播分析的sdc脆弱指令识别方法 Download PDFInfo
- Publication number
- CN103984632B CN103984632B CN201410234116.1A CN201410234116A CN103984632B CN 103984632 B CN103984632 B CN 103984632B CN 201410234116 A CN201410234116 A CN 201410234116A CN 103984632 B CN103984632 B CN 103984632B
- Authority
- CN
- China
- Prior art keywords
- instruction
- sdc
- key
- fragility
- mistake
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于错误传播分析的SDC脆弱指令识别方法,包括如下步骤:首先对关键指令进行错误注入验证所有关键指令的SDC脆弱性,然后利用推断算法对非关键指令进行SDC脆弱性判定。本发明在保证较高准确率和覆盖率的前提下,显著减少了注入错误数。
Description
技术领域
本发明涉及计算机领域的软错误检测,具体涉及一种基于错误传播分析的SDC脆弱指令识别方法。
背景技术
单粒子翻转(Single Event Upset)造成的软错误,是半导体电路中的一种瞬态故障现象,通常是由外部环境中的高能粒子辐照和电压扰动、电磁干扰等电子噪声诱发。软错误虽然不会损坏内部硬件电路,但是却可以通过改变处理器状态或存储单元值等方式影响程序的正常运行,甚至导致卫星运行异常或者失控。近年来,芯片集成晶体管数呈指数级增长,在性能得到大幅提升的同时,处理器对于单粒子翻转变得更加敏感,系统整体的软错误率快速增加,因此对于单粒子软错误的检测与加固技术的需求变得日益迫切。
单粒子软错误引起的故障类型大致可以分为四种,包括:屏蔽(Benign)、崩溃(Crash)、挂起(Hang)和无异常伴随的结果错误(Silent Data Corruption,后文简称SDC)。其中,屏蔽没有造成可见的异常,并且运行结果正确;崩溃和挂起没有得到运行结果;SDC得到了运行结果,并且结果是错误的。由于导致SDC的运行过程不会抛出异常,因此SDC的发生最为隐蔽。一旦发生SDC,如果不能有效的检测,可能导致严重的后果。
现有的软错误检测方法主要基于现象捕捉(Symptom-based Detector)。现象是指系统的一些异常特征,包括分支预测失效、cache命中率低等。当检测器捕捉到异常特征时,就认为发生了软错误。此方法对软错误的检测率高、代价较低,但是不能检测导致SDC的软错误,因为SDC是隐蔽传播的,不会出现常见的异常特征。
为了弥补基于现象捕捉方法的缺陷,近年来出现了针对导致SDC的软错误检测方法,主要包括指令级冗余和程序级断言。指令级冗余对容易受到软错误干扰的指令进行时间或空间的冗余设计;程序级断言通过对程序正常运行时为真的条件进行判断来检测软错误。两种方法都需要针对选定的指令添加检测代码。执行检测代码会导致额外的时间代价,并且选定的指令越多,代价越高昂。为了减小时间代价,两种方法都重点针对SDC脆弱指令(SDC-causing instruction)进行部署。SDC脆弱指令是指发生软错误后会导致SDC的指令。
SDC脆弱指令可以通过错误注入实验(Fault Injection Campaign)得到。错误注入实验通过随机修改硬件的一个比特位来模拟单粒子翻转。注入错误数是修改比特位的总次数,可以用来衡量错误注入实验的时间代价。假如对每条指令都进行错误注入,即使规模很小的程序都有巨量的注入错误数。例如,对目的操作数(32位)进行错误注入,当程序含有10000条指令时,注入错误数就达到320000。为了减少注入错误数,一般只抽取部分指令样本进行错误注入。随机抽样虽然能够保证样本与原有的指令集合具有近似的SDC比例,但由于样本数量有限,会漏选很多SDC脆弱指令,造成检测的漏洞。
根据是否进行错误注入实验,可将现有工作中识别SDC脆弱指令的方法分为动态方法和静态方法两类,以下分类进行介绍。动态方法进行错误注入实验,通过选择性错误注入缓解了原有错误注入实验代价过高的问题。
Relyzer压缩了导致非SDC故障类型和等价类的错误注入。等价类是指每个基本块(basic block)都相同的控制流实例组成的集合,对等价类的不同实例进行错误注入得到的结果是相似的,因此在等价类中只选择一个代表进行错误注入。
SmartInjector补充了Relyzer的方法,认为具备相同数据传播模式的数据流的注入结果是相似的,将其归为同一个等价类,并只选择一个实例进行错误注入。
CriticalFault通过指令级脆弱性分析来减少注入错误数。指令级脆弱性分析能够找出非敏感位。在非敏感位发生的软错误不会对程序的运行产生影响,也不会产生SDC,因而CriticalFault排除掉了这些非敏感位的错误注入。
静态方法不进行错误注入实验,而是通过直接分析指令特征得到SDC脆弱指令。
Shoestring认为所有影响全局内存或函数参数的指令都是SDC脆弱指令。此判定方法容易实施,但由于判定条件只考虑指令的目的操作数,而不考虑程序逻辑等其他因素,因此准确率较低。
SymPLIFIED通过符号执行模拟错误传播过程来识别SDC脆弱指令。由于符号执行穷举了所有错误传播路径,因此不会出现漏判。但其模拟的某些错误在现实中不会发生,所以准确率较低。并且符号执行导致了状态爆炸,使得时间和空间代价极大。
综上所述,动态方法的优点是得到的SDC脆弱指令都是准确的,但错误注入导致代价较高;静态方法的实现简单,但准确率较低。为了在保证高准确率情况下降低注入代价,本发明提出一种新的动态方法。整体来看,前述动态方法主要思路是在错误注入实验开始前对冗余的错误注入进行压缩,而本发明是在错误注入实验开始后,根据已执行的错误注入的信息动态推测潜在的SDC脆弱指令,由此减少未进行的错误注入,从而进一步降低注入代价。
发明内容
针对上述现有技术存在的问题和不足,本发明的目的是提供一种基于错误传播分析的SDC脆弱指令识别方法,采用对关键指令和非关键指令分别进行处理,关键指令中的SDC脆弱指令是通过错误注入实验得到的,而非关键指令中的SDC脆弱指令是通过错误注入实验和推断算法得到的。推断算法根据错误注入实验的数据,对非关键指令进行分析和推理,得到的SDC脆弱指令不需要再进行错误注入,因此动态地对错误注入的流程进行调整。
本发明基于错误传播分析的SDC脆弱指令识别方法,无异常伴随的结果错误是由于单粒子软错误造成的故障;SDC脆弱指令是指导致SDC错误的指令;对于非关键指令Ik,若在同一函数中存在同时满足以下条件的关键指令Ic,则Ik是SDC脆弱指令。1)Ik是Ic的祖先节点;2)当在Ik发生错误时,Ic是错误的,且是唯一错误的关键指令;3)Ic是SDC脆弱指令。
这是因为由条件1)和2),Ic的错误是由Ik传播的。Ic是唯一错误的关键指令,其余关键指令是正确的,因而Ik的错误对于其他函数的影响是通过Ic传递出去的,在Ik发生的错误对于其他函数的影响相当于在Ic发生错误对其他函数的影响。由条件3),根据SDC脆弱指令的定义,在Ic发生错误会产生SDC,那么在Ik发生错误也会产生SDC,所以Ik也是SDC脆弱指令。因此构成了判定非关键指令的SDC脆弱性的充分条件。
本发明基于错误传播分析的SDC脆弱指令识别方法包括如下步骤:
步骤一:加载运行目标测试程序,即测试对象,所述目标测试程序由关键指令和非关键指令组成;所述关键指令指写函数间交互数据的指令,所述非关键指令指关键指令以外的所有指令。
步骤二:通过错误注入实验验证所有关键指令的SDC脆弱性。
首先根据关键指令的定义找出关键指令,然后通过修改指令目的操作数的一位对关键指令实施错误注入,如果得到的结果是SDC,则将该关键指令加入SDC脆弱关键指令集合。
步骤三:识别非关键指令中的SDC脆弱指令。
首先采用等价类注入的方法对非关键指令进行采样,将采样得到的指令添加进注入计划表,然后通过修改目的操作数的一位对指令实施错误注入,如果得到的结果是SDC,则运行推断算法,将推测出的SDC脆弱指令集合从注入计划表中删去,并将推测出的SDC脆弱指令集合加入SDC脆弱非关键指令集合。
所述的推断算法的输入分别为:错误注入中指令写入数据的记录、正常运行时指令写入数据的记录和由步骤二得到的SDC脆弱关键指令集合;且所述推断算法分为以下三个阶段:
(a)比较阶段:对错误注入实验的第j条指令Ij的写入数据与正常运行时相同的指令I′j的写入数据进行比较,若写入数据是不同的,则判定指令Ij发生了错误,将该指令标记为错误,否则将该指令标记为正确;如果Ij属于SDC脆弱关键指令集合则进入推测阶段;否则进入结束阶段。
(b)推测阶段:搜索Ij的祖先节点,若祖先节点被标记为正确,则结束该分支的搜索;若祖先节点被标记为错误,且祖先节点只有一个被标记为错误的SDC脆弱关键指令子孙节点Ij,则将该祖先节点加入推测出的SDC脆弱指令集合。
(c)结束阶段:如果Ij已经是最后一条指令,则结束,否则转到Ij的下一条指令;如果Ij是条件跳转指令,判断是否与正常运行时选择了同一分支,若选择了不同分支,则发生了错误的跳转;为了保持Ij和I′j是同一指令对应的指令实例,Ij和I′j均跳至Ij所在函数的最后一条指令。
步骤四:将步骤二获得的SDC脆弱关键指令集合和步骤三获得的SDC脆弱非关键指令集合合并得到了整个SDC脆弱指令集合。
与现有技术相比,本发明的有益效果是:
1)注入错误数少。本发明采用对关键指令和非关键指令分别进行处理,根据错误注入实验的数据,对非关键指令进行分析和推理的推断算法,得到的SDC脆弱指令不需要再进行错误注入,从而大大降低了注入错误数。相比于典型动态方法Relyzer,减少了36.4%的注入错误数。
2)准确率高。由于判定非关键指令的SDC脆弱性的充分条件客观描述了软错误导致SDC的传播特征,因而利用此充分条件,本发明具备高准确率。在西门子标准测试集上的实验表明,准确率到达98.8%,比典型方法Shoestring的准确率高21.6%。
3)覆盖率高。本发明针对关键指令和非关键指令都进行了SDC脆弱性的判定,避免了静态方法直接分析指令特征的局限性。在西门子标准测试集上的实验表明,覆盖率是96.9%,本发明的覆盖率比典型方法Shoestring高59.9%。
附图说明
图1为本发明求和程序sum的数据关联图;
图2为本发明推断算法的流程图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
首先,本发明得出测试程序的数据关联图。数据关联图G(V,E)是根据程序指令所操作数据的读写依赖建立的有向图,其中节点集V代表程序运行中执行的指令。而边集E代表指令的数据依赖关系。例如,节点u读入了节点v写的数据,就会产生一条由v指向u的边。任意两节点若vi可达vj,则称vi为vj的祖先节点,vj为vi的子孙节点。根据数据关联图能够找出错误的传入路径。
如图1所示,以求和程序sum生成的数据关联图为例。表1为求和程序sum,表1中sum程序的输入是变量size,计算了从0到size-1的和,并将和作为输出返回。表2为sum编译后的指令及其对应数据关联图中的节点;节点按照指令所写变量排列,比如变量k所在列的节点都是对k进行写操作的指令。以节点7为例,节点7对应指令add dword ptr[esp+0x24],eax,读取寄存器eax和内存[esp+0x24],写内存[esp+0x24]。[esp+0x24]代表寄存器esp与常量0x24相加后所对应内存地址的值。节点7的父节点是上一次写eax的节点6和上一次写[esp+0x24]的节点1,其子节点是下一次读[esp+0x24]的节点13。
如图2所示,得到数据关联图后,本发明基于错误传播分析的SDC脆弱指令识别方法包括如下步骤:
步骤一:加载运行目标测试程序,即测试对象,所述目标测试程序由关键指令和非关键指令组成;所述关键指令指写函数间交互数据的指令,所述非关键指令指关键指令以外的所有指令。
步骤二:通过错误注入实验验证所有关键指令的SDC脆弱性。
首先根据关键指令的定义找出关键指令,然后通过修改指令目的操作数的一位对关键指令实施错误注入,如果得到的结果是SDC,则将该关键指令加入SDC脆弱关键指令集合。
步骤三:识别非关键指令中的SDC脆弱指令。
首先采用等价类注入的方法对非关键指令进行采样,将采样得到的指令添加进注入计划表,然后通过修改目的操作数的一位对指令实施错误注入,如果得到的结果是SDC,则运行推断算法,将推测出的SDC脆弱指令集合从注入计划表中删去,并将推测出的SDC脆弱指令集合加入SDC脆弱非关键指令集合。
所述的推断算法的输入分别为:错误注入中指令写入数据的记录、正常运行时指令写入数据的记录和由步骤二得到的SDC脆弱关键指令集合;且所述推断算法分为以下三个阶段:
(a)比较阶段:对错误注入实验的第j条指令Ij的写入数据与正常运行时相同的指令I′j的写入数据进行比较,若写入数据是不同的,则判定指令Ij发生了错误,将该指令标记为错误,否则将该指令标记为正确;如果Ij属于SDC脆弱关键指令集合则进入推测阶段;否则进入结束阶段。
(b)推测阶段:搜索Ij的祖先节点,若祖先节点被标记为正确,则结束该分支的搜索;若祖先节点被标记为错误,且祖先节点只有一个被标记为错误的SDC脆弱关键指令子孙节点Ij,则将该祖先节点加入推测出的SDC脆弱指令集合。
(c)结束阶段:如果Ij已经是最后一条指令,则结束,否则转到Ij的下一条指令;如果Ij是条件跳转指令,判断是否与正常运行时选择了同一分支,若选择了不同分支,则发生了错误的跳转;为了保持Ij和I′j是同一指令对应的指令实例,Ij和I′j均跳至Ij所在函数的最后一条指令。
步骤四:将步骤二获得的SDC脆弱关键指令集合和步骤三获得的SDC脆弱非关键指令集合合并得到了整个SDC脆弱指令集合。
实施例1
以图1中的sum程序为例来说明识别算法的过程。首先,找出所有指令中的关键指令。根据关键指令的定义,节点18是关键指令,其余的指令都属于非关键指令。通过修改目的操作数的一位对节点18进行错误注入,发现结果是错误的,将节点18加入SDC脆弱的关键指令集合;第二步,对非关键指令进行错误注入和推断。采用等价类注入法对上述非关键指令进行采样,添加进注入计划表,并将其中的节点1的目的操作数从0修改为1,最终结果从1变为2,导致了SDC,然后运行推断算法。从节点1开始,依次比较节点2-18的写入数据与正常运行时相同节点的写入数据,如果数据是不一致的,则将该节点标记为错误。比如,正常运行时,节点7的写入数据等于0;而对节点1进行错误注入后,节点7的写入数据等于1,因而节点7被标记为错误。图1中节点1、7、13、18经过比较阶段后被标记为错误,其他节点被标记为正确。除了节点18以外的节点比较后进入结束阶段,由于不存在错误的跳转,转到下一条指令;节点18属于SDC脆弱的关键指令集合,因此需要进入推测阶段。搜索节点18的祖先节点。首先,节点18的父节点是节点13,节点13被标记为错误;继续搜索13的父节点,得到节点7和节点12,节点12被标记为正确,所以结束该分支的搜索;节点7被标记为错误,所以继续搜索节点7的父节点,得到节点1和节点6,节点6被标记为正确,所以结束该分支的搜索;节点1被标记为错误,节点1没有父节点,所以结束搜索。节点1、7、13被标记为错误,且只有一个被标记为错误的SDC脆弱关键指令子孙节点18,因而节点1、7、13满足判定SDC脆弱指令的充分条件,推测出节点7、13为SDC脆弱指令,将节点7、13从注入计划表中删去。然后进入结束阶段,由于节点18是最后一条指令,因而推断算法结束。因此,sum程序的SDC脆弱指令集合包含节点18、1、7、13。
表1求和程序sum
表2sum编译后的指令及其对应数据关联图中的节点
Claims (1)
1.一种基于错误传播分析的SDC脆弱指令识别方法,SDC为无异常伴随的结果错误;所述的识别方法包括如下步骤:
步骤一:加载运行目标测试程序,即测试对象,所述目标测试程序由关键指令和非关键指令组成;所述关键指令指写函数间交互数据的指令,所述非关键指令指关键指令以外的所有指令;
步骤二:通过错误注入实验验证所有关键指令的SDC脆弱性
首先根据关键指令的定义找出关键指令,然后通过修改指令目的操作数的一位对关键指令实施错误注入,如果得到的结果是SDC,则将该关键指令加入SDC脆弱关键指令集合;
步骤三:识别非关键指令中的SDC脆弱指令
首先采用等价类注入的方法对非关键指令进行采样,将采样得到的指令添加进注入计划表,然后通过修改目的操作数的一位对指令实施错误注入,如果得到的结果是SDC,则运行推断算法,将推测出的SDC脆弱指令集合从注入计划表中删去,并将推测出的SDC脆弱指令集合加入SDC脆弱非关键指令集合;
所述的推断算法的输入分别为:错误注入中指令写入数据的记录、正常运行时指令写入数据的记录和由步骤二得到的SDC脆弱关键指令集合;且所述推断算法分为以下三个阶段:
(a)比较阶段:对错误注入实验的第j条指令Ij的写入数据与正常运行时相同的指令I′j的写入数据进行比较,若写入数据是不同的,则判定指令Ij发生了错误,将该指令标记为错误,否则将该指令标记为正确;如果Ij属于SDC脆弱关键指令集合则进入推测阶段;否则进入结束阶段;
(b)推测阶段:搜索Ij的祖先节点,若祖先节点被标记为正确,则结束该分支的搜索;若祖先节点被标记为错误,且祖先节点只有一个被标记为错误的SDC脆弱关键指令子孙节点Ij,则将该祖先节点加入推测出的SDC脆弱指令集合;
(c)结束阶段:如果Ij已经是最后一条指令,则结束,否则转到Ij的下一条指令;如果Ij是条件跳转指令,判断是否与正常运行时选择了同一分支,若选择了不同分支,则发生了错误的跳转;为了保持Ij和I′j是同一指令对应的指令实例,Ij和I′j均跳至Ij所在函数的最后一条指令;
步骤四:将步骤二获得的SDC脆弱关键指令集合和步骤三获得的SDC脆弱非关键指令集合合并得到了整个SDC脆弱指令集合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410234116.1A CN103984632B (zh) | 2014-05-29 | 2014-05-29 | 一种基于错误传播分析的sdc脆弱指令识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410234116.1A CN103984632B (zh) | 2014-05-29 | 2014-05-29 | 一种基于错误传播分析的sdc脆弱指令识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103984632A CN103984632A (zh) | 2014-08-13 |
CN103984632B true CN103984632B (zh) | 2016-08-24 |
Family
ID=51276622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410234116.1A Active CN103984632B (zh) | 2014-05-29 | 2014-05-29 | 一种基于错误传播分析的sdc脆弱指令识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103984632B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334903B (zh) * | 2018-02-06 | 2021-06-11 | 南京航空航天大学 | 一种基于支持向量回归的指令sdc脆弱性预测方法 |
CN108491317B (zh) * | 2018-02-06 | 2021-04-16 | 南京航空航天大学 | 一种基于指令脆弱性分析的sdc错误检测方法 |
CN109063775A (zh) * | 2018-08-03 | 2018-12-21 | 南京航空航天大学 | 基于长短期记忆网络的指令sdc脆弱性预测方法 |
CN111274058B (zh) * | 2020-01-20 | 2024-04-02 | 东南大学 | 一种轻量级冗余断言筛选方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289408A (zh) * | 2011-09-08 | 2011-12-21 | 武汉大学 | 一种基于错误传播网络的回归测试用例排序方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070074175A1 (en) * | 2005-09-23 | 2007-03-29 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for dynamic probes for injection and extraction of data for test and monitoring of software |
-
2014
- 2014-05-29 CN CN201410234116.1A patent/CN103984632B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102289408A (zh) * | 2011-09-08 | 2011-12-21 | 武汉大学 | 一种基于错误传播网络的回归测试用例排序方法 |
Non-Patent Citations (2)
Title |
---|
Executable Assertions for Detecting Data Errors inEmbedded Control Systems;Martin Hiller;《Dependable Systems and Networks,2000.DSN 2000. Proceedings International conference on》;20000628;第24-33页 * |
基于错误传播分析的软件脆弱点识别方法研究;李爱国 等;《计算机学报》;20071130;第30卷(第11期);第1910-1921页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103984632A (zh) | 2014-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489520B2 (en) | Method and apparatus for injecting fault and analyzing fault tolerance | |
CN103984632B (zh) | 一种基于错误传播分析的sdc脆弱指令识别方法 | |
US7861116B2 (en) | Device, system, and method for optimized concurrent error detection | |
Mitra et al. | The resilience wall: Cross-layer solution strategies | |
Hayes et al. | An analysis framework for transient-error tolerance | |
US10853493B2 (en) | Enhanced vector-based identification of circuit trojans | |
US11003817B2 (en) | Hard error simulation and usage thereof | |
US20080008021A1 (en) | Method for recognizing and verifying fifo structures in integrated circuit designs | |
Sadi et al. | Special session: on the reliability of conventional and quantum neural network hardware | |
CN108491317B (zh) | 一种基于指令脆弱性分析的sdc错误检测方法 | |
US11416662B1 (en) | Estimating diagnostic coverage in IC design based on static COI analysis of gate-level netlist and RTL fault simulation | |
US7478295B2 (en) | Method and apparatus of fault diagnosis for integrated logic circuits | |
US11249888B1 (en) | System and method for generating counterexample tests of incidental invariants | |
Gil-Tomás et al. | Studying the effects of intermittent faults on a microcontroller | |
Veeravalli et al. | An infrastructure for accurate characterization of single-event transients in digital circuits | |
CN114510866B (zh) | 用于追踪逻辑系统设计的错误的方法及相关设备 | |
Cheng et al. | Cross-layer resilience: Challenges, insights, and the road ahead | |
JP6045351B2 (ja) | 検証装置及び検証方法 | |
EP3553681B1 (en) | Method and apparatus for error test coverage determination for a circuit by simulation | |
Wunderlich et al. | Generalized fault modeling for logic diagnosis | |
Mondal et al. | Hardware Trojan Detection using Transition Probability with Minimal Test Vectors | |
Holst et al. | Logic fault diagnosis of hidden delay defects | |
Xue et al. | Using formal methods to evaluate hardware reliability in the presence of soft errors | |
Sosnowski et al. | Developing data warehouse for simulation experiments | |
Zhang et al. | EBSCN: An error backtracking method for soft errors based on clustering and a neural network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |