mirror of https://github.com/YosysHQ/nextpnr.git
Added no-cpe-cp option
This commit is contained in:
parent
abbf9cb017
commit
430325f7db
|
|
@ -46,6 +46,7 @@ po::options_description GateMateImpl::getUArchOptions()
|
||||||
"multi-die clock placement strategy (mirror, full or clk1)");
|
"multi-die clock placement strategy (mirror, full or clk1)");
|
||||||
specific.add_options()("force_die", po::value<std::string>(), "force specific die (example 1A,1B...)");
|
specific.add_options()("force_die", po::value<std::string>(), "force specific die (example 1A,1B...)");
|
||||||
specific.add_options()("no-clk-cp", "do not use CP lines for CLK and EN");
|
specific.add_options()("no-clk-cp", "do not use CP lines for CLK and EN");
|
||||||
|
specific.add_options()("no-cpe-cp", "do not use CP lines pass through CPE");
|
||||||
specific.add_options()("no-bridges", "do not use CPE in bridge mode");
|
specific.add_options()("no-bridges", "do not use CPE in bridge mode");
|
||||||
return specific;
|
return specific;
|
||||||
}
|
}
|
||||||
|
|
@ -117,6 +118,7 @@ void GateMateImpl::init_database(Arch *arch)
|
||||||
: "");
|
: "");
|
||||||
arch->set_speed_grade(speed_grade);
|
arch->set_speed_grade(speed_grade);
|
||||||
use_cp_for_clk = args.options.count("no-clk-cp") == 0;
|
use_cp_for_clk = args.options.count("no-clk-cp") == 0;
|
||||||
|
use_cp_for_cpe = args.options.count("no-cpe-cp") == 0;
|
||||||
use_bridges = args.options.count("no-bridges") == 0;
|
use_bridges = args.options.count("no-bridges") == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -371,23 +373,21 @@ bool GateMateImpl::checkPipAvail(PipId pip) const
|
||||||
if (extra_data.value == 1 && IdString(extra_data.name).in(id_C_CLKSEL, id_C_ENSEL))
|
if (extra_data.value == 1 && IdString(extra_data.name).in(id_C_CLKSEL, id_C_ENSEL))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!use_cp_for_cpe && extra_data.type == PipExtra::PIP_EXTRA_MUX && extra_data.resource !=0 && extra_data.resource <= PipMask::C_PY2_I) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if (!use_bridges && extra_data.type == PipExtra::PIP_EXTRA_MUX &&
|
if (!use_bridges && extra_data.type == PipExtra::PIP_EXTRA_MUX &&
|
||||||
IdString(extra_data.name) == ctx->id("CPE.C_SN")) {
|
IdString(extra_data.name) == ctx->id("CPE.C_SN")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (extra_data.type == PipExtra::PIP_EXTRA_MUX && (extra_data.block != 0)) {
|
if (extra_data.type == PipExtra::PIP_EXTRA_MUX && (extra_data.block != 0)) {
|
||||||
if (pip_mask[pip.tile] & extra_data.block) {
|
if (pip_mask[pip.tile] & extra_data.block) {
|
||||||
// printf("blocking %s - > %s at %s\n", ctx->getPipName(pip)[2].c_str(ctx),
|
|
||||||
// ctx->getPipName(pip)[1].c_str(ctx),
|
|
||||||
// ctx->getPipName(pip)[0].c_str(ctx));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (extra_data.type == PipExtra::PIP_EXTRA_MUX && (extra_data.resource != 0)) {
|
if (extra_data.type == PipExtra::PIP_EXTRA_MUX && (extra_data.resource != 0)) {
|
||||||
if (pip_mask[pip.tile] & extra_data.resource) {
|
if (pip_mask[pip.tile] & extra_data.resource) {
|
||||||
if ((pip_data[pip.tile] & extra_data.resource) != (extra_data.value ? extra_data.resource : 0)) {
|
if ((pip_data[pip.tile] & extra_data.resource) != (extra_data.value ? extra_data.resource : 0)) {
|
||||||
// printf("blocking %s - > %s at %s\n", ctx->getPipName(pip)[2].c_str(ctx),
|
|
||||||
// ctx->getPipName(pip)[1].c_str(ctx), ctx->getPipName(pip)[0].c_str(ctx));
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ struct GateMateImpl : HimbaechelAPI
|
||||||
dict<IdString, int> ram_signal_clk;
|
dict<IdString, int> ram_signal_clk;
|
||||||
IdString forced_die;
|
IdString forced_die;
|
||||||
bool use_cp_for_clk;
|
bool use_cp_for_clk;
|
||||||
|
bool use_cp_for_cpe;
|
||||||
bool use_bridges;
|
bool use_bridges;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue