+SDOTP Publication
+
+
+```
+@inproceedings{bertaccini2022minifloat,
+ title={MiniFloat-NN and ExSdotp: An ISA Extension and a Modular Open Hardware Unit for Low-Precision Training on RISC-V Cores},
+ author={Bertaccini, Luca and Paulin, Gianna and Fischer, Tim and Mach, Stefan and Benini, Luca},
+ booktitle={2022 IEEE 29th Symposium on Computer Arithmetic (ARITH)},
+ pages={1--8},
+ year={2022},
+ organization={IEEE}
+}
+```
+
diff --git a/docs/CHANGELOG-PULP.md b/docs/CHANGELOG-PULP.md
new file mode 100644
index 00000000..196a9c03
--- /dev/null
+++ b/docs/CHANGELOG-PULP.md
@@ -0,0 +1,15 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
+
+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.
+
+## [0.1.0] - 2023-05-04
+
+### Added
+- Add low and mixed-precision SDOTP with support for stochastic rounding
+- Add `FP8alt (1,4,3)` format
+- Add support for compressed vector compare results (one bit per comparison in the LSBs)
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 3a3e1f83..f290ed64 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -10,6 +10,11 @@ Versions of the IP in the same major relase are "pin-compatible" with each other
## [Unreleased]
+### Added
+- Add support for alternative FP32-only DivSqrt unit
+
+## [0.7.0] - 2023-03-20
+
### Added
- Citation file `CITATION.cff`
- Add support for RISC-V compliant classify in vectorial mode when the vector element width is at least 10 bits
diff --git a/docs/README.md b/docs/README.md
index d0c0a91c..542e53e1 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -40,6 +40,8 @@ For more in-depth explanations on how to configure the unit and the layout of th
| `TagType` | The SystemVerilog data type of the operation tag |
| `TrueSIMDClass` | If enabled, the result of a classify operation in vectorial mode will be RISC-V compliant if each output has at least 10 bits|
| `EnableSIMDMask` | Enable the RISC-V floating-point status flags masking of inactive vectorial lanes. When disabled, `simd_mask_i` is inactive |
+| `StochasticRndImplementation` | Enable stochastic rounding support for SDOTP, define LFSR bitwidth and number of trailing bits considered for the SR decision |
+| `CompressedVecCmpResult` | Compress the result of a vector compare in the LSBs, conceived for RV32FD cores |
### Ports
@@ -50,6 +52,7 @@ As the width of some input/output signals is defined by the configuration, it is
|------------------|-----------|----------------------|----------------------------------------------------------------|
| `clk_i` | in | `logic` | Clock, synchronous, rising-edge triggered |
| `rst_ni` | in | `logic` | Asynchronous reset, active low |
+| `hart_id_i` | in | `logic [31:0]` | Core ID, used only when stochastic rounding is enabled |
| `operands_i` | in | `logic [2:0][W-1:0]` | Operands, henceforth referred to as `op[`*i*`]` |
| `rnd_mode_i` | in | `roundmode_e` | Floating-point rounding mode |
| `op_i` | in | `operation_e` | Operation select |
@@ -79,15 +82,16 @@ Default values from the package are listed.
Enumeration of type `logic [2:0]` holding available rounding modes, encoded for use in RISC-V cores:
-| Enumerator | Value | Rounding Mode |
-|------------|----------|------------------------------------------------------|
-| `RNE` | `3'b000` | To nearest, tie to even (default) |
-| `RTZ` | `3'b001` | Toward zero |
-| `RDN` | `3'b010` | Toward negative infinity |
-| `RUP` | `3'b011` | Toward positive infinity |
-| `RMM` | `3'b100` | To nearest, tie away from zero |
-| `ROD` | `3'b101` | To odd |
-| `DYN` | `3'b111` | *RISC-V Dynamic RM, invalid if passed to operations* |
+| Enumerator | Value | Rounding Mode |
+|------------|----------|----------------------------------------------------------|
+| `RNE` | `3'b000` | To nearest, tie to even (default) |
+| `RTZ` | `3'b001` | Toward zero |
+| `RDN` | `3'b010` | Toward negative infinity |
+| `RUP` | `3'b011` | Toward positive infinity |
+| `RMM` | `3'b100` | To nearest, tie away from zero |
+| `ROD` | `3'b101` | To odd |
+| `RSR` | `3'b110` | Stochastic Rounding (available only on SDOTP operations) |
+| `DYN` | `3'b111` | *RISC-V Dynamic RM, invalid if passed to operations* |
##### `operation_e` - FP Operation
@@ -104,6 +108,8 @@ Unless noted otherwise, the first operand `op[0]` is used for the operation.
| `ADD` | `0` | Addition (`op[1] + op[2]`) *note the operand indices* |
| `ADD` | `1` | Subtraction (`op[1] - op[2]`) *note the operand indices* |
| `MUL` | `0` | Multiplication (`op[0] * op[1]`) |
+| `SDOTP` | `0` | Sum of dot product ) |
+| `VSUM` | `0` | Vector Inner Sum ) |
| `DIV` | `0` | Division (`op[0] / op[1]`) |
| `SQRT` | `0` | Square root |
| `SGNJ` | `0` | Sign injection, operation encoded in rounding mode