summaryrefslogtreecommitdiff
path: root/src/main/scala/Chisel/IR.scala
diff options
context:
space:
mode:
authorAndrew Waterman2015-08-20 16:40:42 -0700
committerAndrew Waterman2015-08-20 16:40:42 -0700
commit6f3bc0551ec89e397d2972d7a664915c63e19a06 (patch)
tree72e96b612e6e358bf8619a0bbc1bf460802e8ec1 /src/main/scala/Chisel/IR.scala
parente7baa0a935da93aa1e9e78f7adc1f61222900c60 (diff)
Remove Port/Kind IR nodes, which merely wrap Data
Diffstat (limited to 'src/main/scala/Chisel/IR.scala')
-rw-r--r--src/main/scala/Chisel/IR.scala37
1 files changed, 11 insertions, 26 deletions
diff --git a/src/main/scala/Chisel/IR.scala b/src/main/scala/Chisel/IR.scala
index ad75bea2..292dc820 100644
--- a/src/main/scala/Chisel/IR.scala
+++ b/src/main/scala/Chisel/IR.scala
@@ -48,9 +48,8 @@ abstract class Arg extends Immediate {
}
case class Alias(id: HasId) extends Arg {
- private val refMap = Builder.globalRefMap
- override def fullName(ctx: Component) = refMap(id).fullName(ctx)
- def name = refMap(id).name
+ override def fullName(ctx: Component) = id.getRef.fullName(ctx)
+ def name = id.getRef.name
def emit: String = s"Alias($id)"
}
@@ -84,8 +83,7 @@ case class SLit(n: BigInt, w: Width) extends LitArg(n, w) {
case class Ref(name: String) extends Immediate
case class ModuleIO(mod: Module) extends Immediate {
- private val refMap = Builder.globalRefMap
- def name = refMap(mod).name
+ def name = mod.getRef.name
override def fullName(ctx: Component) = if (mod eq ctx.id) "" else name
}
case class Slot(imm: Alias, name: String) extends Immediate {
@@ -98,8 +96,6 @@ case class Index(imm: Immediate, value: Int) extends Immediate {
override def fullName(ctx: Component) = s"${imm.fullName(ctx)}[$value]"
}
-case class Port(id: Data, kind: Kind)
-
object Width {
def apply(x: Int): Width = KnownWidth(x)
def apply(): Width = UnknownWidth()
@@ -137,36 +133,25 @@ sealed case class KnownWidth(value: Int) extends Width {
override def toString = value.toString
}
-abstract class Kind(val isFlip: Boolean);
-case class UnknownType(flip: Boolean) extends Kind(flip);
-case class UIntType(val width: Width, flip: Boolean) extends Kind(flip);
-case class SIntType(val width: Width, flip: Boolean) extends Kind(flip);
-case class FloType(flip: Boolean) extends Kind(flip);
-case class DblType(flip: Boolean) extends Kind(flip);
-case class BundleType(val ports: Seq[Port], flip: Boolean) extends Kind(flip);
-case class VectorType(val size: Int, val kind: Kind, flip: Boolean) extends Kind(flip);
-case class ClockType(flip: Boolean) extends Kind(flip)
-
-abstract class Command;
+abstract class Command
abstract class Definition extends Command {
- private val refMap = Builder.globalRefMap
def id: HasId
- def name = refMap(id).name
+ def name = id.getRef.name
}
case class DefPrim[T <: Data](id: T, op: PrimOp, args: Arg*) extends Definition
-case class DefWire(id: HasId, kind: Kind) extends Definition
-case class DefRegister(id: HasId, kind: Kind, clock: Arg, reset: Arg) extends Definition
-case class DefMemory(id: HasId, kind: Kind, size: Int, clock: Arg) extends Definition
-case class DefSeqMemory(id: HasId, kind: Kind, size: Int) extends Definition
+case class DefWire(id: Data) extends Definition
+case class DefRegister(id: Data, clock: Arg, reset: Arg) extends Definition
+case class DefMemory(id: Data, size: Int, clock: Arg) extends Definition
+case class DefSeqMemory(id: Data, size: Int) extends Definition
case class DefAccessor(id: HasId, source: Alias, direction: Direction, index: Arg) extends Definition
-case class DefInstance(id: Module, ports: Seq[Port]) extends Definition
+case class DefInstance(id: Module, ports: Seq[Data]) extends Definition
case class WhenBegin(pred: Arg) extends Command
case class WhenElse() extends Command
case class WhenEnd() extends Command
case class Connect(loc: Alias, exp: Arg) extends Command
case class BulkConnect(loc1: Alias, loc2: Alias) extends Command
case class ConnectInit(loc: Alias, exp: Arg) extends Command
-case class Component(id: Module, name: String, ports: Seq[Port], commands: Seq[Command]) extends Immediate
+case class Component(id: Module, name: String, ports: Seq[Data], commands: Seq[Command]) extends Immediate
case class Circuit(name: String, components: Seq[Component], refMap: RefMap, parameterDump: ParameterDump) {
def emit = new Emitter(this).toString