基于SV和UVM实现AHBVIP的方法、电子装置及存储介质与流程

专利2022-05-09  89


〖技术领域〗

本发明属于半导体集成电路技术领域,具体涉及一种使用systemverilog和uvm实现ahbvip的方法及相应的电子装置及存储介质。



背景技术:

目前ahb(advancedhigh-performancebus)总线接口协议已经在soc(片上系统)、mcu(微控制器)、dsp(数字信号处理器)等芯片的设计领域广泛使用。ahb总线接口协议是一种高性能可综合的片内总线协议,该协议是amba(advancedmicrocontrollerbusarchitecture)4.0/5.0协议的重要的组成部分,能满足高性能和复杂芯片系统的数据传输与寄存器配置的需求。

芯片验证是芯片研发的重要环节之一,由于ahb总线在现代芯片中的广泛使用,所以非常多的验证场景都要面向ahb总线协议收发数据。此时,能够在行为级抽象简化且在信号级精确模拟ahb协议收发数据信息的装置就叫ahbvip(verificationintellectualproperty)。

针对ahb总线接口验证收发数据,早期就有基于各种语言(如e语言、c/c 等)和验证方法学(如vmm、ovm等)的vip,有的甚至直接采用verilog模块,但都有其固有的缺点。随着sv(systemverilog)和通用验证方法学(uvm,universalverificationmethodology)的发展和广泛使用,各大eda厂商都推出了基于sv&uvm的ahbvip。

各大eda厂商通过其商业模式推广其ahbvip,并得到了广泛应用。但是工具厂商的ahbvip对用户只开放一些类的成员(members)和方法(methods)的简要介绍,其内部核心的实现通常是基于c语言并且加密的,用户只能使用其提供的回调(callback)函数对vip的行为和状态做一些配置和调试。当遇到复杂问题需要调试时,用户无法在一次“编译>>仿真”过程中在辅助工具里精准定位故障点,通常需要多次迭代“修改>>增减回调函数>>编译>>仿真>>查看打印信息或波形”的过程才能定位到故障点。

eda厂商提供的ahbvip通常是直接将各uvm组件如sequence和component的成员、方法以及各传输阶段(通常是周期级)的底层回调函数开放给用户。这不仅要求用户对ahb协议非常熟悉,还要求用户对vip(verificationintellectualproperty)的架构以及vip的回调函数对应的传输阶段非常熟悉,不仅给用户带来了很高的学习曲线,也使减低了调试效率。

此外,可能是由于使用c语言作为vip的内核的原因,某些芯片eda工具厂商提供的ahbvip无法很好的实现用户定义的时序相关约束的解约束。这一点在其用户手册中也明确注明其在某些无法解约束(约束不一定冲突)的情况时会忽略某些用户设定的时序约束,并且按照最宽松的约束条件去解约束,且不会在仿真记录文件(log)中提示。并且,由于内核加密的原因,用户无法知道其内部解约束的顺序,两大缺陷使得用户在测试一些极端时序时,需要尝试多次调试,严重降低了验证效率。



技术实现要素:

本发明目的是提供一种基于sv和uvm实现ahbvip的方法、电子装置及存储介质,可模拟主机、从机及多重选择器,并可前后门访问。本发明由以下技术方案实现:

一种基于sv和uvm实现ahbvip的方法,其特征在于,包括:

在vip的环境组件中声明主机代理或从机代理、vip配置组件句柄,监视器句柄,并声明一个虚拟的接口句柄;在uvm的建立相位中,配置环境组件从vip外部获取vip的配置组件对象以及接口句柄,实例化监视器对象,并且根据配置组件对象的配置选择实例化主机代理或者从机代理,将获得的配置组件句柄和接口句柄传递给主机代理或从机代理;

在主机代理或从机代理中声明监视器、序列发生器、相应协议驱动组件、vip配置组件和虚拟的接口句柄;在uvm的建立相位中,实例化序列发生器、主机或从机协议驱动组件的对象;将从环境组件中获得的vip配置组件句柄传递给序列发生器、相应协议驱动组件和监视器;将获得的接口句柄传递给相应协议驱动组件和监视器;在uvm的链接相位中通过tlm机制连接相应协议驱动组件和序列发生器;

在所述序列发生器中使用关联数组创建一片存储空间,并对此存储空间创建后门读、写函数;

