2017-01-30 49 views
2

我已經建立了一個(正常工作)記分牌/監視器環境:的Specman UVM記分牌基本問題

// Scoreboard : like uvm_scoreboard 
    scbd_port packet_add : add packet_s; 
    scbd_port packet_match : match packet_s; 

我添加流:

// Monitor: 
    expected_packet_o : out interface_port of tlm_analysis of packet_s is instance; 

    connect_ports() is also { 
     expected_packet_o.connect(Scoreboard.packet_add); 
    }; 

    add_to_Scoreboard() is { 
     // ... collecting packet logic ... 
     // Actually adding the packet to SB: 
     expected_packet_o$write(expected_packet); 
    }; 

我的匹配流程:

// Monitor: 
    collect_DUT_output() is { 
     // ... receiving packet logic ... 
     Scoreboard.match_in_scbd(received_packet); 
    }; 

我的問題是:是否應該使用Specman的UVM scrb端口? 爲什麼我不能直接通過packet_add添加預期的數據包,如下所示:Scoreboard.packet_add$.write(expected_packet)?我發現將數據包添加到Scoreboard的唯一方法是將另一個TLM端口連接到packet_add,因爲它是用代碼編寫的。 比賽流程中是否有像match_in_scbd這樣的添加方法?

多謝您的Specman記分添加任何澄清和匹配流的它

回答

0

這樣的想法,在TLM端口是「函數指針」只是一個花哨的包裝(如C++)指向實現方法。沒有什麼能阻止你直接調用記分板實例實例的實現方法。唯一的問題是你必須知道記分牌的哪個實例要在調用者中調用。