Logiciel de simulation RENESAS ForgeFPGA
Informations importantes
La simulation est une technique consistant à appliquer différents stimulus d'entrée à la conception à différents moments pour vérifier si le code RTL se comporte de la manière prévue. Il est utilisé pour vérifier la robustesse de la conception. La simulation permet à l'utilisateur de view le chronogramme des signaux associés pour comprendre comment la description de conception dans la conception file se comporte.
Les bancs de test sont des morceaux de code utilisés pour la simulation. Un simple banc de test instanciera l'unité sous test (UUT) et pilotera l'entrée. Le logiciel Go Configure utilise Icarus Verilog (iVerilog) et GTKWave pour observer les formes d'onde de simulation avec le stimulus fourni dans le banc de test.
Ce document décrit les étapes à suivre lors de l'installation d'Icarus sur votre système et comment exécuter une simulation réussie.
Installation d'Icarus Verilog
a. Installez la dernière version d'Icarus Verilog (IVerilog) à partir de https://bleyer.org/icarus/
b. Assurez-vous d'ajouter IVerilog au PATH et laissez-le installer GTKWave (voir Figure 1)
c. Ouvrez le logiciel Go Configure et sélectionnez la pièce : SLG47910 (Rev BB) pour ouvrir l'atelier Forge (voir Figure 2).
d. Cliquez sur l'éditeur FPGA au milieu de la barre d'outils en haut ou l'utilisateur peut également double-cliquer sur la structure FPGA Core au milieu de la fenêtre.
e. Une nouvelle fenêtre s'ouvre appelée Forge Workshop. Dans la barre d'outils du menu en haut, cliquez sur Options → Paramètres. Dans la boîte de dialogue Paramètres, accédez à Outils sous l'onglet Paramètres utilisateur. Décochez la case Utiliser « environnement système » pour Icarus Verilog et GTKWave. Ajoutez le chemin vers Iverilog et GTKWave enregistré dans votre système dans l'espace indiqué (voir Figure 4).
Vous êtes tous prêts à simuler un banc de test et les étapes ci-dessus garantissent que GTKWave se lance automatiquement lors de la simulation d'un banc de test sur le logiciel Go Configure.
Banc d'essai
L’étape la plus cruciale pour réussir la mise en œuvre d’un système consiste à vérifier la conception et sa fonctionnalité. Vérifier un système complexe après avoir implémenté le matériel n’est pas un choix judicieux. C’est inefficace en termes d’argent, de temps et de ressources. Ainsi, dans le cas du FPGA, un banc de test est utilisé pour tester le code source Verilog.
Supposons que nous ayons une entrée de 11 bits et que nous souhaitions tester l'appareil pour toutes les valeurs de combinaison d'entrée possibles, c'est-à-dire (211). Comme il s’agit d’un très grand nombre de combinaisons, il est impossible de le tester manuellement. Dans de tels cas, les bancs de test sont très utiles car vous pouvez tester automatiquement la conception pour toutes les valeurs possibles et ainsi confirmer la fiabilité de la conception de test. Les bancs de test Verilog sont utilisés pour simuler et analyser des conceptions sans nécessiter de périphérique matériel physique.
Une conception sous test, abrégée en DUT, est un module synthétisable de la fonctionnalité que nous souhaitons tester. En d’autres termes, c’est la conception du circuit que nous aimerions tester. Nous pouvons décrire notre DUT en utilisant l'un des trois styles de modélisation dans Verilog : au niveau de la porte, Dataflow ou comportemental.
Un banc de test n'est pas synthétisable, il est donc utilisé uniquement à des fins de simulation. Cela permet à l'utilisateur d'utiliser une gamme complète de constructions Verilog, par exemple des mots-clés tels que « for », « $display » et « $monitor », etc. pour écrire des bancs de test. Un simple banc de test instanciera l'unité sous test (UUT) ou le périphérique sous test (DUT) et pilotera les entrées.
Comprendre un banc de test
Définition de l’échelle de temps dans Testbench
Lors de la simulation, le logiciel a besoin de savoir comment l'heure a été définie. L'unité de retard est spécifiée à l'aide de la directive `timescale, qui spécifie l'unité de temps et la précision des modules qui la suivent. L'échelle de temps aide à déterminer ce que le numéro 1 signifie en termes de temps. # est utilisé pour définir le délai à introduire dans le système conformément à l'unité de temps spécifiée dans l'échelle de temps. Ainsi, #1 signifie 1 ns de retard si le time_unit est en ns.
Syntaxe:
`échelle de temps / /
time_unit est la durée pendant laquelle un retard de #1 représente. La base time_precision représente le nombre de points décimaux de précision à utiliser par rapport aux unités de temps. (Voir la ligne 23 de la figure 5)
Nous pouvons utiliser les constructions d'échelle de temps pour utiliser différentes unités de temps dans la même conception. L'utilisateur doit se rappeler que les spécifications de retard ne sont pas synthétisables et ne peuvent pas être converties en logique matérielle. Les fonctions de retard sont entièrement destinées à des fins de simulation. $temps et $en temps réel les fonctions système renvoient l'heure actuelle et le format de rapport par défaut peut être modifié avec une autre tâche système $timeformat .
Example:
`échelle de temps 10us/100ns
`échelle de temps 1ns/1ps
#10 réinitialisation = 1 ; // retarde le signal de 10 ns
#0.49 $display( « T = %0t à l'heure #0.49 », $realtime) ;
Le délai spécifié est #0.49, ce qui est inférieur à la demi-unité de temps. Cependant, la précision temporelle est spécifiée à 1 ps et, par conséquent, le simulateur ne peut pas être inférieur à 1 ns, ce qui lui permet d'arrondir l'instruction de retard donnée et de produire 0 ns. Ainsi, cette déclaration ne fournit aucun délai.
Journal de simulation :
T = 1 au temps #0.49
Déclaration du module
La déclaration de module dans n'importe quel banc de test est différente du code Verilog principal. Dans un banc de test, le module est déclaré sans aucun port de terminal. (Voir la ligne 25 de la figure 5)
Syntaxe:
module ;
La déclaration du module est suivie de la définition des signaux d'entrée et de sortie définis précédemment dans la conception principale. file.
Nous utilisons deux types de signaux pour piloter et surveiller les signaux pendant la simulation. Le type de données reg conservera la valeur jusqu'à ce qu'une nouvelle valeur lui soit attribuée. Ce type de données ne peut se voir attribuer une valeur que dans toujours ou dans le bloc initial.
Le type de données wire est comme celui d’une connexion physique. Il contiendra la valeur pilotée par un port, une instruction assign ou un reg. Ce type de données ne peut pas être utilisé en bloc initial ou toujours. Toute déclaration de paramètre et d’entier est également effectuée dans cette section.
Example:
Rég a, b ; // l'entrée dans le code HDL est définie comme reg dans testbench
Fil y ; // le signal de sortie en HDL est défini comme fil dans le banc de test
Instanciation DUT
Le but d'un banc de test est de vérifier si notre module DUT fonctionne. Par conséquent, nous devons instancier notre module de conception pour tester le module.
Syntaxe:
(. (signal1), . signal1>(signal2));
Example:
ALU d0 (.a(a), // le signal « a » dans ALU doit être connecté à « a » dans le module ALU_tb
.b(b), // le signal « b » dans ALU doit être connecté à « b » dans le module ALU_tb
.c(c)) ;// le signal « c » dans ALU doit être connecté à « c » dans le module ALU_tb
Nous avons instancié le module DUT ALU au module de test. Le nom de l'instance (d0) est le choix de l'utilisateur. Les signaux avec un point « ». devant eux se trouvent les noms des signaux à l'intérieur du module ALU, tandis que le fil ou le registre auquel ils se connectent dans le banc de test est à côté du signal entre parenthèses (). Il est recommandé de coder chaque connexion de port sur une ligne distincte afin que tout message d'erreur de compilation pointe correctement vers le numéro de ligne où l'erreur s'est produite. Étant donné que ces connexions sont établies par leur nom, l’ordre dans lequel elles apparaissent n’a pas d’importance.
L'instanciation DUT peut également être effectuée pour les modules où le module testbench a des noms de signal différents. Le mappage correct des signaux est ce qui est important lors de l'instanciation.
Example :
ALU d0 (.a(A), // le signal « a » dans ALU doit être connecté à « A » dans le module ALU_tb
.clk(clock), // le signal « clk » dans ALU doit être connecté au module « clock » ALU_tb
.out(OUT)) ; // le signal "out" dans ALU doit être connecté à "OUT" dans le module ALU_tb
Toujours et bloc initial dans un banc de test
Il existe deux blocs séquentiels dans Verilog, initial et toujours. C’est dans ces blocs que nous appliquons la relance.
Blocage initial
Le bloc initial qui n'est exécuté qu'une seule fois et se termine lorsque la dernière ligne du bloc est exécutée. Le stimulus est écrit dans le bloc initial. (Voir les lignes 54 à 72 de la figure 5)
Syntaxe:
..
début initial
$ dumpfile();
$dumpvars();
..(entrez le stimulus)
fin
le bloc initial commence son exécution au début de la simulation au temps t = 0. En commençant par la première ligne entre le début et la fin, chaque ligne s'exécute de haut en bas jusqu'à ce qu'un délai soit atteint. Lorsque le délai est atteint, l'exécution de ce bloc attend que le délai (10 unités de temps) soit écoulé, puis reprend l'exécution.
L'utilisateur peut également définir des stimuli à l'aide de boucles (for, while, if-else) à l'intérieur de ce bloc initial au lieu de saisir manuellement toutes les combinaisons.
Example :
Début initial
UNE = 0 ; b = 0 ; // démarre l'exécution
#10a = 0 ; b = 1 ; // l'exécution est à t = 10 unités de temps
#10a = 1 ; b = 0 ; // l'exécution est à t = 20 unités de temps
fin
Décharge Files
Une autre chose à garder à l'esprit est la déclaration de $déchargefiles et $dumpvars à l'intérieur du bloc initial (voir ligne 55-56 de la figure 5). Le $déchargefile est utilisé pour vider les changements dans les valeurs des réseaux et des registres dans un file cela est nommé comme son argument.
Par exempleample:
$déchargefile(« alu_tb.vcd »);
va vider les modifications dans un file nommé alu_tb.vcd. Les changements sont enregistrés dans un file appelé VCD file cela signifie dump de changement de valeur. Un VCD (value change dump) stocke toutes les informations sur les changements de valeur. Nous ne pouvons pas avoir plus d'un $dumpfile déclarations dans la simulation Verilog.
Le $dumpvars est utilisé pour spécifier quelles variables doivent être vidées (dans le file mentionné par $dumpfile). La façon la plus simple de l’utiliser est sans aucun argument. La syntaxe générale des $dumpvars est
$dumpvars ( <, >);
Nous pouvons essentiellement spécifier quels modules et quelles variables des modules seront sauvegardés. La façon la plus simple de l'utiliser est de définir le niveau sur 0 et le nom du module comme module supérieur (généralement le module supérieur du banc de test).
$dumpvars(0, alu_tb);
Lorsque le niveau est défini sur 0 et que seul le nom du module est spécifié, il sauvegarde TOUTES les variables de ce module et toutes les variables de TOUS les modules de niveau inférieur instanciés par ce module supérieur. Si un module n'est pas instancié par ce module supérieur, alors sa variable ne sera pas couverte. Encore une chose, la déclaration de $déchargefile doit précéder les $dumpvars ou toute autre tâche système spécifiant le dump. Ces décharges fileLes s doivent être déclarés avant les entrées du stimulus, sinon aucune valeur ne sera enregistrée dans ces dumps. files.
Toujours bloquer
Contrairement aux instructions initiales, un bloc Always s'exécute de manière répétée, bien que l'exécution démarre au temps t = 0. Par exempleample, le signal d'horloge est essentiel au fonctionnement des circuits séquentiels comme les bascules. Il doit être alimenté en permanence. Par conséquent, nous pouvons écrire le code pour le fonctionnement de l’horloge dans un banc de test comme (voir la ligne 52 de la figure 5) :
toujours
#10 clk = ~clk;
module de fin
L'instruction ci-dessus est exécutée après 10 ns à partir de t = 0. La valeur du clk sera inversée après 10 ns par rapport à la valeur précédente. Ainsi, générer un signal d'horloge d'une largeur d'impulsion de 20 ns. Par conséquent, cette déclaration génère un signal de fréquence 50 MHz. Il est important de noter que l’initialisation du signal se fait avant le bloc toujours. Si nous ne faisons pas la partie initialisation, le signal clk sera x de t – 0, et après 10 ns, il sera inversé en un autre x.
Banc de test d'auto-vérification
Un banc de test d'auto-vérification comprend une instruction pour vérifier l'état actuel.
- $afficher les tâches système sont principalement utilisées pour afficher les messages de débogage afin de suivre le flux de simulation
début initial
UNE = 0 ; b = 0 ; c = 0 ; #10 ; // appliquer l'entrée, attendre
si( y ! == 1) commencer
$display( « 000 a échoué ») ; //vérifier
c = 1 ; #10 ; //appliquer l'entrée, attendre
fin
sinon si ( y ! == 0) commence
$display("001 a échoué") // vérification
b = 1 ; c = 0 ; #10 ; fin
sinon si(y!==0)
$ display (« 010 a échoué »); //vérifier
fin
module de fin
$afficher est utilisé pour afficher les valeurs de variables, de chaînes ou d'expressions. De l'ex ci-dessusample, chaque fois que l'une des boucles if-else est satisfaite, le journal du simulateur affichera son $ respectifafficher déclaration. Il y a une nouvelle ligne par défaut à la fin des chaînes.
$afficher ("temps = %t , A = %b, B = %b, C = % b", $temps,A,B,C);
Les caractères mentionnés dans les citations seront imprimés tels quels. La lettre accompagnée de % indique le format de chaîne. Nous utilisons %b pour représenter des données binaires. Nous pouvons utiliser %d, %h, %o pour représenter respectivement décimal, hexadécimal et octal. Le %g est utilisé pour exprimer des nombres réels. Celles-ci seront remplacées par les valeurs hors devis dans l'ordre mentionné. Par exempleample, l'instruction ci-dessus sera affichée dans le journal de simulation comme : temps = 20, A = 0, B = 1, C = 0
Tableau 1. Formats de tableaux Verilog
Argument | Description |
%h, %H | Affichage au format Hexadécimal |
%d, %D | Affichage au format décimal |
%b, %B | Affichage au format binaire |
%m, %M | Afficher le nom hiérarchique |
%s, %S | Afficher sous forme de chaîne |
%t, %T | Affichage au format heure |
%f, %F | Afficher « réel » au format décimal |
%e, %E | Afficher « réel » dans un format exponentiel |
$afficher imprime principalement les données ou la variable telles qu'elles sont à cet instant précis comme le printf en C. Il faut mentionner $afficher pour n'importe quel texte que nous devons view dans le journal de simulation.
- $temps
$temps est une tâche système qui renverra l'heure actuelle de la simulation.
- $moniteur
$moniteur surveillera les données ou la variable pour laquelle elle est écrite et chaque fois que la variable change, elle imprimera
la valeur modifiée. Il obtient un effet similaire en appelant $display après chaque fois qu'un de ses arguments est obtenu.
mis à jour. $moniteur est comme une tâche générée pour s'exécuter en arrière-plan du thread principal qui surveille et
affiche les changements de valeur de ses variables d'argument. $moniteur a la même syntaxe que $afficher.
$moniteur(" temps = %t, A = %b, B = %b, C = % b", $temps,A,B,C);
À partir de la figure 7, vous pouvez observer que de nouvelles lignes de codes ont été ajoutées pour auto-évaluer le banc de test. Le placement du $afficher et $moniteur les instructions dans différentes sections du banc de test donneront des résultats différents (voir Figure 8). $temps mentionné dans ces instructions imprime l'heure à laquelle la valeur est imprimée. Dans le même temps, disons 170000 XNUMX, nous pouvons voir comment il y a une différence dans la valeur de A et B en raison du $afficher et $moniteur déclarations.
Logiciel GTKWave
GTKWave est une vague GTK+ complète vieweuh pour Unix, Win32 et Mac OSX qui lit LXT, LXT2, VZT, FST et GHW files ainsi que les VCD/EVCD standards files et permet leur viewing. C'est officiel weble site est à http://gtkwave.sourceforge.net/ . GTKWave est le recommandé viewer par l'outil de simulation Icarus Verilog.
Une fois que l'utilisateur a créé avec succès un banc de test pour tester la fonctionnalité de la conception, l'utilisateur peut désormais utiliser le logiciel GTKWave pour view les formes d’onde.
Pour lancer le logiciel GTKWave pour view les formes d'onde, l'utilisateur doit cliquer sur le bouton Simuler Testbench en haut de la barre d'outils ou depuis le menu principal Outils → Simulation → Simuler Testbench. S'il n'y a pas d'erreurs de syntaxe, selon la conception, le GTKWave devrait être lancé automatiquement ou les résultats des stimuli dans le banc de test seront affichés dans la section Logger de la fenêtre.
Le logiciel GTKWave ouvre le dump au format .vcdfile automatiquement. La fenêtre GTKWave n'affiche pas la forme d'onde lorsqu'elle s'ouvre. Cela donne à l'utilisateur la possibilité de sélectionner les signaux qu'il souhaite view et observer. Pour choisir le signal que l'utilisateur doit afficher, l'utilisateur doit cliquer sur le nom de son module/instance sur le côté gauche de la fenêtre sous l'onglet SST. En cliquant sur le + de chaque instance, vous pouvez voir les signaux liés à cette instance dans la section inférieure. Ensuite, vous pouvez glisser-déposer le signal souhaité ou double-cliquer dessus pour l'afficher dans la fenêtre Signaux. Vous pouvez également tous les sélectionner (CTRL + A) et les insérer dans la fenêtre des signaux (voir Figure 9).
Les signaux sont maintenant ajoutés à la fenêtre de signal mais ils n'ont pas encore été simulés. Après avoir ajouté les signaux souhaités à la fenêtre des signaux, cliquez sur pour adapter les signaux à la largeur actuelle de la fenêtre puis recharger les signaux depuis le rechargement
symbole présent sur la barre d'outils. Vous pouvez maintenant voir les signaux avec leurs valeurs respectives.
Valeurs des signaux
Par défaut, les valeurs des signaux sont au format hexadécimal et toutes les ondes sont colorées en vert (si elles fonctionnent correctement).
L'utilisateur peut modifier les propriétés de ces signaux en cliquant avec le bouton droit sur le signal et en choisissant Format de données ou Format de couleur. L'utilisateur peut également insérer un signal vierge pour créer des sections entre des groupes de signaux. Lorsque vous obtenez le résultat optique souhaité, vous pouvez sauvegarder vos configurations en allant File → Écrire Enregistrer File.
Barre d'outils GTKWave
La barre d'outils (voir Figure 10) permet à l'utilisateur d'effectuer des fonctions de base pour le signal. Discutons de chaque option de la barre d'outils de gauche à droite.
- Options de menu: Sous cette option, nous pouvons view toutes les différentes fonctionnalités du logiciel qui peuvent être utilisées pour jouer avec le logiciel. Les détails de cette option de menu sont traités dans la section 8 de ce guide de l'utilisateur.
- Couper les traces: Il est utilisé pour supprimer/couper le signal sélectionné de la fenêtre de signal
- Copier les traces: Il est utilisé pour copier le signal sélectionné depuis la fenêtre de signal
- Coller les traces: La trace copiée/coupée peut être collée à un emplacement différent dans la fenêtre du signal
- Ajustement Zoom: Permet d'ajuster les signaux en fonction de la taille de la fenêtre que l'utilisateur choisit d'afficher
- Zoom avant: Il est utilisé pour zoomer dans la fenêtre du signal
- Zoom arrière: Il est utilisé pour effectuer un zoom arrière sur la fenêtre du signal
- Zoom Annuler: il permet d'annuler le zoom avant/arrière sur la fenêtre du signal
- Zoom pour commencer: cela zoomera sur la fenêtre du signal, affichant l'heure de début des signaux.
- Zoomer pour terminer: ceci zoomera sur la fenêtre des signaux affichant l'heure de fin des signaux
- Trouver l'arête précédente: Cela déplace le marqueur vers la gauche indiquant le bord précédent
- Trouver le bord suivant: Cela déplace le marqueur vers la droite indiquant le bord suivant
- Faire défiler la liaison inférieure/supérieure: en utilisant cela, nous pouvons définir le délai dans lequel l'utilisateur souhaite afficher. Par exempleample, nous pouvons définir le délai entre 0 seconde et 500 ns, il affichera les signaux sous cette durée uniquement.
- Recharger: Le rechargement est enfoncé chaque fois qu'il y a un changement dans le signal affiché. Il rechargera et affichera le signal en fonction des nouveaux paramètres. Par exempleample, après avoir modifié la période du signal, nous devons recharger le signal pour afficher le signal dans la nouvelle période définie.
Options de menu
Depuis le coin supérieur gauche du logiciel GTKWave, l'utilisateur peut accéder aux options du menu en cliquant sur les trois lignes verticales (voir Figure 11). L'utilisateur peut trouver les options suivantes sous les options du menu :
File
Le File le sous-menu contient divers éléments liés à l'accès files, import-export de VCD files, impression et lecture/écriture files et sortir.
Modifier
Le sous-menu Modifier est utilisé pour exécuter diverses fonctions utilitaires telles que la modification de la représentation des données des valeurs dans la sous-fenêtre d'onde. À l'aide des options du sous-menu Modifier, l'utilisateur peut modifier le format des données des signaux, les réorganiser, les décaler, les couper, les mettre en surbrillance, regrouper les signaux, commenter les signaux, changer la couleur des signaux, etc.
Rechercher
Le sous-menu Rechercher est utilisé pour effectuer des recherches sur les noms et valeurs de réseau. Il permet d'exécuter des fonctions sur différents niveaux hiérarchiques des signaux et des instances dans le VCD file.
Temps
Le sous-menu Heure contient un surensemble des fonctions exécutées par les boutons de navigation et du panneau d'état.
Il permet des fonctions simples, liées au temps, comme le zoom, le déplacement vers un point temporel particulier, le déplacement du signal dans une certaine direction, etc.
Marqueur
Le sous-menu du marqueur est utilisé pour effectuer diverses manipulations sur le marqueur ainsi que pour contrôler le défilement hors écran.
Il permet la fonctionnalité d'ajouter de nombreux marqueurs sur la fenêtre de signal. Un maximum de 26 marqueurs de noms sont autorisés et les temps pour chacun doivent être différents.
a. Pour ajouter des marqueurs dans la fenêtre de signal
Faites un clic gauche au point requis où vous souhaitez placer le marqueur et appuyez sur ALT + N. Cela placera un marqueur nommé (A, B, C, etc.) au point requis. L'utilisateur peut continuer à le faire pour 26 emplacements horaires différents.
Pour comparer la valeur temporelle à tous les marqueurs de lieux, Menu → Marqueurs → Afficher les données de changement de marqueur.
Cela ouvrira une fenêtre avec la valeur temporelle de chaque marqueur. L'utilisateur peut noter manuellement la valeur temporelle de chaque marqueur placé et la soustraire pour calculer la différence de temps entre 2 marqueurs.
b. Pour supprimer un marqueur dans la fenêtre de signal
L'utilisateur peut accéder à Menu → Marqueurs → Collecter un marqueur nommé. Cela supprimera le dernier marqueur nommé placé dans la fenêtre de signal. L'utilisateur peut supprimer tous les marqueurs nommés en accédant à Menu → Marqueurs → Collecter tous les marqueurs nommés (Figure 12).
Sur la figure 13, nous pouvons voir comment les couleurs des signaux ont été modifiées. Vous pouvez également observer un signal vide ajouté à la fenêtre du signal avec un commentaire – Signal vide.
Notez également la présence de 6 marqueurs nommés (A – E) et la compurgation de la valeur temporelle entre ces marqueurs en ps.
View
Le View Le sous-menu est utilisé pour contrôler divers attributs traitant du rendu graphique des éléments d'état ainsi que des valeurs dans la sous-fenêtre de signal. À partir de ce menu, vous pouvez convertir la fenêtre de signal en noir et blanc ou également en couleur. Le View Le sous-menu vous permet également de modifier la dimension du temps allant de secondes (secs) à ficosecondes (fs). L'utilisateur peut trouver cette option View → Échelle à la dimension temporelle → fs.
Aide
Le sous-menu d'aide contient des options permettant d'activer l'aide en ligne ainsi que d'afficher les informations sur la version du programme.
Conclusion
Ce document a été créé pour aider l'utilisateur à simuler avec succès sa conception et à vérifier la fonctionnalité en corrigeant la rédaction du banc de test nécessaire et en utilisant Icarus Verilog avec GTKWave pour afficher les formes d'onde et observer les résultats.
Historique des révisions
Révision | Date | Description |
1.00 | 20 mai 2024 | Version initiale. |
R19US0011EU0100 Rév.1.0
20 mai 2024
© 2024 Renesas Électronique
Documents / Ressources
![]() |
Logiciel de simulation RENESAS ForgeFPGA [pdf] Guide de l'utilisateur REN_r19us0011eu0100, simulation logicielle ForgeFPGA, logiciel ForgeFPGA, ForgeFPGA, simulation ForgeFPGA, simulation logicielle, simulation, logiciel |