当前位置: 首页 > news >正文

uvm(7)factory

重载

针对任务或者函数,定义virtual;然后就可以重载

第二个是 约束的重载

然后

m_trans.crc_err_cons.constraint_mode(0);
这个是关闭此约束

m_trans.constraint_mode(0);
这是关闭所有约束

还可以集成原来的transation直接重写约束起到重载的作用

用factory重载

set_type_override_by_type语句相当于在factory机制的表格中加入了一条记录。 当查到有重载记录时, 会使用新的类型来替代旧的类型
使用factory重载需要满足条件

        此函数原型如下


把第一个参数的类型重载成第二个参数的类型。

有时候可能并不是希望把验证平台中的A类型全部替换成B类型, 而只是替换其中的某一部分, 这种情况就要用到set_inst_override_by_type函数。 这个函数的原型如下:

举例如下

当进行如下操作

把monitor更新

无论是set_type_override_by_type还是set_inst_override_by_type, 它们的参数都是一个uvm_object_wrapper型的类型参数, 这种参数通过xxx: : get_type( ) 的形式获得。 UVM还提供了另外一种简单的方法来替换这种晦涩的写法: 字符串。

与set_type_override_by_type相对的是set_type_override, 它的原型是:

与set_inst_override_by_type相对的是set_inst_override, 它的原型是:
 

但是如果想在initial中使用的话,要用如下函数

full_inst_path就是要替换的实例中使用get_full_name( ) 得到的路径值
比如这个样子

其实上述函数就是原型

如下对命令行重载

连续重载

在有多个重载时, 最终重载的类要与最初被重载的类有派生关系。 最终重载的类必须派生自最初被重载的类, 最初被重载的类必须是最终重载类的父类。
 

也就是读完连续重载的语句然后在确定最终情况

调试重载

针对上述重载

或者如下

常用重载

重载transaction

对于一个default sequence,我们需要对里面的trans做更改就可以重载

然后在set trans就可以

sequence

就是用于嵌套的seq

component

上述常用于产生异常用例,就是上面两个

其实还可以用重载driver来产生

只需在build中

用于无法用重载seq的情形

factory机制实现

factory说白了就是通过字符串来创建一个类(new)

有如下相关函数

factory.create_object_by_type(my_transaction::get_type()))
 

一般只用到第一个参数

还有

factory.create_component_by_name("my_transaction", get_full_name(), "scb", this)

第一个参数是字符串类型的类名, 第二个参数是父结点的全名, 第三个参数是为这个新的component起的名字,第四个参数是父结点的指针。 在调用这个函数时, 这四个参数都要使用

本质上来看, factory机制其实是对SystemVerilog中new函数的重载。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • sql 优化,提高查询速度
  • java-idea如何配置plugins的Repositoies和proxy
  • DETR论文,基于transformer的目标检测网络 DETR:End-to-End Object Detection with Transformers
  • 面向对象编程-继承
  • 谷歌发布会现场尴尬瞬间:AI助手Gemini展示挑战苹果
  • 图数据库在社交网络分析中的应用
  • X-Recon:一款针对Web安全的XSS安全扫描检测工具
  • opencv基础的图像操作
  • 再见Figma!!新的设计,代码协作神器!【送源码】
  • C#单例模式
  • HTML5+JavaScript绘制彩虹和云朵
  • GNU/Linux - copy_{to,from}_user: 用户和内核空间的内存互拷贝
  • C++中的IO流
  • oracle使用sql生成表结构文档
  • 虚拟人实时主持创意互动方案:赋能峰会论坛会议等活动科技互动感
  • AngularJS指令开发(1)——参数详解
  • Codepen 每日精选(2018-3-25)
  • JAVA SE 6 GC调优笔记
  • linux学习笔记
  • mysql常用命令汇总
  • node入门
  • SAP云平台里Global Account和Sub Account的关系
  • webpack+react项目初体验——记录我的webpack环境配置
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 关于使用markdown的方法(引自CSDN教程)
  • 将 Measurements 和 Units 应用到物理学
  • 前言-如何学习区块链
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 思否第一天
  • 《天龙八部3D》Unity技术方案揭秘
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​【经验分享】微机原理、指令判断、判断指令是否正确判断指令是否正确​
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #{}和${}的区别是什么 -- java面试
  • $refs 、$nextTic、动态组件、name的使用
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)无线电失控保护(二)
  • (1)虚拟机的安装与使用,linux系统安装
  • (c语言)strcpy函数用法
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (深入.Net平台的软件系统分层开发).第一章.上机练习.20170424
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (译) 函数式 JS #1:简介
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .Net Core 中间件与过滤器
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET设计模式(8):适配器模式(Adapter Pattern)