Releases: Xilinx/RapidWright
RapidWright 2023.1.1-beta Release
Release Notes:
- UltraScale Incremental Clock Router Improvements (#540)
- Adds VivadoTools, a Vivado wrapper/helper in RapidWright (#684)
- Fixes published Maven Central jar (#698)
- Enhancements to RWRoute (#691, #696)
- Interchange reader/writer improvements (#677)
- Fix for issue #709
- Improves handling of site routing and site pins when updating
physical netlist
RapidWright 2023.1.0-beta Release
Release Notes:
-
Support for Vivado 2023.1 devices and reading 2023.1 DCPs
-
Full adoption of Zstandard compression for all device and data
files - 11% faster device loads and 108% faster device cache loads with file size reductions of 32% and 52% respectively. -
Has a new 'rapidwright' run wrapper that avoids the need to set CLASSPATH, provides convenience to run any class file with a main() method, run the Jython interpreter and enables one-liner Jython commands. Run
rapidwright
at the prompt for more details. -
Fix duplicate net source pins (won't set the alternate source if it is the same as the source)
-
Change Net.connect() behavior to connect to existing SitePinInst if net is null
-
DesignTools.createCeSrRstPinsToVCC() to detect gnd to invert (#664)
-
EDIFNetlist.cellInstIOStandardFallback to collect set of IOSTANDARDs instead of throwing an error if there is a conflict (#671)
-
[EDIF] More expanded macros to be deep copied from prim library (#672)
-
Ignore TestCheckOpenFilesInstalled.test if outside of gradle (#674)
-
[EDIF] EDIFNetlist.collapseMacroUnisims() to not clobber cell (#675)
-
[EDIF] Explicit DEFAULT IOStandard on Cell to be overriden by Net (#686)
-
API Additions:
- (None)
-
API Deprecation Removals (--> Replacements) [Closed Source]:
- com.xilinx.rapidwright.device.Tile "public String getNameRoot() --> "public string getRootName()"
- com.xilinx.rapidwright.device.Device "public Tile[][] getTilesByNameRoot(String nameRoot)" --> "getTilesByRootName(String rootName)"
RapidWright 2022.2.3-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
-
Adds preliminary support for Zstandard compression. Uses it in device cache file generation. Next release will use it for all data files.
-
Fixes an issue with missing Versal Premium families unisim data (#631)
-
Adds an option to the Interchange device model writer to exclude routing info. to enable placement of the largest devices (#658)
-
Fixes an issue in the PBlockGenerator parser (#633)
-
Resolves an issue where collapsed macro ports' parent reference was not set properly (#654)
-
EDIFNetlist.getIOStandard() to inherit IOStandard from EDIFNet (#646)
-
API Additions:
- com.xilinx.rapidwright.design.Design "public static boolean readEdifAndXdefInParallel()"
- com.xilinx.rapidwright.design.Design "public static void setReadEdifAndXdefInParallel(boolean readEdifAndXdefInParallel)"
RapidWright 2022.2.2-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
-
Includes new API to ensure all downloaded/generated dependant files are present in RapidWright install (#613)
-
Change in Cell.hashCode() and Cell.equals() behavior such that it now distinguishes routethru cells (#624), see Issue #611
-
Fixes an issue with isFF() (#622)
-
Resolves issue with Cells and Nets that contain backslashes not being properly loaded (#612)
-
Fix for parsing gzipped EDIF files in parallel (#619)
-
Fix for EDIF export bussed names that collide with bitty names (#616)
-
API Additions:
- com.xilinx.rapidwright.device.Device "public void ensureDeviceCacheFileIsGenerated()"
RapidWright 2022.2.1-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
-
Preserves hwdef information in DCP (#597)
-
Adds APIs to access BELAttr information in design (#598)
-
Many improvements to RWRoute to cleanup code and improves both quality and runtime performance
-
Fixes a bug with 2022.2 DCPs where hierarchical names were getting mangled in RapidWright (#603)
-
Adds support for reading gzipped EDIF files
-
Fixes an issue with Design.updateDesignWithCheckpointPlaceAndRoute() on more recent version DCPs (#601)
-
API Additions:
- com.xilinx.rapidwright.design.Design "public Map<Site, SiteConfig> getBELAttrs()"
- com.xilinx.rapidwright.design.Design "public BELAttr addBELAttr(Net net, Site site, SiteTypeEnum type, BEL bel, String name, String value)"
- com.xilinx.rapidwright.device.Device "public BEL getBEL(SiteTypeEnum type, String belName)"
- com.xilinx.rapidwright.device.Device "public BEL[] getBELs(SiteTypeEnum type)"
RapidWright 2022.2.0-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release 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 getInsts()"
--> "public List 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 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 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())
- com.xilinx.rapidwright.design.ModuleInst "public ArrayList getInsts()"
-
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 getNetList()"
--> "public Set 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()"
- com.xilinx.rapidwright.design.Cell "public Map<EDIFName, EDIFPropertyValue> getProperties()"
RapidWright 2022.1.4-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
- Can now load EDIF netlist in parallel with placement and routing when reading a DCP
- Allows the Design object to detach the corresponding EDIFNetlist to save working memory
- Restores the original EDIFPort.getBusName() behavior
- Changes EDIFPortInstList duplicate behavior from prohibit to overwrite
- Net.removePin() to unset alternate source
- Fix Net.removePin() for static nets under preserveOtherRoutes
- Option to track process peak memory usage
- Fix for #548, #572, #564
- Fixes intrasite routing to CARRY pins from LUT outputs on UltraScale/+
- API Additions:
- com.xilinx.rapidwright.design.Cell "public void setEDIFHierCellInst(EDIFHierCellInst inst)"
- com.xilinx.rapidwright.design.Design "public void detachNetlist()"
- com.xilinx.rapidwright.device.Node "public Collection getAllDownhillNodes(Collection nodes)"
- com.xilinx.rapidwright.device.Node "public Collection getAllUphillNodes(Collection nodes)"
RapidWright 2022.1.3-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
- Adds support for partition pins, several new APIs added as seen below
- Fixes site routing for F8MUX inputs and routethrus on CARRY pins
- Fix for DCPs created with -binary_only option
- Fix for DCPs that don't end with '.dcp' extension
- Optimizes EDIF memory usage (see #463)
- Improved handling of dual-output nets
- Fixes BEL.canInvert()
- Preserves BEL attributes DB in Versal DCPs
- API Additions:
- com.xilinx.rapidwright.design.Cell "public void setPropertiesMap(Map<String, EDIFPropertyValue> properties)"
- com.xilinx.rapidwright.design.Cell "public List getAllCorrespondingSitePinNames(String logicalPinName, boolean considerLutRoutethru)"
- com.xilinx.rapidwright.design.Design "public boolean addPartitionPin(PartitionPin pin)"
- com.xilinx.rapidwright.design.Design "public boolean removePartitionPin(PartitionPin pin)"
- com.xilinx.rapidwright.design.Design "public List getPartitionPins()"
- com.xilinx.rapidwright.design.Design "public PartitionPin createPartitionPin(EDIFHierPortInst pin, Node node)"
- com.xilinx.rapidwright.design.Design "public PartitionPin createPartitionPin(EDIFPort port, int index, Node node)"
- com.xilinx.rapidwright.design.Design "public PartitionPin createPartitionPin(EDIFPort port, Node node)"
- com.xilinx.rapidwright.design.Design "public void unrouteSites()"
- com.xilinx.rapidwright.design.Net "public static final String Z_NET = "GLOBAL_DUMMY_ROUTE""
- com.xilinx.rapidwright.design.PartitionPin "public Tile getTile()"
- com.xilinx.rapidwright.design.PartitionPin "public String getTileName()"
- com.xilinx.rapidwright.design.PartitionPin "public void setNode(Node node)"
- com.xilinx.rapidwright.design.PartitionPin "public Node getNode()"
- com.xilinx.rapidwright.design.PartitionPin "public int getWireIndex()"
- com.xilinx.rapidwright.design.PartitionPin "public String getWireName()"
- com.xilinx.rapidwright.design.PartitionPin "public void setIsFixed(boolean isFixed)"
- com.xilinx.rapidwright.design.PartitionPin "public void setIsWireFixed(boolean isWireFixed)"
- com.xilinx.rapidwright.design.PartitionPin "public boolean isFixed()"
- com.xilinx.rapidwright.design.PartitionPin "public boolean isWireFixed()"
- com.xilinx.rapidwright.design.PartitionPin "public String getInstanceName()"
- com.xilinx.rapidwright.design.PartitionPin "public boolean isPort()"
- com.xilinx.rapidwright.design.PartitionPin "public String getTerminalName()"
- com.xilinx.rapidwright.design.PartitionPin "public String getLibCellName()"
- com.xilinx.rapidwright.design.PartitionPin "public String toString()"
- com.xilinx.rapidwright.design.SiteInst "public boolean removePin(SitePinInst sitePinInst)"
RapidWright 2022.1.2-beta Release
NOTE: Due to GitHub size limitations, All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
Notes:
- Includes some memory usage improvements of 8-14% for a parsed EDIF netlist (#428)
- Placement memory reduction by 19% or ~4.7% for a design
- For 2022.1 DCPs, enables placement & routing information to be read in parallel, or load DCPs up
to 44% faster. - Fix to DeviceBrowser to browse devices prior to downloading their database file (#427)
- Fixes placed (but not routed) design import/export for Interchange-based files (#467)
- Design.createModuleInst() now copies netlist cells rather than migrate them
- Properly unroutes routethru in SiteInst.unrouteIntraSiteNet()
- Net and Cell classes now keep lazy reference to hierarchical netlist object
- Net.unroutePin() now uses code in DesignTools.unroutePins()
- Fix to unique-ify netlist (or previously flatten netlist) (#430)
- Bumps Gradle Wrapper version from 7.1 to 7.4.2 to enable Java 18 support (#453)
- Replacing EDIF in DCP now also removes existing binary netlist equivalent (.xn)
- Includes PRs: #409, #417, #424, #427, #428, #429, #430, #431, #432, #437, #442, #443, #445, #446,
#449, #450, #451, #453, #455, #459, #461, #462, #465, #469, #470, #471, #472, #476,
#477 - Fixes Issues: #136, #419, #441, #444, #454, #464
- API Additions:
- com.xilinx.rapidwright.design.Cell "public EDIFHierCellInst getEDIFHierCellInst()"
- com.xilinx.rapidwright.design.Design "public Net createNet(EDIFHierNet net)"
- com.xilinx.rapidwright.design.Design "public static boolean replaceEDIFinDCP(String inDcpFileName, String edfFileName, String outDcpFileName)"
- com.xilinx.rapidwright.design.Net "public Design getDesign()"
- com.xilinx.rapidwright.design.Net "public EDIFHierNet getLogicalHierNet()"
- com.xilinx.rapidwright.design.Net "public Net(String name, EDIFHierNet logicalHierNet)"
- com.xilinx.rapidwright.design.Net "public void setDesign(Design design)"
- com.xilinx.rapidwright.design.Net "public void setLogicalHierNet(EDIFHierNet logicalHierNet)"
- com.xilinx.rapidwright.design.SiteInst "public BELPin getBELPin(String belName, String pinName)"
- com.xilinx.rapidwright.device.BELPin "public BELPin getConnectedInputPinOnBEL(BEL bel)"
RapidWright 2022.1.1-beta Release
NOTE: Due to GitHub size limitations, this release begins to split rapidwright_data.zip
into two files. All Series7 devices are now located in rapidwright_data2.zip
. All other files are in rapidwright_data.zip
.
Release Notes:
- Fixes crash issue while reading DCPs created by Vivado 2022.1
- Adds more granularity to runtime reporting in reading 2022.1 DCPs