Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/reflectasm-1.11.9.jar"/>
<classpathentry kind="lib" path="jars/protobuf-java-3.25.0.jar"/>
<classpathentry kind="lib" path="jars/protobuf-java-4.31.1.jar"/>
<classpathentry kind="lib" path="jars/qtjambi-4.5.2_01.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/rapidSmith/jars/qtjambi-4.5.2_01-javadoc.jar!/"/>
Expand All @@ -33,12 +33,13 @@
<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-2025.1.3.jar">
<classpathentry kind="lib" path="jars/rapidwright-api-lib-2025.2.0-rc3.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/RapidWright/jars/rapidwright-api-lib-2025.1.3-javadoc.jar!/"/>
<attribute name="javadoc_location" value="jar:platform:/resource/RapidWright/jars/rapidwright-api-lib-2025.2.0-rc3-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/jgrapht-core-1.3.0.jar"/>
<classpathentry kind="lib" path="jars/jacl-1.4.1.jar"/>
<classpathentry kind="lib" path="jars/runtime-0.1.13.jar"/>
<classpathentry kind="lib" path="jars/json-20160810.jar"/>
<classpathentry kind="lib" path="jars/annotations-20.1.0.jar"/>
Expand All @@ -49,7 +50,7 @@
<classpathentry kind="lib" path="jars/junit-platform-engine-1.7.1.jar"/>
<classpathentry kind="lib" path="jars/opentest4j-1.2.0.jar"/>
<classpathentry kind="lib" path="jars/commons-cli-1.2.jar"/>
<classpathentry kind="lib" path="jars/commons-io-2.11.0.jar"/>
<classpathentry kind="lib" path="jars/commons-io-2.20.0.jar"/>
<classpathentry kind="lib" path="jars/jzlib-1.1.3.jar"/>
<classpathentry kind="lib" path="jars/jeromq-0.5.2.jar"/>
<classpathentry kind="lib" path="jars/junit-platform-launcher-1.7.1.jar"/>
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ on:
pull_request:

env:
RAPIDWRIGHT_VERSION: v2025.1.3-beta
RAPIDWRIGHT_VERSION: v2025.2.0-rc3-beta


jobs:
build:
Expand Down
225 changes: 220 additions & 5 deletions LICENSE.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ for details)

RapidWright (Apache 2.0)
- JOpt Simple (MIT License)
- Protocol Buffers 3.25.0 (Protocol Buffer License)
- Protocol Buffers 4.31.1 (Protocol Buffer License)
- Kryo 5.2.1 (BSD 3-clause "New" or "Revised" License)
- MinLog 1.3.1 (BSD 3-clause "New" or "Revised" License)
- Reflectasm 1.11.9 (BSD 3-clause "New" or "Revised" License)
Expand Down Expand Up @@ -82,6 +82,7 @@ RapidWright (Apache 2.0)
- junit-team-junit 4.12 (Eclipse Public License 1.0)
- json (2016-08-10) (unique license)
- jeromq 0.5.2 (Mozilla Public License Version 2.0)
- jacl 1.4.1 (multiple licenses)
- jgrapht-core 1.3.0 (LGPL 2.1 or EPL 2.1)
- Source files available: http://www.rapidwright.io/docs/_static/jgrapht-core-1.3.0-src.zip
- Cap'n Proto Java Runtime 0.1.13 (MIT License)
Expand All @@ -101,9 +102,11 @@ RapidWright (Apache 2.0)
- Opentest4j 1.2.0 (Apache 2.0)
- JetBrains Java Annotations 20.1.0 (Apache 2.0)
- jzlib 1.1.3 (BSD-style License)
- Apache Commons IO 2.11.0 (Apache 2.0)
- Apache Commons IO 2.20.0 (Apache 2.0)
- Zstd-jni 1.5.5-1 (2-clause BSD)
- Zstandard 1.5.5 (3-clause BSD or GPLv2)
- Google or-tools-java 9.14.6206 (Apache 2.0)
- Java Native Access jna-5.14.0 (Apache 2.0)



