System Verilog中是否有任何支持32位以上的系统功能?我想将实值数量转换为包含超过32位的整数值。 $ rtoi()系统函数正是我想要的值,可以用32位或更少的值表示。是否有内置功能,或者我需要自己编写?
举个具体的例子,我希望能够做到以下几点:
logic [41:0] test_value;
initial begin
test_value = $rtoi($pow(2.0, 39.5));
end
在哪里,而不是$ rtoi(),我会使用未知的追求系统功能。给定正确的函数,如果支持舍入,我希望这会导致test_value使用位序列42'b1011010100000100111100110011001111111001
或可能42'b1011010100000100111100110011001111111010
进行初始化。
我可以编写自己的功能,但我想避免重新发明轮子,除非没有轮子。
答案 0 :(得分:3)
从真实到整数的隐式演员可以为你提供所需的四舍五入
test_value = 2.0**39.5;
或者您可以使用显式转换
typedef logic [41:0] uint42_t;
test_value = uint42_t'(2.0**39.5);