systemVerilog - 圆形实型

时间:2017-02-02 13:53:52

标签: rounding system-verilog

根据以下内容在systemVerilog中舍入实际类型的最佳方法是什么:

案例积极: 如果fraction >= 0.5 ---&gt; round返回&#34;整数部分&#34; + 1(例如4.5 ---> 5) 如果fraction < 0.5 ---&gt; round返回&#34;整数部分&#34; (例如4.2 ---&gt; 4)

案例否定: 如果fraction >= 0.5 ---&gt; round返回&#34;整数部分&#34; -1(例如-4.5 ---> -5) 如果fraction < 0.5 ---&gt; round返回&#34;整数部分&#34; (例如-4.2 ---&gt; -4)

1 个答案:

答案 0 :(得分:1)

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.5int_val = int'(4.5)都将变为5. int_val = -4.5int_val = int'(-4.5)都将变为-5。

根据模拟器的不同,直接赋值和逐行转换可能会有不同的性能。我认为套管是完善的,因为对于任何人来说,检查代码和模拟器都更明确。加上铸造可以更好地控制钻头宽度。