位寬不匹配問題
- 信號或操作數的位寬不匹配,可能導致仿真或綜合錯誤。
module top (input wire [3:0] a,output wire [7:0] b
);assign b = a;
endmodule
case 語句中沒有覆蓋所有情況
module top (input wire [1:0] sel,input wire [7:0] a,input wire [7:0] b,input wire [7:0] c,output reg [7:0] y
);always @(*) begincase (sel)2'b00: y = a;2'b01: y = b;// 缺少默認分支,未定義的 sel 值會導致 y 的值不確定(可能為高阻態或保持舊值)。// 默認分支:覆蓋所有未定義的情況 default: y = c; endcaseend
endmodule
- case 語句中沒有覆蓋所有情況,如下圖綜合工具可能會推斷出鎖存器(Latch),以保持 y 的舊值,導致設計行為不符合預期。
- 使用default: