aboutsummaryrefslogtreecommitdiffstats
path: root/mistral/main.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-05-09 19:48:04 +0100
committergatecat <gatecat@ds0.me>2021-05-15 14:54:33 +0100
commit27eb3be7dae5038099aab8299e0f1d9d675fd855 (patch)
tree7b85c007823fb8f50411a1deefc4353428fea307 /mistral/main.cc
parentad5e5f80ca4ad798d1afbddcae84e04f3a26f0e5 (diff)
downloadnextpnr-27eb3be7dae5038099aab8299e0f1d9d675fd855.tar.gz
nextpnr-27eb3be7dae5038099aab8299e0f1d9d675fd855.tar.bz2
nextpnr-27eb3be7dae5038099aab8299e0f1d9d675fd855.zip
mistral: Add stub RBF generation
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'mistral/main.cc')
-rw-r--r--mistral/main.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/mistral/main.cc b/mistral/main.cc
index d5816693..9147a68b 100644
--- a/mistral/main.cc
+++ b/mistral/main.cc
@@ -50,12 +50,24 @@ po::options_description MistralCommandHandler::getArchOptions()
specific.add_options()("mistral", po::value<std::string>(), "path to mistral root");
specific.add_options()("device", po::value<std::string>(), "device name (e.g. 5CSEBA6U23I7)");
specific.add_options()("qsf", po::value<std::string>(), "path to QSF constraints file");
+ specific.add_options()("rbf", po::value<std::string>(), "RBF bitstream to write");
+
return specific;
}
void MistralCommandHandler::customBitstream(Context *ctx)
{
- // TODO: rbf gen via mistral
+ if (vm.count("rbf")) {
+ std::string filename = vm["rbf"].as<std::string>();
+ ctx->build_bitstream();
+ std::vector<uint8_t> data;
+ ctx->cyclonev->rbf_save(data);
+
+ std::ofstream out(filename, std::ios::binary);
+ if (!out)
+ log_error("Failed to open output RBF file %s.\n", filename.c_str());
+ out.write(reinterpret_cast<const char *>(data.data()), data.size());
+ }
}
std::unique_ptr<Context> MistralCommandHandler::createContext(std::unordered_map<std::string, Property> &values)