(21)UVM 层次类序列(hierarchical sequence)

本文介绍了在UVM环境下,如何利用层次序列(hierarchical sequence)实现数字IC验证的水平和垂直复用。通过举例说明,阐述了底层sequence如何设计成合理粒度,以及顶层协调sequence如何组织和调度这些sequence,以完成复杂的测试场景。层次序列在验证加速和场景复用中起着关键作用。
摘要由CSDN通过智能技术生成

UVM 层次类序列(hierarchical sequence)

本节开始,先抛出一个问题,如何完成验证的水平复用和垂直复用?

  • 就水平复用而言,它指的是如何利用已有资源,完成高效的激励场景创建
  • 就垂直复用而言,可以完成结构复用和激励场景复用两个方面。

无论是水平复用还是垂直复用,激励场景的复用很大程度上取决于如何设计sequence,使得底层的sequence实现合理的粒度,帮助完成水平复用,进一步依托于底层激励场景,最终可以实现底层到高层的垂直复用。

以下图为例,介绍hierarchical sequence。其中DUT是一个MCDF(multi-channel data formatter 多通道数据整形器)中的寄存器模块。寄存器主要包括三个测试通道的控制寄存器和只读寄存器。
在这里插入图片描述
在验证MCDF的寄存器模块时,Verifier将SV验证环境进化到了UVM环境之后,关于测试寄存器模块的场景可以将其拆解为:

  • 设置时钟和复位
  • 测试通道1的控制寄存器和只读寄存器
  • 测试通道2的控制寄存器和只读寄存器
  • 测试通道3的控制寄存器和只读寄存器

上面的测试场景拆解下的sequence需要挂载的都是reg_master_agent中的sequencer。这里给出代码来说明底层sequence的设计和顶层hierarchical sequence对这些底层sequence的结构化使用。

typedef enum{
   CLKON,CLKOFF,RESET,WRREG,RDREG} cmd_t;
class bus_trans extends uvm_sequence_item;
	rand cmd_t cmd;
	rand int addr;
	rand int data;
	constraint cstr{
   
		soft addr == 'h0;
		soft data == 'h0;
	};
	...
endclass

class clk_rst_seq extends uvm_sequence;
	rand int freq;
	...
	task body();
		bus_trans req;
			
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字IC小白的日常修炼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值