记分板和断言检查相结合的验证方法与流程

文档序号:30658847发布日期:2022-07-06 01:24阅读:393来源:国知局
记分板和断言检查相结合的验证方法与流程

1.本发明涉及芯片验证技术领域,特别涉及一种记分板和断言检查相结合的验证方法。


背景技术:

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

技术实现要素:

11.根据本发明实施例,提供了一种记分板和断言检查相结合的验证方法,包含如下步骤:在记分板里声明uvm_event事件,用于控制断言的使能开关变量;在uvm的phase机制中的build_phase里对uvm_event事件进行实例化,并传入到uvm的配置数据库里;将所有用于检查的断言封装到一个package包文件中,并可通过disable iff()关键字来控制断言的开关状态;在package包文件中创建派生于uvm_object的断言配置对象;创建验证平台,在验证平台的顶层模块里导入package包文件,用于让验证平台的验证环境可以使用封装好的断言检查和断言配置对象;在验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取断言检查的结果,从而实现对记分板中追踪到的问题的进一步的时序及协议的信号级检查。
12.进一步,断言配置对象中包括:控制断言的使能开关变量、仿真时间变量以及其他并发断言中需要使用到的仿真过程变量。
13.进一步,使能开关变量、仿真时间变量以及仿真过程变量需使用static关键字设置成全局静态变量。
14.进一步,在验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取断言检查的结果包含如下子步骤:声明并实例化断言配置对象;阻塞等待验证平台执行到刚好要进入消耗仿真时间的运行阶段,通过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包文件中相应的并发断言进行检查,将断言配置对象的全局静态变量作为并发断言检查的输入参数进行传入,获取断言检查的结果。
15.进一步,数据变量包含:打开的断言控制开关、仿真时间以及其他仿真过程参数变量。
16.进一步,将数据变量赋值给package包文件中的断言配置对象的全局静态变量包含如下子步骤:将获取的打开的断言控制开关赋值给package包文件中的使能开关变量,使使能开关变量为使能打开状态;将获取的仿真时间赋值给package包文件中的仿真时间变量,使仿真时间变量为记分板出现比较问题时的仿真运行时间。
17.进一步,将数据变量赋值给package包文件中的断言配置对象的全局静态变量还包含如下子步骤:根据项目需要,将其他仿真过程参数变量传递给其他并发断言中需要使用到的仿真过程变量。
18.根据本发明实施例的记分板和断言检查相结合的验证方法,具备如下有益效果:(1)本发明实施例创新地使用了uvm_event事件同步,uvm的配置数据库以及uvm的phase机制的综合方法,实现了记分板和并发断言检查之间的紧密关联配合,从而帮助验证开发人员进行更加全面的功能检查以及更快的定位问题的根源。
19.(2)本发明实施例实现了记分板和并发断言检查之间的仿真过程中的参数共享,从而创新性的实现了并发断言检查的动态特性,避免了原本只能在静态的模块(module)或者接口(interface)中来使用的缺陷。
20.(3)本发明实施例既避免了记分板检查不到信号级问题的缺陷,又解决了并发断言在整个仿真过程中都被使能激活所带来的仿真性能问题,创新性的将两者结合从而实现了先通过记分板从抽象的事务级层面的功能检查,然后再通过并发断言从更为细节具体的信号级层面的时序及协议方面的检查,最终实现了对dut功能问题根源的快速定位,大大提升了验证开发人员的工作效率,与此同时也大大提升了验证工作的质量。
21.要理解的是,前面的一般描述和下面的详细描述两者都是示例性的,并且意图在于提供要求保护的技术的进一步说明。
22.附图说明
23.图1为记分板的组成结构图。
24.图2为现有方案的验证平台结构图。
25.图3为根据本发明实施例记分板和断言检查相结合的验证方法的验证平台结构图。
26.图4为根据本发明实施例记分板和断言检查相结合的验证方法的流程图。
27.图5为根据本发明实施例记分板和断言检查相结合的验证方法的第一子步骤流程图。
28.图6为根据本发明实施例记分板和断言检查相结合的验证方法的第二子步骤流程图。
29.图7为根据本发明实施例记分板和断言检查相结合的验证方法的第三子步骤流程图。
30.具体实施方式
31.以下将结合附图,详细描述本发明的优选实施例,对本发明做进一步阐述。
32.首先,将结合图3~7描述根据本发明实施例的记分板和断言检查相结合的验证方法,用于芯片的验证使用,其应用场景很广。
33.如图3~7所示,本发明实施例的记分板和断言检查相结合的验证方法,具有如下步骤:在s1中,如图4所示:在记分板里声明uvm_event事件,用于控制断言的使能开关变量。
34.在s2中,如图4所示:在uvm的phase机制中的build_phase里对uvm_event事件进行实例化,并传入到uvm的配置数据库里。在本实施例中,这里传入的范围空间为整个验证平台,然后在run_phase的参考模型输出结果和dut实际运算结果进行比较的过程中,如果出现比较错误,则调用trigger方法触发uvm_event事件。同时调用系统函数$time获取当前仿真时间,然后将控制断言的开关打开,并且同样将当前仿真时间和使能打开的断言控制开关传入到uvm配置数据库里,注意传入的范围空间依然为整个验证平台。除此之外,还可以传递更多并发断言中需要使用到的仿真过程变量参数,从而使得记分板和断言检查两者紧密的关联和配合来进行功能检查和问题定位。
35.在s3中,如图4所示:将所有用于检查的断言封装到一个package包文件中,并可通过disable iff()关键字来控制断言的开关状态。在本实施例中,disable iff()是systemverilog语言提供的语法功能,用于控制语句的使能开关,而systemverilog是数字芯片设计和验证的编程开发语言。
36.在s4中,如图4所示:在package包文件中创建派生于uvm_object的断言配置对象。进一步,在本实施例中,断言配置对象中包括:控制断言的使能开关变量、仿真时间变量以及其他并发断言中需要使用到的仿真过程变量。使能开关变量、仿真时间变量以及仿真过程变量需使用static关键字设置成全局静态变量。
37.在s5中,如图4所示:创建验证平台,在验证平台的顶层模块里导入package包文件,用于让验证平台的验证环境可以使用封装好的断言检查和断言配置对象。
38.在s6中,如图4所示:在验证平台的顶层模块的程序控制块里按照执行顺序依次执行检查命令,获取断言检查的结果,从而实现对记分板中追踪到的问题的进一步的时序及协议的信号级检查。在本实施例中,程序控制块initial begin ...end这是systemverilog语言提供的程序块语法,该程序块在仿真运行期间只会被执行一次。
39.进一步,如图5所示:在本实施例中,在验证平台的顶层模块的程序控制块里按照
执行顺序依次执行检查命令,获取断言检查的结果包含如下子步骤(即第一子步骤):在s61中,如图5所示:声明并实例化断言配置对象。
40.在s62中,如图5所示:阻塞等待验证平台执行到刚好要进入消耗仿真时间的运行阶段,通过end_of_elaboration_phase句柄调用wait_for_state方法,把参数uvm_phase_done和uvm_eq传递进验证平台来等待end_of_elaboration_phase阶段的运行结束。uvm_eq指的是uvm定义的用于表示等于的逻辑运算动作,它是一个枚举类型参数,uvm_phase_done指的是uvm定义的用于表示当前phase的运行阶段,即该phase即将结束关闭的状态。将二者综合在一起的含义就是“阻塞等待验证平台执行到刚好要进入消耗仿真时间的运行阶段。
41.在s63中,如图5所示:从uvm的配置数据库中获取在记分板里的uvm_event事件,调用获取的uvm_event事件的wait_trigger方法来等待uvm_event事件被触发。
42.在s64中,如图5所示:当uvm_event事件被触发后,获取在记分板中uvm_event事件触发时的数据变量。进一步,在本实施例中,数据变量包含:打开的断言控制开关、仿真时间以及其他仿真过程参数变量。
43.在s65中,如图5所示:将数据变量赋值给package包文件中的断言配置对象的全局静态变量。
44.进一步,如图6所示,在本实施例中,将数据变量赋值给package包文件中的断言配置对象的全局静态变量包含如下子步骤(即第二子步骤):在s651中,如图6所示:将获取的打开的断言控制开关赋值给package包文件中的使能开关变量,使使能开关变量为使能打开状态,从而实现在记分板出现比较问题的时候再通过变量打开断言检查,以提升仿真性能。
45.在s652中,如图6所示:将获取的仿真时间赋值给package包文件中的仿真时间变量,使仿真时间变量为记分板出现比较问题时的仿真运行时间,从而可以实现在并发断言中使用该仿真运行时间变量,以控制断言检查的仿真时间窗口,从而进一步缩小仿真时间范围,更快的定位问题的根源。
46.进一步,如图7所示,在本实施例中,将数据变量赋值给package包文件中的断言配置对象的全局静态变量还包含如下子步骤(即第三子步骤):在s653中,如图7所示:根据项目需要,将其他仿真过程参数变量传递给其他并发断言中需要使用到的仿真过程变量,从而实现两者运行参数的共享。
47.在s66中,如图5所示,调用package包文件中相应的并发断言进行检查,将断言配置对象的全局静态变量作为并发断言检查的输入参数进行传入,获取断言检查的结果。
48.以上,参照图3~7描述了根据本发明实施例的记分板和断言检查相结合的验证方法,具备如下有益效果:(1)本实施例创新地使用了uvm_event事件同步,uvm的配置数据库以及uvm的phase机制的综合方法,实现了记分板和并发断言检查之间的紧密关联配合,从而帮助验证开发人员进行更加全面的功能检查以及更快地定位问题的根源。
49.(2)本实施例实现了记分板和并发断言检查之间的仿真过程中的参数共享,从而创新性地实现了并发断言检查的动态特性,避免了原本只能在静态的模块(module)或者接口(interface)中来使用的缺陷。
50.(3)本实施例既避免了记分板检查不到信号级问题的缺陷,又解决了并发断言在
整个仿真过程中都被使能激活所带来的仿真性能问题,创新性地将两者结合从而实现了先通过记分板从抽象的事务级层面的功能检查,然后再通过并发断言从更为细节具体的信号级层面的时序及协议方面的检查,最终实现了对dut功能问题根源的快速定位,大大提升了验证开发人员的工作效率,与此同时也大大提升了验证工作的质量。
51.需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包含
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
52.尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
当前第1页1 2 
网友询问留言 已有1条留言
  • 183620... 来自[中国] 2023年02月06日 15:44
    非常有用,开阔了视野
    0
1