(4)uvm_agent类:用来封装一个driver、一个monitor和一个sequencer。

(5)reference_model:用于完成和DUT相同的功能。reference model的输出被scoreboard接收,用于和DUT的输出相比较。

(6)uvm_scoreboard:用来进行数据比对和报告。

(7)uvm_env:是一个结构化的容器,用来容纳各组件。

(8)uvm_test:是验证环境的唯一入口,只有通过它才能正常运转uvm的phase机制。

2 DUT介绍

图2中的DUT实现了FM0和Miller副载波调制编码。在ISO/IEC18000-6C协议标准中,标签发送链路主要采用是FM0编码和Miller编码。编码方式的选择由m[1:0]来决定,只有当m值为2′b00时才会选择FM0编码,m为2′b01、2′b10、2′b11时选择Miller编码。

基于DPI-C接口的UVM验证平台设计与实现介绍

FM0编码是通过电平翻转的方式来实现编码,数据码元-0和-1翻转的次数不同。码元-0在码元周期中间会发生一次电平翻转,而码元-1只在每个码元起始处发生电平翻转。从图3所示FM0编码的状态跳转图可以看出FM0编码的码元-0和-1的波形,而且在FM0编码结束后需要在码元数据的尾端添加结束标志,结束标志会以固定码流来结束。码元波形和结束符如图4所示。

基于DPI-C接口的UVM验证平台设计与实现介绍

Miller编码又称为副载波调制编码,也是通过电平翻转的方式来实现编码。编码方式和状态跳转如图5所示。

基于DPI-C接口的UVM验证平台设计与实现介绍

根据Miller编码规则,按照m[1:0]值不同,每个数据可能被编码成4位、8位16位码元。如果m值为01,对应M值为2,每个数据编码为4位码元;m值为10,对应M值为4,每个数据编码为8位码元;m值为11,对应M值为8,每个数据编码为16位码元。Miller编码序列如图6所示,每个编码序列分别对应M值为2、4、8。由图可知数据编码时,只有在数据-0和-0边界电平不发生翻转跳变以外其他数据边界处都会发生电平的翻转跳变。

基于DPI-C接口的UVM验证平台设计与实现介绍

与FM0编码类似,Miller除了采用电平翻转实现编码外,编码结束后在数据的尾部同样需要添加结束标志。FM0采用固定码流作为结束标志,即保持持续码元电平。但是Miller编码的结束标志相对会复杂一些,如图7所示。