掌桥专利:专业的专利平台
掌桥专利
首页

一种接口注册方法、接口引用方法及相关设备

文献发布时间:2023-06-19 13:45:04


一种接口注册方法、接口引用方法及相关设备

技术领域

本发明实施例涉及集成电路测试技术领域,具体涉及一种接口注册方法、接口引用方法及相关设备。

背景技术

在集成电路的设计验证领域,通常会将接口(interface)绑定(bind)或例化到设计模块中形成接口实例,并通过接口实例来实现对设计模块信号的驱动和采样。而为了保证验证平台的可复用性,验证平台不会直接引用例化在设计模块中的接口实例,而是将接口实例注册到设定组件中,以便通过虚拟接口去引用该接口实例。但是,现有技术中的注册效率较低,不利于接口的应用。

发明内容

有鉴于此,本发明实施例提供了一种接口注册方法、接口引用方法及相关设备,以提升接口注册效率。

为解决上述问题,本发明实施例提供如下技术方案:

本发明一方面,提供了一种接口注册方法,包括:

获取目标接口的接口信息;

根据所述接口信息,为所述目标接口定义接口代理模块;

例化所述目标接口至所述接口代理模块,以在所述接口代理模块中形成所述目标接口的接口实例;

例化所述接口代理模块至目标设计模块;

获取所述接口代理模块的例化路径;

将所述例化路径和所述接口实例注册到预设组件中。

本发明第二方面,提供了一种接口引用方法,包括:

接收接口引用请求,所述引用请求至少包括目标接口的接口实例的索引信息,所述索引信息至少包括具有所述目标接口的接口实例的接口代理模块的例化路径;

基于所述索引信息,从预设组件中获取所述目标接口的接口实例;

通过虚拟接口引用所述目标接口的接口实例。

本发明第三方面,提供了一种接口注册系统,包括:

信息获取单元,用于获取目标接口的接口信息;

代理单元,用于根据所述接口信息,为所述目标接口定义接口代理模块;

第一例化单元,用于例化所述目标接口至所述接口代理模块,以在所述接口代理模块中形成所述目标接口的接口实例;

第二例化单元,用于例化所述接口代理模块至目标设计模块;

路径获取单元,用于获取所述接口代理模块的例化路径;

注册单元,用于将所述例化路径和所述接口实例注册到预设组件中。

本发明第四方面,提供了一种接口引用系统,包括:

接收单元,用于接收接口引用请求,所述引用请求至少包括目标接口的接口实例的索引信息,所述索引信息至少包括具有所述目标接口的接口实例的接口代理模块的例化路径;

接口获取单元,用于基于所述索引信息,从预设组件中获取所述目标接口的接口实例;

引用单元,用于通过虚拟接口引用所述目标接口的接口实例。

本发明第五方面,提供了一种计算机设备,包括:

存储器,存储至少一组指令;

处理器,执行所述至少一组指令进行如上任一项所述的接口注册方法,或者如上任一项所述的接口引用方法。

本发明第六方面,提供了一种可读存储介质,其中,所述可读存储介质存储至少一组指令,所述至少一组指令用于使处理器执行如上任一项所述的接口注册方法,或者如上任一项所述的接口引用方法。

本发明实施例提供的接口注册方法、接口引用方法及相关设备,为目标接口定义接口代理模块,并通过将目标接口例化至接口代理模块,以及,将接口代理模块例化至目标设计模块,来将接口实例例化到目标设计模块中。由于接口实例是通过接口代理模块例化到目标设计模块中的,因此,可以通过接口代理模块的例化路径来唯一定位接口实例,从而可以通过自动获取接口代理模块的例化路径,并基于该例化路径,自动完成接口实例的注册,来提升接口注册效率,简化接口注册流程。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为一种验证平台和设计模块之间通信关系的示意图;

图2为本发明一个实施例提供的接口注册方法的流程图;

图3为本发明另一个实施例提供的接口引用方法的流程图;

图4为本发明一个实施例提供的接口注册系统的结构示意图;

图5为本发明一个实施例提供的接口引用系统的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

采用硬件描述语言,如System Verilog语言,实现集成电路设计之后,会使用System Verilog语言搭建验证平台,并编写测试用例(test case),对设计模块进行仿真测试,以验证设计模块的功能是否与预期的功能一致。

