From 578e54376af6c1d1ab2db86ee733f5ad249db8fb Mon Sep 17 00:00:00 2001 From: Dolu1990 Date: Sat, 10 Mar 2018 12:57:42 +0100 Subject: [PATCH] Add MulDivIterativePlugin in readme --- README.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a3f9bea..7fb4f82 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ + [DBusCachedPlugin](#dbuscachedplugin) + [MulPlugin](#mulplugin) + [DivPlugin](#divplugin) + + [MulDivIterativePlugin](#MulDivIterativePlugin) + [CsrPlugin](#csrplugin) + [StaticMemoryTranslatorPlugin](#staticmemorytranslatorplugin) + [MemoryTranslatorPlugin](#memorytranslatorplugin) @@ -893,7 +894,27 @@ Implement the multiplication instruction from the RISC-V M extension. Its implem #### DivPlugin -Implement the division/modulo instruction from the RISC-V M extension. It is done by a simple iterative manner which always take 34 cycles. The result is inserted into the Memory stage. +Implement the division/modulo instruction from the RISC-V M extension. It is done by a simple iterative manner which always take 34 cycles. The result is inserted into the Memory stage. + +This plugin is now based on the MulDivIterativePlugin one. + +#### MulDivIterativePlugin + +This plugin implement the multiplication, division and modulo of the RISC-V M extension by an iterative manner, which is friendly for small FPGA which don't provide DSP blocks. + +This plugin is able to unrool the iterative calculation process to reduce the number of cycles used to execute mul/div instructions. + +| Parameters | type | description | +| ------ | ----------- | ------ | +| genMul | Boolean | Enable the multiplication support, can be set to false if you wan for instance to use the MulPlugin instead | +| genDiv | Boolean | Enable the division support | +| mulUnroolFactor | Int | Number of combinatorial stages used to speed up the multiplication, should be > 0 | +| divUnroolFactor | Int | Number of combinatorial stages used to speed up the division, should be > 0 | + +The number of cycles used to execute a multiplication is '32/mulUnroolFactor' +The number of cycles used to execute a division is '32/divUnroolFactor + 1' + +Both mul/div are processed into the memory stage (late result) #### CsrPlugin