根据,在systemVerilog中舍入真实类型的最佳方法是什么
阳性病例:如果fraction >= 0.5
-->四舍五入,则返回"整数部分"+1(例如4.5--->5)如果fraction < 0.5
-->四舍五入返回"整数部分"(例如4.2--->4)
阴性病例:如果fraction >= 0.5
-->四舍五入,则返回"整数部分"-1(例如-4.5-->-5)如果fraction < 0.5
-->四舍五入返回"整数部分"(例如-4.2-->-4)
IEEE Std 1800-2012 LRM中详细描述了将实数舍入为整数。
IEEE Std 1800-2012§6.12.2转换
实数应通过将实数四舍五入到最接近的整数而不是截断来转换为整数。当实数分配给整数时,应进行隐式转换。如果实数的小数部分正好是0.5,则应从零开始四舍五入。
IEEE Std 1800-2012§20.5转换函数
$rtoi
通过截断实值将实值转换为整数类型(例如,123.45变为123)。$rtoi
与将实值强制转换为整数或其他整数类型的不同之处在于,强制转换将执行舍入而不是截断直接为整型赋值也将取整而不是截断
根据LRM,int_val = 4.5
或int_val = int'(4.5)
都将变为5。而CCD_ 9或CCD_。
根据模拟器的不同,直接分配与铸造可能具有不同的性能。我认为casing是完美的,因为它对任何审查代码和模拟器的人来说都更明确。加上铸造可以更好地控制钻头宽度。