From 840311b5ac4796413451afa5185c51a10e0df8df Mon Sep 17 00:00:00 2001 From: Joris van Zwieten Date: Thu, 30 Jul 2026 15:49:52 +0200 Subject: [PATCH] himbaechel/xilinx: give RAMB36 bels their area in the static placer RAMB36E1 bels were registered with a zero bel_area while RAMB36E1 cells claim a 1x6 cell_area. With no capacity anywhere in the RAM density map, the static placer cannot resolve RAMB36 density and BRAM-heavy designs fail to converge to a legalisable placement. Register the bel area as 1x6 to match the cell area, consistent with the RAMB18 entries above. Observed on a design using >90% of the BRAM on an xc7a100t. Co-Authored-By: Claude Fable 5 --- himbaechel/uarch/xilinx/xilinx.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/himbaechel/uarch/xilinx/xilinx.cc b/himbaechel/uarch/xilinx/xilinx.cc index 0f8f4772..7e3a037c 100644 --- a/himbaechel/uarch/xilinx/xilinx.cc +++ b/himbaechel/uarch/xilinx/xilinx.cc @@ -440,7 +440,7 @@ void XilinxImpl::configurePlacerStatic(PlacerStaticCfg &cfg) comb.cell_area[id_RAMB18E1_RAMB18E1] = StaticRect(1.0f, 3.0f); comb.bel_area[id_RAMB18E1_RAMB18E1] = StaticRect(1.0f, 3.0f); comb.cell_area[id_RAMB36E1_RAMB36E1] = StaticRect(1.0f, 6.0f); - comb.bel_area[id_RAMB36E1_RAMB36E1] = StaticRect(0.0f, 0.0f); + comb.bel_area[id_RAMB36E1_RAMB36E1] = StaticRect(1.0f, 6.0f); comb.spacer_rect = StaticRect(1.0f, 3.0f); } {