将所述监视器配置为根据vip配置组件的信息得知当前vip模拟的是主机还是从机、以及是否模拟多重选择器的功能,从而根据ahb-vip协议规定的相应时序,捕获接口信号中的地址、数据、触发类型、触发大小、响应类型等信息,并且将这些信息转换成ahb-vip的事务对象,并将事务对象发送到tlm接口上,提供给验证环境中其他的组件调用。

作为进一步的技术方案,所述序列发生器中还预定义一个vip配置组件句柄转换函数,以便资深用户可以在任意序列中实时更改vip的配置。

作为具体的技术方案,所述相应协议驱动组件为主机协议驱动组件时,其被配置为包含事物获取任务块、命令驱动任务快、读写数据任务块;事物获取任务块从序列发生器中获取事务,然后传递给命令驱动任务块;命令驱动任务块根据vip配置组件的信息选择是否模拟多次选择器的功能,并根据ahb协议的时序要求将事务转换为相应的ahb信号驱动到信号接口上;对于写操作,读写数据任务块将事务中的写数据根据协议规定的时序驱动到信号接口上;对于读操作,读写数据任务块按照协议的时序要求采集接口上的读数据并封装进事务里,然后将事务作为反馈型事务返回给序列发生器,序列发生器最终将反馈型事务返回给验证环境中的序列。

作为具体的技术方案,所述相应协议驱动组件为从机协议驱动组件时,其被配置为包含命令采集任务块、写数据采集任务块、读数据驱动任务块;命令采集任务块根据接口上的信号,将命令信息封装进事务中,并且传递给序列库中预设的从机序列;在预设的从机序列中,如果是读命令的事务,预设的序列会根据ahb协议,从存储空间获取数据,封装进事务中并发送回从机协议驱动组件;写数据采集任务块根据接口上的信号,将写数据信息封装进事务中,再将事务中的写数据根据ahb协议写入到存储空间内;读数据驱动块根据ahb协议将事务中的读数据驱动到接口信号上。

作为具体的技术方案,所述ahb-vip配置组件中预设的vip配置信息包括:地址范围、vip的id、主机\从机选择信号、模拟多重选择器使能信号、及预定义的多种传输模式。

作为具体的技术方案,所述ahbvip的事务类包含的成员有:ahb协议的命令、数据信息、时序信息。

作为具体的技术方案,还根据ahb协议以及ahb-vip配置组件预定义的多种传输模式,定义成员变量的约束。

作为具体的技术方案,所述ahb-vip的事务类包含的预设的方法包括:vip配置组件句柄获取方法、反馈类型获取方法、随机配置方法以及各种ahb协议信号值信息获取方法。

一种电子装置,其特征在于,所述电子装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的上述基于sv和uvm实现ahbvip的方法的程序。

一种存储介质,其特征在于,所述存储介质上存储有基于sv和uvm实现ahbvip的程序,所述基于sv和uvm实现ahbvip的程序可被一个或者多个处理器执行,以实现上述基于sv和uvm实现ahbvip的方法的步骤。

本发明的有益效果在于:

1、使用sv和uvm实现vip内核以减少跨语言编译障碍,不加密以减少仿真障碍,最终实现在一次“编译->仿真”过程中就可定位故障点

2、预先封装基础的方法,简化参数,为普通用户提供简单易用的方法,让普通用户专注于高层次的抽象行为而非细节,使得普通用户简单培训即可使用。为资深用户提供高内聚低耦合的代码架构,功能实现集成统一,降低资深用户的学习曲线。

3、后门访问、vip配置都可在激励序列中实时修改,为资深用户提供极大的便利性和灵活性。

4、提供灵活的丰富配置,实现模拟主机、从机以及总线系统中多重选择器的功能。

5、不加密代码,公开解约束过程,使得编写极端时序的测试激励更加高效方便。

〖附图说明〗

图1为本发明实施例中基于sv和uvm实现的ahb-vip的实现原理图。

图2为本发明实施例中主机代理的实现原理图。

图3为本发明实施例中序列发生器的实现原理图。

图4为本发明实施例中监视器的实现原理图。

图5为本发明实施例中主机协议驱动组件的实现原理图。

图6为本发明实施例中从机协议驱动组件的实现原理图。

图7为本发明实施例中ahb-vip配置组件的实现原理图。

图8为本发明实施例中ahb-vip事务类的实现原理图。

图9为本发明实施例中验证环境的顶层环境的实现原理图。

图10为本发明实施例中主机预设序列的实现原理图。

〖具体实施方式〗

结合图1所示,本实施例提供的一种基于sv和uvm的ahb-vip,主要包括:vip环境组件(env),vip配置组件,主机代理,从机代理,协议驱动组件,监视器,序列发生器,序列库,传输事务等。

