【IC基础知识】$cast的使用

本文介绍了在编程项目中关于$cast()函数的使用,区分了向上(父类转子类)和向下(子类转父类)转换的概念,强调了类型安全的重要性,特别是处理父类和子类关系时的注意事项。
摘要由CSDN通过智能技术生成

在学习项目过程中经常遇到$cast(),常用到只是做类型的转换,复杂一点的就涉及到父类和子类,经常会忘记谁赋值给谁,谁指向谁,思路不清楚,故写下此文记忆下。

根据文章$cast向下类型转换确定
① 子类转换为父类,称为向上转换

father = child; // 向上转换,也称父类指向子类
$cast(father, child); // 向上转换

总结就是右边转换成左边

② 父类转换为子类,成为向下转换

child = father; // 向下转换,也称子类指向父类
$cast(child, father); // 向下转换

这种情况存在风险

类型转换

普通的类型转换不涉及子类和父类的关系

if (!$cast(t1, t2)) begin
`uvm_fatal()
return;
end

这是项目中经常用到的类型转换的方法,将t2转换为t1的类型,如果转换失败则报错

父类和子类的转换

父类和子类的转换只有向下转换才需要特别注意

思路就是:
① 父类father需要指向child1

father = child1;

② 才可以$cast(child2, father)

也就是说fathera指向的对象需要和child2对象类型一致,才可以用$cast()转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值