gf180: `-split_cuts {Metal3 0.128}` in the platform PDN config makes overlapping, off-grid Via2/Via3 cuts
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 71/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Área
- infrastructure
Línea de trabajo
Lee flow/platforms/gf180/openROAD/pdn/pdn_grid_strategy_7t_6M.cfg y pdn_grid_strategy_9t_6M.cfg, y luego inspecciona la opción add_pdn_connect. Reproduce el problema en un diseño GF180 mediante 6_final.gds. Elimina la configuración -split_cuts especificada y comprueba si los cortes Via2/Via3 se solapan y si están alineados con la cuadrícula. Después, verifica check_power_grid y el DRC del enrutado; el trabajo estará terminado cuando ambas configuraciones produzcan cortes separados y correctamente alineados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Both flow/platforms/gf180/openROAD/pdn/pdn_grid_strategy_7t_6M.cfg and ..._9t_6M.cfg have, on line 25:
add_pdn_connect -grid {block} -layers {Metal1 Metal4} -max_columns {5} -ongrid {Metal2 Metal3 Metal4} -split_cuts {Metal3 0.128}
The Via2/Via3 cuts are 0.26 µm squares, but with this setting pdngen places them closer than their own size, so neighbouring cuts overlap and merge into one large cut, and the cut corners land off the 0.005 µm manufacturing grid (MANUFACTURINGGRID 0.0050 in the tech LEF). Measured on the final GDS of gcd (minimal gf180 config: designs/src/gcd/gcd.v, CORE_UTILIZATION 40, 20 ns, 9-track cells, ORFS c06bf3c; the PDN files are the same on current master):
| Via2 (38/0) cuts | after merging | largest merged cut | vertices off the 0.005 µm grid | |
|---|---|---|---|---|
| platform config | 5,970 × 0.26 × 0.26 | 1,074 shapes | 0.772 × 1.028 µm | 19,584 |
same, -split_cuts {Metal3 0.128} removed |
2,383 × 0.26 × 0.26 | 2,383 (none overlap) | 0.26 × 0.26 | 0 |
Via3 (40/0) is the same: 5,063 cuts merging into 167 shapes, 19,584 off-grid vertices, against 1,463 separate cuts and 0 off-grid without the option. Each Metal1-rail × Metal4-strap crossing becomes one 0.772 × 1.028 µm Via2 and one such Via3.
Without -split_cuts, pdngen uses the tech LEF's VIARULE and makes ordinary via arrays; check_power_grid passes for VDD and VSS and routing DRC stays 0 (gcd and a 4-SRAM FIFO). A metal/via rule check written from the tech LEF's own values goes from 2,629 markers to 1 on gcd (the remaining one is an IO pin next to a strap end) and from 10,752 to 0 on the FIFO. A spacing of 0.62 instead of 0.128 also removes the overlaps, but leaves the Metal3 pads at each crossing too close (576 Metal3 spacing markers on gcd).
The image has no GF180 sign-off DRC deck (make drc writes "DRC not supported on this platform" and returns 0), so this was found with that tech-LEF-based subset plus the geometric checks above (cut size, overlap, grid), which do not depend on any deck. Every design in flow/designs/gf180/ uses these PDN files.
To reproduce
Run any gf180 design to 6_final.gds and count the Via2 shapes before and after merging, e.g. in KLayout Python:
import pya
ly = pya.Layout(); ly.read("6_final.gds")
r = pya.Region(ly.top_cell().begin_shapes_rec(ly.layer(38, 0))); r.merged_semantics = False
print(r.count(), "cuts,", r.merged().count(), "after merging")
Suggested fix
Drop -split_cuts {Metal3 0.128} from both files (or give a pitch of at least cut size + cut spacing and check the resulting Metal3 pads).
- Lenguaje dominante
- Verilog
- Estrellas
- 777
- Forks
- 549
- Merge medio
- 2 d 10 h
- PR fusionados (30 d)
- 91
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de The-OpenROAD-Project/OpenROAD-flow-scripts
-
pr-head should not vote on PRsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4726 ·
Los mantenedores suelen responder en 1 día
-
build_openroad.sh: kepler-formal is installed with an absolute RUNPATH, so a moved or re-pointed install loads another build's librariesPosiblemente ocupada @saikatchatrg la tomó hace 5 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4717 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Make SYNTH_HDL_FRONTEND=slang defaultQuizá libre de nuevo @jeffng-or la tomó hace 37 días y no hay ningún pull request abierto. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4548 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 1-2 días Aptitud para principiantes 48/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4764 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
The-OpenROAD-Project/OpenROAD-flow-scripts#4753 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de The-OpenROAD-Project/OpenROAD-flow-scripts
Issues similares
-
bug claimed pillar/reliability
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
hurttlocker/o8#5107 ·
-
needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
gke-labs/kube-agents#4321 ·
Los mantenedores suelen responder en 1 día
-
bug observability
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
sagar2395/snowopslabs#164 ·
Los mantenedores suelen responder en 1 día
-
enhancement help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Git-Hospital/githealthcheck#61 ·
Los mantenedores suelen responder en 1 día
-
bug triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
kyverno/kyverno#18361 · 1 reacción ·
Los mantenedores suelen responder en 1 día