Skip to content

Releases: Xilinx/RapidWright

RapidWright 2023.1.1-beta Release

21 Jun 22:06
802345b
Compare
Choose a tag to compare

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

01 Jun 17:12
cefe09a
Compare
Choose a tag to compare

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

03 May 21:32
368002d
Compare
Choose a tag to compare

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

11 Mar 03:11
891d3e6
Compare
Choose a tag to compare

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

20 Jan 06:05
94caa5c
Compare
Choose a tag to compare

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

17 Nov 04:54
6730ee7
Compare
Choose a tag to compare

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())
  • 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()"

RapidWright 2022.1.4-beta Release

04 Nov 01:36
e9ba1c5
Compare
Choose a tag to compare

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

20 Sep 05:00
61cb018
Compare
Choose a tag to compare

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

27 Jul 19:12
a9b2a40
Compare
Choose a tag to compare

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

14 May 07:33
33a9a86
Compare
Choose a tag to compare

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