Ниже я разместил полный код почтового ящика. Он имеет генератор классов, драйвер класса и код верхнего уровня. Мой вопрос в приведенном ниже коде, внутри генератора классов, как используются Transation tr и почтовый ящик mbx? Также, в функции new, как используется mbx?
program mailbox_example(bus_if.TB bus...);
class Generator; // Class Generator
Transaction tr;
mailbox mbx;
function new (mailbox mbx);
this.mbx=mbx;
endfunction
task run;
repeat (10) begin
tr=new;
assert(tr.randomize);
mbx.put(tr); //send out transaction
end
endtask
endclass
class Driver; //Class Driver
Transaction tr;
mailbox mbx;
function new(mailbox mbx);
this.mbx=mbx;
endfunction
task run;
repeat(10) begin
mbx.get(tr);
@(posedge busif.cb.ack);
bus.cb.kind<=tr.kind;
...
end
endtask
endclass
mailbox mbx; //Top level
Generator gen;
Driver drv;
initial begin
mbx=new;
gen=new(mbx);
drv=new(mbx);
fork
gen.run();
drv.run();
join
end
endprogram
mailbox #(Transaction) mbx
Это позволяет компилятору проверять типы объектов, которые вы помещаете / получаете из почтового ящика. - person dave_59   schedule 09.11.2015