Verilog小白2024
偶发bug调试就是个体力加脑力活。我的流程一般是:
第一步,精简复现场景。如果bug在某个特定操作后偶尔出现,就先确保ILA只在这个操作期间使能,避免抓无关数据。
第二步,触发设置要有层次。先设一个宽泛的触发(比如状态机进入某个可疑状态),抓到几次后,分析波形,找出更具体的特征,再设更精确的触发条件。Vivado ILA支持序列触发(sequence trigger),这个很好用,可以设成‘先满足条件A,再满足条件B’才触发,适合捕捉那种有前后关联的偶发问题。
第三步,善用存储模式。比如用‘窗口模式’存储触发点周围的数据,而不是从头存。
最关键的技巧是:别光靠ILA。在Verilog里加一些调试代码,比如一个循环计数器,当错误发生时把计数器的值锁存出来。这样你就能知道bug发生前系统运行了多少个周期,对复现问题很有帮助。
另外,硬件资源允许的话,可以同时监测多个信号组,用OR触发,先广撒网。
