J'ai ajouté une assertion immédiate pour vérifier que deux registres ne sont pas programmés à la même valeur à un moment donné. J'obtiens un échec au temps 0fs parce que toutes les valeurs sont non initialisées et sont 'x'. Y at-il un moyen de désactiver proprement cette assertion seulement au moment initial? Erreur d'assertion immédiate SystemVerilog au temps 0fs
always @(*) begin
assert_reg_val_cmp:
assert (reg != 1'b1) else $error("...error msg...");
end
Je pourrais utiliser la comparaison
reg !== 1'b1
, qui compare 'x' aussi, mais je veux attraper tous les 'x' après 0fs.
Avez-vous un signal de réinitialisation que vous pouvez vérifier avant de vérifier l'assertion? – igon
Je peux, mais je ne suis pas sûr de savoir comment la syntaxe va fonctionner. Je connais la syntaxe des assertions simultanées, mais où 'disable iff (reset! == 1'b1)' go? – Wilderness
'désactiver iff' ne fonctionne pas une assertion immédiate. Vous pouvez utiliser: 'assert (reset === 1'b1 || reg! = 1'b1) else $ error (" ... erreur msg ... ");' ou 'if (reset == 1'b1) assert (reg! = 1'b1) else $ error ("... erreur msg ..."); ' – Greg