Skip to content

Commit 3f98ba3

Browse files
author
Stefan Mach
committed
🔖 Release 0.5.6
2 parents 120f7f5 + 4ead3e8 commit 3f98ba3

File tree

9 files changed

+64
-49
lines changed

9 files changed

+64
-49
lines changed

docs/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,16 @@ Versions of the IP in the same major relase are "pin-compatible" with each other
1515
### Fixed
1616

1717

18+
## [0.5.6] - 2019-06-12
19+
20+
### Changed
21+
- Don't care logic value can be changed from the package now
22+
- Default pipeline config in the package is now `BEFORE`
23+
24+
### Fixed
25+
- Don't care values are assigned `'1` instead of `'X` by default
26+
27+
1828
## [0.5.5] - 2019-06-02
1929

2030
### Fixed

src/fpnew_cast_multi.sv

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,11 @@ module fpnew_cast_multi #(
199199
// Compensation for the difference in mantissa widths used for leading-zero count
200200
assign fmt_shift_compensation[fmt] = signed'(INT_MAN_WIDTH - 1 - MAN_BITS);
201201
end else begin : inactive_format
202-
assign info_q[fmt] = 'X; // propagate don't care (format disabled)
203-
assign fmt_sign[fmt] = 'x; // propagate don't care (format disabled)
204-
assign fmt_exponent[fmt] = 'X; // propagate don't care (format disabled)
205-
assign fmt_mantissa[fmt] = 'X; // propagate don't care (format disabled)
206-
assign fmt_shift_compensation[fmt] = 'X; // propagate don't care (format disabled)
202+
assign info_q[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
203+
assign fmt_sign[fmt] = fpnew_pkg::DONT_CARE; // format disabled
204+
assign fmt_exponent[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
205+
assign fmt_mantissa[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
206+
assign fmt_shift_compensation[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
207207
end
208208
end
209209

@@ -219,7 +219,7 @@ module fpnew_cast_multi #(
219219
ifmt_input_val[ifmt][INT_WIDTH-1:0] = operands_q[INT_WIDTH-1:0];
220220
end
221221
end else begin : inactive_format
222-
assign ifmt_input_val[ifmt] = 'X; // don't care about disabled formats
222+
assign ifmt_input_val[ifmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
223223
end
224224
end
225225

@@ -492,7 +492,7 @@ module fpnew_cast_multi #(
492492
fmt_pre_round_abs[fmt] = {final_exp[EXP_BITS-1:0], final_mant[MAN_BITS-1:0]}; // 0-extend
493493
end
494494
end else begin : inactive_format
495-
assign fmt_pre_round_abs[fmt] = 'X;
495+
assign fmt_pre_round_abs[fmt] = '{default: fpnew_pkg::DONT_CARE};
496496
end
497497
end
498498

@@ -508,7 +508,7 @@ module fpnew_cast_multi #(
508508
ifmt_pre_round_abs[ifmt][INT_WIDTH-1:0] = final_int[INT_WIDTH-1:0];
509509
end
510510
end else begin : inactive_format
511-
assign ifmt_pre_round_abs[ifmt] = 'X;
511+
assign ifmt_pre_round_abs[ifmt] = '{default: fpnew_pkg::DONT_CARE};
512512
end
513513
end
514514

@@ -550,9 +550,9 @@ module fpnew_cast_multi #(
550550
: {rounded_sign, rounded_abs[EXP_BITS+MAN_BITS-1:0]};
551551
end
552552
end else begin : inactive_format
553-
assign fmt_uf_after_round[fmt] = 'X;
554-
assign fmt_of_after_round[fmt] = 'X;
555-
assign fmt_result[fmt] = 'X;
553+
assign fmt_uf_after_round[fmt] = fpnew_pkg::DONT_CARE;
554+
assign fmt_of_after_round[fmt] = fpnew_pkg::DONT_CARE;
555+
assign fmt_result[fmt] = '{default: fpnew_pkg::DONT_CARE};
556556
end
557557
end
558558

@@ -596,7 +596,7 @@ module fpnew_cast_multi #(
596596
fmt_special_result[fmt][FP_WIDTH-1:0] = special_res;
597597
end
598598
end else begin : inactive_format
599-
assign fmt_special_result[fmt] = 'X;
599+
assign fmt_special_result[fmt] = '{default: fpnew_pkg::DONT_CARE};
600600
end
601601
end
602602

@@ -642,7 +642,7 @@ module fpnew_cast_multi #(
642642
ifmt_special_result[ifmt][INT_WIDTH-1:0] = special_res;
643643
end
644644
end else begin : inactive_format
645-
assign ifmt_special_result[ifmt] = 'X;
645+
assign ifmt_special_result[ifmt] = '{default: fpnew_pkg::DONT_CARE};
646646
end
647647
end
648648

src/fpnew_fma.sv

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,12 @@ module fpnew_fma #(
199199
info_c = '{is_zero: 1'b1, is_boxed: 1'b1, default: 1'b0}; //zero, boxed value.
200200
end
201201
default: begin // propagate don't cares
202-
operand_a = 'X;
203-
operand_b = 'X;
204-
operand_c = 'X;
205-
info_a = 'X;
206-
info_b = 'X;
207-
info_c = 'X;
202+
operand_a = '{default: fpnew_pkg::DONT_CARE};
203+
operand_b = '{default: fpnew_pkg::DONT_CARE};
204+
operand_c = '{default: fpnew_pkg::DONT_CARE};
205+
info_a = '{default: fpnew_pkg::DONT_CARE};
206+
info_b = '{default: fpnew_pkg::DONT_CARE};
207+
info_c = '{default: fpnew_pkg::DONT_CARE};
208208
end
209209
endcase
210210
end

src/fpnew_fma_multi.sv

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -194,10 +194,10 @@ module fpnew_fma_multi #(
194194
(SUPER_MAN_BITS - MAN_BITS); // move to left of mantissa
195195
end
196196
end else begin : inactive_format
197-
assign info_q[fmt] = 'X; // propagate don't care (format disabled)
198-
assign fmt_sign[fmt] = 'x; // propagate don't care (format disabled)
199-
assign fmt_exponent[fmt] = 'X; // propagate don't care (format disabled)
200-
assign fmt_mantissa[fmt] = 'X; // propagate don't care (format disabled)
197+
assign info_q[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
198+
assign fmt_sign[fmt] = fpnew_pkg::DONT_CARE; // format disabled
199+
assign fmt_exponent[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
200+
assign fmt_mantissa[fmt] = '{default: fpnew_pkg::DONT_CARE}; // format disabled
201201
end
202202
end
203203

@@ -241,12 +241,12 @@ module fpnew_fma_multi #(
241241
info_c = '{is_zero: 1'b1, is_boxed: 1'b1, default: 1'b0}; //zero, boxed value.
242242
end
243243
default: begin // propagate don't cares
244-
operand_a = 'X;
245-
operand_b = 'X;
246-
operand_c = 'X;
247-
info_a = 'X;
248-
info_b = 'X;
249-
info_c = 'X;
244+
operand_a = '{default: fpnew_pkg::DONT_CARE};
245+
operand_b = '{default: fpnew_pkg::DONT_CARE};
246+
operand_c = '{default: fpnew_pkg::DONT_CARE};
247+
info_a = '{default: fpnew_pkg::DONT_CARE};
248+
info_b = '{default: fpnew_pkg::DONT_CARE};
249+
info_c = '{default: fpnew_pkg::DONT_CARE};
250250
end
251251
endcase
252252
end
@@ -332,7 +332,7 @@ module fpnew_fma_multi #(
332332
fmt_special_result[fmt][FP_WIDTH-1:0] = special_res;
333333
end
334334
end else begin : inactive_format
335-
assign fmt_special_result[fmt] = 'X;
335+
assign fmt_special_result[fmt] = '{default: fpnew_pkg::DONT_CARE};
336336
end
337337
end
338338

@@ -689,8 +689,8 @@ module fpnew_fma_multi #(
689689
assign fmt_round_sticky_bits[fmt][0] = sticky_after_norm | of_before_round;
690690
end
691691
end else begin : inactive_format
692-
assign fmt_pre_round_abs[fmt] = 'X;
693-
assign fmt_round_sticky_bits[fmt] = 'X;
692+
assign fmt_pre_round_abs[fmt] = '{default: fpnew_pkg::DONT_CARE};
693+
assign fmt_round_sticky_bits[fmt] = '{default: fpnew_pkg::DONT_CARE};
694694
end
695695
end
696696

@@ -734,9 +734,9 @@ module fpnew_fma_multi #(
734734
fmt_result[fmt][FP_WIDTH-1:0] = {rounded_sign, rounded_abs[EXP_BITS+MAN_BITS-1:0]};
735735
end
736736
end else begin : inactive_format
737-
assign fmt_uf_after_round[fmt] = 'X;
738-
assign fmt_of_after_round[fmt] = 'X;
739-
assign fmt_result[fmt] = 'X;
737+
assign fmt_uf_after_round[fmt] = fpnew_pkg::DONT_CARE;
738+
assign fmt_of_after_round[fmt] = fpnew_pkg::DONT_CARE;
739+
assign fmt_result[fmt] = '{default: fpnew_pkg::DONT_CARE};
740740
end
741741
end
742742

src/fpnew_i2fcast.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ module fpnew_i2fcast #(
9494
.clk_i,
9595
.rst_ni,
9696
.operands_i,
97-
.is_boxed_i ( 'X ), // unused
97+
.is_boxed_i ( '{default: fpnew_pkg::DONT_CARE} ), // unused
9898
.rnd_mode_i,
9999
.op_i ( fpnew_pkg::FMADD ), // unused
100100
.op_mod_i,

src/fpnew_noncomp.sv

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ module fpnew_noncomp #(
187187
fpnew_pkg::RTZ: sgnj_result.sign = ~sign_b; // SGNJN
188188
fpnew_pkg::RDN: sgnj_result.sign = sign_a ^ sign_b; // SGNJX
189189
fpnew_pkg::RUP: sgnj_result = operand_a; // passthrough
190-
default: sgnj_result = 'X; // propagate X
190+
default: sgnj_result = '{default: fpnew_pkg::DONT_CARE}; // don't care
191191
endcase
192192
end
193193

@@ -223,7 +223,7 @@ module fpnew_noncomp #(
223223
unique case (rnd_mode_q)
224224
fpnew_pkg::RNE: minmax_result = operand_a_smaller ? operand_a : operand_b; // MIN
225225
fpnew_pkg::RTZ: minmax_result = operand_a_smaller ? operand_b : operand_a; // MAX
226-
default: minmax_result = 'X; // propagate X
226+
default: minmax_result = '{default: fpnew_pkg::DONT_CARE}; // don't care
227227
endcase
228228
end
229229
end
@@ -262,7 +262,7 @@ module fpnew_noncomp #(
262262
if (any_operand_nan) cmp_result = op_mod_q; // NaNs are valid, always campare as not equal
263263
else cmp_result = operands_equal ^ op_mod_q;
264264
end
265-
default: cmp_result = 'X; // propagate X
265+
default: cmp_result = '{default: fpnew_pkg::DONT_CARE}; // don't care
266266
endcase
267267
end
268268
end
@@ -323,14 +323,14 @@ module fpnew_noncomp #(
323323
extension_bit_d = cmp_extension_bit;
324324
end
325325
fpnew_pkg::CLASSIFY: begin
326-
result_d = 'X; // unused
326+
result_d = '{default: fpnew_pkg::DONT_CARE}; // unused
327327
status_d = class_status;
328328
extension_bit_d = class_extension_bit;
329329
end
330330
default: begin
331-
result_d = 'X; // propaagate X
332-
status_d = 'X; // propaagate X
333-
extension_bit_d = 'X; // propaagate X
331+
result_d = '{default: fpnew_pkg::DONT_CARE}; // dont care
332+
status_d = '{default: fpnew_pkg::DONT_CARE}; // dont care
333+
extension_bit_d = fpnew_pkg::DONT_CARE; // dont care
334334
end
335335
endcase
336336
end

src/fpnew_opgroup_block.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,15 +128,15 @@ module fpnew_opgroup_block #(
128128
assign fmt_out_valid[fmt] = 1'b0; // don't emit values
129129
assign fmt_busy[fmt] = 1'b0; // never busy
130130
// Outputs are don't care
131-
assign fmt_outputs[fmt] = 'X;
131+
assign fmt_outputs[fmt] = '{default: fpnew_pkg::DONT_CARE};
132132

133133
// Tie off disabled formats
134134
end else if (!FpFmtMask[fmt] || (FmtUnitTypes[fmt] == fpnew_pkg::DISABLED)) begin : disable_fmt
135135
assign fmt_in_ready[fmt] = 1'b0; // don't accept operations
136136
assign fmt_out_valid[fmt] = 1'b0; // don't emit values
137137
assign fmt_busy[fmt] = 1'b0; // never busy
138138
// Outputs are don't care
139-
assign fmt_outputs[fmt] = 'X;
139+
assign fmt_outputs[fmt] = '{default: fpnew_pkg::DONT_CARE};
140140
end
141141
end
142142

src/fpnew_pkg.sv

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ package fpnew_pkg;
258258
'{default: MERGED}, // DIVSQRT
259259
'{default: PARALLEL}, // NONCOMP
260260
'{default: MERGED}}, // CONV
261-
PipeConfig: AFTER
261+
PipeConfig: BEFORE
262262
};
263263

264264
localparam fpu_implementation_t DEFAULT_SNITCH = '{
@@ -267,9 +267,14 @@ package fpnew_pkg;
267267
'{default: DISABLED}, // DIVSQRT
268268
'{default: PARALLEL}, // NONCOMP
269269
'{default: MERGED}}, // CONV
270-
PipeConfig: AFTER
270+
PipeConfig: BEFORE
271271
};
272272

273+
// -----------------------
274+
// Synthesis optimization
275+
// -----------------------
276+
localparam logic DONT_CARE = 1'b1; // the value to assign as don't care
277+
273278
// -------------------------
274279
// General helper functions
275280
// -------------------------

src/fpnew_rounding.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,13 @@ module fpnew_rounding #(
4747
2'b01: round_up = 1'b0; // < ulp/2 away, round down
4848
2'b10: round_up = abs_value_i[0]; // = ulp/2 away, round towards even result
4949
2'b11: round_up = 1'b1; // > ulp/2 away, round up
50-
default: round_up = 1'bx; // propagate X
50+
default: round_up = fpnew_pkg::DONT_CARE;
5151
endcase
5252
fpnew_pkg::RTZ: round_up = 1'b0; // always round down
5353
fpnew_pkg::RDN: round_up = (| round_sticky_bits_i) ? sign_i : 1'b0; // to 0 if +, away if -
5454
fpnew_pkg::RUP: round_up = (| round_sticky_bits_i) ? ~sign_i : 1'b0; // to 0 if -, away if +
5555
fpnew_pkg::RMM: round_up = round_sticky_bits_i[1]; // round down if < ulp/2 away, else up
56-
default: round_up = 1'bx; // propagate x
56+
default: round_up = fpnew_pkg::DONT_CARE; // propagate x
5757
endcase
5858
end
5959

0 commit comments

Comments
 (0)