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

SystemVerilog中启用strobe的covergroup事件采样机制疑问

SystemVerilog Covergroup 触发事件与strobe采样的时序协调

当你在covergroup中指定@(posedge clk)作为触发事件,同时设置type_option.strobe=1时,SystemVerilog的调度机制会自动解决触发区域与采样区域的时序差异,具体逻辑如下:

  1. 明确时序区域的差异

    • @(posedge clk)的触发时机是时钟上升沿的Active区域,这是事件触发的常规调度阶段。
    • type_option.strobe=1强制covergroup的采样动作在当前时间步的Postponed区域执行,这个区域是当前时间步的最后一个调度阶段,所有信号赋值操作都已完成并稳定。
  2. 时序协调的具体流程
    对于示例代码:

    covergroup c @(posedge clk)
     type_option.strobe=1;
     // 定义coverpoint、cross等覆盖率对象
    endgroup
    

    实际执行步骤为:

    • 时钟上升沿到来,进入Active区域,@(posedge clk)事件触发,系统标记该covergroup需要执行采样,但不会立刻执行。
    • 系统继续执行Active、Inactive区域的所有其他操作(比如信号赋值、组合逻辑计算等)。
    • 当进入当前时间步的Postponed区域时,才执行covergroup的采样动作,此时所有信号都已经完成当前时间步的更新,采样到的是最终稳定值。
  3. 设计本质
    这种机制本质是利用SystemVerilog的多阶段调度特性,将采样动作从事件触发的Active区域延迟到Postponed区域,既遵循了触发事件的时机,又保证了采样到的是信号的最终稳定状态,避免了采样到中间过渡值的问题。

内容的提问来源于stack exchange,提问作者Gus Mantzorogeorge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 00:02:11