aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/ReplaceMemMacros.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/passes/ReplaceMemMacros.scala')
-rw-r--r--src/main/scala/firrtl/passes/ReplaceMemMacros.scala20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/main/scala/firrtl/passes/ReplaceMemMacros.scala b/src/main/scala/firrtl/passes/ReplaceMemMacros.scala
index 3c3f8e93..8144477c 100644
--- a/src/main/scala/firrtl/passes/ReplaceMemMacros.scala
+++ b/src/main/scala/firrtl/passes/ReplaceMemMacros.scala
@@ -33,11 +33,12 @@ class ReplaceMemMacros(writer: ConfWriter) extends Pass {
// prototype mem
if (ref == None) {
- val newName = moduleNamespace.newName(m.name)
- val newMem = m.copy(name = newName)
- memMods ++= createMemModule(newMem)
+ val newWrapperName = moduleNamespace.newName(m.name)
+ val newMemBBName = moduleNamespace.newName(m.name + "_ext")
+ val newMem = m.copy(name = newMemBBName)
+ memMods ++= createMemModule(newMem,newWrapperName)
uniqueMems += newMem
- WDefInstance(info, m.name, newMem.name, UnknownType)
+ WDefInstance(info, m.name, newWrapperName, UnknownType)
}
else {
val r = ref.get match {case s: String => s}
@@ -63,17 +64,16 @@ class ReplaceMemMacros(writer: ConfWriter) extends Pass {
}
// from Albert
- def createMemModule(m: DefMemory): Seq[DefModule] = {
+ def createMemModule(m: DefMemory, wrapperName: String): Seq[DefModule] = {
assert(m.dataType != UnknownType)
- val bbName = m.name + "_ext"
val stmts = ArrayBuffer[Statement]()
val wrapperioPorts = MemPortUtils.memToBundle(m).fields.map(f => Port(NoInfo, f.name, Input, f.tpe))
val bbProto = m.copy(dataType = flattenType(m.dataType))
//val bbioPorts = MemPortUtils.memToBundle(bbProto).fields.map(f => Port(NoInfo, f.name, Input, f.tpe))
val bbioPorts = MemPortUtils.memToFlattenBundle(m).fields.map(f => Port(NoInfo, f.name, Input, f.tpe))
- stmts += WDefInstance(NoInfo,bbName,bbName,UnknownType)
- val bbRef = createRef(bbName)
+ stmts += WDefInstance(NoInfo,m.name,m.name,UnknownType)
+ val bbRef = createRef(m.name)
stmts ++= (m.readers zip bbProto.readers).map{
case (x,y) => adaptReader(createRef(x),m,createSubField(bbRef,y),bbProto)
}.flatten
@@ -83,8 +83,8 @@ class ReplaceMemMacros(writer: ConfWriter) extends Pass {
stmts ++= (m.readwriters zip bbProto.readwriters).map{
case (x,y) => adaptReadWriter(createRef(x),m,createSubField(bbRef,y),bbProto)
}.flatten
- val wrapper = Module(NoInfo,m.name,wrapperioPorts,Block(stmts))
- val bb = ExtModule(NoInfo,bbName,bbioPorts)
+ val wrapper = Module(NoInfo,wrapperName,wrapperioPorts,Block(stmts))
+ val bb = ExtModule(NoInfo,m.name,bbioPorts)
// TODO: Annotate? -- use actual annotation map
// add to conf file