mistral: Add MISTRAL_CLKBUF cell type
Signed-off-by: gatecat <gatecat@ds0.me>
This commit is contained in:
parent
6cef569155
commit
9d7f90dd89
@ -248,6 +248,8 @@ bool Arch::isValidBelForCellType(IdString cell_type, BelId bel) const
|
|||||||
return is_comb_cell(cell_type);
|
return is_comb_cell(cell_type);
|
||||||
else if (bel_type == id_MISTRAL_IO)
|
else if (bel_type == id_MISTRAL_IO)
|
||||||
return is_io_cell(cell_type);
|
return is_io_cell(cell_type);
|
||||||
|
else if (bel_type == id_MISTRAL_CLKENA)
|
||||||
|
return is_clkbuf_cell(cell_type);
|
||||||
else
|
else
|
||||||
return bel_type == cell_type;
|
return bel_type == cell_type;
|
||||||
}
|
}
|
||||||
@ -258,6 +260,8 @@ BelBucketId Arch::getBelBucketForCellType(IdString cell_type) const
|
|||||||
return id_MISTRAL_COMB;
|
return id_MISTRAL_COMB;
|
||||||
else if (is_io_cell(cell_type))
|
else if (is_io_cell(cell_type))
|
||||||
return id_MISTRAL_IO;
|
return id_MISTRAL_IO;
|
||||||
|
else if (is_clkbuf_cell(cell_type))
|
||||||
|
return id_MISTRAL_CLKENA;
|
||||||
else
|
else
|
||||||
return cell_type;
|
return cell_type;
|
||||||
}
|
}
|
||||||
|
@ -480,6 +480,10 @@ struct Arch : BaseArch<ArchRanges>
|
|||||||
|
|
||||||
// -------------------------------------------------
|
// -------------------------------------------------
|
||||||
|
|
||||||
|
bool is_clkbuf_cell(IdString cell_type) const; // globals.cc
|
||||||
|
|
||||||
|
// -------------------------------------------------
|
||||||
|
|
||||||
static const std::string defaultPlacer;
|
static const std::string defaultPlacer;
|
||||||
static const std::vector<std::string> availablePlacers;
|
static const std::vector<std::string> availablePlacers;
|
||||||
static const std::string defaultRouter;
|
static const std::string defaultRouter;
|
||||||
|
@ -201,7 +201,7 @@ struct MistralBitgen
|
|||||||
int bi = ctx->bel_data(ci->bel).block_index;
|
int bi = ctx->bel_data(ci->bel).block_index;
|
||||||
if (ctx->is_io_cell(ci->type))
|
if (ctx->is_io_cell(ci->type))
|
||||||
write_io_cell(ci, loc.x, loc.y, bi);
|
write_io_cell(ci, loc.x, loc.y, bi);
|
||||||
else if (ci->type == id_MISTRAL_CLKENA)
|
else if (ctx->is_clkbuf_cell(ci->type))
|
||||||
write_clkbuf_cell(ci, loc.x, loc.y, bi);
|
write_clkbuf_cell(ci, loc.x, loc.y, bi);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,3 +75,4 @@ X(Y)
|
|||||||
X(LOC)
|
X(LOC)
|
||||||
|
|
||||||
X(MISTRAL_CLKENA)
|
X(MISTRAL_CLKENA)
|
||||||
|
X(MISTRAL_CLKBUF)
|
||||||
|
@ -38,4 +38,9 @@ void Arch::create_clkbuf(int x, int y)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Arch::is_clkbuf_cell(IdString cell_type) const
|
||||||
|
{
|
||||||
|
return cell_type == id_MISTRAL_CLKENA || cell_type == id_MISTRAL_CLKBUF;
|
||||||
|
}
|
||||||
|
|
||||||
NEXTPNR_NAMESPACE_END
|
NEXTPNR_NAMESPACE_END
|
||||||
|
Loading…
Reference in New Issue
Block a user