factory机制-重载(一)

VIPfactory机制-重载(一)
这里写自定义目录标题1.SystemVerilog对重载的支持2.对约束的重载3.factory 机制式的重载4.重载的方式和种类5.factory机制的调试1.SystemVerilog对重载的支持SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数或任务。重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现的行为依然是子类的行为。2.对约束的重载在测试一个DUT时
开通可读全文 ·2.9k 人阅读
最低0.47元/天 解锁文章

1.SystemVerilog对重载的支持

SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数或任务。
重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现的行为依然是子类的行为。

2.对约束的重载

在测试一个DUT时,当有多种异常情况需要测试。针对这些错误,在transaction中分别加入标志位,这些错误都是异常的情况,在大部分测试用例中,它们的值都应该为0,如果在每次产生transaction时进行约束会非常麻烦。
要解决上述问题,有两种解决方案:
1.是在定义transaction时,使用如下方式定义constraint:

class my_transcation extends uvm_sequence_item;
...
	constranint crc_err_cons{
   
   
		crc_err == 1'b0;
	}
	constraint sfd_err_cons{
   
   
		sfd_err == 1'b0;
	}
	constaint pre_err_cons{
   
   
		pre_err == 1'b0;
	}
endclass
1.在正常的测试用例中,使用如下方式随机化
my_transaction tr;
`uvm_do(tr)
2.在异常的测试用例中,使用如下方式随机化的前期是m_trans已经实例化,如果不实例化会报空指针的错误
virtual task body();
	m_trans = new();
	`uvm_info("sequence", "turn off constraint", UVM_MEDIUM)
	m_trans.crc_err_cons.constraint_mode(0); 关闭约束
	`uvm_rand_send_with(m_trans, {
   
   crc_err dist {
   
   0 
VIP 《UVM实战》笔记——第八章 factory机制 UVM实战笔记之工厂机制,持续更新中 开通可读全文·2.1k 阅读·1 点赞·10 收藏 阅读全文

相关推荐

UVM(二):factory机制——工厂的作用及本质、重载(override)

1.factory机制的作用 在SystemVerilog中,我们知道,要创建一个类的实例,必须使用new()函数。而在UVM中,提供了factory机制:它可以根据类名创建这个类的一个实例;另外,还可以在创建类的实例时根据是否有重载类型来决定是创建原始的类,还是创建重载后的类的实例。 从本质上来看,factory机制其实是对SystemVerilog中new函数的重载:原始的new函数功能太过简单。经过factory机制的改良后,进行实例化的方法多了很多。 2.使...

weixin_43701504的博客 9715

《UVM实战》笔记 UVM中的factory机制(重载)

第8章 UVM中的factory机制(重载) 只要是面向对象的语言,都有重载功能。 使用set_type_override_by_type函数可以实现两种不同类型之间的重载, set_inst_override_by_type函数(并不是希望把验证平台中的A类型全部替换成B类型,而只是替换其中的某一部分) extern static function void set_type_override_by_type (uvm_object_wrapper original_type, /

weixin_44857476的博客 4018

UVM实战_6_UVM中的factory机制

本章内容主要对UVM实战第8章的内容做出总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

weixin_61103637的博客 883

【System Verilog and UVM基础入门8】factory机制

factory

TommiWei的博客 436

#C8# UVM中的factory机制 #S8.5# 对factory机制的重载进一步思考(一)

特性Overloading (重载)Polymorphism (多态)绑定时间编译时(静态绑定)运行时(动态绑定,虚函数)作用域同一作用域内跨继承层次实现方式参数列表不同virtual+ 继承目的扩展函数/操作符的适用性实现接口统一,行为差异化。

那么菜的博客 586

UVM:factory 机制

目录1. 注册2. 创建3. 创建函数的重载3.1. 重载方法一次重载连续重载3.2. 信息打印 译作工厂机制,来源于设计模式中的工厂机制。 factoy机制的意义在于:通过将拓展类在工厂注册,可实现环境内部组件的创建与对象的重载 factory机制主要针对构成验证环境层次的uvm_component及其子类,以及构成环境配置属性和数据传输的uvm_object及其子类 1. 注册 使用factory机制的第一步就是将类注册到工厂。这个factory是整个全局仿真中存在且唯一的“机构”,所有被注册的类才能

Starry__的博客 5455

从Reset到Read:深入解析Rolling Shutter曝光流水线

本文深入解析Rolling Shutter(卷帘曝光)的工作原理,重点探讨Reset和Read信号在图像传感器中的关键作用。通过Reset-Read流水线机制,详细解释了曝光控制、时序调优及运动伪影补偿等核心技术,帮助读者理解卷帘曝光在高速摄影和动态场景中的应用。

weixin_42531925的博客 249

地质工程师必备:Dips软件从数据导入到主结构面分析的完整流程解析

本文详细解析了地质工程师使用Dips软件进行主结构面分析的完整流程。从数据准备与导入、结构面分组与扇形区划分,到主结构面计算与工程解读,系统阐述了如何将野外节理数据转化为控制岩体稳定性的关键信息。重点介绍了利用等值线图识别优势组、计算统计主值及其置信椭圆,并强调了地质判断与工程应用结合的重要性。

table的专栏 330

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1256

Qt Creator设计器里也能拖拽?5步将你的QML自定义控件变成可视化插件(Qt6.5+)

本文详细介绍了如何在Qt Creator设计器中实现QML自定义控件的可视化拖拽功能(Qt6.5+)。通过5个步骤,从构建可插件化的QML控件基础到部署插件到设计器环境,帮助开发者将自定义控件转化为设计器插件,提升团队协作效率。特别适合需要频繁调整UI样式的开发场景。

weixin_29214559的博客 165

嵌入式STM32控制电梯面板

嵌入式STM32控制电梯面板 用点阵来显示电梯向上还是向下运动,用数码管来显示楼层数(由于灯阵显示楼层数比较困难故用数码管代替)。当按下对应的按钮,就可以去到对应层数,可上升可下降。 #include "stm32f10x.h" #include "stm32f10x_exti.h" #include "stm32f10x_it.h" #define uint unsigned int #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10) #define

code_init_的博客 2107

ROS与Qt5人机交互界面开发:添加rviz显示界面

最后,点击"完成"以创建新的Qt5应用程序项目。通过结合ROS和Qt5,您可以创建强大的人机交互界面,以实现丰富的机器人控制和数据可视化。在本教程中,我们将在主窗口中创建一个简单的按钮,用于启动rviz显示界面。在Qt Creator的槽函数编辑器中,为按钮添加一个槽函数,该函数将在单击按钮时调用。在上面的代码中,我们使用QProcess类启动了一个新的进程,并执行"rviz"命令来启动rviz显示界面。当您单击Qt5应用程序中的按钮时,将会启动一个新的rviz窗口,显示机器人数据的可视化界面。

CodeJolt的博客 2063

uniapp [全端兼容] - 实现人脸识别对比+人脸相似度,从相册选择或拍照上传两张图片进行人脸对比得到人脸相似度及判断是否是同一个人,人脸活体检测及对比(免费纯前端方案+调用第三方API接口方案)

uniApp人脸对比 人脸对比识别 人脸对比相似度,uniapp实现获取手机摄像头权限,调用相机拍照实现人脸识别相似度对比,uniapp实现人脸识别对比,计算两张人脸的相似度,从而判断是否同一个人,并给出相似度评分。uniapp H5网页如何实现人脸相似度比对,uniapp纯前端怎么对比两张图片的相似度,计算两幅图像的相似度,图像相似度对比方法,UNI-APP人脸相似度对比,快速识别两张照片的相似程度(用百分比)图片相似度对比在线测试,图片相似度对比,uniapp微信小程序人脸相似度对比分析,uniapp

🏆 前端领域优质创作者 5007

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 如何使用VCS和verdi跑通《UVM实战》上的例子
下一篇: factory机制-重载(二)

双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —
卢卡喵
博客等级 码龄9年 8064粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值