CN116932366A - 命令序列生成方法、测试方法、设备以及存储介质 - Google Patents
命令序列生成方法、测试方法、设备以及存储介质 Download PDFInfo
- Publication number
- CN116932366A CN116932366A CN202210337896.7A CN202210337896A CN116932366A CN 116932366 A CN116932366 A CN 116932366A CN 202210337896 A CN202210337896 A CN 202210337896A CN 116932366 A CN116932366 A CN 116932366A
- Authority
- CN
- China
- Prior art keywords
- command
- address
- random
- type
- executable
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 93
- 238000010998 test method Methods 0.000 title abstract description 7
- 238000012360 testing method Methods 0.000 claims abstract description 74
- 238000011990 functional testing Methods 0.000 claims abstract description 27
- 230000015654 memory Effects 0.000 claims description 74
- 230000006870 function Effects 0.000 claims description 32
- 239000004065 semiconductor Substances 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 9
- 238000012545 processing Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 201000001098 delayed sleep phase syndrome Diseases 0.000 description 2
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 description 2
- 230000005284 excitation Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 102100036725 Epithelial discoidin domain-containing receptor 1 Human genes 0.000 description 1
- 101710131668 Epithelial discoidin domain-containing receptor 1 Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002498 deadly effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3676—Test management for coverage analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本公开实施例提供了一种命令序列生成方法、测试方法、设备以及存储介质,该命令序列生成方法包括:根据当前状态,基于状态机模块确定至少一个可执行命令;获取所述至少一个可执行命令对应的命令权重,并将所述命令权重作为约束条件从所述至少一个可执行命令中产生随机命令;根据所述随机命令基于所述状态机模块确定下一状态,将所述下一状态作为当前状态,并继续执行所述根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。这样,根据该随机命令序列进行测试,不仅可以提高DRAM产品功能测试覆盖率,还可以提高测试效率。
Description
技术领域
本公开涉及半导体技术领域,尤其涉及一种命令序列生成方法、测试方法、设备以及存储介质。
背景技术
随着半导体技术的发展,对数据的传输速度提出了越来越高的要求。为了获得更快的数据传输速度,应运而生了一系列数据可以双倍速率(Double Data Rate,DDR)传输的存储器等器件。
在动态随机存取存储器(Dynamic Random Access Memory,DRAM)中,对于小规模电路,目前可以通过编写独立的激励文件,定向地测试某些功能。然而,随着设计越来越大,功能的数量倍数增长,完整地检查全部功能将变得十分困难,并且某些特定功能之间的跳转、交互,往往存在着一些预料之外的程序错误(Bug),这时候只通过定向激励测试比较难发现。
发明内容
本公开提供了一种命令序列生成方法、测试方法、设备以及存储介质,不仅可以提高DRAM产品功能测试覆盖率,还可以提高测试效率。
第一方面,本公开实施例提供了一种命令序列生成方法,该方法包括:
根据当前状态,基于状态机模块确定至少一个可执行命令;
获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令;
根据随机命令基于状态机模块确定下一状态,将下一状态作为当前状态,并继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。
在一些实施例中,在获取至少一个可执行命令对应的命令权重之前,该方法还包括:对若干个命令进行功能描述及建模,得到若干个可执行命令;确定状态机模块的至少两个状态;基于至少两个状态与若干个可执行命令,构建状态机模块的状态跳转关系;其中,状态跳转关系包括若干个可执行命令各自的命令权重,可执行命令用于触发第一状态跳转至下一状态,且第一状态为至少两个状态中的任意一个状态。
在一些实施例中,所述获取至少一个可执行命令对应的命令权重,包括:基于状态跳转关系,从若干个可执行命令各自的命令权重中获取至少一个可执行命令对应的命令权重。
在一些实施例中,该方法还包括:从若干个可执行命令中,选取用于触发当前状态跳转的至少一个可执行命令作为当前状态对应的合法命令;
相应地,获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令,包括:获取合法命令对应的命令权重,并将命令权重和合法命令共同作为约束条件产生随机命令。
在一些实施例中,该方法还包括:获取随机命令待执行访问操作的若干个存储地址;对若干个存储地址进行地址权重设置,将地址权重作为约束条件产生随机地址;其中,随机命令用于访问随机地址并进行功能测试。
在一些实施例中,随机命令序列包括多个命令序列单元;其中,每一个命令序列单元是由随机命令和随机地址构成。
在一些实施例中,存储地址包括第一类地址和第二类地址;所述对若干个存储地址进行地址权重设置,包括:对若干个存储地址中的第一类地址设置第一权重值,以及对若干个存储地址中的第二类地址设置第二权重值;其中,第一类地址表示未被随机命令执行访问操作的地址,第二类地址表示已经被随机命令执行访问操作的地址,且第一权重值大于第二权重值。
在一些实施例中,第一类地址包括常规地址和冗余地址;所述对若干个存储地址中的第一类地址设置第一权重值,包括:对第一类地址中的常规地址设置第一一权重值,以及对第一类地址中的冗余地址设置第一二权重值;其中,第一一权重值大于第一二权重值。
在一些实施例中,该方法还包括:在随机地址被随机命令执行访问操作之后,确定随机地址为随机命令对应的第二类地址;将随机地址存储至地址记录表;其中,地址记录表用于记录已经被随机命令执行访问操作的第二类地址,且不同的随机命令对应不同的地址记录表。
在一些实施例中,该方法还包括:当随机命令对地址记录表中存储的第二类地址再次执行访问操作时,对地址记录表中存储的第二类地址进行地址权重动态调整,以减小第二类地址的第二权重值。
在一些实施例中,随机命令序列的类型为单命令-单命令类型。
第二方面,本公开实施例提供了一种命令序列测试方法,该方法包括:
确定待测试的随机命令序列;其中,随机命令序列包括多个命令序列单元,且每一个命令序列单元是由随机命令和随机地址构成;
根据状态机模块和当前状态,确定随机命令;
基于随机命令,对随机地址对应的存储单元进行功能测试。
在一些实施例中,所述根据状态机模块和当前状态,确定随机命令,包括:根据当前状态,基于状态机模块确定至少一个可执行命令;获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令。
在一些实施例中,该方法还包括:根据随机命令,基于状态机模块确定下一状态;将下一状态作为当前状态,继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以产生下一个随机命令。
在一些实施例中,该方法还包括:从若干个可执行命令中,选取用于触发当前状态跳转的至少一个可执行命令作为当前状态对应的合法命令;
相应地,所述获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令,包括:获取合法命令对应的命令权重,并将命令权重和合法命令共同作为约束条件产生随机命令。
在一些实施例中,在基于随机命令,对随机地址对应的存储单元进行功能测试之前,该方法还包括:获取随机命令待执行访问操作的若干个存储地址;对若干个存储地址进行地址权重设置,将地址权重作为约束条件产生随机地址;根据随机命令访问随机地址,以执行对随机地址对应的存储单元进行功能测试的步骤。
在一些实施例中,存储地址包括第一类地址和第二类地址;对若干个存储地址进行地址权重设置,包括:对若干个存储地址中的第一类地址设置第一权重值,以及对若干个存储地址中的第二类地址设置第二权重值;其中,第一类地址表示未被随机命令执行访问操作的地址,第二类地址表示已经被随机命令执行访问操作的地址,且第一权重值大于第二权重值。
第三方面,本公开实施例提供了一种半导体设备,包括存储器和处理器;其中,
存储器,用于存储能够在处理器上运行的计算机程序;
处理器,用于在运行计算机程序时,执行如第一方面的方法、或者如第二方面的方法。
第四方面,本公开实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序被执行时实现如第一方面的方法、或者如第二方面的方法。
本公开实施例提供了一种命令序列生成方法、测试方法、设备以及存储介质,根据当前状态,基于状态机模块确定至少一个可执行命令;获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令;根据随机命令基于状态机模块确定下一状态,将下一状态作为当前状态,并继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。这样,由于该随机命令序列的生成能够最小化到单命令-单命令级别,使得命令发送的随机度更高,从而在根据该随机命令序列进行测试时,不仅提高了DRAM产品功能测试覆盖率,还提高了测试效率。
附图说明
图1为本公开实施例提供的一种命令序列生成方法的流程示意图;
图2为本公开实施例提供的一种状态机模块的跳转关系示意图一;
图3为本公开实施例提供的一种命令序列生成方法的应用架构示意图;
图4为本公开实施例提供的一种命令序列测试方法的流程示意图;
图5为本公开实施例提供的一种状态机模块的跳转关系示意图二;
图6为本公开实施例提供的一种命令序列生成装置的组成结构示意图;
图7为本公开实施例提供的一种命令序列测试装置的组成结构示意图;
图8为本公开实施例提供的一种半导体设备的具体硬件结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅仅用于解释相关公开,而非对该公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关公开相关的部分。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
需要指出,本公开实施例所涉及的术语“第一\第二\第三”仅是用于区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本公开实施例能够以除了在这里图示或描述的以外的顺序实施。
动态随机存取存储器(Dynamic Random Access Memory,DRAM)具有存取速度快、存储密度高、单位存储单元成本低的优势,广泛应用于计算机的主存。DRAM技术飞速发展,双倍速率(Double Data Rate,DDR)已经由DDR1、DDR2、DDR3、DDR4发展到了DDR5。随着计算机能力的不断进步,推动着存储器件朝着更高性能的方向发展。
可以理解,对于小规模电路,目前可以通过编写独立的激励文件,定向地测试某些功能。但是随着设计越来越大,功能的数量倍数增长,完整地检查全部功能将变得十分困难,并且这些特定功能之间的跳转、交互等等,往往存在着一些预料之外的程序错误(Bug),只通过定向激励测试比较难以发现。因此需要使用约束随机测试。
具体来说,通过修改定向测试的数据流,检查到的可能是一些比特级(bit-level)的错误即数据链路(data-path)上的错误,而控制逻辑级(control-level)的Bug,这种往往更加致命,可以通过随机约束测试的序列级别的随机进行检查。另外,对于DRAM产品的多状态跳转路径的高覆盖检查十分重要。
然而,在相关技术中,定向测试的简单激励,通过手动检查,效率比较低;随机约束测试搭建好测试平台之后可同时进行数百个测试,并且自动检查,效率更高。但是对于指令序列的产生,如果采用组合-组合之间的随机生成合法序列(Sequence),覆盖率相对较低。
基于此,本公开实施例提供了一种命令序列生成方法,该方法的基本思想是:根据当前状态,基于状态机模块确定至少一个可执行命令;获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令;根据随机命令基于状态机模块确定下一状态,将下一状态作为当前状态,并继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。这样,由于该随机命令序列的生成能够最小化到单命令-单命令级别,使得命令发送的随机度更高,从而在根据该随机命令序列进行测试时,提高了DRAM产品功能测试覆盖率。
下面将结合附图对本公开各实施例进行详细说明。
在本公开的一实施例中,参见图1,其示出了本公开实施例提供的一种命令序列生成方法的流程示意图。如图1所示,该方法可以包括:
S101:根据当前状态,基于状态机模块确定至少一个可执行命令。
需要说明的是,本公开实施例提供了一种数字验证的随机序列发生器,尤其涉及DRAM产品随机命令序列的发生。在这里,为了保证DRAM产品数据读写的准确性,在进行数字验证时编写的随机测试文件需要尽可能的提高功能测试覆盖率。
具体来讲,本公开实施例可以根据状态机模块以及当前状态,确定至少一个可执行命令(Command,CMD);然后通过对这至少一个可执行命令进行命令权重和合法性约束,能够应用于产生具有高覆盖率的随机命令序列,并且可以通过设置不同命令的权重来实现对主要功能的重点测试,例如将刷新命令的权重设置高一些,这样可以在有限的时长内增加刷新命令的测试次数,进而提高测试效率。
还需要说明的是,在本公开实施例中,状态机模块可以看作是一个有向图形,由一组节点和一组相应的转移函数组成。它通过响应一系列事件而“运行”,而且能够根据控制信号按照预先设定的状态进行状态跳转。在这里,状态机模块进行描述时关键需要描述清楚以下几个要素:如何进行状态跳转、每个状态的输出是什么、状态跳转的条件等。
在一些实施例中,在根据状态机模块确定至少一个可执行命令之前,该方法还可以包括:
对若干个命令进行功能描述及建模,得到若干个可执行命令;
确定状态机模块的至少两个状态;
基于至少两个状态与若干个可执行命令,构建状态机模块的状态跳转关系。
需要说明的是,本公开实施例的状态机模块包括有:若干个可执行命令各自的命令权重、至少两个状态以及用于触发状态跳转关系的可执行命令等要素。
还需要说明的是,在本公开实施例中,对于状态机模块而言,状态跳转关系可以用状态跳转图描述。其中,在状态跳转图中,状态跳转关系可以包括若干个可执行命令各自的命令权重,可执行命令用于触发第一状态跳转至下一状态,而且第一状态为至少两个状态中的任意一个状态。其中,这里的命令权重可以是按照一定的策略进行预先设置。示例性地,可以按照经验值进行设置,也可以按照命令功能的偏重程度进行设置,如更偏重读写功能,那么读写命令的命令权重设置的越高;甚至还可以是按照一个计算机制来确定每一状态对应的至少一个可执行命令的命令权重等,本公开实施例不作具体限定。
也就是说,在本公开实施例中,首先,可以根据技术规格(spec)对若干个命令进行功能描述、建模操作等,确定若干个可执行命令;其次,可以根据spec定义出所有DRAM的状态,例如空闲(Idle)状态、读(Read)状态、写(Write)状态、模式寄存器读(Mode RegisterRead,MRR)状态等等;然后,根据这至少两个状态与若干个可执行命令,能够构建出spec的状态跳转关系;再次,根据spec的状态跳转关系,可以描述不同状态之间的合法跳转路径。
具体来讲,以当前状态作为第一状态,那么首先确定出当前状态,然后确定触发当前状态进行状态跳转的至少一个可执行命令;对所有的可执行命令设置权重,进行权重约束,以构建出状态机模块的状态跳转关系。
这样,在确定当前状态的情况下,基于状态机模块的状态跳转关系,可以得到至少一个可执行命令。
S102:获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令。
在一些实施例中,所述获取至少一个可执行命令对应的命令权重,可以包括:基于状态跳转关系,从若干个可执行命令各自的命令权重中获取至少一个可执行命令对应的命令权重。
也就是说,在本公开实施例中,基于spec的状态跳转关系,可以获取当前状态对应的至少一个可执行命令;然后从已知的若干个可执行命令各自的命令权重中来获取这至少一个可执行命令对应的命令权重。在一种具体的实现方式中,命令权重实际为一个概率权重,那么针对当前状态对应的至少一个可执行命令,这至少一个可执行命令对应的命令权重之和可以等于1。
这样,在获取到命令权重之后,随后将命令权重作为约束条件能够从这至少一个可执行命令中产生随机命令。
在一些实施例中,该方法还可以包括:从若干个可执行命令中,选取用于触发当前状态跳转的至少一个可执行命令作为当前状态对应的合法命令;
相应地,所述获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令,可以包括:获取合法命令对应的命令权重,并将命令权重和合法命令共同作为约束条件产生随机命令。
示例性地,参见图2,其示出了本公开实施例提供的一种状态机模块的跳转关系示意图。如图2所示,状态机模块可以包括空闲状态、状态1、状态2、状态3和状态x;还可以包括有a、b、c、d、e、f、g、h等八个可执行命令。其中,对于空闲状态而言,触发空闲状态进行跳转的可执行命令为a、b、c,即空闲状态对应的合法命令仅为a、b、c;在获取a、b、c对应的命令权重之后,可以根据命令权重和合法命令共同作为约束条件,从这三个命令中产生随机命令,例如随机命令可以为a或者b或者c。
这样,在随机命令产生过程中,根据命令权重和合法命令共同约束命令出现概率,使得命令发送的更加随机,各个状态之间的跳转更加灵活,从而提高了功能测试的覆盖率。
S103:根据随机命令基于状态机模块确定下一状态,将下一状态作为当前状态,并继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。
需要说明的是,在产生随机命令之后,根据状态机模块的状态跳转关系、当前状态以及随机命令,可以确定出下一状态;然后将下一状态作为新一轮的当前状态,再次返回执行步骤S101,从而能够生成随机命令序列。
示例性地,仍以图2为例,状态机模块可以包括空闲状态、状态1、状态2、状态3和状态x;还可以包括有a、b、c、d、e、f、g、h等八个可执行命令。其中,在当前状态为空闲状态的情况下,这时候对应的可执行命令包括a、b、c,如果在命令权重和合法命令共同约束下产生的随机命令为b,那么当前状态跳转的下一状态为状态2,即状态2可以作为新一轮的当前状态;这时候对应的可执行命令包括f和h,如果在命令权重约束和合法命令共同约束下产生的随机命令为f,那么当前状态跳转的下一状态为状态x,即状态x可以作为新一轮的当前状态,据此以生成随机命令序列。
在这里,由于状态跳转关系用于描述不同状态之间的合法跳转路径,从而根据状态跳转关系,以及命令权重和合法命令作为约束条件,能够使产生的命令序列的随机度更高,覆盖面更广。
进一步地,针对随机命令待执行访问操作的存储地址,本公开实施例也可以设置地址权重,从而产生随机地址。因此,在一些实施例中,该方法还包括:
获取随机命令待执行访问操作的若干个存储地址;
对若干个存储地址进行地址权重设置,将地址权重作为约束条件产生随机地址;其中,随机命令用于访问随机地址并进行功能测试。
需要说明的是,在本公开实施例中,不同的存储地址对应有不同的存储单元。其中,通过随机命令访问存储地址,能够对该存储地址对应的存储单元进行功能测试。
还需要说明的是,在本公开实施例中,一个随机命令序列可以包括多个命令序列单元;其中,每一个命令序列单元是由随机命令和随机地址构成。
这样,在根据状态机模块产生随机命令之后,可以获取随机命令待执行访问操作的若干个存储地址;然后根据地址权重作为约束条件,从这若干个存储地址中产生随机地址,从而不仅可以尽量多地检查存储单元的配套解码、放大、纠错等电路功能的正确与否,还可以减少同一命令在下一次访问相同存储地址的概率。
在一些实施例中,存储地址可以包括第一类地址和第二类地址;所述对若干个存储地址进行地址权重设置,可以包括:
对若干个存储地址中的第一类地址设置第一权重值,以及对若干个存储地址中的第二类地址设置第二权重值;
其中,第一类地址表示未被随机命令执行访问操作的地址,第二类地址表示已经被随机命令执行访问操作的地址,且第一权重值大于第二权重值。
也就是说,针对已经被随机命令访问过的第二类地址,可以设置相对较小的权重值;针对未被随机命令访问过的第一类地址,可以设置相对较大的权重值;从而在下次访问操作时,可以优先访问未被访问过的地址,减少该随机命令在下一次访问相同存储地址的概率。可以理解的是,初始时,所有的地址都属于第一类地址,随着访问次数的增加,第二类地址的数量会慢慢增加,第一类地址的数量会减小。
还需要说明的是,在本公开实施例中,常规地址(Normal addr)是指正常的、没有缺陷的地址,冗余地址(Redundant addr)是指物理存在的一些多余的行或列。由于DRAM在制作的时候存在缺陷,例如有的行或列发生损坏;这时候就需要使用冗余地址去替换坏掉的行或列。另外,重复地址是指已经访问过的第二类地址,与冗余地址是有区别的;而且重复地址在下次访问操作时可以减少访问或者不访问该地址。
对于第一类地址而言,在一种具体的实施例中,第一类地址可以包括常规地址和冗余地址。相应地,所述对若干个存储地址中的第一类地址设置第一权重值,可以包括:
对第一类地址中的常规地址设置第一一权重值,以及对第一类地址中的冗余地址设置第一二权重值;其中,第一一权重值大于第一二权重值。
在这里,针对未被访问过的第一类地址,可以分为常规地址和冗余地址;其中,常规地址设置的权重值需要大于冗余地址设置的权重值,以便实现对常规地址和冗余地址对应的存储单元分主次访问,而且常规地址作为存储主力,需要更大的权重值。在一些实施例中,可以将冗余地址的权重设置为0,从而能够检测出具有缺陷的存储单元,以便于及时利用冗余的存储单元进行替换。
对于第二类地址而言,在另一种具体的实施例中,第二类地址也可以包括常规地址和冗余地址。相应地,所述对若干个存储地址中的第二类地址设置第二权重值,可以包括:对第二类地址中的常规地址设置第二一权重值,以及对第二类地址中的冗余地址设置第二二权重值。但是为了实现下次优先访问未被访问过的地址,那么还需要对第二类地址进行地址权重动态调整,如果常规地址已经被某随机命令访问过,那么该常规地址再次被同一命令执行访问操作时,仍会适当减小该常规地址对应的第二一权重值,即在对第二类地址进行多次地址权重动态调整之后,常规地址设置的权重值不一定会大于冗余地址设置的权重值。另外,第一一权重值大于或等于第二一权重值,第一二权重值大于或等于第二二权重值。
进一步地,对于所产生的随机地址而言,如果该随机地址被随机命令执行访问操作,那么这时候需记录该随机地址。因此,在一些实施例中,该方法还可以包括:在随机地址被随机命令执行访问操作之后,确定随机地址为随机命令对应的第二类地址;
将随机地址存储至地址记录表;其中,地址记录表用于记录已经被随机命令执行访问操作的第二类地址。
在一些实施例中,该方法还可以包括:当随机命令对地址记录表中存储的第二类地址再次执行访问操作时,对地址记录表中存储的第二类地址进行地址权重动态调整,以减小第二类地址的第二权重值。
需要说明的是,如果产生的随机地址被随机命令执行访问操作之后,那么该随机地址作为已经被访问操作过的地址,可以将其存储至地址记录表。在本公开实施例中,对于不同的随机命令,对应有不同的地址记录表;即每一个随机命令对应设置一个地址记录表。这样,针对某个随机命令,通过对已经访问过的地址进行记录,并且能够动态地减小权重值,从而能够减少该随机命令在下一次访问相同地址的概率,可以实现下次优先访问未被访问过的地址,并且可以实现对不同地址进行不同的功能测试。
在一些实施例中,随机命令序列的类型为单命令-单命令类型。
需要说明的是,对于功能测试来说,可以包括定向测试序列和随机约束测试序列,随机约束测试序列又可以包括组合命令序列和单命令序列。其中,定向测试序列的类型为固定组合类型,组合命令序列的类型为组合-组合类型,单命令序列的类型为单命令-单命令类型。示例性地:
定向测试序列为:②③①⑤④⑥-②③①⑤④⑥-②③①⑤④⑥-…;这里的组合都是相同的,而且每一组合内部顺序是固定的。
组合命令序列为(以两条组合②③、①⑤④⑥为例):②③-①⑤④⑥-②③-①⑤④⑥-①⑤④⑥-①⑤④⑥-②③-②③-…;这里可以有多个不同组合(例如②③和①⑤④⑥),但是每一组合内部顺序也是固定的。另外,对于组合命令序列来说,组合库越全,才能够达到比较好的效果;但是实际上组合库很难全面,而且每条组合具有较高的人为干预成分。
单命令序列为:②-⑤-④-①-④-⑥-②-③-①-③-③-⑥-②-①-…;单命令序列是由一个个单命令组成,它使用最少的人为干预,并且满足spec,随机性高;所以原理很简单,就是在高随机度的同时需要满足spec。
可以看出,定向测试的简单激励,通过手动检查,比较低效;随机约束测试搭建好测试平台后可同时进行数百个测试,并且自动检查,更高效;但是对于命令序列的产生,如果采用组合-组合类型的随机生成合法序列,覆盖率相对较低;因此,为了尽可能的提高覆盖率,本公开实施例将随机命令序列的生成最小化至基于单命令-单命令级别,从而可以提高测试效率。另外,假设需要测试命令序列⑥-②,如果采用组合-组合类型,那么需要完整的测试一个“①⑤④⑥-②③”的组合命令序列;但是如果采用单命令-单命令类型,那么可以直接实现测试⑥-②,从而能够节省时间,可以实现在有限时长内增加命令序列的测试个数,从而能够覆盖测试到更多的存储单元。同时,单命令-单命令级别相较于组合-组合类型来说,前者涉及的状态跳转关系更广,例如,假设需要测试命令序列④-②,对于上述组合-组合类型的命令序列生成方法而言,不存在实现这样的跳转,进而无法检验出这样的跳转过程中是否有问题。
在本公开的另一实施例中,参见图3,其示出了本公开实施例提供的一种命令序列生成方法的应用架构示意图。如图3所示,该应用架构可以包括:随机命令产生模块301、随机地址产生模块302和状态机模块303。
在随机命令产生模块301中,主要包括当前状态、当前状态对应的可执行命令、所有的单命令、命令权重和合法命令等关键要素。其中,当前状态和当前状态对应的可执行命令是由状态机模块303提供的;然后根据当前状态对应的可执行命令和所有的单命令的命令交集中确定出合法命令;再根据命令权重和合法命令作为约束条件,从这合法命令中产生随机命令。
在随机地址产生模块302中,主要包括第一类地址、第二类地址和地址权重等关键要素。其中,第一类地址包括常规地址和冗余地址,第二类地址作为已经访问过的地址需要存储在地址记录表中;在地址权重中,第一类地址设置高权重,地址记录表中的第二类地址设置低权重,其中高权重和低权重指的是第一类地址中的常规地址权重大于第二类地址中的常规地址权重,第一类地址中的冗余地址权重大于或等于第二类地址的冗余地址权重;另外,根据地址权重作为约束条件,可以产生随机地址;然后在随机命令访问该随机地址之后,该随机地址可以作为第二类地址放置于地址记录表中,而且地址记录表中存储的第二类地址会动态调整权重。
在状态机模块303中,可以包括多个状态(例如空闲状态、状态1、状态2、状态3和状态x)和多个可执行命令(例如a、b、c、d、e、f、g、h等)。在得到随机命令之后,根据当前状态可以确定出即将跳转的下一状态,然后将下一状态作为新一轮的当前状态,并将当前状态和对应的可执行命令发送给随机命令产生模块301。
可以理解地,结合图3,对于随机命令的产生,它来自于由spec定义的状态机模块303。具体地,根据spec定义的状态机模块303,可以获取到当前状态对应的合法命令(即当前状态下可以选择的可执行命令),然后结合这些合法命令对应的命令权重,据此随机产生的命令使得当前状态跳转到下一状态,这时候的下一状态作为新一轮的当前状态。示例性地,假定当前状态为空闲状态,对应的合法命令为a、b、c,根据命令权重和合法命令共同约束,假定所产生的随机命令为b,那么当前状态跳转的下一状态为状态2,即状态2可以作为新一轮的当前状态。
还可以理解地,结合图3,对于地址命令的产生,它需要测试的地址分为常规地址和冗余地址。其中,常规地址作为存储主力,需要设置更大的权重,从而能够尽量多地检查cell的配套解码、放大、纠错等电路功能的正确与否;针对已经访问过的地址进行记录,并且能够动态地减小权重,从而可以减少同一命令在下一次访问相同地址的概率。
通过上述实施例对前述实施例的具体实现进行了详细阐述,从中可以看出,根据前述实施例的技术方案,这里主要提供了一种数字验证的随机序列发生器,特别涉及DRAM随机命令序列的产生。通过调整权重优化单(个)命令发生的概率,并根据spec要求,约束命令序列发送的合法性;可以应用于产生更高覆盖率的随机命令序列;而且不同的地址分配不同的权重,并且会动态地调节已经访问过地址的权重,从而在下次访问操作时,可以优先访问未被访问过的地址,减少同一命令在下一次访问相同存储地址的概率。
在本公开的又一实施例中,参见图4,其示出了本公开实施例提供的一种命令序列测试方法的流程示意图。如图4所示,该方法可以包括:
S401:确定待测试的随机命令序列;其中,随机命令序列包括多个命令序列单元,且每一个命令序列单元是由随机命令和随机地址构成。
需要说明的是,在本公开实施例中,待测试的随机命令序列可以是由前述实施例提供的命令序列生成方法得到的。
还需要说明的是,在本公开实施例中,由于该随机命令序列为单命令-单命令类型,可以使得覆盖率提高,即命令发送的更加随机,而且对于一个序列,还能够产生更多种组合。例如,假定单命令序列为:②-⑤-④-①-④-⑥-②-③-①-③-③-⑥-②-①-…;那么可以产生②⑤④、①④⑥②、③①③③⑥②①,或者②⑤、④①④⑥②、③①③③⑥②①,或者②⑤④①、④⑥②③①、③③⑥②①等等组合命令序列。
S402:根据状态机模块和当前状态,确定随机命令。
需要说明的是,在一些实施例中,所述根据状态机模块和当前状态,确定随机命令,可以包括:
根据当前状态,基于状态机模块确定至少一个可执行命令;
获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令。
在本公开实施例中,对于状态机模块而言,可以通过对若干个命令进行功能描述及建模,得到若干个可执行命令;然后确定状态机模块的至少两个状态;从而基于至少两个状态与若干个可执行命令,可以构建出状态机模块的状态跳转关系。其中,状态跳转关系可以包括若干个可执行命令各自的命令权重,而且可执行命令用于触发当前状态跳转至下一状态。
需要说明的是,这里的命令权重可以是按照一定的策略进行预先设置。示例性地,可以按照经验值进行设置,也可以按照命令功能的偏重程度进行设置,如更偏重读写功能,那么读写命令的命令权重设置的越高;甚至还可以是按照一个计算机制来确定每一状态对应的至少一个可执行命令的命令权重等,本公开实施例不作具体限定。
示例性地,以图2为例,对于待测试的随机命令序列,在当前状态为空闲状态的情况下,这时候对应的可执行命令包括a、b、c,然后在获取a、b、c对应的命令权重之后,可以根据命令权重作为约束条件,从这三个命令中产生随机命令,例如随机命令可以为a或者b或者c。
在一些实施例中,该方法还可以包括:从若干个可执行命令中,选取用于触发当前状态跳转的至少一个可执行命令作为当前状态对应的合法命令;
相应地,所述获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令,可以包括:获取合法命令对应的命令权重,并将命令权重和合法命令共同作为约束条件产生随机命令。
也就是说,针对待测试的随机命令序列,本公开实施例可以根据状态机模块以及当前状态,确定至少一个可执行命令;然后通过对这至少一个可执行命令进行命令权重和合法性约束来产生随机命令。如此,由于该随机命令序列中的命令发送更加随机,从而能够提高功能测试的覆盖率。
还需要说明的是,状态机模块包括有多个状态以及每一个状态对应的可执行命令。在一些实施例中,该方法还可以包括:
根据随机命令,基于状态机模块确定下一状态;
将下一状态作为当前状态,继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以产生下一个随机命令。
在本公开实施例中,在根据当前状态产生随机命令之后,那么根据随机命令和状态机模块可以确定出当前状态的下一状态,以便进行新一轮随机命令的产生。示例性地,仍以图2为例,在当前状态为空闲状态的情况下,这时候对应的可执行命令包括a、b、c,然后在命令权重和合法命令共同约束下产生的随机命令为b;这时候当前状态跳转的下一状态为状态2,即状态2可以作为新一轮的当前状态,然后在命令权重约束和合法命令共同约束下产生的随机命令为f;以此类推,直至待测试的随机命令序列中所有命令全部被遍历过。
这样,在确定当前状态的情况下,基于状态机模块的状态跳转关系,可以得到至少一个可执行命令以及这至少一个可执行命令对应的命令权重,然后根据命令权重和合法性约束命令出现概率,使得该随机命令序列中的指令发送更加随机,命令权重在测试之前需进行相应的设置,为了增加有限时长内对主要功能的测试次数,可以将对应的命令权重值设置高一些,以提高测试效率。
S403:基于随机命令,对随机地址对应的存储单元进行功能测试。
需要说明的是,不同的存储地址对应有不同的存储单元。其中,通过随机命令访问存储地址,能够对该存储地址对应的存储单元进行功能测试。因此,在一些实施例中,在基于随机命令,对随机地址对应的存储单元进行功能测试之前,该方法还可以包括:
获取随机命令待执行访问操作的若干个存储地址;
对若干个存储地址进行地址权重设置,将地址权重作为约束条件产生随机地址;
根据随机命令访问随机地址,以执行对随机地址对应的存储单元进行功能测试的步骤。
也就是说,在根据状态机模块产生随机命令之后,可以获取随机命令待执行访问操作的若干个存储地址;然后根据地址权重作为约束条件,从这若干个存储地址中产生随机地址,而根据随机命令访问随机地址可以实现对随机地址对应的存储单元进行功能测试,从而不仅能够对存储单元分主次访问,还能够尽量多地检查存储单元的配套解码、放大、纠错等电路功能的正确与否。
在一些实施例中,存储地址包括第一类地址和第二类地址;对若干个存储地址进行地址权重设置,可以包括:
对若干个存储地址中的第一类地址设置第一权重值,以及对若干个存储地址中的第二类地址设置第二权重值;
其中,第一类地址表示未被随机命令执行访问操作的地址,第二类地址表示已经被随机命令执行访问操作的地址,且第一权重值大于第二权重值。
也就是说,针对已经被随机命令访问过的第二类地址,可以设置相对较小的权重值;针对未被随机命令访问过的第一类地址,可以设置相对较大的权重值;从而在下次访问操作时,可以优先访问未被访问过的地址,减少了同一命令在下一次访问相同存储地址的概率。
还需要说明的是,对于第一类地址而言,第一类地址可以包括常规地址和冗余地址。相应地,所述对若干个存储地址中的第一类地址设置第一权重值,可以包括:对第一类地址中的常规地址设置第一一权重值,以及对第一类地址中的冗余地址设置第一二权重值;其中,第一一权重值大于第一二权重值。
还需要说明的是,对于第二类地址而言,第二类地址也可以包括常规地址和冗余地址。相应地,所述对若干个存储地址中的第二类地址设置第二权重值,可以包括:对第二类地址中的常规地址设置第二一权重值,以及对第二类地址中的冗余地址设置第二二权重值。其中,第一一权重值大于或等于第二一权重值,第一二权重值大于或等于第二二权重值。
也就是说,针对已经访问过的第二类地址,也可以分为常规地址和冗余地址。但是为了实现下次优先访问未被访问过的地址,那么还需要对第二类地址进行地址权重动态调整,如果常规地址已经被某随机命令访问过,那么该常规地址再次被同一命令执行访问操作时,仍会适当减小该常规地址对应的第二一权重值,即在对第二类地址进行多次地址权重动态调整之后,常规地址设置的权重值不一定会大于冗余地址设置的权重值。
进一步地,在一些实施例中,该方法还可以包括:在随机地址被随机命令执行访问操作之后,将随机地址确定为随机命令对应的第二类地址,并将随机地址存储至地址记录表;其中,地址记录表用于记录已经被随机命令执行访问操作的第二类地址。
需要说明的是,在本公开实施例中,对于不同的随机命令,对应有不同的地址记录表;即每一个随机命令对应设置一个地址记录表。
还需要说明的是,在一些实施例中,该方法还可以包括:当随机命令对地址记录表中存储的第二类地址再次执行访问操作时,对地址记录表中存储的第二类地址进行地址权重动态调整,以减小第二类地址的第二权重值。这样,通过对已经访问过的地址进行记录,并且动态地减小权重值,从而能够减少同一命令下一次访问相同地址的概率,可以实现下次优先访问未被访问过的地址,并且还可以实现对不同地址进行不同的功能测试。
简单来说,在本公开实施例中,根据前述实施例的技术方案,为保证DRAM产品数据读写的准确性,在进行数字验证时编写的随机测试文件能够尽可能的提高功能测试覆盖率;将随机命令序列的生成最小化至基于单命令-单命令级别。具体地,根据spec的状态跳转关系,结合当前状态以及下一可执行的合法命令进行约束;同时使用权重约束命令出现概率;另外,命令执行访问操作的地址(包括常规地址和冗余地址)也可以设置一定的权重,重复地址的权重则会动态调节;这样,通过设置不同命令的权重来实现对主要功能的重点测试,以及通过设置不同地址的权重来实现对存储单元的主次访问,并且减少同一命令在下一次访问相同存储地址的概率,可以覆盖测试到更多的存储单元,从而提高了测试效率。
在一种具体的实施例中,步骤如下:
步骤1,根据spec对各命令进行功能描述,建模等;
步骤2,根据spec定义出所有DRAM的状态(例如Idle状态、Read状态、Write状态,MRR状态等);
步骤3,随机地址产生模块,用于步骤4的命令访问操作,包括:
(1)地址访问的权重设置;
(2)记录已经访问过的地址,下次优先访问未被访问过的地址(进行动态地权重调整);
步骤4,根据spec的状态跳转关系,描述状态之间的合法跳转路径,包括:
(1)当前状态;
(2)触发状态跳转的可执行命令;
(3)对所有的命令设置命令权重,进行权重约束。
如此,在本公开实施例中,针对覆盖率的提高,示例性地,对于命令数为5个命令的系统,随机命令序列长度为10个命令,那么两两生成命令组合,这时候长度为10的序列最大情况有种。对于单命令-单命令类型的随机命令序列,那么这时候序列的最大情况有/>种,即使除一些非法的状态跳转,组合-组合类型的随机命令序列也属于单命令-单命令类型的随机命令序列的子集,并且单命令-单命令类型中出现的非法状态跳转,也可以通过命令权重的设置来避免。
由此可见,单命令-单命令类型的合法序列种数≥组合-组合类型的合法序列种数。对于组合-组合类型的命令集的方式,存在对某些测试需求的支持不够问题。具体来说,如果设计的命令集不够完备,对3个命令的覆盖测试,只能通过2×2=4个命令去完成,从而产生冗余或重复测试。例如,假定存在组合式的两个命令集②③、①⑤④⑥,如果需要一个③-①-⑤-④-⑥-②的随机命令序列(执行命令个数为6),那需要发送实际上执行命令个数为8,从而造成冗余或重复测试。
示例性地,参见图5,其示出了本公开实施例提供的一种状态跳转关系示意图。如图5所示,这是低功耗(Low Power,LP)DDR4的spec中定义的一种状态跳转图(该整个结构称为状态机模块)。其中,圆圈表示的是状态,即是处于执行命令的期间;实线是发送的具体命令(触发状态跳转的条件);虚线是该状态执行完成后会自动跳转到某状态,例如图5中下方部分的发precharge命令就会进入precharge状态,在执行完成后就自动重回Idle状态。
其中,组合-组合类型的命令集是沿某一条固定路径,从Idle状态出发,执行测试之后再返回Idle状态;例如针对加粗框内的覆盖仅仅是路径与路径之间的随机先后,随机度不高,可能存在测试不到SRPowerDown-Refresh-Commandbustraining路径;也就是说,由于组合-组合类型的命令集具有一定的人为因素,在节点上会产生固定的跳转路径,以实现自动跳转;从而导致即使仿真测试很多轮,只是覆盖其中的几个路径,例如SRPowerDown-Refresh-Commandbustraining、SRPowerDown-Refresh-MRR、SRPowerDown-Refresh-MPCbasedtraining等路径。而在本公开实施例中,单命令-单命令类型中的每个节点都需要设置权重进行判断,自由度更高,而且多轮仿真测试后,理论上能覆盖到所有的路径。因此,两者的区别在于仿真测试量大能发生,而组合-组合类型即使量大也不能发生。
本公开实施例提供了一种命令序列测试方法,根据该方法针对待测试的随机命令序列,一方面覆盖率提高,即命令发送的更加随机,对于一个命令序列,可以产生更多种组合;另一方面对命令所操作的地址进行权重约束,对常规地址和冗余地址对应的存储单元分主次访问;又一方面命令权重约束,通过设置不同命令的权重来实现对主要功能的重点测试,例如将刷新命令的权重设置高一些,可以在有限时长内增加刷新命令的测试次数,也即能够在有限时长内增加更多主要功能的测试次数,提高测试效率。
在本公开的再一实施例中,参见图6,其示出了本公开实施例提供的一种命令序列生成装置60的组成结构示意图。如图6所示,该命令序列生成装置60可以包括:确定单元601、随机产生单元602和序列生成单元603;其中,
确定单元601,配置为根据当前状态,基于状态机模块确定至少一个可执行命令;
随机产生单元602,配置为获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令;
序列生成单元603,配置为根据随机命令基于状态机模块确定下一状态,将下一状态作为当前状态,并继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。
在一些实施例中,参见图6,该命令序列生成装置60还可以包括构建单元604,配置为对若干个命令进行功能描述及建模,得到若干个可执行命令;以及确定状态机模块的至少两个状态;以及基于至少两个状态与若干个可执行命令,构建状态机模块的状态跳转关系;其中,状态跳转关系包括若干个可执行命令各自的命令权重,可执行命令用于触发第一状态跳转至下一状态,且第一状态为至少两个状态中的任意一个状态。
在一些实施例中,确定单元601,还配置为基于状态跳转关系,从若干个可执行命令各自的命令权重中获取至少一个可执行命令对应的命令权重。
在一些实施例中,确定单元601,还配置为从若干个可执行命令中,选取用于触发当前状态跳转的至少一个可执行命令作为当前状态对应的合法命令;
随机产生单元602,配置为获取合法命令对应的命令权重,并将命令权重和合法命令共同作为约束条件产生随机命令。
在一些实施例中,随机产生单元602,还配置为获取随机命令待执行访问操作的若干个存储地址;以及对若干个存储地址进行地址权重设置,将地址权重作为约束条件产生随机地址;其中,随机命令用于访问随机地址并进行功能测试。
在一些实施例中,随机命令序列包括多个命令序列单元;其中,每一个命令序列单元是由随机命令和随机地址构成。
在一些实施例中,存储地址包括第一类地址和第二类地址。参见图6,该命令序列生成装置60还可以包括设置单元605,配置为对若干个存储地址中的第一类地址设置第一权重值,以及对若干个存储地址中的第二类地址设置第二权重值;其中,第一类地址表示未被随机命令执行访问操作的地址,第二类地址表示已经被随机命令执行访问操作的地址,且第一权重值大于第二权重值。
在一些实施例中,第一类地址包括常规地址和冗余地址;相应地,设置单元605,还配置为对第一类地址中的常规地址设置第一一权重值,以及对第一类地址中的冗余地址设置第一二权重值;其中,第一一权重值大于第一二权重值。
在一些实施例中,参见图6,该命令序列生成装置60还可以包括记录单元606;其中,
确定单元601,还配置为在随机地址被随机命令执行访问操作之后,确定随机地址为随机命令对应的第二类地址;
记录单元606,配置为将随机地址存储至地址记录表;其中,地址记录表用于记录已经被随机命令执行访问操作的第二类地址,且不同的随机命令对应不同的地址记录表。
在一些实施例中,记录单元606,还配置为当随机命令对地址记录表中存储的第二类地址再次执行访问操作时,对地址记录表中存储的第二类地址进行地址权重动态调整,以减小第二类地址的第二权重值。
在一些实施例中,随机命令序列的类型为单命令-单命令类型。
在本公开的再一实施例中,参见图7,其示出了本公开实施例提供的一种命令序列测试装置70的组成结构示意图。如图7所示,该命令序列测试装置70可以包括:确定单元701和测试单元702;其中,
确定单元701,配置为确定待测试的随机命令序列;其中,随机命令序列包括多个命令序列单元,且每一个命令序列单元是由随机命令和随机地址构成;以及根据状态机模块和当前状态,确定随机命令;
测试单元702,配置为基于随机命令,对随机地址对应的存储单元进行功能测试。
在一些实施例中,参见图7,该命令序列测试装置70还可以包括随机产生单元703;其中,
确定单元701,还配置为根据当前状态,基于状态机模块确定至少一个可执行命令;
随机产生单元703,配置为获取至少一个可执行命令对应的命令权重,并将命令权重作为约束条件从至少一个可执行命令中产生随机命令。
在一些实施例中,确定单元701,还配置为根据随机命令,基于状态机模块确定下一状态;
随机产生单元703,还配置为将下一状态作为当前状态,继续执行根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以产生下一个随机命令。
在一些实施例中,确定单元701,还配置为从若干个可执行命令中,选取用于触发当前状态跳转的至少一个可执行命令作为当前状态对应的合法命令;
随机产生单元703,还配置为获取合法命令对应的命令权重,并将命令权重和合法命令共同作为约束条件产生随机命令。
在一些实施例中,随机产生单元703,还配置为获取随机命令待执行访问操作的若干个存储地址;以及对若干个存储地址进行地址权重设置,将地址权重作为约束条件产生随机地址;
测试单元702,还配置为根据随机命令访问随机地址,以执行对随机地址对应的存储单元进行功能测试的步骤。
在一些实施例中,存储地址包括第一类地址和第二类地址。参见图7,该命令序列测试装置70还可以包括设置单元704,配置为对若干个存储地址中的第一类地址设置第一权重值,以及对若干个存储地址中的第二类地址设置第二权重值;其中,第一类地址表示未被随机命令执行访问操作的地址,第二类地址表示已经被随机命令执行访问操作的地址,且第一权重值大于第二权重值。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,所述计算机程序被至少一个处理器执行时实现前述实施例中任一项所述的命令序列生成方法或者命令序列测试方法。
在本公开的再一实施例中,参见图8,其示出了本公开实施例提供的一种半导体设备80的具体硬件结构示意图。如图8所示,半导体设备80可以包括处理器801和存储器802;其中,存储器802用于存储能够在处理器801上运行的计算机程序,处理器801用于在运行计算机程序时,执行前述实施例中任一项所述的命令序列生成方法或者命令序列测试方法。
进一步地,在一些实施例中,半导体设备80还可以包括通信接口803,和用于连接处理器801、存储器802以及通信接口803的总线804。
在本公开实施例中,上述处理器801可以为特定用途集成电路(ApplicationSpecific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(Programmable Logic Device,PLD)、现场可编程门阵列(Field Programmable GateArray,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本公开实施例不作具体限定。半导体设备80中包括的存储器802,该存储器802可以与处理器801连接,其中,存储器802用于存储可执行程序代码,该程序代码包括计算机操作指令,存储器802可能包含高速RAM存储器,也可能还包括非易失性存储器,例如,至少两个磁盘存储器。
在本公开实施例中,总线804用于连接通信接口803、处理器801以及存储器802以及这些器件之间的相互通信。
在本公开实施例中,存储器802能够存储指令和数据。在实际应用中,上述存储器802可以是易失性存储器(volatile memory),例如随机存取存储器(Random-AccessMemory,RAM);或者非易失性存储器(non-volatile memory),例如只读存储器(Read-OnlyMemory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器801提供指令和数据。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本公开所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本公开实施例提供了一种半导体设备,该半导体设备可以应用于产生更高覆盖率的随机命令序列。其中,通过调整权重优化单(个)命令发生的概率,并根据spec要求,约束命令序列发送的合法性;而且不同的地址块分配不同的权重,并且会动态地调节已经访问过的地址权重;从而不仅可以提高DRAM产品功能测试覆盖率,还可以提高测试效率。
以上,仅为本公开的较佳实施例而已,并非用于限定本公开的保护范围。
需要说明的是,在本公开中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本公开实施例序号仅仅为了描述,不代表实施例的优劣。
本公开所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本公开所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本公开所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (19)
1.一种命令序列生成方法,其特征在于,所述方法包括:
根据当前状态,基于状态机模块确定至少一个可执行命令;
获取所述至少一个可执行命令对应的命令权重,并将所述命令权重作为约束条件从所述至少一个可执行命令中产生随机命令;
根据所述随机命令基于所述状态机模块确定下一状态,将所述下一状态作为当前状态,并继续执行所述根据当前状态,基于状态机模块确定至少一个可执行命令的步骤,以生成随机命令序列。
2.根据权利要求1所述的方法,其特征在于,在所述基于状态机模块确定至少一个可执行命令之前,所述方法还包括:
对若干个命令进行功能描述及建模,得到若干个可执行命令;
确定所述状态机模块的至少两个状态;
基于所述至少两个状态与所述若干个可执行命令,构建所述状态机模块的状态跳转关系;
其中,所述状态跳转关系包括所述若干个可执行命令各自的命令权重,所述可执行命令用于触发第一状态跳转至下一状态,且所述第一状态为所述至少两个状态中的任意一个状态。
3.根据权利要求2所述的方法,其特征在于,所述获取所述至少一个可执行命令对应的命令权重,包括:
基于所述状态跳转关系,从所述若干个可执行命令各自的命令权重中获取所述至少一个可执行命令对应的命令权重。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
从所述若干个可执行命令中,选取用于触发所述当前状态跳转的所述至少一个可执行命令作为所述当前状态对应的合法命令;
相应地,所述获取所述至少一个可执行命令对应的命令权重,并将所述命令权重作为约束条件从所述至少一个可执行命令中产生随机命令,包括:
获取所述合法命令对应的命令权重,并将所述命令权重和所述合法命令共同作为约束条件产生所述随机命令。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述随机命令待执行访问操作的若干个存储地址;
对所述若干个存储地址进行地址权重设置,将所述地址权重作为约束条件产生随机地址;其中,所述随机命令用于访问所述随机地址并进行功能测试。
6.根据权利要求5所述的方法,其特征在于,所述随机命令序列包括多个命令序列单元;其中,每一个命令序列单元是由所述随机命令和所述随机地址构成。
7.根据权利要求5所述的方法,其特征在于,所述存储地址包括第一类地址和第二类地址;所述对所述若干个存储地址进行地址权重设置,包括:
对所述若干个存储地址中的第一类地址设置第一权重值,以及对所述若干个存储地址中的第二类地址设置第二权重值;
其中,所述第一类地址表示未被所述随机命令执行访问操作的地址,所述第二类地址表示已经被所述随机命令执行访问操作的地址,且所述第一权重值大于所述第二权重值。
8.根据权利要求7所述的方法,其特征在于,所述第一类地址包括常规地址和冗余地址;所述对所述若干个存储地址中的第一类地址设置第一权重值,包括:
对所述第一类地址中的常规地址设置第一一权重值,以及对所述第一类地址中的冗余地址设置第一二权重值;
其中,所述第一一权重值大于所述第一二权重值。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
在所述随机地址被所述随机命令执行访问操作之后,确定所述随机地址为所述随机命令对应的第二类地址;
将所述随机地址存储至地址记录表;其中,所述地址记录表用于记录已经被所述随机命令执行访问操作的第二类地址。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
当所述随机命令对所述地址记录表中存储的第二类地址再次执行访问操作时,对所述地址记录表中存储的第二类地址进行地址权重动态调整,以减小所述第二类地址的第二权重值。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述随机命令序列的类型为单命令-单命令类型。
12.一种命令序列测试方法,其特征在于,所述方法包括:
确定待测试的随机命令序列;其中,所述随机命令序列包括多个命令序列单元,且每一个命令序列单元是由随机命令和随机地址构成;
根据状态机模块和当前状态,确定随机命令;
基于所述随机命令,对所述随机地址对应的存储单元进行功能测试。
13.根据权利要求12所述的方法,其特征在于,所述根据状态机模块和当前状态,确定随机命令,包括:
根据当前状态,基于所述状态机模块确定至少一个可执行命令;
获取所述至少一个可执行命令对应的命令权重,并将所述命令权重作为约束条件从所述至少一个可执行命令中产生所述随机命令。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
根据所述随机命令,基于所述状态机模块确定下一状态;
将所述下一状态作为当前状态,继续执行所述根据当前状态,基于所述状态机模块确定至少一个可执行命令的步骤,以产生下一个所述随机命令。
15.根据权利要求13所述的方法,其特征在于,所述方法还包括:
从若干个可执行命令中,选取用于触发所述当前状态跳转的所述至少一个可执行命令作为所述当前状态对应的合法命令;
相应地,所述获取所述至少一个可执行命令对应的命令权重,并将所述命令权重作为约束条件从所述至少一个可执行命令中产生所述随机命令,包括:
获取所述合法命令对应的命令权重,并将所述命令权重和所述合法命令共同作为约束条件产生所述随机命令。
16.根据权利要求12至15任一项所述的方法,其特征在于,在基于所述随机命令,对所述随机地址对应的存储单元进行功能测试之前,所述方法还包括:
获取所述随机命令待执行访问操作的若干个存储地址;
对所述若干个存储地址进行地址权重设置,将所述地址权重作为约束条件产生所述随机地址;
根据所述随机命令访问所述随机地址,以执行对所述随机地址对应的存储单元进行功能测试的步骤。
17.根据权利要求16所述的方法,其特征在于,所述存储地址包括第一类地址和第二类地址;所述对所述若干个存储地址进行地址权重设置,包括:
对所述若干个存储地址中的第一类地址设置第一权重值,以及对所述若干个存储地址中的第二类地址设置第二权重值;
其中,所述第一类地址表示未被所述随机命令执行访问操作的地址,所述第二类地址表示已经被所述随机命令执行访问操作的地址,且所述第一权重值大于所述第二权重值。
18.一种半导体设备,其特征在于,包括存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行计算机程序时,执行如权利要求1至11任一项所述的方法、或者如权利要求12至17任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被执行时实现如权利要求1至11任一项所述的方法、或者如权利要求12至17任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210337896.7A CN116932366A (zh) | 2022-03-31 | 2022-03-31 | 命令序列生成方法、测试方法、设备以及存储介质 |
PCT/CN2022/086597 WO2023184579A1 (zh) | 2022-03-31 | 2022-04-13 | 命令序列生成方法、测试方法、设备以及存储介质 |
US17/844,226 US20230317197A1 (en) | 2022-03-31 | 2022-06-20 | Method and device for generating command sequence, method and device for testing, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210337896.7A CN116932366A (zh) | 2022-03-31 | 2022-03-31 | 命令序列生成方法、测试方法、设备以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116932366A true CN116932366A (zh) | 2023-10-24 |
Family
ID=88198749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210337896.7A Pending CN116932366A (zh) | 2022-03-31 | 2022-03-31 | 命令序列生成方法、测试方法、设备以及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116932366A (zh) |
WO (1) | WO2023184579A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5060142A (en) * | 1988-05-20 | 1991-10-22 | Menon Moothedath J | System which matches a received sequence of channel commands to sequence defining rules for predictively optimizing peripheral subsystem operations |
CN102623069B (zh) * | 2012-02-13 | 2014-09-03 | 山东华芯半导体有限公司 | 随机激励闪存模型验证方法 |
EP3714368B1 (en) * | 2017-12-08 | 2021-09-15 | Huawei Technologies Co., Ltd. | Fault injection system and method of fault injection |
CN111326205B (zh) * | 2018-12-14 | 2022-03-22 | 长鑫存储技术有限公司 | 测试系统、存储器的测试方法及测试装置 |
CN112433762A (zh) * | 2019-08-26 | 2021-03-02 | 无锡江南计算技术研究所 | 基于数据相关性约束的随机指令序列生成方法 |
-
2022
- 2022-03-31 CN CN202210337896.7A patent/CN116932366A/zh active Pending
- 2022-04-13 WO PCT/CN2022/086597 patent/WO2023184579A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023184579A1 (zh) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10714186B2 (en) | Method and apparatus for dynamically determining start program voltages for a memory device | |
US10186325B2 (en) | Method and apparatus for shielded read to reduce parasitic capacitive coupling | |
US8289770B2 (en) | Semiconductor memory device and system including the same | |
US11392488B2 (en) | Optimizing storage of application data in memory | |
US10957413B2 (en) | Shared error check and correct logic for multiple data banks | |
JP2006079809A (ja) | テスト用バッファを備えた不揮発性メモリ装置及びそのテスト方法 | |
EP3770764B1 (en) | Method of controlling repair of volatile memory device and storage device performing the same | |
US10777294B2 (en) | DRAM-level error injection and tracking | |
KR102233077B1 (ko) | 신규한 메모리 디바이스 | |
TW559824B (en) | System and method for assured built in self repair of memories | |
US9823880B1 (en) | Method and apparatus for initiating pre-read operation before completion of data load operation | |
KR101734741B1 (ko) | 데이터 경로 무결성 검증 | |
Roberts et al. | FAULTSIM: A fast, configurable memory-resilience simulator | |
US8995217B2 (en) | Hybrid latch and fuse scheme for memory repair | |
KR102468710B1 (ko) | 메모리 장치와 메모리 컨트롤러를 포함하는 메모리 시스템, 및 그의 동작방법 | |
TWI756692B (zh) | 記憶體系統以及控制方法 | |
KR101861647B1 (ko) | 메모리 시스템 및 그 리프레시 제어 방법 | |
CN117666943A (zh) | 存储控制器、包括其的存储装置及其操作方法 | |
CN116932366A (zh) | 命令序列生成方法、测试方法、设备以及存储介质 | |
US20230317197A1 (en) | Method and device for generating command sequence, method and device for testing, and storage medium | |
CN113470723B (zh) | 读重试测试方法、装置、可读存储介质及电子设备 | |
JP4582078B2 (ja) | メモリコントローラ及びフラッシュメモリシステム、並びにフラッシュメモリの制御方法 | |
US20230154539A1 (en) | Method and apparatus for improving write uniformity in a memory device | |
US11556790B2 (en) | Artificial neural network training in memory | |
US11315644B2 (en) | String current reduction during multistrobe sensing to reduce read disturb |
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 |