【DVCon-US-2020】基于RAL的UVM Sequence自动生成方法

简介: 【DVCon-US-2020】基于RAL的UVM Sequence自动生成方法

论文概述


 本文题目 Automated Generation of RAL-based UVM Sequences,作者是 Intel 的加拿大工程师。


 本文提出了一种 基于RAL(寄存器抽象层)的UVM Sequence自动生成 方法,并探讨了 通过划分TB约束范围来加速仿真 的问题。




研究目的


 通常而言,我们通过配置一组寄存器来控制 DUT 的硬件行为,以使 DUT 工作在某一 feature 下。对于不同的 feature,配置的寄存器以及配置寄存器的顺序或有不同。目前,比较常用的配置寄存器的方法是采用 UVM RAL Model 来配置 DUT 寄存器。这就意味着:我们要针对每一个feature制定一个programming sequence,并coding 成uvm sequence。


 想必各位DV同学在验证过程中遇到过这些情况:feature太多了,feature又变了,programming sequence又变了,寄存器又变了 …… 手动写、手动改,手都麻了


 怎么办?自动化!用脚本实现自动化!



新方法


 本文提出了一种 从设计文档自动生成基于RAL的UVM Sequence的方法 ,并探讨了 通过划分TB约束范围来加速仿真 的问题。图1是脚本生成UVM sequence的UVM 测试框架。


e91275f044ca43d7b68b371ed247bfcd.png

图1 Modified UVM test framework integrated with the RAL and UVM sequence auto-generation scripts



 该方法的主体思路总结如下:


   标准设计文档。写一份特定格式的设计spec,要求机器可读。该文档中需包含两个重要子spec,其一是寄存器spec,其二是各个feature的programming sequence spec。

   解析脚本。用脚本自动解析该文档,自动生成uvm sequence和ral sequence。


   每次更新设计文档,重新解析一次重新生成相关sequence即可。




 以上方法中,有几个地方我重点解释一下:


   设计文档中的programming sequence设计为有向无环图的状态机形式,便于脚本正确生成对应uvm sequence。


   为了提高coverage,这需要对RAL Model的寄存器值进行大范围随机。在较大的设计中,但考虑到寄存器间或许存在依赖关系,仅靠ral自己随机或手动在ral内添加随机约束均不太现实,ral model全部寄存器随机约束很复杂,解约束耗时久。而且不同feature下ral model的随机方案也不同。


在本文自动生成环境中,是怎么实现的呢?——针对用config_db,每一个feature的test的uvm sequence都对应一个特定的config_db,在test里set给ral sequence,且只随机我们在验证的block相关的寄存器,以此来减小解随即约束的时间(就是前边说的加速仿真),也能过防止随机出预期外的错误结果。




讨论


 这个方法好,DV再也不怕设计文档变化啦!


 方法是好方法,但实话说,本文所用的自动生成test sequence的概念并不是很新,成熟点的公司都有类似的脚本吧。


 真正要把这方法用起来,需要DE同学在写设计spec的时候规范一点。尤其是programming sequence,每个寄存器怎么配、配多少,都要写得清清楚楚。这么多feature …… 这个方法解放了DV,苦了DE啊,估计DE要骂娘了。DE不写DV愿意写也行,谁都不写的话,这方法也用不起来。





目录
相关文章
|
缓存 异构计算 Perl
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
2609 3
【毅力挑战】PCIe 每日一问一答(2022.04 归档)
|
Java 数据库
JPA通用策略生成器(@GeneratedValue 四种标准用法为TABLE, SEQUENCE, IDENTITY, AUTO)
JPA通用策略生成器(@GeneratedValue 四种标准用法为TABLE, SEQUENCE, IDENTITY, AUTO)
199 0
|
存储 索引
开发指南—Sequence—显示用法—创建Sequence
本文主要介绍如何创建各种类型的Sequence。
107 0
开发指南—Sequence—显示用法—修改Sequence
本文主要介绍如何对Sequence的各种类型进行修改。
131 0
PCIe 均衡技术介绍(概要)
PCIe 均衡技术介绍(概要)
1856 0
PCIe 均衡技术介绍(概要)
|
芯片 流计算 内存技术
【UCIe】初识 UCIe
【UCIe】初识 UCIe
2298 2
【UCIe】初识 UCIe
【SV 基础】queue 的一些用法
【SV 基础】queue 的一些用法
1594 0
|
编译器
【UVM避坑】记录 UVM / SV 使用过程中遇到的琐碎问题
【UVM避坑】记录 UVM / SV 使用过程中遇到的琐碎问题
1434 0
【UVM避坑】记录 UVM / SV 使用过程中遇到的琐碎问题
|
缓存 C++
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
3736 1
【毅力挑战】PCIe 每日一问一答(2022.03 归档)
|
数据采集 缓存 芯片
一文搞懂SPI通信协议
SPI是串行外设接口(Serial Peripheral Interface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10M/bps。