ice40: Include I3 connectivity in chain
Thanks @smunaut Signed-off-by: David Shah <dave@ds0.me>
This commit is contained in:
parent
12aca1558f
commit
0c93b55650
@ -163,29 +163,31 @@ class ChainConstrainer
|
|||||||
|
|
||||||
void process_carries()
|
void process_carries()
|
||||||
{
|
{
|
||||||
std::vector<CellChain> carry_chains =
|
std::vector<CellChain> carry_chains = find_chains(
|
||||||
find_chains(ctx, [](const Context *ctx, const CellInfo *cell) { return is_lc(ctx, cell); },
|
ctx, [](const Context *ctx, const CellInfo *cell) { return is_lc(ctx, cell); },
|
||||||
[](const Context *ctx, const
|
[](const Context *ctx, const
|
||||||
|
|
||||||
CellInfo *cell) {
|
CellInfo *cell) {
|
||||||
CellInfo *carry_prev =
|
CellInfo *carry_prev =
|
||||||
net_driven_by(ctx, cell->ports.at(ctx->id("CIN")).net, is_lc, ctx->id("COUT"));
|
net_driven_by(ctx, cell->ports.at(ctx->id("CIN")).net, is_lc, ctx->id("COUT"));
|
||||||
if (carry_prev != nullptr)
|
if (carry_prev != nullptr)
|
||||||
return carry_prev;
|
return carry_prev;
|
||||||
/*CellInfo *i3_prev = net_driven_by(ctx, cell->ports.at(ctx->id("I3")).net, is_lc,
|
CellInfo *i3_prev = net_driven_by(ctx, cell->ports.at(ctx->id("I3")).net, is_lc, ctx->id("COUT"));
|
||||||
ctx->id("COUT")); if (i3_prev != nullptr) return i3_prev;*/
|
if (i3_prev != nullptr)
|
||||||
return (CellInfo *)nullptr;
|
return i3_prev;
|
||||||
},
|
return (CellInfo *)nullptr;
|
||||||
[](const Context *ctx, const CellInfo *cell) {
|
},
|
||||||
CellInfo *carry_next = net_only_drives(ctx, cell->ports.at(ctx->id("COUT")).net, is_lc,
|
[](const Context *ctx, const CellInfo *cell) {
|
||||||
ctx->id("CIN"), false);
|
CellInfo *carry_next =
|
||||||
if (carry_next != nullptr)
|
net_only_drives(ctx, cell->ports.at(ctx->id("COUT")).net, is_lc, ctx->id("CIN"), false);
|
||||||
return carry_next;
|
if (carry_next != nullptr)
|
||||||
/*CellInfo *i3_next =
|
return carry_next;
|
||||||
net_only_drives(ctx, cell->ports.at(ctx->id("COUT")).net, is_lc, ctx->id("I3"),
|
CellInfo *i3_next =
|
||||||
false); if (i3_next != nullptr) return i3_next;*/
|
net_only_drives(ctx, cell->ports.at(ctx->id("COUT")).net, is_lc, ctx->id("I3"), false);
|
||||||
return (CellInfo *)nullptr;
|
if (i3_next != nullptr)
|
||||||
});
|
return i3_next;
|
||||||
|
return (CellInfo *)nullptr;
|
||||||
|
});
|
||||||
std::unordered_set<IdString> chained;
|
std::unordered_set<IdString> chained;
|
||||||
for (auto &base_chain : carry_chains) {
|
for (auto &base_chain : carry_chains) {
|
||||||
for (auto c : base_chain.cells)
|
for (auto c : base_chain.cells)
|
||||||
|
Loading…
Reference in New Issue
Block a user