diff --git a/Bender.yml b/Bender.yml index 5d5f85d..d48534b 100644 --- a/Bender.yml +++ b/Bender.yml @@ -6,8 +6,8 @@ package: authors: ["Stefan Mach "] 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 diff --git a/README.md b/README.md index e261e7b..4d99bf5 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/docs/CHANGELOG-PULP.md b/docs/CHANGELOG-PULP.md index 79a4d02..19de429 100644 --- a/docs/CHANGELOG-PULP.md +++ b/docs/CHANGELOG-PULP.md @@ -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 diff --git a/ips_list.yml b/ips_list.yml index 1738480..86e81fa 100644 --- a/ips_list.yml +++ b/ips_list.yml @@ -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] diff --git a/src/common_cells b/src/common_cells index 6aeee85..03d9810 160000 --- a/src/common_cells +++ b/src/common_cells @@ -1 +1 @@ -Subproject commit 6aeee85d0a34fedc06c14f04fd6363c9f7b4eeea +Subproject commit 03d98106aa19952a10360d2230def85144a0008b diff --git a/src/fpnew_cast_multi.sv b/src/fpnew_cast_multi.sv index eb0571b..7699bb7 100644 --- a/src/fpnew_cast_multi.sv +++ b/src/fpnew_cast_multi.sv @@ -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 ), diff --git a/src/fpnew_fma.sv b/src/fpnew_fma.sv index d725a5d..9e5dc43 100644 --- a/src/fpnew_fma.sv +++ b/src/fpnew_fma.sv @@ -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 ), diff --git a/src/fpnew_fma_multi.sv b/src/fpnew_fma_multi.sv index 7431a92..b32d490 100644 --- a/src/fpnew_fma_multi.sv +++ b/src/fpnew_fma_multi.sv @@ -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 ), diff --git a/src/fpnew_mxdotp_multi.sv b/src/fpnew_mxdotp_multi.sv index 274408b..c78652c 100644 --- a/src/fpnew_mxdotp_multi.sv +++ b/src/fpnew_mxdotp_multi.sv @@ -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; diff --git a/src/fpnew_opgroup_block.sv b/src/fpnew_opgroup_block.sv index 00805a9..f6d5e19 100644 --- a/src/fpnew_opgroup_block.sv +++ b/src/fpnew_opgroup_block.sv @@ -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 ), diff --git a/src/fpnew_sdotp_multi.sv b/src/fpnew_sdotp_multi.sv index 1281b91..e30af04 100644 --- a/src/fpnew_sdotp_multi.sv +++ b/src/fpnew_sdotp_multi.sv @@ -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 ), diff --git a/src/fpnew_top.sv b/src/fpnew_top.sv index 3442d92..8aae290 100644 --- a/src/fpnew_top.sv +++ b/src/fpnew_top.sv @@ -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 ), diff --git a/src/fpu_div_sqrt_mvp b/src/fpu_div_sqrt_mvp index 86e1f55..af8562e 160000 --- a/src/fpu_div_sqrt_mvp +++ b/src/fpu_div_sqrt_mvp @@ -1 +1 @@ -Subproject commit 86e1f558b3c95e91577c41b2fc452c86b04e85ac +Subproject commit af8562ebfe4a18765ed7a4f059861e7985baa869 diff --git a/src/mxdotp/fpnew_mxdotp_multi_modules.sv b/src/mxdotp/fpnew_mxdotp_multi_modules.sv index 9ed1ad6..d1855e5 100644 --- a/src/mxdotp/fpnew_mxdotp_multi_modules.sv +++ b/src/mxdotp/fpnew_mxdotp_multi_modules.sv @@ -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 ),