Concevoir des composants numériques en Verilog passe nécessairement par la simulation. Pour simuler du Verilog, il existe un logiciel open source nommé Icarus qui remplit bien sa fonction. Il existe également des simulateurs non libres qui sont généralement plus performants. Mais tous ces simulateurs ont le même défaut, ils sont lents. Verilator est un simulateur un peu particulier qui se concentre sur la partie synthétisable du Verilog et génère un objet C++ que l’on va simuler au moyen d’un programme écrit dans ce même langage. Cette approche permet un gain de l’ordre d’une trentaine de fois plus rapide qu’Icarus dans l’exemple que nous allons voir. Il est également nettement plus rapide que tous les simulateurs commerciaux.
La simulation est nécessaire en Verilog. En effet, déverminer un gateware « en réel » nécessite du matériel onéreux et des montages électroniques compliqués. Avec la simulation, il est possible de visualiser n’importe quel signal interne sans avoir à brancher de sonde ou à souder des connecteurs sur le produit fini.
Traditionnellement, on génère les stimulus des signaux d’entrée en les décrivant en Verilog. En effet, le langage inclut toutes les fonctions nécessaires à l’écriture des bancs de test en simulation. Il est donc possible de se contenter du Verilog pour tester l’intégralité de son composant.
Le problème de la simulation, c’est qu’elle mobilise beaucoup de ressources tant en termes de calcul processeur que de mémoire vive ou même de mémoire de masse pour enregistrer les traces. Et surtout, cette simulation prend du temps.
L’approche proposée par Verilator [1] est de transformer la sous-partie « synthétisable » du Verilog...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première