UVM sequence分层的几种体现

验证环境需要对数据进行分层。例如,将32比特的寄存器读写封装成数据读写和状态读写等实际业务操作等或者对底层sequence进行一些随机控制等。实现这种分层可以有两种方式:

1、Sequence layer,在sequencer内部(sequence)中进行分层,无需分别创建 high-layer sequencer和 low-layer sequencer。

2、Virtual sequence,在sequencer外部进行分层,例如使用virtual sequencer。

 

实际项目中,一般两种分层的手段都会采用。对于一个底层的数据项lower_env_items定义如下:

class lower_env_item extends uvm_sequence_item;
  rand bit[‘dATA_SIZE-1:0] payload[];
  rand int pl_size;
  constraint c_pload ( pl_size < `MAX_PL;
    payload.size() == pl_size; )
    ... // Constructor and OVM automation macros go here,
endclass : lower_env_item


底层的seuquence能够将 lower_env_item数据项驱动给DUT

class lower_env_base_seq extends uvm_sequence #(lower_env_item);
  ... // Constructor and `uvm_sequence_utils macro
  virtual task body();
    …
  en
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值