diff --git a/PolymorphicBlocks b/PolymorphicBlocks index bb6e1f8d..cbe46eb3 160000 --- a/PolymorphicBlocks +++ b/PolymorphicBlocks @@ -1 +1 @@ -Subproject commit bb6e1f8d86445d787cea3f81a12bbbcddde417e0 +Subproject commit cbe46eb38689c221ca23539e64cfe42c0f6a388f diff --git a/src/main/scala/edg_ide/edgir_graph/ElkEdgirGraphUtils.scala b/src/main/scala/edg_ide/edgir_graph/ElkEdgirGraphUtils.scala index 177b279a..dcefb88a 100644 --- a/src/main/scala/edg_ide/edgir_graph/ElkEdgirGraphUtils.scala +++ b/src/main/scala/edg_ide/edgir_graph/ElkEdgirGraphUtils.scala @@ -4,10 +4,12 @@ import com.intellij.openapi.diagnostic.Logger import com.intellij.ui.JBColor import edg.EdgirUtils.SimpleLibraryPath import edg.compiler.{Compiler, RangeValue, TextValue} -import edg.wir.{BlockConnectivityAnalysis, DesignPath} +import edg.wir.DesignPath +import edg_ide.EdgirUtils.typeOfPortLike import edg_ide.util.EdgirAnalysisUtils import org.eclipse.elk.graph.{ElkGraphElement, ElkNode} import edgir.elem.elem +import edgir.ref.ref import java.awt.Color import scala.collection.mutable @@ -91,7 +93,7 @@ object ElkEdgirGraphUtils { override val property: IProperty[PortSide] = PORT_SIDE def getSimplePortSide(port: PortWrapper): Option[PortSide] = { - val portType = BlockConnectivityAnalysis.typeOfPortLike(port.portLike) + val portType = typeOfPortLike(port.portLike).get portType.toSimpleString match { case "Ground" => Some(PortSide.SOUTH) diff --git a/src/main/scala/edg_ide/runner/CompileProcessHandler.scala b/src/main/scala/edg_ide/runner/CompileProcessHandler.scala index 83b5bff5..2126876f 100644 --- a/src/main/scala/edg_ide/runner/CompileProcessHandler.scala +++ b/src/main/scala/edg_ide/runner/CompileProcessHandler.scala @@ -430,13 +430,24 @@ class CompileProcessHandler( Map() ).mapErr(msg => s"while netlisting: $msg") .get - require(netlist.size == 1) Files.createDirectories(Paths.get(options.netlistFile).getParent) - val writer = new FileWriter(options.netlistFile, StandardCharsets.UTF_8) - writer.write(netlist.head._2) - writer.close() - f"wrote ${options.netlistFile}" + val writtenFiles = netlist.map { case (path, netlistData) => + val filename = if (path == DesignPath()) { + options.netlistFile + } else { + if (options.netlistFile.endsWith(".net")) { + options.netlistFile.stripSuffix(".net") + "_" + path.toString.replace(',', '_') + ".net" + } else { + options.netlistFile + "_" + path.toString.replace(',', '_') + } + } + val writer = new FileWriter(filename, StandardCharsets.UTF_8) + writer.write(netlistData) + writer.close() + filename + } + f"wrote ${writtenFiles.mkString(", ")}" } } else { console.print( diff --git a/src/main/scala/edg_ide/swing/CompilerErrorTreeTableModel.scala b/src/main/scala/edg_ide/swing/CompilerErrorTreeTableModel.scala index 92e541e5..54da2dd7 100644 --- a/src/main/scala/edg_ide/swing/CompilerErrorTreeTableModel.scala +++ b/src/main/scala/edg_ide/swing/CompilerErrorTreeTableModel.scala @@ -50,7 +50,7 @@ object CompilerErrorNodeBase { case CompilerError.Unelaborated(ElaborateRecord.ParamValue(path), deps) => ("Unelaborated Param", path.toString, deps.toSeq.map(elaborateRecordToDetailNode)) case CompilerError.Unelaborated( - ElaborateRecord.Connect(toLinkPortPath, fromLinkPortPath, root), + ElaborateRecord.Connect(toLinkPortPath, fromLinkPortPath, root, tap), deps ) => ( diff --git a/src/main/scala/edg_ide/util/DesignFindDisconnected.scala b/src/main/scala/edg_ide/util/DesignFindDisconnected.scala index 05ec43ea..64a64924 100644 --- a/src/main/scala/edg_ide/util/DesignFindDisconnected.scala +++ b/src/main/scala/edg_ide/util/DesignFindDisconnected.scala @@ -40,7 +40,7 @@ object DesignFindDisconnected extends DesignBlockMap[(Seq[DesignPath], Seq[Strin .collect { // extract block side expr case expr.ValueExpr.Expr.Connected(expr.ConnectedExpr(Some(blockExpr), Some(linkExpr), _, _)) => blockExpr.expr - case expr.ValueExpr.Expr.Exported(expr.ExportedExpr(Some(exteriorExpr), Some(interiorExpr), _, _)) => + case expr.ValueExpr.Expr.Exported(expr.ExportedExpr(Some(exteriorExpr), Some(interiorExpr), false, _, _)) => interiorExpr.expr } .collect { // extract steps