Expand Down Expand Up @@ -429,7 +432,7 @@ IF LICENSEE DOES NOT AGREE TO ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT,
************************ END LICENSE ************************


**************************google-protobuf v3.25.0 - BSD-3-Clause***************************
**************************google-protobuf v4.31.1 - BSD-3-Clause***************************

Copyright 2008 Google Inc. All rights reserved.

Expand Down Expand Up @@ -8339,11 +8342,12 @@ Copyright 2013-2015 Sandstorm Development Group Inc. and contributors
- Apiguardian API 1.1.0 (Apache 2.0)
- Opentest4j 1.2.0 (Apache 2.0)
- JetBrains Java Annotations 20.1.0 (Apache 2.0)
- Apache Commons IO 2.11.0
- Apache Commons IO 2.20.0


*** Gradle Wrapper 7.4.2, Apiguardian API 1.1.0, Opentest4j 1.2.0,
JetBrains Java Annotations 20.1.0, Apache Commons IO 2.11.0 (Apache 2.0) ****************************
JetBrains Java Annotations 20.1.0, Apache Commons IO 2.20.0,
Google or-tools-java 9.14.6206, Java Native Access jna-5.14.0 (Apache 2.0) ****************************

Apache License
Version 2.0, January 2004
Expand Down Expand Up @@ -9070,3 +9074,214 @@ Public License instead of this License.


********************************* END LICENSE *********************************

********************** Jacl 1.4.1 (multiple licenses) ****************

license.terms

SUN MICROSYSTEMS, INC. THROUGH ITS SUN MICROSYSTEMS LABORATORIES
DIVISION ("SUN") WILL LICENSE THIS SOFTWARE AND THE ACCOMPANYING
DOCUMENTATION TO YOU (a "Licensee") ONLY ON YOUR ACCEPTANCE OF ALL
THE TERMS SET FORTH BELOW.

Sun grants Licensee a non-exclusive, royalty-free right to download,
install, compile, use, copy and distribute the Software, modify or
otherwise create derivative works from the Software (each, a
"Modification") and distribute any Modification in source code and/or
binary code form to its customers with a license agreement containing
these terms and noting that the Software has been modified. The
Software is copyrighted by Sun and other third parties and Licensee
shall retain and reproduce all copyright and other notices presently
on the Software. As between Sun and Licensee, Sun is the sole owner of
all rights in and to the Software other than the limited rights
granted to Licensee herein; Licensee will own its Modifications,
expressly subject to Sun's continuing ownership of the
Software. Licensee will, at its expense, defend and indemnify Sun and
its licensors from and against any third party claims, including costs
and reasonable attorneys' fees, and be wholly responsible for any
liabilities arising out of or related to Licensee's development, use
or distribution of the Software or Modifications. Any distribution of
the Software and Modifications must comply with all applicable United
States export control laws.

THE SOFTWARE IS BEING PROVIDED TO LICENSEE "AS IS" AND ALL EXPRESS OR
IMPLIED CONDITIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT,
ARE DISCLAIMED. IN NO EVENT WILL SUN BE LIABLE HEREUNDER FOR ANY
DIRECT DAMAGES OR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES OF ANY KIND.

license.amd

The following license terms apply to the TJC compiler source
and test files located in the src/tjc, src/tests/tjc, and
tests/tjc directories.

© 2005 Advanced Micro Devices, Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that existing copyright notices
are retained in all copies, this notice is included verbatim in any
distributions, and the terms and conditions hererin are met.

Use of the this software manifests acceptance of the terms of this
license by performance.

The name of Advanced Micro Devices, Inc. may not be used to endorse or
promote products derived from this software without specific prior
written permission.

