You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Specman:如何设置event_port的hdl_path关联至另一单元的event?

Specman event_port绑定内部event的正确实现

错误原因

你原代码中使用hdl_path()绑定的方式是错误的,因为hdl_path()的作用是将event_port关联到HDL层次中的硬件信号,而clk_e是Specman/e语言内部定义的event,不属于HDL信号范畴,因此无法通过HDL路径引用它。

正确实现方式

要将phy_master_core_arbiter_u的in_clk_sig event_port绑定到phy_master_bfm_u的clk_e event,需要使用Specman/e的connect_event()方法,而非HDL路径绑定。

方式1:在bfm单元内部直接绑定

修改phy_master_bfm_u的定义,添加循环绑定逻辑:

unit phy_master_bfm_u like uvm_bfm {
    event clk_e is rise (p_smp.clk$) @sim;
    core_arbiters[4] : list of phy_master_core_arbiter_u is instance;

    // 批量绑定每个arbiter的event_port到clk_e
    keep for each (arbiter) in core_arbiters {
        connect_event(arbiter.in_clk_sig, clk_e);
    }
}

方式2:在agent中绑定

如果需要在实例化bfm的agent中处理,可使用如下代码:

// agent中的绑定逻辑
keep for each (arbiter) in bfm.core_arbiters {
    connect_event(arbiter.in_clk_sig, bfm.clk_e);
}

额外注意

需要移除phy_master_core_arbiter_u中的keep bind(in_clk_sig, external);语句,因为该语句是声明event_port要绑定到外部HDL信号,现在改为绑定内部event,无需保留该约束。

内容的提问来源于stack exchange,提问作者Zeev Gal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:47:33