书中的DUT(待测设计)定义如下:
这个DUT的功能非常简单,通过rxd接收数据,再通过txd发送出去,其中rx_dv是接收的数据有效指示,tx_en是发送数据的有效指示。本章中的所有例子都是基于这个DUT.
验证平台中的所有组件都应该派生自UVM中的类。
比如UVM验证平台中的driver应该派生自uvm_driver,一个简单的driver如下例所示:
下面是本人初学时对代码的理解,因为sv没学多少直接来看的,所以刚开始重点在于语法的理解:
3(第三行):这里的语法点是class中extends的用法,用于类的继承。
5:所有派生自uvm_driver的类的new函数都有两个参数,string类型的name和uvm_component的parent类型,name参数好理解,就是名字而已。parent书上说难理解后面再说。
6:这里的super.new()的用法是:
8:这里首先是extern这个关键字,这个关键字指示该任务可以在类的外部进行实现(任务的具体内容可以在class外面定义),然后在定义了virtual时,在子类中调用时会先在子类中查找,没有再去父类中查找。然后后面的task跟着的应该就是11行下面的内容了。
11:driver所做的事情几乎都是在main_ohase中完成。uvm由phase来管理验证平台的运行,这些phase统一以xxxx_phase来命名,且都有一个类型为uvm_phase、名字为phase的参数。main_phase是uvm_driver中预先定义好的一个任务,因此可以简单地认为实现一个driver等于实现其main_phase。
后面的内容就是在生成激励了,向rxd上发送256个随机数据,并将rx_dv信号置为高电平。
然后uvm_info这个宏是用来打印信息的,三个参数,第一个是用来给打印信息分类的字符串,第二个信息是要打印的内容,第三个信息是冗余级别(类似于优先级)(UVM_LOW代表的是关键信息)。
标签:验证,driver,uvm,phase,2.2,main,UVM From: https://www.cnblogs.com/tomako123/p/18191440