diff options
-rw-r--r-- | icepack/icepack.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/icepack/icepack.cc b/icepack/icepack.cc index b5db4c5..85a37d6 100644 --- a/icepack/icepack.cc +++ b/icepack/icepack.cc @@ -42,7 +42,7 @@ using std::vector; using std::string; -int log_level = 0; +int log_level = 1; // 0; #define log(...) fprintf(stderr, __VA_ARGS__); #define info(...) do { if (log_level > 0) fprintf(stderr, __VA_ARGS__); } while (0) #define debug(...) do { if (log_level > 1) fprintf(stderr, __VA_ARGS__); } while (0) @@ -390,7 +390,9 @@ void FpgaConfig::read_bits(std::istream &ifs) } } - if (this->cram_width == 332 && this->cram_height == 144) + if (this->cram_width == 182 && this->cram_height == 80) + this->device = "384"; + else if (this->cram_width == 332 && this->cram_height == 144) this->device = "1k"; else if (this->cram_width == 872 && this->cram_height == 272) this->device = "8k"; @@ -598,6 +600,12 @@ void FpgaConfig::read_ascii(std::istream &ifs) is >> this->device; + if (this->device == "384") { + this->cram_width = 182; + this->cram_height = 80; + this->bram_width = 0; + this->bram_height = 0; + } else if (this->device == "1k") { this->cram_width = 332; this->cram_height = 144; @@ -857,6 +865,7 @@ void FpgaConfig::write_bram_pbm(std::ostream &ofs, int bank_num) const int FpgaConfig::chip_width() const { + if (this->device == "384") return 6; if (this->device == "1k") return 12; if (this->device == "8k") return 32; panic("Unknown chip type '%s'.\n", this->device.c_str()); @@ -864,6 +873,7 @@ int FpgaConfig::chip_width() const int FpgaConfig::chip_height() const { + if (this->device == "384") return 8; if (this->device == "1k") return 16; if (this->device == "8k") return 32; panic("Unknown chip type '%s'.\n", this->device.c_str()); @@ -871,6 +881,7 @@ int FpgaConfig::chip_height() const vector<int> FpgaConfig::chip_cols() const { + if (this->device == "384") return vector<int>({18, 54, 54, 54, 54}); if (this->device == "1k") return vector<int>({18, 54, 54, 42, 54, 54, 54}); if (this->device == "8k") return vector<int>({18, 54, 54, 54, 54, 54, 54, 54, 42, 54, 54, 54, 54, 54, 54, 54, 54}); panic("Unknown chip type '%s'.\n", this->device.c_str()); @@ -881,6 +892,8 @@ string FpgaConfig::tile_type(int x, int y) const if ((x == 0 || x == this->chip_width()+1) && (y == 0 || y == this->chip_height()+1)) return "corner"; if ((x == 0 || x == this->chip_width()+1) || (y == 0 || y == this->chip_height()+1)) return "io"; + if (this->device == "384") return "logic"; + if (this->device == "1k") { if (x == 3 || x == 10) return y % 2 == 1 ? "ramb" : "ramt"; return "logic"; |