UVM虚接口传递方法及系统与流程

    专利2022-07-08  105


    本发明属于ic验证技术领域,涉及一种虚接口传递方法,尤其涉及一种uvm虚接口传递方法及系统。



    背景技术:

    现如今uvm(universalverificationmethodology,通用验证方法学)已经成为了ic验证的主要方法学,使得验证平台更加标准和通用,但是,伴随着测试平台的复杂化,尤其是组件数目以及组件层级变多、系统测试中待测模块的激增导致的接口种类的激增,传统的uvm接口传递方法的使用弊端明显。本文就验证平台中虚接口的传递方法进行改进说明。

    传统的uvm接口传递方法如下:首先需要例化各种各样的接口,然后通过uvm_config_db#(xxx)::set(xxx0,xxx1,xxx2,xxx3)的方式把xxx3(接口的例化)送到指定的uvm组件中去,xxx0和xxx1决定了送往哪个组件。

    一方面,当测试平台的组件hierarchy(层级)很深时,例如uvm_test_top.hie0.hie1.hie2.hie3...hien;此时,如果想把接口传递到层级为hien的某个组件时,则xxx1将会变得很长,层级很多,需要事先知道送往的组件在那一层,中间经过了哪些层,很麻烦,稍不注意,就会出现少一个或者多一个层级的情况,导致set不成功。

    另一方面,当使用uvm_config_db#(xxx)::get(xxx0,xxx1,xxx2,xxx3)的时候,只能在set指定的组件中使用get,需要严格的匹配。

    再者,set的接口需要手动去例化,即使使用uvm_resource_db的set,也还是需要手动例化接口,当系统中接口种类及数目激增时,手动例化显得不便。

    由此可以看出现有的传统uvm接口传递方法在某些情况下的不足之处,有待改进。有鉴于此,如今迫切需要设计一种新的接口传递方式,以便克服现有接口传递方式存在的上述至少部分缺陷。



    技术实现要素:

    本发明提供一种uvm虚接口传递方法,可解决传统系统级ic验证中接口传递遇到的跨多层级传递的繁琐问题以及接口数目激增导致的手动例化接口的繁琐问题,简化ic验证系统中传统的接口传递。

    为解决上述技术问题,根据本发明的一个方面,采用如下技术方案:

    一种uvm虚接口传递方法,所述传递方法包括:

    定义第一宏,所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定第一宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体;

    在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件中,完成注册;

    通过定义的第二宏取回需要的虚接口。

    作为本发明的一种实施方式,在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到uvm_resource_db中,完成注册。

    作为本发明的一种实施方式,设计一自动例化接口并进行注册,并用第一宏register_vif(bind_m,if_type,if_inst)的方法来打包这个方法,第一宏的内容包括一个模块module的定义以及对该模块module的捆绑bind操作。

    作为本发明的一种实施方式,实体注册完成之后,通过定义第二宏取回需要的虚接口,在设定组件driver中使用retrieve_vif(dma_if,i_dma_if,”tb_top.i_dma_if”),即得到了i_dma_if;

    第二宏包括三个参数,第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径。

    根据本发明的另一个方面,采用如下技术方案:一种uvm虚接口传递系统,所述传递系统包括:

    第一宏定义模块,用以定义第一宏;所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定第一宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体;

    实体注册模块,用以在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件中,完成注册;

    虚接口取回模块,用以通过定义的第二宏取回需要的虚接口。

    作为本发明的一种实施方式,在第一宏被使用时,所述实体注册模块在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到uvm_resource_db中,完成注册。

    作为本发明的一种实施方式,所述虚接口取回模块用以实体注册完成之后,通过定义第二宏取回需要的虚接口,在设定组件driver中使用retrieve_vif(dma_if,i_dma_if,”tb_top.i_dma_if”),即得到了i_dma_if;

    第二宏包括三个参数,第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径。

    本发明的有益效果在于:本发明提出的uvm虚接口传递方法,可解决传统系统级ic验证中接口传递遇到的跨多层级传递的繁琐问题以及接口数目激增导致的手动例化接口的繁琐问题,简化ic验证系统中传统的接口传递。

    附图说明

    图1为本发明一实施例中uvm虚接口传递方法的流程图。

    图2为本发明一实施例中uvm虚接口传递系统的组成示意图。

    图3为本发明一实施例中uvm测试平台组件结构图。

    具体实施方式

    下面结合附图详细说明本发明的优选实施例。

    为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。

    该部分的描述只针对几个典型的实施例,本发明并不仅局限于实施例描述的范围。相同或相近的现有技术手段与实施例中的一些技术特征进行相互替换也在本发明描述和保护的范围内。

    说明书中各个实施例中的步骤的表述只是为了方便说明,本申请的实现方式不受步骤实现的顺序限制。

    本发明揭示了一种uvm虚接口传递方法,图1为本发明一实施例中uvm虚接口传递方法的流程图;请参阅图1,所述传递方法包括:

    【步骤s1】定义第一宏,所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定第一宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体;

    在本方面的一种使用场景下,宏register_vif被使用时,宏会被展开,宏内部首先会定义命名唯一的module,如图2中的auto_register_i_i2c_if的module,i_i2c_if即为宏的第三个传递的参数,在auto_register_i_i2c_if模块的内部,会例化一个类型为宏第二个参数、实体为宏第三个参数的接口,如图2中的i2c_ifi_i2c_if(),至此,自动例化完成,然后以bind_m.if_inst为路径,如图2中的top_tb.i_i2c_if为路径,将i_i2c_if()以虚接口的形式注册到uvm_resource_db中,完成注册过程。

    【步骤s2】在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件中,完成注册。

    在一实施例中,将对应实体以虚接口的形式注册到uvm_resource_db中,完成注册。uvm_resource_db为uvm中的一个标准组件,本质是一个存储,以路径为索引,可以将任意类型的变量以及接口等等存储起来,之后,还可以通过以路径为索引的方法,将存储的内容取出来使用。

    【步骤s3】通过第二宏取回需要的虚接口。

    第二宏可以包括三个参数,第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径。在一实施例中,第二宏为retrieve_vif。使用retrieve_vif宏时,会以第三个参数路径为索引,从uvm_resource_db中取出之前register_vif宏使用时存放入uvm_resource_db的内容。

    在本发明的一实施例中,设计一种自动例化接口并进行注册的方法,并用宏register_vif(bind_m,if_type,if_inst)的方法来打包这个方法;所述方法具体包括如下步骤:

    (1)定义第一宏,第一宏的内容包括一个module的定义以及对该module的bind操作。宏的第一个参数bind_m指定了第一宏定义中的module即将bind到的module的名字,如tb_top,第二个参数指定了自动例化在第一宏定义module中的接口的类型,如dma_if,第三个参数指定了自动化例化接口的实体,如i_dma_if。

    (2)图3为本发明一实施例中uvm测试平台组件结构图,如图3所示,当第一宏被使用时,如`register_vif(tb_top,dma_if,i_dma_if);就会在tb_top模块内自动例化auto_register_i_dma_if模块,且该模块内会例化类型为dma_if的接口i_dma_if(),紧接着以”top_tb.i_dma_if”为reg_path,将i_dma_if以虚接口的形式注册到uvm_resource_db中去,至此,完成了注册部分,解决了多层级带来的不必要的麻烦,且无需手动例化接口。

    (3)注册完成之后,图1中basetest中的所有组件都可以通过定义的第二宏来取回需要的虚接口,如在组件driver中使用`retrieve_vif(dma_if,i_dma_if,”tb_top.i_dma_if),即得到了i_dma_if,方便快捷。

    第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径,格式统一为”xxx1.xx2”,xxx1为testbench顶层模块的名字,如图1中的tb_top,xxx2需要与注册的第三个参数一致。

    本发明还揭示一种uvm虚接口传递系统,图2为本发明一实施例中uvm虚接口传递系统的组成示意图;请参阅图2,所述传递系统包括:宏定义模块1、实体注册模块2及虚接口取回模块3。宏定义模块1用以定义第一宏;所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定第一宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体。实体注册模块2用以在宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件(如uvm_resource_db)中,完成注册。虚接口取回模块3用以通过第二宏取回需要的虚接口。

    在本发明的一实施例中,所述虚接口取回模块用以实体注册完成之后,通过定义第二宏取回需要的虚接口,在设定组件driver中使用retrieve_vif(dma_if,i_dma_if,”tb_top.i_dma_if”),即得到了i_dma_if;第二宏包括三个参数,第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径。

    综上所述,本发明提出的uvm虚接口传递方法,可解决传统系统级ic验证中接口传递遇到的跨多层级传递的繁琐问题以及接口数目激增导致的手动例化接口的繁琐问题,简化ic验证系统中传统的接口传递。

    需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施;例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一些实施例中,本申请的软件程序可以通过处理器执行以实现上文步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中;例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现;例如,作为与处理器配合从而执行各个步骤或功能的电路。

    以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

    这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。实施例中所涉及的效果或优点可因多种因素干扰而可能不能在实施例中体现,对于效果或优点的描述不用于对实施例进行限制。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。


    技术特征:

    1.一种uvm虚接口传递方法,其特征在于,所述传递方法包括:

    定义第一宏,所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定第一宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体;

    在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件中,完成注册;

    通过定义的第二宏取回需要的虚接口。

    2.根据权利要求1所述的uvm虚接口传递方法,其特征在于:

    在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到uvm_resource_db中,完成注册。

    3.根据权利要求1所述的uvm虚接口传递方法,其特征在于:

    设计一自动例化接口并进行注册,并用第一宏register_vif(bind_m,if_type,if_inst)的方法来打包这个方法,第一宏的内容包括一个模块module的定义以及对该模块module的捆绑bind操作。

    4.根据权利要求1所述的uvm虚接口传递方法,其特征在于:

    实体注册完成之后,通过定义第二宏取回需要的虚接口,在设定组件driver中使用retrieve_vif(dma_if,i_dma_if,”tb_top.i_dma_if”),即得到了i_dma_if;

    第二宏包括三个参数,第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径。

    5.一种uvm虚接口传递系统,其特征在于,所述传递系统包括:

    第一宏定义模块,用以定义第一宏;所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定第一宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体;

    实体注册模块,用以在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件中,完成注册;

    虚接口取回模块,用以通过定义的第二宏取回需要的虚接口。

    6.根据权利要求5所述的uvm虚接口传递系统,其特征在于:

    在第一宏被使用时,所述实体注册模块在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到uvm_resource_db中,完成注册。

    7.根据权利要求5所述的uvm虚接口传递系统,其特征在于:

    所述虚接口取回模块用以实体注册完成之后,通过定义第二宏取回需要的虚接口,在设定组件driver中使用retrieve_vif(dma_if,i_dma_if,”tb_top.i_dma_if”),即得到了i_dma_if;

    第二宏包括三个参数,第一个参数是接口类型,第二个参数是接口实体,第三个参数是路径。

    技术总结
    本发明揭示了一种UVM虚接口传递方法及系统,所述传递方法包括:定义第一宏,所述第一宏包括第一参数、第二参数及第三参数;所述第一个参数指定宏定义中模块的名字,第二个参数指定自动例化在第一宏定义模块中的接口的类型,第三个参数指定自动化例化接口的实体;在第一宏被使用时,在对应模块内自动例化对应类型的接口,而后将对应实体以虚接口的形式注册到设定组件中,完成注册;通过定义的第二宏取回需要的虚接口。本发明提出的UVM虚接口传递方法,可解决传统系统级IC验证中接口传递遇到的跨多层级传递的繁琐问题以及接口数目激增导致的手动例化接口的繁琐问题,简化IC验证系统中传统的接口传递。

    技术研发人员:张平平
    受保护的技术使用者:博流智能科技(南京)有限公司
    技术研发日:2020.12.07
    技术公布日:2021.03.12

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

    最新回复(0)