mistral: Add support for cyclonev_hps_interface_mpu_general_purpose

This commit is contained in:
Olivier Galibert 2021-10-14 17:04:32 +02:00
parent 4e1f2d7deb
commit 206bb07506
3 changed files with 15 additions and 0 deletions

View File

@ -77,6 +77,11 @@ Arch::Arch(ArchArgs args)
for (auto cmuxh_pos : cyclonev->cmuxh_get_pos()) for (auto cmuxh_pos : cyclonev->cmuxh_get_pos())
create_clkbuf(CycloneV::pos2x(cmuxh_pos), CycloneV::pos2y(cmuxh_pos)); create_clkbuf(CycloneV::pos2x(cmuxh_pos), CycloneV::pos2y(cmuxh_pos));
auto hps_pos = cyclonev->hps_get_pos();
if (!hps_pos.empty()) {
create_hps_mpu_general_purpose(CycloneV::pos2x(hps_pos[CycloneV::I_HPS_MPU_GENERAL_PURPOSE]), CycloneV::pos2y(hps_pos[CycloneV::I_HPS_MPU_GENERAL_PURPOSE]));
}
// This import takes about 5s, perhaps long term we can speed it up, e.g. defer to Mistral more... // This import takes about 5s, perhaps long term we can speed it up, e.g. defer to Mistral more...
log_info("Initialising routing graph...\n"); log_info("Initialising routing graph...\n");
int pip_count = 0; int pip_count = 0;

View File

@ -469,6 +469,7 @@ struct Arch : BaseArch<ArchRanges>
void create_lab(int x, int y, bool is_mlab); // lab.cc void create_lab(int x, int y, bool is_mlab); // lab.cc
void create_gpio(int x, int y); // io.cc void create_gpio(int x, int y); // io.cc
void create_clkbuf(int x, int y); // globals.cc void create_clkbuf(int x, int y); // globals.cc
void create_hps_mpu_general_purpose(int x, int y); // globals.cc
// ------------------------------------------------- // -------------------------------------------------

View File

@ -43,4 +43,13 @@ bool Arch::is_clkbuf_cell(IdString cell_type) const
return cell_type == id_MISTRAL_CLKENA || cell_type == id_MISTRAL_CLKBUF; return cell_type == id_MISTRAL_CLKENA || cell_type == id_MISTRAL_CLKBUF;
} }
void Arch::create_hps_mpu_general_purpose(int x, int y)
{
BelId gp_bel = add_bel(x, y, id("cyclonev_hps_interface_mpu_general_purpose"), id("cyclonev_hps_interface_mpu_general_purpose"));
for (int i = 0; i < 32; i++) {
add_bel_pin(gp_bel, id(stringf("gp_in[%d]", i)), PORT_IN, get_port(CycloneV::HPS_MPU_GENERAL_PURPOSE, x, y, -1, CycloneV::GP_IN, i));
add_bel_pin(gp_bel, id(stringf("gp_out[%d]", i)), PORT_OUT, get_port(CycloneV::HPS_MPU_GENERAL_PURPOSE, x, y, -1, CycloneV::GP_OUT, i));
}
}
NEXTPNR_NAMESPACE_END NEXTPNR_NAMESPACE_END