Skip to content

Conversation

@dnltz
Copy link
Contributor

@dnltz dnltz commented Oct 9, 2025

  • Sync the PDK with the latest version from the PDK.
  • Include the sg13g2.map file to the update script.
  • Change the metal routing direction to match changes made in the PDK.

export IO_PLACER_H ?= Metal2
export IO_PLACER_V ?= Metal3
export IO_PLACER_V ?= Metal2
export IO_PLACER_H ?= Metal3
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes are important to match the changed routing direction.

@maliberty
Copy link
Member

There are lot of design failures. Please say more about the layer direction changes. I suspect the pdn setup will also need adjusting.

@dnltz
Copy link
Contributor Author

dnltz commented Oct 10, 2025

There are lot of design failures. Please say more about the layer direction changes. I suspect the pdn setup will also need adjusting.

@maliberty Yes, I'm working on this issue right now.

I opened this PR to run all designs in the CI environment (making sure my OpenROAD set up is not broken) and in case I need to open an issue, I can link this PR.

Do you have a "Do not merge" label?

and sorry for misusing the PR flow :)

@rovinski rovinski added the do not merge This PR is not intended to be merged label Oct 10, 2025
@maliberty
Copy link
Member

Usually people just put that in the title temporarily, eg [DO NOT MERGE]

