28.01.2015 Views

Solution Final automne 2009 - Moodle

Solution Final automne 2009 - Moodle

Solution Final automne 2009 - Moodle

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!