aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch.h
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-07-20 17:13:26 +0200
committerClifford Wolf <clifford@clifford.at>2018-07-20 17:13:26 +0200
commite16b4a325e2b0721e29cba93804923dedf74a68c (patch)
treea80aa31ed8be848d460cd90410a91f24da14cea9 /ecp5/arch.h
parentc0f1af87f6c1c6843e536a87ef88e39fa3428c5b (diff)
parent6c835d76f27af79813299419780c039eb2a8b02e (diff)
downloadnextpnr-e16b4a325e2b0721e29cba93804923dedf74a68c.tar.gz
nextpnr-e16b4a325e2b0721e29cba93804923dedf74a68c.tar.bz2
nextpnr-e16b4a325e2b0721e29cba93804923dedf74a68c.zip
Merge branch 'master' of gitlab.com:SymbioticEDA/nextpnr into gridapi
Diffstat (limited to 'ecp5/arch.h')
-rw-r--r--ecp5/arch.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/ecp5/arch.h b/ecp5/arch.h
index 4bb71b47..944aedea 100644
--- a/ecp5/arch.h
+++ b/ecp5/arch.h
@@ -96,13 +96,36 @@ NPNR_PACKED_STRUCT(struct LocationTypePOD {
RelPtr<PipInfoPOD> pip_data;
});
+NPNR_PACKED_STRUCT(struct PIOInfoPOD {
+ Location abs_loc;
+ int32_t bel_index;
+ RelPtr<char> function_name;
+ int16_t bank;
+ int16_t padding;
+});
+
+NPNR_PACKED_STRUCT(struct PackagePinPOD {
+ RelPtr<char> name;
+ Location abs_loc;
+ int32_t bel_index;
+});
+
+NPNR_PACKED_STRUCT(struct PackageInfoPOD {
+ RelPtr<char> name;
+ int32_t num_pins;
+ RelPtr<PackagePinPOD> pin_data;
+});
+
NPNR_PACKED_STRUCT(struct ChipInfoPOD {
int32_t width, height;
int32_t num_tiles;
int32_t num_location_types;
+ int32_t num_packages, num_pios;
RelPtr<LocationTypePOD> locations;
RelPtr<int32_t> location_type;
RelPtr<RelPtr<char>> tiletype_names;
+ RelPtr<PackageInfoPOD> package_info;
+ RelPtr<PIOInfoPOD> pio_info;
});
#if defined(_MSC_VER)
@@ -340,6 +363,7 @@ struct ArchArgs
struct Arch : BaseCtx
{
const ChipInfoPOD *chip_info;
+ const PackageInfoPOD *package_info;
mutable std::unordered_map<IdString, BelId> bel_by_name;
mutable std::unordered_map<IdString, WireId> wire_by_name;