J'ai un module qui est passé un parameter
puis instancie un autre module correspondant au paramètre défini.Qu'est-ce qu'une instruction LINT/synthèse safe pour lancer une erreur lors de la compilation?
Cependant, dans le cas où une affaire est pas définie pour une certaine combinaison de paramètres, je voudrais une erreur d'être jeté au moment de la compilation pour mettre en évidence le problème, comme ceci:
generate
if (PARAM1 == 1 && PARAM2 == 2) begin
// instantiate module logic_A
end else if (PARAM1 == 2 && PARAM2 == 1) begin
// instantiate module logic_B
end else begin
// throw an error at compile time if we haven't
// defined a case for those parameters
end
endgenerate
Cependant , ce code doit encore être synthétisable (dans Verilog, pas SystemVerilog) et passer LINTing, malgré l'erreur insérée.
Est-ce que quelqu'un sait ce que je pourrais utiliser dans cette situation? Merci d'avance.
En SystemVerilog, vous pouvez simplement faire '$ fatale ("message") dans la clause else du' generate-if'. –
Juste vérifié, dans vcs 2015 il est implémenté mais nécessite un switch de compilation spécial "-assert svaext". vcs produit un joli message de compilation dans un tel cas. Sinon, il détecte une erreur de syntaxe. Avec 'initial', il compile sans problèmes et génère un message de violation d'exécution. – Serge