Generate conditionnel
Fait partie de la section Conception et vérification RTL du Journey Verilog de Coddy. Leçon 14 sur 38.
Un generate-if sélectionne une structure matérielle à l’aide d’un parameter constant. Une seule branche est élaborée pour une instance donnée. Un if procédural ou une expression conditionnelle avec un signal sélectionne le comportement à l’exécution : cela ne remplace pas la configuration generate.
Extrait pertinent ; les déclarations et connexions environnantes sont fournies dans le défi.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateLe parameter choisit quel pilote est construit pour cette instance.
Utilisez generate-if pour la configuration constante et une sélection RTL ordinaire pour les contrôles à l’exécution.
Défi
MoyenUtilisez un generate conditionnel : MODE=0 transmet a sans modification ; MODE=1 inverse les huit bits de a. L’entrée b n’est pas utilisée. MODE vaut soit 0, soit 1. Le banc de test instancie les deux configurations et affiche d’abord y0, puis y1.
Complétez design.v et préservez les noms de module et les ports. Le testbench.v verrouillé fournit les changements d’entrée et affiche les sorties une fois stabilisées. Il choisit un scénario à l’aide d’un argument du simulateur tel que +CASE=1 ; aucune entrée standard n’est requise. N’ajoutez ni affichage, ni délai, ni terminaison de la simulation au design. La sortie attendue est une ligne de valeurs décimales par observation, séparées par un espace et se terminant par un saut de ligne.
Essayez vous-même
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
assign y=0;
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Conception et vérification RTL
1RTL combinatoire fiable
Les valeurs par défaut évitent les latchsEncodeurs de prioritéValidation one-hotDécodage sûr avec caseRécapitulatif - Routeur de requêtes2Largeurs et arithmétique signée
Préserver les bits de retenueComparaisons signéesDécalages arithmétiques vers la droiteDépassement et saturationRécapitulatif – différence signée3RTL réutilisable
Fonctions combinatoiresParamètres à largeur sûreBoucles generateGenerate conditionnelRécapitulatif - Masque de bits réutilisableEntraînez-vous par vous-même : Compilateur Verilog en ligne