第二节目录
UVM平台的主要组件
创建用户所需的transaction(事务)
创建sequence
创建sequencer
创建driver
创建monitor
创建agent
创建environment
创建testcase
运行仿真
driver:将接收到的事务,转化为pin级信号,通过接口,驱动到被测设计的端口上
sequencer:sequencer启动后,会产生事务,将事务转发给driver
monitor:监视接口上的信号,包括被测设计的输入、输出信号;将获取的pin级信号转化为事务及对象,然后给其他组件进行处理。
reference modle:模拟DUT的功能行为,根据输入的激励产生相应的结果,该结果称为参考值或者期望值。
master agent中的monitor会将DUT的输入收集下来,发送给参考模型,作为参考模型的输入
slave agent中的monitor收集DUT的输出信息,将获取的pin级信号转化为事务及对象,然后发送给其他组件进行分析。
一般情况下,slave agent不需要驱动DUT,只包含monitor。
scoreboard:从两个地方获取数据,一个是参考模型发过来的期望值,另外一个是slave agent发来的DUT输出值,在积分板中,对这两个值进行比较,由此来判断DUT的功能是否正确。
同时可以将功能覆盖率嵌入scoreboard中,以实现覆盖率的收集。
各个组件存在数据通信,将各个组件用某种方式连接起来。
一旦env完成,在后续的测试案例中,不能对其进行更改。如果需要更改env,那么之前通过的测试案例需要重新执行。
在一个测试项目中,测试案例可以有多个,但env只有一个,并且env一旦确定,就不能随意更改。
对整个平台的配置,都是在testcase中完成滴,因此,在构建env的时候,需要事先配置好接口,env具有可配置性。
从基类扩展
参考模型需要从uvm_component扩展
UVM需要建立某种机制,将需要通信的接口连接起来,使用通信端口来建立组件之间的连接。
uvm的端口有很多中,根据不同的场合,不同的需求来选用。
类比举例:组件比作工厂的流水线的设备,事务就是穿梭于设备中的产品;事务是组件的操作对象
最后,只剩下了一个master agent,实现的功能:仅产生事务,并把事务发送到driver上。