aboutsummaryrefslogtreecommitdiff
path: root/VexRiscv/src/main/scala/vexriscv/demo/GenFull.scala
diff options
context:
space:
mode:
Diffstat (limited to 'VexRiscv/src/main/scala/vexriscv/demo/GenFull.scala')
-rw-r--r--VexRiscv/src/main/scala/vexriscv/demo/GenFull.scala92
1 files changed, 92 insertions, 0 deletions
diff --git a/VexRiscv/src/main/scala/vexriscv/demo/GenFull.scala b/VexRiscv/src/main/scala/vexriscv/demo/GenFull.scala
new file mode 100644
index 0000000..eb1dba3
--- /dev/null
+++ b/VexRiscv/src/main/scala/vexriscv/demo/GenFull.scala
@@ -0,0 +1,92 @@
+package vexriscv.demo
+
+import vexriscv.plugin._
+import vexriscv.ip.{DataCacheConfig, InstructionCacheConfig}
+import vexriscv.{plugin, VexRiscv, VexRiscvConfig}
+import spinal.core._
+
+/**
+ * Created by spinalvm on 15.06.17.
+ */
+object GenFull extends App{
+ def config = VexRiscvConfig(
+ plugins = List(
+ new IBusCachedPlugin(
+ prediction = DYNAMIC,
+ config = InstructionCacheConfig(
+ cacheSize = 4096,
+ bytePerLine =32,
+ wayCount = 1,
+ addressWidth = 32,
+ cpuDataWidth = 32,
+ memDataWidth = 32,
+ catchIllegalAccess = true,
+ catchAccessFault = true,
+ asyncTagMemory = false,
+ twoCycleRam = true,
+ twoCycleCache = true
+ ),
+ memoryTranslatorPortConfig = MmuPortConfig(
+ portTlbSize = 4
+ )
+ ),
+ new DBusCachedPlugin(
+ config = new DataCacheConfig(
+ cacheSize = 4096,
+ bytePerLine = 32,
+ wayCount = 1,
+ addressWidth = 32,
+ cpuDataWidth = 32,
+ memDataWidth = 32,
+ catchAccessError = true,
+ catchIllegal = true,
+ catchUnaligned = true
+ ),
+ memoryTranslatorPortConfig = MmuPortConfig(
+ portTlbSize = 6
+ )
+ ),
+ new MmuPlugin(
+ virtualRange = _(31 downto 28) === 0xC,
+ ioRange = _(31 downto 28) === 0xF
+ ),
+ new DecoderSimplePlugin(
+ catchIllegalInstruction = true
+ ),
+ new RegFilePlugin(
+ regFileReadyKind = plugin.SYNC,
+ zeroBoot = false
+ ),
+ new IntAluPlugin,
+ new SrcPlugin(
+ separatedAddSub = false,
+ executeInsertion = true
+ ),
+ new FullBarrelShifterPlugin,
+ new HazardSimplePlugin(
+ bypassExecute = true,
+ bypassMemory = true,
+ bypassWriteBack = true,
+ bypassWriteBackBuffer = true,
+ pessimisticUseSrc = false,
+ pessimisticWriteRegFile = false,
+ pessimisticAddressMatch = false
+ ),
+ new MulPlugin,
+ new DivPlugin,
+ new CsrPlugin(CsrPluginConfig.small(0x80000020l)),
+ new DebugPlugin(ClockDomain.current.clone(reset = Bool().setName("debugReset"))),
+ new BranchPlugin(
+ earlyBranch = false,
+ catchAddressMisaligned = true
+ ),
+ new YamlPlugin("cpu0.yaml")
+ )
+ )
+
+ def cpu() = new VexRiscv(
+ config
+ )
+
+ SpinalVerilog(cpu())
+}