| |
|
开发:
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等,不再一一列举。
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 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |