Add SMP synthesis
This commit is contained in:
parent
296cb44bc4
commit
f71f360e32
|
@ -134,7 +134,7 @@ make clean run IBUS=CACHED DBUS=CACHED DEBUG_PLUGIN=STD DHRYSTONE=yes SUPERVISO
|
||||||
|
|
||||||
|
|
||||||
object LinuxGen {
|
object LinuxGen {
|
||||||
def configFull(litex : Boolean, withMmu : Boolean) = {
|
def configFull(litex : Boolean, withMmu : Boolean, withSmp : Boolean = false) = {
|
||||||
val config = VexRiscvConfig(
|
val config = VexRiscvConfig(
|
||||||
plugins = List(
|
plugins = List(
|
||||||
//Uncomment the whole IBusSimplePlugin and comment IBusCachedPlugin if you want uncached iBus config
|
//Uncomment the whole IBusSimplePlugin and comment IBusCachedPlugin if you want uncached iBus config
|
||||||
|
@ -201,6 +201,8 @@ object LinuxGen {
|
||||||
catchAccessError = true,
|
catchAccessError = true,
|
||||||
catchIllegal = true,
|
catchIllegal = true,
|
||||||
catchUnaligned = true,
|
catchUnaligned = true,
|
||||||
|
withExclusive = withSmp,
|
||||||
|
withInvalidate = withSmp,
|
||||||
withLrSc = true,
|
withLrSc = true,
|
||||||
withAmo = true
|
withAmo = true
|
||||||
// )
|
// )
|
||||||
|
|
|
@ -146,8 +146,15 @@ object VexRiscvSynthesisBench {
|
||||||
SpinalConfig(inlineRom = true).generateVerilog(wrap(new VexRiscv(LinuxGen.configFull(false, true))).setDefinitionName(getRtlPath().split("\\.").head))
|
SpinalConfig(inlineRom = true).generateVerilog(wrap(new VexRiscv(LinuxGen.configFull(false, true))).setDefinitionName(getRtlPath().split("\\.").head))
|
||||||
}
|
}
|
||||||
|
|
||||||
val rtls = List(twoStage, twoStageBarell, twoStageMulDiv, twoStageAll, smallestNoCsr, smallest, smallAndProductive, smallAndProductiveWithICache, fullNoMmuNoCache, noCacheNoMmuMaxPerf, fullNoMmuMaxPerf, fullNoMmu, full, linuxBalanced)
|
val linuxBalancedSmp = new Rtl {
|
||||||
// val rtls = List(twoStage, twoStageBarell, twoStageMulDiv, twoStageAll)
|
override def getName(): String = "VexRiscv linux balanced SMP"
|
||||||
|
override def getRtlPath(): String = "VexRiscvLinuxBalancedSmp.v"
|
||||||
|
SpinalConfig(inlineRom = true).generateVerilog(wrap(new VexRiscv(LinuxGen.configFull(false, true, withSmp = true))).setDefinitionName(getRtlPath().split("\\.").head))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// val rtls = List(twoStage, twoStageBarell, twoStageMulDiv, twoStageAll, smallestNoCsr, smallest, smallAndProductive, smallAndProductiveWithICache, fullNoMmuNoCache, noCacheNoMmuMaxPerf, fullNoMmuMaxPerf, fullNoMmu, full, linuxBalanced, linuxBalancedSmp)
|
||||||
|
val rtls = List(linuxBalanced, linuxBalancedSmp)
|
||||||
// val rtls = List(smallest)
|
// val rtls = List(smallest)
|
||||||
val targets = XilinxStdTargets() ++ AlteraStdTargets() ++ IcestormStdTargets().take(1) ++ List(
|
val targets = XilinxStdTargets() ++ AlteraStdTargets() ++ IcestormStdTargets().take(1) ++ List(
|
||||||
new Target {
|
new Target {
|
||||||
|
|
Loading…
Reference in New Issue