aboutsummaryrefslogtreecommitdiffstats
path: root/fpga_interchange
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-04-02 09:46:21 +0100
committerGitHub <noreply@github.com>2021-04-02 09:46:21 +0100
commitbb6079133c9b0de9db3e39735d160c1a161ec981 (patch)
treec73ef33d274dba1c7c715b9fbe9af867feae4686 /fpga_interchange
parentec98fee1eefd61d17ccfaf58bae72e1cc0f9e5e3 (diff)
parent3a85088d6653b11abdf039c334814da97d0e2949 (diff)
downloadnextpnr-bb6079133c9b0de9db3e39735d160c1a161ec981.tar.gz
nextpnr-bb6079133c9b0de9db3e39735d160c1a161ec981.tar.bz2
nextpnr-bb6079133c9b0de9db3e39735d160c1a161ec981.zip
Merge pull request #658 from litghost/increment_chipdb
[interchange] Update to v6 of FPGA interchange chipdb.
Diffstat (limited to 'fpga_interchange')
-rw-r--r--fpga_interchange/arch.cc7
-rw-r--r--fpga_interchange/chipdb.h3
-rw-r--r--fpga_interchange/luts.h4
3 files changed, 12 insertions, 2 deletions
diff --git a/fpga_interchange/arch.cc b/fpga_interchange/arch.cc
index 2e1c452a..0d6cc4de 100644
--- a/fpga_interchange/arch.cc
+++ b/fpga_interchange/arch.cc
@@ -247,10 +247,13 @@ Arch::Arch(ArchArgs args) : args(args)
LutElement &element = elements.back();
element.width = lut_element.width;
for (auto &lut_bel : lut_element.lut_bels) {
- auto result = element.lut_bels.emplace(IdString(lut_bel.name), LutBel());
+ IdString name(lut_bel.name);
+ auto result = element.lut_bels.emplace(name, LutBel());
NPNR_ASSERT(result.second);
LutBel &lut = result.first->second;
+ lut.name = name;
+
lut.low_bit = lut_bel.low_bit;
lut.high_bit = lut_bel.high_bit;
@@ -260,6 +263,8 @@ Arch::Arch(ArchArgs args) : args(args)
lut.pins.push_back(pin);
lut.pin_to_index[pin] = i;
}
+
+ lut.output_pin = IdString(lut_bel.out_pin);
}
element.compute_pin_order();
diff --git a/fpga_interchange/chipdb.h b/fpga_interchange/chipdb.h
index d78e3b61..6c7b8c83 100644
--- a/fpga_interchange/chipdb.h
+++ b/fpga_interchange/chipdb.h
@@ -34,7 +34,7 @@ NEXTPNR_NAMESPACE_BEGIN
* kExpectedChipInfoVersion
*/
-static constexpr int32_t kExpectedChipInfoVersion = 5;
+static constexpr int32_t kExpectedChipInfoVersion = 6;
// Flattened site indexing.
//
@@ -133,6 +133,7 @@ NPNR_PACKED_STRUCT(struct LutBelPOD {
RelSlice<int32_t> pins; // constid
uint32_t low_bit;
uint32_t high_bit;
+ int32_t out_pin; // constid
});
NPNR_PACKED_STRUCT(struct LutElementPOD {
diff --git a/fpga_interchange/luts.h b/fpga_interchange/luts.h
index dec5a9d6..5a46b3ed 100644
--- a/fpga_interchange/luts.h
+++ b/fpga_interchange/luts.h
@@ -51,10 +51,14 @@ struct LutCell
struct LutBel
{
+ IdString name;
+
// LUT BEL pins to LUT array index.
std::vector<IdString> pins;
std::unordered_map<IdString, size_t> pin_to_index;
+ IdString output_pin;
+
// What part of the LUT equation does this LUT output use?
// This assumes contiguous LUT bits.
uint32_t low_bit;