Compare commits

...

2 Commits

Author SHA1 Message Date
Miodrag Milanović a530283600
Cleanup Context API (#1593)
* Cleanup Context API

* Remove exit to prvent crash
2025-10-23 14:44:14 +02:00
YRabbit c133d00e2e
Gowin. Take the arch arguments directly. (#1592)
Since ctx->getArchArgs() no longer returns architecture-specific
arguments, we read the args field directly.

Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
2025-10-23 07:58:01 +02:00
6 changed files with 6 additions and 16 deletions

View File

@ -39,15 +39,7 @@ struct Context : Arch, DeterministicRNG
// True when detailed per-net timing is to be stored / reported
bool detailed_timing_report = false;
ArchArgs arch_args;
Context(ArchArgs args) : Arch(args)
{
BaseCtx::as_ctx = this;
arch_args = args;
}
ArchArgs getArchArgs() { return arch_args; }
Context(ArchArgs args) : Arch(args) { BaseCtx::as_ctx = this; }
// --------------------------------------------------------------

View File

@ -3,8 +3,8 @@
#define NOMINMAX
#include <windows.h>
#endif
#include <filesystem>
#include <boost/iostreams/device/mapped_file.hpp>
#include <filesystem>
#include "embed.h"
#include "nextpnr.h"

View File

@ -368,7 +368,7 @@ void BaseMainWindow::open_json()
if (!fileName.isEmpty()) {
disableActions();
if (ctx->settings.find(ctx->id("synth")) == ctx->settings.end()) {
ArchArgs chipArgs = ctx->getArchArgs();
ArchArgs chipArgs = ctx->args;
ctx = std::unique_ptr<Context>(new Context(chipArgs));
Q_EMIT contextChanged(ctx.get());
}

View File

@ -20,7 +20,6 @@
#include "mainwindow.h"
#include <QMessageBox>
#include <cstdlib>
static void initMainResource() { Q_INIT_RESOURCE(nextpnr); }
@ -46,7 +45,6 @@ void MainWindow::new_proj()
{
QMessageBox::critical(0, "Error",
"Creating a new project not supported in himbächel mode, please re-start from command line.");
std::exit(1);
}
NEXTPNR_NAMESPACE_END

View File

@ -179,7 +179,7 @@ void GowinImpl::init(Context *ctx)
gwu.init(ctx);
const ArchArgs &args = ctx->getArchArgs();
const ArchArgs &args = ctx->args;
// package and speed class
std::regex speedre = std::regex("(.*)(C[0-9]/I[0-9])$");

View File

@ -2696,7 +2696,7 @@ struct GowinPacker
divide_sdp(ci, new_cells);
} else {
log_error("The fix for SDP when ports A and B have different bit widths has not yet been implemented. "
"Cell'%s'\n",
"Cell: '%s'\n",
ci->type.c_str(ctx));
}
}
@ -3934,7 +3934,7 @@ struct GowinPacker
pincfg_cell->connectPort(port, ctx->nets.at(ctx->id("$PACKER_VCC")).get());
}
const ArchArgs &args = ctx->getArchArgs();
const ArchArgs &args = ctx->args;
pincfg_cell->addInput(id_SSPI);
if (args.options.count("sspi_as_gpio")) {