aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/bitstream.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-02-08 13:37:46 +0000
committerDavid Shah <dave@ds0.me>2019-02-08 13:44:15 +0000
commit882775acef73e63db3a9a6f9c1f4df192071ff44 (patch)
treeceb5528da3123d2492a45b007da67746c5ef0d7f /ecp5/bitstream.cc
parentdb990d21752ad6eaecc0ca809d8eef4a910cfb03 (diff)
downloadnextpnr-882775acef73e63db3a9a6f9c1f4df192071ff44.tar.gz
nextpnr-882775acef73e63db3a9a6f9c1f4df192071ff44.tar.bz2
nextpnr-882775acef73e63db3a9a6f9c1f4df192071ff44.zip
ecp5: Embed baseconfig
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'ecp5/bitstream.cc')
-rw-r--r--ecp5/bitstream.cc44
1 files changed, 42 insertions, 2 deletions
diff --git a/ecp5/bitstream.cc b/ecp5/bitstream.cc
index bec33f67..cc2b2894 100644
--- a/ecp5/bitstream.cc
+++ b/ecp5/bitstream.cc
@@ -34,6 +34,18 @@
NEXTPNR_NAMESPACE_BEGIN
+namespace BaseConfigs {
+void config_empty_lfe5u_25f(ChipConfig &cc);
+void config_empty_lfe5u_45f(ChipConfig &cc);
+void config_empty_lfe5u_85f(ChipConfig &cc);
+void config_empty_lfe5um_25f(ChipConfig &cc);
+void config_empty_lfe5um_45f(ChipConfig &cc);
+void config_empty_lfe5um_85f(ChipConfig &cc);
+void config_empty_lfe5um5g_25f(ChipConfig &cc);
+void config_empty_lfe5um5g_45f(ChipConfig &cc);
+void config_empty_lfe5um5g_85f(ChipConfig &cc);
+} // namespace BaseConfigs
+
// Convert an absolute wire name to a relative Trellis one
static std::string get_trellis_wirename(Context *ctx, Location loc, WireId wire)
{
@@ -538,8 +550,36 @@ void write_bitstream(Context *ctx, std::string base_config_file, std::string tex
}
config_file >> cc;
} else {
- cc.chip_name = ctx->getChipName();
- // TODO: .bit metadata
+ switch (ctx->args.type) {
+ case ArchArgs::LFE5U_25F:
+ BaseConfigs::config_empty_lfe5u_25f(cc);
+ break;
+ case ArchArgs::LFE5U_45F:
+ BaseConfigs::config_empty_lfe5u_45f(cc);
+ break;
+ case ArchArgs::LFE5U_85F:
+ BaseConfigs::config_empty_lfe5u_85f(cc);
+ break;
+ case ArchArgs::LFE5UM_25F:
+ BaseConfigs::config_empty_lfe5um_25f(cc);
+ break;
+ case ArchArgs::LFE5UM_45F:
+ BaseConfigs::config_empty_lfe5um_45f(cc);
+ break;
+ case ArchArgs::LFE5UM_85F:
+ BaseConfigs::config_empty_lfe5um_85f(cc);
+ break;
+ case ArchArgs::LFE5UM5G_25F:
+ BaseConfigs::config_empty_lfe5um5g_25f(cc);
+ break;
+ case ArchArgs::LFE5UM5G_45F:
+ BaseConfigs::config_empty_lfe5um5g_45f(cc);
+ break;
+ case ArchArgs::LFE5UM5G_85F:
+ BaseConfigs::config_empty_lfe5um5g_85f(cc);
+ default:
+ NPNR_ASSERT_FALSE("Unsupported device type");
+ }
}
// Clear out DCU tieoffs in base config if DCU used