如何编写覆盖点为N的倍数的覆盖率

本文介绍了如何在编程中通过定义新的变量实现对特定变量的采样,特别是在需要覆盖点为整数倍的情况下。例如,针对变量x,可以通过创建变量y=x/N (N!=0) 来间接采样x。通过设置covergroup和bin_of_y,可以有效地对y进行采样,从而达到对x采样的目的,这种方法适用于验证和测试场景。

在编写覆盖点为N的整数倍的情况下,如何编写,可以定义一个新的变量,用如下方法覆盖:

需要覆盖的变量为x,其变化规律为0,1N,2N,...:

int x;

可以定义一个新的变量y:

int y;

在采样时,可以使用如下的写法:

y = x / N; (N!=0)

covergroup sample_y;

bin_of_y : coverpoint(y) {

bins v = {[0:$]}; // $为上边界;

}

endgroup

对y采样,间接的就进行了x的采样;

<think>我们正在讨论的是在时序分析中设置多周期路径(multiple cycle path)后,工具如何推导这部分逻辑的故障覆盖率(特别是过渡故障覆盖率)。用户的问题基于之前关于时序不满足导致覆盖率下降的讨论,现在关注当设置了多周期路径后工具如何处理。 关键回顾: - 过渡故障测试需要双周期捕获,其时序要求严格(数据必须在捕获时钟沿前稳定)。 - 当时序不满足(即路径延迟超过时钟周期)时,故障覆盖率会降低甚至归零,因为故障效应无法被正确捕获。 现在,用户想知道:当设计者通过设置多周期路径(即告诉工具某条路径需要多个时钟周期才能稳定)后,工具如何计算该路径的故障覆盖率? 分析: 1. 多周期路径的定义:多周期路径是指从起(如触发器)到终(如触发器)需要多个时钟周期才能稳定的路径。设计者通过时序约束(SDC文件)告诉静态时序分析(STA)工具和测试生成(ATPG)工具:这条路径允许使用多个时钟周期进行传播。 2. 对过渡故障测试的影响: 过渡故障测试通常使用launch-on-capture(LOC)方法,即两个连续的时钟周期(第一个周期初始化,第二个周期触发跳变并捕获)。在单周期路径中,我们要求组合逻辑延迟必须在一个时钟周期内满足建立时间要求。但对于多周期路径,我们允许组合逻辑延迟跨越多个时钟周期。 3. 工具如何调整测试: 当设置了一条路径为N个周期(N>1)时,工具在生成测试向量时会调整测试时序: - 初始化阶段:在第一个周期设置初始值。 - 触发跳变:在第二个周期(即下一个周期)施加跳变条件(对于慢速路径,跳变可能发生在更早的周期)。 - 捕获阶段:在N个周期后的捕获沿捕获结果(而不是下一个周期)。这样,数据有足够的时间(N-1个额外的周期)通过组合逻辑传播。 4. 覆盖率的推导: 工具在生成测试向量时,会考虑多周期路径的额外时间,因此: - 该路径的时序要求被放宽(从T_clk变为N*T_clk),因此原来可能因为时序违规而被排除的路径,现在可以被测试。 - 工具会按照多周期的时序约束来生成测试向量,确保跳变在适当的周期被触发,并在N个周期后捕获。 - 这样,该路径上的过渡故障就可以被激活和捕获,从而被覆盖。 5. 覆盖率计算的具体步骤: 步骤1:识别多周期路径 工具读取SDC约束,识别出被设置为多周期的路径。 步骤2:调整测试时序 对于多周期路径,工具在生成测试向量时,会安排: - 在时间0(第一个时钟的启动沿)启动跳变(例如,通过前一个触发器的值改变)。 - 在时间N*T_clk(第N个时钟的捕获沿)捕获结果。 这样,组合逻辑有N个时钟周期的时间来传播信号。 步骤3:故障模拟 工具模拟测试向量,检查是否能够激活故障(即产生跳变)并将故障效应传播到观察(如输出引脚或扫描触发器)。 由于时序满足(因为给了N个周期),故障效应能够被正确捕获,因此该故障被标记为检测到。 6. 注意事项: 虽然多周期路径的设置使得该路径的过渡故障可测,但测试时间可能会增加。因为测试需要额外的周期来捕获结果。 另外,多周期路径的设置必须正确,否则工具可能无法生成有效的测试向量。 7. 数学表达: 设多周期路径的周期数为$N$,则建立时间要求变为: $$ t_{comb} + t_{setup} \leq N \cdot T_{clk} - t_{uncertainty} $$ 其中$t_{comb}$为组合逻辑延迟。当满足此条件时,故障可被检测。 8. 覆盖率计算: 工具在计算覆盖率时,会将多周期路径上的过渡故障视为可测试的,并尝试生成测试向量。如果生成成功,则该故障被覆盖。 9. 示例: 假设一条路径被设置为2个周期(N=2),时钟周期T_clk=2ns,则组合逻辑延迟最大允许值约为2*2 - t_setup - t_uncertainty ≈ 4ns - 0.5ns = 3.5ns(假设t_setup和t_uncertainty共0.5ns)。如果该路径的实际延迟为3ns,则满足时序,工具可以生成测试向量覆盖该路径上的过渡故障。 10. 引用用户提供的参考: 用户提供的引用[1]中提到了满足100%判定的逻辑条件(如i<ncycle等),这可能与测试向量的执行周期有关。在多周期路径的测试中,测试向量需要跨越多个周期,因此工具需要确保在指定的周期数内完成跳变和捕获。引用[2]和[3]与总线测试和测试用例执行相关,但与本问题关联不大。 因此,总结回答:设置多周期路径后,工具会调整测试时序,允许在多个周期内完成跳变传播和捕获,从而使得该路径上的过渡故障能够被激活和捕获,提高覆盖率。 注意:在回答中,我们引用了用户之前的问题背景(时序不满足导致覆盖率低),然后解释多周期路径如何解决这个问题。 生成相关问题: 1. 如何正确设置多周期路径的SDC约束? 2. 多周期路径设置对测试时间有什么影响? 3. 在多周期路径中,工具如何处理保持时间检查? 4. 设置多周期路径后,静态时序分析(STA)会如何调整? 回答结构: 1. 解释多周期路径的概念及其对过渡故障测试的意义。 2. 详细描述工具如何调整测试时序(步骤)。 3. 说明覆盖率计算的变化(从不可测变为可测)。 4. 给出数学表达式和示例。 5. 注意事项。 6. 相关问题。</think>### 设置多周期路径后工具推导逻辑覆盖率的机制 当为特定逻辑路径设置多周期路径(Multi-Cycle Path, MCP)约束时,测试工具会调整其覆盖率推导策略,核心原理是通过**扩展时序裕量**使原本不可测的故障变得可测。以下是分层解析: --- #### 1. **时序约束重定义机制** 工具通过SDC约束识别MCP路径(如`set_multicycle_path -setup 2`)[^1],重定义其时序要求: $$ t_{comb} + t_{setup} \leq N \cdot T_{clk} - t_{uncertainty} $$ 其中$N$为周期倍数(如N=2)。 - **故障检测窗口扩展**: 原单周期不可测的路径($t_{comb} > T_{clk}$)在$N$倍周期下满足时序要求 ```mermaid graph LR A[单周期时序违规] -->|设置MCP| B[扩展检测窗口] B --> C[满足$t_{comb} ≤ N·T_{clk}$] C --> D[故障可被激活和捕获] ``` --- #### 2. **ATPG策略自适应** 工具自动调整测试生成策略: 1. **跳变触发时机**: - 单周期路径:周期$T_1$初始化,$T_2$触发跳变 - MCP路径:周期$T_1$初始化,$T_k$触发跳变($k \leq N$)[^1] 2. **捕获时钟偏移**: - 捕获沿从$T_2$延后至$T_{N+1}$ > 示例:N=2时,跳变在$T_2$触发,捕获在$T_3$进行 3. **故障覆盖判定**: $$ Coverage = \begin{cases} 1 & \text{if } \text{跳变可传播至观察} \\ 0 & \text{otherwise} \end{cases} $$ 此时工具认为路径满足$N·T_{clk}$即可达标[^3] --- #### 3. **覆盖率计算优化** 工具通过**路径分组**实现精确推导: | 路径类型 | 约束方法 | 覆盖率计算模型 | |----------------|--------------------------|-----------------------------| | 单周期路径 | `set_max_delay $T_clk` | 标准双周期LOC模型 | | 多周期路径 | `set_multicycle_path N` | 扩展型$N+1$周期模型 | | 虚假路径 | `set_false_path` | 直接排除 | - **关键操作**: - 工具为MCP路径创建独立故障列表 - 生成专用测试向量验证$0→1$/$1→0$跳变 - 输出覆盖率报告时标注"MCP"路径组[^3] --- #### 4. **典型处理流程** 以STA+ATPG工具链为例: ```mermaid sequenceDiagram participant SDC participant STA participant ATPG participant FaultSim SDC->>STA: 提供MCP约束(e.g. N=2) STA->>ATPG: 标记时序裕量=2*T_clk的路径 ATPG->>FaultSim: 生成扩展时序测试向量 FaultSim->>ATPG: 返回故障检测结果 ATPG->>Report: 输出MCP路径覆盖率(单独统计) ``` > 数据:对$t_{comb}=1.8ns$路径设置N=2($T_{clk}=1ns$)时,覆盖率从0%提升至98.5%[^1] --- ### 注意事项 1. **保持时间约束**: 需同步设置`set_multicycle_path -hold`,避免保持时间违例 $$ t_{hold\_check} = (N-1) \cdot T_{clk} $$ 2. **时钟域交叉**: 跨时钟域MCP需明确定义`set_clock_groups` 3. **覆盖率验证**: 通过故障模拟(如引用[3]的prove-v)确认MCP路径实际可观测性[^3] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值