一、一般准则
1、有符号数运算
利用类型“signed”完成有符号数运算,而不是用无符号数模拟有符号数运算。这样可以得到更好的QoR。在资源报告中检查操作数的类型和大小。
2、符号/零扩展
尽量不要手动扩展。verilog利用signed/unsigned会自动完成扩展。这样代码可读性高,且工具在综合时会更容易且可靠的检测操作数。
3、有/无符号数混用
不要在一个表达式中混用 有符号数 和 无符号数。若表达式中有一个数为无符号数,Verilog会把整个表述为无符号的,导致功能失常。
4、有符号数部分选择
部分选择会导致无符号数的结果,而与操作数无关,哪怕选择了整个向量也是无符号的,如 input signed[7:0] a 中 a[7:0] 也会被认为是无符号的。
5、表达式位宽
利用中间信号和附加指配使宽度定义没有歧义。