在集成电路的验证中,通常采用接口(interface)实现验证环境与设计模块的连接通信、以及封装设计模块之间的连接通信,以简化和降低设计的维护成本。目前,通常将接口绑定(bind)或例化到设计模块中形成接口实例,实现对设计模块信号的驱动和采样。

而基于UVM(Universal Verification Methodology,通用验证方法学)进行开发的验证平台中,参考图1,为了保证验证平台的可复用性,不会直接去引用在设计模块中的接口实例,而是在运行时,通过验证平台组件动态的设定虚拟接口(virtual interface)的值,以通过虚拟接口去引用设计模块中的接口实例。而通过虚拟接口去引用设计模块中的接口实例之前,需要将接口实例以虚拟接口变量的形式注册/存储到验证平台的设定组件中,以便验证平台通过前述组件获取接口实例,从而设定验证平台中的虚拟接口。

以接口axi4_if和设计模块pcie为例进行说明。可以通过如下语句将接口axi4_if绑定到设计模块pcie:

bind pcie axi4_if i_axi4_if(aclk,areset,arvalid,awvalid);

按照SystemVerilog的标准,接口axi4_if将会以i_axi4_if的名称例化到每一个设计模块pcie所例化的位置,即,会在每一个设计模块pcie中形成名称为i_axi4_if的接口实例。

假设验证平台包括两个设计模块pcie,名称分别为tb.pcie0和tb.pcie1,则接口实例i_axi4_if的路径包含tb.pcie0.i_axi4_if和tb.pcie1.i_axi4_if。

基于此,需要通过如下语句将路径和接口实例注册到uvm_resource_db中:

uvm_resource_db#(virtual interface axi4_if)::set(“interfaces”,”top.pcie0.i_axi4_if”,top.pcie0.i_axi4_if);

uvm_resource_db#(virtual interface axi4_if)::set(“interfaces”,”top.pcie1.i_axi4_if”,top.pcie1.i_axi4_if);

之后,可以通过下列语句完成对虚拟接口的访问:

typedef virtual interface axi4_if AXI4_VIF;//声明接收虚拟接口的变量

AXI4_VIF axi;

uvm_resource_db#(AXI4_VIF)::read_by_name(“intefaces”,”top.pcie0.i_axi4_if”,axi);

但是,目前大多是通过手动指定路径的方式,来完成的接口实例的注册。如,手动指定路径tb.pcie0.i_axi4_if和tb.pcie1.i_axi4_if,但是,当接口数量及种类较多时,手动指定路径的方式,会导致注册效率较低,容易出错,不利于接口的应用。

基于此,本发明实施例提供了一种接口注册方法、接口引用方法及相关设备,以解决上述问题,其中接口注册方法包括:

获取目标接口的接口信息;根据接口信息,为目标接口定义接口代理模块;例化目标接口至接口代理模块,以在接口代理模块中形成目标接口的接口实例;例化接口代理模块至目标设计模块;获取接口代理模块的例化路径;将例化路径和接口实例注册到预设组件中。

本发明实施例中,通过将目标接口例化至接口代理模块,以及,将接口代理模块例化至目标设计模块,来将接口实例例化到目标设计模块中。由于接口实例是通过接口代理模块例化到目标设计模块中的,因此,可以通过接口代理模块的例化路径唯一定位到接口实例,从而可以通过自动获取接口代理模块的例化路径,并基于该例化路径,自动完成接口实例的注册,来提升接口注册效率,简化接口注册流程。

作为本发明实施例公开内容的一种可选实现,本发明一个实施例提供了一种接口注册方法,参考图2所示的接口注册方法的流程图,该接口注册方法包括:

S201:获取目标接口的接口信息;

对目标接口进行例化和注册之前,需要先获取目标接口的接口信息,该接口信息包括目标接口的类型等。

S202:根据接口信息,为目标接口定义接口代理模块;

获取目标接口的接口信息之后,根据目标接口的接口信息为其定义接口代理模块,以利用该接口代理模块代理该目标接口。本发明一些实施例中,接口代理模块可以由module模块实现,当然,本发明并不仅限于此,在另一些实施例中,还可以采用其他模块实现,在此不再赘述。

S203:例化目标接口至接口代理模块,以在接口代理模块中形成目标接口的接口实例;

其中,接口代理模块包括少量的代码,其可以例化其代理的接口。也就是说,为目标接口定义接口代理模块之后,目标接口会被例化至接口代理模块中,并在接口代理模块中形成该目标接口的接口实例。

本发明一些实施例中,接口代理模块不仅可以例化其代理的接口,还可以将其所有的端口与其代理的目标接口的所有端口连接,但需要保证接口代理模块与目标接口的端口一致。

也就是说,本发明一些实施例中,例化目标接口至接口代理模块包括:例化目标接口至接口代理模块,并将目标接口的端口与接口代理模块的端口对应连接。其中,目标接口的端口与接口代理模块的端口定义一致。如此,接口代理模块的端口就与其代理的目标接口完全一致,可以让验证环境平滑的从例化接口迁移到例化接口代理模块。

其中,可以在为目标接口定义接口代理模块时,对目标接口的端口和接口代理模块的端口进行定义,以使目标接口的端口与接口代理模块的端口定义一致,以使目标设计模块的端口能够通过接口代理模块的端口与目标接口的接口实例的端口直接连接,以便于接口实例直接驱动或采样目标设计模块的信号。

S204:例化接口代理模块至目标设计模块;

在接口代理模块中形成接口实例之后,将接口代理模块例化至目标设计模块中,接口代理模块会在目标设计模块所例化的位置形成代理模块实例,该代理模块实例包括目标接口的接口实例。也就是说,将具有目标接口的接口实例的接口代理模块例化至目标设计模块之后,目标设计模块就具有该目标接口的接口实例,从而可以通过该目标接口的接口实例实现对目标设计模块信号的驱动和采样。

S205:获取接口代理模块的例化路径;

本发明实施例中,每个接口代理模块仅代理一个目标接口,即每个接口代理模块中仅具有一个目标接口的接口实例,因此,根据接口代理模块的例化路径找到接口代理模块之后,即可通过接口代理模块找到目标接口的接口实例。

由于接口实例是通过接口代理模块例化到目标设计模块中的,因此,可以通过接口代理模块的例化路径唯一定位到接口实例,从而可以通过自动获取接口代理模块的例化路径,并基于该例化路径,自动完成接口实例的注册,来提升接口注册效率,简化接口注册流程。

其中,可以通过路径获取指令,自动获取接口代理模块的例化路径。如,通过路径获取指令自动获取接口代理模块的层次关系和各层结构的名称,并根据层次关系和各层结构的名称,得到接口代理模块的例化路径。其中,路径获取指令包括层次名获取指令。

即,本发明的一些实施例中,获取接口代理模块的例化路径包括:通过层次名获取指令,获取接口代理模块的层次关系以及各层结构的名称;根据层次关系以及各层结构的名称,得到接口代理模块的层次化路径即例化路径。

此外,路径获取指令还包括格式调整函数,以通过格式调整函数根据层次关系以及各层结构的名称,得到接口代理模块的例化路径。其中,层次名获取指令可以为%m指令。格式调整函数可以为$sformat函数,当然,本发明并不仅限于此,在另一些实施例中,格式调整函数还可以为$psprintf函数及$sformat函数等。

本发明一些实施例中,可以在接口代理模块的initial语句中设定层次名获取指令和格式调整函数,以通过层次名获取指令和格式调整函数,自动获取接口代理模块的例化路径。此外,本发明一些实施例中,还可以在接口代理模块的initial语句中设定注册指令,以在获取接口代理模块的例化路径之后,通过注册指令,自动将例化路径注册到预设组件中。当然,本发明并不仅限于此,在另一些实施例中,还可以在接口代理模块的其他语句中设定层次名获取指令和格式调整函数,在此不再赘述。

S206:将例化路径和接口实例注册到预设组件中。

获取接口代理模块的例化路径之后,即可将例化路径赋值给第一变量,将目标接口的接口实例赋值给第一虚拟接口变量,并将第一变量及第一虚拟接口变量添加到预设组件中,存储为第一变量和第一虚拟接口变量的对应关系,即存储为目标接口的接口实例与例化路径的对应关系,以便通过该例化路径索引到该目标接口的接口实例。

由于通过路径获取指令获取的是接口代理模块的唯一层次化路径即唯一例化路径,因此,以该例化路径为键值将目标接口的接口实例注册到预设组件中,可以建立例化路径与目标接口的接口实例的对应关系,且由于例化路径是唯一的不重复的,因此,以例化路径为索引,可以从预设组件中检索到目标接口的接口实例,以便引用该目标接口的接口实例。

本发明一些实施例中,预设组件为uvm_resource_db,即,可以通过将第一变量和第一虚拟接口变量添加到uvm_resource_db中,来将目标接口的接口实例注册到uvm_resource_db中。当然,本发明并不仅限于此,在另一些实施例中,预设组件也可以是其他兼容的组件,如哈希数据结构的组件等。

需要说明的是,uvm_resource_db是UVM中的一个类,可以按照不同的键值存放不同的对象或值。也就是说,uvm_resource_db本质是一个存储组件,以路径为索引,可以将任意类型的变量或接口等存储起来。之后,还可以通过以路径为索引的方法,将uvm_resource_db存储的变量或接口等取出来使用。

下面以目标接口axi4_if为例,对注册流程进行说明。

首先,为目标接口axi4_if定义接口代理模块axi4_if_w;

`define AXI4_IF_PORTS input clk,areset,inout arvalid,inout arready

//将端口定义为一个宏,以便在接口代理模块axi4_if_w及目标接口axi4_if中使用,实现二者端口定义一致;

interface axi4_if(`AXI4_IF_PORTS);

//axi4_if目标接口实现;

endinterface

//此处定义接口代理模块axi4_if_w,接口代理模块axi4_if_w的端口与目标接口axi4_if一致;

