Effektive Makroplatzierungsstrategien im Chipdesign
Ein detaillierter Ansatz zur Organisation von Makros für verbesserte Chip-Leistung.
― 6 min Lesedauer
Inhaltsverzeichnis
In der Welt des Chip-Designs ist es super wichtig, die verschiedenen Teile, die Makros genannt werden, richtig zu organisieren. Makros sind grosse Blöcke, die auf einem Chip spezielle Funktionen erfüllen. Die richtige Anordnung dieser Makros kann einen riesigen Einfluss darauf haben, wie gut der Chip funktioniert. In diesem Artikel wird besprochen, wie man diese Makros effektiv anordnet, um hochwertige Ergebnisse zu erzielen.
Vorherige Ansätze zur Makro-Platzierung
Historisch gab es verschiedene Methoden zur Platzierung von Makros auf einem Chip. Diese Methoden lassen sich in drei Hauptkategorien einteilen:
Packungsbasierte Methoden: Dieser Ansatz konzentriert sich darauf, wie die verschiedenen Module oder Blöcke räumlich miteinander in Beziehung stehen. Es werden Techniken eingesetzt, die die Anordnung immer wieder anpassen, um das beste Layout zu erreichen. Dazu gehören Strategien wie Simulated Annealing oder Particle Swarm Optimization, die helfen, die beste Anordnung über mehrere Iterationen hinweg zu finden.
Analytische Methoden: Diese Methoden verwenden mathematische Gleichungen, um das Layout direkt zu verbessern. Dabei werden verschiedene Faktoren wie Drahtlängen und Timing berücksichtigt, um eine effizientere Anordnung zu schaffen.
Maschinenlern-basierte Methoden: In letzter Zeit haben einige Studien begonnen, künstliche Intelligenz zur Unterstützung der Makro-Platzierung zu nutzen. Diese Methoden konzentrieren sich darauf, die richtige Platzierung sicherzustellen, ohne auf spezifische Designmerkmale Rücksicht zu nehmen, die Experten oft berücksichtigen.
Obwohl Forscher Fortschritte bei der Makro-Platzierung gemacht haben, berücksichtigen viele Methoden nicht alle wichtigen Merkmale, die für hochwertige Designs erforderlich sind.
Unser Ansatz
Wir schlagen einen hierarchischen Ansatz zur Makro-Platzierung vor, der logische und physische Anordnungen umfasst. Die logische Gruppierung konzentriert sich darauf, wie die Blöcke logisch miteinander in Beziehung stehen, während die physische Gruppierung bestimmt, wie diese Blöcke im realen Raum platziert werden können.
Hierarchisches Floorplan-Schema
In unserer Methode behandeln wir die Anordnung in Ebenen. Die erste Ebene befasst sich mit der logischen Hierarchie, wo jedes kleine Modul in Cluster basierend auf ihrer Grösse und ihren Beziehungen platziert wird. Grössere Blöcke können andere Blöcke enthalten, was zu einem mehrstufigen System führt.
Die Platzierung dieser Cluster erfolgt durch einen strukturierten Prozess, der als Tiefensuche bezeichnet wird. Das ermöglicht es uns, effizient durch jede Ebene zu gehen und zu entscheiden, wo die Blöcke platziert werden.
Mehrstufiges Autoclustering
In der nächsten Phase wandeln wir das Netlist des Designs, das zeigt, wie verschiedene Teile verbunden sind, in Cluster um. Der Clustering-Prozess hilft, das Design zu vereinfachen. Während Benutzer manuell basierend auf logischen Merkmalen und Beziehungen clustern können, setzen wir eine Autoclustering-Engine ein, um automatisch Cluster zu erstellen. Das ist besonders nützlich für Designs mit komplexen Strukturen und automatisch generierten Namen.
Die Autoclustering-Engine analysiert die Verbindungen zwischen Blöcken und verteilt sie in eine gut organisierte physische Hierarchie. Jedes logische Modul wird zu seinem physischen Gegenstück. Cluster werden basierend auf Grösse und Verbindungsmustern zusammengeführt oder aufgeteilt, was hilft, die Anordnung zu optimieren.
Erstellen von gebündelten Pins
Um die Komplexität zu reduzieren, führen wir gebündelte Pins ein, die helfen, wie Verbindungen hergestellt werden, zu vereinfachen. Diese Pins sammeln Verbindungspunkte rund um die Ränder der Blöcke, was es leichter macht, ihre Beziehungen zu verstehen. Indem wir diese gebündelten Pins wie Cluster behandeln, bleiben die Verbindungen intakt und wir stellen sicher, dass das Design effizient ist.
Umgang mit Makro-Clustern
Wir trennen die Makro-Cluster von Standardzellen, um die Berechnungen zu erleichtern. Indem wir Verbindungen zwischen Makros und ihren entsprechenden Standardzellen-Clustern hinzufügen, verbessern wir die Eingliederung der Makros in das Gesamt-Layout.
Wir gruppieren auch Makros basierend auf ihren Formen. Dadurch wird der Platz zwischen den Blöcken minimiert und eine regelmässige Anordnung gefördert, die visuell und funktional effektiver ist.
Hinzufügen von Verbindungen für das Timing
Es ist wichtig, das Timing bei der Platzierung von Makros zu berücksichtigen. Wir erstellen Verbindungen zwischen Clustern, um die Bedeutung des Timings zu erfassen. Indem wir diese Verbindungen hinzufügen, stellen wir sicher, dass Komponenten, die zusammenarbeiten müssen, näher beieinander platziert werden.
Obwohl die genauen Abstände in der Anfangsanordnung kompliziert zu berechnen sind, finden wir Möglichkeiten, wichtige Verbindungen ohne umfangreiche Berechnungen zu erfassen. Das macht den Prozess schneller und effizienter.
Grobe Formgestaltungsprozess
Nachdem wir die Cluster eingerichtet haben, gehen wir zur richtigen Formgebung über. Dabei folgen wir bestimmten Richtlinien, um zu bestimmen, wie jedes Cluster aussehen wird. Für Standardzell-Cluster setzen wir Parameter fest, um sicherzustellen, dass sie in einem festgelegten Seitenverhältnis passen.
Für Makro-Cluster nutzen wir Techniken, um die besten Anordnungen zu finden, die den wenigsten Platz beanspruchen und gut in das Gesamtdesign passen. Wir passen immer wieder an, bis wir eine klare Form für jedes Cluster haben.
Abschluss der Makro-Platzierung
Sobald wir die Formen und Grössen unserer Cluster kennen, beginnen wir, spezifische Makros nacheinander in diese Cluster zu platzieren. Für jedes Makro-Cluster bewerten wir, wie gut die Makros zusammenpassen und welche Verbindungen sie zu anderen Clustern haben.
Um die Anordnung zu optimieren, folgen wir einem Satz von Bewegungen, die es uns erlauben, Makros auszutauschen, während die Gesamteffizienz erhalten bleibt. Dieser Schritt ist entscheidend, weil er hilft, die genutzte Fläche zu minimieren und die Distanz zwischen verbundenen Komponenten zu reduzieren.
Experimentelle Validierung
Um zu beweisen, dass unsere Methode effektiv funktioniert, führen wir mehrere Tests durch. Wir evaluieren unsere Makro-Platzierung unter verschiedenen Szenarien und vergleichen sie mit bestehenden kommerziellen Werkzeugen und früheren Methoden.
In diesen Tests zeigt unser Ansatz signifikante Verbesserungen im Vergleich zu traditionellen Methoden. Wir streben eine höhere Qualität in der Platzierung an, um sicherzustellen, dass die Makros so angeordnet sind, dass ihre Funktionalität verbessert wird.
Fazit
Die richtige Anordnung von Makros auf einem Chip ist entscheidend für die Sicherstellung seiner Leistung. Durch die Verwendung eines hierarchischen Ansatzes, der logische und physische Strukturen kombiniert, können wir bessere Anordnungen schaffen. Unsere Methode nutzt Autoclustering, gebündelte Verbindungen und Timing-Betrachtungen, um effizient hochwertige Layouts zu erstellen. Durch rigorose Tests zeigen wir, dass unser Ansatz besser ist als frühere Methoden und den Weg für effektivere Techniken zur Makro-Platzierung ebnet.
Diese Forschung betont die Wichtigkeit, mehrere Ebenen von Designeigenschaften für die Verbesserung der Makro-Platzierung im Chip-Design zu berücksichtigen, was letztendlich zu effektiveren und zuverlässigeren elektronischen Geräten führt.
Titel: Hier-RTLMP: A Hierarchical Automatic Macro Placer for Large-scale Complex IP Blocks
Zusammenfassung: In a typical RTL to GDSII flow, floorplanning or macro placement is a critical step in achieving decent quality of results (QoR). Moreover, in today's physical synthesis flows (e.g., Synopsys Fusion Compiler or Cadence Genus iSpatial), a floorplan .def with macro and IO pin placements is typically needed as an input to the front-end physical synthesis. Recently, with the increasing complexity of IP blocks, and in particular with auto-generated RTL for machine learning (ML) accelerators, the number of hard macros in a single RTL block can easily run into the several hundreds. This makes the task of generating an automatic floorplan (.def) with IO pin and macro placements for front-end physical synthesis even more critical and challenging. The so-called peripheral approach of forcing macros to the periphery of the layout is no longer viable when the ratio of the sum of the macro perimeters to the floorplan perimeter is large, since this increases the required stacking depth of macros. In this paper, we develop a novel multilevel physical planning approach that exploits the hierarchy and dataflow inherent in the design RTL, and describe its realization in a new hierarchical macro placer, Hier-RTLMP. Hier-RTLMP borrows from traditional approaches used in manual system-on-chip (SoC) floorplanning to create an automatic macro placement for use with large IP blocks containing very large numbers of hard macros. Empirical studies demonstrate substantial improvements over the previous RTL-MP macro placement approach, and promising post-route improvements relative to a leading commercial place-and-route tool.
Autoren: Andrew B. Kahng, Ravi Varadarajan, Zhiang Wang
Letzte Aktualisierung: 2023-12-03 00:00:00
Sprache: English
Quell-URL: https://arxiv.org/abs/2304.11761
Quell-PDF: https://arxiv.org/pdf/2304.11761
Lizenz: https://creativecommons.org/licenses/by/4.0/
Änderungen: Diese Zusammenfassung wurde mit Unterstützung von AI erstellt und kann Ungenauigkeiten enthalten. Genaue Informationen entnehmen Sie bitte den hier verlinkten Originaldokumenten.
Vielen Dank an arxiv für die Nutzung seiner Open-Access-Interoperabilität.
Referenz Links
- https://ctan.org/pkg/algorithmicx
- https://www.overleaf.com/project/62488b1d1ca81be9224da25b
- https://docs.ray.io/en/latest/tune/index.html
- https://www.teamvlsi.com/2021/02/floorplan-strategies-for-macro.html
- https://github.com/TILOS-AI-Institute/MacroPlacement
- https://open-source-eda-birds-of-a-feather.github.io/
- https://open-source-eda-birds-of-a-feather.github.io/doc/slides/BOAF-Junkin-DAC-Presentation.pdf
- https://github.com/google-research/circuit_training
- https://bit.ly/3wHzNfu
- https://github.com/jjcherry56/bsg_fakeram
- https://github.com/openhwgroup/cva6
- https://github.com/black-parrot/black-parrot
- https://github.com/pulp-platform/mempool
- https://github.com/The-OpenROAD-Project/OpenROAD/tree/master/src/mpl2