第三章 EDA工具链介绍:前端设计工具、后端设计工具、仿真与验证工具
各位工程师朋友,大家好。这一章我们来聊聊EDA工具链。说实话,我刚入行那会儿,面对Synopsys、Cadence、Mentor这三家巨头的工具,也是一头雾水。每家都说自己好,到底该用哪个?
其实,工具没有绝对的好坏,关键看你怎么用。我个人的习惯是:先搞清楚每个工具在流程里扮演什么角色,再谈选择。
3.1 前端设计工具:三巨头的看家本领
前端设计,说白了就是把你的想法变成代码(RTL),再变成门级网表。这个阶段,三巨头各有千秋。
3.1.1 Synopsys:综合的王者
Synopsys的Design Compiler(DC),做综合的工程师应该没人不知道。我在项目中遇到过几次,同样的RTL代码,用DC综合出来的面积和时序,就是比别的工具好那么一点点。别小看这一点点,流片成本可差不少。
核心工具:
- Design Compiler (DC):逻辑综合,把RTL转成门级网表
- VCS:仿真工具,跑RTL仿真
- Verdi:调试工具,看波形、追bug
嗯,这里要注意。DC虽然强,但它的license贵得吓人。小公司有时候会先用开源工具做原型验证,最后流片前再用DC跑一版。
3.1.2 Cadence:仿真与定制电路的标杆
Cadence的Virtuoso,做模拟IC的应该很熟悉。我个人觉得,Cadence在定制电路和仿真这块,确实有独到之处。
你想想看,一个复杂的模拟电路,寄生参数、工艺偏差,这些东西数字设计很少考虑,但模拟设计天天打交道。Cadence的Spectre仿真器,精度确实高。
| 工具 | 用途 | 我的评价 |
|---|---|---|
| Virtuoso | 定制电路设计/版图 | 模拟IC设计的标配 |
| Genus | 逻辑综合 | DC的竞品,各有千秋 |
| Xcelium | 仿真器 | 速度快,适合大规模仿真 |
3.1.3 Mentor(现Siemens EDA):验证与DFT的专家
Mentor的工具,说实话,以前在验证领域名气很大。ModelSim/Questa Sim,做FPGA验证的应该都用过。
我曾经在一个项目中,用Mentor的Tessent做DFT(可测试性设计)。那会儿芯片规模很大,几千万门,自己写测试向量根本不现实。Tessent自动插入扫描链,生成测试向量,省了我好几个月的功夫。
避坑指南: 我曾经以为三家工具可以随便混用。后来发现,不同工具对同一个标准(比如SDF反标)的解释有细微差别。建议前端设计阶段,尽量统一工具链,避免后期出现莫名其妙的时序问题。
3.2 后端设计工具:把网表变成版图
后端设计,就是把综合出来的门级网表,变成可以送去流片的GDSII版图。这个阶段,工具的选择直接影响芯片的成败。
为什么这么说?你想想看,几千万个标准单元,要摆得下、连得上,还要满足时序、功耗、面积的要求。手动做?不可能的。
3.2.1 布局布线(P&R)
Synopsys的IC Compiler II(ICC2)和Cadence的Innovus,是当前主流的两个选择。
- ICC2:Synopsys出品,和DC配合得好。我习惯用ICC2,因为它的时序引擎和DC一致,减少了很多跨工具的数据不一致问题。
- Innovus:Cadence出品,在先进工艺(7nm以下)上表现不错。它的绕线引擎更智能一些。
我个人建议,如果你公司主要用Synopsys的流程,那就用ICC2;如果主要用Cadence,那就用Innovus。混着用,不是不行,但你要做好花大量时间做数据转换的准备。
3.2.2 物理验证
版图画完了,不代表就能流片。还得做DRC(设计规则检查)和LVS(版图与电路一致性检查)。
Mentor的Calibre,在这个领域是绝对的霸主。我做过好几个项目,最后流片前的signoff,都是用Calibre跑的。它的DRC规则文件最全,跑得也快。
注意: 不要以为用了Calibre就万事大吉。我曾经遇到过一次,Calibre跑DRC全过了,但流片回来芯片有问题。后来发现是某个天线效应规则没检查到。所以,物理验证一定要多看foundry的指导手册,不要完全依赖工具的默认设置。
3.3 仿真与验证工具:确保芯片能工作
仿真与验证,贯穿整个芯片设计流程。从RTL仿真到门级仿真,从功能验证到时序验证,每一步都离不开工具。
3.3.1 功能仿真
功能仿真,就是验证你的代码逻辑对不对。
- VCS (Synopsys):速度快,编译优化好。适合大规模数字芯片的仿真。
- Xcelium (Cadence):支持多核并行,仿真速度也很快。
- Questa Sim (Mentor):调试功能强大,支持SystemVerilog和UVM。
我个人习惯用VCS做回归测试,用Verdi看波形。Verdi的波形分析功能,确实好用。特别是追复杂的状态机,一眼就能看出问题。
3.3.2 静态时序分析(STA)
静态时序分析,说白了就是检查你的芯片能不能跑在目标频率上。我刚开始做设计时总觉得这步可有可无,直到有一次流片回来芯片死活上不了高频……嗯,从那以后我再也不敢跳过STA了。
Synopsys的PrimeTime,是STA的行业标准。几乎所有的foundry都提供PrimeTime的时序库。Cadence的Tempus也不错,但市场份额小一些。
关键点: STA不是跑一遍就完事的。要在综合后、布局后、绕线后、签核前,至少跑四遍。每一遍的结果都可能不一样,因为寄生参数越来越精确。
3.3.3 形式验证
形式验证,用数学方法证明两个设计在功能上是等价的。比如,综合前的RTL和综合后的门级网表,功能是否一致?
Synopsys的Formality和Cadence的Conformal,是常用的两个工具。我建议在综合后、以及任何手动修改网表后,都跑一次形式验证。别问我为什么,问就是吃过亏。
3.4 知识体系总览
下面这张图,是我自己总结的EDA工具链全景图。你可以把它当作一个索引,用到哪个环节,就去找对应的工具。
好了,这一章的内容就到这里。工具是死的,人是活的。多动手、多踩坑,慢慢你就能找到最适合自己项目的工具组合。
公众号:蓝海资料掘金营,微信deep3321