记分板和断言检查相结合的验证方法技术

技术编号:34048012 阅读:51 留言:0更新日期:2022-07-06 15:07
本发明专利技术公开了一种记分板和断言检查相结合的验证方法,包含如下步骤:在记分板里声明uvm_event事件,用于控制断言的使能开关变量;在UVM的phase机制中的build_phase里对uvm_event事件进行实例化,并传入到UVM的配置数据库里;将所有用于检查的断言封装到一个package包文件中,并可通过disable iff()关键字来控制断言的开关状态;在package包文件中创建派生于uvm_object的断言配置对象;创建验证平台,在验证平台的顶层模块里导入package包文件,用于让验证平台的验证环境可以使用封装好的断言检查和断言配置对象;在程序控制块里按照执行顺序依次执行检查命令,获取断言检查的结果,从而实现对记分板中追踪到的问题的进一步的时序及协议的信号级检查。本发明专利技术可提高验证工作效率和验证质量。高验证工作效率和验证质量。高验证工作效率和验证质量。

Verification method combining scoreboard and assertion checking

【技术实现步骤摘要】
记分板和断言检查相结合的验证方法


[0001]本专利技术涉及芯片验证
,特别涉及一种记分板和断言检查相结合的验证方法。

技术介绍

[0002]通常,我们会采用断言(systemVerilog assertion)和记分板(scoreboard)两种方式来用作对RTL设计的(DUT)功能做检查,用以确保RTL设计的功能符合设计手册的描述要求。
[0003](1)记分板验证方式如图1所示,记分板(scoreboard)通常由两个部分组成,分别是参考模型(predictor)和比较器(evaluator)。通常为了检查DUT功能的正确性,我们需要编写参考模型(predictor),然后会发送同样的激励给参考模型和DUT,然后各自运算后,将运算结果送到比较器(evaluator)进行比较,通过比较运算结果是否一致,来判断DUT功能的正确性。整个过程中,我们会使用监测器(monitor)来监测DUT输入和输出接口(interface)上的信号,并且将其封装成事务级(transaction level)数据类型,然后广播发送给记分板,记分板中的参考模型根据接收到的输入接口的事务数据来计算期望的输出结果,然后在比较器里与接收到的输出接口的事务数据进行比较,从而判断DUT功能的正确性。记分板是基于事务级(transaction level)数据的检查,其相对于接口(interface)的信号级(signal level)来说,抽象层次更高,抽象层次更高通常仿真效率更高,速度更快,也更容易建模来对DUT做功能检查。/>[0004]但是这同时也带来一个缺陷,即其很难发现DUT时序协议导致的错误,因为毕竟记分板不是基于时钟周期的信号级数据来做检查的,也就是说很难发现问题的根源。通常来说,当其报出比较错误的时候,当前仿真时间距离最初的问题根源已经过去了很多个时钟周期了,因此需要依赖验证开发人员耐心地观察波形上的信号变化来定位具体的问题,尤其当涉及接口信号较多,时序协议较为复杂时,问题的定位将会变得更加困难,这将耗费验证开发人员的大量时间,给问题的追踪调试带来了不便。
[0005](2)断言验证方式断言验证分为立即断言(immediate assertion)和并发断言(concurrent assertion)。立即断言可以很容易地在验证组件这种类对象中使用,但是能够检查的场景非常有限,因此我们还需要功能更加强大的并发断言来做更为细节的,比如基于时钟的时序协议方面的检查。断言验证是记分板检查的一个有力的补充,可以完成基于时钟变化的信号级的协议检查,从而帮助验证开发人员快速定位问题的根源。
[0006]但是较为复杂的并发断言却不能在验证组件这种类对象中使用,而只能够在模块(module)或者接口(interface)中来使用。这种情况下,通常验证开发人员会使用并发断言在接口中做一些信号级(signal level)的行为检查,却不能将此强大的并发断言检查方式用在记分板里,以使其在仿真过程中根据记分板获取到的事务级(transaction level)数
据再结合记分板追踪到的问题做进一步的检查。
[0007]如图2所示,是现有的采用两种上述两种验证方式的验证平台。可以看到我们将记分板例化在了验证环境(图2中env)中,将断言检查使用在信号接口(图2中interface)中,从而对信号接口上的信号做信号级的时序和协议检查。
[0008]现有方案中记分板(图2中scoreboard)和断言(图2中assertion)检查同时存在,由于并发断言通常是基于时钟变化来检查的,因此在每个时钟周期并发断言都会去做检查,然而这其中存在着大量不需要进行断言检查的情形,因为记分板并没有在每个时钟周期都报出存在比较错误的问题,因此在每个时钟周期都去做并发断言检查会降低仿真性能,延长仿真的时间,从而降低验证开发人员的工作效率。
[0009]出现以上缺陷,往往是由于两种检查方式是相互独立运行的原因,即彼此之间缺乏关联。因此需要采用一种将记分板和断言检查两者紧密结合的验证方法,从而利用上述两种验证方式各自优点的同时,避免其缺陷带来的影响,最终实现提升验证工作的质量以及验证开发人员的工作效率。
[0010]
技术实现思路

