Skip to content

Commit 922024f

Browse files
committed
Fixed width of count in datapaths
1 parent 221ecbd commit 922024f

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

fsmd/bit_diff.sv

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,30 +1172,31 @@ module datapath1
11721172
/*********************************************************************/
11731173
// Counter logic
11741174

1175-
logic [WIDTH-1:0] count_mux, count_add, count_r;
1175+
localparam int COUNT_WIDTH = $clog2(WIDTH);
1176+
logic [COUNT_WIDTH-1:0] count_mux, count_add, count_r;
11761177

11771178
// Selects between 0 and the count adder.
1178-
mux2x1 #(.WIDTH(WIDTH)) COUNT_MUX (.in0(count_add),
1179-
.in1(WIDTH'(0)),
1180-
.sel(count_sel),
1181-
.out(count_mux));
1179+
mux2x1 #(.WIDTH(COUNT_WIDTH)) COUNT_MUX (.in0(count_add),
1180+
.in1('0),
1181+
.sel(count_sel),
1182+
.out(count_mux));
11821183

11831184
// Register for the count.
1184-
register #(.WIDTH(WIDTH)) COUNT_REG (.en(count_en),
1185-
.in(count_mux),
1186-
.out(count_r),
1187-
.*);
1185+
register #(.WIDTH(COUNT_WIDTH)) COUNT_REG (.en(count_en),
1186+
.in(count_mux),
1187+
.out(count_r),
1188+
.*);
11881189

11891190
// Increments the count.
1190-
add #(.WIDTH(WIDTH)) COUNT_ADD (.in0(WIDTH'(1)),
1191-
.in1(count_r),
1192-
.sum(count_add));
1191+
add #(.WIDTH(COUNT_WIDTH)) COUNT_ADD (.in0(COUNT_WIDTH'(1)),
1192+
.in1(count_r),
1193+
.sum(count_add));
11931194

11941195
// Comparator to check when the count is complete. Equivalent to
11951196
// count_r == WIDTH-1 from the FSMD.
1196-
eq #(.WIDTH(WIDTH)) EQ (.in0(count_r),
1197-
.in1(WIDTH'(WIDTH-1)),
1198-
.out(count_done));
1197+
eq #(.WIDTH(COUNT_WIDTH)) EQ (.in0(count_r),
1198+
.in1(COUNT_WIDTH'(WIDTH-1)),
1199+
.out(count_done));
11991200

12001201
endmodule
12011202
//`default_nettype wire
@@ -1232,7 +1233,9 @@ module datapath2
12321233

12331234
logic [WIDTH-1:0] data_mux, data_r, data_shift;
12341235
logic [DIFF_WIDTH-1:0] diff_r, add_in1_mux, diff_add, diff_mux, result_r;
1235-
logic [WIDTH-1:0] count_mux, count_add, count_r;
1236+
1237+
localparam int COUNT_WIDTH = $clog2(WIDTH);
1238+
logic [COUNT_WIDTH-1:0] count_mux, count_add, count_r;
12361239

12371240
// Data mux and shift
12381241
assign data_mux = data_sel ? data : data_shift;
@@ -1244,9 +1247,9 @@ module datapath2
12441247
assign diff_mux = diff_sel ? DIFF_WIDTH'(0) : diff_add;
12451248

12461249
// Count mux, add, and done
1247-
assign count_mux = count_sel ? WIDTH'(0) : count_add;
1250+
assign count_mux = count_sel ? COUNT_WIDTH'(0) : count_add;
12481251
assign count_add = count_r + 1'b1;
1249-
assign count_done = count_r == WIDTH'(WIDTH-1);
1252+
assign count_done = count_r == COUNT_WIDTH'(WIDTH-1);
12501253

12511254
// Not necessary, but complies with my _r naming convention for registers
12521255
// created in an always block.
@@ -1476,7 +1479,8 @@ module datapath3
14761479

14771480
logic [WIDTH-1:0] data_mux, data_r, data_shift;
14781481
logic [DIFF_WIDTH-1:0] diff_r, add_in1_mux, diff_add, result_r;
1479-
logic [WIDTH-1:0] count_add, count_r;
1482+
localparam int COUNT_WIDTH = $clog2(WIDTH);
1483+
logic [COUNT_WIDTH-1:0] count_add, count_r;
14801484

14811485
assign data_mux = data_sel ? data : data_shift;
14821486
assign data_shift = data_r >> 1;
@@ -1485,7 +1489,7 @@ module datapath3
14851489
assign diff_add = diff_r + add_in1_mux;
14861490

14871491
assign count_add = count_r + 1'b1;
1488-
assign count_done = count_r == WIDTH'(WIDTH-1);
1492+
assign count_done = count_r == COUNT_WIDTH'(WIDTH-1);
14891493

14901494
assign result = result_r;
14911495

0 commit comments

Comments
 (0)