OpenRoad est la principale application fondamentale open-source pour la conception numérique semi-conducteurs. Le flux OpenRoad fournit un flux autonome et non humain en boucle (NHIL), un revirement de 24 heures de RTL-GDSII pour une exploration rapide de la conception et une mise en œuvre de la conception physique.
%% {
init: {
«thème»: «neutre»,
'Themevariables': {
«TextColor»: «# 000000»,
'notteTextColor': '# 000000',
«Fontsize»: «20px»
}
}
} %%
Organigramme LR
b0 [] --- b2 [] --- b4 [] --- orflow --- b1 [] --- b3 [] --- b5 []
Style B0 TRAV-Width: 0px, remplissage: # FFFFFF00, Couleur: # FFFFFF00
Style B1-AVET-largeur: 0px, remplissage: # FFFFFF00
Style B2-AVC-largeur: 0px, remplissage: # FFFFFF00
Style B3-AVC-largeur: 0px, remplissage: # ffffff00
Style B4-AVC-largeur: 0px, remplissage: # ffffff00
Style B5-AVC-largeur: 0px, remplissage: # ffffff00, couleur: # ffffff00
LinkStyle 0-AVET-largeur: 0px
LinkStyle 1-largeur de course: 0px
LinkStyle 2 tournée-large: 0px
LinkStyle 3-AVC-largeur: 0px
LinkStyle 4 tour de largeur: 0px
LinkStyle 5 tournée-large: 0px
Orflow de subgraph
Direction TB
Style Orflow Fill: # FFFFFF00, largeur de course: 0px
A [Verilog
+ bibliothèques
+ contraintes] -> flux
Style A Fill: # 74C2B5, trait: # 000000, largeur de course: 4px
flux de sous-graphes
Remplissage de flux de style: # FFFFFF00, largeur de course: 4px
Direction TB
B [synthèse]
B -> c [plancheur]
C -> d [placement]
D -> e [synthèse d'arbre d'horloge]
E -> f [routage]
F -> g [finition]
Style B Film: # F8CECC, trait: # 000000, largeur de course: 4px
Style C Fill: # FFF2CC, course: # 000000, largeur de course: 4px
Style D Fill: # CCE5FF, trait: # 000000, largeur de course: 4px
Style E Fill: # 67ab9f, trait: # 000000, largeur de course: 4px
Style F Fill: # FA6800, trait: # 000000, largeur de course: 4px
Style G Fill: # FF6666, trait: # 000000, largeur de course: 4px
fin
Flux -> h [gdsii
Disposition finale]
%% H --- H1 []
%% Style H1-AVET-largeur: 0px, remplissage: # FFFFFF00
%% LinkStyle 11-largeur de course: 0px
Style H Fill: # FF0000, trait: # 000000, largeur de course: 4px
fin
OpenRoad élimine les obstacles aux coûts, le risque de planification et l'incertitude dans la conception matérielle pour promouvoir l'accès ouvert à des logiciels de conception rapide et à faible coût et une expertise et une innovation système. L'application OpenRoad permet un contrôle de débit flexible via une API avec des liaisons dans TCL et Python.
OpenRoad est utilisé dans la recherche et les applications commerciales telles que,
OpenRoad favorise un écosystème dynamique d'utilisateurs grâce à une collaboration active et un partenariat grâce au développement de logiciels et à des alliances clés. Notre communauté d'utilisateurs croissante comprend des concepteurs de matériel, des ingénieurs logiciels, des collaborateurs de l'industrie, des amateurs de VLSI, des étudiants et des chercheurs.
OpenRoad préconise et permet fortement des initiatives d'éducation et de développement de la main-d'œuvre basées sur IC grâce à la formation de contenu et de cours dans plusieurs universités mondiales, les navettes Google-Skywater comprennent également des navettes de Foundries Globals, des concours de conception et des ateliers de conception IC. Le flux OpenRoad a été utilisé avec succès pour dater plus de 600 bandes de cassettes prêtes pour le silicium pour les technologies jusqu'à 12 nm.
OpenRoad fournit des scripts à flux OpenRoad en tant que prototypage et flux de bande à l'emploi natif. Cependant, il permet également la création de tous les contrôleurs de flux personnalisés basés sur les outils sous-jacents, la base de données et les moteurs d'analyse. Veuillez vous référer à la documentation de flux ici.
Les scripts de flux ouvert (ORF) sont un flux entièrement autonome, RTL-GDSII pour une architecture rapide et une exploration des espaces de conception, une prédiction précoce de QOR et une mise en œuvre détaillée de la conception physique. Cependant, ORFS permet également une intervention manuelle pour le contrôle des utilisateurs plus fin des étapes de flux individuelles via les commandes TCL et les API Python.
La figure ci-dessous montre les étapes principales des scripts de flux OpenRoad:
%% {init: {'Loglevel': 'Debug', 'thème': 'sombre'
}} %%
chronologie
Titre RTL-GDSII à l'aide de scénaristes OpenRoad-Flow
Synthèse
: Entrées [RTL, SDC, .LIB, .lef]
: Synthèse logique (yosys)
: Fichiers de sortie [netlist, sdc]
Plancher
: Initialisation du plan d'étage
: Placement IO (aléatoire)
: Placement de taille mixte axé sur le calendrier
: Placement de macro
: Insertion Tapcell et Welltie
: Génération PDN
Placement
: Placement mondial sans placage iOS
: Placement IO (optimisé)
: Placement mondial avec iOS placé
: Redimensionner et tamponner
: Placement détaillé
CTS: synthèse d'arbre d'horloge
: Optimisation du synchronisation
: Insertion de cellules de remplissage
Routage
: Routage global
: Routage détaillé
Finition
: Insertion de remplissage en métal
: Rapport de synchronisation de la signature
: Générer gdsii (klayout)
: Chèque DRC / LVS (klayout)
Voici les principales étapes d'une implémentation de conception physique à l'aide d'OpenRoad;
FloorplanningGlobal PlacementDetailed PlacementClock Tree SynthesisOptimize setup/hold timingGlobal RoutingDetailed RoutingChip FinishingL'interface graphique OpenRoad est un puissant outil de visualisation, d'analyse et de débogage avec une interface TCL personnalisable. Les chiffres ci-dessous montrent des vues sur l'interface graphique pour divers étapes d'écoulement, notamment le plan de plancher, la congestion de placement, le CTS et la conception post-routée.





