一种芯片验证IP装置及其测试方法

文档序号:29801001发布日期:2022-04-23 20:09阅读:431来源:国知局
一种芯片验证IP装置及其测试方法
一种芯片验证ip装置及其测试方法
技术领域
1.本发明属于芯片验证测试领域,具体涉及一种芯片验证ip装置及其测试方法。


背景技术:

2.在芯片设计开发过程中,需要提供稳定的验证环境来对芯片的各个模块和整个系统进行测试。在验证过程中,用于构建整个测试平台的单元组件被称为芯片验证ip(vip,verificatioin intellectual properties)。验证ip的作用即是用来扮演与设计的接口进行交互的角色,通过对设计进行充分的激励测试和监测,来对设计的功能进行分析和检查,继而确保芯片的各个模块和整个系统都符合各项功能要求。
3.芯片验证ip与设计ip(design ip)一样,本身也需要进行开发和测试。只有经过了完整的测试流程,验证ip的质量才能够得到保证。如果验证ip自身的质量都无法得到保证,那么它就无法作为一个可靠的组件被集成到验证环境中。因此,为了能够对芯片系统在流片进行充分的测试,我们首先需要一个合格的验证ip。
4.一个合格的验证ip首先应该满足它要模拟的标准总线协议。芯片系统会使用多种总线协议,每一种总线协议都有自己专有的信号集合和时序要求。与每一种总线协议对应的验证ip,也应该拥有总线协议要求的信号集合以及发出满足时序要求的激励。在此之上,验证ip还应该有多个特性用来满足验证环境的不同测试要求。
5.在对验证ip进行开发测试的过程中,我们首先需要一个自身可靠的模型用于测试我们开发的验证ip。这个模型可以选择被充分测试过的设计ip或者验证ip。在我们的发明中,我们选择了第三方的验证ip。这是因为第三方的验证ip,往往其功能丰富,能够在开发我们自研的验证ip中起到良好的参考作用。
6.芯片设计公司以往在对芯片系统进行测试时,往往会选择从第三方购买验证ip,搭建验证环境。这种方式的优点在于可以像购买设计ip一样,进行快速的设计、测试和流片,加快推向市场。但这种方式的缺点也很明显,那就是公司的产品长期以往,将不具备自身独特的优势,与其它公司的产品在特性和参数上趋于相同。
7.因此,研发具备自主知识产权的自研ip,就成为了芯片公司想要领先于其它公司的重要方向。在开发自研设计ip的过程中,也往往伴随着开发自研验证ip。设计ip可以用于芯片系统的快速集成,而验证ip就可以用于芯片系统的充分测试。如何掌握芯片验证ip的开发和测试就变得重要,本发明将提出一种芯片验证ip及其测试流程。


技术实现要素:

