2016-03-22 17 views
0

Çok basit bir arayüzü test etmek için UVM kullanıyorum ve şimdi “köşe kutusu” sorunuyla karşı karşıyayım. Bu yüzden çıkış monitöründen mantık levhasına mantık [0: 7] sinyali göndermem gerekiyor. Bu kod parçasıdır: Ben lcdCmd yalnızca son bit scorebaord aktarılır görüyoruz Simülasyon sırasındaAnaliz portu kullanılarak veri yolu sinyali gönderiliyor

class outputMonitor extends uvm_monitor; 
.. 
    logic [7:0] lcdCmd;  
uvm_analysis_port #(logic) sendPrt; 

task run_phase (uvm_phase phase); 
    forever 
    begin 
     sendPrt.write(lcdCmd) ;  
    end 
endtask 
endclass 

class scoreboard extends uvm_subscriber #(logic); 
`uvm_component_utils(scoreboard) 

function void write (logic t); 
    $display("%t: scoreboard: ########### calling write function-- data=%b", $time, t); 

endfunction 
endclass 

. Tüm veri yollarını port kullanarak transfer etmenin bir yolu var mı?

Elbette yapı veya işlem oluşturabilir, orada lcdCmd'yi yerleştirebilir ve sonra da yapıyı gönderebilirim. Ama neden otobüse binemiyorum? Vektör: mantık [0 7] standında sadece mantık olarak analiz fifo'ya ait

Teşekkür Hayk basit mistake.Like yaptılar Kodunuzda

cevap

2

...

  • Geçiş tipi argüman.
  • Aynı şey, abone sınıfı parametresi için ve yazma uygulama işlevi argümanında da geçerlidir.
  • Değiştirmeniz gereken kodu görün.

 

class outputMonitor extends uvm_monitor; 
`uvm_component_utils(outputMonitor) 

    logic [7:0] lcdCmd;  
    uvm_analysis_port #(logic[7:0]) sendPrt; 

    task run_phase (uvm_phase phase); 
    forever 
    begin 
     sendPrt.write(lcdCmd);  
    end 
    endtask 

endclass 

class scoreboard extends uvm_subscriber #(logic[7:0]); 
`uvm_component_utils(scoreboard) 

    function void write (logic [7:0] t); 
    $display("%t: scoreboard: ########### calling write function-- data=%b", $time, t); 
    endfunction 

endclass 
+0

Çok teşekkürler işe yaradı – haykp