systemverilog中隐式转换和显式转换(静态转换和动态转换)

本文介绍了SystemVerilog中的显式转换,包括静态转换(如'unsigned'(signed_vec))与动态转换($cast),并强调了它们的区别:静态转换不检查转换结果,而动态转换则涉及系统函数。通过实例演示了不同类型之间的转换,如整数、实数和不同位宽向量。
摘要由CSDN通过智能技术生成

systemverilog中的类型转换

显式转换包含动态转换和静态转换
静态转换需要在转换的表达式前加上单引号,该方式并不会对转换值做检查,如果发生转换失败,无法获取相应的警告信息。
在verilog中,对整数和实数类型,或者不同位宽的向量之间进行隐式转换。
静态转换
静态转换失败,不会有任何提示。
例1 unsigned’(signed_vec)
byte old_vec = ‘b1000_0001; // -1
bit [7:0] new_vec;
new_vec = unsigned’(old_ver); // new_vec = ‘d129
例2 int i
real r;
i = int’(10.0 - 0.1); //转换是非强制的
r = real‘(42); //转换是非强制的

动态转换需要使用使用系统函数$cast(tgt, src);
动态转换:例如 $cast(target, source)
关于动态转换$cast有专门的一篇文章来做详细说明。

这两种转换需要操作符号和系统函数介入,因此称为显示转换

以下转换没有操作符号和系统函数接入,因此称为隐式转换;
logic [3:0] x_vec = 'b111x;
bit [2:0] b_vec;
b_vec = x_vec; // b_vec = 'b110
上面转换中由四值无符号类型转换为二值无符号类型;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值