资讯动态

从验证角度谈后仿

发布时间:2026/9/15 10:49:13 来源:尧图企业网站定制
1.后仿是什么rtl设计到一定阶段以后需要进行综合网表的步骤用sdc综合出来的网表去给后端做设计用。 此时综合出来的网表netlist 可作为rtl的替换塞进验证环境里跑仿真此时的仿真为不带timing的网表的后仿仿真。 后端设计完成给了sdf timing约束后加进去一起跑仿真的叫带timing网表的仿真。带pg综合后的网表叫netlist_pg 此综合网表netlist_pgsdf 约束放到一起的仿真叫后仿。如果有dft逻辑那么dft netlist网表pg netlist网表是最全的netlist。 看公司需求是否用最全的netlistsdf 约束来跑仿真。2.后仿的意义检查异步逻辑检查多时钟周期的时序检查错误路径的时序。3.后仿flow加入验证环境基本的vcs timing选项sdfverbose -negdelay neg_tchk csdfprecompdir$(SDF_C_DIR) transport_path_delays pulse_e/0 pulse_r/0 transport_int_delays pulse_in_e/0 pulse_int_r/0-sdfretain -xlrm alt_retain(不会让输出发生变化的RETAIN信息和X态会被优化)-sdfretainwarning optconfigfilepostsim.cfg(ignore timing violation file) -f behavior_list-negdelay:允许 SDF 里的负互连延迟不加VCS 会把所有负 delay 强制改成 0时序结果失真。PR 后 SDF 经常出现负 delay必须开启neg_tchk:允许负的 setup/hold 时序检查很多标准单元 specify 里时序约束是负值不加会漏报时序违例。门级后仿标配只存在于门级前仿的选项notimingcheck关闭所有 setup/hold 时序检查变成纯功能仿真nospecify关闭 specify 块路径延迟时序失效no_notifier时序违例时不翻转 notifier 信号不会把输出变成 X。 作用防止一点点 hold 违例就全片 X 态传播方便继续跑完仿真看功能但是依然会报时序违例 warning。netlist comp option带dft的与此相同:基本选项no_notifier notimingcheck nospecify defineNETLIST-f /netlist.fpostsim comp option基本选项vcsinitregrandom-f /netlist.fpostsim comp with pg option:基本选项-f netlist_pg.f(将rtl list替换为网表用define的方式将sdf 文件annotate进环境。方式是在tb top里initial begin end块中加入ifdef SS$sdf_annotate(ss sdf file, tb_top.dut_inst,,./sdf_max.log,MAXIMUM,,FROM_MAXIMUM);ifdef FF$sdf_annotate(ff sdf file, tb_top.dut_inst,,./sdf_min.log,MINMUM,,FROM_MINIMUM);ifdef TT$sdf_annotate(tt sdf file,tb_top.dut_inst,,./sdf_typical.log,MINMUM,,FROM_MAXIMUM);在comp option中加入define*来决定使用哪种sdf。一般后端设计组会给出3种timingsstt和ff。每种timing又分三种delay一般选ssmaxdelay 和ffmindelay作为两个极端来跑后仿。elab选项主要用来加define去区分是跑哪种网表netlist elab optiondefineNETLISTSIMpostsim elab optiondefineNETLISTSIM definePOSTSIMpostsim pg elab optiondefineNETLISTSIM definePOSTSIM definePOWER_PINS definePOWER_PIN definePOWER_PINS_NEG_MODEL definePGnetlist sim optionpostsim sim optionpostsim with pg sim optionvcsinitreg0(init reg value is 0, to avoid init value x)4.后仿case的调试1.常见错误类型1多级同步的第一级出现timing violation一般可以忽略掉。忽略的方法是在postsim.cfg文件里加instance {第一级的信号的全路径} {noTiming}2.常见类型错误2在综合后的网表里有些信号拉成z导致case里的force信号名需要修改才能把case跑过。 解决方案是在force的时候最好使用reg类型的信号如果没有需要加define来区分跑网表类型和跑rtl。 wire类型的多bit信号在综合网表里会被打成单根信号名字也可能会发生变化需要看波形检查。3.常见类型错误3有些关键信号在每次网表仿真的时候会随机拉成0或者是1这个时候如果在case里等这个信号的话需要根据网表打开的波形来确定是等上升沿或者下降沿。3.用verdi打开后仿波形。postsimverdi -sverilog v2k -f ${TB_FILE_OPTS} ${VERID_OPTS} defineNETLISTSIMdefinePOSTSIM -uvm -full64 -workMode hardwareDebug -top tb_top -ssf */*.fsdbnetlistsimverdi -sverilog v2k -f ${TB_FILE_OPTS} ${VERID_OPTS} defineNETLISTSIM defineARM_UD_MODEL -uvm -full64 -workMode hardwareDebug -top tb_top -ssf */*.fsdbpostsim with pgverdi -sverilog v2k -f ${TB_FILE_OPTS} ${VERID_OPTS} defineNETLISTSIMdefinePOSTSIMdefinePOWER_PINS definePOWER_PIN definePOWER_PINS_NEG_MODEL -uvm -full64 -workMode hardwareDebug -top tb_top -ssf */*.fsdb5.名词解释sdcconstraining designs for synthesis综合的设计约束sdf 文件standard delay format描述电路布局布线后单元及互联线的延时数据主要作用是将延迟信息反标back annotation到功能模型中模拟芯片在真实工作时的状态。后端设计完成出的一份文件。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价