module bcd_excess3(input [3:0]bcd ,output reg [3:0]e );
always @(bcd)begin
case(bcd)
4'b0000: e=4'b0011; // 0 -> 3
4'b0001: e=4'b0100; // 1 -> 4
4'b0010: e=4'b0101; // 2 -> 5
4'b0011: e=4'b0110; // 3 -> 6
4'b0100: e=4'b0111; // 4 -> 7
4'b0101: e=4'b1000; // 5 -> 8
4'b0110: e=4'b1001; // 6 -> 9
4'b0111: e=4'b1010; // 7 -> 10
4'b1000: e=4'b1011; // 8 -> 11
4'b1001: e=4'b1100; // 9 -> 12
default: e=4'b0000; // invalid BCD
endcase
end
endmodule
module tb_bcd_excess3;
reg [3:0]bcd;
wire [3:0]e;
bcd_excess3 dut(bcd,e);
integer i;
initial
begin
for(i=0;i<10;i=i+1)
begin
bcd=i[3:0];
#10;
end
$finish;
end
endmodule
RTL SCHEMATIC:
POWER REPORT:
TIMING REPORT:
UTILIZATION REPORT: