Add EmptyChipTop example
This commit is contained in:
@@ -25,6 +25,8 @@ The default standard ``ChipTop`` provides a mimimal, barebones template for ``IO
|
|||||||
For tapeouts, integrating Analog IP, or other non-standard use cases, Chipyard supports specifying a custom ``ChipTop`` using the ``BuildTop`` key.
|
For tapeouts, integrating Analog IP, or other non-standard use cases, Chipyard supports specifying a custom ``ChipTop`` using the ``BuildTop`` key.
|
||||||
An example of a custom ChipTop which uses non-standard IOCells is provided in `generators/chipyard/src/main/scala/example/CustomChipTop.scala <https://github.com/ucb-bar/chipyard/blob/main/generators/chipyard/src/main/scala/example/CustomChipTop.scala>`__
|
An example of a custom ChipTop which uses non-standard IOCells is provided in `generators/chipyard/src/main/scala/example/CustomChipTop.scala <https://github.com/ucb-bar/chipyard/blob/main/generators/chipyard/src/main/scala/example/CustomChipTop.scala>`__
|
||||||
|
|
||||||
|
You can also specify a fully custom ChipTop that does not use any RocketChip or Chipyard SoC components. An example of this is provided in `generators/chipyard/src/main/scala/example/EmptyChipTop.scala <https://github.com/ucb-bar/chipyard/blob/main/generators/chipyard/src/main/scala/example/EmptyChipTop.scala>`__. The ``EmptyChipTop`` example can be built with ``make CONFIG=EmptyChipTopConfig TOP=EmptyChipTop``.
|
||||||
|
|
||||||
|
|
||||||
System/DigitalTop
|
System/DigitalTop
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|||||||
@@ -17,3 +17,9 @@ class NoCoresConfig extends Config(
|
|||||||
new chipyard.config.WithNoDebug ++
|
new chipyard.config.WithNoDebug ++
|
||||||
new chipyard.config.WithNoPLIC ++
|
new chipyard.config.WithNoPLIC ++
|
||||||
new chipyard.config.AbstractConfig)
|
new chipyard.config.AbstractConfig)
|
||||||
|
|
||||||
|
// A config that uses a empty chiptop module with no rocket-chip soc components
|
||||||
|
class EmptyChipTopConfig extends Config(
|
||||||
|
new chipyard.example.WithEmptyChipTop ++
|
||||||
|
new chipyard.config.AbstractConfig // since we aren't using rocket-chip, this doesn't do anything
|
||||||
|
)
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package chipyard.example
|
||||||
|
|
||||||
|
import chisel3._
|
||||||
|
|
||||||
|
import org.chipsalliance.cde.config._
|
||||||
|
import freechips.rocketchip.diplomacy._
|
||||||
|
import freechips.rocketchip.util.{DontTouch}
|
||||||
|
|
||||||
|
import chipyard._
|
||||||
|
import chipyard.harness.{BuildTop}
|
||||||
|
|
||||||
|
class EmptyChipTop(implicit p: Parameters) extends LazyModule {
|
||||||
|
override lazy val module = new Impl
|
||||||
|
class Impl extends LazyRawModuleImp(this) with DontTouch {
|
||||||
|
// Your custom non-rocketchip-soc stuff here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class WithEmptyChipTop extends Config((site, here, up) => {
|
||||||
|
case BuildTop => (p: Parameters) => new EmptyChipTop()(p)
|
||||||
|
})
|
||||||
@@ -99,6 +99,7 @@ trait HasHarnessInstantiators {
|
|||||||
if (p(DontTouchChipTopPorts)) {
|
if (p(DontTouchChipTopPorts)) {
|
||||||
duts.map(_ match {
|
duts.map(_ match {
|
||||||
case d: DontTouch => d.dontTouchPorts()
|
case d: DontTouch => d.dontTouchPorts()
|
||||||
|
case _ =>
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,10 @@ if __name__ == "__main__":
|
|||||||
imhj_data = json.load(imhj)
|
imhj_data = json.load(imhj)
|
||||||
|
|
||||||
dut_root = bfs_find_root(imhj_data, args.dut_module_name)
|
dut_root = bfs_find_root(imhj_data, args.dut_module_name)
|
||||||
dut_submodules = bfs_collect_submodules(dut_root)
|
if dut_root:
|
||||||
|
dut_submodules = bfs_collect_submodules(dut_root)
|
||||||
|
else:
|
||||||
|
dut_submodules = set()
|
||||||
|
|
||||||
model_root = bfs_find_root(imhj_data, args.model_module_name)
|
model_root = bfs_find_root(imhj_data, args.model_module_name)
|
||||||
model_submodules = bfs_collect_submodules(model_root)
|
model_submodules = bfs_collect_submodules(model_root)
|
||||||
|
|||||||
Reference in New Issue
Block a user