[0011]根据本专利技术实施例,提供了一种记分板和断言检查相结合的验证方法,包含如下步骤:在记分板里声明uvm_event事件,用于控制断言的使能开关变量;在UVM的phase机制中的build_phase里对uvm_event事件进行实例化,并传入到UVM的配置数据库里;将所有用于检查的断言封装到一个package包文件中,并可通过disable iff()关键字来控制断言的开关状态;在package包文件中创建派生于uvm_object的断言配置对象;创建验证平台,在验证平台的顶层模块里导入package包文件,用于让验证平台的验证环境可以使用封装好的断言检查和断言配置对象;在验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取断言检查的结果,从而实现对记分板中追踪到的问题的进一步的时序及协议的信号级检查。
[0012]进一步,断言配置对象中包括:控制断言的使能开关变量、仿真时间变量以及其他并发断言中需要使用到的仿真过程变量。
[0013]进一步,使能开关变量、仿真时间变量以及仿真过程变量需使用static关键字设置成全局静态变量。
[0014]进一步,在验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取断言检查的结果包含如下子步骤:声明并实例化断言配置对象;阻塞等待验证平台执行到刚好要进入消耗仿真时间的运行阶段,通过end_of_elaboration_phase句柄调用wait_for_state方法,把参数UVM_PHASE_DONE和UVM_EQ传递进验证平台来等待end_of_elaboration_phase阶段的运行结束;从UVM的配置数据库中获取在记分板里的uvm_event事件,调用获取的uvm_event
事件的wait_trigger方法来等待uvm_event事件被触发;当uvm_event事件被触发后,获取在记分板中uvm_event事件触发时的数据变量;将数据变量赋值给package包文件中的断言配置对象的全局静态变量;调用package包文件中相应的并发断言进行检查,将断言配置对象的全局静态变量作为并发断言检查的输入参数进行传入,获取断言检查的结果。
[0015]进一步,数据变量包含:打开的断言控制开关、仿真时间以及其他仿真过程参数变量。
[0016]进一步,将数据变量赋值给package包文件中的断言配置对象的全局静态变量包含如下子步骤:将获取的打开的断言控制开关赋值给package包文件中的使能开关变量,使使能开关变量为使能打开状态;将获取的仿真时间赋值给package包文件中的仿真时间变量,使仿真时间变量为记分板出现比较问题时的仿真运行时间。
[0017]进一步,将数据变量赋值给pack本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种记分板和断言检查相结合的验证方法,其特征在于,包含如下步骤:在记分板里声明uvm_event事件,用于控制断言的使能开关变量;在UVM的phase机制中的build_phase里对所述uvm_event事件进行实例化,并传入到UVM的配置数据库里;将所有用于检查的所述断言封装到一个package包文件中,并可通过disable iff()关键字来控制所述断言的开关状态;在所述package包文件中创建派生于uvm_object的断言配置对象;创建验证平台,在所述验证平台的顶层模块里导入所述package包文件,用于让所述验证平台的验证环境可以使用封装好的断言检查和断言配置对象;在所述验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取所述断言检查的结果,从而实现对所述记分板中追踪到的问题的进一步的时序及协议的信号级检查。2.如权利要求1所述记分板和断言检查相结合的验证方法,其特征在于,所述断言配置对象中包括:控制断言的使能开关变量、仿真时间变量以及其他并发断言中需要使用到的仿真过程变量。3.如权利要求2所述记分板和断言检查相结合的验证方法,其特征在于,所述使能开关变量、所述仿真时间变量以及所述仿真过程变量需使用static关键字设置成全局静态变量。4.如权利要求3所述记分板和断言检查相结合的验证方法,其特征在于,在所述验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取所述断言检查的结果包含如下子步骤:声明并实例化所述断言配置对象;阻塞等待所述验证平台执行到刚好要进入消耗仿真时间的运行阶段,通过end_of_elaboration_phase句柄调用wait_for_state方法,把参数UVM...

【专利技术属性】
技术研发人员:马骁
申请(专利权)人:杭州云合智网技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1