@dnltz dnltz force-pushed the WIP/dnltz/bump-sg13g2-pdk branch 2 times, most recently from 310f0ea to 98adbe3 Compare October 29, 2025 17:09
},
"detailedroute__route__drc_errors": {
"value": 0,
"value": 4,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@maliberty I had to move the PDN from M5+TM1 to TM1+TM2. Since IHP changed the routing direction, M5 had the same orientation as M1 and they can't be connected.

Some designs now have route DRC errors. I assume they need to be fixed, right?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think so as it routed cleanly before. What do they look like?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

The pin placer is completely ignoring those vias between Metal1 and the power ring. I will try to move the power ring a little bit away from the edge.

@dnltz dnltz force-pushed the WIP/dnltz/bump-sg13g2-pdk branch from 98adbe3 to 225af32 Compare October 30, 2025 08:35
maliberty and others added 16 commits October 30, 2025 14:33
Silences a lot of useless warnings.

Signed-off-by: Matt Liberty <[email protected]>
Signed-off-by: Matt Liberty <[email protected]>
Signed-off-by: Augusto Berndt <[email protected]>
Signed-off-by: Augusto Berndt <[email protected]>
=====================================================
make update_ok for aes-block (asap7)...
=====================================================
designs/asap7/aes-block/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__design__instance__count__hold_buffer     |     1131 |     1398 | Failing  |
| cts__timing__setup__ws                        |   -131.0 |   -160.0 | Failing  |
| cts__timing__setup__tns                       |  -8400.0 | -13300.0 | Failing  |
| globalroute__timing__setup__tns               |  -8330.0 | -10500.0 | Failing  |
| detailedroute__route__wirelength              |    56217 |    55890 | Tighten  |
| finish__timing__setup__ws                     |    -96.9 |   -127.0 | Failing  |
| finish__timing__setup__tns                    |  -4570.0 |  -8360.0 | Failing  |

=====================================================
make update_ok for aes-mbff (asap7)...
=====================================================
designs/asap7/aes-mbff/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__ws                        |    -52.6 |    -40.1 | Tighten  |
| cts__timing__setup__tns                       |   -865.0 |   -749.0 | Tighten  |
| globalroute__timing__setup__ws                |    -55.5 |    -51.5 | Tighten  |
| globalroute__timing__setup__tns               |  -2340.0 |  -2430.0 | Failing  |

=====================================================
make update_ok for riscv32i (asap7)...
=====================================================
designs/asap7/riscv32i/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| globalroute__timing__setup__tns               |   -316.0 | -17300.0 | Failing  |
| finish__timing__setup__ws                     |    -66.3 |   -119.0 | Failing  |
| finish__timing__setup__tns                    |   -239.0 | -25000.0 | Failing  |

=====================================================
make update_ok for riscv32i-mock-sram (asap7)...
=====================================================
designs/asap7/riscv32i-mock-sram/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| placeopt__design__instance__area              |     2190 |     2176 | Tighten  |
| placeopt__design__instance__count__stdcell    |    11561 |    11437 | Tighten  |
| cts__design__instance__count__setup_buffer    |     1005 |      994 | Tighten  |
| cts__design__instance__count__hold_buffer     |     1005 |      994 | Tighten  |
| cts__timing__setup__tns                       |   -768.0 |   -577.0 | Tighten  |
| detailedroute__route__wirelength              |    75124 |    73967 | Tighten  |
| finish__timing__setup__tns                    |   -417.0 |  -1870.0 | Failing  |
| finish__design__instance__area                |     2290 |     2277 | Tighten  |

=====================================================
make update_ok for uart (asap7)...
=====================================================
designs/asap7/uart/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| placeopt__design__instance__area              |       95 |      110 | Failing  |
| cts__timing__setup__tns                       |   -594.0 |   -556.0 | Tighten  |
| globalroute__timing__setup__tns               |  -1100.0 |  -1170.0 | Failing  |
| finish__timing__setup__tns                    |   -575.0 |   -658.0 | Failing  |

=====================================================
make update_ok for ariane136 (nangate45)...
=====================================================
designs/nangate45/ariane136/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| placeopt__design__instance__area              |   853377 |   853182 | Tighten  |
| cts__timing__hold__tns                        |    -3.88 |    -5.49 | Failing  |
| detailedroute__timing__hold__ws               |   -0.334 |   -0.326 | Tighten  |
| detailedroute__timing__hold__tns              |    -3.69 |    -1.49 | Tighten  |

=====================================================
make update_ok for bp_be_top (nangate45)...
=====================================================
designs/nangate45/bp_be_top/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__ws                        |   -0.344 |   -0.333 | Tighten  |
| globalroute__timing__setup__ws                |   -0.344 |   -0.335 | Tighten  |
| globalroute__timing__setup__tns               |    -20.9 |    -19.8 | Tighten  |
| detailedroute__route__wirelength              |  2571693 |  2566212 | Tighten  |
| finish__timing__setup__tns                    |    -27.4 |    -28.7 | Failing  |

=====================================================
make update_ok for bp_multi_top (nangate45)...
=====================================================
designs/nangate45/bp_multi_top/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__flow__warnings__count:RSZ-2021           |       90 |      102 | Failing  |
| detailedroute__route__wirelength              |  4187726 |  4180077 | Tighten  |
| detailedroute__timing__setup__ws              |    -11.1 |    -6.13 | Tighten  |
| detailedroute__timing__setup__tns             |   -785.0 |   -607.0 | Tighten  |
| detailedroute__timing__hold__ws               |  -0.0646 |    -1.48 | Failing  |
| detailedroute__timing__hold__tns              |    -5.05 |   -105.0 | Failing  |

=====================================================
make update_ok for ibex (nangate45)...
=====================================================
designs/nangate45/ibex/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__ws                        |   -0.134 |    -0.12 | Tighten  |
| cts__timing__setup__tns                       |   -0.503 |    -0.45 | Tighten  |
| globalroute__timing__setup__ws                |   -0.122 |   -0.118 | Tighten  |
| globalroute__timing__setup__tns               |    -0.61 |   -0.456 | Tighten  |
| finish__timing__setup__tns                    |    -1.46 |    -2.93 | Failing  |

=====================================================
make update_ok for swerv (nangate45)...
=====================================================
designs/nangate45/swerv/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__tns                       |    -41.7 |    -48.7 | Failing  |
| globalroute__timing__setup__tns               |    -56.6 |    -62.2 | Failing  |
| detailedroute__timing__hold__ws               |   -0.108 |   -0.107 | Tighten  |
| detailedroute__timing__hold__tns              |    -3.02 |   -0.856 | Tighten  |
| finish__timing__setup__tns                    |    -60.4 |    -72.3 | Failing  |

=====================================================
make update_ok for swerv_wrapper (nangate45)...
=====================================================
designs/nangate45/swerv_wrapper/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__tns                       |    -14.2 |    -4.31 | Tighten  |
| globalroute__timing__setup__tns               |    -33.8 |    -9.52 | Tighten  |
| finish__timing__setup__tns                    |    -75.8 |    -88.0 | Failing  |
| finish__timing__hold__tns                     |    -1.33 |    -7.63 | Failing  |

=====================================================
make update_ok for tinyRocket (nangate45)...
=====================================================
designs/nangate45/tinyRocket/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| placeopt__design__instance__area              |    61264 |    61249 | Tighten  |
| cts__timing__setup__tns                       |    -15.0 |    -11.3 | Tighten  |
| globalroute__timing__setup__tns               |    -20.1 |    -24.3 | Failing  |
| detailedroute__timing__setup__ws              |  -0.0879 |  -0.0853 | Tighten  |
| finish__timing__setup__tns                    |    -30.4 |    -27.5 | Tighten  |

=====================================================
make update_ok for chameleon (sky130hd)...
=====================================================
designs/sky130hd/chameleon/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| detailedroute__flow__warnings__count:GRT-0243 |        2 |        1 | Tighten  |
| globalroute__flow__warnings__count:GRT-0243   |        1 |        2 | Failing  |
| globalroute__antenna_diodes_count             |      110 |      232 | Failing  |
| detailedroute__route__wirelength              |   788921 |   784325 | Tighten  |
| detailedroute__timing__hold__ws               |   -0.551 |    -0.35 | Tighten  |
| detailedroute__timing__hold__tns              |     -3.0 |     -1.4 | Tighten  |

=====================================================
make update_ok for ibex (sky130hd)...
=====================================================
designs/sky130hd/ibex/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| detailedroute__flow__warnings__count:DRT-0120 |       12 |       24 | Failing  |
| globalroute__flow__warnings__count:DRT-0120   |        4 |        6 | Failing  |
| cts__timing__setup__ws                        |   -0.849 |   -0.683 | Tighten  |
| cts__timing__setup__tns                       |    -8.15 |    -3.56 | Tighten  |
| globalroute__timing__setup__tns               |    -7.09 |     -9.3 | Failing  |
| finish__timing__setup__ws                     |   -0.806 |   -0.768 | Tighten  |

=====================================================
make update_ok for microwatt (sky130hd)...
=====================================================
designs/sky130hd/microwatt/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| detailedroute__flow__warnings__count:GRT-0243 |        3 |        2 | Tighten  |
| cts__timing__setup__tns                       |   -371.0 |   -405.0 | Failing  |
| globalroute__antenna_diodes_count             |     2942 |     2548 | Tighten  |
| globalroute__timing__setup__tns               |   -415.0 |   -420.0 | Failing  |
| globalroute__timing__hold__ws                 |   -0.752 |    -0.75 | Tighten  |
| detailedroute__antenna__violating__nets       |        4 |        0 | Tighten  |
| detailedroute__antenna_diodes_count           |     1980 |     1274 | Tighten  |
| detailedroute__timing__setup__tns             |    -96.1 |   -121.0 | Failing  |
| detailedroute__timing__hold__tns              |   -539.0 |   -428.0 | Tighten  |
| finish__timing__setup__tns                    |   -413.0 |   -399.0 | Tighten  |

=====================================================
make update_ok for riscv32i (sky130hd)...
=====================================================
designs/sky130hd/riscv32i/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__tns                       |    -81.1 |    -47.5 | Tighten  |
| globalroute__timing__setup__tns               |   -109.0 |   -131.0 | Failing  |
| finish__timing__setup__tns                    |    -48.2 |    -61.0 | Failing  |

=====================================================
make update_ok for aes (sky130hs)...
=====================================================
designs/sky130hs/aes/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__ws                        |   -0.157 |   -0.357 | Failing  |
| globalroute__timing__setup__ws                |   -0.375 |   -0.585 | Failing  |
| globalroute__timing__setup__tns               |    -8.69 |     -5.4 | Tighten  |
| finish__timing__setup__tns                    |    -2.45 |    -1.34 | Tighten  |

=====================================================
make update_ok for jpeg (sky130hs)...
=====================================================
designs/sky130hs/jpeg/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| detailedroute__flow__warnings__count:DRT-0120 |       78 |       36 | Tighten  |
| globalroute__flow__warnings__count:DRT-0120   |       13 |        9 | Tighten  |
| globalroute__antenna_diodes_count             |      212 |      332 | Failing  |
| detailedroute__antenna__violating__nets       |        3 |        0 | Tighten  |

=====================================================
make update_ok for riscv32i (sky130hs)...
=====================================================
designs/sky130hs/riscv32i/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__tns                       |    -13.5 |    -25.6 | Failing  |
| globalroute__timing__setup__tns               |   -138.0 |    -33.7 | Tighten  |
| finish__timing__setup__tns                    |    -43.6 |    -10.3 | Tighten  |

Signed-off-by: Augusto Berndt <[email protected]>
=====================================================
make update_ok for bp_single (gf12)...
=====================================================
designs/gf12/bp_single/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| detailedroute__flow__warnings__count:DRT-0120 |        8 |        7 | Tighten  |
| flow__warnings__count:PDN-0110                |      771 |     1001 | Failing  |
| globalroute__flow__warnings__count:DRT-0120   |        8 |        7 | Tighten  |
| cts__timing__setup__tns                       |  -1640.0 |  -2620.0 | Failing  |
| globalroute__timing__hold__ws                 |   -135.0 |   -117.0 | Tighten  |
| globalroute__timing__hold__tns                |   -833.0 |   -569.0 | Tighten  |
| detailedroute__timing__hold__ws               |   -130.0 |   -120.0 | Tighten  |
| detailedroute__timing__hold__tns              |  -3910.0 |  -1310.0 | Tighten  |
| finish__timing__setup__ws                     |   -116.0 |   -222.0 | Failing  |

=====================================================
make update_ok for ca53 (gf12)...
=====================================================
designs/gf12/ca53/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| globalroute__timing__hold__tns                |   -856.0 |  -1410.0 | Failing  |
| detailedroute__timing__hold__ws               |   -265.0 |   -241.0 | Tighten  |
| detailedroute__timing__hold__tns              | -114000.0 | -102000.0 | Tighten  |
| finish__timing__hold__tns                     |  -5150.0 |  -4850.0 | Tighten  |

=====================================================
make update_ok for ibex (gf12)...
=====================================================
designs/gf12/ibex/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__timing__setup__ws                        |    -51.0 |   -114.0 | Failing  |
| cts__timing__setup__tns                       |   -204.0 |  -1310.0 | Failing  |
| globalroute__timing__setup__ws                |    -78.5 |    -66.4 | Tighten  |
| globalroute__timing__setup__tns               |  -3890.0 |   -271.0 | Tighten  |

=====================================================
make update_ok for hercules_idecode (rapidus2hp)...
=====================================================
designs/rapidus2hp/hercules_idecode/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__flow__warnings__count:STA-1257           |     1502 |     1001 | Tighten  |
| detailedplace__flow__warnings__count:STA-1257 |     1502 |     1001 | Tighten  |
| detailedroute__flow__warnings__count:STA-1257 |     1502 |     1001 | Tighten  |
| finish__flow__warnings__count:STA-1257        |     1502 |     1001 | Tighten  |
| floorplan__flow__warnings__count:STA-1257     |     1502 |     1001 | Tighten  |
| globalplace__flow__warnings__count:STA-1257   |     1502 |     1001 | Tighten  |
| globalroute__flow__warnings__count:STA-1257   |     1502 |     1001 | Tighten  |
| placeopt__flow__warnings__count:STA-1257      |     1502 |     1001 | Tighten  |
| placeopt__design__instance__area              |    12567 |    12565 | Tighten  |
| cts__timing__setup__ws                        | -231.708 |   -261.0 | Failing  |
| cts__timing__setup__tns                       | -795000.0 | -1110000.0 | Failing  |
| globalroute__timing__setup__ws                |   -308.0 |   -227.0 | Tighten  |
| globalroute__timing__setup__tns               | -1300000.0 | -564000.0 | Tighten  |
| finish__timing__setup__ws                     |   -308.0 |   -227.0 | Tighten  |
| finish__timing__setup__tns                    | -1300000.0 | -564000.0 | Tighten  |
| finish__design__instance__area                |    12842 |    12834 | Tighten  |

=====================================================
make update_ok for hercules_is_int (rapidus2hp)...
=====================================================
designs/rapidus2hp/hercules_is_int/rules-base.json updates:
| Metric                                        | Old      | New      | Type     |
| ------                                        | ---      | ---      | ----     |
| cts__flow__warnings__count:RSZ-0062           |        2 |        1 | Tighten  |
| cts__flow__warnings__count:STA-0122           |       40 |       27 | Tighten  |
| cts__flow__warnings__count:STA-1257           |     1502 |     1001 | Tighten  |
| detailedplace__flow__warnings__count:STA-1257 |     1502 |     1001 | Tighten  |
| detailedroute__flow__warnings__count:STA-1257 |     1502 |     1001 | Tighten  |
| finish__flow__warnings__count:STA-1257        |     1502 |     1001 | Tighten  |
| floorplan__flow__warnings__count:EST-0027     |        2 |        1 | Tighten  |
| floorplan__flow__warnings__count:IFP-0028     |        2 |        1 | Tighten  |
| floorplan__flow__warnings__count:ODB-0256     |     1502 |     1001 | Tighten  |
| floorplan__flow__warnings__count:ODB-0279     |     1502 |     1001 | Tighten  |
| floorplan__flow__warnings__count:ODB-0280     |     1502 |     1001 | Tighten  |
| floorplan__flow__warnings__count:STA-1257     |     1502 |     1001 | Tighten  |
| globalplace__flow__warnings__count:GPL-0998   |        2 |        1 | Tighten  |
| globalplace__flow__warnings__count:GPL-0999   |        2 |        1 | Tighten  |
| globalplace__flow__warnings__count:STA-0122   |       40 |       27 | Tighten  |
| globalplace__flow__warnings__count:STA-1257   |     1502 |     1001 | Tighten  |
| globalroute__flow__warnings__count:DRT-0240   |        2 |        1 | Tighten  |
| globalroute__flow__warnings__count:DRT-0263   |       10 |        7 | Tighten  |
| globalroute__flow__warnings__count:DRT-0349   |       15 |       10 | Tighten  |
| globalroute__flow__warnings__count:GRT-0246   |        2 |        1 | Tighten  |
| globalroute__flow__warnings__count:RSZ-0062   |        2 |        1 | Tighten  |
| globalroute__flow__warnings__count:STA-0122   |       40 |       27 | Tighten  |
| globalroute__flow__warnings__count:STA-1257   |     1502 |     1001 | Tighten  |
| placeopt__flow__warnings__count:STA-0122      |       40 |       27 | Tighten  |
| placeopt__flow__warnings__count:STA-1257      |     1502 |     1001 | Tighten  |
| cts__timing__setup__ws                        |   -354.0 |   -344.0 | Tighten  |
| cts__timing__setup__tns                       | -2761572.0 | -2480000.0 | Tighten  |
| globalroute__timing__setup__ws                |   -451.0 |   -343.0 | Tighten  |
| globalroute__timing__setup__tns               | -3740000.0 | -2040000.0 | Tighten  |
| globalroute__timing__hold__ws                 |    -12.5 |    -58.4 | Failing  |
| globalroute__timing__hold__tns                |    -50.0 |  -1810.0 | Failing  |
| finish__timing__setup__ws                     |   -451.0 |   -343.0 | Tighten  |
| finish__timing__setup__tns                    | -3740000.0 | -2040000.0 | Tighten  |
| finish__timing__hold__ws                      |    -12.5 |    -58.4 | Failing  |
| finish__timing__hold__tns                     |    -50.0 |  -1810.0 | Failing  |

Signed-off-by: Augusto Berndt <[email protected]>
Signed-off-by: Augusto Berndt <[email protected]>
Signed-off-by: Eder Monteiro <[email protected]>
Signed-off-by: Eder Monteiro <[email protected]>
Also sync the map file for SG13G2.

Signed-off-by: Daniel Schultz <[email protected]>
The routing direction for all Metal layers recently changed
the in the SG13G2 PDK. Update the config file to match with
the latest tech file.

Signed-off-by: Daniel Schultz <[email protected]>
Use sg13g2_udpate.py to sync with the latest changes from the
main branch.

Signed-off-by: Daniel Schultz <[email protected]>
Move Power Delivery Network to TopMetal1 and 2. Since IHP
changed the orientation of all metal directions, Metal5 and TM1
can't be used anymore.

Signed-off-by: Daniel Schultz <[email protected]>
Since the routing direction changed, pins at the macro edge and
power ring vias might be too close to each other.

Increase the core margin by 1um to prevent this issue.

Signed-off-by: Daniel Schultz <[email protected]>
Move Power Delivery Network to TopMetal1 and 2. Since IHP
changed the orientation of all metal directions, Metal5 and TM1
can't be used anymore.

Use Metal4 and 5 for the PDN inside macro blocks.

Signed-off-by: Daniel Schultz <[email protected]>
Update all ihp-sg13g2 designs to match the latest PDK files.

Additionally, lower frequency for spi and gdc design to meet
worst-case latency.

Signed-off-by: Daniel Schultz <[email protected]>
@dnltz dnltz force-pushed the WIP/dnltz/bump-sg13g2-pdk branch from 225af32 to 2eef655 Compare October 30, 2025 13:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do not merge This PR is not intended to be merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants