@@ -99,7 +99,21 @@ class DebugIRParser(val workingDir: String, ddFilePath: String) {
9999
100100 val scope =
101101 hglddObject.obj_name.lastIndexOf(" _" ) match {
102- case - 1 => thisChildName.getOrElse(" root" ); case i => hglddObject.obj_name.substring(0 , i)
102+ case - 1 => thisChildName.getOrElse(" root" )
103+ case i =>
104+ // TODO: here the problem, multiple instances are separated by _ + an index
105+ val lastPart = hglddObject.obj_name.substring(i + 1 )
106+
107+ val tmpScope = hglddObject.obj_name.substring(0 , i)
108+
109+ if (lastPart.forall(Character .isDigit)) {
110+ println(" FOUND: " + hglddObject.obj_name)
111+ thisChildName.getOrElse(" root" )
112+ } else {
113+ println(" NOT FOUND: " + s " tmpScope: $tmpScope" + s " hglddObject.obj_name ${hglddObject.obj_name}" )
114+ tmpScope
115+ }
116+
103117 }
104118 // Drop the scope from the object name
105119 val obj_name =
@@ -109,17 +123,31 @@ class DebugIRParser(val workingDir: String, ddFilePath: String) {
109123 hglddObject.obj_name.substring(scope.length + 1 )
110124
111125 val elId =
112- createId(fileInfo, hglddObject.hgl_loc, obj_name)
126+ createId(fileInfo, hglddObject.hgl_loc, obj_name + scope )
113127 val parentModule =
114128 hglddObject.obj_name.lastIndexOf(" _" ) match {
115- case - 1 => thisChildParentName.getOrElse(" root" ); case i => hglddObject.obj_name.substring(0 , i)
129+ case - 1 => thisChildParentName.getOrElse(" root" );
130+ case i =>
131+ // TODO: here the problem, multiple instances are separated by _ + an index
132+ val lastPart = hglddObject.obj_name.substring(i + 1 )
133+
134+ val tmpScope = hglddObject.obj_name.substring(0 , i)
135+
136+ if (lastPart.forall(Character .isDigit)) {
137+ println(" FOUND: " + hglddObject.obj_name)
138+ thisChildParentName.getOrElse(" root" )
139+ } else {
140+ println(" NOT FOUND: " + s " tmpScope: $tmpScope" + s " hglddObject.obj_name ${hglddObject.obj_name}" )
141+ tmpScope
142+ }
116143 }
117144 // Parse the kind of the object
118145 hglddObject.kind match {
119146 case s @ " struct" =>
120147 allElements.put(elId, (Name (obj_name, scope, parentModule), Direction (" Unknown" ), Type (s)))
121148 hglddObject.port_vars.foreach(parsePortVarFromModule(fileInfo, _, hglddObject.obj_name, parentModule))
122149 case " module" =>
150+ println(" Module: " + hglddObject.obj_name + " " + scope + " " + parentModule + " " + elId)
123151 modules.put(elId, Name (obj_name, scope, parentModule))
124152 hglddObject.port_vars.foreach(parsePortVarFromModule(fileInfo, _, hglddObject.obj_name, hglddObject.obj_name))
125153 case a =>
@@ -167,7 +195,7 @@ class DebugIRParser(val workingDir: String, ddFilePath: String) {
167195 scope : String ,
168196 parentModule : String ,
169197 ): Unit = {
170- val elId = createId(fileInfo, portVar.hgl_loc, portVar.var_name)
198+ val elId = createId(fileInfo, portVar.hgl_loc, portVar.var_name + parentModule )
171199 val name = Name (portVar.var_name, scope, parentModule)
172200 val dir = Direction (" Unknown" )
173201 val typ = Type (portVar.type_name)
0 commit comments