一,后仿平台的搭建

1,准备工作,这块主要包含一下几个的内容需要我们事先准备好:

①,后仿网表,后端提供

后仿的网表指的是,在仿真时,我们不再使用最开始的rtl代码来进行仿真,而是使用将rtl转化为真实的逻辑门电路的netlist来进行仿真,这里面会涉及到器件标准库的选择和设计的约束,这里不是我们的重点,重点是我们要拿到对应仿真模块的后仿 netlist

②,后仿反标的sdf文件,后端提供

所谓的SDF文件就是:Standard delay file,它是把布局布线过程中器件延时和线延时的信息保留下来,据此就可以在路径时序分析时将整条路径的时序计算出来,再判断时序约束条件就能知道是否满足时序要求了,在后仿时,vcs等工具会检查标记出来的路径,如果满足时序要求就不会报时序违例,如果不满足就会报timing violation 不同的工具生成的报告不同,但内容是一致的。

③,lib库文件,后端提供

综合后的网表中,都是逻辑门电路,因此需要这些器件的lib库来支撑vcs等仿真工具的仿真。

④,false_path 文件,后端提供

这部分指的是,一些不需要时序检查时序的异步路径,告诉仿真工具这部分的时序不需要检查,对于不同的工具,tfile文件的格式不同:

vcs的格式为: instance {false_path} {noTiming};

irun的格式为:PATH false_path -tcheck

⑤,无复位端寄存器,后端提供

这一部分主要是需要给无复位端的寄存器提供一个初始值,不然这部分寄存器在上电之后,寄存器Q端的值是不确定的,会引起内部x态的传播,需要我们给这部分寄存器一个初值。

这部分的做法有两种:

