diff options
author | David Shah <dave@ds0.me> | 2019-07-03 12:39:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-03 12:39:38 +0100 |
commit | 8f2813279c5888e655ee6f50f198cf8cb11b0b50 (patch) | |
tree | 0aac9464d3ea87d37cd0689903ba08094b7c0984 /generic | |
parent | ff958830d1097b9bfa3c3b34094e671741ef563d (diff) | |
parent | e27dc41a7646fd3377d2400059c916fbcc35119c (diff) | |
download | nextpnr-8f2813279c5888e655ee6f50f198cf8cb11b0b50.tar.gz nextpnr-8f2813279c5888e655ee6f50f198cf8cb11b0b50.tar.bz2 nextpnr-8f2813279c5888e655ee6f50f198cf8cb11b0b50.zip |
Merge pull request #284 from YosysHQ/json_write
Initial support for writing to json files from nextpnr.
Diffstat (limited to 'generic')
-rw-r--r-- | generic/arch.cc | 13 | ||||
-rw-r--r-- | generic/main.cc | 10 | ||||
-rw-r--r-- | generic/pack.cc | 1 | ||||
-rw-r--r-- | generic/project.cc | 37 |
4 files changed, 20 insertions, 41 deletions
diff --git a/generic/arch.cc b/generic/arch.cc index 5617fa63..fa3c825d 100644 --- a/generic/arch.cc +++ b/generic/arch.cc @@ -496,13 +496,22 @@ bool Arch::place() std::string placer = str_or_default(settings, id("placer"), defaultPlacer); // FIXME: No HeAP because it needs a list of IO buffers if (placer == "sa") { - return placer1(getCtx(), Placer1Cfg(getCtx())); + bool retVal = placer1(getCtx(), Placer1Cfg(getCtx())); + getCtx()->settings[getCtx()->id("place")] = "1"; + archInfoToAttributes(); + return retVal; } else { log_error("Generic architecture does not support placer '%s'\n", placer.c_str()); } } -bool Arch::route() { return router1(getCtx(), Router1Cfg(getCtx())); } +bool Arch::route() +{ + bool retVal = router1(getCtx(), Router1Cfg(getCtx())); + getCtx()->settings[getCtx()->id("route")] = "1"; + archInfoToAttributes(); + return retVal; +} // --------------------------------------------------------------- diff --git a/generic/main.cc b/generic/main.cc index c203f35c..ce1a51c7 100644 --- a/generic/main.cc +++ b/generic/main.cc @@ -32,7 +32,7 @@ class GenericCommandHandler : public CommandHandler public: GenericCommandHandler(int argc, char **argv); virtual ~GenericCommandHandler(){}; - std::unique_ptr<Context> createContext() override; + std::unique_ptr<Context> createContext(std::unordered_map<std::string, Property> &values) override; void setupArchContext(Context *ctx) override{}; void customBitstream(Context *ctx) override; @@ -51,8 +51,14 @@ po::options_description GenericCommandHandler::getArchOptions() void GenericCommandHandler::customBitstream(Context *ctx) {} -std::unique_ptr<Context> GenericCommandHandler::createContext() +std::unique_ptr<Context> GenericCommandHandler::createContext(std::unordered_map<std::string, Property> &values) { + ArchArgs chipArgs; + if (values.find("arch.name") != values.end()) { + std::string arch_name = values["arch.name"].str; + if (arch_name != "generic") + log_error("Unsuported architecture '%s'.\n", arch_name.c_str()); + } return std::unique_ptr<Context>(new Context(chipArgs)); } diff --git a/generic/pack.cc b/generic/pack.cc index 26ae9182..558eca7c 100644 --- a/generic/pack.cc +++ b/generic/pack.cc @@ -282,6 +282,7 @@ bool Arch::pack() pack_io(ctx); pack_lut_lutffs(ctx); pack_nonlut_ffs(ctx); + ctx->settings[ctx->id("pack")] = "1"; ctx->assignArchInfo(); log_info("Checksum: 0x%08x\n", ctx->checksum()); return true; diff --git a/generic/project.cc b/generic/project.cc deleted file mode 100644 index 342fcac3..00000000 --- a/generic/project.cc +++ /dev/null @@ -1,37 +0,0 @@ -/* - * nextpnr -- Next Generation Place and Route - * - * Copyright (C) 2018 Miodrag Milanovic <miodrag@symbioticeda.com> - * - * 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. - * - */ - -#include "project.h" -#include <boost/filesystem/convenience.hpp> -#include <fstream> -#include "log.h" - -NEXTPNR_NAMESPACE_BEGIN - -void ProjectHandler::saveArch(Context *ctx, pt::ptree &root, std::string path) {} - -std::unique_ptr<Context> ProjectHandler::createContext(pt::ptree &root) -{ - ArchArgs chipArgs; - return std::unique_ptr<Context>(new Context(chipArgs)); -} - -void ProjectHandler::loadArch(Context *ctx, pt::ptree &root, std::string path) {} - -NEXTPNR_NAMESPACE_END |