THIS SOFTWARE IS PROVIDED BY ADVANCED MICRO DEVICES, INC. "AS IS" AND ANY
EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NON-INFRINGEMENT, OR THOSE ARISING FROM CUSTOM OF TRADE OR
COURSE OF USAGE ARE DISCLAIMED.

IN NO EVENT SHALL ADVANCED MICRO DEVICES, INC. BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED, AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE ITS DOCUMENTATION OR ANY DERIVATIVES
THEREOF, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. BY USING THIS
SOFTWARE WITHOUT CHARGE, YOU ACCEPT THIS ALLOCATION OF RISK. THIS
DISCLAIMER OF LIABILITY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE.
ADVANCED MICRO DEVICES, INC. HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS OF THIS SOFTWARE.

In the redistribution and use of this software, each party shall at all
times comply with all applicable governmental laws, statutes, ordinances,
rules, regulations, orders, and other requirements, including without
limitation such governmental requirements applicable to environmental
protection, health, safety, wages, hours, equal employment opportunity,
nondiscrimination, working conditions, import or export control, and
transportation. Without limiting the foregoing, each party shall adhere
to the U.S. Export Administration Regulations (EAR), currently found at
15 C.F.R. Sections 730 through 744, and, unless properly authorized by
the U.S. Government, shall not (1) export, re-export or release restricted
technology, software, or source code to a national of a country in Country
Groups D:1 or E:1, or (2) export to Country Groups D:1 or E:1 the direct
product of such technology or software, if such foreign produced direct
product is subject to national security controls as identified on the
Commerce Control List (currently found in Supplement 1 to Section 774 of EAR).
These export requirements shall survive any expiration or termination
of this agreement.

license.itcl

The following license terms apply to the Itcl source and
test files located in the src/itcl and tests/itcl directories.


This software is copyrighted by Cadence Design Systems, Inc., and other
parties. The following terms apply to all files associated with the
software unless explicitly disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.

-----------------------------------------------------------------------
Following is the original agreement for the Tcl/Tk software from
Sun Microsystems.
-----------------------------------------------------------------------

This software is copyrighted by the Regents of the University of
California, Sun Microsystems, Inc., and other parties. The following
terms apply to all files associated with the software unless explicitly
disclaimed in individual files.

The authors hereby grant permission to use, copy, modify, distribute,
and license this software and its documentation for any purpose, provided
that existing copyright notices are retained in all copies and that this
notice is included verbatim in any distributions. No written agreement,
license, or royalty fee is required for any of the authorized uses.
Modifications to this software may be copyrighted by their authors
and need not follow the licensing terms described here, provided that
the new terms are clearly indicated on the first page of each file where
they apply.

IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE
IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
MODIFICATIONS.

GOVERNMENT USE: If you are acquiring this software on behalf of the
U.S. government, the Government shall have only "Restricted Rights"
in the software and related documentation as defined in the Federal
Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you
are acquiring the software on behalf of the Department of Defense, the
software shall be classified as "Commercial Computer Software" and the
Government shall have only "Restricted Rights" as defined in Clause
252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
authors grant the U.S. Government and others acting in its behalf
permission to use and distribute the software in accordance with the
terms specified in this license.

license.ucb

Portions of Jacl and Tcl Blend are
Copyright (c) 1997-1999 The Regents of the University of California.
All rights reserved.

Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify, and distribute this
software and its documentation for any purpose, provided that the above
copyright notice and the following two paragraphs appear in all copies
of this software.

IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
ENHANCEMENTS, OR MODIFICATIONS.


