【SystemVerilog 之 进阶内容(向UVM过渡)】~ 类型转换、虚方法、对象拷贝、回调函数、参数化的类

1. 类型转换

1.1 概述

在这里插入图片描述

1.2 动态转换

之前我们已经接触过静态转换了,我们接下来看一下动态转换。
在这里插入图片描述

1.2.1 子类句柄赋值于父类句柄

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
答案:A,调用的是父类的方法
解析:因为tr的类型是父类,所以就算是子类句柄赋值与它,那它能够访问的范围也只有父类本身。

1.2.2 父类句柄赋值于子类句柄

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
答案:B,调用的是子类的方法
解析:通过cast之后父类句柄指向子类句柄之后,可以访问子类的方法。

练习

在这里插入图片描述
答案:ABC
解析:D错误,动态转换失败会返回0,所以是有提示的。

2. 虚方法

2.1 概述

在这里插入图片描述

2.2 非虚函数的调用

在这里插入图片描述
在这里插入图片描述
从上图可以发现,父类中test方法为 非虚方法,所以子类句柄赋值与父类句柄,之后先调用子类的test方法,打印结果是子类的test方法;随后调用父类句柄的test方法,结果只打印父类test方法。

2.3 虚函数的调用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4 新手建议

在这里插入图片描述

2.5 练习

在这里插入图片描述
答案:A
解析:B错误,混淆概念,虚方法讲的是多态,而super讲的是继承,不一样的;C错误,虚方法顾名思义只对方法起作用,如果父类句柄指向子类句柄,可以动态绑定成员方法,而不可以绑定成员变量;D错误,继承必须是同名同参同类型,这也是继承的要求,和多态不能混淆。

3. 对象拷贝

3.1 区别 ”两种方式“

在这里插入图片描述

3.1.1 指向同一个对象

在这里插入图片描述
在这里插入图片描述

3.1.2 浅拷贝

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
答案:$cast(h, t);
在这里插入图片描述

3.2 概述

在这里插入图片描述

3.3 小结

在这里插入图片描述

4. 回调函数

4.1 概述

在这里插入图片描述

4.2 使用流程

4.2.1 预留回调函数的入口

在这里插入图片描述

4.2.2 定义回调的类以及类中的各个函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.3 例化并且添加回调类的实例

在这里插入图片描述

练习

在这里插入图片描述
答案:ABCD

5. 参数化的类

5.1 概述

在这里插入图片描述

5.2 举例说明

实现一个简化的mailbox
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

练习

在这里插入图片描述
答案:ABD
解析:C错误,不可以随意转换。

声明

本人所有系列的文章,仅供学习,不可商用,如有侵权,请告知,立删!!!

本人主要是记录学习过程,以供自己回头复习,再就是提供给后人参考,不喜勿喷!!!

如果觉得对你有用的话,记得收藏+评论!!!

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 枚举类型 23 字符串 25 1.2 过程块和方法 27 initial和always 30 function逻辑电路 33 task时序电路 35 动态 静态变量 39 1.3 设计例和连接 45 第二章 验证的方法 393 动态仿真 395 静态检查 397 拟模型 403 硬件加速 405 效能验证 408 性能验证 410 第三章 SV组件实现 99 3.1 接口 100 什么是interface 101 接口的优势 108 3.2 采样和数据驱动 112 竞争问题 113 接口中的时序块clocking 123 利于clocking的驱动 133 3.3 测试的开始和结束 136 仿真开始 139 program隐式结束 143 program显式结束 145 软件域program 147 3.4 调试方法 150 第四章 验证的计划 166 4.1 计划概述 166 4.2 计划的内容 173 4.3 计划的实现 185 4.4 计划的程评估 194 第五章 验证的管理 277 6.1 验证的周期检查 277 6.2 管理三要素 291 6.3 验证的收敛 303 6.4 问题追踪 314 6.5 团队建设 321 6.6 验证的专业 330 第六章 验证平台的结构 48 2.1 测试平台 49 2.2 硬件设计描述 55 MCDF接口描述 58 MCDF接口时序 62 MCDF寄存器描述 65 2.3 激励发生器 67 channel initiator 72 register initiator 73 2.4 监测器 74 2.5 比较器 81 2.6 验证结构 95 第七章 激励发生封装:类 209 5.1 概述 209 5.2 类的成员 233 5.3 类的继承 245 三种类型权限 protected/local/public 247 this super 253 成员覆盖 257 5.4 句柄的使用 263 5.5 包的使用 269 第八章 激励发生的随机 340 7.1 随机约束和分布 340 权重分布 353 条件约束 355 7.2 约束块控制 358 7.3 随机函数 366 7.4 数组约束 373 7.5 随机控制 388 第九章 线程与通信 432 9.1 线程的使用 432 9.2 线程的控制 441 三个fork...join 443 等待衍生线程 451 停止线程disable 451 9.3 线程的通信 458 第十章 程评估:覆盖率 495 10.1 覆盖率类型 495 10.2 功能覆盖策略 510 10.3 覆盖组 516 10.4 数据采样 524 10.5 覆盖选项 544 10.6 数据分析 550 第十一章 SV语言核心 552 11.1 类型转换 552 11.2 方法 564 11.3 对象拷贝 575 11.4 回调函数 584 11.5 参数的类 590 第十二章 UVM简介 392 8.2 UVM简介 414 8.3 UVM组件 420 8.4 UVM环境 425

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值