| #ifndef CHIPCONFIG_H |
| #define CHIPCONFIG_H |
| |
| #include "TileConfig.hpp" |
| #include <map> |
| #include <vector> |
| #include <string> |
| |
| using namespace std; |
| |
| namespace Trellis { |
| |
| class Chip; |
| |
| // A group of tiles to configure at once for a particular feature that is split across tiles |
| // TileGroups are currently for non-routing configuration only |
| struct TileGroup |
| { |
| vector<string> tiles; |
| TileConfig config; |
| }; |
| |
| // This represents the configuration of a chip at a high level |
| class ChipConfig |
| { |
| public: |
| string chip_name; |
| vector<string> metadata; |
| map<string, TileConfig> tiles; |
| vector<TileGroup> tilegroups; |
| |
| // Block RAM initialisation (WIP) |
| map<uint16_t, vector<uint16_t>> bram_data; |
| |
| string to_string() const; |
| static ChipConfig from_string(const string &config); |
| Chip to_chip() const; |
| static ChipConfig from_chip(const Chip &chip); |
| }; |
| |
| } |
| |
| #endif |