diff options
author | David Lattimore <dml@google.com> | 2022-10-05 14:33:06 +1100 |
---|---|---|
committer | David Lattimore <dml@google.com> | 2022-10-05 14:40:49 +1100 |
commit | 1602774d27bc68fb291886276ff7cc409405717a (patch) | |
tree | ed464a01477acc8d68749ccef52a618ab8ad7846 | |
parent | 41709dac8f55859152107a9ff856b27480cd0a96 (diff) | |
download | nextpnr-1602774d27bc68fb291886276ff7cc409405717a.tar.gz nextpnr-1602774d27bc68fb291886276ff7cc409405717a.tar.bz2 nextpnr-1602774d27bc68fb291886276ff7cc409405717a.zip |
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
-rw-r--r-- | nexus/constids.inc | 5 | ||||
-rw-r--r-- | nexus/pack.cc | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/nexus/constids.inc b/nexus/constids.inc index 8731fad7..596d064c 100644 --- a/nexus/constids.inc +++ b/nexus/constids.inc @@ -446,6 +446,11 @@ X(FBK_MMD_DIG) X(CLKMUX_FB) X(LRAM_CORE) +X(OUTREG_A) +X(OUTREG_B) +X(OUTREG) +X(OUT_REGMODE_A) +X(OUT_REGMODE_B) X(EBR_SP_EN) X(ECC_BYTE_SEL) diff --git a/nexus/pack.cc b/nexus/pack.cc index 3d293f69..cd042485 100644 --- a/nexus/pack.cc +++ b/nexus/pack.cc @@ -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_RSTOUT] = id_RSTA; 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], "DO", "DOA", 32); 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_WE] = id_WEA; 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], "DO", "DOB", 32); 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].port_xform[id_CEOUTA] = id_OCEA; 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"); generic_xform(lram_rules, true); |