SystemVerilog除法问题
的规定相对宽松,并未严格指定必须使用哪种舍入方式(如四舍五入或截断),而是允许仿真工具自行实现(基本上是四舍五入)IEEE 1800(SystemVerilog标准)对。Verilog中对“算数操作符”SystemVerilog对。本文对以上现象进行分析。
·

int tUI_ns = 1000_000000/48960 = 20424
int tUI_ns = int’(1000_000000.0/48960 ) = 20425
本文对以上现象进行分析
-
Verilog中对“算数操作符”
\规定:- 整数除法:结果向零截断,即直接丢弃小数部分(类似 C 语言的整数除法)
- 浮点数除法:执行标准的浮点数除法,结果保留小数部分
情况 操作数类型 结果规则 示例 整数除法 两个整数 向零截断(丢弃小数) 7 / 2 = 3浮点数除法 至少一个操作数是 real保留小数 7.0 / 2 = 3.5 -
SystemVerilog对
int'(real)的规定:-
IEEE 1800(SystemVerilog标准)对浮点数(
real)到整数(int)的显式转换(如int'(real))的规定相对宽松,并未严格指定必须使用哪种舍入方式(如四舍五入或截断),而是允许仿真工具自行实现(基本上是四舍五入) -
IEEE 1800 提供了明确的舍入函数,用于可移植的精确控制:
函数 行为 示例 $floor向负无穷取整(向下取整) $floor(3.7) = 3$ceil向正无穷取整(向上取整) $ceil(3.2) = 4$round四舍五入(远离零) $round(3.5) = 4$rtoi截断小数(类似 C 的强制转换) $rtoi(3.7) = 3
-
更多推荐



所有评论(0)