Couverture fonctionnelle et critère de fin
Mesurer les scénarios prévus, croiser les conditions importantes et fermer les trous sans confondre activité et correction.
Mesurer le plan de vérification
La couverture fonctionnelle mesure si les situations prévues ont été observées. Contrairement à la couverture de code, elle est définie par l'équipe à partir des fonctions et risques du produit.
Une couverture à 100 % ne prouve pas que le DUT est correct. Elle indique seulement que tous les bins définis ont reçu des échantillons. Il faut un scoreboard et des assertions pour juger les résultats.
La couverture se déduit du plan de vérification, pas de la structure du RTL. Une fonction absente du design ne peut pas être révélée par 100 % de couverture de code si aucun objectif fonctionnel indépendant ne la demande.
Covergroup et coverpoints
covergroup command_cg @(posedge i_clk);
option.per_instance = 1;
cp_opcode: coverpoint i_opcode iff (i_valid && i_ready) {
bins read = {2'b00};
bins write = {2'b01};
bins flush = {2'b10};
illegal_bins reserved = {2'b11};
}