Skip to content

Commit

Permalink
Merge pull request #570 from Xilinx/2022.2.0
Browse files Browse the repository at this point in the history
2022.2.0 Staging Branch
  • Loading branch information
clavin-xlnx authored Nov 17, 2022
2 parents 6c0d42d + f6ff2e2 commit 6730ee7
Show file tree
Hide file tree
Showing 44 changed files with 953 additions and 934 deletions.
4 changes: 2 additions & 2 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@
<classpathentry kind="lib" path="jars/kryo-5.2.1.jar"/>
<classpathentry kind="lib" path="jars/minlog-1.3.1.jar"/>
<classpathentry kind="lib" path="jars/jython-standalone-2.7.2.jar"/>
<classpathentry kind="lib" path="jars/rapidwright-api-lib-2022.1.4.jar">
<classpathentry kind="lib" path="jars/rapidwright-api-lib-2022.2.0.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/RapidWright/jars/rapidwright-api-lib-2022.1.4-javadoc.jar!/"/>
<attribute name="javadoc_location" value="jar:platform:/resource/RapidWright/jars/rapidwright-api-lib-2022.2.0-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/jgrapht-core-1.3.0.jar"/>
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
pull_request:

env:
RAPIDWRIGHT_VERSION: v2022.1.4-beta
RAPIDWRIGHT_VERSION: v2022.2.0-beta

