Simulation
Avant de simuler un composant matériel, assurez-vous que les différents outils nécessaires soient installés comme expliqué sur la page dédiée. Notamment, les outils suivants sont utilisés:
- sbt,
- Verilator,
- GTKWave,
- la chaîne de compilation RISC-V.
Première simulation
Pour effectuer une simulation, ouvrez un terminal et placez-vous dans le répertoire HerdWare installé précédemment:
cd herd-ware
Un fichier Makefile est disponible dans le répertoire principal root.
Différentes commandes pour la génération et la simulation du matériel y sont définies.
Dans cet exemple, l’objectif est de simuler une version de la plateforme Cheese.
L’ISA et la configuration matérielle sont précisées dans le Makefile avec les variables ISA_CFG
et HW_CFG
.
make cheese-sim ISA_CFG=P32 HW_CFG=AU1V000
Cette commande lance la génération dela plateforme Cheese en utilisation l’ISA P32 et la configuration matérielle AU1V000.
Le répertoire sim/ est créé avec différents sous-dossiers.
L’exécutable pour la simulation est disponible dans le répertoire sim/exe/.
Ici, il se nomme HERD_P32_CHAU1V000
.
Finalement, pour lancer une simulation et générer un chronogramme, il faut suivre la commande suivante
./sim/exe/HERD_P32_CHAU1V000 --boot BOOT_HEX_FILE --trigger N_TRIGGER --vcd VCD_FILE
avec BOOT_HEX_FILE
le contenu de la mémoire de démarrage BOOT dans un fichier au format hexadécimal, N_TRIGGER
le nombre maximal de cycles d’exécution et VCD_FILE
le fichier .vcd décrivant l’évolution des signaux.
Voici un exemple de simulatio utilisant un program de test dans le répertoire isa-tests:
cd sw/isa-tests
make -f Makefile.riscv all
cd ../..
./sim/exe/HERD_P32_CHAU1V000 --boot sw/isa-tests/hex/riscv32-base-i-add.boot8.hex --trigger 1000 --vcd sim/vcd/HERD_P32_CHAU1V000/example.vcd
Ensuite, l’évolution de l’exécution du test add peut être visualisée avec GTKWave:
gtkwave sim/vcd/HERD_P32_CHAU1V000/example.vcd
Plus d’informations sur le processus de génération et la possibilité de concevoir des composants matériels précis sont disponibles sur la page dédiée.
Options de simulation
Option | Valeur | Description |
---|---|---|
–boot | BOOT_HEX_FILE | Obligatoire. Initialise le contenu de la mémoire de démarrage BOOT avec le fichier BOOT_HEX_FILE. BOOT_HEX_FILE doit contenir des valeurs hexadécimales, les octets étant séparés par des espaces. |
–rom | ROM_HEX_FILE | Initialise le contenu de la mémoire ROM avec le fichier ROM_HEX_FILE. ROM_HEX_FILE doit contenir des valeurs hexadécimales, les octets étant séparés par des espaces. |
–trigger | N_TRIGGER | Active un trigger pour stopper l’exécution après N_TRIGGER cycles. |
–uart-cycle | UART_CYCLE | Nombre de cycles par bit utilisé par l’UART hôte. |
–uart-in | UART_IN_FILE | Active l’envoi de données par l’UART hôte. Le fichier UART_IN_FILE conteint des valeurs hexadécimal, les octets étant séparés par des espaces. |
–uart-out | Active l’affichage de chaque octet reçu par l’UART hôte. | |
–vcd | VCD_FILE | Active la génération d’un fichier VCD_FILE au format .vcd. Ce fichier décrit l’évolution de chaque signal du système durant l’exécution. |
–etd | ETD_FILE | Active la génération d’un fichier ETD_FILE au format .etd. Ce fichier donne des informations sur chaque instruction complètement exécutée. |
–hpc | Affiche la valeur des HPC pour chaque processeur à la fin de la simulation. |
Chaque exécutable généré dans HerdWare pour la simulation supporte différentes options implémentées à l’aide de C++. Elles sont regroupées dans le Tableau 1. Dans le cas de la plateforme Cheese, le fichier top est disponible dans le répertoire suivant.
Exemples
Les différentes options mises à disposition permettent différentes utilisations des exécutables. Cela peut aller d’un simple test à l’extraction d’informations durant une exécution. Ci-dessous sont décrits plusieurs scénarios possibles d’utilisation.