interface axi4_if_w(`AXI4_IF_PORTS);

axi4_if body(.*);//此处定义例化目标接口axi4_if至接口代理模块axi4_if_w,并将目标接口axi4_if的端口与接口代理模块axi4_if_w的端口对应连接;

initial begin

string path=$sformatf(“%m”);//此处定义获取接口代理模块axi4_if_w的例化路径;

uvm_resource_db#(virtual interface axi4_if)::set(“interfaces”,path,body);//此处定义将第一变量path所引用的例化路径和接口实例body添加到uvm_resource_db中;

end

endinterface

通过如下语句bind pcie axi4_if_w i_axi4_if(aclk,areset,arvalid,arready),将上述定义好的接口代理模块axi4_if_w以普通接口的绑定(bind)到目标设计模块pcie之后,目标接口axi4_if将会例化至接口代理模块axi4_if_w,接口代理模块axi4_if_w将会以i_axi4_if的名称例化至目标设计模块pcie,从而可以在仿真过程中通过$sformatf(“%m”)自动获取接口代理模块axi4_if_w的层次化路径即例化路径,通过uvm_resource_db#(virtual interfaceaxi4_if)::set(“interfaces”,path,body)自动完成注册。

假设验证平台包括两个设计模块pcie,名称分别为tb.pcie0和tb.pcie1,则path=top.pcie0.i_axi4_if或top.pcie1.i_axi4_if。在uvm_resource_db中将包含2个记录,分别为:{“top.pcie0.i_axi4_if”=>top.pcie0.i_axi4_if.body}及{“top.pcie1.i_axi4_if”=>top.pcie1.i_axi4_if.body}.

作为本发明实施例公开内容的另一种可选实现,本发明另一个实施例提供了一种接口引用方法,参考图3所示的接口引用方法的流程图,该接口引用方法包括:

S301:接收接口引用请求,引用请求至少包括目标接口的接口实例的索引信息,索引信息至少包括具有目标接口的接口实例的接口代理模块的例化路径;

S302:基于索引信息,从预设组件中获取目标接口的接口实例;

S303:通过虚拟接口引用目标接口的接口实例。

将接口代理模块的例化路径和目标接口的接口实例注册到预设组件之后,以接口代理模块的例化路径为索引信息,从预设组件中获取目标接口的接口实例,并通过虚拟接口引用该目标接口的接口实例。

本发明一些实施例中,预设组件为uvm_resource_db,则可以直接通过uvm_resource_db的访问函数来访问该虚拟接口:

typedef virtual interface axi4_if AXI4_VIF;

AXI4_VIF axi;

uvm_resource_db#(AXI4_VIF)::read_by_names(“interfaces”,”top.pcie0.i_axi4_if”,axi);

上述实施例中,通过给出注册到uvm_resource_db中的记录的同样的索引值:如“top.pcie0.i_axi4_if”,就可以获得对应的目标接口的接口实例,并将其赋值给指定的虚拟接口变量axi,即可通过虚拟接口引用该目标接口的接口实例。

本发明一些实施例中,索引信息包括第一变量,第一变量的值为具有目标接口的接口实例的接口代理模块的例化路径;则基于索引信息,从预设组件中获取目标接口的接口实例包括:

基于索引信息中的第一变量以及第一变量和第一虚拟接口变量的对应关系,获得第一虚拟接口变量;

根据第一虚拟接口变量,获得目标接口的接口实例。

获得目标接口的接口实例之后,将目标接口的接口实例赋值给指定的虚拟接口变量即第二虚拟接口变量,验证平台即可通过第二虚拟接口变量对应的虚拟接口引用该目标接口的接口实例,以驱动或采样对应的目标接口的信号值。

作为本发明实施例公开内容的另一种可选实现,本发明另一个实施例提供了一种接口注册系统,参考图4所示的接口注册系统的结构图,该接口注册系统包括:

信息获取单元40,用于获取目标接口的接口信息;

代理单元41,用于根据接口信息,为目标接口定义接口代理模块;

第一例化单元42,用于例化目标接口至接口代理模块,以在接口代理模块中形成目标接口的接口实例;

第二例化单元43,用于例化接口代理模块至目标设计模块;

路径获取单元44,用于获取接口代理模块的例化路径;

注册单元45,用于将例化路径和接口实例注册到预设组件中。

本发明一些实施例中,第一例化单元42还用于将目标接口的端口与接口代理模块的端口对应连接;其中,目标接口的端口与接口代理模块的端口定义一致。

在上述任一实施例的基础上,本发明一些实施例中,路径获取单元44获取接口代理模块的例化路径包括:通过层次名获取指令,获取接口代理模块的层次关系以及各层结构的名称;根据层次关系以及各层结构的名称,得到接口代理模块的例化路径。

在上述任一实施例的基础上,本发明一些实施例中,所述注册单元45将所述例化路径和所述接口实例注册到预设组件中包括:将所述例化路径赋值给第一变量,将所述接口实例赋值给第一虚拟接口变量,并将所述第一变量和所述第一虚拟接口变量注册到预设组件中。

作为本发明实施例公开内容的另一种可选实现,本发明另一个实施例提供了一种接口引用系统,参考图5所示的接口引用系统的结构图,该接口引用系统包括:

接收单元50,用于接收接口引用请求,所述引用请求至少包括目标接口的接口实例的索引信息,所述索引信息至少包括具有所述目标接口的接口实例的接口代理模块的例化路径;

接口获取单元51,用于基于所述索引信息,从预设组件中获取所述目标接口的接口实例;

引用单元52,用于通过虚拟接口引用所述目标接口的接口实例。

本发明实施例中,索引信息包括第一变量,第一变量的值为具有目标接口的接口实例的接口代理模块的例化路径;则接口获取单元51基于索引信息,从预设组件中获取目标接口的接口实例包括:

基于索引信息中的第一变量以及第一变量和第一虚拟接口变量的对应关系,获得第一虚拟接口变量;

根据第一虚拟接口变量,获得目标接口的接口实例。

作为本发明实施例公开内容的另一种可选实现,本发明另一个实施例提供了一种计算机设备,该计算机设备包括:

存储器,存储至少一组指令;

处理器,执行至少一组指令进行如上任一实施例提供接口注册方法,或者如上任一实施例提供的接口引用方法。

作为本发明实施例公开内容的另一种可选实现,本发明另一个实施例提供了一种可读存储介质,该可读存储介质存储至少一组指令,至少一组指令用于使处理器执行如上任一实施例提供接口注册方法,或者如上任一实施例提供的接口引用方法。

本发明实施例的可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是主机可读指令、数据结构、程序的模块或其他数据。主机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术分类

06120113792110