IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 《UVM实战》笔记 UVM中代码的可重用性 -> 正文阅读

[开发测试]《UVM实战》笔记 UVM中代码的可重用性

第9章 UVM中代码的可重用性

UVM之uvm_callback详解_liuwei848的博客-CSDN博客

9.1 callback机制

如果把两个项目不同的地方使用callback函数来做,而把相同的地方写成一个完整的env,这样重用时,只要改变相关的callback函数env可完全的重用。

my_transaction的最后一个字段是CRC校验信息。假如没有post_randomize(),那么CRC必须在整个transaction的数据都固定之后才能计算出来。

post_randomize函数是SystemVerilog提供的广义的callback函数。UVM也为用户提供了广义的callback函数/任务:pre_body和post_body,除此之外还有pre_do、mid_do和post_do。相信很多用户已经从中受益了。

callback机制如何实现的?

UVM中又引入了一个类,假设这个类称为A_pool,意思就是专门存放A或者A的派生类的一个池子。UVM约定会执行这个池子中所有实例的pre_tran函数/任务

9.1.7 callback机制、sequence机制和factory机制

callback机制、sequence机制和factory机制在某种程度上来说很像:它们都能实现搭建测试用例的目的。只是sequence机制是UVM一直提倡的生成激励的方式,UVM为此做了大量的工作,如构建了许多宏、嵌套的sequence、virtual sequence、可重用性等。

8.3.4节中列出的那四条理由,依然适用于callback机制。虽然callback机制能够实现所有的测试用例,但是某些测试用例用sequence来实现则更加方便。virtual sequence的协调功能在callback机制中就很难实现。

callback机制、sequence机制和factory机制并不是互斥的,三者都能分别实现同一目的。当这三者互相结合时,又会产生许多新的解决问题的方式。如果在建立验证平台和测试用例时,能够择优选择其中最简单的一种实现方式,那么搭建出来的验证平台一定是足够强大、足够简练的。实现同一事情有多种方式,为用户提供了多种选择,高扩展性是UVM取得成功的一个重要原因。

9.3 参数化的类

使用最多的参数化的类莫过于uvm_sequence了,在派生uvm_sequence时指定参数的类型,即transaction的类型,可以方便地产生transaction并建立测试用例。除了uvm_sequence外,还有uvm_analysis_port等,不再一一列举。

virtual class uvm_sequence #(type REQ = uvm_sequence_item,

type RSP = REQ) extends uvm_sequence_base;

9.4 模块级到芯片级的代码重用

现代芯片的验证通常分为两个层次,

一是模块级别(block level,也称为IP级别、unit级别)验证,

二是芯片级别(也称为SOC级别)验证

一个大的芯片在开发时,是分成多个小的模块来开发的。每个模块开发一套独立的验证环境,通常每个模块有一个专门的验证人员负责。当在模块级别验证完成后,需要做整个系统的验证。

图9-4:在验证平台中,每个模块验证环境需要在其env中添加一个analysis_port用于数据输出;添加一个analysis_export用于数据输入;在env中设置in_chip用于辨别不同的数据来源。在chip_env中,实例化env_A、env_B、env_C,将env_B和env_C的in_chip设置为1,并将env_A的ap口与env_B的i_export相连,将env_B的ap与env_C的i_export相连接。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 11:05:29  更:2021-08-02 11:05:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:20:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码