CN117292738A - 验证微指令序列的系统及方法 - Google Patents
验证微指令序列的系统及方法 Download PDFInfo
- Publication number
- CN117292738A CN117292738A CN202210692519.5A CN202210692519A CN117292738A CN 117292738 A CN117292738 A CN 117292738A CN 202210692519 A CN202210692519 A CN 202210692519A CN 117292738 A CN117292738 A CN 117292738A
- Authority
- CN
- China
- Prior art keywords
- command
- module
- result
- simulator
- interface controller
- 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 37
- 238000012360 testing method Methods 0.000 claims abstract description 46
- 238000012795 verification Methods 0.000 claims description 54
- 238000004088 simulation Methods 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 25
- 238000012545 processing Methods 0.000 description 73
- 230000008569 process Effects 0.000 description 20
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 15
- 238000010586 diagram Methods 0.000 description 15
- 229940044442 onfi Drugs 0.000 description 15
- 230000006399 behavior Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 5
- 238000010168 coupling process Methods 0.000 description 5
- 238000005859 coupling reaction Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 108010076504 Protein Sorting Signals Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- 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/56—External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请公开验证微指令序列的系统及方法,首先生成测试用例,基于测试用例通过执行待验证微指令序列以生成多个时钟周期所对应的符合NVM接口协议的命令信号组,获取命令信号组所对应的结果,并基于NVM接口协议将结果转换成一个或多个时钟周期的结果信号组,其结果信号组用以识别待验证微指令序列的正确性。
Description
技术领域
本申请一般地涉及集成电路测试领域。更具体地,本申请涉及验证微指令序列的系统、方法及存储介质。
背景技术
图1A展示了存储设备的示例性框图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如串行高级技术附件(“Serial Advanced Technology Attachment”,简称SATA)、小型计算机系统接口(“Small Computer System Interface”,简称SCSI)、串行连接SCSI(“SerialAttached SCSI”,简称SAS)、集成驱动器电子(“Integrated Drive Electronics”,简称IDE)、通用串行总线(“Universal Serial Bus”,简称USB)、高速外围组件互联(“Peripheral Component Interconnect Express”,简称PCIE)、高速非易失存储(“NVMExpress”,简称NVMe)、以太网、光纤通道、无线通信网络等连接主机与存储设备100。进一步,主机可以是能够通过上述方式同存储设备100相通信的信息处理设备。例如,主机可以为个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。另外,存储设备100还可以包括接口101、控制部件102、动态随机访问存储器(“Dynamic Random Access Memory”,简称DRAM)103以及一个或多个非易失性存储器(“Non-VolatileMemory”,简称NVM)芯片104。
上述NVM芯片104可以例如是NAND闪存、相变存储器、铁电存储器(“FerroelectricRAM”,简称FeRAM)、磁阻存储器(“Magnetic Random Access Memory”,简称MRAM)、阻变存储器(“Resistive Random Access Memory”,简称RRAM)、XPoint存储器等常见的存储器。
上述控制部件102用于控制在接口101、NVM芯片104以及DRAM 103之间的数据传输,还用于进行存储管理、主机逻辑地址到闪存物理地址的映射、控制擦除均衡、坏块管理等操作。进一步,控制部件102可通过软件、硬件、固件或其组合的多种方式实现。例如,控制部件102可以是现场可编程门阵列(“Field-programmable gate array”,简称FPGA)、应用专用集成电路(“Application Specific Integrated Circuit”,简称ASIC)或者其组合的形式。控制部件102也可以包括处理器或者控制器,在处理器或控制器中通过软件来操纵控制部件102的硬件来处理IO(Input/Output)命令。控制部件102还可以耦合到DRAM 103,并可访问DRAM 103的数据,其中,DRAM 103可存储FTL表和/或缓存的IO命令数据。
参看图1B,控制部件102包括主机接口1021、主机命令处理单元1022、存储命令处理单元1023、存储介质管理单元1024与介质接口控制器1025。主机接口1021获取主机提供的IO命令。主机命令处理单元1022根据IO命令生成存储命令提供给存储命令处理单元1023。存储命令可以访问相同大小的存储空间,例如4KB。将NVM芯片中记录的对应一个存储命令所访问数据的数据单元称为数据帧。物理页记录一个或多个数据帧。例如,物理页的大小17664字节,而数据帧大小为4KB,则一个物理页能存储4个数据帧。
存储介质管理单元1024为每个存储命令维护逻辑地址到物理地址的转换。例如,存储介质管理单元1024包括FTL表(下文将对FTL进行解释)。对于读命令,存储介质管理单元1024输出存储命令所访问的逻辑地址(LBA)对应的物理地址。对于写命令,存储介质管理单元1024为其分配可用的物理地址,并记录其访问的逻辑地址(LBA)与分配的物理地址的映射关系。存储介质管理单元1024还维护诸如垃圾回收、磨损均衡等管理NVM芯片所需的功能。
存储命令处理单元1023根据存储介质管理单元1024提供的物理地址,操作介质接口控制器(也称为闪存接口控制器、NVM接口控制器)1025向NVM芯片104发出存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议存储介质访问命令,包括例如读命令、编程命令或擦命令。已知的NVM芯片104接口协议包括“Toggle”、“ONFI”等。在中国专利申请CN201610009789.6与CN201510253428.1中提供了用于闪存接口控制器的微指令执行方法与装置,中国专利申请CN 201610861793.5提供了微指令序列的调度方法与装置,中国专利申请CN 201611213754.0提供了IO命令处理方法与固态存储设备,中国专利申请CN201611213755.5提供了大容量NVM接口控制器。
介质接口控制器1025通过一个或多个闪存通道耦合NVM芯片。一个闪存通道耦合例如两个NVM芯片。闪存通道包括一组信号线,用以传输符合NVM芯片的接口协议的信号。这一组信号线的部分由其所耦合的多个NVM芯片共享,即这些信号线同时连接到多个NVM芯片的具有相同功能的对应管脚。这一组信号线还包括一些由其所耦合的多个NVM芯片各自独占的信号线,这些信号线(例如CE信号,片选信号)分别连接到多个NVM芯片的各个。
闪存通道上以周期(Cycle)为单位传输信号。各周期所传输的信号具有不同的含义,用周期类型(Cycle Type)指示各周期所传输信号的含义。周期类型包括例如命令周期(CMD Type)、地址周期(ADDR Type)、数据输入周期(Data In Type)与数据输出周期(DataOut Type)等。在一些例子中,周期由时钟信号线(CLK)所传输的时钟信号区分,另一些例子中,由其他信号线而无需时钟信号线区分周期。每个周期,闪存通道的一根或多根信号线传递一组信号,这些信号线的一些或全部是有意义的,而另一些可被忽略。一个或多个周期的一组或多组信号形成信号组。
为了清楚的目的,将主机发送给存储设备的命令称为IO命令,将主机命令处理单元发送给存储命令处理单元的命令称为存储命令,将存储命令处理单元发送给介质接口控制器的命令称为介质接口命令,而将介质接口控制器发送给NVM芯片的命令称为存储介质访问命令。存储介质访问命令遵循NVM芯片的接口协议。
存储器目标(Target)是NAND闪存封装内的共享CE(Chip Enable,芯片使能)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。
NVM芯片包括一个或多个逻辑单元(Logic Unit,LUN)。NVM芯片封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NVM芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash InterfaceSpecification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、平面(Plane)的含义,其为现有技术的一部分。
存储设备在接收到主机所发送的IO命令后,控制部件中的介质接口控制器通过微指令序列的执行向NVM芯片发出存储介质访问命令和/或接收从NVM芯片读出的数据或者其他信息。在存储设备的开发过程中,工程师可以通过对微指令序列的编程、更新和/或修改,来使得介质接口控制器与不同厂商的NVM芯片发进行信息交互。例如,存储设备的NVM芯片被升级,相应地需要开发微指令序列来使得介质接口控制器能适配升级后的NVM芯片。
希望提供模拟器来协助微指令序列的开发。例如,在开发的前期可能无法拿到实物NVM芯片来与控制部件进行联调,因此为了验证所设计的微指令序列是否正确,希望拥有能与介质接口控制器交互并模拟实物NVM芯片的外部行为的存储介质模拟器。进一步地,在控制部件被升级时,其开发前期无法获得实物控制部件芯片来调试微指令序列,还需要介质接口控制器的模拟器来运行所开发的微指令序列,并同存储介质模拟器交互。依然进一步地,还希望能协助识别微指令序列、介质接口控制器中的错误行为,并验证微指令序列、介质接口控制器的正确性。
专利CN109684150A公开了一种存储颗粒控制器的性能测试系统,该包括主机控制中心、与主机控制中心连接的至少一个存储颗粒控制器仿真平台、以及每一存储颗粒控制器仿真平台对应的至少一个存储颗粒模拟器对于NAND模拟的平台。但该专利未具体公开仿真的粒度、控制器与存储颗粒模拟器之间具体的交互的过程、存储颗粒模拟器内部结构以及实现方式等。
介质接口控制器向闪存通道施加信号组以操作存储设备的各NVM芯片,而不是直接操作各NVM芯片。因而还希望存储介质模拟器不仅模拟NVM芯片,还模拟闪存通道,以接收并响应介质接口控制器或其模拟器所提供的信号组而无需进行额外的调整或适配。
发明内容
为了至少部分地解决背景技术中提到的技术问题,本申请的方案提供了一种验证微指令序列的系统、方法及存储介质。
根据本申请的第一方面,提供了根据本申请第一方面的第一验证系统,其包括:测试用例生成器,用以生成测试用例;介质接口控制器模拟器,基于所述测试用例,通过执行待验证微指令序列以生成多个时钟周期所对应的符合NVM接口协议的命令信号组;存储介质模拟器,用以获取所述命令信号组所对应的结果,并基于所述NVM接口协议将所述结果转换成一个或多个时钟周期的结果信号组,将所述结果信号组发送至所述介质接口控制器模拟器,所述结果信号组用以识别所述待验证微指令序列的正确性。
根据本申请的第一方面的第一验证系统,提供了根据本申请第一方面的第二验证系统,其中所述介质接口控制器模拟器响应所述结果信号组生成对应至所述待验证微指令序列的执行结果,并将所述执行结果发送至所述测试用例生成器。
根据本申请的第一方面的第二验证系统,提供了根据本申请第一方面的第三验证系统,其中所述测试用例生成器基于所述执行结果以验证所述待验证微指令序列的正确性。
根据本申请的第一方面的第一验证系统,提供了根据本申请第一方面的第四验证系统,其中所述验证系统为SystemC语言实现的仿真模型。
根据本申请的第一方面的第一验证系统,提供了根据本申请第一方面的第五验证系统,其中所述NVM接口协议为ONFI协议。
根据本申请的第一方面的第一验证系统,提供了根据本申请第一方面的第六验证系统,其中所述介质接口控制器模拟器耦合多个存储介质模拟器。
根据本申请的第一方面的第六验证系统,提供了根据本申请第一方面的第七验证系统,其中所述存储介质模拟器模拟闪存通道,所述闪存通道连接至少两个NVM芯片。
根据本申请的第一方面的第七验证系统,提供了根据本申请第一方面的第八验证系统,其中所述介质接口控制器模拟器将访问相同闪存通道所连接的不同NVM芯片的命令均发送给所述闪存通道所对应的存储介质模拟器。
根据本申请的第一方面的第一验证系统,提供了根据本申请第一方面的第九验证系统,其中所述存储介质模拟器判断所述命令信号组是否正确,如是,获取所述命令信号组所对应的结果,如否,发出错误信息。
根据本申请的第一方面的第九验证系统,提供了根据本申请第一方面的第十验证系统,其中所述测试用例生成器基于所述错误信息以判断所述待验证微指令序列的错误。
根据本申请的第一方面的第一验证系统,提供了根据本申请第一方面的第十一验证系统,其中所述存储介质模拟器包括:接口模块,从所述介质接口控制器模拟器接收所述命令信号组,并根据所述命令信号组识别出命令;目标模拟模块,用于模拟存储介质中的目标,所述目标模拟模块包含一个或多个子模块,当所述命令与访问所述存储介质所存储的数据有关时,所述子模块用于模拟所述目标中的逻辑单元以及获取所述命令的结果;分配模块,识别出所述命令所对应的目标子模块,将所述命令发送至所述目标子模块;应答模块,接收所述目标子模块所反馈的结果,并通过所述接口模块将所述结果发送至所述介质接口控制器模拟器。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第十二验证系统,还包括处理模块,当所述命令与前一个命令访问同一个目标子模块时,所述处理模块响应来自所述应答模块的前一个命令的结果,将来自所述接口模块的所述命令发送至所述分配模块。
根据本申请的第一方面的第十二验证系统,提供了根据本申请第一方面的第十三验证系统,其中所述接口模块判断所述命令信号组是否符合所述NVM接口协议,如是,将所述命令发送至所述处理模块。
根据本申请的第一方面的第十二验证系统,提供了根据本申请第一方面的第十四验证系统,其中当命令与访问所述存储介质所存储的数据无关时,所述处理模块执行所述命令,并将执行结果通过所述接口模块发送至所述介质接口控制器模拟器。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第十五验证系统,其中当命令为读命令时,所述目标子模块自相应地址读出数据,所述结果为所述数据。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第十六验证系统,其中当命令为写命令时,所述目标子模块将所述命令中的数据写入相应地址,并生成成功写入信号,所述结果为所述成功写入信号。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第十七验证系统,其中所述接口模块接收到所述结果时,发送第一控制信号至所述介质接口控制器模拟器以指示所述结果准备发送,并响应来自所述介质接口控制器模拟器回应所述第一控制信号的第二控制信号,基于时钟周期将所述结果以符合所述NVM接口协议的方式发送所述介质接口控制器模拟器。
根据本申请的第一方面的第十二验证系统,提供了根据本申请第一方面的第十八验证系统,其中所述接口模块在每个时钟周期执行一次操作,从所述介质接口控制器模拟器获取该时钟周期所对应的一组数据,连续多个时钟周期的多组数据形成所述命令信号组,并根据所述多组数据生成所述命令。
根据本申请的第一方面的第十八验证系统,提供了根据本申请第一方面的第十九验证系统,其中当所述多组数据无法生成所述命令时,所述处理模块生成错误信息。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第二十验证系统,其中所述命令触发所述分配模块识别所述目标子模块是否处于闲;如是,则发送所述命令至所述目标子模块;如否,暂停发送所述命令至所述目标子模块。
根据本申请的第一方面的第二十验证系统,提供了根据本申请第一方面的第二十一验证系统,其中所述命令触发所述目标子模块执行一次操作获取所述结果,其中所述目标子模块模拟获取所述结果所需的时间。
根据本申请的第一方面的第二十一验证系统,提供了根据本申请第一方面的第二十二验证系统,其中所述结果触发所述应答模块执行一次操作将所述结果发送至所述接口模块。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第二十三验证系统,其中所述命令信号组包括芯片选取信号,所述分配模块根据所述芯片选取信号识别所述目标子模块。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第二十四验证系统,其中所述分配模块或所述目标子模块执行所述命令的期间,所述接口模块接收下一个命令信号组。
根据本申请的第一方面的第十二验证系统,提供了根据本申请第一方面的第二十五验证系统,其中所述应答模块接收所述结果的期间,所述处理模块或所述分配模块执行下一个命令信号组的命令。
根据本申请的第一方面的第十一验证系统,提供了根据本申请第一方面的第二十六验证系统,其中所述存储介质模拟响应于接收到访问不同NVM芯片的所述命令,根据所述命令所指示的物理地址确定所述目标子模块。
根据本申请的第二方面,提供了根据本申请第二方面的微指令序列验证方法,包括:生成测试用例;基于所述测试用例,通过执行待验证微指令序列以生成多个时钟周期所对应的符合NVM接口协议的命令信号组;
获取所述命令信号组所对应的结果;基于所述NVM接口协议将所述结果转换成一个或多个时钟周期的结果信号组;根据所述结果信号组识别所述待验证微指令序列的正确性。
根据本申请的第三方面,提供了根据本申请第三方面的计算机可读存储介质,其上存储有验证微指令序列的计算机程序代码,当所述计算机程序代码由处理装置运行时,执行上述的方法。
本申请不仅模拟NVM芯片,还模拟闪存通道,并提高仿真的粒度,尤其是可以细致到时钟周期的精度,对每个周期的行为进行描述,进而验证微指令序列的正确性。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,并且相同或对应的标号表示相同或对应的部分。其中:
图1A是示出存储设备的示例性框图;
图1B是示出控制部件的示例性框图;
图2A是示出耦合介质接口控制器与NVM芯片的闪存通道的一组信号的示意图;
图2B是示出耦合介质接口控制器与2个NVM芯片的闪存通道的一组信号的示意图;
图3是示出本申请实施例的验证系统的示意图;
图4是示出本申请实施例的读命令的信号组示意图;
图5是示出本申请实施例的存储介质模拟器的示意图;
图6是示出本申请实施例的存储介质模拟器模拟并行处理的示意图;
图7是示出本申请另一实施例的微指令序列验证的流程图;
图8是示出本申请另一实施例的存储介质模拟方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
介质接口控制器作为控制控制部件与NVM芯片之间进行信息交互的器件,其与NVM芯片之间通过一组信号线连接。该组信号线的含义与数据传输方式由NVM芯片的接口协议定义。图2A展示了耦合介质接口控制器与NVM芯片的闪存通道的一组信号的示意图。
图2A的例子中,闪存通道连接1个NVM芯片。图2A示出的闪存通道包括16条信号线的信号线组,包括输入输出信号线组201与逻辑控制信号线组202。输入输出信号线组201包括DQ信号线组(包括例如8根信号线)与DQS信号线,逻辑控制信号线组202包括CE#信号线、CLE信号线、ALE信号线、CLK(WE#)信号线、WP#信号线、RE#(W/R)信号线、SR(R/B#)信号线等。在不同的NVM芯片接口协议中定义的信号线可能略有差异,其均为所属领域的现有技术。介质接口控制器通过该组信号线向NVM芯片传输存储介质访问命令。
图2B展示了耦合介质接口控制器与2个NVM芯片的闪存通道的一组信号的示意图。
图2B的例子中,闪存通道连接2个NVM芯片。闪存通道中的输入输出信号线组201以及CLE信号线、ALE信号线、CLK信号线、WP#信号线、RE#信号线、SR信号线由两个NVM芯片共享,这些信号线的每个分别连接到两个NVM芯片的对应的相同管脚。闪存通道包括CE0#信号线与CE1#信号线分别连接到两个NVM芯片的芯片使能管脚。由于部分信号线被共享,耦合到同一闪存通道的2个NVM芯片,在某一时刻,仅其中一个NVM芯片得以利用闪存通道传输信号。
图3展示了根据本申请实施例的验证系统的示意图。
本申请实施例的验证系统是一种仿真平台,用以仿真图1B中介质接口控制器与NVM芯片之间的交互过程,以验证介质接口控制器在设计上是否存在错误,如验证介质接口控制器所执行的微指令序列是否存在错误。图3示出此实施例的仿真平台包括测试用例生成器301、微指令序列302、介质接口控制器模拟器303及存储介质模拟器304。
测试用例生成器301用以生成测试用例。也参看图1B,测试用例生成器301替代控制部件的存储命令处理单元1023向介质接口控制器模拟器303提供输入,并获取介质接口控制器模拟器303的输出来识别介质接口控制器模拟器303的工作是否符合预期。为了清楚的目的,将测试用例生成器301向介质接口控制器模拟器303提供的输入称为介质接口命令。存储介质模拟器304提供例如队列接收测试用例生成器301提供的介质接口命令,以及通过队列向测试用例生成器301提供对介质接口命令的处理结果。
测试用例是指对介质接口控制器模拟器303进行测试的任务的描述,包括一个或多个介质接口命令,以及预期的这些介质接口命令的处理结果。在处理测试用例生成器301生成的测试用例过程中,介质接口控制器303生成提供给存储介质模拟器304的存储介质访问命令。
微指令序列302用以提供一系列的待验证微指令。
介质接口控制器模拟器303与测试用例生成器301连接,用以模拟图1B中介质接口控制器1025的行为。具体来说,介质接口控制器模拟器303接收来自测试用例生成器301的测试用例以及输入的多组待验证微指令序列,通过执行待验证微指令序列向NVM芯片发送存储介质访问命令或从NVM芯片读出数据或者其他信息。作为举例,介质接口控制器模拟器303可以通过执行待验证微指令序列生成多个时钟周期所对应的符合NVM接口协议的命令信号组。由现有技术的转换工具将介质接口控制器1025的设计转换得到介质接口控制器模拟器303,从而介质接口控制器模拟器303具有介质接口控制器1025相同的行为,二者在每个时钟周期都具备相同的行为。从而为介质接口控制器1025所开发的微指令序列302可直接由介质接口控制器模拟器303执行,以及介质接口控制器模拟器303提供给存储介质模拟器304的输出描述了每个周期在耦合介质接口控制器模拟器303与存储介质模拟器304的闪存通道上传输的各个信号。
存储介质模拟器304用以获取命令信号组所对应的结果,并基于NVM接口协议将结果转换成一个或多个时钟周期的结果信号组,将结果信号组发送至介质接口控制器模拟器303,其中结果信号组用以识别待验证微指令序列的正确性。根据图3的实施例,可选地,存储介质模拟器304除了通过闪存通道向介质接口控制器模拟器303提供处理存储介质命令的响应,还额外地耦合例如测试用例生成器301,或者耦合仿真平台的其他模块,以报告其工作状态或识别出的异常行为。例如,介质接口控制器模拟器303向闪存通道施加的信号或信号序列不符合ONFI规范,或者对存储介质模拟器304的操作不符合要求(例如,向已被写入数据的物理页再次施加编程命令)。
在此实施例中,NVM接口协议为ONFI协议。在ONFI协议中,一个命令的信号需要数个周期才能发送完毕,因此介质接口控制器模拟器303在每个时钟周期发送一组数据,连续多个时钟周期的多组数据形成一个信号组,而该信号组便对应至一个命令。图4示出在ONFI协议所定义的一个读命令的信号组示意图。DQ信号的第一个周期的DQ值用于通知存储介质模拟器304读命令发起,随后的5个周期的DQ值用于指示地址数据,用于通知存储介质模拟器304欲从何处获取数据,30h为DQ信号的最后一个周期的DQ值,用于指示读命令的发送已经完成,至此读命令信号发送周期结束。由上述可知,图4所示的实施例,一个读命令需要7个时钟周期(7组数据)的信号组来实现。
存储介质模拟器304与介质接口控制器模拟器303连接,用以模拟NVM芯片和/或闪存通道。例如,模拟NVM芯片接收介质接口控制器模拟器303所发送的存储介质访问命令,根据存储介质访问命令执行相应的操作,并反馈操作结果。如介质接口控制器模拟器303所发送的命令是读命令,则存储介质模拟304用于模拟接收该读命令,并获取该读命令所对应的数据,以及将其发送给介质接口控制器模拟器303的过程。作为举例,存储介质模拟器304所模拟的是一个闪存通道所耦合的至少两个NVM芯片,即介质接口控制器模拟器303将访问相同闪存通道所连接的不同NVM芯片的命令均发送给闪存通道所对应的存储介质模拟器304;另外,存储介质模拟器304除了模拟NVM芯片,还模拟与NVM芯片连接的闪存通道。
对于实际的介质接口控制器,其可能通过多个闪存通道与多个不同的NVM芯片连接,例如,8通道或者16通道。为了模拟实际的介质接口控制器与NVM芯片之间的关系,此实施例的介质接口控制器模拟器303可以耦合多个(至少2个)存储介质模拟器304,图3示例性地显示连接至4个存储介质模拟器304,每个存储介质模拟器304模拟一个闪存通道所连接的NVM芯片。换言之,介质接口控制器模拟器303耦合一个或多个模拟的闪存通道,在真实非仿真的情况下,这些闪存通道可以耦合到至少2个NVM芯片。在图3的例子中,介质接口控制器模拟器303耦合了4个闪存通道。每个存储介质模拟器304所模拟的闪存通道可具有相同或不同的配置,例如,各闪存通道上的NVM芯片的数量和/或存储容量可以相同或不同。
作为举例,该仿真平台中各个模型是以SystemC语言实现的,介质接口控制器模拟器303是根据介质接口控制器1025既有的HDL代码生成的SystemC模型。
图5示出此实施例的存储介质模拟器304的示意图,存储介质模拟器304包括接口模块501、处理模块502、分配模块503、目标模拟模块504及应答模块505。
接口模块501在每个周期获取自介质接口控制器模拟器303的信号,从介质接口控制器模拟器303接收命令信号组,根据采集的信号识别每个周期的周期类型,进而判断命令信号组是否符合ONFI协议。再以图4的信号组为例,由DQ信号所代表的各周期为“CMD-ADDR-ADDR-ADDR-ADDR-ADDR-CMD”,其中“CMD”代表命令周期,而“ADDR”代表地址周期,并且前后两个“CMD”周期类型中的DQ值分别为0x00h与0x 30h,接口模块501基于周期类型序列“CMD-ADDR-ADDR-ADDR-ADDR-ADDR-CMD”识别出这是一条读命令,一方面提取出当前命令是读命令,另一方面提取出读地址为C1、C2、R1、R2、R3,这些读地址拼接起来即是要访问的存储介质的物理地址。
如所接收的一个或多个周期类型符合例如ONFI协议,接口模块501将命令(这里的命令是用于存储介质模拟器304内部交互的命令,其形式同存储介质模拟器304所接收的存储介质访问命令的形式不必相同)发送至处理模块502;如不符合ONFI协议,存储介质模拟器304生成错误信息。存储介质模拟器304可以将错误信息发送给测试用例生成器301或是仿真平台的其他模块,供判断命令信号组错误的原因。
例如,错误信息是由接口模块501所生成并发送。接口模块501在每个周期执行一次操作,从介质接口控制器模拟器303获取该周期所对应的一组信号,连续多个时钟周期的多组信号形成上述命令信号组,并基于命令信号组生成命令。如图4为例,接口模块501连续接收7个周期的7组信号,形成一个命令信号组,并解码出包括物理地址的读命令。当命令信号组有误无法生成命令时,接口模块501生成错误信息并发送至测试用例生成器301或是仿真平台的其他模块。
处理模块502接收并处理来自接口模块501的命令。当命令与访问存储介质所存储的数据无关时,例如设置特征(set feature)命令或重置(reset)命令,处理模块502直接处理此类命令,并将执行结果通过接口模块501发送至介质接口控制器模拟器303;当命令与访问存储介质所存储的数据有关时,将命令发送至分配模块503。可以理解地,接口模块501向介质接口控制器模拟器303发送的命令执行结果,也模拟在闪存通道上所产生的各周期信号,并且符合例如ONFI协议的要求,形成包含命令执行结果的结果信号组。
分配模块503根据物理地址识别出命令所要访问的逻辑单元,将命令发送至模拟该逻辑单元的子模块。
目标模拟模块504模拟NVM芯片中的目标,仿真操作目标中的逻辑单元以及产生命令处理的结果(例如,读命令读出的数据,编程命令写入的数据,以及可选地,读命令/编程命令处理过程产生的错误比特)。闪存通道上可包括多个NVM芯片,NVM芯片可包括多个目标,相对应地目标模拟模块504亦可以有多个,图中示例性显示2个目标模拟模块504(即2个目标)。由于在实际的NVM芯片中每个目标又包括一个或多个逻辑单元109,相应地每个目标模拟模块504包含一个或多个子模块,图中示例每个目标模拟模块504包括2个子模块,分别为子模块1和子模块2,以及子模块3和子模块4,每个子模块模拟一个逻辑单元109。存储介质模拟响应于接收到访问不同NVM芯片的命令,分配模块503根据命令所指示的物理地址确定目标子模块,将命令发送至目标子模块,目标子模块完成命令后,会发送结果至应答模块505,其中,目标子模块是指该命令所要访问的逻辑单元所对应的子模块。
在应答模块505接收目标子模块所反馈的结果后,一方面将结果发送至接口模块501,通过接口模块501将结果发送至介质接口控制器模拟器303,另一方面通知处理模块502已完成该命令信号组的任务。
以下将以执行与访问存储介质所存储的数据有关的命令对各模块的运作进一步做说明。
以读命令为例,接口模块501自命令信号组中识别出读命令,发送至处理模块502。在前后连续两个读命令均访问同一个目标子模块(逻辑单元)的情况下,如果前一个命令尚未执行完毕就收到了后一个读命令,这不符合NVM芯片的要求。类似地,在前一个编程命令尚未执行完成时,NVM芯片也要求不能再向相同的逻辑单元施加读命令、编程命令与擦除命令,但可以施加例如编程暂停命令(Program-Suspend)。
作为仿真平台,根据本申请实施例的存储介质模拟器304识别这种不符合NVM芯片的要求的情况并报告错误。然而,由于微指令序列中的缺陷或其他原因,这种情况可能出现,因此,根据本申请实施例的存储介质模拟器304还要对其进行模拟处理。
一种可选的处理方式是,处理模块502维护子模块状态列表,子模块状态列表中记录了存储介质模拟器的所有子模块的当前状态(例如,忙、闲),可选地,子模块状态列表还记录了处于忙状态的子模块正在处理的命令类型(读、编程、擦除等)。响应于处理模块502将命令发送给子模块之一,在子模块状态列表中,将该子模块的状态设置为忙,以及可选地还记录发送给该子模块的命令类型。响应于处理模块502收到应答模块505指示的某子模块对某命令处理完成,在子模块状态列表中,将该子模块的状态设置为闲。处理模块502在处理例如读命令时,根据读命令中的物理地址识别出要访问的子模块,并自子模块状态列表中查询该子模块的状态。若子模块处于忙状态,或者子模块处于忙状态且其正在处理的命令类型要求该子模块不能再处理当前命令,处理模块502不会将当前的读命令发送至分配模块503,以及可选地还向测试用例生成器301或仿真平台的其他模块报告错误。若子模块处于闲状态,处理模块502将来自接口模块501的读命令发送至分配模块503。在此处理方式下,处理模块502决定读命令后送的时机点,分配模块503不做判断。作为举例,此处前一个与该读命令访问相同目标子模块的命令与该读命令,可以在时间上连续,如前一个命令为该读命令的上一个命令;也可以在时间上不连续,如按照时间的先后顺序,接口模块501分别向处理模块502发送了4个命令,分别为命令1、命令2、命令3以及命令4(这里数字指示了接口命令501向处理模块502发送命令的先后顺序),如该读命令是指命令3,则前一个命令可以为命令1,也可以为命令2。
另一种可选的处理方式是,处理模块502不做判断直接将读命令发送至分配模块503,读命令触发分配模块503根据读命令访问的物理地址自子模块1至4中识别出目标子模块,并判断目标子模块处于忙或闲状态。例如,由分配模块503维护子模块状态列表,或者子模块向分配模块503提供查询其忙/闲状态的接口,由分配模块503通过该接口获取目标子模块的忙/闲状态,以及可选地目标子模块正在执行的命令类型。如目标子模块为闲状态,分配模块503将读命令发送至目标子模块;如目标子模块为运行状态,分配模块503不向目标子模块发送命令并报告错误。在此判断机制下,处理模块502不做判断,分配模块503决定读命令后送的时机点。
当目标子模块处于闲状态时,不论其他子模块处于忙或闲状态,读命令都会送达目标子模块,以触发目标子模块处理该读命令,例如至相应物理地址读取相应的数据。存储介质模拟器304的子模块1至4可以模拟存储介质获取读命令的结果所需的时间。目标子模块自读出数据后,反馈结果(数据与读出的指示,以及所读出数据)至应答模块505。作为响应,应答模块505执行操作将该结果发送至接口模块501,并通知处理模块502此命令已执行完毕。作为举例,在一种实施方式中,目标子模块用于模拟逻辑单元的行为,但每个逻辑单元所存储的数据在该仿真平台中是存储在存储器中,当目标子模块接收到分配模块503所分配的读命令后,根据该命令从存储器中相应地址读取对应的数据。作为又一种实施方式,目标子模块不存储所模拟逻辑单元的数据,例如对于编程命令,其将要写入逻辑单元的数据丢弃,并在模拟了编程命令的处理时间(例如1ms)后向应答模块505指示编程命令处理成功(或失败);接下来,目标子模块收到读命令时,在模拟了读命令的处理时间(例如70us)后向应答模块505指示读命令处理成功(或失败),并生成指定的数据或随机的数据作为读命令的读取结果。可选地,子模块还模拟存储介质的存储特性(例如,向读取结果中添加指定的错误比特,或者所添加的错误比特率随时间变化)。
接口模块501接收到结果后,根据NVM芯片的接口协议设置闪存通道的指定信号线的状态,即第一控制信号,使得介质接口控制器模拟器303读取到该信号线的状态时得以获知读命令被处理完成,读命令所读出的数据可以被发送。介质接口控制器模拟器303发送回指示读出数据的信号(即第二控制信号)至接口模块501,接口模块501响应指示读出数据的信号,基于周期将读出的数据以符合ONFI协议的方式形成结果信号组,发送至介质接口控制器模拟器303。以上便是存储介质模拟器304模拟读命令运行过程。
以写命令为例,接口模块501自命令信号组中解码出编程命令,发送至处理模块502。同样地,此实施例可以由处理模块502或是分配模块503决定后送编程命令的时机点,不再赘述。
当目标子模块处于闲状态时,编程命令送达目标子模块,目标子模块处理该编程命令,例如写入数据至相应地址。存储介质模拟器304的子接口模块1至4可以模拟编程命令NVM芯片处理所需的时间(例如1ms)。目标子模块处理完该编程命令后,生成编程命令处理成功(或失败)信号,发送至应答模块505。这触发应答模块505执行一次操作将相应结果发送至接口模块501,并通知处理模块502此命令已执行完毕。作为一种实施方式,目标子模块不存储编程命令所要写入的数据,而是将要写入逻辑单元的数据丢弃,并在模拟了编程命令的处理时间(例如1ms)后向应答模块505指示编程命令处理成功(或失败)。
接口模块501接收到结果时,根据NVM芯片的接口协议设置闪存通道的指定信号线的状态,使得介质接口控制器模拟器303读取到该信号线的状态时得以获知编程命令被处理完成。以上便是存储介质模拟器304模拟写命令运行过程。
在可选的实施方式中,存储介质模拟器所模拟的闪存通道耦合了例如2个目标或更多目标。接口模块501根据在获取命令信号组期间,多个芯片选取信号(例如CE0#与CE1#)哪个有效,来识别所获取的命令信号组对应哪个目标,进而确定应当由哪个目标模拟器来处理所获取命令信号组所携带的命令。可选地,接口模块501还识别芯片选取信号是否符合NVM芯片接口协议的要求,例如,任何时刻,至多仅一个芯片选取信号有效,如果某个周期,两个或更多芯片选取有效,接口模块501报告错误。依然可选地,在采集闪存通道的信号的每个周期,接口模块501还进一步识别芯片选取信号是否有效,仅在存在有效的芯片选取信号时,接口模块501才从闪存通道采集(其他)信号并处理。依然可选地,对于一个有效的命令,在其多个周期内,有效的芯片选取信号不应变化(例如,不应由CE0#有效变为CE1#有效),接口模块501还识别一个有效的命令,在其多个周期内,有效的芯片选取信号没有变化,否则也报告错误。
在一种实施方式中,验证系统的仿真平台通过SystemC硬件描述语言来实现,图5中的各模块被实现为SystemC语言提供的“Module”(称为SystemC模块)。而SystemC支持SystemC模块间的并行处理,故此实施例的存储介质模拟器304的各模块可并行工作。例如接口模块501、处理模块502、分配模块503、目标模拟模块504及应答模块505各自可独立工作。例如,接口模块501,响应于从闪存通道获取的周期或时钟信号而发起一次执行。从闪存通道获取的周期或时钟信号由介质接口控制器模拟器303提供,或者与施加给介质接口控制器模拟器303的周期或时钟信号相同。存储介质模拟器405的除了接口模块501外的其他模块的操作与时钟周期并无直接关系,而是基于各自接收的信号、命令或由定时器提供的等待时间接收来触发一次执行。例如,接口模块501通过闪存通道的CLK信号或者其他信号的状态变化来触发,处理模块502通过从接口模块501接收到命令来触发,分配模块503通过从处理模块502接收到命令来触发,应答模块505通过接收到结果来触发,子模块通过从分配模块接收到命令来触发,可选地还根据所模拟的命令处理时间到时来触发。在任一时刻,上述各模块可以并行的工作。
图6示出存储介质模拟器304模拟并行处理的示意图。接口模块501在例如每个周期接收信号,并在某个时间段接收到读命令1(R1)的命令信号组,生成命令后发送至处理模块502。读命令1触发处理模块502,在确定目标子模块(例如子模块1)处于闲状态后,将读命令1发送至分配模块503。读命令1触发分配模块503根据物理地址将命令发送至子模块1,子模块1读取该物理地址的数据。在子模块1读取读命令1所需的数据后,将读命令1的结果发送至应答模块505,结果触发应答模块505,将该结果发送至接口模块501。
在子模块1处理读命令1的期间,接口模块501接收到读命令2(R2)的命令信号组,生成命令后发送至处理模块502。同样在子模块1处理读命令1的期间,读命令2触发处理模块502,在确定目标子模块(例如子模块2)处于闲状态后,将读命令2发送至分配模块503。在应答模块505处理读命令1的结果的期间,读命令2触发分配模块503根据物理地址将读命令2发送至子模块2。在子模块2读取该物理地址的数据的期间,接口模块501将读命令1的结果发送至介质接口控制器模拟器303。
从图6的例子可知,除了接口模块501,其他模块基于前一级模块的输出来触发运行,当某个模块在执行一个命令时,前级模块可能在执行下一个命令,而后级模块可能还在执行前一个命令。例如,在分配模块503或目标子模块执行命令的期间,接口模块501可能正在接收下一个命令信号组。又例如,在应答模块505接收结果的期间,处理模块501或分配模块503可能正在执行下一个命令信号组的命令。这样的并行模拟会对存储介质模拟器304的处理流程产生一些变化,以接口模块501为例,虽然介质接口控制器模拟器303依序发送读命令1和读命令2的命令信号组,但从图6可以看出接口模块501先处理读命令1的接收,再处理读命令2的接收,然后处理读命令1的结果的发送。
介质接口控制器模拟器303接收到接口模块501发送的结果信号组后,响应结果信号组生成对应至待验证微指令序列的执行结果,将执行结果发送至测试用例生成器301。测试用例生成器301基于执行结果,验证待验证微指令序列的正确性。进一步地,测试用例生成器301基于接口模块501发送的错误信息来判断待验证微指令序列的错误。
此实施例可以实现周期的粒度,快速而精确地验证微指令序列的正确性,亦可识别命令信号组是否正确,在正确的情况下进行后续处理,在错误的情况下向测试用例生成器或仿真平台的其他模块反馈错误信息。不仅如此,此实施例模拟各模块并行处理,更能精准地发现设计上的错误。
本申请的另一个实施例是一种微指令序列验证方法,图7示出此实施例的流程图。
在步骤701中,生成测试用例。测试用例是指对介质接口控制器模拟器303测试任务的描述,包括一个或多个介质接口命令,以及预期的这些介质接口命令的处理结果。
在步骤702中,基于测试用例,通过执行待验证微指令序列以生成多个时钟周期所对应的符合NVM接口协议的命令信号组。在此步骤中,接收测试用例以及多组待验证微指令序列,通过执行待验证微指令序列向NVM芯片发送存储介质访问命令或从NVM芯片读出数据或者其他信息,此实施例可以通过执行待验证微指令序列生成如图4的多个时钟周期所对应的符合NVM接口协议的命令信号组。
在步骤703中,获取命令信号组所对应的结果。此步骤又细分为图8的流程。
在步骤801中,接收命令信号组,其中命令信号组是指介质接口控制器模拟器所模拟生成的存储介质访问命令所对应的信号组,由介质接口控制器模拟器基于NVM接口协议在多个时钟周期中模拟生成的多组信号。在此实施例中,NVM接口协议为例如ONFI协议。具体来说,此步骤在一个或多个周期对信号采样,每个周期执行一次操作,从介质接口控制器模拟器获取该时钟周期所对应的一组信号,连续多个时钟周期的多组信号形成上述命令信号组。
在步骤802中,根据采集的信号识别每个周期的周期类型,进而判断命令信号组是否符合ONFI协议。如符合ONFI协议,执行步骤803,根据命令信号组识别出包括例如要访问的物理地址。如不符合ONFI协议,执行步骤804,生成错误信息,并将错误信息发送给测试用例生成器或是仿真平台的其他模块。
在步骤805中,识别出命令所对应的目标子模块,将命令发送至目标子模块。例如,根据命令信号组识别出的物理地址,确定该物理地址所对应的逻辑单元,将该逻辑单元所对应的子模拟作为目标子模块。
在执行步骤805后,接着执行步骤806,获取命令的结果。可选地,目标子模块还模拟NVM芯片处理命令所需的时间。在指定的时间后才生成命令处理结果。
在步骤807中,通知命令已执行完毕。
接着执行步骤704,基于NVM接口协议将结果转换成一个或多个时钟周期的结果信号组。最后执行步骤705,根据结果信号组识别待验证微指令序列的正确性。其中,结果信号组是指存储介质模拟器模拟生成的对命令反馈的结果所对应满足NVM接口协议的一个或多个时钟周期的信号组。
此实施例本申请提高仿真的粒度,尤其是可以细致到时钟周期的精度,对每个周期的行为进行描述,进而验证微指令序列的正确性。
本申请另一个实施例为一种计算机可读存储介质,其上存储有验证微指令序列的计算机程序代码,当所述计算机程序代码由处理器运行时,执行如图7及图8的方法。在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本申请的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本申请实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,为了简明的目的,本申请将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本申请的方案并不受所描述的动作的顺序限制。因此,依据本申请的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本申请所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本申请某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本申请对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本申请某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种验证系统,其特征在于包括:
测试用例生成器,用以生成测试用例;
介质接口控制器模拟器,基于所述测试用例,通过执行待验证微指令序列以生成多个时钟周期所对应的符合NVM接口协议的命令信号组;
存储介质模拟器,用以获取所述命令信号组所对应的结果,并基于所述NVM接口协议将所述结果转换成一个或多个时钟周期的结果信号组,将所述结果信号组发送至所述介质接口控制器模拟器,所述结果信号组用以识别所述待验证微指令序列的正确性。
2.根据权利要求1所述的验证系统,其中所述介质接口控制器模拟器响应所述结果信号组生成对应至所述待验证微指令序列的执行结果,并将所述执行结果发送至所述测试用例生成器。
3.根据权利要求2所述的验证系统,其中所述测试用例生成器基于所述执行结果以验证所述待验证微指令序列的正确性。
4.根据权利要求1-3任一项所述的验证系统,其中所述存储介质模拟器模拟闪存通道,所述闪存通道连接至少两个NVM芯片。
5.根据权利要求4所述的验证系统,其中所述介质接口控制器模拟器将访问相同闪存通道所连接的不同NVM芯片的命令均发送给所述闪存通道所对应的存储介质模拟器。
6.根据权利要求1-3任一项所述的验证系统,其中所述存储介质模拟器判断所述命令信号组是否正确,如是,获取所述命令信号组所对应的结果,如否,发出错误信息。
7.根据权利要求1-3任一项所述的验证系统,其中所述存储介质模拟器包括:
接口模块,从所述介质接口控制器模拟器接收所述命令信号组,并根据所述命令信号组识别出命令;
目标模拟模块,用于模拟存储介质中的目标,所述目标模拟模块包含一个或多个子模块,当所述命令与访问所述存储介质所存储的数据有关时,所述子模块用于模拟所述目标中的逻辑单元以及获取所述命令的结果;
分配模块,识别出所述命令所对应的目标子模块,将所述命令发送至所述目标子模块;
应答模块,接收所述目标子模块所反馈的结果,并通过所述接口模块将所述结果发送至所述介质接口控制器模拟器。
8.根据权利要求7所述的验证系统,其中所述命令触发所述目标子模块执行一次操作获取所述结果,其中所述目标子模块模拟获取所述结果所需的时间。
9.根据权利要求8所述的验证系统,其中所述命令信号组包括芯片选取信号,所述分配模块根据所述芯片选取信号识别所述目标子模块。
10.一种微指令序列验证方法,其特征在于包括:
生成测试用例;
基于所述测试用例,通过执行待验证微指令序列以生成多个时钟周期所对应的符合NVM接口协议的命令信号组;
获取所述命令信号组所对应的结果;
基于所述NVM接口协议将所述结果转换成一个或多个时钟周期的结果信号组;
根据所述结果信号组识别所述待验证微指令序列的正确性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210692519.5A CN117292738A (zh) | 2022-06-17 | 2022-06-17 | 验证微指令序列的系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210692519.5A CN117292738A (zh) | 2022-06-17 | 2022-06-17 | 验证微指令序列的系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117292738A true CN117292738A (zh) | 2023-12-26 |
Family
ID=89252349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210692519.5A Pending CN117292738A (zh) | 2022-06-17 | 2022-06-17 | 验证微指令序列的系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117292738A (zh) |
-
2022
- 2022-06-17 CN CN202210692519.5A patent/CN117292738A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8086919B2 (en) | Controller having flash memory testing functions, and storage system and testing method thereof | |
US8898375B2 (en) | Memory controlling method, memory controller and memory storage apparatus | |
CN104516843A (zh) | 基于fpga的非安装型存储器测试装置 | |
TWI492054B (zh) | 快閃記憶體的模擬方法與模擬器 | |
CN111931442B (zh) | Fpga内嵌flash控制器及电子装置 | |
US10496422B2 (en) | Serial device emulator using two memory levels with dynamic and configurable response | |
CN111324414B (zh) | Nvm存储介质模拟器 | |
CN114444422A (zh) | 芯片验证系统、方法及存储介质 | |
CN113270137A (zh) | 一种基于fpga嵌入式软核的ddr2测试方法 | |
CN116225992A (zh) | 一种支持虚拟化仿真设备的NVMe验证平台及方法 | |
KR20200001208A (ko) | 융합형 반도체 장치 및 동작 방법, 이를 포함하는 적층형 메모리 장치 | |
CN116679887B (zh) | 用于NAND Flash的通用控制模块及方法 | |
CN117292738A (zh) | 验证微指令序列的系统及方法 | |
CN111176926A (zh) | 一种基于双口sram的ip核仿真系统及仿真方法 | |
US9152348B2 (en) | Data transmitting method, memory controller and data transmitting system | |
CN117292739A (zh) | 存储介质模拟器及存储介质模拟方法 | |
CN113177388B (zh) | 用于ip核测试与验证的装置、系统及方法 | |
CN112885403B (zh) | 一种Flash控制器的功能测试方法、装置及设备 | |
CN109582523B (zh) | 有效分析SSD前端NVMe模块性能的方法及系统 | |
CN105068965A (zh) | 基于I2C总线的NAND Flash存储方法及系统 | |
CN117577164A (zh) | 存储器控制器测试方法及装置 | |
CN112463018A (zh) | 指令传送方法、存储器控制电路单元及存储器存储装置 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
CN114003431B (zh) | 一种Nvme固态硬盘非4k对齐Trim数据校验方法、系统及装置 | |
US20240061614A1 (en) | Error detection and correction in a controller |
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 |