Skip to content

Commit

Permalink
Staging release 2021.2.1 (#338)
Browse files Browse the repository at this point in the history
* Test secondary source pins created correctly

* Adding Maven Central Dependencies to build.gradle

Signed-off-by: Chris Lavin <[email protected]>

* Fix for Issue #315

Signed-off-by: Chris Lavin <[email protected]>

* Backing out build.gradle committed by mistake

Signed-off-by: Chris Lavin <[email protected]>

* Staging for 2021.2.1 release

Signed-off-by: Chris Lavin <[email protected]>

* Test for checking that modules are legally relocated wrt SLR boundaries

Signed-off-by: Chris Lavin <[email protected]>

* Support for parallel DCP write

* Add doc

* Reset ParallelismTools when done

* Address review comments

* Updating RapidWrightDCP submodule for #318

* Restoring previous reference.

* Updates jars

Signed-off-by: Chris Lavin <[email protected]>

* Release notes for 2021.2.1

Signed-off-by: Chris Lavin <[email protected]>

* Point to release candidate for CI testing.

Signed-off-by: Chris Lavin <[email protected]>

* Fixing merge of #317 and #318

Signed-off-by: Chris Lavin <[email protected]>

* Moving to master branch commit for DCPs

Signed-off-by: Chris Lavin <[email protected]>

* 2021.2.1 Release

Signed-off-by: Chris Lavin <[email protected]>

Co-authored-by: eddieh-xlnx <[email protected]>
  • Loading branch information
clavin-xlnx and eddieh-xlnx authored Feb 3, 2022
1 parent daee193 commit 1dd1a1e
Show file tree
Hide file tree
Showing 16 changed files with 1,076 additions and 372 deletions.
16 changes: 8 additions & 8 deletions .classpath
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/reflectasm-1.11.6.jar"/>
<classpathentry kind="lib" path="jars/reflectasm-1.11.9.jar"/>
<classpathentry kind="lib" path="jars/protobuf-java-3.11.4.jar"/>
<classpathentry kind="lib" path="jars/qtjambi-4.5.2_01.jar">
<attributes>
Expand All @@ -23,19 +23,19 @@
<attribute name="javadoc_location" value="jar:platform:/resource/rapidSmith/jars/qtjambi-4.5.2_01-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/objenesis-2.6.jar"/>
<classpathentry kind="lib" path="jars/objenesis-3.2.jar"/>
<classpathentry kind="lib" path="jars/jopt-simple-5.0.4.jar"/>
<classpathentry kind="lib" path="jars/kryo-5.0.0-RC5.jar"/>
<classpathentry kind="lib" path="jars/minlog-1.3.0.jar"/>
<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-2021.2.0.jar">
<classpathentry kind="lib" path="jars/rapidwright-api-lib-2021.2.1.jar">
<attributes>
<attribute name="javadoc_location" value="jar:platform:/resource/RapidWright/jars/rapidwright-api-lib-2021.2.0-javadoc.jar!/"/>
<attribute name="javadoc_location" value="jar:platform:/resource/RapidWright/jars/rapidwright-api-lib-2021.2.1-javadoc.jar!/"/>
</attributes>
</classpathentry>
<classpathentry kind="lib" path="jars/jgrapht-core-1.3.0.jar"/>
<classpathentry kind="lib" path="jars/runtime-0.1.7.jar"/>
<classpathentry kind="lib" path="jars/json.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"/>
<classpathentry kind="lib" path="jars/junit-jupiter-api-5.7.1.jar"/>
<classpathentry kind="lib" path="jars/junit-jupiter-engine-5.7.1.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: v2021.2.0-beta
RAPIDWRIGHT_VERSION: v2021.2.1-beta

jobs:
build:
Expand Down
72 changes: 53 additions & 19 deletions LICENSE.TXT
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ for details)
RapidWright (Apache 2.0)
- JOpt Simple (MIT License)
- Protocol Buffers 3.11.4 (Protocol Buffer License)
- Kryo (BSD 3-clause "New" or "Revised" License)
- MinLog (BSD 3-clause "New" or "Revised" License)
- Reflectasm (BSD 3-clause "New" or "Revised" License)
- Objenesis 2.6 (Apache 2.0 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)
- Objenesis 3.2 (Apache 2.0 License)
- Qt Jambi (LGPL 2.1)
- Qt (LGPL 2.1)
- Fonts
Expand Down Expand Up @@ -80,11 +80,11 @@ RapidWright (Apache 2.0)
- fiber-space-jupyter-kernel-jsr223 (Apache 2.0)
- apache-jakarta-commons-cli 1.2 (Apache 2.0)
- junit-team-junit 4.12 (Eclipse Public License 1.0)
- json (2016-02-12) (unique license)
- jeromq 0.3.6 (Mozilla Public License Version 2.0)
- json (2016-08-10) (unique license)
- jeromq 0.5.2 (Mozilla Public License Version 2.0)
- 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.4 (MIT License)
- Cap'n Proto Java Runtime 0.1.13 (MIT License)
- Gradle Wrapper 5.4.1 (Apache 2.0)
- JUnit 5
- Junit Platform Commons 1.7.1 (EPL 2.0)
Expand All @@ -100,6 +100,8 @@ RapidWright (Apache 2.0)
- Apiguardian API 1.1.0 (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)



Expand Down Expand Up @@ -467,7 +469,7 @@ support library is itself covered by the above license.
Copyright 2008 Google Inc
************************ END LICENSE ************************

************************ Kryo - BSD 3-clause "New" or "Revised" License ************************
************************ Kryo 5.2.1 - BSD 3-clause "New" or "Revised" License ************************
Components: esotericsoftware-kryo 5


Expand All @@ -487,8 +489,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Copyright 2008-2020 Nathan Sweet
************************ END LICENSE ************************

************************ MinLog - BSD 3-clause "New" or "Revised" License ************************
Components: minlog 1.3
************************ MinLog 1.3.1 - BSD 3-clause "New" or "Revised" License ************************
Components: minlog 1.3.1


Copyright (c) 2008, Nathan Sweet
Expand All @@ -507,8 +509,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Copyright 2008 Nathan Sweet
************************ END LICENSE ************************

************************ Reflectasm - BSD 3-clause "New" or "Revised" License ************************
Components: reflectasm 1.11.6
************************ Reflectasm 1.11.9 - BSD 3-clause "New" or "Revised" License ************************
Components: reflectasm 1.11.9


Copyright (c) 2008, Nathan Sweet
Expand All @@ -527,8 +529,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Copyright 2008 Nathan Sweet
************************ END LICENSE ************************

************************ Objenesis - Apache 2.0 License ************************
Components: objenesis 2.6
************************ Objenesis 3.2 - Apache 2.0 License ************************
Components: objenesis 3.2



Expand Down Expand Up @@ -6914,7 +6916,7 @@ in any resulting litigation.

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

***************** json (2016-02-12) - unique license **************************
***************** json (2016-08-10) - unique license **************************
Components: json


Expand Down Expand Up @@ -6950,7 +6952,7 @@ import java.util.Iterator;
Copyright 2002, 2006, 2008, 2015 JSON.org
********************************* END LICENSE *********************************

***************** jeromq 0.3.6 - Mozilla Public License 2.0 *******************
***************** jeromq 0.5.2 - Mozilla Public License 2.0 *******************
Mozilla Public License Version 2.0
==================================

Expand Down Expand Up @@ -8322,7 +8324,7 @@ Copyright 2015-2018 Christophe Thiebaud and Contributors
********************************* END LICENSE *********************************

***************** Cap'n Proto Java Runtime - MIT ******************************
Components: capnproto-capnproto 0.1.4
Components: capnproto-capnproto 0.1.13


Copyright (c) 2013-2015 Sandstorm Development Group, Inc. and contributors
Expand Down Expand Up @@ -8360,11 +8362,11 @@ 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


*** Gradle Wrapper 5.4.1, Apiguardian API 1.1.0, Opentest4j 1.2.0,
JetBrains Java Annotations 20.1.0 (Apache 2.0) ****************************
JetBrains Java Annotations 20.1.0, Apache Commons IO 2.11.0 (Apache 2.0) ****************************

Apache License
Version 2.0, January 2004
Expand Down Expand Up @@ -8653,3 +8655,35 @@ If it is not possible or desirable to put the notice in a particular file, then
You may add additional accurate notices of copyright ownership.

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

****************************** jzlib 1.1.3 (BSD-style license) ****************
JZlib 0.0.* were released under the GNU LGPL license. Later, we have switched
over to a BSD-style license.

------------------------------------------------------------------------------
Copyright (c) 2000-2011 ymnk, JCraft,Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the distribution.

3. The names of the authors may not be used to endorse or promote products
derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,
INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE 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,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
********************************* END LICENSE *********************************
19 changes: 19 additions & 0 deletions RELEASE_NOTES.TXT
Original file line number Diff line number Diff line change
@@ -1,3 +1,22 @@
============= RapidWright 2021.2.1-beta released on 2022-02-03 ================
Notes:
* 3-4X faster DCP write times using a new parallel, multi-threaded approach (See #337), Enable with:
- ParallelismTools.setParallel(true) or
- Add the environment variable RW_PARALLEL to the environment.
* Multiple DCP read operations can now be initiated in parallel without errors
* Fixes a number of issues related to SitePinInst creation on DCP load (see #317, #318)
* Adds a new MergeDesign capability, allows users to merge two or more existing designs into a
single implementation (See #331)
* All RapidWright dependencies and itself are published on Maven Central. Removes the need to
manually download rapidwright_jars.zip, instead users can simply run './gradlew update_jars'
* Includes PRs: #287, #291, #289, #297, #290 #300, #296, #294, #304, #305, #313, #319, #324, #328,
#320, #332, #330, #336, #331, #333, #322, #318, #317
* Fixes Issues: #326, #298, #299, #312, #315, #326
- API Additions:
- com.xilinx.rapidwright.design.Design "public void setName(String name)"
- com.xilinx.rapidwright.device.Site "public ClockRegion getClockRegion()"


============= RapidWright 2021.2.0-beta released on 2021-11-09 ================
Notes:
* Updates support for latest Vivado devices in 2021.2
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def sw = new StringWriter()
def get_rapidwright_version_line = file('.github/workflows/build.yml').filterLine(sw) {
line -> line.contains('RAPIDWRIGHT_VERSION:')
}
def rapidwright_version = sw.toString().replace("RAPIDWRIGHT_VERSION: v", "").replace("-beta", "").trim()
def rapidwright_version = sw.toString().replace("RAPIDWRIGHT_VERSION: v", "").replace("-beta", "").trim() + ""

dependencies {
api 'com.xilinx.rapidwright:rapidwright-api-lib:' + rapidwright_version
Expand Down
62 changes: 51 additions & 11 deletions src/com/xilinx/rapidwright/edif/EDIFLibrary.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,16 @@
* limitations under the License.
*
*/
/**
*
*/
package com.xilinx.rapidwright.edif;

import com.xilinx.rapidwright.util.NoCloseOutputStream;
import com.xilinx.rapidwright.util.ParallelismTools;
import com.xilinx.rapidwright.util.ParallelDCPInput;
import com.xilinx.rapidwright.util.ParallelDCPOutput;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collection;
Expand All @@ -35,6 +39,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.Future;

/**
* Keeps track of a set of {@link EDIFCell} objects
Expand Down Expand Up @@ -259,15 +264,50 @@ protected void ensureValidEDIFCellNames(){
}
}

void exportEDIF(List<EDIFCell> cells, Writer w, boolean writeHeader, boolean writeFooter) throws IOException {
if (writeHeader) {
w.write(" (Library ");
exportEDIFName(w);
w.write("\n (edifLevel 0)\n");
w.write(" (technology (numberDefinition ))\n");
}
for (EDIFCell c : cells) {
c.exportEDIF(w);
}
if (writeFooter) {
w.write(" )\n");
}
}

public void exportEDIF(Writer bw) throws IOException{
bw.write(" (Library ");
exportEDIFName(bw);
bw.write("\n (edifLevel 0)\n");
bw.write(" (technology (numberDefinition ))\n");
for(EDIFCell cell : getValidCellExportOrder()){
cell.exportEDIF(bw);
public void exportEDIF(BufferedWriter bw) throws IOException {
exportEDIF(getValidCellExportOrder(), bw, true, true);
}

public List<Future<ParallelDCPInput>> exportEDIF() throws IOException{
if (!ParallelismTools.getParallel()) {
throw new RuntimeException();
}
bw.write(" )\n");

List<EDIFCell> validCellOrder = getValidCellExportOrder();
final int chunkSize = 256;

List<Future<ParallelDCPInput>> streamFutures = new ArrayList<>();
for (long i = 0; i < validCellOrder.size(); i += chunkSize) {
final boolean firstChunk = (i == 0);
final boolean lastChunk = (i + chunkSize >= validCellOrder.size());
List<EDIFCell> chunk = validCellOrder.subList((int) i, (int) (lastChunk ? validCellOrder.size() : i + chunkSize));

streamFutures.add(ParallelismTools.submit(
() -> ParallelDCPOutput.newStream((os) -> {
try (OutputStreamWriter ow = new OutputStreamWriter(new NoCloseOutputStream(os))) {
exportEDIF(chunk, ow, firstChunk, lastChunk);
} catch (IOException e) {
throw new RuntimeException(e);
}
})
));
}

return streamFutures;
}
}
Loading

0 comments on commit 1dd1a1e

Please sign in to comment.