Specman UVM记分牌基本问题

时间:2017-01-30 12:34:42

标签: uvm specman e

我已经构建了下一个(正常工作)记分板/监控环境:

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

我的ADD流程:

// 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);
    };   

我的MATCH流程:

// 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)?我发现将数据包添加到记分板的唯一方法是将另一个TLM端口连接到packet_add,因为它写在代码中。 在匹配流程中是否有一些像match_in_scbd这样的添加方法?

感谢您对Specman Scoreboard添加和匹配流程的任何说明

1 个答案:

答案 0 :(得分:0)

以这种方式思考,TLM端口只是"函数指针"的一个花哨的包装器。 (如在C ++中)指向实现的方法。没有什么能阻止您直接调用记分板实例实例的实现方法。唯一的问题是你必须知道在呼叫者中调用哪个记分板实例。