Skip to content

Commit a0e46fd

Browse files
author
Stefan Mach
committed
🔖 Release 0.6.3
2 parents 79f75e0 + 3c8d9c9 commit a0e46fd

File tree

6 files changed

+39
-5
lines changed

6 files changed

+39
-5
lines changed

docs/CHANGELOG.md

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

17+
18+
## [0.6.3] - 2020-10-02
19+
20+
### Fixed
21+
- Fix undriven signals for inactive case in `fpnew_fma_multi`
22+
- Fix potentially uncovered case item in `fpnew_pkg`
23+
- Undriven unused portions of signals in multi-format slices
24+
- Undriven portions of the result for non-divisible unit width & format width in multi-format slices
25+
- [fpu_div_sqrt_mvp] Bumped to fix signalling for underflows
26+
27+
1728
## [0.6.2] - 2020-06-02
1829

1930
### Changed
@@ -29,6 +40,7 @@ Versions of the IP in the same major relase are "pin-compatible" with each other
2940
### Fixed
3041
- A bug where the div/sqrt unit could lose operations in flight
3142

43+
3244
## [0.6.0] - 2019-07-04
3345

3446
### Changed

src/fpnew_fma_multi.sv

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,8 @@ module fpnew_fma_multi #(
336336
end
337337
end else begin : inactive_format
338338
assign fmt_special_result[fmt] = '{default: fpnew_pkg::DONT_CARE};
339+
assign fmt_special_status[fmt] = '0;
340+
assign fmt_result_is_special[fmt] = 1'b0;
339341
end
340342
end
341343

src/fpnew_opgroup_block.sv

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ module fpnew_opgroup_block #(
122122
// If the format wants to use merged ops, tie off the dangling ones not used here
123123
end else if (FpFmtMask[fmt] && ANY_MERGED && !IS_FIRST_MERGED) begin : merged_unused
124124

125+
localparam FMT = fpnew_pkg::get_first_enabled_multi(FmtUnitTypes, FpFmtMask);
125126
// Ready is split up into formats
126-
assign fmt_in_ready[fmt] = fmt_in_ready[fpnew_pkg::get_first_enabled_multi(FmtUnitTypes,
127-
FpFmtMask)];
127+
assign fmt_in_ready[fmt] = fmt_in_ready[int'(FMT)];
128128

129129
assign fmt_out_valid[fmt] = 1'b0; // don't emit values
130130
assign fmt_busy[fmt] = 1'b0; // never busy

src/fpnew_opgroup_multifmt_slice.sv

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,19 +315,31 @@ module fpnew_opgroup_multifmt_slice #(
315315
// Set up some constants
316316
localparam int unsigned FP_WIDTH = fpnew_pkg::fp_width(fpnew_pkg::fp_format_e'(fmt));
317317
// only for active formats within the lane
318-
if (ACTIVE_FORMATS[fmt])
318+
if (ACTIVE_FORMATS[fmt]) begin
319319
assign fmt_slice_result[fmt][(LANE+1)*FP_WIDTH-1:LANE*FP_WIDTH] =
320320
local_result[FP_WIDTH-1:0];
321+
end else if ((LANE+1)*FP_WIDTH <= Width) begin
322+
assign fmt_slice_result[fmt][(LANE+1)*FP_WIDTH-1:LANE*FP_WIDTH] =
323+
'{default: lane_ext_bit[LANE]};
324+
end else if (LANE*FP_WIDTH < Width) begin
325+
assign fmt_slice_result[fmt][Width-1:LANE*FP_WIDTH] =
326+
'{default: lane_ext_bit[LANE]};
327+
end
321328
end
322329

323330
// Generate result packing depending on integer format
324331
if (OpGroup == fpnew_pkg::CONV) begin : int_results_enabled
325332
for (genvar ifmt = 0; ifmt < NUM_INT_FORMATS; ifmt++) begin : pack_int_result
326333
// Set up some constants
327334
localparam int unsigned INT_WIDTH = fpnew_pkg::int_width(fpnew_pkg::int_format_e'(ifmt));
328-
if (ACTIVE_INT_FORMATS[ifmt])
335+
if (ACTIVE_INT_FORMATS[ifmt]) begin
329336
assign ifmt_slice_result[ifmt][(LANE+1)*INT_WIDTH-1:LANE*INT_WIDTH] =
330337
local_result[INT_WIDTH-1:0];
338+
end else if ((LANE+1)*INT_WIDTH <= Width) begin
339+
assign ifmt_slice_result[ifmt][(LANE+1)*INT_WIDTH-1:LANE*INT_WIDTH] = '0;
340+
end else if (LANE*INT_WIDTH < Width) begin
341+
assign ifmt_slice_result[ifmt][Width-1:LANE*INT_WIDTH] = '0;
342+
end
331343
end
332344
end
333345
end

src/fpnew_pkg.sv

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,14 @@ package fpnew_pkg;
8989
INT16: return 16;
9090
INT32: return 32;
9191
INT64: return 64;
92+
default: begin
93+
// pragma translate_off
94+
$fatal(1, "Invalid INT format supplied");
95+
// pragma translate_on
96+
// just return any integer to avoid any latches
97+
// hopefully this error is caught by simulation
98+
return INT8;
99+
end
92100
endcase
93101
endfunction
94102

0 commit comments

Comments
 (0)