一、一般準則
1、有符號數運算
利用類型“signed”完成有符號數運算,而不是用無符號數模擬有符號數運算。這樣可以得到更好的QoR。在資源報告中檢查操作數的類型和大小。
2、符號/零擴展
盡量不要手動擴展。verilog利用signed/unsigned會自動完成擴展。這樣代碼可讀性高,且工具在綜合時會更容易且可靠的檢測操作數。
3、有/無符號數混用
不要在一個表達式中混用 有符號數 和 無符號數。若表達式中有一個數為無符號數,Verilog會把整個表述為無符號的,導致功能失常。
4、有符號數部分選擇
部分選擇會導致無符號數的結果,而與操作數無關,哪怕選擇了整個向量也是無符號的,如 input signed[7:0] a 中 a[7:0] 也會被認為是無符號的。
5、表達式位寬
利用中間信號和附加指配使寬度定義沒有歧義。