nexus: Transform registered output parameters

Dual ported:
OUTREG_A -> OUT_REGMODE_A
OUTREG_B -> OUT_REGMODE_B

Pseudo dual ported:
OUTREG -> OUT_REGMODE_B

Single ported:
OUTREG -> OUT_REGMODE_A
This commit is contained in:
David Lattimore 2022-10-05 14:33:06 +11:00
parent 41709dac8f
commit 1602774d27
2 changed files with 9 additions and 0 deletions

View File

@ -446,6 +446,11 @@ X(FBK_MMD_DIG)
X(CLKMUX_FB) X(CLKMUX_FB)
X(LRAM_CORE) X(LRAM_CORE)
X(OUTREG_A)
X(OUTREG_B)
X(OUTREG)
X(OUT_REGMODE_A)
X(OUT_REGMODE_B)
X(EBR_SP_EN) X(EBR_SP_EN)
X(ECC_BYTE_SEL) X(ECC_BYTE_SEL)

View File

@ -1111,6 +1111,7 @@ struct NexusPacker
lram_rules[id_SP512K_MODE].port_xform[id_WE] = id_WEA; lram_rules[id_SP512K_MODE].port_xform[id_WE] = id_WEA;
lram_rules[id_SP512K_MODE].port_xform[id_RSTOUT] = id_RSTA; lram_rules[id_SP512K_MODE].port_xform[id_RSTOUT] = id_RSTA;
lram_rules[id_SP512K_MODE].port_xform[id_CEOUT] = id_OCEA; lram_rules[id_SP512K_MODE].port_xform[id_CEOUT] = id_OCEA;
lram_rules[id_SP512K_MODE].param_xform[id_OUTREG] = id_OUT_REGMODE_A;
add_bus_xform(lram_rules[id_SP512K_MODE], "DI", "DIA", 32); add_bus_xform(lram_rules[id_SP512K_MODE], "DI", "DIA", 32);
add_bus_xform(lram_rules[id_SP512K_MODE], "DO", "DOA", 32); add_bus_xform(lram_rules[id_SP512K_MODE], "DO", "DOA", 32);
add_bus_xform(lram_rules[id_SP512K_MODE], "AD", "ADA", 14); add_bus_xform(lram_rules[id_SP512K_MODE], "AD", "ADA", 14);
@ -1123,6 +1124,7 @@ struct NexusPacker
lram_rules[id_PDPSC512K_MODE].port_xform[id_CSR] = id_CSB; lram_rules[id_PDPSC512K_MODE].port_xform[id_CSR] = id_CSB;
lram_rules[id_PDPSC512K_MODE].port_xform[id_WE] = id_WEA; lram_rules[id_PDPSC512K_MODE].port_xform[id_WE] = id_WEA;
lram_rules[id_PDPSC512K_MODE].port_xform[id_RSTR] = id_RSTB; lram_rules[id_PDPSC512K_MODE].port_xform[id_RSTR] = id_RSTB;
lram_rules[id_PDPSC512K_MODE].param_xform[id_OUTREG] = id_OUT_REGMODE_B;
add_bus_xform(lram_rules[id_PDPSC512K_MODE], "DI", "DIA", 32); add_bus_xform(lram_rules[id_PDPSC512K_MODE], "DI", "DIA", 32);
add_bus_xform(lram_rules[id_PDPSC512K_MODE], "DO", "DOB", 32); add_bus_xform(lram_rules[id_PDPSC512K_MODE], "DO", "DOB", 32);
add_bus_xform(lram_rules[id_PDPSC512K_MODE], "ADW", "ADA", 14); add_bus_xform(lram_rules[id_PDPSC512K_MODE], "ADW", "ADA", 14);
@ -1132,6 +1134,8 @@ struct NexusPacker
lram_rules[id_DPSC512K_MODE].new_type = id_LRAM_CORE; lram_rules[id_DPSC512K_MODE].new_type = id_LRAM_CORE;
lram_rules[id_DPSC512K_MODE].port_xform[id_CEOUTA] = id_OCEA; lram_rules[id_DPSC512K_MODE].port_xform[id_CEOUTA] = id_OCEA;
lram_rules[id_DPSC512K_MODE].port_xform[id_CEOUTB] = id_OCEB; lram_rules[id_DPSC512K_MODE].port_xform[id_CEOUTB] = id_OCEB;
lram_rules[id_DPSC512K_MODE].param_xform[id_OUTREG_A] = id_OUT_REGMODE_A;
lram_rules[id_DPSC512K_MODE].param_xform[id_OUTREG_B] = id_OUT_REGMODE_B;
log_info("Packing LRAM...\n"); log_info("Packing LRAM...\n");
generic_xform(lram_rules, true); generic_xform(lram_rules, true);