aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2018-06-07 12:26:02 +0200
committerClifford Wolf <clifford@clifford.at>2018-06-07 12:26:02 +0200
commit8bfeaeacedeb09133b8fb157c876fb90f41f5676 (patch)
tree9ab097de7a22e25f09288595003c2ce2047b3124
parent9eeecf0e62d44c59f5f0a5243a47793369dd71c0 (diff)
downloadnextpnr-8bfeaeacedeb09133b8fb157c876fb90f41f5676.tar.gz
nextpnr-8bfeaeacedeb09133b8fb157c876fb90f41f5676.tar.bz2
nextpnr-8bfeaeacedeb09133b8fb157c876fb90f41f5676.zip
Add ICE40_HX1K_ONLY config macro
Signed-off-by: Clifford Wolf <clifford@clifford.at>
-rw-r--r--ice40/chip.cc7
-rw-r--r--ice40/main.cc44
2 files changed, 43 insertions, 8 deletions
diff --git a/ice40/chip.cc b/ice40/chip.cc
index d1226b3a..d3388bc9 100644
--- a/ice40/chip.cc
+++ b/ice40/chip.cc
@@ -277,6 +277,12 @@ PortPin PortPinFromId(IdString id)
Chip::Chip(ChipArgs args)
{
+#ifdef ICE40_HX1K_ONLY
+ if (args.type == ChipArgs::HX1K) {
+ chip_info = chip_info_1k;
+ return;
+ }
+#else
if (args.type == ChipArgs::LP384) {
chip_info = chip_info_384;
return;
@@ -293,6 +299,7 @@ Chip::Chip(ChipArgs args)
fprintf(stderr, "Unsupported chip type\n");
exit(EXIT_FAILURE);
}
+#endif
abort();
}
diff --git a/ice40/main.cc b/ice40/main.cc
index da39c1e5..ae5c59b2 100644
--- a/ice40/main.cc
+++ b/ice40/main.cc
@@ -86,10 +86,11 @@ int main(int argc, char *argv[])
if (vm.count("help") || argc == 1)
{
+ help:
std::cout << basename(argv[0]) << " -- Next Generation Place and Route (git sha1 " GIT_COMMIT_HASH_STR ")\n";
std::cout << "\n";
std::cout << options << "\n";
- return 1;
+ return argc != 1;
}
if (vm.count("version"))
@@ -101,25 +102,52 @@ int main(int argc, char *argv[])
}
ChipArgs chipArgs;
- chipArgs.type = ChipArgs::HX1K;
- if (vm.count("lp384"))
+ if (vm.count("lp384")) {
+ if (chipArgs.type != ChipArgs::NONE)
+ goto help;
chipArgs.type = ChipArgs::LP384;
+ }
- if (vm.count("lp1k"))
+ if (vm.count("lp1k")) {
+ if (chipArgs.type != ChipArgs::NONE)
+ goto help;
chipArgs.type = ChipArgs::LP1K;
+ }
- if (vm.count("lp8k"))
+ if (vm.count("lp8k")) {
+ if (chipArgs.type != ChipArgs::NONE)
+ goto help;
chipArgs.type = ChipArgs::LP8K;
+ }
- if (vm.count("hx1k"))
+ if (vm.count("hx1k")) {
+ if (chipArgs.type != ChipArgs::NONE)
+ goto help;
chipArgs.type = ChipArgs::HX1K;
+ }
- if (vm.count("hx8k"))
+ if (vm.count("hx8k")) {
+ if (chipArgs.type != ChipArgs::NONE)
+ goto help;
chipArgs.type = ChipArgs::HX8K;
+ }
- if (vm.count("up5k"))
+ if (vm.count("up5k")) {
+ if (chipArgs.type != ChipArgs::NONE)
+ goto help;
chipArgs.type = ChipArgs::UP5K;
+ }
+
+ if (chipArgs.type == ChipArgs::NONE)
+ chipArgs.type = ChipArgs::HX1K;
+
+#ifdef ICE40_HX1K_ONLY
+ if (chipArgs.type != ChipArgs::HX1K) {
+ std::cout << "This version of nextpnr-ice40 is built with HX1K-support only.\n";
+ return 1;
+ }
+#endif
Design design(chipArgs);
init_python(argv[0]);