Added "findBy" function to allow grouping parameters by location (e.g. L1D vs L1I), rather than grouping by field (e.g. NSets vs NWays)
This commit is contained in:
parent
f97a801d60
commit
73eac94a65
@ -8,8 +8,11 @@ import rocket._
|
||||
import rocket.Util._
|
||||
|
||||
class DefaultConfig extends ChiselConfig {
|
||||
type PF = PartialFunction[Any,Any]
|
||||
val topDefinitions:World.TopDefs = {
|
||||
(pname,site,here) => pname match {
|
||||
(pname,site,here) => {
|
||||
def findBy(sname:Any):Any = here[PF](site[Any](sname))(pname)
|
||||
pname match {
|
||||
//RocketChip Parameters
|
||||
case BuildTile => (r:Bool) => {new RocketTile(resetSignal = r)}
|
||||
//HTIF Parameters
|
||||
@ -30,28 +33,32 @@ class DefaultConfig extends ChiselConfig {
|
||||
case MIFAddrBits => Dump("MEM_ADDR_BITS", site(PAddrBits) - site(CacheBlockOffsetBits))
|
||||
case MIFDataBeats => site(TLDataBits)/site(MIFDataBits)
|
||||
//Params used by all caches
|
||||
case NSets => findBy(CacheName)
|
||||
case NWays => findBy(CacheName)
|
||||
case RowBits => findBy(CacheName)
|
||||
case BlockOffBits => findBy(CacheName)
|
||||
case ECCCode => None
|
||||
case WordBits => site(XprLen)
|
||||
case Replacer => () => new RandomReplacement(site(NWays))
|
||||
case BlockOffBits => site(CacheName) match {
|
||||
case "L1I" | "L1D" => log2Up(site(TLDataBits)/8)
|
||||
case "L2" => 0
|
||||
}
|
||||
case NSets => site(CacheName) match {
|
||||
case "L1I" => 128
|
||||
case "L1D" => Knob("L1D_SETS") //128
|
||||
case "L2" => 512
|
||||
}
|
||||
case NWays => site(CacheName) match {
|
||||
case "L1I" => 2
|
||||
case "L1D" => Knob("L1D_WAYS") //4
|
||||
case "L2" => 8
|
||||
}
|
||||
case RowBits => site(CacheName) match {
|
||||
case "L1I" => 4*site(CoreInstBits)
|
||||
case "L1D" => 2*site(CoreDataBits)
|
||||
case "L2" => site(TLDataBits)
|
||||
}
|
||||
//Cache-Specific Params
|
||||
case "L1I" => {
|
||||
case NSets => 128
|
||||
case NWays => 2
|
||||
case RowBits => 4*site(CoreInstBits)
|
||||
case BlockOffBits => log2Up(site(TLDataBits)/8)
|
||||
}:PF
|
||||
case "L1D" => {
|
||||
case NSets => Knob("L1D_SETS") //128
|
||||
case NWays => Knob("L1D_WAYS") //4
|
||||
case RowBits => 2*site(CoreDataBits)
|
||||
case BlockOffBits => log2Up(site(TLDataBits)/8)
|
||||
}:PF
|
||||
case "L2" => {
|
||||
case NSets => 512
|
||||
case NWays => 8
|
||||
case RowBits => site(TLDataBits)
|
||||
case BlockOffBits => 0
|
||||
}:PF
|
||||
//L1InstCache
|
||||
case NITLBEntries => 8
|
||||
case NBTBEntries => 62
|
||||
@ -117,6 +124,7 @@ class DefaultConfig extends ChiselConfig {
|
||||
case Coherence => new MSICoherence(() => new NullRepresentation)
|
||||
}
|
||||
}
|
||||
}
|
||||
override val knobValues:Any=>Any = {
|
||||
case "NTILES" => 1
|
||||
case "NBANKS" => 1
|
||||
|
Loading…
Reference in New Issue
Block a user