8.为了解决背景技术中的问题,本发明公开了一种芯片验证ip装置及其测试方法。本发明的目标是为了开发出能够在芯片uvm验证环境中集成的vip,继而利用该vip对芯片待测设计的对应总线接口进行测试和监测。只有具备了一个功能齐全、质量稳定的vip,才可以对接下来要验证的设计总线接口展开充分验证,提升验证可靠性。
9.本发明采用的技术方案如下:
一、一种芯片验证ip装置包括单元组件或系统环境;单元组件主要由驱动器、监测器、序列器和配置项组成,单元组件的配置项用于配置驱动器、监测器和序列器的功能行为;单元组件为主端单元组件或从端单元组件;系统环境由主端单元组件群、从端单元组件群和系统配置项组成,主端单元组件群包括多个主端单元组件,从端单元组件群包括多个从端单元组件;系统配置项用于对主端单元组件群和从端单元组件群中单元组件的数目等系统层面的参数进行配置。
10.所述验证ip发布时提供验证计划,验证计划包括:端口信号翻转率,验证ip的总线接口在数据传输期间比特位发生从0到1以及从1到0的跳转的概率;检查覆盖率,验证ip对应总线协议的各种传输情况被监测器检查的概率;功能覆盖率,验证ip的总线接口在数据传输过程中总线协议发生的概率。
11.所述验证ip内置多个预定义事件,预定义事件放置于单元组件的驱动器和监测器中;预定义事件为事先在单元组件内创建的事件(event)。
12.放置于驱动器中的预定义事件:在总线接口发起数据传输、挂起数据传输、中断数据传输以及完成数据传输的时间点进行触发;放置于监测器中的预定义事件:在监测到总线接口开始数据传输、挂起数据传输、中断数据传输以及完成数据传输的时间点进行触发。
13.在驱动器和监测器中的事件被触发后,触发的事件通知验证环境中其它验证ip组件;所述验证环境由多个相同或者不同类型的验证ip组件构成,验证ip组件之间通过总线接口进行通信。
14.若在预定义事件的触发位置嵌入有回调函数且用户定义了回调函数,在预定义事件触发后,则先执行用户定义的回调函数,然后执行后续逻辑。
15.所述验证ip预定义测试序列,预定义的测试序列用于实现不同的总线协议时序,供用户反复使用。
16.所述验证ip支持插入错误的激励,错误的激励是通过在已有的功能测试序列中定义回调函数,并由回调函数对正常激励事务添加错误信息。
17.所述功能测试序列是将若干单元序列组合后对待测设计的功能点进行测试的序列,功能测试序列发送的激励事务均为正确的激励;其中,单元序列为验证ip预定义的测试序列。
18.错误的激励由序列器发送至驱动器,驱动器在接收激励事务后触发预定义事件,并在驱动总线接口之前遇到回调函数,回调函数对驱动器接收到的激励事务添加错误的信息,驱动器根据错误的信息驱动总线信号至待测设计。
19.如果驱动器获得的激励事务是包含有错误信息的,那么原本可以发送的正常总线时序信号将会出现错误的时序,这部分错误时序是由于插入的错误信息所导致的。
20.二、采用上述芯片验证ip的测试方法包括以下步骤:1)搭建vip测试环境,包括第三方vip的主端单元组件、第三方vip的从端单元组件、自研vip的主端单元组件、自研vip的从端单元组件,主端单元组件和从端单元组件之间通过总线接口完成通信和测试。
21.2)单元组件测试:
主端单元组件测试:例化第三方vip的主端单元组件和自研vip的从端单元组件的环境,准备自研vip主端单元组件测试用例,利用第三方vip的主端单元组件测试自研vip的从端单元组件;从端单元组件测试:例化第三方vip的从端单元组件和自研vip的主端单元组件的环境,准备自研vip从端单元组件测试用例,利用第三方vip的从端单元组件测试自研vip的主端单元组件。
22.3)系统环境测试:关闭第三方vip主端、从端单元组件的例化,打开自研vip主端、从端单元组件的例化;自研vip的主端单元组件与从端单元组件之间通过总线接口完成通信和测试;其中,测试过程中使用的测试用例采用单元组件测试中使用的主端单元组件和从端单元组件的测试用例。
23.所述的vip(verification ip)为验证ip,所述的第三方vip为稳定的市售vip,自研vip为本发明的芯片验证ip。
24.单元组件内的配置项用于选择vip测试环境中需例化的单元组件以及单元组件内部的各个组件,vip测试环境的结构通过配置项确定。
25.总线接口为在uvm验证环境中,通过systemverilog 定义的接口类型(interface type),可以用来连接多个具备总线接口的目标(vip),以实现这些目标之间的数据通信。
26.本发明的有益效果:1、本发明的验证ip适配性好,可以在不同芯片项目开发中多次使用,用于验证不同的设计,充分发挥它的可复用性,节省多次开发的人力成本。
27.2、在经过测试之后,本发明自研的验证ip即可作为有自主知识产权的ip,在公司内部的项目中进行复用。具备自主知识产权的验证ip相比于从市场购买的第三方验证ip有以下优势:2.1)所有的代码自主可控且是透明可见的;2.2)在使用过程中一旦出现问题,团队内部可以做出及时的支持响应;2.3)如果对验证ip提出新的功能,自研的验证ip可以更方便地做出修改和升级;2.4)在公司开发设计ip提供给其他公司作为产品出售时,也可以同时将自研的验证ip和其验证环境提供给客户,作为完整的设计测试方案。
附图说明
28.图1为芯片验证ip的单元组件结构。
29.图2为芯片验证ip的系统环境结构。
30.图3为回调函数在验证ip组件中的执行顺序逻辑。
31.图4为测试序列将激励事务发送至验证ip的单元组件的过程。
32.图5用于说明包含有错误信息的序列与其所继承的正常序列之间的关系。
33.图6为包含有错误信息的激励事务通过回调函数将信息传递至驱动器的过程。
34.图7为vip测试环境的基本结构。
35.图8为用于测试自研vip从端单元组件的测试环境(阴影表示不例化)。
36.图9为用于测试自研vip主端单元组件的测试环境。
37.图10为用于测试自研vip主端单元组件和从端单元组件的测试环境。
具体实施方式
38.下面结合附图和实施例对本发明进行说明。
39.本发明公开了一种芯片验证ip装置及其测试方法。
40.一、芯片验证ip芯片验证ip包括主端(master)的单元组件(agent)、从端(slave)的单元组件或系统环境,独立的单元单元需要具备驱动器(driver)、监测器(monitor)和序列器(sequencer)。
41.为了能够实现vip的众多功能,我们需要先定义一个完善的vip的单元组件,以及它们所构成可以实现自测试的环境结构。vip的单元组件可以根据标准总线协议分为主端单元组件和从端单元组件,它们分别在验证环境中扮演标准总线的主端(master)和从端(slave);如图1所示,一个vip的单元组件包括驱动器、监测器、序列器以及用于配置它们功能行为的配置项。
42.如图2所示,系统环境由主端单元组件群、从端单元组件群、系统配置项构成;主端单元组件群包括多个主端单元组件,从端单元组件群包括多个从端单元组件,系统配置项主要对系统测试环境中主、从端单元组件的数目等系统层面的参数做配置。
43.当vip经过充分测试稳定后,再发布vip,以vip的主端单元组件、从端单元组件和系统环境为主要的发布内容。用户在使用vip时,可以选择将单个主端单元组件、单个从端单元组件或者整个vip系统环境集成到验证环境中,以便通过总线接口向待测设计发送测试激励和监测待测设计的数据传输。
44.本发明的芯片验证ip对同一种标准总线协议中的不同设计均适配,在开发某一种标准总线的vip时,需要实现以下功能:1)需要针对对应总线的协议时序提供充分的验证计划表格(verification plan):包含对协议的时序检查(timing check)和检查报告信息;包含对协议时序的端口信号翻转率(toggle coverage)、检查覆盖率(check coverage)和功能覆盖率(function coverage)。
45.端口信号覆盖率:总线接口在数据传输期间,通过监测比特位是否发生从0到1以及从1到0的跳转来收集端口信号覆盖率;检查覆盖率:与vip单元组件中监测器内置的协议检查功能有关,用来记录总线协议时序各种传输情况是否被监测和检查,以此来反映监测器的协议检查功能在测试期间是否为活跃状态;通过记录总线协议各种传输情况是否被检查来收集检查覆盖率;功能覆盖率:与vip单元组件是否完整地支持总线协议功能有关,它用来监测每一个总线协议功能时序是否发生,以此来反映该总线协议功能时序出现在总线的数据传输过程中;通过记录每一种总线协议是否发生过来收集功能覆盖率。
46.2)包含在特定时序的事件触发(event trigger)。
47.vip内置多个预定义事件触发。这些事件可以放置于单元组件的驱动器中,通过在总线接口发起数据传输、挂起数据传输、中断数据传输以及完成数据传输的时间点去触发它们;这些事件也可放置于单元组件的监测器中,监测到总线接口开始数据传输、挂起数据
传输、中断数据传输以及完成数据传输的时间点去触发它们。在驱动器和监测器中的事件被触发以后,可以用于通知验证环境中其它vip组件。
48.4)包含可以修改驱动器和监测器行为的回调函数(callback)。
49.如图3所示,vip的驱动器和监测器中的预定义事件在触发的同时,也支持去调用回调函数。如果在事件触发的位置,嵌入了回调函数,并且用户也定义了回调函数,那么vip将会在事件触发后,先去执行用户定义的回调函数,然后再去执行后续逻辑。
50.5)包含预定义的测试单元序列(element sequence)。
51.如图4所示,在传统的uvm验证环境中,vip如果要发送激励,需要通过测试序列挂载到序列器,将包含测试激励数据的激励事务逐一传送至序列器,再由序列器将激励事务发送至驱动器。驱动器在接收到这些激励事务以后,会解析激励事务中的激励数据,并且最终通过总线接口,将这些激励数据以时序的形式驱动到总线接口。由于总线的另外一端将连接待测设计,也因此,这些激励数据最终将会对设计展开测试。
52.vip会预定义好可以实现不同总线协议时序的测试序列,预定义测试序列可以供用户反复使用,这些序列可以实现不同的总线功能,我们将这些预定义好的测试序列称之为单元序列。
53.6)支持插入错误的激励。
54.如图5所示,错误的激励之所以能够插入,并不是一开始在测试序列实现的,而是通过继承正常的测试序列,并且定义了回调函数实现的。
55.功能测试序列是若干单元序列组合后对待测设计的功能点进行测试的序列,它所发送的激励事务都是正确的激励。
56.定义的回调函数会在驱动器接收了激励事务、并且在驱动总线信号之前被驱动器执行。
57.如图6所示,驱动器接收了激励事务后,会触发预定义事件以及调用定义的回调函数,这些回调函数会对驱动器接收到的激励事务添加错误的信息,而这些错误的信息会被驱动器接下来解析用于驱动总线信号,驱动器根据错误的信息驱动总线信号至待测设计。
58.如果驱动器获得的激励事务是包含有错误信息的,那么原本可以发送的正常总线时序信号将会出现错误的时序,这部分错误时序是由于插入的错误信息所导致的。
59.二、验证ip的测试流程测试阶段分为单元组件测试和系统环境测试两个环节。
60.1)在进行vip测试时,需要先搭建好vip的测试环境。
61.如图7所示,vip的测试环境包括第三方vip的单元组件(主端单元组件、从端单元组件)、自研vip的单元组件(主端单元组件、从端单元组件)。
62.具体实施中,第三方vip使用synopsys公司提供的vip。
63.根据单元组件的配置项选择需要例化的单元组件以及其内部的各个组件,对于单元组件测试环境和系统环境测试环境,均可以利用配置项来影响测试环境的结构,继而为vip测试提供基础。
64.对于一个测试环境,它需要具备一个主单元组件和从单元组件,这样它们之间可以通过总线接口来完成通信和测试。总线接口为在测试环境中,通过systemverilog 定义的接口类型(interface type),可以用来连接多个具备总线端口的目标(vip),以实现这些
目标之间的数据通信。
65.2)单元组件测试单元组件的测试环境分别为对主端单元组件和从端单元组件测试构建的测试环境。
66.主端单元组件的测试环境如图8所示,利用单元组件的配置项,关闭第三方vip从端单元组件和自研vip主端单元组件的例化,而打开第三方vip主端单元组件和自研vip从端单元组件的例化,产生利用第三方vip主端单元组件来测试自研vip从端单元组件的环境。
67.从端单元组件的测试环境如图9所示,利用单元组件的配置项,关闭第三方vip主端单元组件和自研vip从端单元组件的例化,而打开第三方vip从端单元组件和自研vip主端单元组件的例化,产生利用第三方vip从端单元组件来测试自研vip主端单元组件的环境。
68.这两个测试环境的目的都是为了利用已经稳定的的第三方vip单元组件来验证自研vip的单元组件。
69.在用来测试自研vip主端单元组件和自研vip从端单元组件的单元组件测试环境中,我们需要为测试这两个单元组件分别准备相应的主端单元组件测试用例和从端单元组件测试用例,继而确保它们的功能稳定,能够与对应的第三方vip从端单元组件和第三方vip主端单元组件完成通信。
70.3)系统环境测试系统环境的测试环境如图10所示,利用单元组件的配置项,关闭第三方vip主端、从端单元组件的例化,而打开自研vip主端、从端单元组件的例化,构建将vip的主单元组件和从单元组件同时展开测试的测试环境。在这样的系统测试环境中,只需要利用自研的主端单元组件与从端单元组件之间的总线接口完成通信和测试。
71.在系统测试环境中,我们也需要提供相应的测试用例。我们可以重复利用之前在单元组件测试环节中准备的主端单元组件和从端单元组件的测试用例,将它们继续用于系统测试。这是由于这些测试用例本身都是由适配于自研vip的测试序列构成的,所以在系统测试环境中,依然可以利用它们来完成测试。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1