那些年,我们一起踩过的后仿真的坑
转载自芯司机微信公众号
一、简介
后仿真,是对经过综合/布局布线后的门级网表进行仿真,与前仿真对rtl代码进行仿真,找出功能上的缺陷相比,后仿真主要检查时序上的问题。
相比较理想状况下的rtl仿真(功能仿真、前仿真),后仿消耗时间更多,在可读性差的cell里穿梭行走,debug的难度大大增强了,而一般我们在做后仿的时候,往往也意味着离tapeout的时间很急迫了。
那么,时间紧,任务重的情况下,后仿经验的积累就尤为重要了,除了打怪升级多练手外,我们还可以从彼此的踩过的坑中快速攥经验值。
二、没有复位的寄存器
一般情况下,设计里面的寄存器都要有复位端。但是,别忘了,后仿不仅仅包括设计的网表,还有各种model,比如analog model,这些model可能因为种种原因,存在没有初值没有复位的寄存器信号。这些寄存器在后仿时候往往给我们造成很大的麻烦。
reg rg_a, rg_b;
always @(posedge clk) beginrg_b <= rg_a;
end
解决方案:
我们在testbench中通过force-release的方式对寄存器赋初值,因为变量是reg类型的,所以只要赋初值后,在没有其他条件触发时,会一直保持force进去的值。
initial beginforce TOP.rg_b = 0;
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
