class Apb2Net extends Module
APB2 Network
Parameterizable number of initiators and memory mapped targets. Arbitration between initiators for access to targets. Default parameterization connects one APB initiator to two APB targets. Cross-bar network topology. To be clear, this Module drives its targets and responds to its initiators, but where it is instantiated its initators are targets and its targets are initiators.
- To do
implement PIPE_CTRL as described
- Note
targets are assumed to be contiguously mapped from the base (with no gaps in map, i.e. if there are two targets of size 4kB and 8kB, respectively, and the base address of the first is @0x0 then the base address of the second is implicitly @4kB)
,this module is not optimized for throughput, but for easy timing closure and low power
- Alphabetic
- By Inheritance
- Apb2Net
- Module
- ImplicitReset
- ImplicitClock
- RawModule
- BaseModule
- IsInstantiable
- HasId
- InstanceId
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Instance Constructors
- new Apb2Net(BASE_ADDR: Int = 0, GRANULE_SIZE_K: Int = 4, NUM_INIT: Int = 1, NUM_TARG: Int = 2, TARGET_SIZES: Array[Int] = new Array[Int](2), DATA_W: Int = 32, ADDR_W: Int = 32, PIPE_CTRL: Int = 0)
- BASE_ADDR
base address of the network in bytes (must be multiple of GRANULE_SIZE_K)
- GRANULE_SIZE_K
minimum size of address space of one APB target (kB >= 4)
- NUM_INIT
number of initiators
- NUM_TARG
number of targets
- TARGET_SIZES
array of target sizes (multiples of GRANULE_SIZE_K)
- DATA_W
the width of the APB data buses in bits
- ADDR_W
the width of the APB address buses in bits
- PIPE_CTRL
adds pipeline register stages as follows 0: none, 1: after arbitration, 2: for each target
Value Members
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- val ADDR_W: Int
- val APB_ALGN: Int
- val ArbInst: Arbiter[Apb2ReqCtrl]
- val BASE_ADDR: Int
- val DATA_W: Int
- val GRANULE_SIZE_K: Int
- def IO[T <: Data](iodef: => T)(implicit sourceInfo: SourceInfo): T
- Attributes
- protected
- Definition Classes
- BaseModule
- val NUM_BYTE: Int
- val NUM_INIT: Int
- val NUM_TARG: Int
- val PIPE_CTRL: Int
- val SEL_ALGN: Int
- val TARGET_SIZES: Array[Int]
- def _bindIoInPlace(iodef: Data)(implicit sourceInfo: SourceInfo): Unit
- Attributes
- protected
- Definition Classes
- BaseModule
- var _closed: Boolean
- Attributes
- protected
- Definition Classes
- BaseModule
- def _moduleDefinitionIdentifierProposal: String
- Attributes
- protected
- Definition Classes
- BaseModule
- def _sourceInfo: SourceInfo
- Attributes
- protected
- Definition Classes
- BaseModule
- def _traitModuleDefinitionIdentifierProposal: Option[String]
- Attributes
- protected
- Definition Classes
- BaseModule
- val activeReq: Bool
- val apb2Choice: DecoupledIO[Apb2ReqCtrl]
- val apb2ChoiceRsp: Apb2Rsp
- val apb2InitChoiceReqFF: Apb2Req
- val apb2ReqVec: Vec[DecoupledIO[Apb2ReqCtrl]]
- val apb2TargetSel: UInt
- val apb2TargetSelRspFF: Apb2Rsp
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def atModuleBodyEnd(gen: => Unit): Unit
- Attributes
- protected
- Definition Classes
- RawModule
- val chosen: UInt
- def circuitName: String
- Definition Classes
- HasId
- final val clock: Clock
- Definition Classes
- Module
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @HotSpotIntrinsicCandidate() @native()
- final val definitionIdentifier: String
- Definition Classes
- BaseModule
- def desiredName: String
- Definition Classes
- BaseModule
- def endIOCreation()(implicit si: SourceInfo): Unit
- Definition Classes
- BaseModule
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(that: Any): Boolean
- Definition Classes
- HasId → AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- def getCommands: Seq[Command]
- Attributes
- protected
- Definition Classes
- RawModule
- def getModulePorts: Seq[Data]
- Attributes
- protected[chisel3]
- Definition Classes
- BaseModule
- def hasSeed: Boolean
- Definition Classes
- HasId
- def hashCode(): Int
- Definition Classes
- HasId → AnyRef → Any
- def implicitClock: Clock
- Attributes
- protected
- Definition Classes
- Module → ImplicitClock
- def implicitReset: Reset
- Attributes
- protected
- Definition Classes
- Module → ImplicitReset
- def instanceName: String
- Definition Classes
- BaseModule → HasId → InstanceId
- val io: Bundle { ... /* 2 definitions in type refinement */ }
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final lazy val name: String
- Definition Classes
- BaseModule
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @HotSpotIntrinsicCandidate() @native()
- val pReadyFF: Vec[Bool]
- def parentModName: String
- Definition Classes
- HasId → InstanceId
- def parentPathName: String
- Definition Classes
- HasId → InstanceId
- def pathName: String
- Definition Classes
- HasId → InstanceId
- def portsContains(elem: Data): Boolean
- Attributes
- protected
- Definition Classes
- BaseModule
- def portsSize: Int
- Attributes
- protected
- Definition Classes
- BaseModule
- val reqVec: Vec[Bool]
- final val reset: Reset
- Definition Classes
- Module
- def resetType: Type
- Definition Classes
- Module
- val stateFF: Apb2NetStateEnum.Type
- def suggestName(seed: => String): Apb2Net.this.type
- Definition Classes
- HasId
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def targetMatch(sel: UInt, bot: Int, top: Int): Bool
- val targetSpace: Array[Int]
- final def toAbsoluteTarget: IsModule
- Definition Classes
- BaseModule → InstanceId
- final def toNamed: ModuleName
- Definition Classes
- BaseModule → InstanceId
- final def toRelativeTarget(root: Option[BaseModule]): IsModule
- Definition Classes
- BaseModule
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def toTarget: ModuleTarget
- Definition Classes
- BaseModule → InstanceId
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- object Apb2NetStateEnum extends ChiselEnum
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated
(Since version 9)
- def override_clock: Option[Clock]
- Attributes
- protected
- Definition Classes
- Module
- Annotations
- @deprecated
- Deprecated
(Since version Chisel 3.5) Use withClock at Module instantiation
- def override_clock_=(rhs: Option[Clock]): Unit
- Attributes
- protected
- Definition Classes
- Module
- Annotations
- @deprecated
- Deprecated
(Since version Chisel 3.5) Use withClock at Module instantiation
- def override_reset: Option[Bool]
- Attributes
- protected
- Definition Classes
- Module
- Annotations
- @deprecated
- Deprecated
(Since version Chisel 3.5) Use withClock at Module instantiation
- def override_reset_=(rhs: Option[Bool]): Unit
- Attributes
- protected
- Definition Classes
- Module
- Annotations
- @deprecated
- Deprecated
(Since version Chisel 3.5) Use withClock at Module instantiation