-
Notifications
You must be signed in to change notification settings - Fork 657
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1928 from ucb-bar/vector-release
Integrate vector unit
- Loading branch information
Showing
13 changed files
with
263 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
Saturn | ||
======== | ||
|
||
Saturn is a parameterized RISC-V Vector Unit generator currently supporting integration with the Rocket and Shuttle cores. | ||
Saturn implements a compact short-vector-length vector microarchitecture suitable for deployment in a DSP-optimized core or area-efficient general-purpose core. | ||
|
||
More documentation on Saturn will be released in the future. | ||
|
||
* Full support for `V` application-profile RVV 1.0 | ||
* Precise traps with virtual memory | ||
* Indexed/strided/segmented loads and stores | ||
* Mask operations | ||
* Register-gather + reductions | ||
* `Zvfh` support for vector half-precision floating-point (FP16) | ||
* `Zve64d` support for vector FP32 and FP64 | ||
* Configurable vector length, from `Zvl64b` up (tested to `Zvl4096b`) | ||
* Configurable datapath width, from 64b up (tested to 512b) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
171 changes: 171 additions & 0 deletions
171
generators/chipyard/src/main/scala/config/SaturnConfigs.scala
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
package chipyard | ||
|
||
import org.chipsalliance.cde.config.{Config} | ||
import saturn.common.{VectorParams} | ||
|
||
// Rocket-integrated configs | ||
class MINV64D64RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(64, 64, VectorParams.minParams) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class MINV128D64RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(128, 64, VectorParams.minParams) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class MINV256D64RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(256, 64, VectorParams.minParams) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV128D128RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(128, 128, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV256D64RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(256, 64, VectorParams.refParams) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV256D128RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(256, 128, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV512D128RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(512, 128, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV512D256RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(512, 256, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(256) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class DMAV256D256RocketConfig extends Config( | ||
new saturn.rocket.WithRocketVectorUnit(256, 256, VectorParams.dmaParams) ++ | ||
new chipyard.config.WithSystemBusWidth(256) ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
// Shuttle-integrated configs | ||
class GENV128D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(128, 128, VectorParams.genParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV256D64ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(256, 64, VectorParams.refParams) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV256D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(256, 128, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class DSPV256D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(256, 128, VectorParams.dspParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithSGTCM(address=0x78000000, size=(8L << 10), banks=16) ++ | ||
new shuttle.common.WithTCM ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class GENV256D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(256, 128, VectorParams.genParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV512D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(512, 128, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class DSPV512D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(512, 128, VectorParams.dspParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class GENV512D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(512, 128, VectorParams.genParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class GENV512D256ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(512, 256, VectorParams.genParams) ++ | ||
new chipyard.config.WithSystemBusWidth(256) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(32) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class GENV1024D128ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(1024, 128, VectorParams.genParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV256D256ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(256, 256, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(256) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(32) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV512D256ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(512, 256, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(256) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(32) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class REFV512D512ShuttleConfig extends Config( | ||
new saturn.shuttle.WithShuttleVectorUnit(512, 512, VectorParams.refParams) ++ | ||
new chipyard.config.WithSystemBusWidth(256) ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(64) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
|
||
// Cosim configs | ||
|
||
class MINV128D64RocketCosimConfig extends Config( | ||
new chipyard.harness.WithCospike ++ | ||
new chipyard.config.WithTraceIO ++ | ||
new saturn.rocket.WithRocketVectorUnit(128, 64, VectorParams.minParams) ++ | ||
new freechips.rocketchip.rocket.WithCease(false) ++ | ||
new freechips.rocketchip.rocket.WithDebugROB ++ | ||
new freechips.rocketchip.rocket.WithNBigCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|
||
class GENV256D128ShuttleCosimConfig extends Config( | ||
new chipyard.harness.WithCospike ++ | ||
new chipyard.config.WithTraceIO ++ | ||
new saturn.shuttle.WithShuttleVectorUnit(256, 128, VectorParams.genParams) ++ | ||
new chipyard.config.WithSystemBusWidth(128) ++ | ||
new shuttle.common.WithShuttleDebugROB ++ | ||
new shuttle.common.WithShuttleTileBeatBytes(16) ++ | ||
new shuttle.common.WithNShuttleCores(1) ++ | ||
new chipyard.config.AbstractConfig) | ||
|