********************************* END LICENSE *********************************
6 changes: 4 additions & 2 deletions common.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,17 @@ dependencies {
api 'org.capnproto:runtime:0.1.13'
api 'net.sf.jopt-simple:jopt-simple:5.0.4'
api 'org.python:jython-standalone:2.7.2'
api 'com.google.protobuf:protobuf-java:3.25.0'
api 'com.google.ortools:ortools-java:9.14.6206'
api 'com.google.protobuf:protobuf-java:4.31.1'
api 'org.jetbrains:annotations:20.1.0'
api 'org.zeromq:jeromq:0.5.2'
api 'commons-cli:commons-cli:1.2'
api 'org.json:json:20160810'
api 'com.jcraft:jzlib:1.1.3'
api 'commons-io:commons-io:2.11.0'
api 'commons-io:commons-io:2.20.0'
api 'com.xilinx.rapidwright:qtjambi-'+os+':4.5.2_01'
api 'com.xilinx.rapidwright:jupyter-kernel-jsr223:1.0.1'
api 'com.xilinx.rapidwright:jacl:1.4.1'
testFixturesApi 'org.junit.jupiter:junit-jupiter-api:5.7.1'
testFixturesApi 'org.junit.jupiter:junit-jupiter-engine:5.7.1'
testFixturesApi 'org.junit.jupiter:junit-jupiter-params:5.7.1'
Expand Down
2 changes: 1 addition & 1 deletion src/com/xilinx/rapidwright/debug/DotEdifDumper.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ protected Stream<EDIFPortInst> getPorts(EDIFCellInst edifCellInst) {
protected Stream<Pair<EDIFPort,Integer>> getPortTemplates(EDIFCellInst edifCellInst) {
return edifCellInst.getCellType().getPorts().stream().flatMap(p-> {
if (p.isBus()) {
return Arrays.stream(p.getBitBlastedIndicies()).mapToObj(i -> new Pair<>(p, i));
return Arrays.stream(p.getBitBlastedIndices()).mapToObj(i -> new Pair<>(p, i));
}
return Stream.of(new Pair<>(p, 0));
});
Expand Down
2 changes: 1 addition & 1 deletion src/com/xilinx/rapidwright/design/blocks/PBlock.java
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ public ArrayList<String> getTclConstraints() {
ArrayList<String> tcl = new ArrayList<>();
tcl.add("create_pblock " + name + (parent != null ? " -parent " + parent.getName() : ""));
for (PBlockRange p : this) {
tcl.add("resize_pblock "+ name +" -add " + p.toString());
tcl.add("resize_pblock [get_pblocks "+ name +"] -add " + p.toString());
}
if (containRouting()) {
tcl.add("set_property " + PblockProperty.CONTAIN_ROUTING + " 1 [get_pblocks " + name + "]");
Expand Down
9 changes: 9 additions & 0 deletions src/com/xilinx/rapidwright/design/blocks/PBlockRange.java
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,16 @@ public void setUpperRight(PBlockCorner upperRight) {
this.upperRight = upperRight;
}

private static String getPrefixedCornerName(PBlockCorner corner) {
if (corner instanceof ClockRegion) {
return CLOCK_REGION_RANGE_STR+"_"+corner.getName();
}
return corner.getName();
}
public String toString() {
if (isClockRegionRange()) {
return CLOCK_REGION_RANGE_STR + "_" + lowerLeft.getName() + ":" + CLOCK_REGION_RANGE_STR + "_" + upperRight.getName();
}
return lowerLeft.getName() + ":" + upperRight.getName();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,14 @@ public int compareSiteInsts(SiteInst gold, SiteInst test) {
if (!Objects.equals(e.getValue().getType(), testCell.getType())) {
addDiff(DesignDiffType.PLACED_CELL_TYPE, e.getValue(), testCell, gold, "");
}

if (!Objects.equals(e.getValue().isBELFixed(), testCell.isBELFixed())) {
addDiff(DesignDiffType.PLACED_CELL_IS_BEL_FIXED, e.getValue(), testCell, gold, "");
}

if (!Objects.equals(e.getValue().isSiteFixed(), testCell.isSiteFixed())) {
addDiff(DesignDiffType.PLACED_CELL_IS_SITE_FIXED, e.getValue(), testCell, gold, "");
}
}
for (Entry<String, Cell> e : testMap.entrySet()) {
Cell extraCell = e.getValue();
Expand Down
Loading