Merge pull request #206 from smunaut/icetime

icetime: Split timing 'get_delay' functions per device
diff --git a/icetime/Makefile b/icetime/Makefile
index b1cd18d..6d9ac4f 100644
--- a/icetime/Makefile
+++ b/icetime/Makefile
@@ -8,6 +8,8 @@
 
 all: icetime$(EXE)
 
+CHIPS=lp384 lp1k lp8k hx1k hx8k up5k
+
 ifeq ($(EXE),.js)
 icetime$(EXE): | share/$(CHIPDB_SUBDIR)/chipdb-384.txt share/$(CHIPDB_SUBDIR)/chipdb-1k.txt share/$(CHIPDB_SUBDIR)/chipdb-8k.txt share/$(CHIPDB_SUBDIR)/chipdb-5k.txt
 
@@ -26,15 +28,11 @@
 override LDFLAGS += --embed-file share
 endif
 
-icetime$(EXE): icetime.o iceutil.o
+icetime$(EXE): icetime.o iceutil.o $(addsuffix .o, $(addprefix timings-, $(CHIPS)))
 	$(CXX) -o $@ $(LDFLAGS) $^ $(LDLIBS)
 
-icetime.o: icetime.cc timings.inc
-iceutil.o: iceutil.cc
-
-timings.inc: timings.py ../icefuzz/timings_*.txt
-	python3 timings.py > timings.inc.new
-	mv timings.inc.new timings.inc
+timings-%.cc: timings.py ../icefuzz/timings_%.txt
+	python3 timings.py $* > $@
 
 install: all
 	mkdir -p $(DESTDIR)$(PREFIX)/bin
@@ -67,7 +65,7 @@
 show: show0 show1 show2 show3 show4 show5 show6 show7 show8 show9
 
 clean:
-	rm -f icetime$(EXE) icetime.exe timings.inc *.o *.d
+	rm -f icetime$(EXE) icetime.exe *.o *.d
 	rm -rf test[0-9]*
 
 -include *.d
diff --git a/icetime/icetime.cc b/icetime/icetime.cc
index e7c0cd7..2feedfe 100644
--- a/icetime/icetime.cc
+++ b/icetime/icetime.cc
@@ -746,7 +746,12 @@
 	return inports_map.at(cell_type);
 }
 
-#include "timings.inc"
+double get_delay_lp384(std::string cell_type, std::string in_port, std::string out_port);
+double get_delay_lp1k(std::string cell_type, std::string in_port, std::string out_port);
+double get_delay_lp8k(std::string cell_type, std::string in_port, std::string out_port);
+double get_delay_hx1k(std::string cell_type, std::string in_port, std::string out_port);
+double get_delay_hx8k(std::string cell_type, std::string in_port, std::string out_port);
+double get_delay_up5k(std::string cell_type, std::string in_port, std::string out_port);
 
 double get_delay(std::string cell_type, std::string in_port, std::string out_port)
 {
diff --git a/icetime/timings.py b/icetime/timings.py
index 7ac2a7b..604dbcd 100644
--- a/icetime/timings.py
+++ b/icetime/timings.py
@@ -1,8 +1,10 @@
 #!/usr/bin/env python3
 
 import re
+import sys
 
 print("// auto-generated by timings.py from ../icefuzz/timings_*.txt")
+print("#include <string>")
 
 def timings_to_c(chip, f):
     print("")
@@ -47,6 +49,11 @@
     print("  exit(1);")
     print("}")
 
-for db in "lp384 lp1k lp8k hx1k hx8k up5k".split():
+if len(sys.argv) >= 2:
+	chips = sys.argv[1:]
+else:
+	chips = "lp384 lp1k lp8k hx1k hx8k up5k".split()
+
+for db in chips:
     with open("../icefuzz/timings_%s.txt" % db, "r") as f:
         timings_to_c(db, f);