nexus: Add main
Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
parent
259659c838
commit
1e940323b0
@ -90,7 +90,7 @@ Arch::Arch(ArchArgs args) : args(args)
|
||||
// Check database version and family
|
||||
if (db->version != bba_version) {
|
||||
log_error("Provided database version %d is %s than nextpnr version %d, please rebuild database/nextpnr.\n",
|
||||
db->version, (db->version > bba_version) ? "newer" : "older", bba_version);
|
||||
int(db->version), (db->version > bba_version) ? "newer" : "older", int(bba_version));
|
||||
}
|
||||
if (db->family.get() != family) {
|
||||
log_error("Database is for family '%s' but provided device is family '%s'.\n", db->family.get(),
|
||||
|
@ -37,10 +37,7 @@ template <typename T> struct RelPtr
|
||||
// reinterpret_cast<const char*>(this);
|
||||
// }
|
||||
|
||||
const T *get() const
|
||||
{
|
||||
return reinterpret_cast<const T *>(reinterpret_cast<const char *>(this) + int64_t(offset) * 4);
|
||||
}
|
||||
const T *get() const { return reinterpret_cast<const T *>(reinterpret_cast<const char *>(this) + offset); }
|
||||
|
||||
const T &operator[](size_t index) const { return get()[index]; }
|
||||
|
||||
|
74
nexus/main.cc
Normal file
74
nexus/main.cc
Normal file
@ -0,0 +1,74 @@
|
||||
/*
|
||||
* nextpnr -- Next Generation Place and Route
|
||||
*
|
||||
* Copyright (C) 2020 David Shah <dave@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 NexusCommandHandler : public CommandHandler
|
||||
{
|
||||
public:
|
||||
NexusCommandHandler(int argc, char **argv);
|
||||
virtual ~NexusCommandHandler(){};
|
||||
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;
|
||||
};
|
||||
|
||||
NexusCommandHandler::NexusCommandHandler(int argc, char **argv) : CommandHandler(argc, argv) {}
|
||||
|
||||
po::options_description NexusCommandHandler::getArchOptions()
|
||||
{
|
||||
po::options_description specific("Architecture specific options");
|
||||
specific.add_options()("chipdb", po::value<std::string>(), "name of chip database binary");
|
||||
specific.add_options()("device", po::value<std::string>(), "device name");
|
||||
|
||||
return specific;
|
||||
}
|
||||
|
||||
void NexusCommandHandler::customBitstream(Context *ctx) {}
|
||||
|
||||
std::unique_ptr<Context> NexusCommandHandler::createContext(std::unordered_map<std::string, Property> &values)
|
||||
{
|
||||
ArchArgs chipArgs;
|
||||
chipArgs.chipdb = vm["chipdb"].as<std::string>();
|
||||
chipArgs.device = vm["device"].as<std::string>();
|
||||
return std::unique_ptr<Context>(new Context(chipArgs));
|
||||
}
|
||||
|
||||
void NexusCommandHandler::customAfterLoad(Context *ctx) {}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
NexusCommandHandler handler(argc, argv);
|
||||
return handler.exec();
|
||||
}
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user