Problématique « utilisation » Fonctionnalités Performance Consommation Fiabilité Prix du produit Pascal.Benoit@univ-montp2.fr
Problématique « fabrication » Miniaturisation Intégration SIP Intégration 3D Nouvelles technologies Rendement Variabilité Coûts de fabrication Pascal.Benoit@univ-montp2.fr
Problématique « conception » Problématiques « fabrication » Miniaturisation Intégration SIP Intégration 3D Nouvelles technologies Rendement Variabilité Coûts de fabrication Problématiques « utilisation » Fonctionnalités Performance Consommation Fiabilité Prix du produit Problématiques « conception » Pascal.Benoit@univ-montp2.fr
Problématique « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception “The root cause of variability in bulk CMOS technology is mainly RDF, random dopant fluctuations, i.e. variations in the exact number and position of dopant atoms in the channel of the transistor.” Capteurs Process Pascal.Benoit@univ-montp2.fr
Variabilité – Ring Oscillator Cpt Compteur n Activation Commande Horloge Résultat Commande Oscillateur Pascal.Benoit@univ-montp2.fr
Problématique « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception Exemple: techniques TMR Pascal.Benoit@univ-montp2.fr
Problématique « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception 3 2 1 T1 T3 T2 T4 3 2 1 T1 T3 T2 T4 Sender T1 IVLC T2 IQUANT T3 IDCT T4 Pascal.Benoit@univ-montp2.fr
Problématique « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception Pascal.Benoit@univ-montp2.fr
Problématique « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception Pascal.Benoit@univ-montp2.fr
Problématique « conception » Design productivity Comment faire pour tirer le meilleur bénéfice de l’intégration? ABSTRACTION & AUTOMATISATION Pascal.Benoit@univ-montp2.fr
Exemple: registre 16 bits library ieee ; use ieee.std_logic_1164.all; entity dff isport(data_in:in std_logic_vector(15 downto 0); clock:in std_logic; data_out:out std_logic_vector(15 downto 0)); end dff; architecture behv of dff is begin process(data_in, clock) if (clock='1' and clock'event) then data_out <= data_in; end if; end process; end behv; 15 lignes de VHDL ∼ 96 portes logiques ∼ 768 segments Pascal.Benoit@univ-montp2.fr ∼ 384 transistors
Un exemple d’abstraction… Registre simple16 bits… Description VHDL 15 lignes de code Portes logiques 96 portes logiques Circuit électrique 384 transistors Dessin des masques 768 « segments » En résumé, l’abstraction permet de décrire plus simplement des choses compliquées… Outils CAO pour automatiser le passage d’un niveau d’abstraction à un autre Outils de synthèse Attention: ce n’est pas magique… Vérification: outils de simulation, etc. Pascal.Benoit@univ-montp2.fr
Problématiques « conception » Problématiques « fabrication » Miniaturisation Intégration SIP Intégration 3D Nouvelles technologies Rendement Variabilité Coûts de fabrication Problématiques « utilisation » Fonctionnalités Performance Consommation Fiabilité Prix du produit Problématiques « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception Pascal.Benoit@univ-montp2.fr
Problématiques « conception » Problématiques « fabrication » Miniaturisation Intégration SIP Intégration 3D Nouvelles technologies Rendement Variabilité Coûts de fabrication Problématiques « utilisation » Fonctionnalités Performance Consommation Fiabilité Prix du produit Problématiques « conception » Fonctionnalités / Partitionnement Performance / Consommation / Surface Variabilité Fiabilité Programmation / Debug Vérification / Test Coûts de conception Pascal.Benoit@univ-montp2.fr
« Lois de l’évolution » Pascal.Benoit@univ-montp2.fr
QUIZZ Tendance actuelle sur le marché de la microélectronique Application? Technologie? Performance des circuits intégrés -> fréquence: MHz GHz THz Complexité des circuits intégrés -> nombre de transistors 1 000 000 10 000 000 100 000 000 1 000 000 000 Pascal.Benoit@univ-montp2.fr
QUIZZ Complexité de ces circuits au début des années 1970 100 1 000 100 000 Consommation des circuits intégrés -> Application Processor d’un SE en activité: 100 nW 100 uw 100 mw Consommation des circuits intégrés -> Processor d’un PC en activité: 1 W 10 W 100 W Pascal.Benoit@univ-montp2.fr
QUIZZ Capacité des batteries de téléphone portable 10 mAh 100 mAh 1 000 mAh Semiconductors Techno providers Asia Europe US Qu’est-ce qu’une entreprise Fabless? Une entreprise qui ne conçoit pas ses circuits Une entreprise qui ne produit pas ses circuits Pascal.Benoit@univ-montp2.fr
QUIZZ Quel est le nœud technologique le plus avancé en production 45 nm 32/28 nm 22/20 nm Quel sera le prochain nœud technologique? Que représente cette dimension? Pascal.Benoit@univ-montp2.fr
QUIZZ Quels sont les deux problèmes majeurs dans les technologies récentes? Quelles est la différence entre la dérive technologique, et la variabilité? Quelles sont les nouvelles pistes technologiques de la CMOS? Quelles sont les perspectives potentielles post-CMOS? Pascal.Benoit@univ-montp2.fr
QUIZZ Quelle est la partie prépondérante dans la phase de conception d’un CIN / SIN? Design Vérification Pour un CIN programmable, la partie logicielle est-elle réalisée pendant la conception ou après la fabrication du circuit? Pascal.Benoit@univ-montp2.fr
Flot de Conception générique CIN Cahier des charges / Spécifications du composant Processeur Multimédia … F = 500 MHz P = 1 Watt Description VHDL OK Outil de Simulation Synthèse Logique Cibles Matérielles Bibliothèque Technologique Description Logique Synthèse Physique Outils de CAO Le passage de la description comportementale à la description structurelle s’appelle la « synthèse logique ». Le passage du niveau structurel au niveau « masques » s’appelle la « synthèse physique ». Au niveau masque, on parle aussi de niveau « physique ». Description comportementale = description fonctionnelle. Description Physique Niveau d’abstraction du composant Pascal.Benoit@polytech.univ-montp2.fr
Cibles matérielles Cibles matérielles Logic Standard Logic ASIC PLD Gate Arrays Cell-Based IC Full Custom IC SPLD (PLA) CPLD FPGA SPLD Simple Programmable Logic Device CPLD Complex PLD (Programmable Logic Device) FPGA Field Programmable Gate Array Pascal.Benoit@univ-montp2.fr
HDL: Cibles matérielles Logic Standard Logic ASIC PLD Gate Arrays Cell-Based IC Full Custom IC SPLD (PLA) CPLD FPGA SPLD Simple Programmable Logic Device CPLD Complex PLD (Programmable Logic Device) FPGA Field Programmable Gate Array Pascal.Benoit@univ-montp2.fr
Flot de Conception Silicium Cahier des charges / Spécifications du circuit Processeur Multimédia … F = 500 MHz P = 1 Watt Description VHDL OK Outil de Simulation Synthèse Logique Fondeur Bibliothèque Technologique Description Logique Synthèse Physique Outils de CAO Le passage de la description comportementale à la description structurelle s’appelle la « synthèse logique ». Le passage du niveau structurel au niveau « masques » s’appelle la « synthèse physique ». Au niveau masque, on parle aussi de niveau « physique ». Description comportementale = description fonctionnelle. Description Physique Niveau d’abstraction du circuit Pascal.Benoit@polytech.univ-montp2.fr
Flot de Conception Silicium Principaux acteurs de la CAO Le passage de la description comportementale à la description structurelle s’appelle la « synthèse logique ». Le passage du niveau structurel au niveau « masques » s’appelle la « synthèse physique ». Au niveau masque, on parle aussi de niveau « physique ». Description comportementale = description fonctionnelle. En réalité, c’est une trentaine d’outils nécessaires…
Flot de Conception FPGA Cahier des charges / Spécifications du composant Processeur Multimédia … F = 500 MHz P = 1 Watt Description VHDL OK Outil de Simulation Synthèse Logique Programmation du FPGA Bibliothèque Technologique Description Logique Synthèse Physique Outils de CAO Le passage de la description comportementale à la description structurelle s’appelle la « synthèse logique ». Le passage du niveau structurel au niveau « masques » s’appelle la « synthèse physique ». Au niveau masque, on parle aussi de niveau « physique ». Description comportementale = description fonctionnelle. Description Physique Niveau d’abstraction du composant Pascal.Benoit@polytech.univ-montp2.fr
Flot de Conception FPGA Les fabricants de FPGA fournissent leurs propres outils CAO… Le passage de la description comportementale à la description structurelle s’appelle la « synthèse logique ». Le passage du niveau structurel au niveau « masques » s’appelle la « synthèse physique ». Au niveau masque, on parle aussi de niveau « physique ». Description comportementale = description fonctionnelle.
Flot de Conception générique Cahier des charges / Spécifications du composant Processeur Multimédia … F = 500 MHz P = 1 Watt Description VHDL OK Outil de Simulation Synthèse Logique Cibles Matérielles Bibliothèque Technologique Description Logique Synthèse Physique Outils de CAO Le passage de la description comportementale à la description structurelle s’appelle la « synthèse logique ». Le passage du niveau structurel au niveau « masques » s’appelle la « synthèse physique ». Au niveau masque, on parle aussi de niveau « physique ». Description comportementale = description fonctionnelle. Description Physique Niveau d’abstraction du composant Pascal.Benoit@polytech.univ-montp2.fr
VHDL Entretien d’embauche! Retour sur les notions de base Circuit logique Latch / Flip-Flop Compteur Instanciation Testbench MEF Gestion du Reset / Clock Entretien d’embauche! Pascal.Benoit@univ-montp2.fr
Latch vs Flip Flop (CMOS) Quand CK=1, transparent Quand CK=0, mémoire CK D Q CK CK CK CK CK D Q CK CK CK CK CK CK Pascal.Benoit@univ-montp2.fr
CLK D Qlatch Qff Pascal.Benoit@univ-montp2.fr
Latch vs Flip Flop (HDL) Un codage inapproprié peut entrainer la génération de latches à la place de flip flops ("if" and "case" incomplete statements). A éviter clairement, les latches sont plus sensibles aux glitches. Pascal.Benoit@univ-montp2.fr
Latch vs Flip Flop (HDL) Un codage inapproprié peut entrainer la génération de latches à la place de flip flops ("if" and "case" incomplete statements). A éviter clairement, les latches sont plus sensibles aux glitches. Surface Latch< Surface Flip-flop Pascal.Benoit@univ-montp2.fr
Latch vs Flip Flop (HDL) Un codage inapproprié peut entrainer la génération de latches à la place de flip flops ("if" and "case" incomplete statements). A éviter clairement, les latches sont plus sensibles aux glitches. Surface Latch< Surface Flip-flop Les Flip flops permettent de synchroniser la logique combinatoire Pascal.Benoit@univ-montp2.fr
Latch vs Flip Flop (HDL) Un codage inapproprié peut entrainer la génération de latches à la place de flip flops ("if" and "case" incomplete statements). A éviter clairement, les latches sont plus sensibles aux glitches. Surface Latch< Surface Flip-flop Les Flip flops permettent de synchroniser la logique combinatoire Latches peu compatibles avec les outils de DFT Pascal.Benoit@univ-montp2.fr
Latch vs Flip Flop (HDL) Un codage inapproprié peut entrainer la génération de latches à la place de flip flops ("if" and "case" incomplete statements). A éviter clairement, les latches sont plus sensibles aux glitches. Surface Latch< Surface Flip-flop Les Flip flops permettent de synchroniser la logique combinatoire Latches peu compatibles avec les outils de DFT La plupart des outils CAO optimisent mal les timings en présence de latches, pire, peuvent passer à côté d’un chemin critique… Pascal.Benoit@univ-montp2.fr
Logic Design Objectif: concevoir un composant SYNTHETISABLE Règles de design Naming Vendor independence IEEE standard types Commentaires IP Reuse Design synchrone Partitionnement RTL Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Respecter les spécifications! Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Respecter les spécifications! Nommage explicite: signaux, ports, fonctions et paramètres. Exemple: pas ra pour le bus d’adresse de la RAM, plutôt ram_addr or RamAddr (VHDL insensible à la casse). Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Respecter les spécifications! Nommage explicite: signaux, ports, fonctions et paramètres. Exemple: pas ra pour le bus d’adresse de la RAM, plutôt ram_addr or RamAddr (VHDL insensible à la casse). Utiliser clk pour les signaux d’horloge S’il y a plusieurs horloges, utiliser clk comme préfixe pour tous les signaux d’horloge clk4m, clk8m Même nom pour tous les signaux d’horloge pilotés par le même signal Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Respecter les spécifications! Nommage explicite: signaux, ports, fonctions et paramètres. Exemple: pas ra pour le bus d’adresse de la RAM, plutôt ram_addr or RamAddr (VHDL insensible à la casse). Utiliser clk pour les signaux d’horloge S’il y a plusieurs horloges, utiliser clk comme préfixe pour tous les signaux d’horloge clk4m, clk8m Même nom pour tous les signaux d’horloge pilotés par le même signal Pour les signaux actifs sur niveau bas, on suffixe avec underscore x (toto_x). Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Respecter les spécifications! Nommage explicite: signaux, ports, fonctions et paramètres. Exemple: pas ra pour le bus d’adresse de la RAM, plutôt ram_addr or RamAddr (VHDL insensible à la casse). Utiliser clk pour les signaux d’horloge S’il y a plusieurs horloges, utiliser clk comme préfixe pour tous les signaux d’horloge clk4m, clk8m Même nom pour tous les signaux d’horloge pilotés par le même signal Pour les signaux actifs sur niveau bas, on suffixe avec underscore x (toto_x). Pour les bus, toujours le même ordre, plutôt (y downto x) Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Utiliser le même nom ou des noms similaires pour les ports/signaux aux différents niveaux hiérarchiques Exemple: a => a; ou a => a_int; Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Utiliser le même nom ou des noms similaires pour les ports/signaux aux différents niveaux hiérarchiques Exemple: a => a; ou a => a_int; Utiliser: en ou enab pour signaux enable, s’il y en a plusieurs, préfixer tous ces signaux avec en ou enab Rst ou reset pour tous les resets du circuit Pascal.Benoit@univ-montp2.fr
Règles de « nommage » (Naming) Utiliser le même nom ou des noms similaires pour les ports/signaux aux différents niveaux hiérarchiques Exemple: a => a; ou a => a_int; Utiliser: en ou enab pour signaux enable, s’il y en a plusieurs, préfixer tous ces signaux avec en ou enab Rst ou reset pour tous les resets du circuit Nommer le testbench ’nom_du_bloc'_TB. Pascal.Benoit@univ-montp2.fr
Horloges et reset Une seule horloge globale Pascal.Benoit@univ-montp2.fr
Horloges et reset Une seule horloge globale Eléments séquentiels: Flip-flops sensibles sur front montant d’horloge Pascal.Benoit@univ-montp2.fr
Horloges et reset Une seule horloge globale Eléments séquentiels: Flip-flops sensibles sur front montant d’horloge CIN “synchrones” Dès l’écriture du VHDL (penser synthèse) Avantages: Optimisation du timing Aléas / glitches, états ‘X’ Test Pascal.Benoit@univ-montp2.fr
Horloges et reset Une seule horloge globale Eléments séquentiels: Flip-flops sensibles sur front montant d’horloge CIN “synchrones” Dès l’écriture du VHDL (penser synthèse) Avantages: Optimisation du timing Aléas / glitches, états ‘X’ Test Partitionnement “intelligent” Facilite analyse et optimisation du timing et test Pascal.Benoit@univ-montp2.fr
Horloges et reset Eviter les « gated-clocks » Technology-specific (cf. Power…) Glitches, skew, violation de contraintes de hold, testabilité clk_int<= port_en_1 and clk; p1:process (rst,clk_int,port_en_1, port_in_1) begin if rst='1' then port_out_1<='0'; elsif rising_edge(clk_int) then port_out_1<=port_in_1; end if; end process; WARNING:PhysDesignRules:372 - Gated clock. Clock net clk_int is sourced by a combinatorial pin. This is not good design practice. Use the CE pin to control the loading of data into the flip-flop. Pascal.Benoit@univ-montp2.fr
Horloges et reset Eviter les « gated-clocks » Technology-specific (cf. Power…) Glitches, skew, violation de contraintes de hold, testabilité process(clk, rst) begin if rst='1' then retard1 <= '0'; retard2 <= '0'; retard3 <= '0'; elsif clk'event and clk='1' then retard1 <= entree; retard2 <= retard1; retard3 <= retard2; end if; end process; sortie <= retard1 and retard2 and (not retard3); process (mclk, rst) begin if rst='1' then q <= (others => '0'); elsif mclk'event and mclk='1' then q <= q+1; end if; end process; clk25 <= q(0); clk190 <= q(17); clk3 <= q(23); WARNING:Route:455 - CLK Net:pulse may have excessive skew because 4 CLK pins and 0 NON_CLK pins failed to route using a CLK template. WARNING:Route:455 - CLK Net:U1/q<17> may have excessive skew because 1 CLK pins and 1 NON_CLK pins failed to route using a CLK template. Pascal.Benoit@univ-montp2.fr
Horloges et reset Eviter les « gated-clocks » Technology-specific (cf. Power…) Glitches, skew, violation de contraintes de hold, testabilité Pascal.Benoit@univ-montp2.fr
Horloges et reset Eviter les « gated-clocks » Exemple de solution Technology-specific (cf. Power…) Glitches, skew, violation de contraintes de hold, testabilité Exemple de solution XILINX DCM DCM Pascal.Benoit@univ-montp2.fr
Horloges et reset Eviter les RESET générés en interne S’assurer que les registres sont initialisés par un même reset Eviter les conditions sur les RESET Pascal.Benoit@univ-montp2.fr
Partitionnement du design Avantages d’un bon partitionnement Facilite la synthèse: optimisation, vitesse de synthèse, etc. Reuse Mieux… Pascal.Benoit@univ-montp2.fr