在vip环境组件(env)中声明主机代理、从机代理、vip配置组件的句柄,监视器的句柄,并声明一个虚拟的接口句柄。在uvm的建立相位(build_phase)中,环境组件(env)从vip外部获取vip的配置组件对象以及接口句柄,实例化监视器对象,并且根据配置组件对象的配置选择实例化主机代理或者从机代理,最后将获得的配置组件句柄和接口句柄传递给主机代理或从机代理。

如图2所示,在主机代理中,声明监视器、序列发生器、主机协议驱动组件、vip配置组件和虚拟的接口句柄。在建立相位(build_phase)中,实例化序列发生器、主机协议驱动组件的对象;将从环境组件中获得的vip配置组件句柄传递给序列发生器、协议驱动组件和监视器;将获得的接口句柄传递给协议驱动组件和监视器。在uvm的链接相位(connect_phase)中通过tlm机制连接协议驱动组件和序列发生器。

从机代理的结构和主机代理相似,区别在于从机代理实例化的是从机协议驱动组件。

如图3所示,序列发生器中,创建一片不定大小的存储空间,并对此存储空间创建后门读、写函数,以便验证过程中可以随时配置从机的内部数据。序列发生器中还预定义了一个vip配置组件句柄转换方法,以便资深用户可以在任意序列中实时更改vip的配置。

如图4所示,监视器会根据vip配置组件的信息得知当前vip模拟的是主机还是从机,以及是否模拟多重选择器的功能,从而根据ahb-vip协议规定的相应时序,捕获接口信号中的地址、数据、触发类型、触发大小、响应类型等信息,并且将这些信息转换成ahb-vip的事务对象,并将事务对象发送到tlm接口上,提供给验证环境中其他的组件调用。

如图5所示,主机协议驱动组件主要包含三个任务块:事物获取任务块、命令驱动任务快、读写数据任务块。事物获取任务块从序列发生器中获取事务,然后传递给命令驱动任务块。命令驱动任务块根据vip配置组件的信息选择是否模拟多次选择器的功能,并根据ahb协议的时序要求将事务转换为相应的ahb信号驱动到信号接口上。对于写操作,读写数据任务块会将事务中的写数据根据协议规定的时序驱动到信号接口上。对于读操作,读写数据任务块会按照协议的时序要求采集接口上的读数据并封装进事务里,然后将事务作为反馈型事务返回给序列发生器,序列发生器最终会将反馈型事务返回给验证环境中的序列。

如图6所示,从机协议驱动组件主要包含三个任务块:命令采集任务块、写数据采集任务块、读数据驱动任务块。命令采集任务块根据接口上的信号,将命令信息封装进事务中,并且传递给序列库中预设的从机序列。在预设的从机序列中,如果是读命令的事务,预设的序列会根据ahb协议,从存储空间获取数据,封装进事务中并发送回从机协议驱动组件;写数据采集任务块根据接口上的信号,将写数据信息封装进事务中,再将事务中的写数据根据ahb协议写入到存储空间内;读数据驱动块根据ahb协议将事务中的读数据驱动到接口信号上。

如图7所示,ahb-vip配置组件中预设vip的配置信息主要有:地址范围,vip的id,主机\从机选择信号,模拟多重选择器使能信号,预定义的多种传输模式等。

如图8所示,ahb-vip的事务类包含的成员有:ahb协议的命令、数据信息、时序信息。同时还根据ahb协议以及ahb-vip的配置组件预定义的多种传输模式,定义了成员变量的约束。ahb-vip的事务类包含了预设的方法:vip配置组件句柄获取方法、反馈类型获取方法、随机配置方法以及各种ahb协议信号值信息获取方法等。

为了使本发明的目的以及技术方案和优点更加清晰明了,下面结合具体实施方式,对本发明进行进一步详细说明。

ahb-vip既可模拟简单的主机/从机,也可模拟复杂的ahb总线系统。

一、以ahb-vip作主机为例,ahb-vip的配置和使用主要包含以下步骤:

步骤1:在验证环境的测试平台(testbench)中,创建vip的接口实例,和待测试设计连接,使用uvm的uvm_config_db将接口实例的句柄传递给vip。

步骤2:在验证环境的顶层环境(top_env)中,创建ahb-vip环境和ahb-vip配置组件的对象,配置ahb-vip配置组件为主机,配置组件选择是否模拟多重选择器的功能,并且将ahb-vip配置组件的句柄传递给ahb-vip环境。

