diff options
| author | Albert Magyar | 2019-11-18 15:27:00 -0700 |
|---|---|---|
| committer | mergify[bot] | 2019-11-18 22:27:00 +0000 |
| commit | 7eb9f8435e131c13737e03267a04e0b007656ae5 (patch) | |
| tree | ed93b171b3f7191354032ee36501a35651e4c05f /src | |
| parent | c0fe111d4e18f3f132f1f95d76ad0753cef02744 (diff) | |
Make updated type info available in VerilogMemDelays (#1243)
* Closes #1242
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala b/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala index 2dc73db3..80b5cbb8 100644 --- a/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala +++ b/src/main/scala/firrtl/passes/memlib/VerilogMemDelays.scala @@ -96,13 +96,16 @@ class MemDelayAndReadwriteTransformer(m: DefModule) { val portNS = Namespace(mem.readers ++ mem.writers) val rMap = mem.readwriters.map(rw => (rw -> portNS.newName(s"${rw}_r"))).toMap val wMap = mem.readwriters.map(rw => (rw -> portNS.newName(s"${rw}_w"))).toMap + val newReaders = mem.readers ++ mem.readwriters.map(rMap(_)) + val newWriters = mem.writers ++ mem.readwriters.map(wMap(_)) + val newMem = DefMemory(mem.info, mem.name, mem.dataType, mem.depth, 1, 0, newReaders, newWriters, Nil) val rCmdDelay = if (mem.readUnderWrite == ReadUnderWrite.Old) 0 else mem.readLatency val rRespDelay = if (mem.readUnderWrite == ReadUnderWrite.Old) mem.readLatency else 0 val wCmdDelay = mem.writeLatency - 1 val readStmts = (mem.readers ++ mem.readwriters).map { case r => def oldDriver(f: String) = netlist(we(memPortField(mem, r, f))) - def newField(f: String) = memPortField(mem, rMap.getOrElse(r, r), f) + def newField(f: String) = memPortField(newMem, rMap.getOrElse(r, r), f) val clk = oldDriver("clk") // Pack sources of read command inputs into WithValid object -> different for readwriter @@ -127,7 +130,7 @@ class MemDelayAndReadwriteTransformer(m: DefModule) { val writeStmts = (mem.writers ++ mem.readwriters).map { case w => def oldDriver(f: String) = netlist(we(memPortField(mem, w, f))) - def newField(f: String) = memPortField(mem, wMap.getOrElse(w, w), f) + def newField(f: String) = memPortField(newMem, wMap.getOrElse(w, w), f) val clk = oldDriver("clk") // Pack sources of write command inputs into WithValid object -> different for readwriter @@ -148,9 +151,6 @@ class MemDelayAndReadwriteTransformer(m: DefModule) { } newConns ++= (readStmts ++ writeStmts).flatMap(_.conns) - val newReaders = mem.readers ++ mem.readwriters.map(rMap(_)) - val newWriters = mem.writers ++ mem.readwriters.map(wMap(_)) - val newMem = DefMemory(mem.info, mem.name, mem.dataType, mem.depth, 1, 0, newReaders, newWriters, Nil) Block(newMem +: (readStmts ++ writeStmts).flatMap(_.decls)) case sx: Connect if kind(sx.loc) == MemKind => EmptyStmt // Filter old mem connections case sx => sx.map(swapMemRefs) |
