IBusSimplePlugin README.
This commit is contained in:
parent
46f10bacb2
commit
b7ddd02fc6
26
README.md
26
README.md
|
@ -654,17 +654,17 @@ This plugin implement the CPU frontend (instruction fetch) via a very simple and
|
|||
|
||||
| Parameters | type | description |
|
||||
| ------ | ----------- | ------ |
|
||||
| catchAccessFault | Boolean | If an the read response specify an read error and this parameter is true, it will generate an CPU exception trap |
|
||||
| resetVector | BigInt | Address of the program counter after the reset |
|
||||
| cmdForkOnSecondStage | Boolean | By default jump have an asynchronous immediate effect on the program counter, which allow to reduce the branch penalties by one cycle but could reduce the FMax as it will combinatorialy drive the instruction bus address signal. To avoid this you can set this parameter to true, which will make the jump affecting the programm counter in a sequancial way, which will cut the combinatorial path but add one additional cycle of penalty when a jump occur. |
|
||||
| cmdForkPersistence | Boolean | If this parameter is false, then request on the iBus can disappear/change before their completion. Which reduce area but isn't safe/supported by many arbitration/slaves. If you set this parameter to true, then the iBus cmd will stay until they are completed.
|
||||
| compressedGen | Boolean | Enable RVC support |
|
||||
| busLatencyMin | Int | Specify the minimal latency between the iBus.cmd and iBus.rsp, which will add the corresponding number of stages into the frontend to keep the IPC to 1.|
|
||||
| injectorStage | Boolean | Add a stage between the frontend and the decode stage of the CPU to improve FMax. (busLatencyMin + injectorStage) should be at least two. |
|
||||
| prediction | BranchPrediction | Can be set to NONE/STATIC/DYNAMIC/DYNAMIC_TARGET to specify the branch predictor implementation, see bellow for more descriptions |
|
||||
| historyRamSizeLog2 | Int | Specify the number of entries in the direct mapped prediction cache of DYNAMIC/DYNAMIC_TARGET implementation. 2 pow historyRamSizeLog2 entries |
|
||||
| catchAccessFault | Boolean | When true, an instruction read response with read error asserted results in a CPU exception trap. |
|
||||
| resetVector | BigInt | Address of the program counter after the reset. |
|
||||
| cmdForkOnSecondStage | Boolean | When false, branches immediately update the program counter. This minimizes branch penalties but might reduce FMax because the instruction bus address signal is a combinatorial path. When true, this combinatorial path is removed and the program counter is updated one cycle after a branch is detected. While FMax may improve, an additional branch penalty will be incurred as well. |
|
||||
| cmdForkPersistence | Boolean | When false, requests on the iBus can disappear/change before they are acknowledged. This reduces area but isn't safe/supported by many arbitration/slaves. When true, once initiated, iBus requests will stay until they are acknowledged. |
|
||||
| compressedGen | Boolean | Enable RISC-V compressed instruction (RVC) support. |
|
||||
| busLatencyMin | Int | Specifies the minimal latency between the iBus.cmd and iBus.rsp. A corresponding number of stages are added to the frontend to keep the IPC to 1.|
|
||||
| injectorStage | Boolean | When true, a stage between the frontend and the decode stage of the CPU is added to improve FMax. (busLatencyMin + injectorStage) should be at least two. |
|
||||
| prediction | BranchPrediction | Can be set to NONE/STATIC/DYNAMIC/DYNAMIC_TARGET to specify the branch predictor implementation. See below for more details. |
|
||||
| historyRamSizeLog2 | Int | Specify the number of entries in the direct mapped prediction cache of DYNAMIC/DYNAMIC_TARGET implementation. 2 pow historyRamSizeLog2 entries. |
|
||||
|
||||
Here is the SimpleBus interface definition
|
||||
Here is the SimpleBus interface definition:
|
||||
|
||||
```scala
|
||||
case class IBusSimpleCmd() extends Bundle{
|
||||
|
@ -695,9 +695,9 @@ case class IBusSimpleBus(interfaceKeepData : Boolean) extends Bundle with IMaste
|
|||
|
||||
Setting cmdForkPersistence and cmdForkOnSecondStage improves iBus cmd timings.
|
||||
|
||||
Note that bridges are implemented to convert this interface into AXI4 and Avalon
|
||||
The iBusSimplePlugin includes bridges to convert from the IBusSimpleBus to AXI4, Avalon, and Wishbone interfaces.
|
||||
|
||||
The jump interface implemented by this plugin allow all other plugin to request jumps. The stage argument specify from which stage the jump is asked, which will allow the PcManagerSimplePlugin plugin to manage priorities between jump requests.
|
||||
This plugin implements a jump interface that allows all other plugins to issue a jump:
|
||||
|
||||
```scala
|
||||
trait JumpService{
|
||||
|
@ -705,6 +705,8 @@ trait JumpService{
|
|||
}
|
||||
```
|
||||
|
||||
The stage argument specifies the stage from which the jump is asked. This allows the PcManagerSimplePlugin plugin to manage priorities between jump requests from
|
||||
diffent stages.
|
||||
|
||||
#### IBusCachedPlugin
|
||||
|
||||
|
|
Loading…
Reference in New Issue