tnt
03/11/2024, 4:04 PMmet5
runs horizontally and the met4
tracks vertically and so it checks the overlaps width (which is the met4
width against the met5
enclosure requirement ...)Matt Liberty
03/11/2024, 4:10 PMtnt
03/11/2024, 4:15 PMtnt
03/11/2024, 4:16 PMtnt
03/11/2024, 4:17 PMviolation type: Build - macro - top_I.branch\[28\].block\[15\].um_I.block_28_15.tt_pg_vdd_I - met4 -> met5
srcs: net:vssd1
bbox = (99.3600, 131.3200) - (100.5600, 137.5200) on Layer -
tnt
03/11/2024, 4:17 PMMatt Liberty
03/11/2024, 4:18 PMtnt
03/11/2024, 4:21 PMhttps://i.imgur.com/ASchSLH.png▾
tnt
03/11/2024, 4:21 PMhttps://i.imgur.com/cQiy2i0.png▾
Matt Liberty
03/11/2024, 4:22 PMtnt
03/11/2024, 4:23 PMpdngen
put the via, the only thing that changed between those two version is the Y position of the yellow striped.
( In the top version I have CORE_AREA
set in OpenLane and not in the bottom version which shifts things a bit ).Matt Liberty
03/11/2024, 4:26 PMMatt Liberty
03/11/2024, 4:26 PMMatt Liberty
03/11/2024, 4:27 PMMatt Liberty
03/11/2024, 4:27 PMtnt
03/11/2024, 4:30 PMtnt
03/11/2024, 4:31 PMMatt Liberty
03/11/2024, 4:32 PMtnt
03/11/2024, 4:35 PMtnt
03/11/2024, 4:35 PM[DEBUG PDN-ViaEnclosure] Top layer met5 with width 6.2000 has 1 rules and enclosures of 0.200000 and 1.100000.
[DEBUG PDN-ViaEnclosure] Top rule enclosures 0.310000 and 0.310000 -> false.
tnt
03/11/2024, 4:36 PMtnt
03/11/2024, 4:55 PMmet5
stripes end up at exactly the same Y
coordinate wether I set CORE_AREA or not ... and still one one case I get via and in the other I don't ...Matt Liberty
03/11/2024, 4:56 PMtnt
03/11/2024, 5:00 PMtnt
03/11/2024, 5:00 PMtnt
03/11/2024, 5:13 PMtnt
03/11/2024, 5:13 PMMatt Liberty
03/11/2024, 5:19 PMtnt
03/11/2024, 5:19 PMMatt Liberty
03/11/2024, 5:19 PMtnt
03/11/2024, 5:19 PMMatt Liberty
03/11/2024, 5:20 PMMatt Liberty
03/11/2024, 5:20 PMtnt
03/11/2024, 5:20 PMCORE_AREA
in openlane or not, and adjust the PDN offset to make the stripe match Y position to be able to compare.tnt
03/11/2024, 5:20 PMtnt
03/11/2024, 5:30 PMMatt Liberty
03/11/2024, 5:37 PMtnt
03/11/2024, 5:39 PM"DIE_AREA": [0, 0, 3166.63, 4766.63],
"CORE_AREA": [0.1, 0, 3166.63, 4766.63],
The above works.
If I set CORE_AREA to start at 0.0, it doesn't ...Matt Liberty
03/11/2024, 5:41 PMtnt
03/11/2024, 5:43 PMtnt
03/11/2024, 5:46 PMhasTermConnections()
returns true for the failing case for some reason.tnt
03/11/2024, 7:15 PMmet5
is a BTerm ... (at leas tthat's the rect in the bterm list).tnt
03/11/2024, 7:15 PMtnt
03/11/2024, 7:36 PM// add bpins that touch edges
odb::Rect die_area = getBlock()->getDieArea();
const odb::Rect& final_shape_rect = shape_ptr->getRect();
const int min_width = shape_ptr->getLayer()->getMinWidth();
if (final_shape_rect.xMin() == die_area.xMin()) {
const int x = std::min(static_cast<int>(die_area.xMin() + min_width),
final_shape_rect.xMax());
odb::Rect pin_rect = final_shape_rect;
pin_rect.set_xhi(x);
shape_ptr->addBTermConnection(pin_rect);
}
tnt
03/11/2024, 7:37 PMMatt Liberty
03/11/2024, 8:15 PMMatt Liberty
03/11/2024, 8:16 PMtnt
03/11/2024, 8:17 PMMatt Liberty
03/11/2024, 8:19 PMtnt
03/11/2024, 8:21 PMtnt
03/11/2024, 8:22 PMMatt Liberty
03/11/2024, 8:26 PMtnt
03/11/2024, 8:27 PMMatt Liberty
03/11/2024, 8:27 PMMatt Liberty
03/11/2024, 8:27 PMtnt
03/11/2024, 8:34 PM