35 / 37 · Concept
Compilation, lint et synthèse : portée des diagnostics
Fixez sources, top et langage et distinguez syntaxe, largeurs, verrous et fonction.
Les leçons sont gratuites. Inscrivez-vous pour enregistrer vos progrès.
Définir la demande faite à l'outil
Un résultat dépend des sources, top, paramètres, langage et version. Compilez DUT et dépendances, avec banc comme top distinct. Ne synthétisez pas le générateur d'horloge du banc et ne confondez pas module non instancié et module testé. Les exemples utilisent un sous-ensemble synthétisable pratique; simulateur et moteur produit peuvent prendre en charge des parties différentes. .sv n'active pas magiquement toutes les fonctionnalités.
Compilation et simulation ont des portées différentes
La compilation peut refuser syntaxe, module manquant et référence invalide, sans prouver arithmétique ou priorité. La simulation compare les scénarios exécutés; PASS concerne ces comparaisons et cette source. Pour le banc:
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvpNotez les deux statuts. Exécuter une ancienne sim.vvp après compilation échouée peut donner un PASS trompeur. Produisez un nouveau fichier par configuration et arrêtez si la compilation échoue.
Examiner les causes
| Diagnostic | Question |
|---|---|
| Module absent | Fichier et nom corrects? |
| Troncature | Quels bits, retenue ou signe sont perdus? |
| Verrou inféré | Quel chemin combinatoire n'affecte pas? |
| Plusieurs pilotes | Qui possède la variable? |
| Signal inutilisé | Intention ou connexion manquante? |
| Boucle combinatoire | Retour à l'entrée sans registre? |
Ne masquez pas tout pour nettoyer le journal. Corrigez ou documentez une exception limitée, intentionnelle et testée. Les catégories changent selon version. La référence officielle des avertissements Verilator explique WIDTH, LATCH. Si installé, une option supplémentaire:
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.svC'est une voie proposée, pas une preuve d'exécution. Distinguez commandes utilisées et suggérées.
La synthèse constitue une autre étape
Une vérification Yosys générique:
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'Elle examine frontal et structure générique, pas ressources FPGA spécifiques, placement, routage, clôture du timing ou fabrication. L'adaptation technologique et les contraintes demandent d'autres travaux.
Exercice : isoler les variantes défectueuses
Créez trois copies jetables: nom de module enfant incorrect, somme de neuf bits dans huit, affectation combinatoire manquante. Observez les détections de chaque outil et les besoins de test fonctionnel. Une troncature peut être voulue, un verrou peut compiler: comparez aux exigences. Conservez un échec pertinent avec source restaurée. Un diagnostic inexpliqué reste ouvert.