jobs:
build:
Expand Down
124 changes: 124 additions & 0 deletions RELEASE_NOTES.TXT
Original file line number Diff line number Diff line change
@@ -1,3 +1,127 @@
============= RapidWright 2022.2.0-beta released on 2022-11-XX ================
Notes:
- Support for Vivado 2022.2 devices and DCPs
- ~5% memory usage improvement over 2022.1.4 when loading (large) DCPs
- Removes several deprecated APIs (See list below)
- Fixes the method "public synchronized boolean isIOStandardSupported(String ioStandard)" on Package.
- Corrects null node scenario as seen in #581
- Moving device root tile name cache into open source (#578)

- API Additions:
- com.xilinx.rapidwright.design.Cell "public Cell copyCell(String name, EDIFHierCellInst inst)"
- com.xilinx.rapidwright.design.Cell "public Cell copyCell(String name, EDIFHierCellInst inst, SiteInst i)"
- com.xilinx.rapidwright.design.Cell "public Map<String, EDIFPropertyValue> getProperties()"
- com.xilinx.rapidwright.device.Device "public Tile[][] getTilesByRootName(String rootName)"
- com.xilinx.rapidwright.device.Tile.java "public String getRootName()"

- API Deprecation Removals (--> Replacements) [Open Source]:
- com.xilinx.rapidwright.design.ModuleInst "public ArrayList<SiteInst> getInsts()"
--> "public List<SiteInst> getSiteInsts()"
- com.xilinx.rapidwright.design.ModuleInst "public Tile getCorrespondingTile(Tile templateTile, Tile newAnchorTile, Device dev)"
--> "public Tile getCorrespondingTile(Tile templateTile, Tile newAnchorTile)"
- com.xilinx.rapidwright.edif.EDIFCellInst "public Map<String, EDIFPortInst> getPortInstMap()"
--> "public Collection<EDIFPortInst> getPortInsts()"
- com.xilinx.rapidwright.edif.EDIFCellInst "public void updateCellType(EDIFCell cellType)"
--> "public void setCellType(EDIFCell cellType)"
- com.xilinx.rapidwright.edif.EDIFNet "public Map<String, EDIFPortInst> getPortInstMap()"
--> "public Collection<EDIFPortInst> getPortInsts()"
- com.xilinx.rapidwright.edif.EDIFNet "public EDIFPortInst getPortInst(String fullName)"
--> "public EDIFPortInst getPortInst(EDIFCellInst inst, String portInstName)"
- com.xilinx.rapidwright.edif.EDIFNet "public EDIFPortInst removePortInst(String portInstName)"
--> "public EDIFPortInst removePortInst(EDIFCellInst inst, String portInstName)"
--> "public EDIFPortInst removePortInst(EDIFPortInst portInst)"
- com.xilinx.rapidwright.edif.EDIFNetlist "public static String getHierParentName(String hierReferenceName)"
--> com.xilinx.rapidwright.edif.EDIFHierCellInst.getParent().toString()
--> com.xilinx.rapidwright.edif.EDIFHierNet.getParent().toString()
--> com.xilinx.rapidwright.edif.EDIFHierPortInst.getParent().toString()
- com.xilinx.rapidwright.edif.EDIFNetlist "public static String getNextHierChildName(String ancestor, String descendent)"
--> com.xilinx.rapidwright.edif.EDIFHierCellInst.getParent().toString()
- com.xilinx.rapidwright.edif.EDIFNetlist "public HashMap<String,EDIFPort> generateEDIFPortMap()"
--> com.xilinx.rapidwright.edif.EDIFCell.getPortMap()
- com.xilinx.rapidwright.edif.EDIFTools "public static EDIFNet connectLogicalNetAcrossHierarchy(String sinkParentInstName, String srcParentInstName, Map<String, EDIFNet> parentInstNameToLogNet, EDIFNetlist netlist)"
--> "public static void connectPortInstsThruHier(EDIFHierPortInst src, EDIFHierPortInst snk, String newName)"
- com.xilinx.rapidwright.edif.EDIFPort "public String getStemName()"
--> "public static String getRootBusName(String name, boolean includeOpenBracket)"
- com.xilinx.rapidwright.edif.EDIFPropertyObject "public EDIFPropertyValue addProperty(EDIFName key, EDIFPropertyValue value)"
--> "public EDIFPropertyValue addProperty(String key, EDIFPropertyValue value)"
- com.xilinx.rapidwright.edif.EDIFPropertyObject "public void addProperties(Map<EDIFName,EDIFPropertyValue> properties)"
--> "public EDIFPropertyValue addProperty(String key, EDIFPropertyValue value)"
- com.xilinx.rapidwright.edif.EDIFPropertyObject "public Map<EDIFName, EDIFPropertyValue> getProperties()"
--> "public Map<String, EDIFPropertyValue> getPropertiesMap()"
- com.xilinx.rapidwright.edif.EDIFPropertyObject "public void setProperties(Map<EDIFName, EDIFPropertyValue> properties)"
--> "public void setPropertiesMap(Map<String, EDIFPropertyValue> properties)"
- com.xilinx.rapidwright.edif.EDIFTools "public static EDIFCellInst getEDIFCellInst(EDIFNetlist netlist, String hierarchicalName)"
--> com.xilinx.rapidwright.edif.EDIFNetlist.getCellInstFromHierName()
- com.xilinx.rapidwright.edif.EDIFTools "public static String getHierarchicalRootFromPinName(String s)"
--> com.xilinx.rapidwright.edif.EDIFHierCellInst.getParent().toString()
- com.xilinx.rapidwright.edif.EDIFTools "public static void flattenNetlist(Design design)"
--> "public static Boolean uniqueifyNetlist(Design design)"
- com.xilinx.rapidwright.util.FileTools "public static boolean checkIfRapidWrightResourceExists(String name)"
--> N/A
- com.xilinx.rapidwright.util.FileTools "public static boolean folderCheck(String name)"
--> java.io.File().exists()
- com.xilinx.rapidwright.util.MessageGenerator "public static void briefErrorAndExit(String msg)"
--> System.err.println(), return or throw new RuntimeException() (avoid System.exit())
- com.xilinx.rapidwright.util.MessageGenerator "public static void briefMessageAndExit(String msg)"
--> System.out.println(), return or throw new RuntimeException() (avoid System.exit())
- API Deprecation Removals (--> Replacements) [Closed Source]:
- com.xilinx.rapidwright.design.Cell "public Map<EDIFName, EDIFPropertyValue> getProperties()"
--> "public Map<String, EDIFPropertyValue> getProperties()"
- com.xilinx.rapidwright.design.Cell "public Cell(String name, EDIFCellInst edifCellInst)"
--> "public Cell(String name)"
- com.xilinx.rapidwright.design.Cell "public Cell(String name, BEL bel, EDIFCellInst edifCellInst)"
--> "public Cell(String name, BEL bel)"
- com.xilinx.rapidwright.design.Cell "public Cell(String name, SiteInst siteInst, BEL bel, EDIFCellInst edifCellInst)"
--> "public Cell(String name, SiteInst siteInst, BEL bel)"
- com.xilinx.rapidwright.design.Cell "public Cell copyCell(String name, EDIFCellInst edifCellInst)"
--> "public Cell(String name)"
- com.xilinx.rapidwright.design.Cell "public Cell copyCell(String name, EDIFCellInst edifCellInst, SiteInst i)"
--> "public Cell(String name)"
- com.xilinx.rapidwright.design.Cell "public void setEDIFCellInst(EDIFCellInst edifCellInst)"
--> "public void setEDIFHierCellInst(EDIFHierCellInst inst)"
- com.xilinx.rapidwright.design.Cell "public void setProperties(Map<EDIFName, EDIFPropertyValue> properties)"
--> "public void setPropertiesMap(Map<String, EDIFPropertyValue> properties)"
- com.xilinx.rapidwright.design.Design "public Net createNet(EDIFNet net)"
--> "public Net createNet(EDIFHierNet net)"
- com.xilinx.rapidwright.design.Design "public Net createNet(String name, EDIFNet net)"
--> "public Net createNet(EDIFHierNet net)"
- com.xilinx.rapidwright.design.Design "public HashMap<String,EDIFCellInst> getNetlistInstMap()"
--> com.xilinx.rapidwright.netlist.EDIFNetlist.generateCellInstMap();
- com.xilinx.rapidwright.design.Design "public HashMap<String, EDIFNet> getNetlistNetMap()"
--> com.xilinx.rapidwright.netlist.EDIFNetlist.generateEDIFNetMap();
- com.xilinx.rapidwright.design.Module "public boolean isValidPlacement(Site proposedAnchorSite, Device dev, Design design)"
--> "public boolean isValidPlacement(Site proposedAnchorSite, Design design)"
- com.xilinx.rapidwright.design.Module "public Tile getCorrespondingTile(Tile templateTile, Tile newAnchorTile, Device dev)"
--> "public Tile getCorrespondingTile(Tile templateTile, Tile newAnchorTile)"
- com.xilinx.rapidwright.design.Net "public Net(String name, EDIFNet logicalNet)"
--> "public Net(String name)"
- com.xilinx.rapidwright.design.Net "public Net(EDIFNet logicalNet)"
--> "public Net(EDIFHierNet net)"
- com.xilinx.rapidwright.design.Net "public SitePinInst createPin(boolean isOutput, String pinName, SiteInst si)"
--> "public SitePinInst createPin(String pinName, SiteInst si)"
- com.xilinx.rapidwright.design.Net "public void setLogicalNet(EDIFNet logicalNet)"
--> "public void setLogicalHierNet(EDIFHierNet logicalHierNet)"
- com.xilinx.rapidwright.design.SiteInst "public Set<Net> getNetList()"
--> "public Set<Net> getConnectedNets()"
- com.xilinx.rapidwright.design.SiteInst "public Map<String,Net> getNetSiteWireMap()"
--> "public Map<String, Net> getSiteWireToNetMap()"
- com.xilinx.rapidwright.device.Device "public String getDeviceName()"
--> "public String getName()"
- com.xilinx.rapidwright.device.Node "public Node(Tile tile, int wire)"
--> "public static Node getNode(Tile tile, int wire)"
- com.xilinx.rapidwright.device.Node "public Node(Wire w)"
--> "public static Node getNode(Wire wire)"
- com.xilinx.rapidwright.device.Node "public Node(Tile tile, String wireName)"
--> "public static Node getNode(Tile tile, int wire)"
- com.xilinx.rapidwright.device.Node "public Node(String nodeName, Device dev)"
--> "public static Node getNode(String nodeName, Device dev)"
- com.xilinx.rapidwright.device.Node "public Node(RouteNode routeNode)"
--> "public static Node getNode(RouteNode routeNode)"
- com.xilinx.rapidwright.device.Package "public String getSiteType(String packagePinName)"
--> "public Site getSiteFromPackagePin(String packagePinName)"
- com.xilinx.rapidwright.device.PackagePin "public String getSiteType()"
--> "public Site getSite()"

============= RapidWright 2022.1.4-beta released on 2022-11-03 ================
Notes:
* Can now load EDIF netlist in parallel with placement and routing when reading a DCP
Expand Down
6 changes: 4 additions & 2 deletions src/com/xilinx/rapidwright/debug/ILAInserter.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;

Expand Down Expand Up @@ -74,7 +75,8 @@ public class ILAInserter {
public static List<String> getNetsMarkedForDebug(Design design) {
// Nets can be marked for debug as a netlist property
ArrayList<String> debugNets = new ArrayList<>();
for (Entry<String,EDIFNet> e : design.getNetlistNetMap().entrySet()) {
HashMap<String,EDIFCellInst> instMap = design.getNetlist().generateCellInstMap();
for (Entry<String,EDIFNet> e : design.getNetlist().generateEDIFNetMap(instMap).entrySet()) {
EDIFPropertyValue p = e.getValue().getProperty(EDIF_MARK_DEBUG);
if (p == null) continue;
String etv = p.getValue();
Expand Down Expand Up @@ -227,7 +229,7 @@ public static void main(String[] args) {

Design originalDesign = Design.readCheckpoint(inputDcpFileName);

EDIFNet clk = originalDesign.getNetlistNetMap().get(clkNet);
EDIFNet clk = originalDesign.getNetlist().getNetFromHierName(clkNet);
if (clk == null) {
throw new RuntimeException("ERROR: Couldn't find the clk net named " + clkNet + " in the original design provided");
}
Expand Down
5 changes: 3 additions & 2 deletions src/com/xilinx/rapidwright/debug/ProbeRouter.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,9 @@ public static void updateProbeConnections(Design d, Map<String,String> probeToTa
ArrayList<SitePinInst> pinsToRoute = new ArrayList<>();
for (Entry<String,String> e : probeToTargetNets.entrySet()) {
String hierPinName = e.getKey();
String cellInstName = EDIFTools.getHierarchicalRootFromPinName(hierPinName);
EDIFCellInst i = d.getNetlist().getCellInstFromHierName(cellInstName);
EDIFHierCellInst parent = d.getNetlist().getHierCellInstFromName(hierPinName).getParent();
String cellInstName = parent.toString();
EDIFCellInst i = parent.getInst();
String pinName = hierPinName.substring(hierPinName.lastIndexOf(EDIFTools.EDIF_HIER_SEP)+1);
EDIFPortInst portInst = i.getPortInst(pinName);
EDIFNet net = portInst.getNet();
Expand Down
Loading

0 comments on commit 6730ee7

Please sign in to comment.