From 472fd1a56f0323c3fe43b8f222bdb8b4bcbc07d5 Mon Sep 17 00:00:00 2001 From: Sylvain Munaut Date: Wed, 20 Mar 2019 11:38:36 +0100 Subject: icetime: Split timing 'get_delay' functions per device This should reduce the memory requirement during build of icetime, not trying to compile one huge file all at once Signed-off-by: Sylvain Munaut --- icetime/Makefile | 14 ++++++-------- icetime/icetime.cc | 7 ++++++- icetime/timings.py | 9 ++++++++- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/icetime/Makefile b/icetime/Makefile index b1cd18d..6d9ac4f 100644 --- a/icetime/Makefile +++ b/icetime/Makefile @@ -8,6 +8,8 @@ endif 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 @@ share/$(CHIPDB_SUBDIR)/chipdb-5k.txt: ../icebox/chipdb-5k.txt 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 @@ test: test0 test1 test2 test3 test4 test5 test6 test7 test8 test9 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 @@ const std::set &get_inports(std::string cell_type) 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 ") def timings_to_c(chip, f): print("") @@ -47,6 +49,11 @@ def timings_to_c(chip, f): 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); -- cgit v1.2.3