专利名称:一种实现存储器访问的方法、装置以及存储器
专利类型:实用新型专利
专利申请号:CN202110572245.1
专利申请(专利权)人:北京物芯科技有限责任公司
权利人地址:北京市海淀区知春路1号1幢15层1514室
专利发明(设计)人:张永
专利摘要:一种实现存储器访问的方法、装置以及存储器,所述方法,包括:在所述存储器模型中封装读写函数;对所述存储器及所述读写函数进行验证;通过所述读写函数对所述存储器的存储单元进行访问。由此,可以通过封装在存储器中的读写函数直接对存储单元进行访问,从而在对芯片进行测试时,可以直接通过读写函数从存储器中获取配置,而不需要消耗仿真时间,进而提高了仿真效率。
主权利要求:
1.一种实现存储器访问的方法,其特征在于,包括:
在所述存储器中封装读写函数,所述读写函数用于不经过RAM接口访问存储器的存储单元,所述RAM接口用于实现对存储器的存储单元进行读写数据;
对所述存储器及所述读写函数进行验证,包括:通过所述读写函数向存储器写入数据再通过总线访问方式从存储器读取数据,以及通过总线访问方式向存储器写入数据再通过所述读写函数从存储器读取数据,通过写入数据和读取数据是否相同验证所述读写函数;
通过所述读写函数直接对所述存储器的存储单元进行访问;
所述读写函数的接口列表中包含访问所述存储单元的读写地址接口和读写数据接口;
所述读写函数的接口列表中还包含用于连接该读写函数的访问接口。
2.一种实现存储器访问的装置,其特征在于,包括:
封装模块,所述封装模块在所述存储器中封装读写函数,所述读写函数用于不经过RAM接口访问存储器的存储单元,所述RAM接口用于实现对存储器的存储单元进行读写数据;
验证模块,所述验证模块对所述存储器及所述读写函数进行验证,包括:通过所述读写函数向存储器写入数据再通过总线访问方式从存储器读取数据,以及通过总线访问方式向存储器写入数据再通过所述读写函数从存储器读取数据,通过写入数据和读取数据是否相同验证所述读写函数;
访问模块,所述访问模块通过所述读写函数直接对所述存储器的存储单元进行访问;
所述读写函数的接口列表中包含访问所述存储单元的读写地址接口和读写数据接口;
所述读写函数的接口列表中还包含用于连接该读写函数的访问接口。
3.一种存储器,其特征在于,所述存储器为用于实现权利要求1所述的实现存储器访问的方法的存储器,所述存储器中封装有读写函数,所述读写函数用于不经过RAM接口访问存储器的存储单元,所述RAM接口用于实现对存储器的存储单元进行读写数据。
4.一种测试方法,用于对芯片进行仿真测试,其特征在于,在仿真阶段通过权利要求1所述的实现存储器访问的方法访问所述存储器,以获取配置信息。
5.根据权利要求4所述的测试方法,其特征在于,读写函数利用访问接口与所述芯片连接,利用读写地址接口获取所述配置信息的地址信息,利用读写数据接口对所述配置信息进行读写操作。
6.一种计算设备,其特征在于,包括:
总线;
通信接口,其与所述总线连接;
至少一个处理器,其与所述总线连接;以及
至少一个存储器,所述存储器中封装有读写函数,所述读写函数用于不经过RAM接口访问存储器的存储单元,所述RAM接口用于实现对存储器的存储单元进行读写数据;
通过权利要求1所述的实现存储器访问的方法对所述存储器的存储单元进行访问。 说明书 : 一种实现存储器访问的方法、装置以及存储器技术领域[0001] 本发明涉及计算机领域,特别是指一种实现存储器访问的方法、装置以及存储器。背景技术[0002] 目前关于芯片设计中芯片内部使用的存储器的访问主要有CPU总线和硬件逻辑访问两种情况,如图1所示,CPU总线和硬件逻辑访问通过存储器的RAM(randomaccessmemory,随机存储器)的接口实现对存储器中存储单元的访问,从而对存储单元中的数据进行读写。[0003] 对于硬件中的芯片来说,芯片的正常工作需要一部分配置。所以,当芯片测试启动时,需要将一些配置信息存储到存储器中。而数字前端验证的每个功能验证都依赖这些配置,无论是CPU通过总线还是逻辑访问来读写配置,都需要消耗仿真时间。这样,对芯片内大量的功能点的覆盖验证中,会花费大量时间来完成访问这些配置,使得仿真效率很低。另外,在在门级网表仿真时,该问题体现更加明显。因为正常测试一个功能点可能需要1us,而配置就需要消耗30us甚至更多。在系统级仿真,要配置很多模块,这样消耗的配置时间继续增加,导致系统仿真花费更多的时间在配置上。发明内容[0004] 有鉴于此,本发明的主要目的在于提供一种存储器访问方法、验证方法及相关设备,以能在对芯片进行测试时,直接访问存储器中的配置信息,提高仿真效率。[0005] 本申请的第一方面提供一种实现存储器访问的方法,包括:在所述存储器中封装读写函数;对所述存储器及所述读写函数进行验证;通过所述读写函数对所述存储器的存储单元进行访问。由此,可以通过封装在存储器中的读写函数直接对存储单元进行访问,从而在对芯片进行测试时,可以直接通过读写函数从存储器中获取配置,而不需要消耗仿真时间,进而提高了仿真效率。[0006] 作为第一方面一种可能的实现方式,所述读写函数的接口列表中包含访问所述存储单元的读写地址接口和读写数据接口。由此,可以通过读写地址接口直接指定要访问的数据所在地址,从而能够通过读写数据接口对存储器中的配置进行读写。[0007] 作为第一方面一种可能的实现方式,所述读写函数的接口列表中还包含用于连接该读写函数的访问接口。由此,芯片可以通过访问接口连接读写函数,从而能够对存储器进行访问。[0008] 本申请的第二方面提供一种实现存储器访问的装置,包括:封装模块,所述封装模块在所述存储器中封装读写函数;验证模块,所述验证模块对所述存储器及所述读写函数进行验证;访问模块,所述访问模块通过所述读写函数对所述存储器的存储单元进行访问。由此,可以通过封装在存储器中的读写函数直接对存储单元进行访问,从而在对芯片进行测试时,可以直接通过读写函数从存储器中获取配置,还可以直接通过读写函数下发配置到存储器,而不需要消耗仿真时间,进而提高了仿真效率。[0009] 作为第二方面一种可能的实现方式,所述读写函数的接口列表中包含访问所述存储单元的读写地址接口和读写数据接口。由此,可以通过读写地址接口获取存储器中配置的地址信息,通过读写数据接口对存储器中的配置进行读写。[0010] 作为第二方面一种可能的实现方式,所述读写函数的接口列表中还包含用于连接该读写函数的访问接口。由此,芯片可以通过访问接口连接读写函数,从而能够对存储器进行访问。[0011] 本申请的第三方面提供一种存储器,所述存储器中封装有第一方面任一可能实现方式中所述的读写函数。[0012] 本申请的第四方面提供一种测试方法,在所述仿真阶段通过第一方面任一可能实现方式中的读写函数访问所述存储器,以获取配置信息。[0013] 作为第四方面一种可能的实现方式,所述读写函数利用所述访问接口与所述芯片连接,利用所述读写地址接口获取所述配置信息的地址信息,利用所述读写数据接口对所述配置信息进行读写操作。[0014] 本申请的第五方面提供一种计算设备,包括:总线;通信接口,其与所述总线连接;至少一个处理器,其与所述总线连接;以及至少一个第三方面提供的存储器。[0015] 本申请的第六方面提供一种可读存储介质,其上存储有程序指令,所述程序指令当被计算机执行时使得所述计算机执行第一方面任一可能实现方式中的方法。附图说明[0016] 图1为本申请实施例的存储器的访问所涉及的实施环境的示意图;[0017] 图2为本申请的实现存储器访问的方法的流程图;[0018] 图3为本申请实现存储器访问的装置示意图;[0019] 图4为本申请的存储器的组成示意图;[0020] 图5为通过本申请存储器对芯片进行验证的方法;[0021] 图6为本申请实施例中存储器40的验证平台环境示意图;[0022] 图7是本申请实施例提供的一种计算设备的结构性示意性图。[0023] 附图标记说明[0024] CPU10;硬件逻辑芯片20;RAM接口30;地址接口31;片选接口32;读写使能接口33;写数据接口34;读数据接口35;存储器40;存储单元41;读写单元42;读写地址接口421;读写数据接口422;访问接口423;封装模块50;验证模块60;访问模块70;计算设备300;处理器310;存储器320;通信接口330;总线340。具体实施方式[0025] 说明书和权利要求书中的词语“第一、第二、第三等”或模块A、模块B、模块C等类似用语,仅用于区别类似的对象,不代表针对对象的特定排序,可以理解地,在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。[0026] 在以下的描述中,所涉及的表示步骤的标号,如S110、S120……等,并不表示一定会按此步骤执行,在允许的情况下可以互换前后步骤的顺序,或同时执行。[0027] 说明书和权利要求书中使用的术语“包括”不应解释为限制于其后列出的内容;它不排除其它的元件或步骤。因此,其应当诠释为指定所提到的所述特征、整体、步骤或部件的存在,但并不排除存在或添加一个或更多其它特征、整体、步骤或部件及其组群。因此,表述“包括装置A和B的设备”不应局限为仅由部件A和B组成的设备。[0028] 本说明书中提到的“一个实施例”或“实施例”意味着与该实施例结合描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在本说明书各处出现的用语“在一个实施例中”或“在实施例中”并不一定都指同一实施例,但可以指同一实施例。此外,在一个或多个实施例中,能够以任何适当的方式组合各特定特征、结构或特性,如从本公开对本领域的普通技术人员显而易见的那样。[0029] 为了便于理解,对本申请中的术语进行简要的说明:[0030] 术语“仿真”为在软件环境下,验证芯片的行为与设想中的是否一致。[0031] 术语“前仿真”也称为功能仿真或行为级仿真。是指仅对逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性。[0032] 术语“后仿真”也称为布局布线后仿真或时序仿真。是指提取有关的器件延迟、连线延时等时序参数,并在此基础上进行的仿真,它是非常接近真实器件运行情况的仿真。[0033] 术语“通用验证方法学(UniversalVerificationMethodology,UVM)”是一个以SystemVerilog类库为主体的验证平台开发框架,验证工程师可以利用其可重用组件构建具有标准化层次结构和接口的功能验证环境。[0034] 术语“VMM(irtualMachinemonitor)”一般指虚拟机监视程序。监控系统行为是虚拟机系统的核心任务监控系统可用于调度任务、负载均衡、向管理员报告软硬件故障,并广泛控制系统的使用情况。[0035] 术语“OVM(OpenVirtualManager)”指开放虚拟化管理平台,是面向数据中心的一款开箱即用的免费服务器虚拟化软件。[0036] 术语“后门”指的是验证RTL(RegisterTransferLevel,寄存器转换级电路)时使用的一种手段,由验证环境产生具体的配置信息,配置信息直接赋值给具体信号。[0037] 术语“门级网表”在电路设计中,网表(netlist)是用于描述电路元件相互之间连接关系的,一般来说是一个遵循某种比较简单的标记语法的文本文件。门级(gate‑level)指的是网表描述的电路综合级别。顾名思义,门级网表中,描述的电路元件基本是门(gate)或与此同级别的元件。[0038] 术语“报文”是网络中交换与传输的数据单元,报文包含了将要发送的完整的数据信息。[0039] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。如有不一致,以本说明书中所说明的含义或者根据本说明书中记载的内容得出的含义为准。另外,本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。[0040] 图1为本申请实施例的存储器40的访问所涉及的实施环境的示意图。如图1所示,存储器40的访问所涉及的实施环境包括:CPU10、硬件逻辑芯片20、RAM接口30、存储器40。其中,CPU10可以通过总线访问RAM接口30,硬件逻辑芯片20可以通过硬件逻辑访问RAM接口30。RAM接口30具有多种接口,例如地址接口31、片选接口32、读写使能接口33、写数据接口34、读数据接口35等接口。存储器40中具有存储有数据的存储单元41,通过地址接口31可以指定存储单元41中所需配置的地址信息,通过片选接口32可以选中该配置信息,通过读写使能接口33可以确定对该配置是读还是写,通过写数据接口34可以写入数据,通过读数据接口35可以读取数据。[0041] 为了减少仿真时间,目前采用的方法为使用UVM或其他验证方法学的RAL(RegisterAbstractionLayer,寄存器抽象层)后门,但RAM(RandomAccessMemory,随机存储器40)的后门没办法解决。即使用RAL的后门,只能减少CPU10总线到RAM接口30的时间,读写RAM消耗仿真时间的问题依旧存在。同时,虽然通过后门可以避免通过总线或逻辑访问消耗仿真时间的问题,且环境操作更加灵活。但是这种方法,在门级网表后仿真的时候依旧有一些问题,如被直接赋值的信号名称会被综合工具做一些更改(名字发生变化、极性翻转、也可能被优化掉)。出现这些问题后,不容易定位调式,仿真环境维护很麻烦,对结果确认引入相当的工作量。[0042] 有鉴于此,本申请提供了一种实现存储器40访问的方法100,用于在不同验证阶段高效访问和验证存储器40。[0043] 图2为本申请的实现存储器40访问的方法100的流程图。如图2所示,本申请的实现存储器40访问的方法100包括:[0044] 步骤S110:在所述存储器40模型中封装读写函数;[0045] 步骤S120:对所述存储器40及所述读写函数进行验证;[0046] 步骤S130:通过所述读写函数对所述存储器40的存储单元41进行访问。[0047] 由此,可以通过封装在存储器40中的读写函数直接对存储单元41进行访问,从而在对芯片进行测试时,可以直接通过读写函数从存储器40中获取配置,而不需要消耗仿真时间,进而提高了仿真效率。[0048] 在一些实施例中,所述读写函数的接口列表中包含访问所述存储单元41的读写地址接口和读写数据接口。由此,可以通过读写地址接口指定存储器40中配置的地址信息,通过读写数据接口对存储器40中的配置进行读写。[0049] 在一些实施例中,所述读写函数的接口列表中还包含用于连接该读写函数的访问接口。由此,芯片可以通过访问接口连接读写函数,从而能够对存储器40进行访问。[0050] 进一步地,RAM接口30的类型可以是单口、双口或者FIFO(FirstInputFirstOutput,先进先出)等类型。其中单口的RAM接口30读写不能同时进行,双口与FIFO的RAM接口30读写可以同时进行。[0051] 在一些实施例中,以单口RAM接口30为例,RAM接口30可以如下:[0052][0053] 在一些实施例中,以单口RAM接口30为例,封装的读写函数的代码可以如下:[0054][0055] 图3为本申请实现存储器40访问的装置示意图。如图3所示,与上述实现存储器40访问的方法100相对应地,本申请还提供了一种实现存储器40访问的装置。包括:封装模块50,所述封装模块50在所述存储器40中封装读写函数;验证模块60,所述验证模块60对所述存储器40及所述读写函数进行验证;访问模块70,所述访问模块70通过所述读写函数对所述存储器40的存储单元41进行访问。下面,结合附图,对本申请提供的一种实现存储器40访问的方法的具体实施例进行详细的描述。[0056] 图4为本申请的存储器40的组成示意图。如图4所示,本申请的存储器40包括存储配置等数据的存储单元41,以及可以对存储单元41进行访问的读写单元42。读写单元42包括读写地址接口421、读写数据接口422以及访问接口423。通过访问接口423可以使读写单元42与被测芯片连接,通过读写地址接口421可以使读写单元42指定存储在存储单元41中配置的地址信息,通过读写数据接口422可以对存储在存储单元41中的配置进行读写操作。[0057] 由此,该读写单元42可以直接和存储器40中的存储单元41交互,类似上面提到的后门。读写单元42拥有和存储器40一样的接口,可以直接作用存储单元41。因为仿真环境可以直接调用这个读写单元42,配置值便可以直接存储到存储单元41中。这样就成为了像软件一样的操作,解决了仿真时间的消耗问题。且无论是RTL仿真阶段还是门级网表仿真,都不消耗仿真时间,也解决了由可能出现的绕线、改名、优化掉等情况引起的环境维护问题。这样,在保证这个读写单元42和存储器40本身的CPU10访问和逻辑访问通路正确的前提下,可以更加聚焦芯片其他功能的验证,把配置信息直接放到存储单元41中。[0058] 图5为通过本申请存储器40对芯片进行测试的方法200。如图5所示,实现本申请存储器40对芯片进行测试的方法200的具体步骤为:[0059] 步骤S210、RTL设计阶段在存储器40模型中封装读写函数,在存储器40中形成读写单元42。封装成读写单元42的读写函数可以是verilog或VHDL等语言形式,接口列表中应该至少包含读写地址接口421、读写数据接口422以及访问接口423。[0060] 步骤S220、使用systemverilog语言基于UVM/VMM/OVM等验证方法学对存储器40本身的功能进行测试、同时验证封装的读写函数,以保证其正确性。[0061] 步骤S230、根据要验证的芯片的特点通过读写单元42中的读写函数来访问存储器40的存储单元41,获取配置对其他功能验证。[0062] 步骤S240、对芯片进行验证,在门级仿真阶段使用读写函数对存储器40进行配置,验证其他功能,节省仿真配置时间。[0063] 由此,读写单元42可以通过读写地址接口421、读写数据接口422与存储单元41进行交互,芯片可以通过访问接口423与读写单元42进行交互,从而在对芯片进行测试时,可以直接通过读写单元42从存储单元41中获取配置,而不需要消耗仿真时间,进而节省仿真配置时间,提高了仿真效率。[0064] 图6为本申请实施例中存储器40的验证平台环境示意图。如图6所示,在一些实施例中,验证环境访问存储器40时,可以为:[0065] 1.写,dut_test_top.dut.ram_inst.write(addr,data);[0066] 2.读,dut_test_top.dut.ram_inst.read(addr,data);[0067] 由此,对于步骤S220,验证存储器可以为:[0068] 用dut_test_top.dut.ram_inst.write(addr,data);向存储器40写入数据,再用CPU10通过总线访问方式从存储器40读取数据,如果读出数据与写入数据相同,认为存储器40读访问正确。[0069] 用CPU10通过总线访问方式向存储器40写入数据,再用dut_test_top.dut.ram_inst.read(addr,data);从存储器40读取数据,如果读出数据与写入数据相同,认为存储器40写访问正确。[0070] 由此,可以对封装的读写函数进行验证,以保证其正确性。[0071] 在一些实施例中,对于步骤S230以及步骤S240,结合存储器40的其他功能验证:[0072] 以对数据交换芯片进行验证为例,其中验证功能点为二层转发业务,待测存储器40可以为MAC(MediaAccessControl,介质访问控制)表。[0073] 为使报文能够命中MAC表并获取出端口转发信息,需要MAC表的存储器中预先存储相关数据信息,如MAC、出端口等。这个配置我们希望消耗尽量少的仿真时间,而存储器40自身的功能已经得到充分验证,此时可以直接使用已封装在读写单元42中的读写函数,以后门访问的方式配置所需信息。例如:dut_test_top.dut.ram_inst.write(addr,data);将所需数据信息逐个地址写入存储器40中,然后验证平台将报文激励与该数据关联,启动仿真即可使报文命中已配置表项,进而验证二层转发业务流程是否正确。[0074] 图7是本申请实施例提供的一种计算设备300的结构性示意性图。该计算设备300包括:处理器310、存储器320、通信接口330、总线340。[0075] 应理解,图6所示的计算设备300中的通信接口330可以用于与其他设备之间进行通信。[0076] 其中,该处理器310可以与存储器320连接。该存储器320可以用于存储该程序代码和数据。因此,该存储器320可以是处理器310内部的存储单元,也可以是与处理器310独立的外部存储单元,还可以是包括处理器310内部的存储单元和与处理器310独立的外部存储单元的部件。[0077] 可选的,计算设备300还可以包括总线340。其中,存储器320、通信接口330可以通过总线340与处理器310连接。总线340可以是外设部件互连标准(PeripheralComponentInterconnect,PCI)总线或扩展工业标准结构(ExtendedIndustry StandardArchitecture,EISA)总线等。所述总线340可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。[0078] 应理解,在本申请实施例中,该处理器310可以采用中央处理单元(centralprocessingunit,CPU)。该处理器还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,DSP)、专用集成电路(applicationspecificintegratedcircuit,ASIC)、现成可编程门阵列(fieldprogrammablegateArray,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。或者该处理器310采用一个或多个集成电路,用于执行相关程序,以实现本申请实施例所提供的技术方案。[0079] 该存储器320可以包括只读存储器和随机存取存储器,并向处理器310提供指令和数据。处理器310的一部分还可以包括非易失性随机存取存储器。例如,处理器310还可以存储设备类型的信息。[0080] 在计算设备300运行时,所述处理器310执行所述存储器320中的计算机执行指令执行上述方法的操作步骤。[0081] 应理解,根据本申请实施例的计算设备300可以对应于执行根据本申请各实施例的方法中的相应主体,并且计算设备300中的各个模块的上述和其它操作和/或功能分别为了实现本实施例各方法的相应流程,为了简洁,在此不再赘述。[0082] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。[0083] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0084] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0085] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0086] 另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0087] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑OnlyMemory,ROM)、随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。[0088] 本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行一种多样化问题生成方法,该方法包括上述各个实施例所描述的方案中的至少之一。[0089] 本申请实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于,电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD‑ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。[0090] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。[0091] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括、但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。[0092] 可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。[0093] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
专利地区:北京
专利申请日期:2021-05-25
专利公开日期:2024-07-26
专利公告号:CN113176861B