You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Principal Author: Stefan Mach <smach@iis.ee.ethz.ch>
6
7
7
8
## Features
8
9
@@ -138,6 +139,32 @@ Furthermore, this repository tries to adhere to [SemVer](https://semver.org/), a
138
139
139
140
FPnew is released under the *SolderPad Hardware License*, which is a permissive license based on Apache 2.0. Please refer to the [license file](LICENSE) for further information.
140
141
142
+
143
+
## Publication
144
+
145
+
If you use FPnew in your work, you can cite us:
146
+
147
+
<details>
148
+
<summary>FPnew Publication</summary>
149
+
<p>
150
+
151
+
```
152
+
@article{mach2020fpnew,
153
+
title={Fpnew: An open-source multiformat floating-point unit architecture for energy-proportional transprecision computing},
154
+
author={Mach, Stefan and Schuiki, Fabian and Zaruba, Florian and Benini, Luca},
155
+
journal={IEEE Transactions on Very Large Scale Integration (VLSI) Systems},
156
+
volume={29},
157
+
number={4},
158
+
pages={774--787},
159
+
year={2020},
160
+
publisher={IEEE}
161
+
}
162
+
```
163
+
164
+
</p>
165
+
</details>
166
+
167
+
141
168
## Acknowledgement
142
169
143
170
This project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No 732631.
Copy file name to clipboardExpand all lines: docs/README.md
+13-6Lines changed: 13 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -24,25 +24,26 @@ FPnew is a parametric floating-point unit which supports standard RISC-V operati
24
24
The top-level module of the FPU is `fpnew_top` and its interface is further described in this section.
25
25
FPnew uses a synchronous interface using handshaking to transfer data into and out of the FPU.
26
26
27
-
All array types are packed due to poor support of unpacked arrays in some EDA tools.
27
+
All array types are packed due to poor support of unpacked arrays in some EDA tools.
28
28
SystemVerilog `interface`s are not used due to poor support in some EDA tools.
29
29
30
30
31
31
### Parameters
32
32
33
-
The configuration parameters use data types defined in `fpnew_pkg` which are structs containing multi-dimensional arrays of custom enumeration types.
33
+
The configuration parameters use data types defined in `fpnew_pkg` which are structs containing multi-dimensional arrays of custom enumeration types.
34
34
For more in-depth explanations on how to configure the unit and the layout of the types used, please refer to the [Configuration Section](#configuration).
|`Features`| Specifies the features of the FPU, such as the set of supported formats and operations. |
39
39
|`Implementation`| Allows to control how the above features are implemented, such as the number of pipeline stages and architecture of subunits |
40
40
|`TagType`| The SystemVerilog data type of the operation tag |
41
-
41
+
|`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|
42
+
|`EnableSIMDMask`| Enable the RISC-V floating-point status flags masking of inactive vectorial lanes. When disabled, `simd_mask_i` is inactive |
42
43
43
44
### Ports
44
45
45
-
Many ports use custom types and enumerations from `fpnew_pkg` to improve code structure internally (see [Data Types](#data-types)).
46
+
Many ports use custom types and enumerations from `fpnew_pkg` to improve code structure internally (see [Data Types](#data-types)).
46
47
As the width of some input/output signals is defined by the configuration, it is denoted `W` in the following table.
47
48
48
49
| Port Name | Direction | Type | Description |
@@ -58,6 +59,7 @@ As the width of some input/output signals is defined by the configuration, it is
58
59
|`int_fmt_i`| in |`int_format_e`| Integer format |
59
60
|`vectorial_op_i`| in |`logic`| Vectorial operation select |
60
61
|`tag_i`| in |`TagType`| Operation tag input |
62
+
|`simd_mask_i`| in |`MaskType`| Vector mask input for the status flags |
61
63
|`in_valid_i`| in |`logic`| Input data valid (see [Handshake](#handshake-interface)) |
62
64
|`in_ready_o`| out |`logic`| Input interface ready (see [Handshake](#handshake-interface)) |
63
65
|`flush_i`| in |`logic`| Synchronous pipeline reset |
@@ -84,6 +86,7 @@ Enumeration of type `logic [2:0]` holding available rounding modes, encoded for
84
86
|`RDN`|`3'b010`| Toward negative infinity |
85
87
|`RUP`|`3'b011`| Toward positive infinity |
86
88
|`RMM`|`3'b100`| To nearest, tie away from zero |
89
+
|`ROD`|`3'b101`| To odd |
87
90
|`DYN`|`3'b111`|*RISC-V Dynamic RM, invalid if passed to operations*|
88
91
89
92
##### `operation_e` - FP Operation
@@ -197,6 +200,10 @@ Tags are an optional feature of FPnew and can be controlled by setting the `TagT
197
200
In order to disable the use of tags, set `TagType` to `logic` (the default value), and bind the `tag_i` port to a static value.
198
201
Furthermore ensure that your synthesis tool removes static registers.
199
202
203
+
### Mask for the status flags
204
+
205
+
This input is meant to be used in vectorial mode. The mask for the status flags is an input vector with `NumLanes` bits, and each bit can mask the status flags of a different FPU vectorial lane. This helps not make the final output flag signal dirty due to status flags from inactive lanes.
206
+
If `simd_mask_i[n] == 1'b0`, the `n`th FPU lane will be masked for this operation and its resulting status flags will not be propagated to the final output status flag.
200
207
201
208
## Configuration
202
209
@@ -324,7 +331,7 @@ Currently, the follwoing unit types are available for the FPU operation groups:
324
331
'{default: MERGED}, // DIVSQRT
325
332
'{default: PARALLEL}, // NONCOMP
326
333
'{default: MERGED}} // CONV`
327
-
```
334
+
```
328
335
(all formats within operation group use same type)
329
336
330
337
@@ -348,7 +355,7 @@ The configuration `pipe_config_t` is an enumeration of type `logic [1:0]` holdi
348
355
### Adding Custom Formats
349
356
350
357
In order to add custom FP or integer formats to the FPU, it is necessary to make small changes to `fpnew_pkg`.
351
-
New formats can easily be added by extending the default list of available formats, and/or by changing or removing the defaults.
358
+
New formats can easily be added by extending the default list of available formats, and/or by changing or removing the defaults.
352
359
353
360
Namely, the following parameters and types shall be adapted:
0 commit comments