mirror of https://github.com/YosysHQ/nextpnr.git
Revert "verify inversion before/after assigning bridges"
This reverts commit 8613ee17c8.
This commit is contained in:
parent
b537372c7d
commit
6ebdf991af
|
|
@ -523,11 +523,4 @@ void GateMateImpl::write_bitstream(const std::string &device, const std::string
|
||||||
be.write_bitstream();
|
be.write_bitstream();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GateMateImpl::need_inversion_remove_me_later(CellInfo *cell, IdString port)
|
|
||||||
{
|
|
||||||
std::ofstream out("/dev/null");
|
|
||||||
BitstreamBackend be(ctx, this, "", out);
|
|
||||||
return be.need_inversion(cell, port);
|
|
||||||
}
|
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_END
|
NEXTPNR_NAMESPACE_END
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
#include "idstringlist.h"
|
#include "idstringlist.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "nextpnr_assertions.h"
|
#include "nextpnr_assertions.h"
|
||||||
#include "nextpnr_types.h"
|
|
||||||
#include "placer_heap.h"
|
#include "placer_heap.h"
|
||||||
|
|
||||||
#define GEN_INIT_CONSTIDS
|
#define GEN_INIT_CONSTIDS
|
||||||
|
|
@ -374,8 +373,7 @@ 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 &&
|
if (!use_cp_for_cpe && extra_data.type == PipExtra::PIP_EXTRA_MUX && extra_data.resource !=0 && extra_data.resource <= PipMask::C_PY2_I) {
|
||||||
extra_data.resource <= PipMask::C_PY2_I) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (!use_bridges && extra_data.type == PipExtra::PIP_EXTRA_MUX &&
|
if (!use_bridges && extra_data.type == PipExtra::PIP_EXTRA_MUX &&
|
||||||
|
|
@ -595,18 +593,6 @@ void GateMateImpl::postRoute()
|
||||||
{
|
{
|
||||||
int num = 0;
|
int num = 0;
|
||||||
|
|
||||||
dict<std::pair<IdString, IdString>, bool> inversion_before_bridges;
|
|
||||||
|
|
||||||
for (auto &pair : ctx->cells) {
|
|
||||||
auto *cell = pair.second.get();
|
|
||||||
for (auto &port : cell->ports) {
|
|
||||||
if (port.second.type != PORT_IN)
|
|
||||||
continue;
|
|
||||||
inversion_before_bridges.insert(
|
|
||||||
{std::make_pair(cell->name, port.first), need_inversion_remove_me_later(cell, port.first)});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pool<IdString> nets_with_bridges;
|
pool<IdString> nets_with_bridges;
|
||||||
pool<IdString> nets_with_cplines;
|
pool<IdString> nets_with_cplines;
|
||||||
|
|
||||||
|
|
@ -718,19 +704,6 @@ void GateMateImpl::postRoute()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto &pair : inversion_before_bridges) {
|
|
||||||
auto cell_name = pair.first.first;
|
|
||||||
auto port = pair.first.second;
|
|
||||||
auto inversion_before = pair.second;
|
|
||||||
auto *cell = ctx->cells.at(cell_name).get();
|
|
||||||
auto inversion_after = need_inversion_remove_me_later(cell, port);
|
|
||||||
|
|
||||||
if (inversion_before != inversion_after) {
|
|
||||||
log_error("cell '%s.%s' of type '%s' differs in inversion!\n", cell_name.c_str(ctx), port.c_str(ctx),
|
|
||||||
cell->type.c_str(ctx));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dict<IdString, int> cfg;
|
dict<IdString, int> cfg;
|
||||||
dict<IdString, IdString> port_mapping;
|
dict<IdString, IdString> port_mapping;
|
||||||
auto add_input = [&](IdString orig_port, IdString port, bool merged) -> bool {
|
auto add_input = [&](IdString orig_port, IdString port, bool merged) -> bool {
|
||||||
|
|
|
||||||
|
|
@ -114,14 +114,13 @@ struct GateMateImpl : HimbaechelAPI
|
||||||
MultiDieStrategy strategy;
|
MultiDieStrategy strategy;
|
||||||
dict<int, IdString> index_to_die;
|
dict<int, IdString> index_to_die;
|
||||||
dict<IdString, int> die_to_index;
|
dict<IdString, int> die_to_index;
|
||||||
dict<IdString, dict<IdString, IdString>> pass_backtrace;
|
dict<IdString,dict<IdString, IdString>> pass_backtrace;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool getChildPlacement(const BaseClusterInfo *cluster, Loc root_loc,
|
bool getChildPlacement(const BaseClusterInfo *cluster, Loc root_loc,
|
||||||
std::vector<std::pair<CellInfo *, BelId>> &placement) const;
|
std::vector<std::pair<CellInfo *, BelId>> &placement) const;
|
||||||
|
|
||||||
void write_bitstream(const std::string &device, const std::string &filename);
|
void write_bitstream(const std::string &device, const std::string &filename);
|
||||||
bool need_inversion_remove_me_later(CellInfo *cell, IdString port);
|
|
||||||
|
|
||||||
void parse_ccf(const std::string &filename);
|
void parse_ccf(const std::string &filename);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue