unleashed: build quad-core instead
[freedom-sifive.git] / src / main / scala / unleashed / u500vc707devkit / Config.scala
1 // See LICENSE for license details.
2 package sifive.freedom.unleashed.u500vc707devkit
3
4 import freechips.rocketchip.config._
5 import freechips.rocketchip.coreplex._
6 import freechips.rocketchip.devices.debug._
7 import freechips.rocketchip.devices.tilelink._
8 import freechips.rocketchip.diplomacy._
9 import freechips.rocketchip.system._
10 import freechips.rocketchip.tile._
11
12 import sifive.blocks.devices.gpio._
13 import sifive.blocks.devices.spi._
14 import sifive.blocks.devices.uart._
15
16 import sifive.fpgashells.devices.xilinx.xilinxvc707mig.{MemoryXilinxDDRKey,XilinxVC707MIGParams}
17
18 // Default FreedomUVC707Config
19 class FreedomUVC707Config extends Config(
20 new WithJtagDTM ++
21 new WithNMemoryChannels(1) ++
22 new WithNBigCores(4) ++
23 new BaseConfig
24 )
25
26 // Freedom U500 VC707 Dev Kit Peripherals
27 class U500VC707DevKitPeripherals extends Config((site, here, up) => {
28 case PeripheryUARTKey => List(
29 UARTParams(address = BigInt(0x54000000L)))
30 case PeripherySPIKey => List(
31 SPIParams(rAddress = BigInt(0x54001000L)))
32 case PeripheryGPIOKey => List(
33 GPIOParams(address = BigInt(0x54002000L), width = 4))
34 case PeripheryMaskROMKey => List(
35 MaskROMParams(address = 0x10000, name = "BootROM"))
36 })
37
38 // Freedom U500 VC707 Dev Kit
39 class U500VC707DevKitConfig extends Config(
40 new WithNExtTopInterrupts(0) ++
41 new U500VC707DevKitPeripherals ++
42 new FreedomUVC707Config().alter((site,here,up) => {
43 case ErrorParams => ErrorParams(Seq(AddressSet(0x3000, 0xfff)))
44 case PeripheryBusKey => up(PeripheryBusKey, site).copy(frequency = 50000000) // 50 MHz hperiphery
45 case MemoryXilinxDDRKey => XilinxVC707MIGParams(address = Seq(AddressSet(0x80000000L,0x40000000L-1))) //1GB
46 case DTSTimebase => BigInt(1000000)
47 case ExtMem => up(ExtMem).copy(size = 0x40000000L)
48 case JtagDTMKey => new JtagDTMConfig (
49 idcodeVersion = 2, // 1 was legacy (FE310-G000, Acai).
50 idcodePartNum = 0x000, // Decided to simplify.
51 idcodeManufId = 0x489, // As Assigned by JEDEC to SiFive. Only used in wrappers / test harnesses.
52 debugIdleCycles = 5) // Reasonable guess for synchronization
53 })
54 )