La conception RTL (Register Transfer Level) est une étape essentielle dans le processus de conception des circuits numériques. Elle définit et optimise la fonctionnalité logique d'une conception numérique à un niveau abstrait avant que la configuration physique du circuit soit spécifiée. Les ingénieurs convertissent le comportement souhaité de haut niveau de leur conception en code logiciel à l'aide d'un langage de description du matériel (HDL) comme VHDL ou Verilog.
Les premiers HDL capables de modéliser au niveau du RTL ont été développés dans les années 1980 et ont évolué pour devenir des systèmes de conception complets qui permettent aux ingénieurs de modéliser le flux de données dans les circuits électroniques.
Au fil du temps, les conceptions ont gagné en ampleur et en complexité, et la technologie de fabrication a permis d'accéder à de nouvelles façons d'effectuer des opérations logiques et mathématiques, une évolution dont les méthodes de conception RTL ont suivi le tempo. La conception RTL est progressivement devenue une étape incontournable dans le processus de conception numérique qui relie les étapes de spécification du système et de conception du circuit.
La nature abstraite de la description RTL permet de réaliser des études et des itérations de conception rapides, et ainsi d'obtenir une conception acceptable et optimisée avant de se plonger dans les phases plus complexes et plus longues du processus de conception.
La conception RTL est un élément clé du cycle de conception des circuits intégrés qui permet aux ingénieurs d'optimiser leurs conceptions aux étapes du registre, de l'opérateur et du flux de données avant de commencer à s'inquiéter des composants physiques et de la façon dont ils sont connectés. Dans cet article, nous allons revenir sur quelques principes fondamentaux, décrire où la conception RTL s'intègre dans la conception des circuits numériques et expliquer le flux de conception RTL. Nous montrerons ensuite comment la conception RTL s'intègre dans la conception de puces FGPA (réseaux de portes programmables in situ) et ASIC (circuits intégrés spécifiques à une application), et révélerons à quoi ressemble l'avenir de la conception RTL.
L'expression « transfert entre registres » fait référence à la façon dont le langage décrit le flux de données entre les registres et à la manière d'appliquer des opérations logiques et mathématiques aux données. Les ingénieurs utilisent la conception RTL pour décrire les blocs fonctionnels, afin de définir le comportement d'un composant discret destiné à exécuter une fonction spécifique. Chaque bloc fonctionnel comporte une description des registres du bloc, appelée circuit séquentiel, et un circuit combinatoire qui contient l'opération logique du bloc fonctionnel. Ils utilisent également le HDL pour décrire comment les blocs fonctionnels sont connectés afin de définir le flux de données à travers le circuit.
La force de la conception RTL tient à la façon dont elle part d'un système complexe pour le diviser en blocs relativement simples représentés par du code HDL. Nous récapitulerons ici quelques principes fondamentaux qui sont importants pour comprendre comment la conception RTL est utilisée.
Registres
En conception RTL, un élément matériel qui peut stocker une quantité définie de données est appelé un registre. Ils sont généralement implémentés sous forme de bascules D. La valeur d'un registre peut être lue comme entrée d'une opération logique ou définie comme sortie d'une opération. La conception RTL a pour principal objet de caractériser la manière dont les données circulent entre les registres et dont elles sont modifiées par une opération.
Langage de conception du matériel (HDL)
La partie la plus importante de la conception RTL est le code qui décrit le comportement du circuit. Un HDL est un langage de spécification qui ressemble beaucoup à un langage de programmation, avec des variables, des appels de fonction, des instructions logiques comme if-then-else et CASE, des instructions booléennes et des mathématiques. Cependant, les HDL sont spécifiquement conçus pour décrire le comportement et la structure des circuits électroniques, généralement des circuits intégrés. Le HDL se distingue des langages de programmation par le fait que le concept de temps est inclus dans le langage, de sorte que les opérations peuvent être déclenchées par des horloges dans le circuit.
Pour ce faire, des variables définissent la valeur de l'horloge numérique dans le circuit, comme dans cet exemple simple de VHDL d'un inverseur où la sortie (Q) est définie sur la valeur d'entrée (D) lorsque la valeur d'horloge, clk, passe d'un état bas à un état haut (front montant) :
D <= not Q;
process(clk)
begin
if rising_edge(clk) then
Q <= D;
end if;
end process;
Le HDL le plus couramment utilisé, le VHDL (Very High-Speed Integrated Circuit Hardware Description Language), est un langage verbeux et fortement typé, avec une syntaxe qui ne ressemble pas au langage C. C'est le HDL privilégié pour décrire des conceptions de systèmes plus complexes.
Un autre HDL commun est Verilog ou son surensemble, SystemVerilog. Il est plus concis, faiblement typé et flexible, et sa syntaxe ressemble à celle du code C. Parce qu'il est facile à maîtriser et à utiliser pour créer des descriptions, les ingénieurs le préfèrent au démarrage ou lorsque leurs circuits ne sont pas trop compliqués. L'IEEE définit Verilog et VHDL comme des normes professionnelles.
Voici un exemple simple de porte AND dans les deux langages. Une porte AND possède deux entrées et une sortie. Si les entrées sont toutes deux égales à 1, la sortie est égale à 1. Si elles ne sont pas égales ou si les deux sont définies sur 0, la sortie est 0.
VHDL décrit une porte AND comme suit :
entity my_and is -- First, you define the entity
port (
inp1: in std_logic; -- The first port
inp2: in std_logic; -- The second port
rst: out std_logic -- The output port
);
end my_and;
architecture blk of my_and is -- Next, define the architecture
begin
process(inp1, inp2) -- With the inputs, do the following
Begin
-- Use a simple if-then-else statement
if((inp1=’1’) and inp1=’1’))then
rst <= ’1’;
else
rst <= ’0’;
End if;
end process
end blk;
En Verilog, la porte AND ressemble à ceci :
module my_and(inp1,inp2,rst); // define the module call
input inp1, inp2; // define inputs and output
output rst;
assign rst = inp1 & inp2; // use the & (and) operator
endmodule
La logique prend la valeur aux deux ports d'entrée et définit la sortie sur 1 si les deux ports sont 1. C'est un exemple simple, mais ce type de code peut représenter chaque entité du système et peut ensuite être combiné pour définir un circuit numérique entier. Les blocs de construction de base typiques comprennent les additionneurs, les multiplicateurs, les compteurs, la mémoire et les machines d'état. Une fois que l'ingénieur concepteur a défini le système, le code est envoyé à un compilateur. S'il compile sans erreur, l'ingénieur peut utiliser le résultat pour tester son système.
Opérations logiques
Il existe deux types d'opérations en conception RTL. Les premières, les opérations logiques, effectuent une évaluation et une modification par bit des données stockées dans des registres. Les opérations logiques telles que AND, OR, NOT, XOR et SHIFT sont créées en définissant le comportement logique en HDL. L'exemple ci-dessus montre comment un AND peut être représenté en VHDL et Verilog. Les opérations logiques représentent des portes logiques dans le matériel.
Opérations arithmétiques
Les opérations arithmétiques constituent le deuxième type d'opérations utilisé en conception RTL. Elles prennent les données dans les registres et additionnent, soustraient, multiplient et divisent. Elles sont représentées en HDL avec des opérateurs mathématiques standard. Par exemple, une addition de deux nombres en VHDL utiliserait la ligne suivante :
rst <= inp1 + inp2;
— où inp1 et inp2 sont deux registres d'entrée, et rst est affecté au registre de sortie. Les opérations arithmétiques en RTL représentent des éléments physiques dédiés tels que des additionneurs, des soustracteurs, des multiplicateurs et des diviseurs.
Actions synchrones et asynchrones
La conception RTL peut représenter le flux de données de manière synchrone ou asynchrone. En synchrone, une routine est exécutée, ou déclenchée, par l'entrée d'horloge système de la fonction. En asynchrone, la routine est exécutée lorsqu'une valeur d'un ou plusieurs ports d'entrée change d'une manière spécifique. Cela est mis en œuvre en vérifiant les valeurs d'entrée de l'entrée d'horloge ou des entrées sans horloge pour voir si elles ont changé avec une instruction IF.
Le flux de conception des circuits intégrés (CI) actuels implique de partir d'une spécification de ce que le dispositif doit faire, pour la transformer en une puce semi-conductrice encapsulée. Le niveau d'abstraction offert par la conception RTL permet aux ingénieurs de se concentrer sur les fonctions de niveau supérieur du système sans avoir à s'intéresser aux détails de la mise en œuvre physique de la conception.
La première étape du flux de conception d'un CI consiste à définir les spécifications du système et la conception architecturale. Ces informations sont converties en code HDL. Les ingénieurs utilisent ensuite ce code pour définir la conception fonctionnelle et logique. Une fois cette phase achevée, la conception est convertie en une netlist, qui sert ensuite à créer la conception du circuit, suivie par le reste du processus de conception.
La représentation abstraite à l'aide de la conception RTL est faite le plus en amont possible dans le processus de conception ; avant que le temps et l'argent ne soient consacrés à la conception physique, à la vérification de la conception physique ou à la fabrication concrète du matériel. L'insertion de l'étape de conception RTL dans le processus nécessite une bonne intégration entre la spécification du système au départ et des outils puissants qui convertissent les registres, les opérations et le flux de données en un circuit réel lorsque la conception RTL est terminée.
Le flux de conception RTL a pour objectif de définir et optimiser la fonctionnalité d'un circuit intégré, généralement un dispositif FPGA ou ASIC. Les ingénieurs concepteurs utilisent le flux de conception RTL tout d'abord pour définir la logique et le flux du dispositif, afin de tester et optimiser le système, puis pour convertir la définition RTL en netlist. Les cinq étapes suivantes définissent la méthodologie de conception RTL type.
1. Synthèse de haut niveau
La première tâche dans le flux consiste à convertir les spécifications du dispositif en code HDL, avec le moins de modifications possible. Dans la plupart des cas, les ingénieurs représentent le comportement souhaité du dispositif dans un langage de programmation standard tel que C ou C++. Un outil logiciel décompose ensuite les algorithmes du modèle logiciel dans le langage de spécification choisi. Cette étape peut être sautée pour les conceptions simples, mais pour les plus complexes, elle peut économiser beaucoup d'efforts.
2. Codage RTL
Dans un deuxième temps, les ingénieurs créent ou affinent le code. Les concepteurs entrent dans les détails des registres spécifiques, des opérations dont ils ont besoin et de la façon dont les données circulent. Une partie importante de cette étape est l'utilisation de modules pour décrire les opérations courantes et les parties spécifiques du système. Une fois qu'un module est créé, il peut être réutilisé le cas échéant, simplifiant grandement la complexité de la conception globale.
3. Optimisation des performances, de la puissance et de la surface (PPA)
Le codage terminé, le processus d'optimisation commence. L'objectif de cette étape est d'améliorer les performances, de limiter la consommation d'énergie et de réduire la taille physique de la conception.
Simulation de synchronisation et logique
Les outils de simulation permettent d'effectuer une analyse de synchronisation et de suivre les valeurs des registres dans l'ensemble du système. La conception est vérifiée au niveau du transfert entre registres pour s'assurer qu'il n'y a pas de problèmes de synchronisation dans le circuit et que les opérations produisent les sorties attendues. L'équipe de conception travaille alors à déboguer tous les problèmes du système, tels que les glitchs d'alimentation, le plus tôt possible dans le processus de conception.
Estimation de la puissance
Chaque dispositif du système consomme une certaine quantité d'énergie, que les ingénieurs concepteurs doivent connaître pour effectuer des itérations sur leur conception afin de comprendre la distribution de cette énergie et en limiter la consommation. Le logiciel Ansys PowerArtist™ est utilisé par de nombreuses entreprises de conception de semi-conducteurs de premier plan pour analyser, profiler et réduire la puissance au niveau du transfert entre registres. Il offre un délai d'exécution rapide qui permet aux équipes de conception de décomposer la puissance, d'identifier le code RTL inefficace en termes de consommation et d'étiqueter chaque bascule mal exploitée dans la conception.
Réduction de la surface
Chaque composant d'un circuit intégré occupe de l'espace physique, tout comme le routage entre ces composants. Bien que le processus de conception RTL ne tienne pas compte de leur taille physique, il capture néanmoins leur nombre et la complexité des connexions entre eux.
4. Vérification
Une fois la conception optimisée, elle doit être vérifiée pour s'assurer que les spécifications sont toutes respectées. Il s'agit d'une partie essentielle du processus de conception, et toutes les exigences doivent être vérifiées avant que la conception puisse se poursuivre. Elle est effectuée soit avec la simulation RTL, soit à l'aide d'une vérification formelle.
Simulation RTL : Divers outils logiciels sont utilisés pour vérifier dynamiquement la conception. Des vecteurs d'entrée sont appliqués et les vecteurs de sortie résultants sont comparés aux résultats attendus. Les entrées et sorties sont généralement représentées sous forme de formes d'onde afin que l'ingénieur concepteur puisse inspecter visuellement le comportement du système.
Vérification formelle : Il s'agit d'un processus de vérification statique qui utilise l'automatisation pour convertir un ensemble d'attentes comportementales en algorithmes mathématiques qui explorent l'ensemble de l'espace de fonctionnement du système. Les résultats sont ensuite évalués mathématiquement pour en vérifier l'exactitude.
5. Synthèse RTL
Une fois que la conception du système a été entièrement vérifiée, la synthèse RTL est utilisée pour convertir la représentation en code HDL de la conception RTL en une netlist au niveau des portes. Il s'agit de l'interface pour les outils qui convertissent le schéma obtenu en une configuration physique dans un outil d'automatisation de la conception électronique (EDA). Des entreprises comme Synopsys ont intégré une large palette d'outils de synthèse dans les plates-formes EDA.
Les circuits intégrés peuvent être divisés en deux classes. Les circuits intégrés spécifiques aux applications (ASIC) sont conçus sur mesure pour des applications ou des tâches spécifiques. Après fabrication, la logique dans la puce ne peut plus être modifiée. Les puces ASIC sont par exemple les modules de mémoire, les enregistreurs vocaux numériques, les processeurs de signal optimisés, les microprocesseurs, les unités centrales de traitement (CPU) ou même des dispositifs aussi complexes qu'un système sur une puce qui comprend E/S, CPU, mémoire et plus encore.
Les puces FPGA (Field-programmable Gate Array, Réseau de portes programmables in-situ) sont des puces semi-conductrices qui peuvent être reprogrammées après leur fabrication. Au lieu d'intégrer la logique dans la géométrie de la puce, les FPGA ont des réseaux de blocs logiques reliés par un réseau de connexion qui peut également être programmé.
La conception RTL joue le même rôle dans la première partie des deux flux de conception. Une fois la synthèse RTL terminée, le flux de conception des ASIC exige que les ingénieurs planifient et mettent en place les circuits physiques, définissant ce que l'on appelle le plan de masse. Dans une conception de FPGA, le code RTL est converti directement en une netlist qui sait quels blocs logiques sont disponibles et configure ces blocs dans l'étape placement-routage.
Les langages de description de matériel ont commencé à être utilisés pour représenter le comportement souhaité des systèmes numériques dans les années 1970 et 1980. Cette pratique a rencontré un grand succès, car l'intégration à très grande échelle (VLSI) gagnait alors en popularité et a suivi le rythme des développements ultérieurs dans la conception de CI. Compte tenu du fait que la taille des composants des circuits intégrés continue de diminuer et les vitesses d'horloge d'augmenter, et qu'une seule puce renferme toujours plus de fonctionnalités, les ingénieurs concepteurs se trouvent confrontés à des défis croissants.
La complexité de la conception n'a pas ralenti et les outils RTL continuent de relever ces défis. Les entreprises qui développent les suites d'outils que les concepteurs utiliseront pour définir la prochaine génération de circuits intégrés se concentreront sur quelques domaines clés afin d'améliorer la facilité d'utilisation, la capacité et la fonctionnalité du flux de conception RTL. Voici quelques-uns de ces domaines d'intérêt :
La gestion de l'alimentation continue d'être l'un des plus grands défis de l'ensemble du processus de conception des circuits intégrés, et l'optimisation RTL demeure l'espace idéal pour comprendre et gérer les chutes de tension qui consomment de l'énergie dans un système. Les améliorations apportées à des outils tels que le logiciel PowerArtist, offrant des options enrichies, une meilleure visibilité et une vitesse accrue, aideront les équipes à relever ce défi.
À mesure que le nombre d'outils disponibles pour la conception, la simulation, la vérification et la validation augmentera, la capacité des outils existants va également s'accroître. Les entreprises qui les fournissent et les associations professionnelles comme l'IEEE devront suivre le rythme en mettant à jour et en améliorant les normes, mais aussi en proposant des outils qui peuvent rendre le flux entre les applications aussi transparent que possible.
De nombreux outils employés dans le processus de conception de circuits intégrés utilisent des formes d'apprentissage automatique (machine learning ou ML) et des systèmes experts pour accélérer les étapes du processus, en particulier dans la configuration des circuits physiques. Cette tendance ne fera que se renforcer avec des algorithmes de ML améliorés et l'utilisation d'outils d'intelligence artificielle (IA) générative pour suggérer les prochaines étapes ou les solutions les plus probables aux problèmes.
Les fournisseurs du secteur RTL travaillent d'arrache-pied pour améliorer la capacité des ingénieurs à convertir leurs spécifications système de haut niveau en langages matériels de haut niveau avec une plus grande rapidité et avec des conceptions plus proches de la configuration optimale.
Il existe une marge de progression significative pour la productivité et l'optimisation lorsque les portes d'une description RTL sont converties en transistors réels dans l'étape de synthèse RTL. À l'entrée de la géométrie physique dans la conception, il existe une opportunité de prendre des décisions éclairées qui simplifieront les processus en aval de la configuration du circuit.