Développement logiciel pré-silicium : Accélérer le time-to-market avec l'émulation SoC
Dans l'ère technologique actuelle qui évolue rapidement, l'approche la plus courante pour répondre aux demandes du marché est le system-on-chip (SoC). Un SoC est un cœur de processeur unique intégré entouré d'accélérateurs spécialisés et d'E/S étendues qui supportent les périphériques qu'il alimente.
Depuis le boom des données mobiles de 2002, les SoC sont devenus indispensables pour permettre les fonctionnalités de base qui définissent les smartphones. La même tendance guide maintenant leur ubiquité dans les appareils « intelligents » grand public — TV connectées, voitures connectées et l'écosystème Internet-of-Things (IoT) en expansion rapide.
La demande croissante pour les SoC a transformé le marché en une arène hautement concurrentielle. En réponse, les concepteurs construisent des dispositifs plus complexes, font évoluer continuellement les familles de périphériques et réduisent la fenêtre entre la conception et le lancement. Pour suivre le rythme, le logiciel doit être disponible le plus tôt possible et doit être assez robuste pour éviter les correctifs coûteux post-tape-out.
Traditionnellement, les équipes logicielles SoC attendaient le premier échantillon de silicium avant de commencer le développement. L'arrivée d'un prototype silicium déclenchait un sprint de mise en service court et intense où des développeurs du monde entier convergeaient pour valider les pilotes et interfaces. Même avec ce calendrier agressif, le logiciel nécessitait généralement des mois — parfois des années — pour atteindre la maturité de production, laissant peu de confiance avant de pouvoir commencer la production de masse.
Avec les designs SoC qui grandissent en taille et complexité, l'écart entre la disponibilité du silicium et le logiciel prêt pour la production peut s'étendre sur plusieurs années. L'évolution rapide des familles de périphériques — audio, vidéo, USB, Ethernet, etc. — crée aussi des lacunes d'expertise qui doivent être comblées par l'embauche de spécialistes, gonflant davantage les coûts et les délais.
Pour livrer un logiciel fiable plus tôt, l'industrie adopte une philosophie de « shift-left » : commencer le développement en parallèle avec la conception matérielle. Le développement pré-silicium n'accélère pas seulement le pipeline logiciel mais expose aussi les bugs au niveau de la conception, permettant d'éviter des tape-outs de masque coûteux.
Stratégies de développement pré-silicium
Le logiciel peut commencer avant le tape-out en utilisant plusieurs techniques : prototypage logiciel, bancs de test RTL, prototypes FPGA, et, le plus efficacement, l'émulation système complet. Chaque méthode se concentre sur un niveau d'abstraction spécifique et vient avec ses propres compromis.
Modèles comportementaux System-C
Créer un modèle System-C pour chaque bloc IP permet aux développeurs d'écrire et tester des pilotes en isolation. Cependant, l'effort pour modéliser chaque périphérique avec précision est substantiel, nécessitant une équipe dédiée qui peut rapidement dépasser les budgets de projet. De plus, les modèles comportementaux reposent fortement sur l'interprétation du modélisateur ; tout décalage entre l'intention de conception et le modèle peut mener à des bugs subtils coûteux à diagnostiquer plus tard.
Banc de test RTL
Les bancs de test RTL, construits à partir du même Verilog ou VHDL utilisé pour la vérification, fournissent une simulation cycle-précise du SoC entier. Ils restent en lockstep avec la conception matérielle, assurant la représentation la plus à jour. L'inconvénient est la vitesse : un simulateur cycle-précis est des ordres de grandeur plus lent que le matériel réel, rendant le développement de pilotes un processus lent de plusieurs mois qui peut annuler les bénéfices des débuts précoces.
Prototypes FPGA
Les FPGA modernes sont maintenant capables de synthétiser des blocs IP entiers depuis le RTL, livrant un comportement cycle-précis à une fraction du temps de simulation. En mappant chaque périphérique sur un FPGA séparé, les développeurs peuvent écrire et déboguer des pilotes rapidement. Le compromis est que l'intégration complète du SoC — comment les blocs communiquent et partagent les ressources — est manquante, limitant la profondeur de validation et laissant les problèmes au niveau de l'intégration surgir seulement après que le silicium est disponible.
Émulateurs SoC
Les émulateurs SoC représentent l'approche la plus équilibrée. Construits sur le même RTL que le silicium, ils offrent une performance cycle-précise tout en s'exécutant 100x plus vite que les bancs de test Verilog. Cette vitesse permet le portage complet d'OS, le développement de pilotes et les tests au niveau système en semaines plutôt qu'en mois.
Les émulateurs supportent aussi une large gamme de périphériques — UART, I²C, contrôleurs d'affichage, PCIe, Ethernet, Wi-Fi, caméras, capteurs — permettant aux développeurs d'émuler une carte de développement entière. Le logiciel peut être débogué avec les outils JTAG standards, et des dispositifs réels ou virtuels comme la NAND flash peuvent être attachés, fournissant un environnement réaliste pour la validation ROM, OS et firmware.
Au-delà du développement précoce, les émulateurs brillent pendant le débogage post-silicium. Parce qu'ils exécutent le même OS et les mêmes pilotes que le produit final, les ingénieurs peuvent reproduire les problèmes au niveau silicium sur l'émulateur, analyser les traces au niveau signal et vérifier les correctifs avant que le silicium n'atteigne le terrain.
Dans des études comparatives, les émulateurs surpassent systématiquement les modèles System-C, les bancs de test RTL et les prototypes FPGA en termes de vitesse, couverture et rentabilité. Bien que l'investissement initial dans une plateforme d'émulation puisse sembler élevé, les économies en time-to-market réduit et atténuation des risques l'emportent souvent sur le coût.
Selon la loi de Moore, le nombre de transistors double environ tous les deux ans, poussant les SoC 64 bits basés sur ARM aujourd'hui vers 100–300 millions de portes logiques. Dans cet environnement, seul un émulateur système complet peut évoluer pour répondre aux demandes des équipes logicielles SoC modernes.
Références
- Trimberger, Stephen M. « Three Ages of FPGAs. » IEEE Xplore Full-Text PDF : 2015, https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7086413.
- Brunet, Jean-Marie. « Why Modern SoC Designs Embrace Emulation. » Embedded Computing Design, 5 sept. 2018, https://embedded-computing.com/embedded-computing-design/why-modern-soc-designs-embrace-emulation.
- « Soc Emulation. » Soc Emulation, 2019, https://www.aldec.com/en/solutions/hardware_emulation_solutions/co-emulation-soc-emulation.
- « Cramming More Components onto Integrated Circuits. » https://www.cs.utexas.edu/, 2006, cs.utexas.edu/~fussell/courses/cs352h/papers/moore.pdf.
Embarqué
- Sommet RISC-V 2020 : Sessions clés et points forts
- SOAFEE : une architecture cloud-native pour plateformes automobiles logicielles
- Sécurité matérielle leader de l'IIoT : résistance au sabotage, time-to-market accéléré, protection forte pour fabrication, transport et utilities
- Qualcomm dévoile le Snapdragon Wear 4100+ : performances en hausse de 85 %, autonomie prolongée de 25 % et capteurs 16 Mpx pour les montres connectées de nouvelle génération
- Mini‑Circuits et Vayyar lancent le VTRIG‑74 : kit de développement d'imagerie 4D par ondes millimétriques
- ECM3532 : La première carte capteur IA intégrée ultra-basse consommation d'Eta Compute accélère le développement edge
- Maîtriser le développement logiciel Lean : guide pratique pour CTO à Raleigh en 2022
- Développement logiciel santé sur mesure 2024 : guide définitif pour lancer votre projet
- Développement logiciel sur mesure 2022 : Guide stratégique pour les dirigeants de Raleigh