mistral: Add MISTRAL_CLKBUF cell type

Signed-off-by: gatecat <gatecat@ds0.me>
This commit is contained in:
gatecat 2021-05-15 21:28:48 +01:00
parent 6cef569155
commit 9d7f90dd89
5 changed files with 15 additions and 1 deletions

View File

@ -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;
} }

View File

@ -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;

View File

@ -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);
} }
} }

View File

@ -75,3 +75,4 @@ X(Y)
X(LOC) X(LOC)
X(MISTRAL_CLKENA) X(MISTRAL_CLKENA)
X(MISTRAL_CLKBUF)

View File

@ -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