步骤3:参见图9所示,在验证环境的顶层环境(top_env)中,将虚拟序列发生器的ahb-vip的序列发生器的句柄指向ahb-vip环境里的主机代理内的ahb-vip的序列发生器句柄。

步骤1、2、3为基本的uvm使用方法,并不涉及vip专有的使用方法。

步骤4:结合图10所示,ahb-vip对uvm_do宏进行了封装,这是因为uvm_do宏的使用方法对于非验证工程师是非常晦涩难懂的。封装后变成典型的c语言的使用方式,普通用户无需关心uvm_do宏相关的约束、序列发生器的调用、vip的延时控制等细节问题,也无需关心vip的实现和回调函数等高级内容,按照基本的c语言的函数使用风格进行运用即可,这使得普通用户无需培训即可上手操作ahb-vip。当需要进行前门写操作时,普通用户只需要调用写函数,输入地址和数据,或选择数据随机产生,随后执行用户自定义的“编译>>仿真”脚本,ahb-vip即可自动完成激励生成、传输、协议驱动等一系列操作。当需要执行前门读操作的时候,只需调用读函数,输入读地址,执行脚本即可。

由于本例中是以主机作为说明,因此不涉及后门访问,后门访问的用例会在从机的使用中阐述。

步骤5:对于专业的验证工程师等高级用户,仍然可以在序列发生器中调用uvm_do宏进行激励的约束与产生。由于vip的内核是使用sv语言编写的,这使得在vcs/verdi等eda工具在仿真调试时可以清除地知道vip的内部运行过程。此外,ahb-vip事务中提供了ahb协议所要求的信号变量,也提供了协议各个传输阶段所需的延时计数变量以及预设的延时模式配置,这使得uvm_do宏已经可以完整地实现激励的约束并控制协议接口信号上的每一个细节。因此,上述两点使得vip根本不需要任何回调函数来实现激励的约束和控制,这使得即使是专业的验证工程师等高级用户,也可以不关心ahb-vip的架构,不关心复杂晦涩的回调函数,大大缩短了新验证工程师的学习曲线。以一个触发类型为incr4、触发大小为32比特、地址为32`habcd_5678、每笔数据分别延时1/2/3/4周期、每笔数据分别为32`h0000_00aa/32`h0000_bbaa/32`h00cc_0000/32`hddcc_0000的ahb传输为例,需要在序列发生器中实现如下代码:

`uvm_do_with(req,{

addr==32`addr==32habcd_5678;

burst_type==ahb_transaction::incr4;

burst_size==ahb_transaction::s32;

w_delay[0]==1;

w_delay[1]==2;

w_delay[2]==3;

w_delay[3]==4;

wdata[0]==32`h0000_00aa;

wdata[1]==32`h0000_bbaa;

wdata[2]==32`h00cc_0000;

wdata[3]==32`hddcc_0000;

})

这相比于eda厂商提供的vip,需要配合使用uvm_do宏和回调函数的方式,简化成了仅需要使用uvm_do宏的简单方式,省去了回调函数,也因此无需深入理解vip的结构。

二、以ahb-vip作从机为例,ahb-vip的配置和使用主要包含以下步骤:

步骤1:相比于ahb-vip作为主机,ahb-vip作为从机时,此步骤操作一致,在测试平台(testbench)中,创建、连接、传递vip的接口实例。

步骤2:相比于ahb-vip作为主机,ahb-vip作为从机时,步骤2中将vip配置组件设置为从机,其他部分完全一致。

步骤3:在验证环境的顶层环境(top_env)中,将虚拟序列发生器的ahb-vip的序列发生器的句柄指向ahb-vip环境里的从机代理内的ahb-vip的序列发生器句柄。

以上实施例仅为充分公开而非限制本发明,凡基于本发明的创作主旨、无需经过创造性劳动即可等到的等效技术特征的替换,应当视为本申请揭露的范围。


技术特征:

1.一种基于sv和uvm实现ahbvip的方法,其特征在于,包括:

在vip的环境组件中声明主机代理或从机代理、vip配置组件句柄,监视器句柄,并声明一个虚拟的接口句柄;在uvm的建立相位中,配置环境组件从vip外部获取vip的配置组件对象以及接口句柄,实例化监视器对象,并且根据配置组件对象的配置选择实例化主机代理或者从机代理,将获得的配置组件句柄和接口句柄传递给主机代理或从机代理;

在主机代理或从机代理中声明监视器、序列发生器、相应协议驱动组件、vip配置组件和虚拟的接口句柄;在uvm的建立相位中,实例化序列发生器、主机或从机协议驱动组件的对象;将从环境组件中获得的vip配置组件句柄传递给序列发生器、相应协议驱动组件和监视器;将获得的接口句柄传递给相应协议驱动组件和监视器;在uvm的链接相位中通过tlm机制连接相应协议驱动组件和序列发生器;

在所述序列发生器中创建一片存储空间,并对此存储空间创建后门读、写函数;

将所述监视器配置为根据vip配置组件的信息得知当前vip模拟的是主机还是从机、以及是否模拟多重选择器的功能,从而根据ahb-vip协议规定的相应时序,捕获接口信号中的地址、数据、触发类型、触发大小、响应类型等信息,并且将这些信息转换成ahb-vip的事务对象,并将事务对象发送到tlm接口上,提供给验证环境中其他的组件调用。

2.根据权利要求1所述的基于sv和uvm实现ahbvip的方法,其特征在于,所述序列发生器中还预定义一个vip配置组件句柄转换函数。

3.根据权利要求1或2所述的基于sv和uvm实现ahbvip的方法,其特征在于,所述相应协议驱动组件为主机协议驱动组件时,其被配置为包含事物获取任务块、命令驱动任务快、读写数据任务块;事物获取任务块从序列发生器中获取事务,然后传递给命令驱动任务块;命令驱动任务块根据vip配置组件的信息选择是否模拟多次选择器的功能,并根据ahb协议的时序要求将事务转换为相应的ahb信号驱动到信号接口上;对于写操作,读写数据任务块将事务中的写数据根据协议规定的时序驱动到信号接口上;对于读操作,读写数据任务块按照协议的时序要求采集接口上的读数据并封装进事务里,然后将事务作为反馈型事务返回给序列发生器,序列发生器最终将反馈型事务返回给验证环境中的序列。

4.根据权利要求1或2所述的基于sv和uvm实现ahbvip的方法,其特征在于,所述相应协议驱动组件为从机协议驱动组件时,其被配置为包含命令采集任务块、写数据采集任务块、读数据驱动任务块;命令采集任务块根据接口上的信号,将命令信息封装进事务中,并且传递给序列库中预设的从机序列;在预设的从机序列中,如果是读命令的事务,预设的序列会根据ahb协议,从存储空间获取数据,封装进事务中并发送回从机协议驱动组件;写数据采集任务块根据接口上的信号,将写数据信息封装进事务中,再将事务中的写数据根据ahb协议写入到存储空间内;读数据驱动块根据ahb协议将事务中的读数据驱动到接口信号上。

5.根据权利要求1所述的基于sv和uvm实现ahbvip的方法,其特征在于,所述ahb-vip配置组件中预设的vip配置信息包括:地址范围、vip的id、主机\从机选择信号、模拟多重选择器使能信号、及预定义的多种传输模式。

6.根据权利要求1所述的基于sv和uvm实现ahbvip的方法,其特征在于,所述ahbvip的事务类包含的成员有:ahb协议的命令、数据信息、时序信息。

7.根据权利要求6所述的基于sv和uvm实现ahbvip的方法,其特征在于,还根据ahb协议以及ahb-vip配置组件预定义的多种传输模式,定义成员变量的约束。

8.根据权利要求6所述的基于sv和uvm实现ahbvip的方法,其特征在于,所述ahb-vip的事务类包含的预设的方法包括:vip配置组件句柄获取方法、反馈类型获取方法、随机配置方法以及各种ahb协议信号值信息获取方法。

9.一种电子装置,其特征在于,所述电子装置包括存储器和处理器,所述存储器上存储有可在所述处理器上运行权利要求1-8任意一项所述的基于sv和uvm实现ahbvip的方法的程序。

10.一种存储介质,其特征在于,所述存储介质上存储有基于sv和uvm实现ahbvip的程序,所述基于sv和uvm实现ahbvip的程序可被一个或者多个处理器执行,以实现权利要求1-8任意一项所述的基于sv和uvm实现ahbvip的方法的步骤。

技术总结
本发明公开一种基于SV和UVM实现AHB VIP的方法、电子装置及存储介质,使用SV和UVM实现VIP内核以减少跨语言编译障碍,不加密以减少仿真障碍,最终实现在一次“编译‑>仿真”过程中就可定位故障点,可模拟主机、从机及多重选择器,并可前后门访问。

技术研发人员:肖云飞
受保护的技术使用者:珠海泰为电子有限公司
技术研发日:2021.03.18
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-7917.html

最新回复(0)