1,一个叫做cmd的文件,将所有无复位端寄存器的路径里出来,用 $deposit(instance.path,'b0/1)处理掉,加到编译列表里面即可;

2,直接在cell的库文件中,用同样的方式处理;

2,脚本需要注意的地方:

①,首先你要关注的是filelist,是否正确的将netlist包含了进来

②,lib库文件是否也被包含了进来

③,false_path需要包含进来,所谓包含进来,对于vcs来说需要通过+optconfigfile+false_path.tfile的方式包含进来,而对于irun来说只需要 +nctfile+false_path.tfile即可,同样的也可以在sim这一步,通过ucli命令将 tfile吃进来

④,compile这一步需要添加的编译命令,+maxdelays 或者 mindelays,切记需要去掉nospecify,不然迟我们添加的路径期间延就不会起作用了。但是针对maxdelays 和 mindelays,这两个命令的使用,是与网表结合在一起的,maxdelays针对setup,mindelays针对hold(其实网表生成的时候,以为已经比较贴近真实的芯片,根据器件的模型可以跑出来125℃或者-40℃的网表,我们一般都是85℃下典型场景的网表)

⑤,无复位端寄存器,和tfile一样的处理方式,只是不需要加额外的命令。

⑥,sdf的反标:

这里简单的说明一下,我们需要通过系统函数将sdf反标到netlist里面,如下:

 $sdf_annotate("sdf_file",  module_inst, sdf_configfile ,"sdf_log_file");

"sdf_file":指定SDF文件的路径,可以用宏定义来代替,一般也是这么做的

module_instance:指定反标的标注范围,一般都是从顶层开始的

“sdf_configfile”:配置文件的绝对路径或相对路径

“sdf_logfile”:指定VCS保存error 和warnings消息的SDF日志文件。也可以使用+sdfverbose来打印所有反标消息

其实还有很多参数,这里不做介绍了,因为我也不懂。。。
写法如下:

initial begin

    $sdf_annotate("sdf_file",  module_inst, sdf_configfile ,"sdf_log_file");  // 此处,我们可以根据sdf_file 来反标不同的conner,就是上文提到的内容。

end

二,后仿上需要完成的内容

一般我们跑完后仿,需要看log里面的Timing violation,找到这些时序违例的cell,添加到verdi中,追产生x态的信号,直到追到某个D触发器的两端,意味着D触发器的D端输入信号是正常的,但是Q端有了x态,说明x态是由该D触发器产生的,我们就需要分析看倒是为什么导致了x态的产生。还有一些width和period的违例,这些一般可能是由于设计中存在的时钟切换导致的,需要根据违例来确定发生的cell,以及是否会对设计产生影响。

对于后仿log中 Timing violation的处理,一般我们都有脚本将所有的时序违例过滤出来,并且时序违例中会有很多重复的违例,我们只需要将第一次遇到时序违例的地方过滤出来即可,逐条分析,逐条解决直到不再出现Timing violation。对于过滤Timing violation 脚本的编写,我在perl脚本专栏里面有讲到过。

三,后仿小结

说到后仿,这是一个十分痛苦的过程,仿真不仅慢,而且log会特别大,需要我们用脚本将Timing violation提取出来,并逐条分析,分析的过程也会非常的耗时,这条路并没有什么捷径可说,需要花费大量的时间来分析和消除timing violation,对于后端或综合提供的异步路径文件,可能往往是不完备的,我们需要通过后仿产生的x态的cell的前后级来确定是否是异步跨时钟域产生的x态,如果是,那说明异步路径文件并不完整,需要和综合/后端确认是否需要添加到异步路径文件中,做好这些,又得重新编译仿真,循环这个过程,直到消除所有的Timing violation。

vcs后仿实现的总结相关推荐

  1. VCS后仿 Warning-[NTCDNC] Negative Timing Check Did Not Converge

    https://solvnetplus.synopsys.com/s/article/Handling-Negative-Timing-Check-Convergence-Warning-157607 ...

  2. VCS使用SDF文件进行后仿反标

    概述 从概念上来说,数字验证包含两方面的内容,一个是验证功能,另一个是验证时序.对应的仿真模型(不论是model,standard cell等)也不外乎这两个部分,功能部分由逻辑,udp元件或gate ...

  3. 数字后仿,SDF文件

    目录 数字后仿步骤: 什么是SDF文件? 如何反标SDF文件? (1)作为elaboration的选项 (2)使用系统函数$sdf_annotate 数字后仿步骤: 1.用时序计算工具生成时序信息存储 ...

  4. Gate Level Simulation (前仿及后仿总结)

    ##前仿主要步骤 自己的RTL级仿真,主要是功能仿真. #Testbench(Verilog/SV, UVM) 这时候Testbench需要尽可能多的覆盖各种状况.在SV中指定时序信息需要使用Spec ...

  5. ASIC验证,关于后仿那些事

    1. 什么是后仿? 后仿真也被称为时序仿真,或者门级仿真.当芯片在后端完成布局布线后,时序文件SDF文件,会被反标到网表文件上,那么此时针对带有时序信息的网表进行仿真,称为后仿真. 2. 后仿真有何用 ...

  6. 一文讲透芯片后仿中的SDF

    SDF文件是在vcs/nc-verilog后仿真运行时将STD/IO/Macro门级verilog中specify的延迟信息替换为QRC/Star-RC抽取的实际物理延迟信息,如果SDF文件的条件信息 ...

  7. 后仿Zero Dealy环境中对于clk gating单元的处理

    章节 后仿中做ZD仿真的目的 后端插入的clk_gating单元对于ZD后仿的影响 解决的方法 后仿中做ZD仿真的目的 ZD相比于SDF仿真具有仿真速度快的优点,在进行SDF仿真前,通过运行ZD仿真可 ...

  8. perl脚本提取后仿中的notimingcheck路径

    文章目录 前言 一.perl脚本提取后仿中的notimingcheck路径 总结 前言 在我们进行IC数字后仿过程中,需要先加上-nonotifier选项,让仿真遇到违例后,先不产生叉态,保证仿真正常 ...

  9. Calibre与netlist后仿网表的仿真。

    Cadence+Calibre后仿真(个人总结,欢迎交流讨论) 一.. 对于能快速产生calire view的小模块DUT,Calibre XRC输出calibre view: 1.Spectre s ...

最新文章

  1. Memcached实战之复制----基于repcached的主从
  2. mysql加删查语句_MySQL基本语句——增、删、查、改
  3. 服务降级的概念及应用手段
  4. IE浏览器支持响应式网站设计
  5. linux网路编程之多进程并发服务器
  6. html有序列表和无序列表互相嵌套,关于列表的嵌套,下列说法正确的是( )。 答案:无序列表和有序列表可以相互嵌套与 之间相当于一个容器,可以嵌套无序列表、有序列表等网页元素...
  7. 数据科学家:我的工作就是发现别人未知的
  8. 高德地图+Serverless 护航你的假日出行
  9. 2017乌鲁木齐ICPC: K. Sum of the Line(容斥)
  10. 简单总结手机app测试,弱网测试
  11. Servlet 4.0 入门
  12. 服务器互相备份不同步_94爱分享拍了拍你,这款好用的数据同步备份软件千万不要错过!...
  13. latex插入表格:三线表格、普通表格
  14. NMS非极大值抑制算法原理
  15. Android批量添加联系人到通讯录
  16. fatal: unable to access ‘https://gitee.com/****/****.git/‘: The requested URL returned error
  17. MySQL之——崩溃-修复损坏的innodb:innodb_force_recovery
  18. iOS 图标icon尺寸大全
  19. onlyoffice文件服务器,onlyoffice踩坑记录
  20. 信贷风险指标你都懂吗?

热门文章

  1. matlab 并行计算使用心得 (不断补充)
  2. 兴安雪学运维之:目录树详解
  3. ffmpeg 安装(支持h.265)
  4. echarts柱状图上设置数字
  5. 马云第3次高考的成绩,放今年能上个什么档次的大学
  6. java计算机毕业设计家乡旅游文化推广网站源码+mysql数据库+系统+lw文档+部署
  7. 动规(19)-并查集基础题——城镇道路
  8. 去哪儿网(Qunar)急聘PostgreSQL人才
  9. oracle添加用户及权限
  10. JVM GC原理解析