|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
我对以下四种形式的乘法式子用vcs仿真,其中y的位宽要比a1和a2的位宽之和大:
y = a1 * a2 ;
y = {补零, a1 * a2} ;
y = a1 * 常数 ;
y = {补零, a1 * 常数} ;
结果发现前面不补零时,乘法结果的有效位数会自动扩展为两个乘数位宽之和,从而得到正确的结果;
但当前面补零时(比如为了修正nlint的错误),则由两个乘数中位宽大者的位宽决定结果的位宽,从而出现结果高位被截断的情况。
比如,若a1=2'h3,a2=3'h5,y应为15d(01111b),但实际结果为7d(111b),也就是说a2的位宽决定了结果的有效位数。
请问这是verilog的规定,还是vcs的问题,还是我哪里的问题? |
|