复位释放后设计不运行
按时钟、复位、使能、输入握手的顺序定位停滞。
先修知识能观察至少一个目标寄存器。
适用环境通用 RTL 方法;具体工具与器件选项以项目版本为准
验证状态官方资料对照与原创教学示例 · 板卡 / Palladium 步骤待设备验证
先排除观察错误
核对波形窗口、采样时钟、探针层次和下载版本。若分析仪本身没有采样,不能据此判断 DUT 没有运行。选择一个已知自由运行的计数器作为观察基准。
沿控制依赖逐级检查
确认目标时钟有边沿;检查复位极性、同步链输出以及各域释放情况;再检查 clock enable、状态机入口条件和外部 ready。停在第一处不满足预期的条件,追查其上游来源。
做有边界的验证
构造只包含复位和单个事务的短测试。若依赖 PLL lock、外部初始化或软件写寄存器,把这些事件记录进检查表。不要通过无期限等待掩盖启动条件缺失,超时必须给出当前状态与缺少的事件。
原理与信号关系
卡在复位附近可能是没有时钟、复位极性错误、释放条件未满足,也可能是状态机已经退出复位但第一笔握手没有发生。按依赖顺序检查电源或模型初始化、时钟、复位、启动条件和首笔事务,比直接探测大量内部数据更有效。超时应指明在哪个阶段等待以及已经观察到多少时钟边沿。
动手步骤与预期结果
按下面的顺序执行,每一步都留下可复核的证据。若当前步骤的预期条件未满足,先停在该阶段定位原因;不要继续累积后续错误。涉及工具、板卡或专用硬件的步骤,需要使用本工程实际版本和配置,示例数值不能直接替代设备规格。
- 确认目标域有时钟边沿
预期与判定:用独立观察点确认时钟推进;门控关闭时先查使能和启动依赖。
- 检查 DUT 端实际复位
预期与判定:观察最终连接到寄存器的复位,而非仅看 Testbench 顶层变量。
- 检查解除后的状态
预期与判定:按设计等待同步释放延迟;检查 PLL lock、初始化完成、启动使能。
- 加入有界阶段检查
预期与判定:分别限制等待复位结束、ready 和首个响应的周期数,超时输出阶段名。
软件 Testbench 片段,观察周期数按项目设置;不会替代对停钟的独立墙钟 watchdog。
integer waited;
initial begin
wait (!rst);
waited = 0;
while (ready !== 1'b1 && waited < 100) begin
@(negedge clk);
waited = waited + 1;
end
if (ready !== 1'b1) $fatal(1, "ready timeout after reset");
end典型故障:从现象到复测
下面的案例是为说明定位方法而构造的教学场景,不代表真实客户事故或本平台设备实测。实践时先确认现象与证据相符,再采用相应修复;若证据不同,应回到前一步缩小范围,避免把同一种表象都归因于同一个问题。
完成检查
- 已确认采样与下载版本
- 时钟复位使能逐项核对
- 短测试有超时与状态输出
延伸阅读与来源
本文为黄河电子原创教学说明。产品命令与支持范围请以实际安装版本的官方文档为准。
继续阅读
排障编译失败时先收集哪些证据
从第一条错误判断问题属于输入、展开、综合还是资源阶段。
仿真通过但硬件结果不一致
从输入、初始化、语义和跨域行为建立差异清单。
为什么没有捕获到需要的波形
检查窗口、触发、可见性和数据完整性。
黄河电子