Solution Final automne 2009 - Moodle
Solution Final automne 2009 - Moodle
Solution Final automne 2009 - Moodle
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
INF8500 Examen final Automne <strong>2009</strong><br />
Question 5 (4 points) Génération aléatoire et vérification fonctionnelle<br />
Soit le DUT (Design Under Test) et son testbench de l’unité arithmétique et logique (présenté en<br />
classe lors du dernier cours) que nous souhaitons vérifier. La figure 5.1 présente les contraintes<br />
que l’on donne lors de la génération aléatoire d’un stimulis. La figure 5.2 présente des points de<br />
couverture que l’on souhaite couvrir pour tenter d’obtenir 100% de couverture fonctionnelle.<br />
a) (1 pt) Décrivez textuellement les contraintes de notre stimulis (Figure 5.1)<br />
b) (1.5 pt) Décrivez textuellement la couverture que l’on souhaite faire ici (Figure 5.2)<br />
c) (1 pts) À partir de cette information (figure 5.1 et 5.2) set de la spécification de l’unité<br />
arithmétique et logique donné en Annexe, croyez-vous que l’on puisse obtenir (ou tendre<br />
vers) 100% de couverture fonctionnelle en supposant que l’on simule durant 5ms.<br />
Justifiez clairement votre réponse.<br />
d) (.5 pt) Si vous avez bien compris le lien entre les figures 5.1 et 5.2 et en sachant que<br />
plusieurs générateurs peuvent être définis pour un même testbench, vous devriez<br />
maintenant être en mesure de répondre à la question suivante : À quel endroit devrait<br />
retrouver les groupes de couverture dans un testbench Justifiez.<br />
class Packet;<br />
rand reg [`REGISTER_WIDTH-1:0] src1;<br />
rand reg [`REGISTER_WIDTH-1:0] src2;<br />
rand reg [`REGISTER_WIDTH-1:0] imm;<br />
rand reg [`REGISTER_WIDTH-1:0] mem_data;<br />
rand reg immp_regn_op_gen;<br />
rand reg [2:0] operation_gen;<br />
rand reg [2:0] opselect_gen;<br />
reg<br />
enable;<br />
string<br />
name;<br />
constraint Limit {<br />
src1 inside {[-10:10],0,32'hffffffff,32'h55555555,32'haaaaaaaa};<br />
src2 inside {[-10:10],0,32'hffffffff,32'h55555555,32'haaaaaaaa};<br />
imm inside {[0:65534]};<br />
mem_data inside {[0:65534]};<br />
//payload_size inside {[9:12]};<br />
opselect_gen inside {[0:1]};<br />
if ((opselect_gen == `ARITH_LOGIC)){<br />
operation_gen inside {[0:7]}; }<br />
else if ((opselect_gen == `SHIFT_REG)) {<br />
immp_regn_op_gen inside {0};<br />
operation_gen inside {[0:3]}; }<br />
}<br />
extern function new(string name = "Packet");<br />
endclass<br />
Page 11 de 14