热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何减少IC设计和验证的仿真时间

这是IC君的第26篇原创文章(同步于公众号icstudy)在集成电路IC项目的执行过程中,时间往往是一个奢侈品。为了赶上tapeout的schedule,IC工程师们(包括IC君)

这是IC君的第26篇原创文章 (同步于公众号 icstudy )

在集成电路IC项目的执行过程中,时间往往是一个奢侈品。为了赶上tapeout的schedule,IC工程师们(包括IC君)天天加班加点做着设计和验证,最近IC君因为长期加班又胖了3斤。

当IC设计工程师将需要的电路模块做完之后,就进入了漫长的仿真和验证之路,可以说仿真和验证占据了整个项目至少70%以上的时间。

只有经过充分的仿真和验证,抓出足够多的bug,大家才能放心的tapeout出去。有时候抓的bug少了,项目leader就觉得很奇怪,总觉得这个阶段应该抓出不少bug。

如果临近tapeout,仿真和验证还没做完,那就会影响项目的schedule。

既然仿真和验证所占的时间这么长,那我们有没有什么办法来提高仿真和验证的效率呢?IC君就自己的工作经验,来粗浅的谈一谈,也希望各位有什么好的经验留言分享。

1

首先,IC君将所做的仿真分为2大类:逻辑仿真 和 电路仿真。

逻辑仿真主要针对行为级、RTL级和门级网表的数字电路。

而电路仿真主要是针对spice格式的网表,如一些模拟电路、数模混合电路、SOC系统等;

对于逻辑仿真而言,提高仿真和验证的效率有如下几种:
1 filelist去掉不必要的文档,减少编译时间;

2 减少dump的信号,只dump需要模块的波形;

3 在testbench加入自动检查的语句:

这样可以在仿真跑完后,快速检查log文件来确定设计的正确性;比如信号之间的相对关系、信号的输出等。

4 简化电路:

比如在设计中用到一个很大的SRAM模块,如果把SRAM的电路都包含进去,仿真时间就会非常长。可以保留SRAM的一小部分,仿真时只会操作到SRAM的保留部分。当然简化电路的前提是被简化的电路模块已经经过充分验证了。 5与参考设计作比较:

快tapeout的时候,突然因为某些原因,不得不修改电路。改完之后也来不及验证所有case,可以与前一版的设计作比较,就能快速定位出哪些改错的地方。匆匆忙忙改的电路是最容易出bug的!

6 欢迎大家补充啊!

对于电路仿真而言,提高仿真和验证的效率有如下几种:

  1. 采用更快的仿真器。

工欲利其事,必先善其器。spice格式的仿真器有hspice,finesim,hsim等。通常情况下:

仿真时间: hspice> finesim > hsim

仿真精度: hspice>=finesim> hsim

很小的模块,这3者的速度都差不多。比较大的模块,一般finesim和hsim速度是hspice的好几倍。而且finesim和hsim都可以在速度和精度之间进行折衷:

《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》

另外 finesim还支持 并行仿真,只要cpu足够多,仿真速度就可以足够快。

《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》

2. 保存电路的某个状态给后续仿真用。

比如整个芯片需要reset过程或者一个高压setup过程,那就可以利用hsim run完这个过程,并保存.ic文件。接下来就可以用hspice .include “xx.ic”,仿真后续过程,节省了冗长的建立时间。

《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》

3. 加入自动检查的语句,提高仿真验证的效率。

如hspice 支持的vector 比较语句:

.vec “xx.vec”

其中xx.vec的内容如下:

《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》

这样就可以在特定的时间段比较输出的结果是不是我们预期的,并在log文件中记录。

如finesim的信号的setup 时间检查:

《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》

如hsim的信号的setup 时间检查:

《如何减少IC设计和验证的仿真时间》
《如何减少IC设计和验证的仿真时间》

4.简化电路
可以去掉不必要的电路,减少仿真时间。比如当你要仿真的模块中,A功能是操作SRAM的,B功能不会用到。那仿真A情况时可以用包含SRAM的网表,仿真B情况时用不包含SRAM的网表;网表的处理可以参考Tcl脚本在IC设计中的应用。

一些复杂的模拟电路和特殊电路,可以用verilogA model代替,上面提到的hspice仿真器都是支持verilogA model的。

5.欢迎大家补充啊!


推荐阅读
author-avatar
香水百合-2012
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有