CN113835757B - 多主机共享寄存器模型的方法、装置及电子设备 - Google Patents
多主机共享寄存器模型的方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113835757B CN113835757B CN202111154304.XA CN202111154304A CN113835757B CN 113835757 B CN113835757 B CN 113835757B CN 202111154304 A CN202111154304 A CN 202111154304A CN 113835757 B CN113835757 B CN 113835757B
- Authority
- CN
- China
- Prior art keywords
- register
- class
- sequence
- host interface
- sequencer
- 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
Classifications
-
- 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/30098—Register arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例涉及芯片应用技术领域,公开了一种多主机共享寄存器模型的方法、装置及电子设备,该多主机共享寄存器模型的方法,通过自定义寄存器扩展类,为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对寄存器模型进行操作,本申请实施例能够提高主机接口的扩展性。
Description
技术领域
本申请涉及芯片应用技术领域,特别是涉及一种多主机共享寄存器模型的方法、装置及电子设备。
背景技术
在数字芯片逻辑验证中,普遍利用(Universal Verification Methodology,UVM)寄存器模型的方法实现寄存器验证。在验证环境中,利用寄存器模型生成器脚本输出待测器件(Device Under Test,DUT)的寄存器模型文件。然后将寄存器模型例化在验证环境中,同时指定它的转换器(Adapter)和预测器。转换器负责将寄存器模型所得到的操作转换成总线代理器(Bus Agent)所能接受的形式,然后将其驱动到DUT的接口上。同时还可以将总线代理器中的监控器(Monitor)获得的信息发送到寄存器预测器(Predictor),其内部的转换器负责将反馈的信息转换成寄存器模型能接受的形式,实现更改寄存器模型中寄存器的镜像值。从而实现了验证DUT中所有寄存器的读写等特性。
目前,寄存器模型生成器一般会生成一个默认寄存器映射表(default_map),并为其设置总线代理器的序列器(Squencer)和转换器(Adapter),用于单一主机通过接口访问芯片寄存器。而在实际的芯片设计中,存在着不同主机通过不同接口对同一个寄存器进行访问的情况,因此,需要增加寄存器映射表,而目前通常通过修改寄存器模型生成器脚本的方式来增加寄存器映射表。
发明人在实现本发明的过程中,发现目前的技术方案至少包括以下技术问题:采用修改寄存器模型生成器脚本的方式来增加寄存器映射表,其操作复杂并且容易出错,并且主机接口的扩展性不足。
发明内容
本申请实施例提供一种多主机共享寄存器模型的方法、装置及电子设备,其解决了目前通过增加寄存器映射表存在的操作复杂并且容易出错,并且主机接口的扩展性不足的技术问题,以提高主机接口的扩展性。
为解决上述技术问题,本申请实施例提供以下技术方案:
第一方面,本申请实施例提供一种多主机共享寄存器模型的方法,包括:
自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;
为每一主机接口对应的序列指定对应的序列器;
确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;
在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。
在一些实施例中,所述为每一主机接口对应的序列指定对应的序列器,包括:
确定序列基类;
根据所述序列基类,派生每一主机接口对应的序列;
根据所述序列基类的第一任务,指定每一主机接口对应的序列一一对应的序列器。
在一些实施例中,所述根据所述序列基类的第一任务,指定每一主机接口对应的序列一一对应的序列器,包括:
在所述序列基类的第一任务中,获取序列基类对应的序列器指针;
根据所述序列器指针,确定每一主机接口对应的序列一一对应的序列器。
在一些实施例中,所述确定每一主机接口对应的***接口总线的转换器,包括:
在验证环境顶层例化每一主机接口对应的***接口总线的转换器。
在一些实施例中,所述方法还包括:
确定第一寄存器模型映射表,并将第一寄存器模型映射表替换源寄存器映射表。
在一些实施例中,所述确定第一寄存器模型映射表,包括:
从UVM基类中扩展得到第一寄存器映射类;
通过所述第一寄存器映射类,重写读任务和写任务;
将读任务和写任务的参数的成员变量指向寄存器扩展类的句柄。
在一些实施例中,当所述寄存器扩展类被调用时,生成寄存器扩展类对象,以实现读任务和写任务中的序列器和转换器的设置。
在一些实施例中,每一主机发送对应的序列,通过序列器发送到对应的驱动器上,由驱动器将该序列驱动到对应的总线接口上。
第二方面,本申请实施例提供一种多主机共享寄存器模型的装置,包括:
寄存器扩展类模块,用于自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;
序列器模块,用于为每一主机接口对应的序列指定对应的序列器;
转换器模块,用于确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;
寄存器模型模块,用于在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。
第三方面,本申请实施例提供一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够用于执行如第一方面所述的多主机共享寄存器模型的方法。
第四方面,本申请实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使电子设备能够执行如第一方面所述的多主机共享寄存器模型的方法。
本申请实施例的有益效果是:区别于现有技术的情况下,本申请实施例提供的一种多主机共享寄存器模型的方法,包括:自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。通过自定义寄存器扩展类,为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对寄存器模型进行操作,本申请实施例能够提高主机接口的扩展性。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本申请实施例提供的一种寄存器模型的结构示意图;
图2是本申请实施例提供的一种多主机访问***的结构示意图;
图3是本申请实施例提供的一种多主机的寄存器映射表的示意图;
图4是本申请实施例提供的一种多主机共享寄存器模型的方法的流程示意图;
图5是图4中的步骤S42的细化流程图;
图6是本申请实施例提供的一种确定第一寄存器模型映射表的流程示意图;
图7是本申请实施例提供的一种验证环境与待测器件的示意图;
图8是本申请实施例提供的一种多主机共享寄存器模型的架构示意图;
图9是本申请实施例提供的一种寄存器访问的示意图;
图10是本申请实施例提供的一种多主机共享寄存器模型的装置的结构示意图;
图11是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
采用验证方法学是芯片验证的趋势之一,统一验证方法学(UniversalVerification Methodology,UVM)是其中的典型代表。UVM架构中最主要的复用单元是总线代理(Agent),验证人员通过编写序列器(sequencer)中的序列(Sequence)生成事务级的包(transaction),并通过驱动器(Driver)转换为接口激励信号作用于总线接口,同时监视器(Monitor)收集总线信号,转换回事务级的包,并发送至计分板(scoreboard)进行自动化比对。UVM提供了一套基础的验证架构,实现了基本的复用和自动化验证。
下面结合说明书附图具体阐述本申请的技术方案:
请参阅图1,图1是本申请实施例提供的一种寄存器模型的结构示意图;
如图1所示,待测器件(Device Under Test,DUT)中的寄存器A和寄存器B,由验证环境(Environment,ENV)通过寄存器模型的方式完成驱动和监控寄存器A和寄存器B的读写操作。
可以理解的是,验证环境ENV是逻辑验证待测器件ENV所构造的一套代码,该代码具有测试激励输入,输出结果检测等功能。
寄存器模型,用于建立被测设计DUT寄存器在验证平台中的映射,所述安检管理器通过调用该寄存器模型的内部方法对其进行操作即可映射到对DUT寄存器的操作,实现对寄存器的访问和验证;
寄存器模型是利用基于VMM的寄存器抽象层(Register Abstraction Layer,RAL)验证技术和方案建立的芯片寄存器模型。由于安检验证测试过程中涉及较多的寄存器配置和读取,使用RAL对寄存器建模,验证环境对寄存器模型进行的操作即可映射到对DUT寄存器的操作,这比直接发送AHB总线操作去访问DUT寄存器要简单直观很多。一方面可以简便、高效地完成对寄存器的访问和验证;另一方面有利于提高验证环境平台搭建速度,提高了验证环境代码的可读性。寄存器模型可以将安检管理器访问寄存器的RAL操作转化成AHB事务,并通过通道将AHB事务传递给AHB主机验证模型,进而转化成能够驱动AHB总线的信号。
其中,在验证环境ENV中,利用寄存器模型生成器脚本输出待测器件DUT的寄存器模型文件。然后将寄存器模型例化在验证环境中,同时指定它的转换器(Adapter)和预测器。转换器负责将寄存器模型所得到的操作转换成总线代理器(Bus Agent)所能接受的形式,然后将其驱动到DUT的接口上。同时还可以将总线代理器中的监控器(Monitor)获得的信息发送到寄存器预测器(Predictor),其内部的转换器负责将反馈的信息转换成寄存器模型能接受的形式,实现更改寄存器模型中寄存器的镜像值。从而实现了验证DUT中所有寄存器的读写等特性。
一般情况下,寄存器模型生成器会生成一个默认寄存器映射表(default_map),并为其设置总线代理器的序列器(Squencer)和转换器(Adapter),用于单一主机通过接口访问芯片寄存器。
对于复杂的数字芯片,设计中为了达到功能控制的多选择性,常常会出现不同主机访问芯片内部的寄存器。由于不同主机的序列器(Squencer)和转换器(Adapter)不同,就导致这种场景下就无法正常使用上述的默认寄存器映射表。
请再参阅图2,图2是本申请实施例提供的一种多主机访问***的结构示意图;
如图2所示,不同主机通过不同的接口访问待测器件DUT的内部寄存器,例如:主机1通过接口1访问,主机2通过接口2访问,主机3通过接口3访问,以实现主机的功能需求。假设主机1通过接口1可以访问寄存器A、B、C,主机2通过接口2可以访问寄存器A和B,不可以访问寄存器C,主机3通过接口3可以访问寄存器A和C,不可以访问寄存器B。那么对这三个主机来讲,若只有一个寄存器映射表(default_map),则无法实现寄存器模型的正常使用。
请再参阅图3,图3是本申请实施例提供的一种多主机的寄存器映射表的示意图;
如图3所示,在寄存器块中,分别为每个接口对应一个寄存器映射表,例如:接口1对应寄存器映射表1,接口2对应寄存器映射表2,接口3对应寄存器映射表3,再将其可以访问的寄存器加载到寄存器映射表内。例如,当主机2向寄存器B发起写请求时,先通过寄存器映射表2查找寄存器B对应的地址,然后再把地址驱动到接口2上,实现对寄存器B的写操作。
但是,对于复杂的数字芯片,设计中为了达到功能控制的多选择性,常常会出现不同主机访问芯片内部的寄存器。由于不同主机的序列器(Squencer)和转换器(Adapter)不同,就导致这种场景下就无法正常使用上述的寄存器映射表。
并且,手动增加寄存器映射表。但对于复杂芯片来说,寄存器非常多,出错概率极高,工作量大;采用修改寄存器模型生成器脚本的方式来增加寄存器映射表。而这种脚本难度较大,前期准备脚本输入文件的工作量相对较多,并且会与其他模块的验证代码发生冲突,导致大量代码重构。同时,增加寄存器映射表的方式不易扩展,灵活性低。对于芯片开发过程中,会发生增加或者删除主机的修改,这种情况下寄存器模型需要修改的地方较多,无法快速收敛问题。
基于此,本申请提出一种多主机共享寄存器模型的方法,在多主机访问待测器件DUT的寄存器时,为了达到在不修改原有寄存器模型生成器脚本和寄存器模型文件的情况下,又能够兼顾到芯片***总线未来的扩展修改,以提高主机接口的扩展性。
由于在统一验证方法学(Universal Verification Methodology,UVM)的验证环境中,对寄存器操作时,调用寄存器模型需要制定序列器和转换器,而不同主机的序列器和转换器不同,本申请通过验证环境顶层调度和切换序列器(Squencer)和转换器(Adapter)的方式来实现多主机共享寄存器模型。
具体的,请参阅图4,图4是本申请实施例提供的一种多主机共享寄存器模型的方法的流程示意图;
如图4所示,该多主机共享寄存器模型的方法,包括:
步骤S41:自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;
具体的,从UVM基类uvm_object中派生得到名为register_extension的自定义类。在所述寄存器扩展类中设置一指定函数,该指定函数负责通过参数的形式在被验证环境(Environment,ENV)调用时指定序列器和转换器。其中,该寄存器扩展类中声明了序列器和扩展器,同时通过指定函数将外部的序列器和转换器传入该寄存器扩展类的对象中,例如:该指定函数为set_register_configuration函数,用于将外部的序列器和转换器传入寄存器扩展类的对象中。
步骤S42:为每一主机接口对应的序列指定对应的序列器;
具体的,请再参阅图5,图5是图4中的步骤S42的细化流程图;
如图5所示,该步骤S42:为每一主机接口对应的序列指定对应的序列器,包括:
步骤S421:确定序列基类;
具体的,自定义一个序列基类,例如:编写一个序列名为bus_base_sequence的自定义类,该序列基类作为后续派生序列的基类,并在所述序列基类中例化所述寄存器扩展类,即register_extension类,相当于为所述register_extension类生成一个对象。
步骤S422:根据所述序列基类,派生每一主机接口对应的序列;
具体的,基于所述序列基类,派生每一主机接口对应的序列,例如:派生序列1和序列2,而主机接口1对应序列1,主机接口2对应序列2。
步骤S423:根据所述序列基类的第一任务,指定每一主机接口对应的序列一一对应的序列器;
具体的,在所述序列基类的第一任务中,指定每一主机接口对应的序列一一对应的序列器(Squencer),也就是说,任何从序列基类(bus_base_sequence)派生出的序列,在使用时设置对应的序列器之后,该序列器就会被传入到寄存器模型中,从而实现不同的场景可以自由切换序列器,其中,不同的场景包括不同的主机发出不同的序列。其中,所述第一任务包括Pre-start任务,该任务为UVM方法学中的一个可回调的任务,用于代码书写者在开始启动某个激励之前添加自己的设置。
可以理解的是,序列器(sequencer)是负责事务在序列(sequence)和驱动器(driver)之间请求和响应的流控,是UVM方法学验证平台不可缺少的一个组件。每个主机想要发送自己的序列(sequence),就必须通过序列器进行传输控制,最终发送到驱动器(driver)上,驱动器会把序列(sequence)驱动到总线接口上。比如,主机要发送写数据到寄存器A的这个序列,那么需要一个序列器将这个序列发送到驱动器。
具体的,所述根据所述序列基类的第一任务,指定每一主机接口对应的序列一一对应的序列器,包括:
在所述序列基类的第一任务中,获取序列基类对应的序列器指针;
根据所述序列器指针,确定每一主机接口对应的序列一一对应的序列器。
例如:在所述序列基类的第一任务中,获取序列基类对应的序列器指针p_sequencer,根据所述序列器指针p_sequencer,确定每一主机接口对应的序列一一对应的序列器,例如:根据所述序列器指针p_sequencer,指定序列A对应的序列器为序列器A,指定序列B对应的序列器为序列器B,指定序列C对应的序列器为序列器C。
可以理解的是,每一主机发送对应的序列,必须通过序列器进行传输控制,最终发送到驱动器上,驱动器会把该序列驱动到总线接口上。
步骤S43:确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;
具体的,每一主机接口对应一个转换器,通过在验证环境顶层例化每一主机接口对应的***接口总线的转换器,并将转换器通过配置类函数的方式指定到具体的序列中,即指定到主机接口对应的序列中,例如:类函数为uvm_db_config#(T)::set(),通过在序列基类(bus_base_sequence)的第一任务(pre_start)中通过配置类函数uvm_db_config#(T)::get()从外部获得转换器。
其中,所述转换器(Adapter)用于实现寄存器模型和总线接口的桥接,例如:
第一、寄存器序列会将带有目标寄存器的相关信息存放在UVM的类uvm_reg_item实例中,送到转换器。
第二、转换器接收到uvm_reg_item实例后,从中抽取总线控制组件需要的信息,同时生成总线控制组件需要的序列事务(bus_seq_item)类型。最终转换器将序列事务送往总线控制组件。
第三、总线控制组件从序列事务(bus_seq_item)中获取地址,数据,操作模式等信息后发起总线的读写访问。
在本申请实施例中,所述方法还包括:
确定第一寄存器模型映射表,并将第一寄存器模型映射表替换源寄存器映射表。
具体的,在测试用例中采用UVM的工厂(factory)机制的函数set_type_override(),将源寄存器映射表(uvm_reg_map)用第一寄存器模型映射表(my_reg_map)进行替换,其中,第一寄存器模型映射表为自定义的寄存器映射表,相当于将源寄存器映射文件替换为自定义的寄存器映射文件。可以理解的是,所述第一寄存器模型映射表为基于源寄存器映射表扩展得出的映射表。
具体的,请再参阅图6,图6是本申请实施例提供的一种确定第一寄存器模型映射表的流程示意图;
如图6所示,所述确定第一寄存器模型映射表,包括:
步骤S601:从UVM基类中扩展得到第一寄存器映射类;
具体的,所述UVM基类为寄存器映射类,例如:所述UVM基类为UVM架构中的uvm_reg_map类,用于指定寄存器列表中各个寄存器的偏移地址、访问属性以及对应的总线,其中,所述第一寄存器映射类为对所述UVM基类进行扩展之后得到的映射类,例如:扩展得到自定义的寄存器映射类,例如:my_reg_map类。
步骤S602:通过所述第一寄存器映射类,重写读任务和写任务;
具体的,基于所述第一寄存器映射类,重写任务总线的读任务和写任务分别对应的第一任务体和第二任务体,例如:重写第一寄存器映射类(my_reg_map)中的总线写任务(do_bus_write)和总线读任务(do_bus_read)。可以理解的是,重写是指将函数或者任务的内容进行修改,而函数或者任务名称不变,在被自动调用的时候,执行的是修改内容之后的函数或者任务,以达到修改想要的效果。
例如:重写读任务和写任务,将外部寄存器访问时传入的extension参数(包含序列器和转换器)赋值给寄存器映射表中的序列器和转换器。不同参数对应着不同主机,实现不同主机对寄存器的访问。
步骤S603:将读任务和写任务的参数的成员变量指向寄存器扩展类的句柄。
具体的,从UVM基类(uvm_reg_map)中扩展得到第一寄存器映射类(my_reg_map)。在第一寄存器映射类中重写总线写任务(do_bus_write)和总线读任务(do_bus_read),将总线写任务和总线写任务的参数uvm_reg_item中的extension成员变量指向寄存器扩展类(register_extension)的句柄。
具体的,当所述寄存器扩展类被调用时,生成寄存器扩展类对象,以实现读任务和写任务中的序列器和转换器的设置。
例如:当被调用时指定具体的寄存器扩展类(register_extension)的对象时,就可以实现总线写任务(do_bus_write)和总线读任务(do_bus_read)里的序列器和转换器的设置。
步骤S44:在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。
具体的,在具体的序列中访问寄存器模型时,通过指定所述寄存器扩展类的对象,即例化所述寄存器扩展类,指定extension参数为每一个序列中例化的扩展类的形式,使得寄存器模型获取到了序列器和转换器,以对所述寄存器模型进行操作。在寄存器访问时,指定extension参数。通过所述extension参数,不同主机中的序列器和转换器得以指定到寄存器映射表,实现不同主机对寄存器的访问。
可以理解的是,调用寄存器模型需要制定序列器和转换器,而不同主机的序列器和转换器不同,通过将转换器的指定放在验证环境顶层对***接口总线的例化后,再把序列器的指定放在派生出的具体序列(squence)中,从而实现多主机共享寄存器模型。
在本申请实施例中,所述***接口总线为可以访问寄存器的接口总线,包括但不限于:AXI总线、AHB总线、APB总线、GPIO总线中的一个或多个。
请再参阅图7,图7是本申请实施例提供的一种验证环境与待测器件的示意图;
如图7所示,主机1、主机2和主机3驱动不同接口进行寄存器配置,其中,主机1对应接口1,主机2对应接口2,主机3对应接口3。
下面结合图7说明主机对寄存器的操作过程:
假设主机2和主机3对待测器件(DUT)的寄存器A进行写操作,接口2为AXI总线,接口3为AHB总线。
第一步是获取序列器。在验证环境中指定序列2为AXI总线序列器的默认序列(default_sequence),指定序列3为AHB总线序列器的默认序列,这样序列基类就获得了序列器指针,从基类扩展而来的序列2和序列3就获得了各自的序列器。
第二步是获取转换器。在验证环境顶层分别例化AXI总线和AHB总线的转换器,并指定到序列2和序列3中。
而在序列基类里已经声明了寄存器扩展类(register_extension),并将获得的序列器和转换器分配给了例化的寄存器扩展类(register_extension)的对象。即在序列2里获得了AXI总线的序列器和转换器,序列3获得了AHB总线的序列器和转换器。在序列2和序列3中执行寄存器模型写操作就可以完成寄存器A的访问。
例如:通过寄存器模型对寄存器A进行写操作。序列中对寄存器A进行写十六进制1234的操作,同时传入了register_extension参数,此时的register_extension已经被赋予了AXI或AHB总线的序列器和转换器,即指定了AXI或AHB总线的序列器和转换器。
在本申请实施例中,寄存器扩展类(register_extension)中声明了序列器和扩展器,同时通过指定函数将外部的序列器和转换器传入该寄存器扩展类的对象中,例如:通过set_register_configuration函数将外部的序列器和转换器传入该寄存器扩展类的对象中。
请再参阅图8,图8是本申请实施例提供的一种多主机共享寄存器模型的架构示意图;
如图8所示,通过转换器(Adapter)实现寄存器模型和总线接口的桥接。可以看出,如果芯片设计需要扩展或者删除主机,对原有的寄存器模型没有任何影响,并且对验证环境顶层只需要小改动就可以兼容之前开发的测试用例,也不影响后续测试用例的开发,从而提高主机的扩展性。
在本申请实施例中,每一主机发送对应的序列,通过序列器发送到对应的驱动器上,由驱动器将该序列驱动到对应的总线接口上。具体的,序列器(sequencer)是负责事务在序列(sequence)和驱动器(driver)之间请求和响应的流控,由驱动器将序列(sequence)驱动到总线接口上,例如:如图8所示,当主机发送写数据到寄存器A的序列1,那么通过对应的序列器1将该序列1发送到驱动器1,由驱动器1将该序列1驱动到接口1上。
请参阅图9,图9是本申请实施例提供的一种寄存器访问的示意图;
如图9所示,该寄存器访问的过程,包括:
自定义寄存器模型映射表,即生成第一寄存器映射表;
重写写任务、重写读任务,即重写总线写任务、总线读任务;
自定义的第一寄存器映射表替换源寄存器映射表;
自定义寄存器扩展类(register_extension);
获取主机接口对应的序列,例如:序列A、序列B,……,序列N;
例化寄存器扩展类(register_extension),得到寄存器扩展类的对象,例如:register_extensionA,register_extensionB,……,register_extensionN;
为每一寄存器扩展类的对象指定序列器,例如:为register_extension A指定序列器A,为register_extensionB指定序列器B,……,为register_extensionN指定序列器N;
为每一寄存器扩展类的对象指定转换器,例如:为register_extension A指定转换器A,为register_extension B指定转换器B,……,为register_extension N指定转换器N;
指定寄存器扩展类的对象,实现寄存器访问。
在本申请实施例中,通过提供一种多主机共享寄存器模型的方法,包括:自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。通过自定义寄存器扩展类,为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对寄存器模型进行操作,本申请实施例能够实现多主机共享同一寄存器模型,并且,能够通过简单修改,可实现任意扩展或删除不同的主机接口,从而提高主机接口的扩展性。
请参阅图10,图10是本申请实施例提供的一种多主机共享寄存器模型的装置的结构示意图;
如图10所示,该多主机共享寄存器模型的装置100,包括:
寄存器扩展类模块101,用于自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;
序列器模块102,用于为每一主机接口对应的序列指定对应的序列器;
转换器模块103,用于确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;
寄存器模型模块104,用于在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。
需要说明的是,上述的多主机共享寄存器模型的装置可执行本申请实施例所提供的多主机共享寄存器模型的方法,具备执行方法相应的功能模块和有益效果。未在装置实施例中详尽描述的技术细节,可参见本申请实施例所提供的多主机共享寄存器模型的方法。
在本申请实施例中,通过提供一种多主机共享寄存器模型的装置,包括:寄存器扩展类模块,用于自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;序列器模块,用于为每一主机接口对应的序列指定对应的序列器;转换器模块,用于确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;寄存器模型模块,用于在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。通过自定义寄存器扩展类,为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对寄存器模型进行操作,本申请实施例能够提高主机接口的扩展性。
请参阅图11,图11是本申请实施例提供的一种电子设备的结构示意图;
如图11所示,该电子设备110包括一个或多个处理器111以及存储器112。其中,图11中以一个处理器111为例。
处理器111和存储器112可以通过总线或者其他方式连接,图11中以通过总线连接为例。
存储器112作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的一种多主机共享寄存器模型的方法对应的单元(例如,图10所述的各个模块或单元)。处理器111通过运行存储在存储器112中的非易失性软件程序、指令以及模块,从而执行多主机共享寄存器模型的方法的各种功能应用以及数据处理,即实现上述方法实施例以及上述装置实施例的各个模块和单元的功能。其中,该多主机共享寄存器模型的方法可由各种具有一定逻辑处理能力的电子设备执行,如控制芯片等。
存储器112可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器112可选包括相对于处理器111远程设置的存储器,这些远程存储器可以通过网络连接至处理器111。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述模块存储在所述存储器112中,当被所述一个或者多个处理器111执行时,执行上述任意方法实施例中的多主机共享寄存器模型的方法,包括:自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作。
在本申请实施例中,通过自定义寄存器扩展类,为每一主机接口对应的序列指定对应的序列器;确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对寄存器模型进行操作,本申请实施例能够提高主机接口的扩展性。
本申请实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如上述一个或多个处理器可执行上述任意方法实施例中的多主机共享存储器模型的方法,例如,执行以上方法中描述的各个步骤。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (7)
1.一种多主机共享寄存器模型的方法,其特征在于,包括:
自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;
为每一主机接口对应的序列指定对应的序列器;
确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;
在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作;
所述方法还包括:
确定第一寄存器模型映射表,并将第一寄存器模型映射表替换源寄存器映射表;
所述确定第一寄存器模型映射表,包括:
从UVM基类中扩展得到第一寄存器映射类;
通过所述第一寄存器映射类,重写读任务和写任务;
将读任务和写任务的参数的成员变量指向寄存器扩展类的句柄;
当所述寄存器扩展类被调用时,生成寄存器扩展类对象,以实现读任务和写任务中的序列器和转换器的设置。
2.根据权利要求1所述的方法,其特征在于,所述为每一主机接口对应的序列指定对应的序列器,包括:
确定序列基类;
根据所述序列基类,派生每一主机接口对应的序列;
根据所述序列基类的第一任务,指定每一主机接口对应的序列一一对应的序列器,其中,所述第一任务包括Pre-start任务,所述Pre-start任务为UVM方法学中的一个可回调的任务。
3.根据权利要求2所述的方法,其特征在于,所述根据所述序列基类的第一任务,指定每一主机接口对应的序列一一对应的序列器,包括:
在所述序列基类的第一任务中,获取序列基类对应的序列器指针;
根据所述序列器指针,确定每一主机接口对应的序列一一对应的序列器。
4.根据权利要求1所述的方法,其特征在于,所述确定每一主机接口对应的***接口总线的转换器,包括:
在验证环境顶层例化每一主机接口对应的***接口总线的转换器。
5.根据权利要求1-4任一项所述的方法,其特征在于,每一主机发送对应的序列,通过序列器发送到对应的驱动器上,由驱动器将该序列驱动到对应的总线接口上。
6.一种多主机共享寄存器模型的装置,其特征在于,包括:
寄存器扩展类模块,用于自定义寄存器扩展类,其中,所述寄存器扩展类包括指定函数,所述指定函数用于被验证环境调用时,以参数的形式指定序列器和转换器;
序列器模块,用于为每一主机接口对应的序列指定对应的序列器;
转换器模块,用于确定每一主机接口对应的***接口总线的转换器,并将每一转换器指定到该主机接口对应的序列;
寄存器模型模块,用于在每一主机接口对应的序列访问寄存器模型时,指定所述寄存器扩展类的对象,并确定每一主机接口对应的序列器和转换器,以对所述寄存器模型进行操作;
所述寄存器扩展类模块,还用于:
确定第一寄存器模型映射表,并将第一寄存器模型映射表替换源寄存器映射表;
所述确定第一寄存器模型映射表,包括:
从UVM基类中扩展得到第一寄存器映射类;
通过所述第一寄存器映射类,重写读任务和写任务;
将读任务和写任务的参数的成员变量指向寄存器扩展类的句柄;
当所述寄存器扩展类被调用时,生成寄存器扩展类对象,以实现读任务和写任务中的序列器和转换器的设置。
7.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够用于执行如权利要求1-5中任一项所述的多主机共享寄存器模型的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111154304.XA CN113835757B (zh) | 2021-09-29 | 2021-09-29 | 多主机共享寄存器模型的方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111154304.XA CN113835757B (zh) | 2021-09-29 | 2021-09-29 | 多主机共享寄存器模型的方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113835757A CN113835757A (zh) | 2021-12-24 |
CN113835757B true CN113835757B (zh) | 2023-08-15 |
Family
ID=78967584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111154304.XA Active CN113835757B (zh) | 2021-09-29 | 2021-09-29 | 多主机共享寄存器模型的方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113835757B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118093064A (zh) * | 2024-04-22 | 2024-05-28 | 深圳市楠菲微电子有限公司 | 一种Model组件及使用Model组件同步Sequence的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5140687A (en) * | 1985-10-22 | 1992-08-18 | Texas Instruments Incorporated | Data processing apparatus with self-emulation capability |
DE102009019442A1 (de) * | 2009-02-25 | 2010-09-23 | Siemens Aktiengesellschaft | Testdatengenerator |
CN105190561A (zh) * | 2013-03-13 | 2015-12-23 | 高通股份有限公司 | 双主机嵌入式共享装置控制器 |
CN109684681A (zh) * | 2018-12-06 | 2019-04-26 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 应用uvm验证平台的高层次化验证方法 |
CN112131829A (zh) * | 2020-09-18 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种芯片寄存器的验证方法、***及相关装置 |
CN112286746A (zh) * | 2020-10-31 | 2021-01-29 | 拓维电子科技(上海)有限公司 | 针对axi从设备接口的通用验证平台及方法 |
CN112417797A (zh) * | 2020-11-27 | 2021-02-26 | 海光信息技术股份有限公司 | 寄存器配置同步方法、验证平台***及配置方法、装置 |
CN113076227A (zh) * | 2021-04-28 | 2021-07-06 | 深圳市汇春科技股份有限公司 | Mcu验证方法、***和终端设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10108417B2 (en) * | 2015-08-14 | 2018-10-23 | Qualcomm Incorporated | Storing narrow produced values for instruction operands directly in a register map in an out-of-order processor |
-
2021
- 2021-09-29 CN CN202111154304.XA patent/CN113835757B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5140687A (en) * | 1985-10-22 | 1992-08-18 | Texas Instruments Incorporated | Data processing apparatus with self-emulation capability |
DE102009019442A1 (de) * | 2009-02-25 | 2010-09-23 | Siemens Aktiengesellschaft | Testdatengenerator |
CN105190561A (zh) * | 2013-03-13 | 2015-12-23 | 高通股份有限公司 | 双主机嵌入式共享装置控制器 |
CN109684681A (zh) * | 2018-12-06 | 2019-04-26 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 应用uvm验证平台的高层次化验证方法 |
CN112131829A (zh) * | 2020-09-18 | 2020-12-25 | 山东云海国创云计算装备产业创新中心有限公司 | 一种芯片寄存器的验证方法、***及相关装置 |
CN112286746A (zh) * | 2020-10-31 | 2021-01-29 | 拓维电子科技(上海)有限公司 | 针对axi从设备接口的通用验证平台及方法 |
CN112417797A (zh) * | 2020-11-27 | 2021-02-26 | 海光信息技术股份有限公司 | 寄存器配置同步方法、验证平台***及配置方法、装置 |
CN113076227A (zh) * | 2021-04-28 | 2021-07-06 | 深圳市汇春科技股份有限公司 | Mcu验证方法、***和终端设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113835757A (zh) | 2021-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102428317B1 (ko) | Fpga 기반 가속화를 위한 새로운 ssd 구조 | |
US7743189B2 (en) | PCI function south-side data management | |
CN113904938B (zh) | 一种动态配置PCIe终端设备的***和方法 | |
US9720703B2 (en) | Data driven hardware chips initialization via hardware procedure framework | |
CN112131829A (zh) | 一种芯片寄存器的验证方法、***及相关装置 | |
US20070055911A1 (en) | A Method and System for Automatically Generating a Test-Case | |
JP4157771B2 (ja) | 組込み制御環境におけるリモート入出力機能への効率的なアクセスのための方法およびシステム | |
CN109471668B (zh) | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 | |
CN111858296B (zh) | 接口测试方法、装置、设备和存储介质 | |
CN113835757B (zh) | 多主机共享寄存器模型的方法、装置及电子设备 | |
CN114153779A (zh) | 一种i2c通信方法、***、设备、及存储介质 | |
US20170139726A1 (en) | Serial device emulator using two memory levels with dynamic and configurable response | |
US20240126567A1 (en) | Data processing system, method, and apparatus | |
CN111857839B (zh) | 一种基于Linux的PXI/PXIe总线设备驱动*** | |
CN110765060B (zh) | Mdio总线到并行总线转换方法及装置、设备、介质 | |
US7519719B2 (en) | Automatic creation of protocol dependent control path for instrument application | |
CN110327626B (zh) | 虚拟服务器创建方法及装置 | |
CN116627496B (zh) | 基于uvm的寄存器模型构建、验证方法、***与电子设备 | |
CN114461296B (zh) | 基于Openresty的服务平台开发及访问方法 | |
CN117851276A (zh) | 一种模拟外设的内存配置方法及装置 | |
KR20030053675A (ko) | 시스템 소프트웨어 시험을 위한 하드웨어 어드레스 맵에뮬레이트 방법 | |
CN114880213A (zh) | 网页界面测试方法、装置、存储介质与电子设备 | |
CN114579189A (zh) | 单核以及多核访问寄存器数据的方法、处理器和*** | |
CN118151860A (zh) | 虚拟硬盘的硬盘符确定方法、装置、计算机设备及存储介质 | |
CN117493192A (zh) | 一种基于qemu的半实物仿真方法及平台 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |