aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-05-20 19:45:27 +0100
committerGitHub <noreply@github.com>2021-05-20 19:45:27 +0100
commit54b8364ceaa3be52cf5161e268cdefa96588e749 (patch)
treed9d27b52b2f1383ec1ddae612d6ae0a8a0d5489a
parent5a41d2070c8a7c065d4e3fbfb70b3a3fbd19b319 (diff)
parent9dce00a4e7b9bdaf1b2bbc0c9d8c2ccc830c65b1 (diff)
downloadnextpnr-54b8364ceaa3be52cf5161e268cdefa96588e749.tar.gz
nextpnr-54b8364ceaa3be52cf5161e268cdefa96588e749.tar.bz2
nextpnr-54b8364ceaa3be52cf5161e268cdefa96588e749.zip
Merge pull request #711 from acomodi/interchange-site-to-pseudo-pips
interchange: phys: add site instance idstr for pseudo tile PIPs
-rw-r--r--.github/workflows/interchange_ci.yml14
m---------3rdparty/fpga-interchange-schema0
-rw-r--r--fpga_interchange/fpga_interchange.cpp19
3 files changed, 29 insertions, 4 deletions
diff --git a/.github/workflows/interchange_ci.yml b/.github/workflows/interchange_ci.yml
index f93a58ce..0fe58db8 100644
--- a/.github/workflows/interchange_ci.yml
+++ b/.github/workflows/interchange_ci.yml
@@ -22,14 +22,17 @@ jobs:
uses: hendrikmuhs/ccache-action@v1
- name: Get yosys
- run: git clone https://github.com/YosysHQ/yosys.git
+ run: |
+ git clone https://github.com/YosysHQ/yosys.git
+ cd yosys
+ echo "YOSYS_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache yosys installation
uses: actions/cache@v2
id: cache-yosys
with:
path: .yosys
- key: cache-yosys-${{ hashFiles('**/yosys/.git/HEAD') }}
+ key: cache-yosys-${{ env.YOSYS_SHA }}
- name: Build yosys
run: |
@@ -88,14 +91,17 @@ jobs:
uses: hendrikmuhs/ccache-action@v1
- name: Get yosys
- run: git clone https://github.com/YosysHQ/yosys.git
+ run: |
+ git clone https://github.com/YosysHQ/yosys.git
+ cd yosys
+ echo "YOSYS_SHA=$(git rev-parse HEAD)" >> $GITHUB_ENV
- name: Cache yosys installation
uses: actions/cache@v2
id: cache-yosys
with:
path: .yosys
- key: cache-yosys-${{ hashFiles('**/yosys/.git/HEAD') }}
+ key: cache-yosys-${{ env.YOSYS_SHA }}
- name: Build yosys
run: |
diff --git a/3rdparty/fpga-interchange-schema b/3rdparty/fpga-interchange-schema
-Subproject b3ab09776c8dc31a71ca2c7fbcb4575219232d1
+Subproject 7e850b6bb0d5c4b7e25e94ce9fbbd68a0dbc1e1
diff --git a/fpga_interchange/fpga_interchange.cpp b/fpga_interchange/fpga_interchange.cpp
index 60331382..cf89ef1c 100644
--- a/fpga_interchange/fpga_interchange.cpp
+++ b/fpga_interchange/fpga_interchange.cpp
@@ -91,6 +91,25 @@ static PhysicalNetlist::PhysNetlist::RouteBranch::Builder emit_branch(
pip_obj.setForward(true);
pip_obj.setIsFixed(pip_place_strength.at(pip) >= STRENGTH_FIXED);
+ // If this is a pseudo PIP, get its name
+ if (pip_data.pseudo_cell_wires.size() != 0) {
+ for (int32_t wire_index : pip_data.pseudo_cell_wires) {
+ const TileWireInfoPOD &wire_data = tile_type.wire_data[wire_index];
+
+ if (wire_data.site == -1) {
+ continue;
+ }
+
+ const SiteInstInfoPOD & site_data = site_inst_info(ctx->chip_info, pip.tile, wire_data.site);
+ std::string site_name = site_data.site_name.get();
+ int site_idx = strings->get_index(site_name);
+ pip_obj.setSite(site_idx);
+
+ // It is assumed that a pseudo PIP traverses one site only
+ break;
+ }
+ }
+
return branch;
} else {
BelId bel;