Skip to content

Commit

Permalink
🔖 Release 0.6.3
Browse files Browse the repository at this point in the history
  • Loading branch information
Stefan Mach committed Oct 2, 2020
2 parents 79f75e0 + 3c8d9c9 commit a0e46fd
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 5 deletions.
12 changes: 12 additions & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@ Versions of the IP in the same major relase are "pin-compatible" with each other
### Changed
### Fixed


## [0.6.3] - 2020-10-02

### Fixed
- Fix undriven signals for inactive case in `fpnew_fma_multi`
- Fix potentially uncovered case item in `fpnew_pkg`
- Undriven unused portions of signals in multi-format slices
- Undriven portions of the result for non-divisible unit width & format width in multi-format slices
- [fpu_div_sqrt_mvp] Bumped to fix signalling for underflows


## [0.6.2] - 2020-06-02

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


## [0.6.0] - 2019-07-04

### Changed
Expand Down
2 changes: 2 additions & 0 deletions src/fpnew_fma_multi.sv
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,8 @@ module fpnew_fma_multi #(
end
end else begin : inactive_format
assign fmt_special_result[fmt] = '{default: fpnew_pkg::DONT_CARE};
assign fmt_special_status[fmt] = '0;
assign fmt_result_is_special[fmt] = 1'b0;
end
end

Expand Down
4 changes: 2 additions & 2 deletions src/fpnew_opgroup_block.sv
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,9 @@ module fpnew_opgroup_block #(
// If the format wants to use merged ops, tie off the dangling ones not used here
end else if (FpFmtMask[fmt] && ANY_MERGED && !IS_FIRST_MERGED) begin : merged_unused

localparam FMT = fpnew_pkg::get_first_enabled_multi(FmtUnitTypes, FpFmtMask);
// Ready is split up into formats
assign fmt_in_ready[fmt] = fmt_in_ready[fpnew_pkg::get_first_enabled_multi(FmtUnitTypes,
FpFmtMask)];
assign fmt_in_ready[fmt] = fmt_in_ready[int'(FMT)];

assign fmt_out_valid[fmt] = 1'b0; // don't emit values
assign fmt_busy[fmt] = 1'b0; // never busy
Expand Down
16 changes: 14 additions & 2 deletions src/fpnew_opgroup_multifmt_slice.sv
Original file line number Diff line number Diff line change
Expand Up @@ -315,19 +315,31 @@ module fpnew_opgroup_multifmt_slice #(
// Set up some constants
localparam int unsigned FP_WIDTH = fpnew_pkg::fp_width(fpnew_pkg::fp_format_e'(fmt));
// only for active formats within the lane
if (ACTIVE_FORMATS[fmt])
if (ACTIVE_FORMATS[fmt]) begin
assign fmt_slice_result[fmt][(LANE+1)*FP_WIDTH-1:LANE*FP_WIDTH] =
local_result[FP_WIDTH-1:0];
end else if ((LANE+1)*FP_WIDTH <= Width) begin
assign fmt_slice_result[fmt][(LANE+1)*FP_WIDTH-1:LANE*FP_WIDTH] =
'{default: lane_ext_bit[LANE]};
end else if (LANE*FP_WIDTH < Width) begin
assign fmt_slice_result[fmt][Width-1:LANE*FP_WIDTH] =
'{default: lane_ext_bit[LANE]};
end
end

// Generate result packing depending on integer format
if (OpGroup == fpnew_pkg::CONV) begin : int_results_enabled
for (genvar ifmt = 0; ifmt < NUM_INT_FORMATS; ifmt++) begin : pack_int_result
// Set up some constants
localparam int unsigned INT_WIDTH = fpnew_pkg::int_width(fpnew_pkg::int_format_e'(ifmt));
if (ACTIVE_INT_FORMATS[ifmt])
if (ACTIVE_INT_FORMATS[ifmt]) begin
assign ifmt_slice_result[ifmt][(LANE+1)*INT_WIDTH-1:LANE*INT_WIDTH] =
local_result[INT_WIDTH-1:0];
end else if ((LANE+1)*INT_WIDTH <= Width) begin
assign ifmt_slice_result[ifmt][(LANE+1)*INT_WIDTH-1:LANE*INT_WIDTH] = '0;
end else if (LANE*INT_WIDTH < Width) begin
assign ifmt_slice_result[ifmt][Width-1:LANE*INT_WIDTH] = '0;
end
end
end
end
Expand Down
8 changes: 8 additions & 0 deletions src/fpnew_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ package fpnew_pkg;
INT16: return 16;
INT32: return 32;
INT64: return 64;
default: begin
// pragma translate_off
$fatal(1, "Invalid INT format supplied");
// pragma translate_on
// just return any integer to avoid any latches
// hopefully this error is caught by simulation
return INT8;
end
endcase
endfunction

Expand Down
2 changes: 1 addition & 1 deletion src/fpu_div_sqrt_mvp

0 comments on commit a0e46fd

Please sign in to comment.