Skip to content

Commit fb52426

Browse files
author
Oron Port
committed
fix patch when placing members globally
1 parent 7e46a7e commit fb52426

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

core/src/main/scala/dfhdl/compiler/patching/Patch.scala

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,17 @@ extension (db: DB)
180180
// }
181181
ret
182182
case (rc, (origMember, Patch.Add(db, config))) =>
183+
// if the original member is a global value, the all references pointing to the top design in the patch
184+
// db should point to an empty member for global placement
185+
val fixedGlobalRefTable = origMember match
186+
case dfVal: DFVal.CanBeGlobal if dfVal.isGlobal =>
187+
db.refTable.map { case (ref, member) =>
188+
if (member == db.top) (ref, DFMember.Empty)
189+
else (ref, member)
190+
}
191+
case _ => db.refTable
183192
// updating the patched DB reference table members with the newest members kept by the replacement context
184-
val updatedPatchRefTable = rc.getUpdatedRefTable(db.refTable)
193+
val updatedPatchRefTable = rc.getUpdatedRefTable(fixedGlobalRefTable)
185194
val keepRefList = db.members.flatMap(_.getRefs)
186195
val repRT = config match
187196
case Patch.Add.Config.ReplaceWithMemberN(n, repConfig, refFilter) =>

0 commit comments

Comments
 (0)