mirror of https://github.com/YosysHQ/icestorm.git
Merge pull request #101 from rlutz/warmboot
Add support for non-warmboot images
This commit is contained in:
commit
cc3c1906ab
|
|
@ -26,6 +26,7 @@ class iceconfig:
|
||||||
self.max_x = 0
|
self.max_x = 0
|
||||||
self.max_y = 0
|
self.max_y = 0
|
||||||
self.device = ""
|
self.device = ""
|
||||||
|
self.warmboot = True
|
||||||
self.logic_tiles = dict()
|
self.logic_tiles = dict()
|
||||||
self.io_tiles = dict()
|
self.io_tiles = dict()
|
||||||
self.ramb_tiles = dict()
|
self.ramb_tiles = dict()
|
||||||
|
|
@ -668,6 +669,10 @@ class iceconfig:
|
||||||
assert line[1] in ["1k", "5k", "8k", "384"]
|
assert line[1] in ["1k", "5k", "8k", "384"]
|
||||||
self.device = line[1]
|
self.device = line[1]
|
||||||
continue
|
continue
|
||||||
|
if line[0] == ".warmboot":
|
||||||
|
assert line[1] in ["disabled", "enabled"]
|
||||||
|
self.warmboot = line[1] == "enabled"
|
||||||
|
continue
|
||||||
if line[0] == ".sym":
|
if line[0] == ".sym":
|
||||||
self.symbols.setdefault(int(line[1]), set()).add(line[2])
|
self.symbols.setdefault(int(line[1]), set()).add(line[2])
|
||||||
continue
|
continue
|
||||||
|
|
@ -680,6 +685,8 @@ class iceconfig:
|
||||||
def write_file(self, filename):
|
def write_file(self, filename):
|
||||||
with open(filename, "w") as f:
|
with open(filename, "w") as f:
|
||||||
print(".device %s" % self.device, file=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 y in range(self.max_y+1):
|
||||||
for x in range(self.max_x+1):
|
for x in range(self.max_x+1):
|
||||||
if self.tile_pos(x, y) is not None:
|
if self.tile_pos(x, y) is not None:
|
||||||
|
|
|
||||||
|
|
@ -649,6 +649,18 @@ void FpgaConfig::read_ascii(std::istream &ifs)
|
||||||
continue;
|
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 (command == ".io_tile" || command == ".logic_tile" || command == ".ramb_tile" || command == ".ramt_tile")
|
||||||
{
|
{
|
||||||
if (!got_device)
|
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());
|
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;
|
typedef std::tuple<int, int, int> tile_bit_t;
|
||||||
std::set<tile_bit_t> tile_bits;
|
std::set<tile_bit_t> tile_bits;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue