1、EDA 后端工具比较最近部门一直在考虑关于后端工具的选择,大半年了,synopsys 和 cadence 两家的技术支持不停的来做技术讲座,都说自家的工具好。最近一周,cadence 的售前又来做技术讲座,顺便再次分析了自家软件的好处,使得我开始对 synopsys 的工具有点怀疑了。好在今天终于看到了一片不错的文章,详细、客观的分析了 2 家公司的后端工具优劣,因此转贴到这里,以备参考。起个唬人的名字而已,无意挑起 Synopsys 和 Cadence 的战争,恐怕没有热闹可看。最近看到水木 MeTech 上关于 Astro 和 Encounter 的讨论,回想起自己的数字后端历程,有了写个
2、工具回忆录的冲动。我从 01 年开始用 SE(SiliconEnsemble) ,02 年进入 Apollo,随后进入 Astro,07 年转投 SoC Encounter,每个工具都有大规模芯片的流片经历,几个工具总体来说各有千秋和 Bug。SE 是骨灰级鼻祖,把持了古老的 IC 时代,如今基本已寿终正寝了。但对于古老工艺下的设计,它却是唯一选择,因为工艺库对其他工具可能没有相应支持,与其绞尽脑汁去考虑库的转化,不如花点功夫学习下 SE。SE 菜单简单明了,已经包含了现在数字后端设计流程的绝大多数概念,但支持的工艺和规模都很有限,非 EDA 古玩爱好者就不要考虑了。Apollo 可以看作 S
3、E 时代的终结者,虽然伴随着它官司不断,但不妨碍它成为 P&R 工具的历史精品。第一眼看到 Apollo,你肯定会吐血,为什么?菜单选项浩如烟海,菜单下面有子菜单,选项下面有子选项,显示器小点可能会连对话框都看不全。但是 Apollo 的 layout 视图很舒服,手工操作支持的很好,Milkway Database 也非常方便好用,如今也已经退出历史舞台了Astro 是 Apollo 的升级版,SoC Encounter 可以看作是 SE 的取代产品,虽然 IC Compiler 是Astro 的下一代取代产品,但目前数字后端设计工具的主流还是Astro 和 Encounter。至于性能孰优
4、孰劣,两家公司都有堆成山的 BenchMark 说明自己牛X。我个人的使用感受是,同时期 release 的两个工具的速度和memory 使用相差不大,即使有差异,这也不是我们 IC 设计者最关注的方面。芯片最终P&R 结果的差异往往来自于设计本身的特点,以及工具的使用策略。对于使用者来说,与其花精力给两个工具做比较,不如多花点时间了解设计本身的特点,掌握什么样版图能满足你的性能要求,从原理出发去调整流程和组合选项。无论 Manual 上说的如何天花乱坠,都不要给工具寄托太大希望,The tool is just a tool,根据需求灵活使用是关键。EDA 工具日新月异,后端工程师想不被淘汰
5、,想随着时间增值,只能指望多掌握些原理上的东西。忽悠到此为止,下面来点适合工程师口味的,稍有点技术含量的。Astro 和 Encounter 推荐的设计流程基本一致,所以两者之间的迁移不会很困难,那就简单介绍下 Astro 和 Encounter 在使用上的差别比较。1)Astro 使用的 database 是 Milkway,是二进制格式的,而 Encounter 的数据格式是 ASCII的。所以 Astro 的文件 size 小,利于拷贝移动,而 Encounter 支持在数据库中直接修改文件,方便更新和操作,但是文件 size 大,移动和复制时可能造成某些相对路径指向的文件丢失。2)As
6、tro 一个进程可以打开多个 cell,命令行不占用 Terminal,而 Encounter 一个进程只能打开一个 cell,命令行占用 Terminal。3)Astro 在 timing 分析时不能直接调用 PT 等 signoff 工具,而 Encounter 使用分析时-signoff 选项就能自动调用 signoff 的 STA 和其他工具。4)如果想 Fill poly,Astro 中可以直接加 dummy poly,而 Encounter 工具本身只能支持到Metal 1 的 fill,不支持 poly 的 fill,需要自己想办法解决。5)Placement 之后,CTS 之后
7、, routing 之后的工具参数都会有些变化, Astro 大多数需要自己设置,而 Encounter 通过 -preCTS, -postCTS,-postRouting 可以自动配置。6)为了 LVS 加 IO text 时,Astro 有命令可以很方便的加,而 Encounter 必须自己想办法。7)在设计早期加入 metal fill 对 timing 和设计的影响, Astro 中没有方便的选项设置,而Encounter 在从一直开始就能设置。8)Astro 能读入 GDS,支持 CEL view,Encounter 不支持读入 GDS,所以在 Encounter 中永远无法看到真正
8、的版图,所以对于手动 fix DRC,Astro 更胜一筹,Encounter 就必须借助 ICFB 了。9)如果版图中需要手动拉线,Astro 中 Customer wire 的命令没有 Encounter 的智能,不能自动识别伸缩,换层和打孔。10)为 hard block 做 Macro padding 时,Astro 能根据 block 的 pin 的多少调整 padding,而Encounter 没有该功能的支持,需要使用者自己脚本解决。11)对于 Hierarcical Methodology 的支持,Astro/JupiterXT 和 Encounter 相比略逊一筹,Encou
9、nter 的 Partition 功能比较强大,而且可以自动产生block-level 的工作环境和数据。12)对于通过脚本加 soft blockage, Astro 可以轻松实现,而 Encounter 只支持图形化操作,脚本实现比较麻烦。13)Calibre 的强大有目共睹,但 Astro 没有提供 Calibre 的接口,不能读入 Calibre DRC 的结果,Encounter 可以直接读入 Calibre 的运协理出发去调整流程和组合选项。无论 Manual 上说的如何天花乱坠,都不要给工具寄托太大希望,The tool is just a tool,根据需求灵活使用是关键。ED
10、A 工具日新月异,后端工程师想不被淘汰,想随着时间增值,只能指望多掌握些原理上的东西。忽悠到此为止,下面来点适合工程师口味的,稍有点技术含量的。Astro 和 Encounter 推荐的设计流程基本一致,所以两者之间的迁移不会很困难,那就简单介绍下 Astro 和 Encounter 在使用上的差别比较。1)Astro 使用的 database 是 Milkway,是二进制格式的,而 Encounter 的数据格式是 ASCII的。所以 Astro 的文件 size 小,利于拷贝移动,而 Encounter 支持在数据库中直接修改文件,方便更新和操作,但是文件 size 大,移动和复制时可能造
11、成某些相对路径指向的文件丢失。2)Astro 一个进程可以打开多个 cell,命令行不占用 Terminal,而 Encounter 一个进程只能打开一个 cell,命令行占用 Terminal。3)Astro 在 timing 分析时不能直接调用 PT 等 signoff 工具,而 Encounter 使用分析时-signoff 选项就能自动调用 signoff 的 STA 和其他工具。4)如果想 Fill poly,Astro 中可以直接加 dummy poly,而 Encounter 工具本身只能支持到Metal 1 的 fill,不支持 poly 的 fill,需要自己想办法解决。5)
12、Placement 之后,CTS 之后, routing 之后的工具参数都会有些变化, Astro 大多数需要自己设置,而 Encounter 通过 -preCTS, -postCTS,-postRouting 可以自动配置。6)为了 LVS 加 IO text 时,Astro 有命令可以很方便的加,而 Encounter 必须自己想办法。7)在设计早期加入 metal fill 对 timing 和设计的影响, Astro 中没有方便的选项设置,而Encounter 在从一直开始就能设置。8)Astro 能读入 GDS,支持 CEL view,Encounter 不支持读入 GDS,所以在
13、Encounter 中永远无法看到真正的版图,所以对于手动 fix DRC,Astro 更胜一筹,Encounter 就必须借助 ICFB 了。9)如果版图中需要手动拉线,Astro 中 Customer wire 的命令没有 Encounter 的智能,不能自动识别伸缩,换层和打孔。10)为 hard block 做 Macro padding 时,Astro 能根据 block 的 pin 的多少调整 padding,而Encounter 没有该功能的支持,需要使用者自己脚本解决。11)对于 Hierarcical Methodology 的支持,Astro/JupiterXT 和 Enc
14、ounter 相比略逊一筹,Encounter 的 Partition 功能比较强大,而且可以自动产生block-level 的工作环境和数据。12)对于通过脚本加 soft blockage, Astro 可以轻松实现,而 Encounter 只支持图形化操作,脚本实现比较麻烦。13)Calibre 的强大有目共睹,但 Astro 没有提供 Calibre 的接口,不能读入 Calibre DRC 的结果,Encounter 可以直接读入 Calibre 的运行结果。14)对于 memory 的自动摆放,Encounter 比 Astro/JupiterXT 更规则些,更利于使用者在此基础上
15、调整。Encounter 的 relative floorplan 很强大,对于几百个 block 的摆放很有效率。9)如果版图中需要手动拉线,Astro 中 Customer wire 的命令没有 Encounter 的智能,不能自动识别伸缩,换层和打孔。10)为 hard block 做 Macro padding 时,Astro 能根据 block 的 pin 的多少调整 padding,而Encounter 没有该功能的支持,需要使用者自己脚本解决。11)对于 Hierarcical Methodology 的支持,Astro/JupiterXT 和 Encounter 相比略逊一筹,
16、Encounter 的 Partition 功能比较强大,而且可以自动产生block-level 的工作环境和数据。12)对于通过脚本加 soft blockage, Astro 可以轻松实现,而 Encounter 只支持图形化操作,脚本实现比较麻烦。13)Calibre 的强大有目共睹,但 Astro 没有提供 Calibre 的接口,不能读入 Calibre DRC 的结果,Encounter 可以直接读入 Calibre 的运行结果。14)对于 memory 的自动摆放,Encounter 比 Astro/JupiterXT 更规则些,更利于使用者在此基础上调整。Encounter 的
17、 relative floorplan 很强大,对于几百个 block 的摆放很有效率。15)Astro 的 Online DRC 很少出现 false violation, 而 Encounter 的 Online DRC 常常会有 False Violation,容易造成误导,不利于快速检查。16)Power network 的自动 synthesis, Astro/JupiterXT 的结果差强人意,Encounter 的template 功能非常强大,当然这一功能都只能用于快速的overview,不推荐做为最终的 powerplan。17)Astro 中把某个命令运行 log 重定向到
18、一个文件使用”就可以,而 Encounter 很多命令不支持这种简单的重定向。18)对于 CTS 的查看和 debug,Astro 查看和修改的工具速度比较慢,不太好使用,Encounter 查看和调试时钟树爆所以对于手动 fix DRC,Astro 更胜一筹,Encounter 就必须借助 ICFB 了。9)如果版图中需要手动拉线,Astro 中 Customer wire 的命令没有 Encounter 的智能,不能自动识别伸缩,换层和打孔。10)为 hard block 做 Macro padding 时,Astro 能根据 block 的 pin 的多少调整 padding,而Enco
19、unter 没有该功能的支持,需要使用者自己脚本解决。11)对于 Hierarcical Methodology 的支持,Astro/JupiterXT 和 Encounter 相比略逊一筹,Encounter 的 Partition 功能比较强大,而且可以自动产生block-level 的工作环境和数据。12)对于通过脚本加 soft blockage, Astro 可以轻松实现,而 Encounter 只支持图形化操作,脚本实现比较麻烦。13)Calibre 的强大有目共睹,但 Astro 没有提供 Calibre 的接口,不能读入 Calibre DRC 的结果,Encounter 可以
20、直接读入 Calibre 的运行结果。14)对于 memory 的自动摆放,Encounter 比 Astro/JupiterXT 更规则些,更利于使用者在此基础上调整。Encounter 的 relative floorplan 很强大,对于几百个 block 的摆放很有效率。15)Astro 的 Online DRC 很少出现 false violation, 而 Encounter 的 Online DRC 常常会有 False Violation,容易造成误导,不利于快速检查。16)Power network 的自动 synthesis, Astro/JupiterXT 的结果差强人意,Encounter 的template 功能非常强大,当然这一功能都只能用于快速的overview,不推荐做为最终的 powerplan。17)Astro 中把某个命令运行 log 重定向到一个文件使用”就可以,而 Encounter 很多命令不支持这种简单的重定向。18)对于 CTS 的查看和 debug,Astro 查看和修改的工具速度比较慢,不太好使用,Encounter 查看和调试时钟树比较容易些,配合 Design Brower 工具使用起来很方便。就想到这些了,以后有空再补充。当然两个工具都是 Bug 多多,相信各位都深有体会。抛砖引玉,如有雷同,纯属缘份。