Prototypage virtuel de système sur puce pour une simulation rapide et fidèle Séminaire Collège de France, 29 Janvier 2014 Laurent Maillet-Contoz STMicroelectronics Laurent.Maillet-Contoz@st.com Matthieu Moy Grenoble INP Verimag Matthieu.Moy@grenoble-inp.fr
Prototypage virtuel de système sur puce pour une simulation rapide et fidèle Séminaire Collège de France, 29 Janvier 2014 Laurent Maillet-Contoz System Design Solutions System Level Modeling laurent.maillet-contoz@st.com
Plan 3 Contexte industriel Prototypage virtuel de système sur puce Emergence de nouveaux besoins
Un exemple de produit 4 ARM Cortex - A53 and Cortex - A57: processeur 64- bit Haute performance and fiabilité Efficacité énergéfque excepfonnelle Codage video 10- bit ultra efficace (HEVC) Ultra Haute DéfiniFon à 60 frames par seconde Systèmes domesfques connectés ultra- haute bande passante (par ex 8 flux HD) HDCP 2.2 (sécurité) HDMI 2.0: 6 GBps / canal DisplayPort 1.2
Un exemple de produit 4 ARM Cortex - A53 and Cortex - A57: processeur 64- bit Haute performance and fiabilité Efficacité énergéfque excepfonnelle Codage video 10- bit ultra efficace (HEVC) Ultra Haute DéfiniFon à 60 frames par seconde Systèmes domesfques connectés ultra- haute bande passante (par ex 8 flux HD) HDCP 2.2 (sécurité) HDMI 2.0: 6 GBps / canal DisplayPort 1.2 Linux OpenGL Video4Linux Gstreamer Advanced Linux Sound Architecture (Alsa) Pilotes bas niveau Logiciel enfoui dans les sous- systèmes
Les produits à développer : des systèmes sur puce complexes 5
Les produits à développer : des systèmes sur puce complexes 5 UART CPU CORE MMU TIMER ITC GPU UART CPU CORE MMU MEM CTLR TIMER ITC Mul/- processeurs
Les produits à développer : des systèmes sur puce complexes 5 WIFI USB SPI DAC DAC ADC ADC UART Ethernet CPU CORE MMU CAN I2C LIN TIMER ITC GPU UART CPU CORE MMU MEM CTLR TIMER ITC Mul/- processeurs Nombreuses interfaces E/S
Les produits à développer : des systèmes sur puce complexes 5 WIFI USB SPI DAC DAC ADC ADC UART Ethernet CPU CORE PWM PRCMU MMU CAN I2C LIN TIMER ITC GPU UART CPU CORE MMU MEM CTLR TIMER ITC Mul/- processeurs Nombreuses interfaces E/S Nombreux arbres d horloges Plusieurs domaines d alimenta/on
Les produits à développer : des systèmes sur puce complexes 5 WIFI USB SPI DAC DAC ADC ADC UART Ethernet CPU CORE PWM PRCMU MMU DOCSIS Audio Compo CAN I2C LIN TIMER ITC H.265 DISPLAY GPU UART CPU CORE MMU MEM CTLR TIMER ITC Mul/- processeurs Accélérateurs matériels Nombreuses interfaces E/S Nombreux arbres d horloges Plusieurs domaines d alimenta/on
Les produits à développer : des systèmes sur puce complexes 5 WIFI USB SPI DAC DAC ADC ADC UART Ethernet CPU CORE TIMER ITC PRCMU PWM MMU DOCSIS Audio H.265 Compo DISPLAY CAN Capteur I2C LIN Capteur GPU UART CPU CORE MMU MEM CTLR TIMER ITC Mul/- processeurs Nombreuses interfaces E/S Nombreux arbres d horloges Plusieurs domaines d alimenta/on Accélérateurs matériels Capteurs
Les produits à développer : des systèmes sur puce complexes 5 WIFI USB SPI DAC DAC ADC ADC UART Ethernet CPU CORE TIMER ITC PRCMU PWM MMU DOCSIS Audio H.265 Compo DISPLAY CAN Capteur I2C LIN Capteur GPU UART CPU CORE MMU MEM CTLR TIMER ITC Mul/- processeurs Nombreuses interfaces E/S Nombreux arbres d horloges Plusieurs domaines d alimenta/on Accélérateurs matériels Capteurs Logiciel embarqué
Une complexité exponentielle 6 20000000 15000000 Nombre de lignes de code Noyau Linux 16000000 10000000 5000000 0 3400000 176000 311000 1800000 6000000
COR E Une complexité exponentielle 6 Nombre de lignes de code Noyau Linux 20000000 16000000 15000000 10000000 120 80 5000000 0 3400000 176000 311000 1800000 6000000 100 80 Nbre moyen de blocs par SoC % de réu/lisa/on 70 60 50 60 40 40 30 20 20 10 0 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Source: Semico octobre 2010 0
COR E Une complexité exponentielle 6 Nombre de lignes de code Noyau Linux 20000000 16000000 15000000 10000000 120 80 5000000 0 3400000 176000 311000 1800000 6000000 100 80 Nbre moyen de blocs par SoC % de réu/lisa/on 70 60 50 60 40 40 30 20 " De plus en plus de foncfons " IntégraFon logiciel/matériel " Fiabilité à maximiser 20 0 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 Source: Semico octobre 2010 10 0
AugmentaFon des coûts de concepfon Une concurrence exacerbée 7 M$ 600 500 400 300 200 100 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS
AugmentaFon des coûts de concepfon Une concurrence exacerbée 7 M$ 600 500 400 300 200 100 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS
M$ 600 AugmentaFon des coûts de concepfon Une concurrence exacerbée 7 Obtenir des revenus pour supporter ces coûts 500 400 300 200 100 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS
M$ 600 500 400 300 200 100 AugmentaFon des coûts de concepfon 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Une concurrence exacerbée 7 Obtenir des revenus pour supporter ces coûts Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS Marché 100 90 80 70 60 50 40 30 20 10 Impact du retard sur les revenus Évolu;on lente % Perte de part de marché % Baisse du prix unitaire 0 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois retard Source: IBS
M$ 600 500 400 300 200 100 AugmentaFon des coûts de concepfon 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Une concurrence exacerbée 7 Obtenir des revenus pour supporter ces coûts Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS Marché 100 90 80 70 60 50 40 30 20 10 Impact du retard sur les revenus Évolu;on lente Évolu;on moyenne % Perte de part de marché % Baisse du prix unitaire 0 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois retard Source: IBS
M$ 600 500 400 300 200 100 AugmentaFon des coûts de concepfon 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Une concurrence exacerbée 7 Obtenir des revenus pour supporter ces coûts Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS Marché 100 90 80 70 60 50 40 30 20 10 Impact du retard sur les revenus Évolu;on lente Évolu;on moyenne % Perte de part de marché % Baisse du prix unitaire Évolu;on rapide 0 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois retard Source: IBS
M$ 600 500 400 300 200 100 AugmentaFon des coûts de concepfon 0 65 nm 45/40 nm 28 nm 20 nm 16/14 nm Une concurrence exacerbée 7 Obtenir des revenus pour supporter ces coûts Logiciel Valida/on Prototype Physique Vérifica/on Architecture Qualifica/on IP Source: IBS Marché 100 90 80 70 60 50 40 30 20 10 Impact du retard sur les revenus Évolu;on lente Évolu;on moyenne % Perte de part de marché % Baisse du prix unitaire Évolu;on rapide " Proposer le bon produit " Fournir toutes les foncfonnalités acendues " Arriver au plus tôt sur le marché 0 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois 3 mois 6 mois 9 mois 12 mois retard Source: IBS
Prototypage virtuel 8
Evolution des flots de conception 9 Spécifica/on Fonc/onnalité, sureté, sécurité Performances
Evolution des flots de conception 9 Spécifica/on Développement matériel Fonc/onnalité, sureté, sécurité Performances Architecture ConcepFon VérificaFon Silicium Carte Architecture Codage Debug Développement logiciel Intégra/on/Valida/on
Evolution des flots de conception 9 Spécifica/on Développement matériel Fonc/onnalité, sureté, sécurité Performances Architecture ConcepFon VérificaFon Silicium Carte Architecture Codage Debug Développement logiciel Intégra/on/Valida/on
Evolution des flots de conception 9 Spécifica/on Développement matériel Fonc/onnalité, sureté, sécurité Performances Architecture ConcepFon VérificaFon Silicium Carte Prototype virtuel Intégra/on/Valida/on Architecture Codage Debug Développement logiciel " ValidaFon en avance de phase avec des modèles " InteracFons logiciel/matériel " Référence commune aux différents méfers Temps gagné
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on TLM IP de Processeur " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL " Mise au point des tests " Réu/lisabilité des modèles et des tests TLM IP mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on TLM IP de Processeur Test.c " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL " Mise au point des tests " Réu/lisabilité des modèles et des tests TLM IP mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on S/muli TLM IP de Processeur Test.c " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL " Mise au point des tests " Réu/lisabilité des modèles et des tests TLM IP mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on S/muli TLM IP de Processeur Test.c Trace1 " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL " Mise au point des tests " Réu/lisabilité des modèles et des tests TLM IP mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on S/muli TLM IP de Processeur Test.c Trace1 " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL " Mise au point des tests " Réu/lisabilité des modèles et des tests mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on S/muli TLM IP de Processeur Test.c Trace1 " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL " Mise au point des tests " Réu/lisabilité des modèles et des tests IP RTL mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on S/muli TLM IP de Processeur Test.c Trace1 " Désambiguïsa/on de la spécifica/on de bus " disponible avant le RTL Transacteur " Mise au point des tests " Réu/lisabilité des modèles et des tests IP RTL mémoire Carte adresses système
Vérification fonctionnelle de bloc matériel 10 " Anticiper la mise au point de l environnement de test " de référence " Fonc/onnalité " Registres " Interfaces de communica/on " Désambiguïsa/on de la spécifica/on S/muli TLM IP de bus de Processeur Test.c Trace1? " disponible avant le RTL Transacteur Trace2 " Mise au point des tests " Réu/lisabilité des modèles et des tests IP RTL mémoire Carte adresses système
Développement et intégration logiciel 11 " s " Fonc/onnalité " Registres " Interfaces de communica/on TLM IP de Processeur " Debug interac/f " Vitesse d exécu/on " Observabilité de bus Carte adresses Système " Représenta/vité " Pas de modifica/on du logiciel sur le silicium de Processeur TLM IP mémoire E/S " Réu/lisa/on des modèles de référence
Algorithmique s et niveaux d abstraction 12 C, C++ VHDL, Verilog Cycle accurate modèle de micro- architecture, cycle à cycle Transfert de registre (RTL) logique combinatoire et registres ; horloges Porte logique Transistor
Algorithmique s et niveaux d abstraction 12 transac/on SystemC/TLM C, C++ VHDL, Verilog TransacFonnel, faible couplage temporel modèle d architecture avec un temps imprécis TransacFonnel, fort couplage temporel modèle d architecture avec un temps précis Cycle accurate modèle de micro- architecture, cycle à cycle Transfert de registre (RTL) logique combinatoire et registres ; horloges Opcode = Read Addr = 0x42 Data= 0xCAFE Status= OK Opcode = Read Addr = 0x42 Data= 0xCAFE Status= OK Porte logique Transistor
P1 Wait (10) Synchroniser les modèles 13 39 Wait (ev) SystemC : Ordonnanceur coopéra;f P2 ev TLM : Pas d horloges pour se synchroniser " Quand rendre la main à l ordonnanceur?
P1 Wait (10) Synchroniser les modèles 13 40 Wait (ev) SystemC : Ordonnanceur coopéra;f P2 ev TLM : Pas d horloges pour se synchroniser " Quand rendre la main à l ordonnanceur? " Synchronisa/ons explicites " Nécessaires pour la fonc/onnalité " Ac/ons qui impactent les autres blocs TLM IP de Processeur de bus de Processeur TLM IP mémoire Carte adresses Système
P1 Wait (10) Synchroniser les modèles 13 41 Wait (ev) SystemC : Ordonnanceur coopéra;f P2 ev TLM : Pas d horloges pour se synchroniser Synchronize() " Quand rendre la main à l ordonnanceur? " Synchronisa/ons explicites " Nécessaires pour la fonc/onnalité " Ac/ons qui impactent les autres blocs " Registres de contrôle, status TLM IP de Processeur de bus de Processeur TLM IP mémoire Carte adresses Système
P1 Wait (10) Synchroniser les modèles 13 42 Wait (ev) SystemC : Ordonnanceur coopéra;f P2 ev TLM : Pas d horloges pour se synchroniser Synchronize() " Quand rendre la main à l ordonnanceur? " Synchronisa/ons explicites " Nécessaires pour la fonc/onnalité " Ac/ons qui impactent les autres blocs " Registres de contrôle, status " Adresses pour synchro inter cpu TLM IP de bus de Processeur de Processeur TLM IP mémoire Carte adresses Système
P1 Wait (10) Synchroniser les modèles 13 43 Wait (ev) SystemC : Ordonnanceur coopéra;f P2 ev TLM : Pas d horloges pour se synchroniser Synchronize() " Quand rendre la main à l ordonnanceur? " Synchronisa/ons explicites " Nécessaires pour la fonc/onnalité " Ac/ons qui impactent les autres blocs " Registres de contrôle, status " Adresses pour synchro inter cpu " Généra/on d interrup/ons TLM IP de bus de Processeur de Processeur TLM IP mémoire Carte adresses Système
P1 Wait (10) Synchroniser les modèles 13 44 Wait (ev) SystemC : Ordonnanceur coopéra;f P2 ev TLM : Pas d horloges pour se synchroniser Synchronize() " Quand rendre la main à l ordonnanceur? " Synchronisa/ons explicites " Nécessaires pour la fonc/onnalité " Ac/ons qui impactent les autres blocs " Registres de contrôle, status " Adresses pour synchro inter cpu " Généra/on d interrup/ons TLM IP de bus de Processeur " Réduire le nombre de synchronisa/ons au strict minimum de Processeur TLM IP mémoire Carte adresses Système
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Ini/ateur Bus Périphérique
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Ini/ateur Bus Périphérique
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Ini/ateur Bus Périphérique
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Annotate_Fming (30, 40); Ini/ateur Bus Périphérique
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Annotate_Fming (30, 40); Ini/ateur Bus Périphérique
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Annotate_Fming (30, 40); Ini/ateur Bus Périphérique
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Annotate_Fming (30, 40); Synchronize(); Ini/ateur Bus Périphérique Purger le cumul puis rendre la main
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Annotate_Fming (30, 40); Synchronize(); Ini/ateur Bus Périphérique Purger le cumul puis rendre la main
Le temps dans les prototype virtuels 14 " Exécu;on en temps nul? Peu réaliste pour modéliser les ;mers " Faible couplage temporel : Cumuler des annota;ons de temps Annotate_Fming (50, 70); Annotate_Fming (20, 30); Annotate_Fming (30, 40); Synchronize(); Ini/ateur Bus Périphérique Purger le cumul puis rendre la main " Cumul borné par les points de synchronisaeon " Raisonner sur des intervalles, pas sur des valeurs absolues
Déploiement industriel 15 TLM IP de processeur de processeur de bus Carte adresses système I/O IP TLM Model Mémoire Ligne de commande Ges/on. Config. Paramètres IP
Déploiement industriel 15 TLM IP de processeur de processeur de bus Carte adresses système I/O IP TLM Model Mémoire Ligne de commande Ges/on. Config. Paramètres IP Interface bus Banc de registres Reset Interruption Comporte ment Frequence Messaging Paramètres modèle
Déploiement industriel 15 TLM IP de processeur de processeur Kit de modélisation Primitives de modélisation I/O de bus IP TLM Model Mémoire Ligne de commande Ges/on. Config. Carte adresses système Paramètres IP Protocoles de communication Expertise et recommandations Bibliothèque de modèles génériques Déploiement sur les groupes produits Depuis 2005 Interface bus Banc de registres Comporte ment Reset Interruption Frequence Messaging Paramètres modèle Nombreux prototypes virtuels développés Grand nombre d utilisateurs Expertise reconnue et contribution aux standards Donation de propositions de standards Participation active à la standardisation OSCI TLM1 et TLM2, IEEE 1666
16 Emergence de nouveaux besoins
Modéliser horloges et alimentation 17 F1 V1 F2 V1 F2 V1 Fréquences de fonctionnement Domaines d alimentation TLM IP de Processeur Validation du logiciel Modes fonctionnels de bus Carte adresses Système Points de fonctionnement de Processeur TLM IP mémoire E/S F2 V1 F1 V2 F2 V2 F3 V2
Niveau de bacerie Interdépendance fonctionnel/extra-fonctionnel Ges/on de la qualité de service Ges/on dynamique de la consomma/on 18 Temps
Niveau de bacerie Interdépendance fonctionnel/extra-fonctionnel Ges/on de la qualité de service Ges/on dynamique de la consomma/on 18 Ac/on du logiciel de contrôle Seuil B1 Seuil B2 Temps
Niveau de bacerie Interdépendance fonctionnel/extra-fonctionnel Ges/on de la qualité de service Ges/on dynamique de la consomma/on Température 18 Ac/on du logiciel de contrôle Seuil B1 Seuil B2 Temps
Niveau de bacerie Interdépendance fonctionnel/extra-fonctionnel Ges/on de la qualité de service Ges/on dynamique de la consomma/on Température Ges/on thermique dynamique 18 Ac/on du logiciel de contrôle Seuil T1 Seuil B1 Seuil B2 Temps
Niveau de bacerie Interdépendance fonctionnel/extra-fonctionnel Ges/on de la qualité de service Ges/on dynamique de la consomma/on Température Ges/on thermique dynamique " Couplage prototype virtuel/modèle extra- fonceonnel Ac/on du logiciel de contrôle 18 Seuil T1 Seuil B1 Seuil B2 Temps
Conclusion 19 Evolution des flots de conception Approche de modélisation transactionnelle Déploiement industriel effectif Retour d expérience depuis 2005 Intégré aux projets de SoC complexes Coopération académie/industrie à STMicroelectronics depuis 10 ans Avec l écosystème français : ANR, Pôles de compétitivité, Avec l écosystème européen : MEDEA, CATRENE, Emergence de nouveaux besoins Accélération des simulations Modélisation des interactions fonctionnel/extra-fonctionnel