Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ package:
authors: ["Stefan Mach <smach@iis.ee.ethz.ch>"]

dependencies:
common_cells: {git: "https://github.com/pulp-platform/common_cells.git", version: 1.21.0}
fpu_div_sqrt_mvp: {git: "https://github.com/pulp-platform/fpu_div_sqrt_mvp.git", version: 1.0.4}
common_cells: {git: "https://github.com/pulp-platform/common_cells.git", version: 2.0.0-beta.2}
fpu_div_sqrt_mvp: {git: "https://github.com/pulp-platform/fpu_div_sqrt_mvp.git", rev: "af8562ebfe4a18765ed7a4f059861e7985baa869"} # to be updated to a released version once available after common_cells v2 release

sources:
- src/fpnew_pkg.sv
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ All IEEE 754-2008 status flags are supported, namely
### Dependencies

FPnew currently depends on the following:
- `lzc` and `rr_arb_tree` from the `common_cells` repository (https://github.com/pulp-platform/common_cells.git)
- `cc_lzc` and `cc_rr_arb_tree` from the `common_cells` repository (https://github.com/pulp-platform/common_cells.git)
- optional: Divider and square-root unit from the `fpu-div-sqrt-mvp` repository (https://github.com/pulp-platform/fpu_div_sqrt_mvp.git)

These two repositories are included in the source code directory as git submodules, use
Expand Down
9 changes: 9 additions & 0 deletions docs/CHANGELOG-PULP.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
In this sense, we interpret the "Public API" of a hardware module as its port/parameter list.
Versions of the IP in the same major relase are "pin-compatible" with each other. Minor relases are permitted to add new parameters as long as their default bindings ensure backwards compatibility.

## [Unreleased]

### Changed
- **Breaking**: Bump `common_cells` from `1.21.0` to `2.0.0-beta.2`. No `fpnew_*` port or parameter changes, so instances stay pin-compatible, but integrators must move their own `common_cells` dependency to 2.x.
- `lzc` → `cc_lzc` (`WIDTH` → `Width`, `MODE` → `Mode` of type `cc_pkg::lzc_mode_e`)
- `rr_arb_tree` → `cc_rr_arb_tree` (`DataType` → `data_t`, `flush_i` → `clr_i`)
- Register macros in use (`FF`, `FFL`, `FFLARNC`, `FFLNR`) are unchanged in name and argument order
- **Temporary**: `fpu_div_sqrt_mvp` is pinned by `rev` instead of `version`. Revert to a tagged `version` once `common_cells` 2.0.0 is released and `fpu_div_sqrt_mvp` cuts a tag including the v2 migration.

## [pulp-v0.3.0] - 2026-07-20

### Added
Expand Down
4 changes: 2 additions & 2 deletions ips_list.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@
#

common_cells:
commit: v1.21.0
commit: v2.0.0-beta.2
domain: [soc, cluster]

fpu_div_sqrt_mvp:
commit: v1.0.4
commit: af8562ebfe4a18765ed7a4f059861e7985baa869
domain: [cluster,soc]
2 changes: 1 addition & 1 deletion src/common_cells
Submodule common_cells updated 281 files
6 changes: 3 additions & 3 deletions src/fpnew_cast_multi.sv
Original file line number Diff line number Diff line change
Expand Up @@ -279,9 +279,9 @@ module fpnew_cast_multi #(
logic [LZC_RESULT_WIDTH:0] renorm_shamt_sgn; // signed form for calculations

// Leading-zero counter is needed for renormalization
lzc #(
.WIDTH ( INT_MAN_WIDTH ),
.MODE ( 1 ) // MODE = 1 counts leading zeroes
cc_lzc #(
.Width ( INT_MAN_WIDTH ),
.Mode ( cc_pkg::LZC_LEADING_ZERO_CNT )
) i_lzc (
.in_i ( encoded_mant ),
.cnt_o ( renorm_shamt ),
Expand Down
6 changes: 3 additions & 3 deletions src/fpnew_fma.sv
Original file line number Diff line number Diff line change
Expand Up @@ -503,9 +503,9 @@ module fpnew_fma #(
assign sum_lower = sum_q[LOWER_SUM_WIDTH-1:0];

// Leading zero counter for cancellations
lzc #(
.WIDTH ( LOWER_SUM_WIDTH ),
.MODE ( 1 ) // MODE = 1 counts leading zeroes
cc_lzc #(
.Width ( LOWER_SUM_WIDTH ),
.Mode ( cc_pkg::LZC_LEADING_ZERO_CNT )
) i_lzc (
.in_i ( sum_lower ),
.cnt_o ( leading_zero_count ),
Expand Down
6 changes: 3 additions & 3 deletions src/fpnew_fma_multi.sv
Original file line number Diff line number Diff line change
Expand Up @@ -777,9 +777,9 @@ module fpnew_fma_multi #(
assign sum_lower = sum_q[LOWER_SUM_WIDTH-1:0];

// Leading zero counter for cancellations
lzc #(
.WIDTH ( LOWER_SUM_WIDTH ),
.MODE ( 1 ) // MODE = 1 counts leading zeroes
cc_lzc #(
.Width ( LOWER_SUM_WIDTH ),
.Mode ( cc_pkg::LZC_LEADING_ZERO_CNT )
) i_lzc (
.in_i ( sum_lower ),
.cnt_o ( leading_zero_count ),
Expand Down
2 changes: 1 addition & 1 deletion src/fpnew_mxdotp_multi.sv
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ module fpnew_mxdotp_multi
// -----------------------------------------
// Computed from module parameters instead of package constants
localparam int unsigned FP6_VECTOR_SIZE = ((FpSrcFmtConfig[fpnew_pkg::FP6] || FpSrcFmtConfig[fpnew_pkg::FP6ALT]) == 1) ?
(((FpSrcFmtConfig[fpnew_pkg::FP8] || FpSrcFmtConfig[fpnew_pkg::FP8ALT]) == 1) ? cf_math_pkg::ceil_div(LaneWidth, 6) - VectorSize : cf_math_pkg::ceil_div(LaneWidth, 6)) : 0;
(((FpSrcFmtConfig[fpnew_pkg::FP8] || FpSrcFmtConfig[fpnew_pkg::FP8ALT]) == 1) ? cc_pkg::ceil_div(LaneWidth, 6) - VectorSize : cc_pkg::ceil_div(LaneWidth, 6)) : 0;
localparam int unsigned FP4_VECTOR_SIZE = (FpSrcFmtConfig[fpnew_pkg::FP4] == 1) ?
(((FpSrcFmtConfig[fpnew_pkg::FP8] || FpSrcFmtConfig[fpnew_pkg::FP8ALT]) == 1) ?
(((FpSrcFmtConfig[fpnew_pkg::FP6] || FpSrcFmtConfig[fpnew_pkg::FP6ALT]) == 1) ? (VectorSize - FP6_VECTOR_SIZE) : VectorSize) : 2*VectorSize) : 0;
Expand Down
6 changes: 3 additions & 3 deletions src/fpnew_opgroup_block.sv
Original file line number Diff line number Diff line change
Expand Up @@ -247,14 +247,14 @@ module fpnew_opgroup_block #(
output_t arbiter_output;

// Round-Robin arbiter to decide which result to use
rr_arb_tree #(
cc_rr_arb_tree #(
.NumIn ( NUM_FORMATS ),
.DataType ( output_t ),
.data_t ( output_t ),
.AxiVldRdy ( 1'b1 )
) i_arbiter (
.clk_i,
.rst_ni,
.flush_i,
.clr_i ( flush_i ),
.rr_i ( '0 ),
.req_i ( fmt_out_valid ),
.gnt_o ( fmt_out_ready ),
Expand Down
6 changes: 3 additions & 3 deletions src/fpnew_sdotp_multi.sv
Original file line number Diff line number Diff line change
Expand Up @@ -1568,9 +1568,9 @@ module fpnew_sdotp_multi #(
assign sum_lower = {(~effective_subtraction_z_q && sum_carry_z_q), sum_z_q};

// Leading zero counter for cancellations
lzc #(
.WIDTH ( LZC_SUM_WIDTH ),
.MODE ( 1 ) // MODE = 1 counts leading zeroes
cc_lzc #(
.Width ( LZC_SUM_WIDTH ),
.Mode ( cc_pkg::LZC_LEADING_ZERO_CNT )
) i_lzc (
.in_i ( sum_lower ),
.cnt_o ( leading_zero_count ),
Expand Down
8 changes: 4 additions & 4 deletions src/fpnew_top.sv
Original file line number Diff line number Diff line change
Expand Up @@ -176,15 +176,15 @@ module fpnew_top #(
output_t arbiter_output;

// Round-Robin arbiter to decide which result to use
rr_arb_tree #(
cc_rr_arb_tree #(
.NumIn ( NUM_OPGROUPS ),
.DataType ( output_t ),
.data_t ( output_t ),
.AxiVldRdy ( 1'b1 )
) i_arbiter (
.clk_i,
.rst_ni,
.flush_i,
.rr_i ( '0 ),
.clr_i ( flush_i ),
.rr_i ( '0 ),
.req_i ( opgrp_out_valid ),
.gnt_o ( opgrp_out_ready ),
.data_i ( opgrp_outputs ),
Expand Down
2 changes: 1 addition & 1 deletion src/fpu_div_sqrt_mvp
6 changes: 3 additions & 3 deletions src/mxdotp/fpnew_mxdotp_multi_modules.sv
Original file line number Diff line number Diff line change
Expand Up @@ -807,9 +807,9 @@ module fpnew_mxdotp_norm_lzc
);
logic [LZC_RESULT_WIDTH-1:0] leading_zero_count;

lzc #(
.WIDTH ( LZC_SUM_WIDTH ),
.MODE ( 1 ) // MODE = 1 counts leading zeroes
cc_lzc #(
.Width ( LZC_SUM_WIDTH ),
.Mode ( cc_pkg::LZC_LEADING_ZERO_CNT )
) i_lzc (
.in_i ( sum_magnitude ),
.cnt_o ( leading_zero_count ),
Expand Down