Merge pull request #101 from rlutz/warmboot

Add support for non-warmboot images
This commit is contained in:
Clifford Wolf 2017-09-04 19:48:40 +02:00 committed by GitHub
commit cc3c1906ab
2 changed files with 21 additions and 0 deletions

View File

@ -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:

View File

@ -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;