aboutsummaryrefslogtreecommitdiffstats
path: root/mistral/main.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-05-08 11:00:58 +0100
committergatecat <gatecat@ds0.me>2021-05-15 14:54:33 +0100
commit879ac39e53c76558766460cfa948d97227119f37 (patch)
treeed6955d396152ab47b9e54550279afecba8784c9 /mistral/main.cc
parent29386822955f072e6472ae4ab42e2bd16858e3c5 (diff)
downloadnextpnr-879ac39e53c76558766460cfa948d97227119f37.tar.gz
nextpnr-879ac39e53c76558766460cfa948d97227119f37.tar.bz2
nextpnr-879ac39e53c76558766460cfa948d97227119f37.zip
mistral: Renamed arch from cyclonev
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'mistral/main.cc')
-rw-r--r--mistral/main.cc86
1 files changed, 86 insertions, 0 deletions
diff --git a/mistral/main.cc b/mistral/main.cc
new file mode 100644
index 00000000..702b4b7e
--- /dev/null
+++ b/mistral/main.cc
@@ -0,0 +1,86 @@
+/*
+ * nextpnr -- Next Generation Place and Route
+ *
+ * Copyright (C) 2021 gatecat <gatecat@ds0.me>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
+
+#ifdef MAIN_EXECUTABLE
+
+#include <fstream>
+#include "command.h"
+#include "design_utils.h"
+#include "jsonwrite.h"
+#include "log.h"
+#include "timing.h"
+
+USING_NEXTPNR_NAMESPACE
+
+class MistralCommandHandler : public CommandHandler
+{
+ public:
+ MistralCommandHandler(int argc, char **argv);
+ virtual ~MistralCommandHandler(){};
+ std::unique_ptr<Context> createContext(std::unordered_map<std::string, Property> &values) override;
+ void setupArchContext(Context *ctx) override{};
+ void customBitstream(Context *ctx) override;
+ void customAfterLoad(Context *ctx) override;
+
+ protected:
+ po::options_description getArchOptions() override;
+};
+
+MistralCommandHandler::MistralCommandHandler(int argc, char **argv) : CommandHandler(argc, argv) {}
+
+po::options_description MistralCommandHandler::getArchOptions()
+{
+ po::options_description specific("Architecture specific options");
+ 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)");
+ return specific;
+}
+
+void MistralCommandHandler::customBitstream(Context *ctx)
+{
+ // TODO: rbf gen via mistral
+}
+
+std::unique_ptr<Context> MistralCommandHandler::createContext(std::unordered_map<std::string, Property> &values)
+{
+ ArchArgs chipArgs;
+ if (!vm.count("mistral")) {
+ log_error("mistral must be specified on the command line\n");
+ }
+ if (!vm.count("device")) {
+ log_error("device must be specified on the command line (e.g. --device 5CSEBA6U23I7)\n");
+ }
+ chipArgs.mistral_root = vm["mistral"].as<std::string>();
+ chipArgs.device = vm["device"].as<std::string>();
+ auto ctx = std::unique_ptr<Context>(new Context(chipArgs));
+ return ctx;
+}
+
+void MistralCommandHandler::customAfterLoad(Context *ctx)
+{
+ // TODO: qsf parsing
+}
+
+int main(int argc, char *argv[])
+{
+ MistralCommandHandler handler(argc, argv);
+ return handler.exec();
+}
+
+#endif