Skip to content

Commit 61b96c9

Browse files
committed
remove DefRegInit, change DefReg API with option defination.
1 parent cc6d925 commit 61b96c9

File tree

3 files changed

+6
-9
lines changed

3 files changed

+6
-9
lines changed

core/src/main/scala/chisel3/Reg.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ object Reg {
4242
val clock = Node(Builder.forcedClock)
4343

4444
reg.bind(RegBinding(Builder.forcedUserModule, Builder.currentWhen()))
45-
pushCommand(DefReg(sourceInfo, reg, clock))
45+
pushCommand(DefReg(sourceInfo, reg, clock, None, None))
4646
reg
4747
}
4848

@@ -176,7 +176,7 @@ object RegInit {
176176

177177
reg.bind(RegBinding(Builder.forcedUserModule, Builder.currentWhen()))
178178
requireIsHardware(init, "reg initializer")
179-
pushCommand(DefRegInit(sourceInfo, reg, clock.ref, reset.ref, init.ref))
179+
pushCommand(DefReg(sourceInfo, reg, clock.ref, Some(reset.ref), Some(init.ref)))
180180
reg
181181
}
182182

core/src/main/scala/chisel3/internal/firrtl/Converter.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,10 @@ private[chisel3] object Converter {
106106
Some(fir.DefNode(convert(e.sourceInfo), e.name, expr))
107107
case e @ DefWire(info, id) =>
108108
Some(fir.DefWire(convert(info), e.name, extractType(id, info)))
109-
case e @ DefReg(info, id, clock) =>
109+
case e @ DefReg(info, id, clock, reset, init) =>
110110
Some(fir.DefRegister(convert(info), e.name, extractType(id, info), convert(clock, ctx, info),
111-
firrtl.Utils.zero, convert(getRef(id, info), ctx, info)))
112-
case e @ DefRegInit(info, id, clock, reset, init) =>
113-
Some(fir.DefRegister(convert(info), e.name, extractType(id, info), convert(clock, ctx, info),
114-
convert(reset, ctx, info), convert(init, ctx, info)))
111+
reset.map(r => convert(r, ctx, info)).getOrElse(firrtl.Utils.zero),
112+
init.map(i => convert(i, ctx, info)).getOrElse(convert(getRef(id, info), ctx, info))))
115113
case e @ DefMemory(info, id, t, size) =>
116114
Some(firrtl.CDefMemory(convert(info), e.name, extractType(t, info), size, false))
117115
case e @ DefSeqMemory(info, id, t, size, ruw) =>

core/src/main/scala/chisel3/internal/firrtl/IR.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -743,8 +743,7 @@ abstract class Definition extends Command {
743743
case class DefPrim[T <: Data](sourceInfo: SourceInfo, id: T, op: PrimOp, args: Arg*) extends Definition
744744
case class DefInvalid(sourceInfo: SourceInfo, arg: Arg) extends Command
745745
case class DefWire(sourceInfo: SourceInfo, id: Data) extends Definition
746-
case class DefReg(sourceInfo: SourceInfo, id: Data, clock: Arg) extends Definition
747-
case class DefRegInit(sourceInfo: SourceInfo, id: Data, clock: Arg, reset: Arg, init: Arg) extends Definition
746+
case class DefReg(sourceInfo: SourceInfo, id: Data, clock: Arg, reset: Option[Arg], init: Option[Arg]) extends Definition
748747
case class DefMemory(sourceInfo: SourceInfo, id: HasId, t: Data, size: BigInt) extends Definition
749748
case class DefSeqMemory(sourceInfo: SourceInfo, id: HasId, t: Data, size: BigInt, readUnderWrite: fir.ReadUnderWrite.Value) extends Definition
750749
case class DefMemPort[T <: Data](sourceInfo: SourceInfo, id: T, source: Node, dir: MemPortDirection, index: Arg, clock: Arg) extends Definition

0 commit comments

Comments
 (0)