Add support for reading from config
This commit is contained in:
parent
19f5d24b79
commit
7f98c33d6b
@ -192,8 +192,55 @@ std::ostream &operator<<(std::ostream &out, const ChipConfig &cc)
|
|||||||
out << std::endl;
|
out << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::istream &operator>>(std::istream &in, ChipConfig &cc)
|
||||||
|
{
|
||||||
|
while (!skip_check_eof(in)) {
|
||||||
|
std::string verb;
|
||||||
|
in >> verb;
|
||||||
|
if (verb == ".device") {
|
||||||
|
in >> cc.chip_name;
|
||||||
|
} else if (verb == ".config") {
|
||||||
|
int die;
|
||||||
|
in >> die;
|
||||||
|
TileConfig tc;
|
||||||
|
in >> tc;
|
||||||
|
cc.configs.emplace(die, tc);
|
||||||
|
} else if (verb == ".tile") {
|
||||||
|
CfgLoc loc;
|
||||||
|
in >> loc.die;
|
||||||
|
in >> loc.x;
|
||||||
|
in >> loc.y;
|
||||||
|
TileConfig tc;
|
||||||
|
in >> tc;
|
||||||
|
cc.tiles.emplace(loc, tc);
|
||||||
|
} else if (verb == ".bram") {
|
||||||
|
CfgLoc loc;
|
||||||
|
in >> loc.die;
|
||||||
|
in >> loc.x;
|
||||||
|
in >> loc.y;
|
||||||
|
TileConfig tc;
|
||||||
|
in >> tc;
|
||||||
|
cc.brams.emplace(loc, tc);
|
||||||
|
} else if (verb == ".bram_init") {
|
||||||
|
CfgLoc loc;
|
||||||
|
in >> loc.die;
|
||||||
|
in >> loc.x;
|
||||||
|
in >> loc.y;
|
||||||
|
std::ios_base::fmtflags f(in.flags());
|
||||||
|
while (!skip_check_eor(in)) {
|
||||||
|
uint16_t value;
|
||||||
|
in >> std::hex >> value;
|
||||||
|
cc.bram_data[loc].push_back(value);
|
||||||
|
}
|
||||||
|
in.flags(f);
|
||||||
|
} else {
|
||||||
|
log_error("unrecognised config entry %s\n", verb.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return in;
|
||||||
|
}
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_END
|
NEXTPNR_NAMESPACE_END
|
||||||
|
@ -82,6 +82,7 @@ class ChipConfig
|
|||||||
};
|
};
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &out, const ChipConfig &cc);
|
std::ostream &operator<<(std::ostream &out, const ChipConfig &cc);
|
||||||
|
std::istream &operator>>(std::istream &in, ChipConfig &cc);
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_END
|
NEXTPNR_NAMESPACE_END
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user