package vexriscv.demo import vexriscv.plugin._ import vexriscv.{VexRiscv, VexRiscvConfig, plugin} import spinal.core._ import vexriscv.ip.InstructionCacheConfig /** * Created by spinalvm on 15.06.17. */ object GenSmallAndProductiveICache extends App{ def cpu() = new VexRiscv( config = VexRiscvConfig( plugins = List( new PcManagerSimplePlugin( resetVector = 0x80000000l, relaxedPcCalculation = false ), new IBusCachedPlugin( config = InstructionCacheConfig( cacheSize = 4096, bytePerLine = 32, wayCount = 1, addressWidth = 32, cpuDataWidth = 32, memDataWidth = 32, catchIllegalAccess = false, catchAccessFault = false, asyncTagMemory = false, twoCycleRam = false, twoCycleCache = true ) ), new DBusSimplePlugin( catchAddressMisaligned = false, catchAccessFault = false ), new CsrPlugin(CsrPluginConfig.smallest), new DecoderSimplePlugin( catchIllegalInstruction = false ), new RegFilePlugin( regFileReadyKind = plugin.SYNC, zeroBoot = false ), new IntAluPlugin, new SrcPlugin( separatedAddSub = false, executeInsertion = true ), new LightShifterPlugin, new HazardSimplePlugin( bypassExecute = true, bypassMemory = true, bypassWriteBack = true, bypassWriteBackBuffer = true, pessimisticUseSrc = false, pessimisticWriteRegFile = false, pessimisticAddressMatch = false ), new BranchPlugin( earlyBranch = false, catchAddressMisaligned = false ), new YamlPlugin("cpu0.yaml") ) ) ) SpinalVerilog(cpu()) }