Monitor Modülü
Gün 7: Bitirme Projesi - Bölüm 2 | DUT çıkışlarını izleyen ve paketleyen modül
Kaynak Kod
// =============================================================================
// GUN 7 - Konu 1: Monitor - Arayuzdeki Hareketleri Izleyen Modul
// =============================================================================
class ALU_Monitor;
virtual alu_if.monitor vif;
mailbox #(ALU_Transaction) mon2scb;
int monitored_count = 0;
function new(virtual alu_if.monitor vif, mailbox #(ALU_Transaction) mbx);
this.vif = vif;
this.mon2scb = mbx;
endfunction
task run();
ALU_Transaction txn;
$display("[Monitor] Baslatildi - DUT cikislari izleniyor");
forever begin
@(vif.mon_cb);
if (vif.mon_cb.out_valid) begin
txn = new();
txn.operand_a = vif.mon_cb.operand_a;
txn.operand_b = vif.mon_cb.operand_b;
txn.opcode = ALU_Transaction::opcode_e'(vif.mon_cb.opcode);
txn.result = vif.mon_cb.result;
txn.flags = vif.mon_cb.flags;
txn.out_valid = 1;
mon2scb.put(txn);
monitored_count++;
end
end
endtask
endclass