aboutsummaryrefslogtreecommitdiffstats
path: root/generic
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-07-03 12:39:38 +0100
committerGitHub <noreply@github.com>2019-07-03 12:39:38 +0100
commit8f2813279c5888e655ee6f50f198cf8cb11b0b50 (patch)
tree0aac9464d3ea87d37cd0689903ba08094b7c0984 /generic
parentff958830d1097b9bfa3c3b34094e671741ef563d (diff)
parente27dc41a7646fd3377d2400059c916fbcc35119c (diff)
downloadnextpnr-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.cc13
-rw-r--r--generic/main.cc10
-rw-r--r--generic/pack.cc1
-rw-r--r--generic/project.cc37
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