摘要:作用: 监测DUT的行为,driver负责把transaction级别的数据转变成DUT的端口级别,并驱动给DUT,monitor的行为与其相对,用于收集DUT的端口数据,并将其转换成transaction交给后续的组件如reference model,scoreboard等处理。 一些代码中用到的
阅读全文
摘要:env的作用: 实例化验证平台的各个组件,作为一个容器类,在这个容器里面实例化其他组件,然后再调用run_test时传递的参数就不再是my_driver,而是这个容器类,即让UVM自动创建这个容器类的实例。 所有env都应该派生自uvm_env,且与my_driver一样,容器类在仿真中也一直是存在
阅读全文
摘要:transaction概念: 可以简单地将transaction理解为一个包,在不同的验证平台中的transaction也不相同。 一个简单的transaction如下: 在这些代码中,其中dmac是48bit的以太网目的地址,smac是48bit的以太网源地址,ether_type是以太网类型,p
阅读全文
摘要:为了保证验证平台的可移植性,在根本上来说应该杜绝在验证平台中使用绝对路径 1.使用宏(这里不提) 2.使用interface 定义完interface之后,在top_tb中实例化DUT时就可以直接使用: 上面是在top_tb中使用interface,那如何在driver中使用interface呢?
阅读全文
摘要:先分析前面的: 上一节中虽然输出了"main_phase is called",但是"data is drived"并没有输出。但是既然进入了main_phase,应该会把这一整个任务执行完成才对,但是这里好像在执行的过程中被外力kill掉了? UVM中通过objection来控制验证平台的关闭 在
阅读全文
摘要:driver代码: 这里的factory机制被集成在了一个宏中:uvm_comphonent_utils。这个宏所做的事情非常多,其中之一就是将my_driver登记在UVM内部的一张表中,这张表是factory功能实现的基础。只要在定义一个新的类时使用这个宏,就相当于把这个类注册到了这个表中。 在
阅读全文
摘要:书中的DUT(待测设计)定义如下: 这个DUT的功能非常简单,通过rxd接收数据,再通过txd发送出去,其中rx_dv是接收的数据有效指示,tx_en是发送数据的有效指示。本章中的所有例子都是基于这个DUT. 验证平台中的所有组件都应该派生自UVM中的类。 比如UVM验证平台中的driver应该派生
阅读全文
摘要:1.1验证平台的组成: 一个验证平台中通常要实现以下的功能: 1.验证平台要能模拟DUT的各种真实使用情况,也就是可以提供激励,激励的功能是由driver来实现的。 2.验证平台要能够根据DUT的输出来判断DUT的行为是否与预期相符合,称为计分板scoreboard 3.验证平台能够收集DUT的输出
阅读全文