芯片爱好者小李
说点实在的,光知道工具不行,得形成流程。我一般的板级调试四步走:
1. 静态检查:下载bitstream前,用VIO设几个关键内部信号为输出(比如状态机状态码、错误标志位),直接拉到顶层端口用LED显示。上电先看LED显示的状态是否合理,这能快速排除大规模错误。
2. 可控刺激:用VIO生成动态输入。比如把某个使能信号、数据源选择信号做成VIO输入,在硬件运行时手动切换。同时,把你想观察的内部信号加到ILA里。通过VIO手动操作,一步步逼近故障条件,同时用ILA观察反应。这个过程能帮你快速定位问题模块。
3. 精准触发:ILA触发设置是门学问。别怕麻烦,多用‘捕获控制’功能。比如,你可以设置只有当VIO的某个开关为高时,ILA才使能捕获。这样你可以在需要的时候才抓波形,避免海量无用数据。触发条件尽量具体,描述出‘异常发生前一刻的特征’。
4. 对比分析:如果有可能,在仿真里建立一个同样的ILA触发条件,抓取仿真波形。然后把板级抓到的真实波形和仿真波形放在一起对比,差异点往往就是问题所在。这招对解决时序、亚稳态问题特别有效。
注意:调试时时钟频率别跑太高,先低频调通逻辑。VIO和ILA会占用资源,影响布局布线,如果问题很诡异,试着移除它们重新编译一次,看看是不是工具本身影响了时序。
