我需要在系统verilog代码中建立浮点数学模型,这基本上需要我在系统verilog: real/shortreal中操作浮点数。我需要的能力来确定尾数,指数和符号的浮点数。
这个问题的c解决方案是将其类型转换为一个整型指针,然后使用移位运算符:How to get the sign, mantissa and exponent of a floating point number
如果系统verilog支持短实数上的部分/位选择运算符,则函数将如下所示:
function automatic shortreal conv2shortreal (bit sign, bit[7:0] exp, bit[22:0] mantissa);
conv2shortreal[31] = sign;
conv2shortreal[30:23] = exp;
conv2shortreal[22:0] = mantissa;
endfunction输出应该是一个短值/实数
发布于 2019-07-10 14:52:12
由于这是调试浮点实现时的一个有用功能,因此SystemVerilog具有内置的转换函数(用于IEEE754):
shortreal r;
bit sign;
bit [7:0] exp;
bit [22:0] mantissa;
r = $bitstoshortreal({sign, exp, mantissa}); // Convert from floating point parts to shortreal
{sign, exp, mantissa} = $shortrealtobits(r); // Convert from short real to floating point partshttps://stackoverflow.com/questions/56960782
复制相似问题