aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2017-09-04 19:48:40 +0200
committerGitHub <noreply@github.com>2017-09-04 19:48:40 +0200
commitcc3c1906abe64a52ffd84a31558d87de2b74bc31 (patch)
tree4c36d343b7e41b3c84d03decff380251e3fb2410
parent55b7810abe3e15446e9c18b41a68a424b1698e7e (diff)
parenta684b28b55f1ca938bdf6954e74952c7b61e8477 (diff)
downloadicestorm-cc3c1906abe64a52ffd84a31558d87de2b74bc31.tar.gz
icestorm-cc3c1906abe64a52ffd84a31558d87de2b74bc31.tar.bz2
icestorm-cc3c1906abe64a52ffd84a31558d87de2b74bc31.zip
Merge pull request #101 from rlutz/warmboot
Add support for non-warmboot images
-rw-r--r--icebox/icebox.py7
-rw-r--r--icepack/icepack.cc14
2 files changed, 21 insertions, 0 deletions
diff --git a/icebox/icebox.py b/icebox/icebox.py
index 982d088..41e8f12 100644
--- a/icebox/icebox.py
+++ b/icebox/icebox.py
@@ -26,6 +26,7 @@ class iceconfig:
self.max_x = 0
self.max_y = 0
self.device = ""
+ self.warmboot = True
self.logic_tiles = dict()
self.io_tiles = dict()
self.ramb_tiles = dict()
@@ -668,6 +669,10 @@ class iceconfig:
assert line[1] in ["1k", "5k", "8k", "384"]
self.device = line[1]
continue
+ if line[0] == ".warmboot":
+ assert line[1] in ["disabled", "enabled"]
+ self.warmboot = line[1] == "enabled"
+ continue
if line[0] == ".sym":
self.symbols.setdefault(int(line[1]), set()).add(line[2])
continue
@@ -680,6 +685,8 @@ class iceconfig:
def write_file(self, filename):
with open(filename, "w") as f:
print(".device %s" % self.device, file=f)
+ if not self.warmboot:
+ print(".warmboot disabled", file=f)
for y in range(self.max_y+1):
for x in range(self.max_x+1):
if self.tile_pos(x, y) is not None:
diff --git a/icepack/icepack.cc b/icepack/icepack.cc
index 4374452..2eac9c6 100644
--- a/icepack/icepack.cc
+++ b/icepack/icepack.cc
@@ -649,6 +649,18 @@ void FpgaConfig::read_ascii(std::istream &ifs)
continue;
}
+ if (command == ".warmboot")
+ {
+ is >> this->warmboot;
+
+ if (this->warmboot != "disabled" &&
+ this->warmboot != "enabled")
+ error("Unknown warmboot setting '%s'.\n",
+ this->warmboot.c_str());
+
+ continue;
+ }
+
if (command == ".io_tile" || command == ".logic_tile" || command == ".ramb_tile" || command == ".ramt_tile")
{
if (!got_device)
@@ -764,6 +776,8 @@ void FpgaConfig::write_ascii(std::ostream &ofs) const
}
ofs << stringf("\n.device %s\n", this->device.c_str());
+ if (this->warmboot != "enabled")
+ ofs << stringf(".warmboot %s\n", this->warmboot.c_str());
typedef std::tuple<int, int, int> tile_bit_t;
std::set<tile_bit_t> tile_bits;