L'application OpenRoad est indépendante de PDK. Cependant, il a été testé et validé avec des PDK spécifiques dans le contexte de divers contrôleurs de débit.
OpenLane prend en charge Skywater 130 nm et GlobalFoundries 180 nm.
OpenRoad-Flow-Scripts soutient plusieurs PDK publics et privés, notamment:
GF180 - 180 nmSKY130 - 130 nmNangate45 - 45 nmASAP7 - Finfet prédictif 7nm Ces PDK sont pris en charge uniquement dans les scripts de flux OpenRoad. Ils sont utilisés pour tester et calibrer OpenRoad contre les plates-formes commerciales et assurer un bon QOR. Les PDK et les fichiers spécifiques à la plate-forme pour ces kits ne peuvent pas être fournis en raison des restrictions NDA. Cependant, si vous pouvez accéder à ces plateformes indépendamment, vous pouvez créer vous-même les fichiers spécifiques à la plate-forme nécessaire.
GF55 - 55 nmGF12 - 12nmIntel22 - 22nmIntel16 - 16nmTSMC65 - 65 nm OpenRoad a été utilisé pour une implémentation physique complète dans plus de 600 bandes de bandes dans Sky130 et GF180 via les programmes de navette MPW et de chipignite parrainés par Google.


Le projet OpenRoad ajoute activement avec succès les conceptions de navette MPW aux tests de régression CI. Des exemples de conceptions incluent les noyaux de processeur ouvert, les SOC basés sur RISC-V, les mineurs de crypto-monnaie, les processeurs d'applications robotiques, les émetteurs-récepteurs radio-satellites amateurs, le microwatt basé sur l'OpenPower, etc.
Pour construire des outils OpenRoad localement dans votre machine, suivez les étapes à partir d'ici.
Il existe un ensemble de scripts de test de régression exécutable dans ./test/ .
# run tests for all tools
./test/regression
# run all flow tests
./test/regression flow
# run <tool> tests
./test/regression < tool >
# run all <tool>-specific unit tests
cd src/ < tool >
./test/regression
# run only <TEST_NAME> for <tool>
cd src/ < tool >
./test/regression < TEST_NAME > Les tests de flux vérifient les résultats tels que le pire relâchement contre les valeurs de référence. Utilisez report_flow_metrics [test]... pour voir toutes les mesures.
% report_flow_metrics gcd_nangate45
insts area util slack_min slack_max tns_max clk_skew max_slew max_cap max_fanout DPL ANT drv
gcd_nangate45 368 564 8.8 0.112 -0.015 -0.1 0.004 0 0 0 0 0 0
Pour mettre à jour une régression défaillante, suivez les instructions ci-dessous:
# update log files (i.e. *ok)
save_ok <TEST_NAME>
# update "*.metrics" for tests that use flow test
save_flow_metrics <TEST_NAME>
# update "*.metrics_limits" files
save_flow_metrics_limits <TEST_NAME> openroad [-help] [-version] [-no_init] [-exit] [-gui]
[-threads count|max] [-log file_name] cmd_file
-help show help and exit
-version show version and exit
-no_init do not read .openroad init file
-threads count|max use count threads
-no_splash do not show the license splash at startup
-exit exit after reading cmd_file
-gui start in gui mode
-python start with python interpreter [limited to db operations]
-log <file_name> write a log in <file_name>
cmd_file source cmd_file
OpenRoad Sources Le fichier de commande TCL ~/.openroad à moins que l'option de ligne de commande -no_init ne soit spécifiée.
OpenRoad s'approvisionne ensuite le fichier de commande cmd_file s'il est spécifié sur la ligne de commande. À moins que l'indicateur de ligne de commande -exit ne soit spécifié, il entre dans un interprète de commande TCL interactif.
Une liste des outils / modules disponibles inclus dans l'application OpenRoad et leurs descriptions sont disponibles ici.
OpenRoad utilise Git pour le contrôle des versions et les contributions. Familiarisez-vous avec un tutoriel QuickStart pour la contribution ici.
Vous voyez des avertissements ou des erreurs ouverts que vous ne comprenez pas? Nous avons compilé un tableau de tous les messages et vous pouvez potentiellement trouver votre réponse ici.
Licence BSD 3-CLAUSE. Voir le fichier de licence.