BLE-CC41_Aarduino串口监视器输出蓝牙可以设置成主模式吗

&figure&&img src=&https://pic3.zhimg.com/b1fad8f0d1ad5_b.jpg& data-rawwidth=&393& data-rawheight=&322& class=&content_image& width=&393&&&/figure&&blockquote&&p&在2015年12月的Nature网站上,由U.C. Berkeley等几个大学的研究人员主导的一个开发团队发表了一篇文章。文章中研究人员用标准的CMOS工艺制造了同时集成了RISC-V指令集的CPU和片上光通信器件的微芯片。这或许标志着不久的未来微电子芯片的接口速率将会大幅的提高,不再受到原先电接口IO的速率限制。不过本篇文章要关注的,则是在这颗实验性的芯片上集成的另外一个主角,&RISC-V&(发音risk-five)。&/p&&/blockquote&&h2&&b&1、CPU指令集(ISA)&/b&&/h2&&p&&b&软件和硬件之间沟通的桥梁&/b&&/p&&p&指令集(ISA)通俗地讲可以理解为一台机器(计算机中的CPU)可以执行的“指令”集合,通过这些“指令”能够实现诸如加减乘除这样的运算,以及接收外部输入(比如键盘)和控制外部输出(如显示器)这样的功能。&/p&&p&指令集也可以理解为软件和硬件之间沟通的桥梁,不同的厂家可能会用不同的方法来实现相同的指令集,从而让遵循相同指令集的软件可以无需修改即可运行。比如我们熟知的Intel和AMD都实现了x86指令集,这基本上统治了PC的市场。而出现较晚的ARM指令集则基本占领了移动端处理器的大部分市场。 &/p&&figure&&img src=&https://pic2.zhimg.com/bddb3dc7ad5ea48b34976_b.jpg& data-rawwidth=&625& data-rawheight=&415& class=&origin_image zh-lightbox-thumb& width=&625& data-original=&https://pic2.zhimg.com/bddb3dc7ad5ea48b34976_r.jpg&&&/figure&&h2&&b&2、RISC指令集的发展历史&/b&&/h2&&p&&b&1980年Berkeley主导了RISC&/b&&/p&&p&了解了什么是指令集接下来还是让我们来聊聊RISC的发展历史。早期的微处理器大部分为复杂指令集(CISC)架构,即设计尽可能复杂的指令来完成任务 ,原因之一是当时的编译技术并不发达。而随着编译器技术以及其他技术的发展,研究人员渐渐发现多数的复杂指令只在很少的时候被用到,而且复杂的指令限制了处理器速度的进一步提高。精简指令集(RISC)技术应运而生,IBM 801可能是第一个用精简指令集的理念来设计的系统,并发展成为了今天的Power架构。1980年左右Berkeley的Dave Patterson主导了Berkeley RISC项目并设计了其第一代的处理器RISC I,这就是RISC这个名称的由来。Sun Microsystem(现在的Oracle)的SPARC处理器架构也有很多Berkeley RISC影子在里面。差不多同时,斯坦福的教授John Hennessy(现在已经是斯坦福校长)和他的团队也从课程设计出发设计了MIPS处理器的早期雏形,并最终孵化为MIPS Technologies. Inc公司,后来被 Imagination Technologies收购。我们能在很多家用路由器里见到他的影子。而ARM,迄今为止发展的最好的RISC指令集,已经无处不在。&/p&&p&时间到了2010年,当Berkeley的Krste Asanovic教授想要为接下来的一系列项目选择一个微处理器指令集时,他找不到一个合适的。Intel的X86是CISC指令集,过于复杂和庞大,而且存在专利问题。而ARM除了专利问题外,若想自行设计基于ARM指令集的处理器,需要非常昂贵的License。OpenRISC作为一个开源的指令集架构,其许可证为GPL,这意味着所有的指令集改动都必须开源。而且,OpenRISC发展缓慢,设计过于老旧,64位架构也不成熟。&/p&&p&&figure&&img src=&https://pic3.zhimg.com/f0f907fa3536265ffe2834d7_b.jpg& data-rawwidth=&194& data-rawheight=&256& class=&content_image& width=&194&&&/figure&Krste Asanovic教授&/p&&h2&&b&3、RISC-V指令集的诞生&/b&&/h2&&p&&b&&V&也表示变化(variation)和向量(vectors)&/b&&/p&&p&这一切都与Berkeley追求“开放“的精神格格不入,要知道从Unix/BSD操作系统到现今在大数据领域流行的Spark框架,他们都是用一个非常宽松的名为BSD License的许可证的发布的。这个License简言之就是我发布的代码你想怎么用怎么用,不用交钱,改了也不用开源,只要最终致谢作者即可。苹果的OSX是基于BSD Unix的,而微软 Windows中也包含修改过的BSD Unix代码。&/p&&p&所以Krste教授决定带领团队重新开发一个完全开放的、标准的、能够支持各种应用的新指令集,他也得到了RISC的发明者之一,Dave Patterson教授的大力支持。从2010年夏天开始,大约花了四年的时间,这个团队设计和开发了一套完整的新的指令集,同时也包含了移植好的编译器、工具链、仿真器,并经过数次流片验证。为了能够加快开发的效率,以便能够快速的评估和修改设计以及提高可复用性,Chisel作为一种新的硬件构建语言也被开发了出来。简言之,你可以用scala这种函数式编程语言去设计硬件,并最终能够生成传统的Verilog HDL用于ASIC/FPGA,或者生成C++用于仿真。 &/p&&p&这个新的指令集叫做RISC-V,&V&包含两层意思,一是这是Berkeley从RISC I开始设计的第五代指令集架构,二是它代表了变化(variation)和向量(vectors)。&/p&&figure&&img src=&https://pic4.zhimg.com/c47e3dcbb358c086cfef77eeda5761b2_b.jpg& data-rawwidth=&412& data-rawheight=&336& class=&content_image& width=&412&&&/figure&&h2&&b&4、RISC-V指令集的发展&/b&&/h2&&p&&b&获Google、HP、Oracle、WD支持&/b&&/p&&p&RISC-V包含一个非常小的基础指令集和一系列可选的扩展指令集。最基础的指令集只包含40条指令,通过扩展还支持64位和128位的运算以及变长指令,其他以完成的扩展包括了乘除运算、原子操作、浮点运算等,正在开发中的指令集还包括压缩指令、位运算、事务存储、矢量计算等。 指令集的开发也遵循开源软件的开发方式,即由核心开发人员和开源社区共同完成。&/p&&p&通过这一系列的指令集扩展,你几乎可以构建适用于任何一个领域的微处理器,比如云计算、存储、并行计算、虚拟化/容器、MCU、应用处理器、DSP处理器等等。从2015年开始,每半年一次Workshop上已经能够看到很多有意义的项目。Berkeley自己开发了多款开源的处理器,可以覆盖从高性能计算到嵌入式等应用领域,并孵化出了初创公司SiFive并获得了风投。lowRISC是一个非营利性组织,主导者是风靡世界的开源硬件树莓派(Raspberry Pi)的创始人之一,lowRISC正在基于RISC-V开发一款真正的开源处理器芯片,希望以其来代替目前树莓派上的由博通开发的非开源处理器。Gary Research在FPGA中放入了400个定制的RISC-V处理器并用片上网络(NOC)连接在一起用来实现并行计算,未来有可能会被用到微软的云计算平台中,例如给Bing这样的搜索引擎加速。&/p&&p&2016年初的Workshop上,RISC-V基金会成立,成员中包括了Google、惠普、Oracle、西部数据等硅谷巨头,未来这些大公司非常有可能会将RISC-V运用到他们自己的云计算设施或者智能手机芯片 中,以摆脱对X86的依赖或是减少昂贵的ARM指令集授权费用。&/p&&figure&&img src=&https://pic4.zhimg.com/c6df0780748dae2a6fb7ea78_b.jpg& data-rawwidth=&531& data-rawheight=&365& class=&origin_image zh-lightbox-thumb& width=&531& data-original=&https://pic4.zhimg.com/c6df0780748dae2a6fb7ea78_r.jpg&&&/figure&&h2&&b&5、RISC-V指令集的优势&/b&&/h2&&p&&b&开放源代码是不可以逆转的趋势&/b&&/p&&p&可以说,RISC-V指令集是一个“活”的、现代的、没有专利问题和没有历史包袱的全新指令集,并且以BSD许可证发布。任何公司都可以在自己的产品中免费使用,而修改也无需再开源。和成就了ARM的授权模式相比,RISC-V不仅能让公司收益,也能够让大学和研究机构更好地研究新的处理器技术和架构。要知道,一个ARM指令集架构的许可证可能要上千万美元。&/p&&p&RISC-V能够发展至今笔者认为并非偶然。首先,指令集的开发需要非常专业的团队和数年的时间,这对于商业公司来说是很困难的,而一流大学的一流团队恰恰能满足这样的条件。其次,编译器和FPGA等相关的技术在近十年来的蓬勃发展显著地降低了新指令集开发和验证的难度。再次,指令集通过几十年的发展,不论是工业界还是学术界都已经研究的非常透彻,很多设计上的技术选择已经有了现成的答案。最后,OpenRISC作为一个较为成功的开源指令集项目也有很多可以学习的经验,使得专业团队+技术社区这样的开发模式能够运作的更好。&/p&&p&从过去的十几年我们能够看到的改变是,开放源代码作为一个不可以逆转的趋势,创造了新的商业模式,提高了效率也降低了成本。我们能够看到,很多个成功的商业产品都能够找到与之相匹敌的开源替代,而几乎所有的技术变革中我们都能够看到开放源代码的影子。从云计算、大数据到近几年很火的容器技术,开源已经无处不在。再看看硬件领域,像树莓派和Arduino这样在“板级层面”的开源硬件已经显著降低了开发者的门槛并让越来越多的人参与其中。而在集成电路行业,摩尔定律的终结和人们需求的更加多元化也会使FPGA和ASIC在很多领域 在成本曲线上出现交叉点,而这也将极大的推动开源硬件在芯片领域的蓬勃发展。&/p&&h2&&b&6、RISC-V指令集的未来&/b&&/h2&&p&&b&物联网、移动计算、人工智能&/b&&/p&&p&当面对一个新的指令集时,一个最常见的顾虑是现有的优质软件在新指令集的平台上的移植问题。Wintel联盟在过去十多年来正是靠着“向后兼容”而成功。每一代的Intel X86处理器都兼容过去所有的指令,而每一代的新Windows操作系统都基本上兼容过去版本的软件。但现在,用户并不需要过于担心可移植问题。首先,开源软件在这十几年的飞速发展,已经能够让我们在很多领域无需过多担心软件移植的问题。比如在服务器领域,大部分软件完全开源,而应用多用脚本语言写成,可移植性非常好。其次,很多人或许并不知道,ARM也并不是一个完全向后兼容的指令集,为了能让ARM CPU运行在不同行业的应用中 ,向后兼容带来的包袱远大于其优势,这对RISC-V来说也是一样。最后,总的发展的趋势是,不论是物联网、移动计算、网络服务还是人工智能,我们都需要成本更低、灵活性更高和可定制性更强的处理器。而“向后兼容”的重要性会越来越小,并将最终成为过去。&/p&&p&最近全球半导体联盟(GSA)在一篇报告中大胆的提出这样的问题:“RISC-V会是开源领域的下一个Linux吗?”,“半导体行业是开放源代码最后一块没有攻克的阵地吗?”。相比十几年前开源软件发展的初期阶段,如今开源硬件的发展和当时是如此相像。笔者相信,随着RISC-V的成熟和更多的大公司加入,它非常有希望去挑战Intel x86和ARM对市场的统治,从云计算到物联网,成为当今这个互联网世界的最基本的和不可或缺的“轮子”之一。&/p&&p&&b&关于作者:&/b&&/p&&p&&a href=&https://www.zhihu.com/people/xfguo& class=&internal&&郭雄飞&/a&,目前在景略半导体任嵌入式系统设计经理。开源软件和开源硬件爱好者。&/p&&p&&b&景略半导体:&/b&&/p&&p&景略半导体由多位硅谷资深海归于2008年创立,是一家提供从半导体芯片到完整行业应用解决方案的通信公司,致力于提供高速有线/无线通信产品和解决方案并为客户创造最大价值。&/p&&p&景略在摩尔精英招牛人:&/p&&h1&&a href=&https://link.zhihu.com/?target=http%3A//wx.moore.ren/job/detail/1200247& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&数字前端IC工程师&/a&&/h1&&h1&&a href=&https://link.zhihu.com/?target=http%3A//wx.moore.ren/job/detail/1200212& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&嵌入式软件工程师&/a&&/h1&&h1&&a href=&https://link.zhihu.com/?target=http%3A//wx.moore.ren/job/detail/1200248& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&技术支持工程师(FAE)&/a&&/h1&&p&&b&摩尔精英&/b&:全球半导体招聘平台&/p&&figure&&img src=&https://pic4.zhimg.com/2b690a0dfa82a1a0e182_b.jpg& data-rawwidth=&900& data-rawheight=&383& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&https://pic4.zhimg.com/2b690a0dfa82a1a0e182_r.jpg&&&/figure&&p&原文链接:&a href=&https://link.zhihu.com/?target=http%3A//www.moore.ren/news/detail.htm%3Fd%3D172%26invotecode%3Dcf156d39-993f-4d6a-956d-39993fdd6ac7& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&摩尔精英-[原创] RISC-V登场,Intel和ARM会怕吗?&/a&&/p&
在2015年12月的Nature网站上,由U.C. Berkeley等几个大学的研究人员主导的一个开发团队发表了一篇文章。文章中研究人员用标准的CMOS工艺制造了同时集成了RISC-V指令集的CPU和片上光通信器件的微芯片。这或许标志着不久的未来微电子芯片的接口速率将会大幅的…
&p&这一篇谈下网络处理器。&/p&&p&曾几何时,网络处理器是高性能的代名词。为数众多的核心,强大的转发能力,定制的总线拓扑,专用的的指令和微结构,许多优秀设计思想沿用至今。Tilera,Freescale,Netlogic,Cavium,Marvell各显神通。但是到了2018年,这些公司却大多被收购,新闻上也不见了他们的身影,倒是交换芯片时不时冒出一些新秀。&/p&&p&随着移动互联网的兴起,网络设备总量实际上是在增加的。那为什么网络芯片反而没声音了呢?究其原因有几点:&/p&&p&第一, 电信行业利润率持续减少。10年之前,Freescale的65纳米双核处理器,可以卖到40美金。如今同样性能的28纳米芯片,10美金都卖不到。而网络处理器的量并不大,低端有百万片已经挺不错了,高端更是可能只有几万片。这使得工程费用无法均摊到可以忽略的地步,和手机的动辄几亿片没法比。而单价上,和服务器上千美金的售价也没法比。这就使得网络处理器陷入一个尴尬境地。&/p&&p&第二, IP模式的兴起。利润的减少导致芯片公司难以维持专用处理器设计团队。电信行业的开发周期普遍很长,而网络处理器从立项到上量,至少需要5年时间,供货周期更是长达15年。一个成熟的CPU团队,需要80人左右,这还不算做指令集和基础软件的,全部加上超过100人。这样的团队开销每年应该在2000万刀。2000万刀虽然不算一个很大的数字,可如果芯片毛利是40%,净利可能只有10%,也就是要做到2亿美金的销售额才能维持。这还只是CPU团队,其余的支出都没包含。通常网络芯片公司销售额也就是5亿美金,在利润不够维持处理器研发团队后,只能使用通用的IP核,或者对原有CPU设计不做改动。另外,还要担心其他高利润公司来挖人。以Freescale为例,在使用PowerPC的最后几年,改了缓存设计后,甚至连验证的工程师都找不到了。&/p&&p&第三, 指令集的集中化。在五年前,网络处理器还是MIPS和PowerPC的世界,两个阵营后各有几家在支持。当时出现了一个很有趣的现象,做网络设备的OEM公司会主动告诉芯片公司,以后的世界,是x86和ARM指令集的世界,为了软件的统一,请改成ARM指令集。在当时,ARM指令集在网络界似乎只有Marvell一家在使用。而五年之后的现在,PowerPC和MIPS基本退出舞台,只有一些老产品和家用网关还有它们的身影。&/p&&p&在网络处理器领域,ARM并无技术和生态优势:技术上,MIPS大都是单核多线程的,支持自定义的指令集,对一些特定的网络包处理添加新指令。而PowerPC很早就使用了Cache&br&Stashing等专用优化技术,ARM直到近两年才支持。即使使用了ARM指令集,Cavium和Netlogic还是自己设计微结构。生态上,电信产品的应用层软件,都是OEM自定义的。底层操作系统,Linux和VxWorks,对MIPS和PowerPC的支持并不亚于ARM。而中间层的软件,虚拟机和数据转发,NFV等,网络芯片公司之前也并不是依靠ARM来维护的。赢得网络处理器市场还真是ARM的意外之喜。&/p&&p&第四, OEM公司自研芯片的崛起。思科,华为,中兴等公司,早就开始自己做技术含量高的高端芯片,或者量大的低端芯片。对于高端产品,只有使用自研芯片才能抢到第一个上市,对于低端产品,就主要是成本考虑了。&/p&&p&让我们看看网络处理器到底能应用在哪些场景:&/p&&figure&&img data-rawheight=&300& src=&https://pic4.zhimg.com/v2-402fd9de7c14de6367a5b_b.jpg& data-size=&normal& data-rawwidth=&533& class=&origin_image zh-lightbox-thumb& width=&533& data-original=&https://pic4.zhimg.com/v2-402fd9de7c14de6367a5b_r.jpg&&&/figure&&p&首先,是终端设备(手机/基站,wifi,光纤/Cable/ADSL等),连接到接入网,然后再汇聚到核心网。就节点吞吐量而言,大致可以分为几类:&/p&&p&第一, 在终端,吞吐量在1Gbps级别,可以是手机,可以是光纤,可以是有线电视,也可以是Wifi,此时需要小型家庭路由器,无需专用网络加速器,对接口有需求,比如ATM,光纤,以太网或者基带芯片。&/p&&p&第二, 在基站或者边缘数据中心,吞吐量在1Tbps级别,此时需要边缘路由器,基站还需要FPGA或者DSP做信号处理。&/p&&p&第三, 在电信端,吞吐量远大于1Tbps,此时需要核心路由器,由专用芯片做转发。&/p&&p&以上场景中,低端的只需要1-2核跑所有的数据面和控制面程序就行;对于中端应用,控制面需要单核能力强的处理器,数据面需要能效高,核数众多的处理器和网络加速器;高端路由器需要专用asic或者定制的超小核进行数据面处理,同时使用单核能力强的处理器做控制面。&/p&&p&这其中比较有争议的是中端的数据面处理。对中端路由器来说,业务层的协议处理,毫无疑问的该使用通用处理器;而一些计算密集的功能,比如模板检测,加解密,压缩,交换等,还是用asic做成模块比较合适;对于队列管理,保序,优先级管理,资源管理等操作,就见仁见智了。从能效和芯片面积上来说,通用处理器做这些事肯定不是最优的,但是它设计容错性高,扩展性好,产品设计周期短,有着专用加速器无法取代的强项。硬件加速器本身会有bug,需要多次流片才能成熟,这非常不利于新产品的推广,而通用处理器方案就能大大减少这个潜在风险。专用网络加速器还有个很大的缺点,就是很难理解和使用,OEM如果要充分发挥其性能,一定需要芯片公司配合,把现有代码移植,这其中的推广时间可能需要几年。不过有时候芯片公司也乐见其成,因为这样一来,至少能把这一产品在某种程度上和自己捆绑一段时间。&/p&&p&再进一步,有些任务,如路由表的查找,适合用单核性能高的处理器来实现;有些任务,如包的业务代码,天然适合多线程,用多个小核处理更好。这就把通用处理器部分也分化成两块,大核跑性能需求强的代码,小核跑能效比需求强的代码。大小核之间甚至可以运行同一个SMP操作系统,实现代码和数据硬件一致性。事实上,有些网络处理器的加速器,正是用几十上百个小CPU堆起来的。&/p&&p&在网络芯片上,有两个重要的基本指标,那就是接口线速和转发能力。前者代表了接口能做到的数据吞吐量上限,后者代表了处理网络包的能力。&/p&&figure&&img data-rawheight=&227& src=&https://pic4.zhimg.com/v2-7a713eacbba9a7_b.jpg& data-size=&normal& data-rawwidth=&453& class=&origin_image zh-lightbox-thumb& width=&453& data-original=&https://pic4.zhimg.com/v2-7a713eacbba9a7_r.jpg&&&/figure&&p&如上图,以太网包最小的长度是64字节,这只是数字部分的长度。考虑到PHY层的话,还有8字节的Preamble和开始标志,外加帧间分隔,总共84字节。 &/p&&p&对于1Gbps的以太网,能够发送的以太网包理论上限是1.45Mpps(Million Packet Per Second)。相应的,处理器所能处理的包数只需要1.45Mpps,超出这个数字的能力是无用的。线速一定时,以太网包越大,所需的处理能力越低,所以在衡量处理器能力的时候,需用最小包;而在衡量网络接口能力的时候,需要用最大包,来使得帧间浪费的字段达到最小比例。&/p&&p&下面是Freescale的LX2160网络处理器的指标:
&/p&&figure&&img data-rawheight=&342& src=&https://pic1.zhimg.com/v2-361b39256cee50641dfdfc82ce2fcfd4_b.jpg& data-size=&normal& data-rawwidth=&390& class=&content_image& width=&390&&&/figure&&p&我们可以看到,共有24个28Gbps的Serdes口,对应的,2个100G以太网口需要8个Serdes口,而14个25G以太网口需要14个Serdes口,共22x25=550Gbps的吞吐率,最大需要800Mpps的处理能力。分散到16个核,每个核需要50Mpps的转发能力,对应到2.2Ghz的处理器,也就是44个时钟周期处理一个包。事实上,这是不现实的。通常,一个包经过Linux协议栈,即使什么都不做,也需要1500个时钟周期,就算使用专业转发软件,至少也需要80个左右。所以,最小64字节包只是一个衡量手段,跑业务的时候肯定需要尽量使用大包。&/p&&p&所以,在定义网络处理器的规格时,需要在线速和处理能力上做平衡。&/p&&figure&&img data-rawheight=&322& src=&https://pic4.zhimg.com/v2-b8be712bdfa7d7d55a647_b.jpg& data-size=&normal& data-rawwidth=&576& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic4.zhimg.com/v2-b8be712bdfa7d7d55a647_r.jpg&&&/figure&&p&上图是Freescale的LX2160网络处理器内部模块图。按照之前的线速和处理能力来看,可以分为三块:&/p&&p&第一, 处理器部分。这里是16个A72核,每两个放在一个组里,分配1MB二级缓存。在手机上,通常是四个核放在一组,这里为什么是两个?因为网络处理主要是针对包的各种处理,更偏重于IO和访存的能力,而不仅仅是计算。在处理包时,不光是网络包的数据需要读进处理器,还需要读入各种参数,来完成对包的处理。这些参数针对每个包会有所不同,缓存可能是放不下的,需要从内存读取。这就造成了需要相对较大的带宽。在架构篇,我们定量计算过,当只有一个处理器在做数据读取的时候(假设都不在缓存),瓶颈在核的对外接口BIU,而四个核同时读取,瓶颈在ACE接口。这就是每组内只放两个核而不是四个的原因。而处理器总的核数,很大程度上决定了网络处理器的包处理能力。&/p&&p&第二, 接口部分。网络处理器通常会把控制器(以太网,SATA,PCIe等)和高速串行总线口Serdes复用,做成可配置的形式,提高控制器利用率,节省面积。这里使用了24对差分线,每条通道支持25Gbps。高速串行总线设计也是一个难点,经常会有各种串扰,噪声,抖动等问题,搞不好就得重新流片。(推荐阅读:&a href=&https://www.zhihu.com/question//answer/& class=&internal&&又见山人:为什么串口比并口快?&/a&)&/p&&p&第三, 网络加速器,上图中的WRIOP和QB-Man属于网络加速器。这是网络处理器精华的设计,其基本功能并不复杂,如下图:&/p&&figure&&img data-rawheight=&470& src=&https://pic3.zhimg.com/v2-7eb96a98393a61cde280fc5d181c403e_b.jpg& data-size=&normal& data-rawwidth=&576& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-7eb96a98393a61cde280fc5d181c403e_r.jpg&&&/figure&&p&一个包从以太网进来,如果没有以太网加速器,那会被以太网控制器用DMA的方式放到内存,然后就丢给CPU了。而硬件加速器的作用,主要是对包的指定字段进行分析,打时间戳,然后分类并分发到特定的队列。而这些队列,在经过重映射后,会提供给CPU来处理。这其中还牵涉到队列关系,优先级,限速,排序,内存管理等功能。加解密模块可以看作独立的模块。就我所见,网络加速器需要和所有处理器之和相近的面积。&/p&&p&我们来看看一个包到底在网络处理器会经历哪些步骤:&/p&&p&首先,CPU调用以太网驱动,设置好入口(Ingress)描述符。以太网控制器根据描Ingress述符将Serdes传来的包,DMA到指定内存地址,然后设置标志位,让CPU通过中断或者轮询的方式接收通知。然后CPU把包头或者负载读取到缓存,做一定操作,然后写回到出口(Egress)描述符所指定的内存,并再次设置标志位,通知以太网控制器发包。Ingress和Egress包所存放的地址是不同的。以太网控制器根据Egress描述符将包发送到Serdes,并更新描述符状态。
&/p&&figure&&img data-rawheight=&372& src=&https://pic1.zhimg.com/v2-edcaaf0e500c969b18fe30_b.jpg& data-size=&normal& data-rawwidth=&597& class=&origin_image zh-lightbox-thumb& width=&597& data-original=&https://pic1.zhimg.com/v2-edcaaf0e500c969b18fe30_r.jpg&&&/figure&&p&将上述步骤实现到上图的系统中,并拆解成总线传输,是这样的(假定代码及其数据在一二级缓存中):&/p&&p&1. CPU写若干次以太网控制器(10-40GbE)的寄存器(Non-cacheable)&/p&&p&2. CPU读若干次以太网控制器(10-40GbE)的状态寄存器(Non-cacheable)&/p&&p&3. 以太网控制器(10-40GbE)进行若干次DMA,将数据从PHY搬到内存&/p&&p&4. CPU从内存读入所需包头数据,做相应修改&/p&&p&5. CPU写入内存所需数据&/p&&p&6. CPU写若干次以太网控制器(10-40GbE)的寄存器(Non-cacheable)&/p&&p&7. 以太网控制器(10-40GbE)进行若干次DMA,将数据从内存搬到PHY,并更新内部寄存器&/p&&p&8. CPU读若干次以太网控制器(10-40GbE)的状态寄存器(Non-cacheable)&/p&&p&以上8步所需时间通常为:&/p&&p&1. 1x以太网寄存器访问延迟 。假定为20ns。&/p&&p&2. 1x以太网寄存器访问延迟。假定为20ns。&/p&&p&3. 以太网控制器写入DDR的延迟。假设是最小包,64字节的话,延迟x1。如果是大包,可能存在并发。但是和第一步中CPU对寄存器的写入存在依赖关系,所以不会小于延迟x1。假定为100ns。&/p&&p&4. CPU从DDR读入数据的延迟。如果只需包头,那就是64字节,通常和缓存行同样大小,延迟x1。假定为100ns。&/p&&p&5. CPU写入DDR延迟x1。假定为100ns。&/p&&p&6. 1x以太网寄存器访问延迟 。假定为20ns。&/p&&p&7. 以太网从DDR把数据搬到PHY,延迟至少x1。假定为100ns。&/p&&p&8. 1x以太网寄存器访问延迟。假定为20ns。&/p&&p&2和3,7和8是可以同时进行的,取最大值。其余的都有依赖关系,可以看做流水线上的一拍。其中4,5和6都在CPU上先后进行,针对同一包的处理,它们无法并行(同一CPU上的不同包之间这几步是可以并行的)。当执行到第6步时, CPU只需要将所有非cacheable的写操作,按照次序发出请求即可,无需等待写回应就可以去干别的指令。这样,可以把最后一步的 所流水线中最大的延迟缩小到100+20+100共220ns以下的某个值。当然,因为ARM处理器上non-cacheable的传输,在对内部很多都是强制排序的,无法并行,总线也不会提早发送提前回应(early response),所以总延迟也就没法减少太多。&/p&&p&上面的计算意味着,CPU交换一下源和目的地址,做一下简单的小包转发,流水后每个包所需平均延迟是220ns。同时,增大带宽和CPU数量并不会减少这个平均延迟,提高CPU频率也不会有太大帮助,因为延迟主要耗费在总线和DDDR的访问上。提高总线和DDR速度倒是有助于缩短这个延迟,不过通常能提高的频率有限,不会有成倍提升。&/p&&p&那还有什么办法吗?一个最直接的办法就是增加SRAM,把SRAM作为数据交换场所,而不需要到内存。为了更有效的利用SRAM,可以让以太网控制器只把包头放进去,负载还是放在放DDR,描述符里面指明地址即可。这个方法的缺点也很明显:SRAM需要单独的地址空间,需要特别的驱动来支持。不做网络转发的时候,如果是跑通用的应用程序,不容易被利用,造成面积浪费。&/p&&p&第二个方法是增加系统缓存,所有对DDR的访问都要经过它。它可以只对特殊的传输分配缓存行,而忽略其余访问。好处是不需要独立的地址空间,缺点是包头和负载必须要指定不同的缓存分配策略。不然负载太大,会占用不必要的缓存行。和SRAM一样,包头和负载必须放在不同的页表中,地址不连续。&/p&&p&在有些处理器中,会把前两个方法合成,对一块大面积的片上内存,同时放缓存控制器和SRAM控制器,两种模式可以互切。&/p&&p&第三个方法,就是在基础篇提到的Cache stashing,是对第二种方法的改进。在这里,包头和负载都可以是cacheable的,包头被以太网控制器直接塞到某个CPU的私有缓存,而负载则放到内存或者系统级缓存。在地址上,由于缓存策略一致,它们可以是连续的,也可以分开。当CPU需要读取包头时,可以直接从私有缓存读取,延迟肯定短于SRAM,系统缓存或者DDR。再灵活一点,如果CPU需要更高层协议的包头,可以在以太网控制器增加Cache sashing的缓存行数。由于以太网包的包头一定排列在前面,所以可以将高层协议所需的信息也直接送入某个CPU一二级私有缓存。对于当中不会用到的部分负载,可以设成non-cacheable的,减少系统缓存的分配。这样的设计,需要把整个以太网包分成两段,每一段使用不同的地址空间和缓存策略,并使用类似Scatter-Gather的技术,分别做DMA,增加效率。这些操作都可以在以太网控制器用硬件和驱动实现,无需改变处理器的通用性。&/p&&p&此外,有一个小的改进,就是增加缓存行对CPU,虚拟机,线程ID或者某个网络加速器的敏感性,使得某些系统缓存行只为某个特定ID分配缓存行,可以提高一些效率。&/p&&p&以上解决了CPU读包头的问题,还有写的问题。如果包头是Cacheable的,不必等待写入DDR之后才收到写回应,所以时间可以远小于100ns。至于写缓存本身所需的读取操作,可以通过无效化某缓存行来避免,这在基础篇有过介绍。这样,写延迟可以按照10-20ns计算。&/p&&p&以太网控制器看到Egress的寄存器状态改动之后,也不必等待数据写到DDR,就可以直接读。由于存在ACE/ACE-lite的硬件一致性,数据无论是在私有缓存,系统缓存还是DDR,都是有完整性保证的。这样一来,总共不到50ns的时间就可以了。同理,Ingress通路上以太网控制器的写操作,也可以由于缓存硬件一致性操作而大大减少。&/p&&p&相对于第二种方法,除了延迟更短,最大的好处就是,在私有缓存中,只要被cache stashing进来的数据在不久的将来被用到,不用担心被别的CPU线程替换出去。Intel做过一些研究,这时间是200ns。针对不同的系统和应用,肯定会不一样,仅作参考。&/p&&p&让我们重新计算下此时的包处理延迟:&/p&&p&原来的第四步,CPU读操作显然可以降到10ns之下。&/p&&p&访问寄存器的时间不变。&/p&&p&CPU写延迟可以按照10-20ns计算。并且可以省略,因为处理器在写操作之后可以立刻返回,无需停顿。&/p&&p&总时间从220降到了50ns以下,四倍。&/p&&p&不过,支持Cache Stashing需要AMBA5的CHI协议,仅仅有ACE接口是不够的。CPU,总线和以太网控制器需要同时支持才能生效。如果采用ARM的CPU设计,需要最新的A75/A55才有可能。总线方面,A75/A55自带的ACP端口可用于20GB以下吞吐量的Cache Stashing,适合简单场景,而大型的就需要专用的CMN600总线以支持企业级应用了。还有一种可能,就是自己做CPU微架构和总线,就可以避开CHI/ACE协议的限制了。&/p&&p&Intel把cache stashing称作Direct Cache Access,并且打通了PCIe和以太网卡,只要全套采用Intel方案,并使用DPDK软件做转发,就可以看到80时钟周期,30-40ns的转发延迟。其中,DPDK省却了Linux协议栈2000时钟周期左右的额外操作,再配合全套硬件机制,发挥出CPU的最大能力。&/p&&p&这个40ns,其实已经超越了很多网络硬件加速器的转发延迟。举个例子,Freescale前几年基于PowerPC的网络处理器,在内部其实也支持Cache Stashing。但是其硬件的转发延迟,却达到了100ns。究其原因,是因为在使用了硬件加速器后,其中的队列管理相当复杂,CPU为了拿到队列管理器分发给自己的包,需要设置4次以上的寄存器。并且,这些寄存器操作无法合并与并行,使得之前的8步中只需20ns的寄存器操作,变成了80ns,超越CPU的数据操作延迟,成为整个流水中的瓶颈。结果在标准的纯转发测试中,硬件转发还不如x86软件来的快。&/p&&p&除了减少延迟,系统DDR带宽和随之而来的功耗也可以减少。Intel曾经做过一个统计,如果对全部的包内容使用cache,对于256字节(控制包)和1518字节(大包),分别可以减少40-50%的带宽。如下图:
&/p&&figure&&img data-rawheight=&385& src=&https://pic4.zhimg.com/v2-b8e6b564d6bb_b.jpg& data-size=&normal& data-rawwidth=&480& class=&origin_image zh-lightbox-thumb& width=&480& data-original=&https://pic4.zhimg.com/v2-b8e6b564d6bb_r.jpg&&&/figure&&p&当然,由于芯片缓存大小和配置的不同,其他的芯片肯定会有不同结果。&/p&&p&包转发只是测试项中比较重要的一条。在加入加解密,压缩,关键字检测,各种查表等等操作后,整个转发延迟会增加至几千甚至上万时钟周期。这时候,硬件加速器的好处就显现出来了。也就是说,如果一个包进来按部就班的走完所有的加速器步骤,那能效比和性能面积比自然是加速器高。但是,通常情况下,很多功能都是用不到的,而这些不常用功能模块,自然也就是面积和成本。&/p&&p&整理完基本数据通路,我们来看看完整的网络加速器有哪些任务。以下是标准的Ingress通路上的处理流程:&/p&&figure&&img data-rawheight=&344& src=&https://pic3.zhimg.com/v2-85ffa482c5da9e702d3f73be_b.jpg& data-size=&normal& data-rawwidth=&576& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-85ffa482c5da9e702d3f73be_r.jpg&&&/figure&&p&主要是收包,分配和管理缓冲,数据搬移,字段检测和分类,队列管理和分发。&/p&&p&Egress通路上的处理流程如下:&/p&&figure&&img data-rawheight=&339& src=&https://pic3.zhimg.com/v2-50e51d43caf3562eeb59ad2_b.jpg& data-size=&normal& data-rawwidth=&576& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-50e51d43caf3562eeb59ad2_r.jpg&&&/figure&&p&主要是队列管理和分发,限速,分配和管理缓冲,数据搬移。&/p&&p&在Ingress和Egress共有的部分中,最复杂的模块是缓冲管理和队列管理,它们的任务分别如下:&/p&&p&缓冲管理:缓冲池的分配和释放;描述符的添加和删除;资源统计与报警;&/p&&p&队列管理:维护MAC到CPU的队列重映射表,入队和出队管理;包的保序和QoS;CPU缓存的预热,对齐;根据预设的分流策略,均衡每个CPU的负载&/p&&p&这些任务大部分都不是纯计算任务,而是一个硬件化的内存管理和队列管理。事实上,在新的网络加速器设计中,这些所谓的硬件化的部分,是由一系列专用小核加C代码完成的。因此,完全可以再进一步,去掉网络加速器,使用SMP的多组通用处理器来做纯软件的队列和缓冲管理,只保留存在大量计算或者简单操作的硬件模块挂在总线上。&/p&&p&再来看下之前的芯片模块,我们保留加解密和压缩引擎,去除队列和缓存管理QB-Man,把WRIOP换成A53甚至更低端的小核,关键字检测可以用小核来实现。&/p&&p&网络处理上还有一些小的技术,如下:&/p&&p&Scattter Gather:前文提过,这可以处理分散的包头和负载,直接把多块数据DMA到最终的目的地,CPU不用参与拷贝操作。这个在以太网控制器里可以轻易实现。&/p&&p&Checksum:用集成在以太网控制器里面的小模块对数据包进行校验和编码,每个包都需要做一次,可以用很小的代价来替代CPU的工作。&/p&&p&Interrupt aggregation:通过合并多个包的中断请求来降低中断响应的平均开销。在Linux和一些操作系统里面,响应中断和上下文切换需要毫秒级的时间,过多的中断导致真正处理包的时间变少。这个在以太网控制器里可以轻易实现。&/p&&p&Rate limiter:包发送限速,防止某个MAC口发送速度超过限速。这个用软件做比较难做的精确,而以太网控制器可以轻易计算单位时间内的发送字节数,容易实现。&/p&&p&Load balancing, Qos:之前主要是在阐述如何对单个包进行处理。对于多个包,由于网络包之间天然无依赖关系,所以很容易通过负载均衡把他们分发到各个处理器。那到底这个分发谁来做?专门分配一个核用软件做当然是可以的,还可以支持灵活的分发策略。但是这样一来,可能会需要额外的拷贝,Cache stashing所减少的延迟优势也会消失。另外一个方法是在每一个以太网控制器里设置简单的队列(带优先级的多个Ring buffer之类的设计),和CPU号,线程ID或者虚拟机ID绑定。以太网控制器在对包头里的目的地址或者源地址做简单判断后,可以直接塞到相应的缓存或者DDR地址,供各个CPU来读取。如果有多个以太网控制器也没关系,每一个控制器针对每个CPU都可以配置不同的地址,让CPU上的软件来决定自己所属队列的读取策略,避免固化。&/p&&p&把这个技术用到PCIe的接口和网卡上,加入虚拟机ID的支持,就成了srIOV。PCIe控制器直接把以太网数据DMA到虚拟机所能看到的地址(同时也可使用Cache stashing),不引起异常,提高效率。这需要虚拟机中所谓的穿透模式支持IO(或者说外设)的虚拟化,在安全篇中有过介绍,此处就不再展开。同样的,SoC内嵌的以太网处理器,在增加了系统MMU之后,同样也可以省略PCIe的接口,实现虚拟化,直接和虚拟机做数据高效传输。&/p&&figure&&img data-rawheight=&325& src=&https://pic1.zhimg.com/v2-fdacc4fec7ccc_b.jpg& data-size=&normal& data-rawwidth=&576& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic1.zhimg.com/v2-fdacc4fec7ccc_r.jpg&&&/figure&&p&解决了负载均衡的问题,接下去就要看怎么做包的处理了。有几种经典的方法:&/p&&p&第一是按照包来分,在一个核上做完某一特征数据包流所有的任务,然后发包。好处是包的数据就在本地缓存,坏处是如果所有代码都跑在一个核,所用到的参数可能过多,还是需要到DDR或者系统缓存去取;也有可能代码分支过多,CPU里面的分支预测缓冲不够大,包处理程序再次回到某处代码时,还是会产生预测失败。&/p&&p&第二是按照任务的不同阶段来分,每个核做一部分任务,所有的包都流过每一个核。优缺点和上一条相反。&/p&&p&第三种就是前两者的混合,每一组核处理一个特定的数据流,组里再按照流水分阶段处理。这样可以根据业务代码来决定灵活性。&/p&&p&在以上的包处理程序中,一定会有一些操作是需要跨核的,比如对路由表的操作,统计数据的更新等。其中的一个重要原则就是:能不用锁就不要用锁,用了锁也需要使用效率最高的。&/p&&p&举个例子,如果需要实现一个计数器,统计N个CPU上最终处理过的包。首先,我们可以设计一个缓存行对齐的数据结构,包含若N+1个计数器,其中每一个计数器占据一行。每个CPU周期性的写入自己对应的那个计数器。由于计数器占据不同缓存行,所以写入操作不会引起额外的Invalidation,也不会把更新过的数据踢到DDR。最后,有一个独立的线程,不断读取前面N个计数器的值,累加到第N+1个计数器。在读取的时候,不会引起Invalidation和eviction。此处不需要软件锁来防止多个线程对同一变量的操作,因为此处计数器的写和读并不需要严格的先后次序,只需要保证硬件一致性即可。&/p&&p&在不得不使用锁的时候,也要保证它的效率。软件上的各种实现这里就不讨论了,在硬件上,Cacheable的锁变量及其操作最终会体现为两种形式:&/p&&p&第一, exclusive Access。原理是,对于一个缓存行里的变量,如果需要更新,必须先读然后写。当进行了一次读之后,进入锁定状态。期间如果有别的CPU对这个变量进行访问,锁定状态就会被取消,软件必须重复第一步;如果没有,就成功写入。这个原理被用来实现spinlock函数。根据硬件一致性协议MESI,处在两个CPU中的线程,同时对某一个变量读写的话,数据会不断在各自的私有缓存或者共享缓存中来回传递,而不会保持在最快的一级缓存。这样显然降低效率。多个CPU组之间的exclusive Access效率更低。&/p&&p&第二, 原子操作。在ARMv8.2新的原子操作实现上,修改锁变量的操作可以在缓存控制器上实现,不需要送到CPU流水线。这个缓存可以使私有缓存,也可以是共享的系统缓存。和exclusive access相比较,省去了锁定状态失败后额外的轮询。不过这个需要系统总线和CPU的缓存支持本地更新操作,不然还是要反复读到每个CPU的流水线上才能更新数据。我在基础篇中举过例子,这种做法反而可能引起总线挂起,降低系统效率。&/p&&p&如果一定要跑Linux系统,那么一定要减少中断,内核切换,线程切换的时间。对应的,可以采用轮询,线程绑定CPU和用户态驱动来实现。此外,还可以采用大页表模式,减少页缺失的时间。这样,可以把标准Linux内核协议栈的2000左右时钟周期缩到几十纳秒,这也就是DPDK和商业网络转发软件效率高的原因。&/p&&p&最后稍稍谈下固态存储。企业级的固态硬盘存储芯片,芯片基本结构如下:&/p&&figure&&img data-rawheight=&391& src=&https://pic3.zhimg.com/v2-f3f2e663c6_b.jpg& data-size=&normal& data-rawwidth=&576& class=&origin_image zh-lightbox-thumb& width=&576& data-original=&https://pic3.zhimg.com/v2-f3f2e663c6_r.jpg&&&/figure&&p&如上图,芯片分为前端和后端两块,前端处理来自PCIe的命令和数据,并把数据块映射到最终nand颗粒。同时,还要做负载均衡,磨损均衡,垃圾回收,阵列控制等工作,略过不表。这些都是可以用通用处理器来完成的,差不多每1M的随机IOPS需要8个跑在1GHz左右的A7处理器来支撑,每TB的NAND阵列,差不多需要1GB的DDR内存来存放映射表等信息。其余的一些压缩,加解密等,可以通过专用模块完成。后端要是作为ONFI的接口控制器,真正的从NAND里面读写数据,同时做LDPC生成和校验。&/p&&p&如果单看前端,会发现其实和网络处理非常像,查表,转发,负载均衡,都能找到对应的功能。不同的是,存储的应用非常固定,不需要错综复杂的业务流程,只需处理几种类型的命令和数据块就可以了。&/p&&p&一个存储系统的硬件成本,闪存才是大头,占据了85%以上,还经常缺货。而闪存系统的毛利并不高,这也导致了固态存储控制器价格有限,哪怕是企业级的芯片,性能超出消费类几十倍,也无法像服务器那样拥有高利润。&/p&&p&一个潜在的解决方法,是把网络也集成到存储芯片中,并且跑Linux。这样,固态硬盘由原来插在x86服务器上的一个PCIe设备,摇身一变成为一个网络节点,从而省掉了原来的服务器芯片及其内存(可别小看内存,它在一台服务器里面可以占到三分之一的成本)。&/p&&p&如上图,可以把SPDK,DPDK,用户态驱动和用户态文件系统运行在一个芯片中,让一个网络包进来,不走内核网络协议栈和文件系统,直接从网络数据变成闪存上的文件块。在上层,运行类似CEPH之类的软件,把芯片实例化成一个网络存储节点。大致估算一下,这样的单芯片方案需要16核A53级别的处理器,运行在1.5GHz以下,在28纳米上,可以做到5-10瓦,远低于原来的服务器。&/p&&p&不过这个模式目前也存在着很大的问题。真正做存储芯片的公司,并不敢花大力气去推这种方案,因为它牵涉到了存储系统的基础架构变化,超出芯片公司的能力范畴,也不敢冒险去做这些改动。只有OEM和拥有大量数据中心互联网公司才能去定义,不过却苦于没有合适的单芯片方案。而且数据中心未必看得上省这点成本,毕竟成本大头在服务器芯片,内存以及机架电源。&/p&
这一篇谈下网络处理器。曾几何时,网络处理器是高性能的代名词。为数众多的核心,强大的转发能力,定制的总线拓扑,专用的的指令和微结构,许多优秀设计思想沿用至今。Tilera,Freescale,Netlogic,Cavium,Marvell各显神通。但是到了2018年,这些公司却大…
本篇对2017年初版Cadence的全套所有EDA工具的技术特性特点做一深入的分析,并与EDA其它主流厂商的对应工具进行比较。也为在校学习集成电路设计的学生们做一简单的科普,因为在学校学到的东西与在商业上做实际芯片设计是有很大区别的。&br&&br&先来回答一个在国内经常被问到的问题:为何大部分EDA工具都是使用Linux平台而不是普通的Windows平台?这其实很好理解,因为多数工程及科技软件原先都是在UNIX平台上首先开发和使用的。这些工具出现的时候还没有微软的Windows呢。一些工程和科技软件被移植到Windows上去还是在上世纪九十年代末期和2000年以后的事。若读者在2000年之前或更早去米国研究型大学工学院中的计算中心和实验室访问或学习工作的话,见到的都是一排排的UNIX工作站,根本没有PC。虽然Windows在办公等日常工具上后来居上占据了主导地位,但像EDA工具这样的工程软件依然继续延续在UNIX及后来的Linux平台上开发和应用,多数并未被移植到Windows平台上。因为UNIX及后来的Linux所具有的真正多用户分布式系统(微软Windows不是真正的多用户系统!)等特点特别适合工程及科技软件。而随着Linux系统逐步取代UNIX系统,EDA工具现在也基本上全面移植转移到了Linux平台上。例如Cadence的计算平台路线图的规划所示,除了原先收购进的OrCAD还在使用Windows外,其他工具都已经移植转移到了Linux平台,而以前的UNIX平台如HPUX、Solaris、SunOS等现在都已经终止使用,IBM的AIX平台也只在某些合同下继续开发某些特定EDA工具。从这里也可以为在校学习集成电路设计的学生们指明一条路,即若准备将来在集成电路行业中开拓职业事业的话,就必须熟练掌握Linux这个必备的系统工具。现实是Linux(Andoid)和UNIX(iOS)已经在移动设备上占据了主导地位,所以即便不准备在集成电路这个行业开辟职业事业,熟练掌握Linux也会在其他行业中取得职业事业的发展机会。&br&&figure&&img src=&https://pic4.zhimg.com/v2-a3c663cc41d0dc529542e_b.jpg& data-rawwidth=&1000& data-rawheight=&750& class=&origin_image zh-lightbox-thumb& width=&1000& data-original=&https://pic4.zhimg.com/v2-a3c663cc41d0dc529542e_r.jpg&&&/figure&&p&&br&下面将2017年初版Cadence全套EDA工具按照Cadence的官方分类共六大类EDA完整列表如下。工具列出的格式为:&b&工具全名称:工具代号及版本号&/b& (当前的安装版本)。&br&&br&&b&Custom IC Design:&/b&&br&&/p&&ul&&li&&b&Integrated Circuit (Virtuoso): IC 6.1.7&/b& (IC06.17.708_Hotfix)&/li&&li&&b&Integrated Circuit (Advanced Node Virtuoso): ICADV 12.3&/b& (ICADV12.30.700_Base)&/li&&li&&b&Spectre Circuit Simulators: SPECTRE 16.1&/b& (SPECTRE16.10.187-ISR1_Hotfix)&/li&&li&&b&Virtuoso IP Foundation Characterization: LIBERATE 15.1&/b& (LIBERATE15.15.070_Hotfix)&/li&&/ul&&p&&br&&b&Design for Manufacturing:&/b&&br&&/p&&ul&&li&&b&Assura Physical Verification: ASSURA 4.1&/b& (ASSURA04.15.108-617_Hotfix)&/li&&li&&b&Extraction Tools (Quantus QRC): EXT 16.1&/b& (EXT16.10.000_Base)&/li&&li&&b&Physical Verification Systems: PVS 15.2&/b& (PVS15.21.000_Hotfix)&/li&&li&&b&Manufacturability and Variability Sign-Off: MVS 16.2&/b& (MVS16.20.000_Base)&/li&&/ul&&p&&br&&b&Digital IC Design:&/b&&br&&/p&&ul&&li&&b&Encounter Conformal: CONFRML 16.2&/b& (CONFRML16.20.140_Hotfix)&/li&&li&&b&Genus Synthesis Solution: Genus 16.2&/b& (GENUS16.20.000_Base)&/li&&li&&b&Innovus Implementation System: Innovus 16.2&/b& (INNOVUS16.20.000_Base)&/li&&li&&b&Joules RTL Power Analysis: Joules 16.1&/b& (JLS16.15.000-ISR5_Hotfix)&/li&&li&&b&Modus Test Solution: Modus 16.2&/b& (MODUS16.20.000_Base)&/li&&li&&b&Silicon Signoff and Verification (Tempus/Voltus IC):&/b&&b&SSV 16.2&/b& (SSV16.20.000_Base)&/li&&li&&b&Stratus High-Level Synthesis: STRATUS 16.1&/b& (STRATUS16.16.100_Update)&/li&&/ul&&p&&br&&b&Functional Verification:&/b&&br&&/p&&ul&&li&&b&Indago Debug Platform: INDAGO 2016.11&/b& (INDAGOMAIN_Base)&/li&&li&&b&JasperGold Apps: JASPERGOLD 16.0&/b& (JASPERGOLD16.12.000-INCISIVE1520_Base)&/li&&li&&b&Metric-Driven Verification: MDV 20161.11&/b& (MDVMAIN_Hotfix)&/li&&li&&b&RocketSim Parallel Simulation Engine: RockSim 16.1&/b& (ROCKSIM02.00.021_Update)&/li&&li&&b&Verification IP: VIPCAT 11.3&/b& (VIPCAT11.30.045_Update)&/li&&li&&b&Xcelium Verification Platform: XCELIUM 2016.11&/b& (XCELIUMMAIN_Base)&/li&&/ul&&p&&br&&b&Silicon-Package-Board Co-Design:&/b&&br&&/p&&ul&&li&&b&Allegro ECAD-MCAD Library Creator: SPBS 17.2&/b& (SPBS17.21.000_Base)&/li&&li&&b&Allegro Sigrity: SIGRITY 2017&/b& (SIG17.00.000_Base)&/li&&li&&b&OpenPOWER Compliance Kits in Sigrity2017:&/b& (SIG17.00.000-MODEL_OpenPOWER_Library)&/li&&li&&b&Silicon-Package-Board Co-Design: SPB 17.2&/b& (SPB17.20.009_Hotfix)&/li&&/ul&&p&&br&&b&Verification Accelerator and Emulator:&/b&&br&&/p&&ul&&li&&b&Memory Model Portfolio: MMP 16.1&/b& (MMP16.10.000_Base)&/li&&li&&b&Palladium Applications: PDAPP 16.1&/b& (PDAPP16.10.000_Base)&/li&&li&&b&Protium Rapid Prototyping Platform. Protium 16.1&/b& (PTM16.10.000_Base)&/li&&li&&b&Palladium XP (Unified Xccelerator Emulator): UXE 15.1&/b& (UXE15.10.000_Base)&/li&&li&&b&Palladium Z1 (Verification Xccelerator Emulator): VXE 16.1&/b& (VXE16.10.000_Base)&/li&&/ul&&p&&br&&b&Cadence Help Tools:&/b& (CADENCEHELP02.30.006_Tools)&br&&br&现在对2017年初最新版Cadence全套工具各个工具的功用和技术性能特点做一概略分析,并与其他主流EDA厂商的对应产品做比较。众所周知,Cadence是EDA(Electronics Design Automation电子设计自动化)产业界的头号厂商,EDA三巨头(Cadence,Synopsys和Mentor Graphics)中的老大(国内用户似乎对Synopsys更熟悉)。它的众多EDA工具在IC集成电路芯片和PCB电路版的设计与验证流程中在业界占据领先地位,其他厂商的EDA工具产品在与其竞争中有成功也有失败。下面也是按照Cadence的官方六大分类分别对其中的各个EDA工具进行分析比较。&br&&br&&b&Custom IC Design定制芯片设计&/b&&br&&br&&b&Integrated Circuit (Virtuoso): IC 6.1.7&/b& (IC06.17.708_Hotfix)&br&IC617是Cadence知名的Virtuoso定制芯片设计工具套件,在定制芯片设计中占据统治地位——Virtuoso在全定制芯片(Full Custom)和AMS(Analog Mixed Signal)混合信号芯片/版图(Layout)工具市场上占据接近80%的市场份额!Virtuoso是绝大多数定制芯片设计用户所寻求的工具(EDA of Choice)。Cadence在定制芯片设计市场上的影响如此之大,以至于各个主流芯片代工厂商Foundries基本上都专门为其开发PDK供给芯片设计客户使用。有许多人将IC Virtuoso这工具套件用作纯粹模拟/射频设计用途,这其实只用到了其中的一部分能力。Virtuoso最大的功用还是在混合信号(数字模拟——即Mixed Signal)芯片设计上,但也可以用作全定制数字(Full Custom Digital)芯片设计(是的,Virtuoso可以用来设计全定制数字芯片!——这就是为何Virtuoso包含了Verilog/VHDL以及Digital Implemantion等工具/功能在内。国内芯片设计业似乎大都对此并不是很清楚)!Virtuoso包括了前端到后端的全流程设计功能。与其他工具如多模仿真工具和物理验证工具等结合在一起使用构成了完整的定制芯片设计流程。需要指出的是Cadence每月都对其EDA工具中的某些工具进行升级,包括程序中的错误修正(bug fixings)和功能改进(很多都是用户建议的改进)等。大部分新功能的增加或旧功能的去除都是逐步渐进式(incremental)通过Hotfix版完成的。对Virtuoso来说通常是二至三个月出版一个Hotfix版进行升级。&br&&br&IC617 Virtuoso的最大改变是引进了ADE(Analog Design Environment模拟设计环境)全新的三个工具:ADE Explorer,ADE Assembler,和ADE Verifier,用来替换以前版本中的ADE-L,ADE-XL和ADE-GXL。这里ADE Explorer和ADE Assembler取代了ADE-L,ADE-XL和ADE-GXL,而ADE Verifier则实际上可以称为ADE Planner,是一个模拟设计项目的规划管理工具。Cadence在此实际上将原来旧版本中的ADE-L和ADE-XL整合为ADE Explorer,而ADE Assembler则整合了原来的ADE-GXL。新版Virtuoso的其他主要部分(包括schematic,layout,AMS等工具)与之前的版本基本没有做巨大的更改(但小变动在每个Hotfix升级中则是经常发生的)。&br&&br&Virtuoso的ADE是模拟设计和SPICE仿真图形界面事实上的业界标准。正因为如此,Cadence采取了不少手段以从中赚取更多利润。例如Cadence从IC6.1版起,将“标称值”SPICE仿真任务(单一特定条件与排错)与“多重”SPICE仿真任务(corners,sweeps,Monte Carlo)分离开来,形成一个三重价格体系模型再加上一个以每日每次使用记价的令牌(token)系统,让用户从ADE-L到ADE-XL再到ADE-GXL一级一级地支付更多的license许可证费用。而这一切nominal/corners/sweeps/monte carlo在旧版IC5.1.41中用户是一同完成的,并且还没有令牌系统在其中跟你玩。这个L-XL-GXL分离自然而然地惹恼了不少用户,给了竞争对手在定制芯片设计EDA上一个翻身的机会。只可惜其主要竞争对手不给力,基本没有拿出过硬的EDA产品来翻盘。例如Synopsys多年前发布的对应竞争工具Custom Designer就是一个不折不扣的失败尝试,虽然Custom Designer做得看上去像一个Virtuoso超级集合,但并没有因此赢得多少用户。现在Synopsys经过几年的收购(包括SpringSoft的Laker全套定制工具家族,Ciranova的Helix placer,和Magma的整套东西)后,将所有这些购进的东西打包整合在一起成为它新的Custom Compiler工具。所以Custom Compiler就是一个Laker加上Helix加上其他一些东西的重新包装,要用这样产品来吸引原本就异常稳固的Virtuoso庞大用户群基本盘恐怕是非常艰难的搏斗。在Mentor Graphics方面,也是通过收购诸如Pyxis,Tanner和Berkeley Design Automation(BDA)来试图渗透进定制芯片设计市场,但这些工具都缺乏类似Virtuoso中的ADE和layout版图等工具相似且完整的功能。Pyxis现在的方向基本上是做MEMS。而Tanner虽然给Mentor Graphics带来了一些客户,但绝大多数是低端设计或者是那些要便宜EDA工具的小公司。BDA的ACE看上去有希望,但还缺少类似Virtuoso的ADE那样的完整性能。总之,在定制芯片设计EDA市场上Cadence的Virtuoso基本盘非常稳固,其竞争对手都比较弱。而且新版ADE将旧版ADE中分离的标称值/corners/sweeps/蒙特卡罗/参数对比等功能都整合在ADE Explorer中,如此对芯片设计用户来说也就更具吸引力了。&br&&br&Virtuoso的Voltus-Fi工具是在Virtuoso环境内与Quantus QRC(参见DFM设计大类EDA中的介绍)和SPECTRE(见下面的Spectre Circuit Simulators介绍)一同用于晶体管级noise/power signoff的工具。当前已经能够用于台积电的10nm/7nm节点工艺。其竞争对手是Ansys收购的Apache的Totem和Synopsys的HSim-PWRA。&br&&br&Virtuoso的Analog Assisted Automation(模拟辅助自动化)功能就是画板上的Modgens。现在有了新的模式编辑器(pattern editor)和内置定制布线。&br&&br&Virtuoso的IPVS在定制设计的运行中做signoff验收DRC检查,在Virtuoso中仅做瞬时DRC。能在16/14/10/7nm的FinFET/FD-SOI流程中做DPF奇回路检测并给设计者改进提示。注释浏览器交叉探查。&br&&br&Virtuoso的版图EAD工具不需要LVS即可在设计内做实时RC提取。配有随机游动电容处理器,EM检查,电阻有限元网格化,电流限制/预算检查。还能在部分完成的版图上做寄生参数的重新仿真。版图工程师能够从版图得到立即反馈从而避免“rip and repair”综合症。EAD新功能还包括“电驱动”布线。Virtuoso的主要竞争对手Synopsys也试图在它的Custom Compiler工具中拷贝Cadence所有这些理念,但迄今为止Custom Compiler还没有能找到一线大客户。&br&&br&&b&Integrated Circuit (Advanced Node Virtuoso): ICADV 12.3&/b& (ICADV12.30.700_Base)&br&ICADV就是IC Virtuoso在先进节点工艺制程(20nm以下节点工艺)上的版本。针对20nm以下节点工艺制程的定制芯片设计要用ICADV这个版本的Virtuoso,而不能使用IC Virtuoso。当前这个最新版本ICADV123能够用于最新7nm节点工艺制程的定制芯片设计——当然目前这只是少数几个有此财力物力人力的芯片设计大公司才利用最新7nm节点工艺制程了。ICADV可以做FinFET版图设计、根据track进行布线、row定义,SADP着色和MPT。&br&&br&&b&Spectre Circuit Simulators: SPECTRE 16.1&/b& (SPECTRE16.10.187-ISR1_Hotfix)&br&这是Cadence的多模式仿真工具(Spectre,Spectre APS,Spectre XPS,Spectre RF等)用于定制芯片的前端设计和后端设计中的仿真,与Virtuoso一起使用。从16.1版开始,工具的名称代号改称为SPECTRE,而MMSIM则是15.1版及其之前版本的代号。所有其中相关工具名称也因此全部重新命名,例如原来名称为Virtuoso Spectre Circuit Simulator,现在改为Spectre Classic Simulator等等诸如此类。&br&&br&Spectre XPS为FastSPICE工具可用于存储器设计。其benchmark基准测试要比Synopsys的HSPICE快3到4倍吞吐率。为多核运行,能按需智能快速或精确分区。&/p&&p&&br&对北美芯片设计工程师(人,人)做的问卷调查(由加拿大一家EDA初创企业Solido Design Automation发起和资助的调查)显示的SPICE仿真在业界的使用状况:&/p&&p&&figure&&img src=&https://pic2.zhimg.com/v2-34fd82114add58fcf646a645da344755_b.jpg& data-rawwidth=&545& data-rawheight=&318& class=&origin_image zh-lightbox-thumb& width=&545& data-original=&https://pic2.zhimg.com/v2-34fd82114add58fcf646a645da344755_r.jpg&&&/figure&&figure&&img src=&https://pic4.zhimg.com/v2-6ca8caaa3da_b.jpg& data-rawwidth=&542& data-rawheight=&444& class=&origin_image zh-lightbox-thumb& width=&542& data-original=&https://pic4.zhimg.com/v2-6ca8caaa3da_r.jpg&&&/figure&可见不论是在芯片设计企业内部实际使用情况还是芯片设计工程师的主观意识里,Cadence的SPICE工具都是市场领先的仿真工具。&br&&br&这同一个问卷调查还有SPICE在不同节点工艺上的分布情况:&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-8c75f563eaed_b.jpg& data-rawwidth=&528& data-rawheight=&280& class=&origin_image zh-lightbox-thumb& width=&528& data-original=&https://pic4.zhimg.com/v2-8c75f563eaed_r.jpg&&&/figure& 其中几乎20%的SPICE是用于大于90nm节点的老工艺,因为20%的定制芯片是用于医疗设备、产品目录部件、工业控制器、手机基站、军用芯片等用途。这类芯片不需要先进的节点工艺,因此这些用途芯片使用成熟节点工艺,因为它们更便宜!&/p&&p&&figure&&img src=&https://pic1.zhimg.com/v2-926cab0c0bd1ca406f1d9_b.jpg& data-rawwidth=&577& data-rawheight=&309& class=&origin_image zh-lightbox-thumb& width=&577& data-original=&https://pic1.zhimg.com/v2-926cab0c0bd1ca406f1d9_r.jpg&&&/figure&同时芯片设计使用的节点工艺有两大转移。一是从65nm转移至40nm,例如物联网和汽车芯片应用。另外就是芯片代工厂商在做低功耗40nm工艺版的65nm老芯片,例如台积电的40LP和GF的40LP。二是从28nm转移至16nm和10nm高性能FinFET芯片。这类芯片主要是类似苹果、高通、英特尔、英伟达、三星这类大品牌用于移动或高性能计算。总之,芯片设计主要依据应用场景以及成本来选择使用的节点工艺制程。先进节点工艺并不适用于所有应用,因而使用先进节点工艺设计的芯片在全体芯片应用中只占大约40%左右。&br&&br&Spectre的简要来历:Spectre是由Ken Kundert在SPICE的诞生地伯克利加大读博士时创作的(其导师是Alberto Sangiovanni-Vincentelli教授——他也是EDA两大巨头Cadence和Synopsys的联合创始人Co-Founder!)。他取得博士后在Cadence领导开发了Spectre工具家族的主要部分,如Spectre、SpectreHDL、SpectreRF以及Verilog-A、Verilog-AMS、VHDL-AMS语言。知名的网络社区&a href=&https://link.zhihu.com/?target=http%3A//www.designers-guide.org/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Designer's Guide Community&/a&也是由他联合创办的。&br&&br&&b&Virtuoso IP Foundation Characterization: LIBERATE 15.1&/b& (LIBERATE15.15.070_Hotfix)&br&28nm及以下先进节点工艺制程的芯片设计需要用到许多附加的单元库views(多电压,多温度,增长的corners数目....),所以生成及维护所有这些单元库views在芯片设计流程中成为主要瓶颈问题。LIBERATE就是用于在先进节点工艺上为复杂的Soc芯片生成这些标准且复杂的单元库。这个工具原自Cadence收购的Altos设计自动化公司。&br&&br&定制芯片设计流程:&/p&&p&&figure&&img src=&https://pic1.zhimg.com/v2-5ff4cbb5baf6b381c16f63e4a8893613_b.jpg& data-rawwidth=&600& data-rawheight=&299& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-5ff4cbb5baf6b381c16f63e4a8893613_r.jpg&&&/figure&&figure&&img src=&https://pic1.zhimg.com/v2-ca406e2d4a4476e0cfddf15_b.jpg& data-rawwidth=&666& data-rawheight=&452& class=&origin_image zh-lightbox-thumb& width=&666& data-original=&https://pic1.zhimg.com/v2-ca406e2d4a4476e0cfddf15_r.jpg&&&/figure&&br&&b&Design for Manufacturing(DFM)可制造性设计&/b&&br&&br&&b&Assura Physical Verification: ASSURA 4.1&/b& (ASSURA04.15.108-617_Hotfix)&br&Assura物理验证工具,用于芯片设计(包括前端和后端)流程中的DRC、LVS。&br&&br&&b&Extraction Tools (Quantus QRC): EXT 16.1&/b& (EXT16.10.000_Base)&br&Quantus QRC为芯片寄生参数提取工具。其用户包括41个FinFET客户和3个FD-SOI客户。可在Virtuoso和Innovus环境内设计时运作。能用于二次暴光,3D-IC,16/14/10/7nm节点工艺建模。具备分布式处理,netlist缩减。竞争对手为Mentor Graphics的Calibre-xACT以及Synopsys的Star-RCXT。&br&&br&&b&Physical Verification Systems: PVS 15.2&/b& (PVS15.21.000_Hotfix)&br&物理验证系统。这是Assura的升级换代产品,用于45nm以下节点工艺芯片设计流程中的DRC、LVS、XOR(LVL)、FastXOR、ERC、PERC、SVS。&br&&br&以上工具中的物理验证功能(DRC/LVS)在芯片设计行业(特别是在芯片设计的sign-off验收完工阶段)通常都是用Mentor Graphics的Calibre工具代替,Calibre是芯片设计物理验证工具市场上的主导工具。当然Cadence的物理验证工具也有自己的特色,比如PVS中包含了MaskCompose,QuickView&br&&br&&b&Manufacturability and Variability Sign-Off:&/b& MVS 16.2 (MVS16.20.000_Base)&br&可制造性和可变性验收工具。这个工具中包含Litho Physical Analyzer,LDE Electrical Analyzer,CMP Predictor等工具。&br&&br&LDE Electrical Analyzer用于优化和控制版图依赖效应(LDE)的影响,例如应力或阱邻近效应对设计性能的影响。这个工具直接插入到用户现存的定制模拟设计、IP设计、和基于单元的数字设计流程中帮助加速时序收敛。&br&&br&Litho Physical Analyzer用于检测和矫正光刻热点等传统物理验证工具所忽略的可制造性问题以改进系统和参数的良品率并满足代工厂的DFM要求。&br&&br&CMP Predictor预测化学机械抛光(CMP)的变化及其在设计上对整个层叠的影响,检测影响良品率的热点并生成改进指导。&br&&br&以上工具都与Cadence的定制和数字设计平台紧密集成在一起帮助改进芯片设计的DFM。&br&&br&&b&Digital IC Design数字芯片设计&/b&&br&&br&&b&Encounter Conformal: CONFRML 16.2&/b& (CONFRML16.20.140_Hotfix)&br&工具包括等效检查、功能工程修改、低功耗设计验证优化、约束设计。&br&&br&Conformal ECO Designer为“最后一刻难解的ECO面积”产生拥塞感知的ECO。高通、博通、意法半导体都是这工具的用户。&br&&br&Conformal Low Power从RTL到晶体管级做等效检查,支持IEEE 1801。客户包括ARM、高通、博通、Marvell等。&br&&br&&b&Genus Synthesis Solution: Genus 16.2&/b& (GENUS16.20.000_Base)&br&Genus是大规模并行RTL和物理综合工具。声称比竞争对手Synopsys的Design Compiler快5倍,用户包括德州仪器、ImgTec等。&br&&br&&b&Innovus Implementation System: Innovus 16.2&/b& (INNOVUS16.20.000_Base)&br&Innovus为Cadence于2015年发布的全新版数字芯片P&R布局布线版图设计工具,替代以前的Encounter平台。谣传称苹果曾经秘密地对Innovus进行benchmark基准测试与Synopsys的ICC2做比较,对比后苹果在其芯片设计中转而使用Innovus。后来Cadence的CEO陈立武在公司年报会议上宣称一家国际知名的公司与Cadence签署了5年EDA服务合同,这是Cadence近些年中曾经有过的最大合同。人们都在猜测这家大公司就是苹果。一些工程师在公开场合评论说Innovus在16nm/14nm节点工艺上表现良好,在10nm节点工艺中新的双重/三重/四重模式数字着色版图问题上取得成功,而Synopsys的ICC2对此类问题还无法应对。而后欧洲知名的半导体研发机构imec在其世界首个5nm芯片流片过程中只用Cadence的Innovus、Tempus和Virtuoso以及Mentor Graphics的Calibre,而根本不用Synopsys的ICC/ICC2和PrimeTime。在过去一年多里,Cadence的市场部门忙着对外宣称Innovus用新的Power Opt具备10-15%更好的PPA(Performance, Power, Area——性能、功耗、面积),用GigaPlace具备20%更好的布局QoR,还能与Virtuoso深度挂钩设计A/D芯片,诸如此类。还报道华为海思使用Innovus为其芯片减少了20%面积,东芝的芯片减少了16%面积并减少了25%功耗等等。Innovus目前已经可以用于10nm/7nm节点工艺。Innovus用户包括高通、英伟达、意法半导体、博通、华为海思、ARM、法拉第、NXP等。&br&&br&Innovus-PVS用于signoff验收DRC/LVS、PERC、Innovus集成内全金属填充、DFM填充、全多重暴光颜色分解。与Virtuoso (IPVS)紧密集成。已取得台积电/联电/英特尔/GlobalFoundries的65nm至7nm节点工艺的认证。Innovus-PVS的基于track填充已经用于16/14/10nm节点工艺的生产。据称具备5至10倍快速ECO填充,4至5倍的快速全芯片填充。&br&&br&&b&Joules RTL Power Analysis: Joules 16.1&/b& (JLS16.15.000-ISR5_Hotfix)&br&RTL功率分析工具Joules是RTL功率计算器。&br&&br&&b&Modus Test Solution: Modus 16.2 &/b&(MODUS16.20.000_Base)&br&Modus诊断与测试工具,可做扫描插入、压缩、ATPG、逻辑和存储器BIST、PMBIST。压缩比率达400倍。用户包括德州仪器、Microsemi、GlobalFoundries、Sequans等。Modus是Cadence试图冲击占据诊断测试这个小市场主导地位的Mentor Graphics的TestKompress。&br&&br&&b&Silicon Signoff and Verification (Tempus/Voltus IC): SSV 16.2&/b& (SSV16.20.000_Base)&br&这个工具套件包括两个部分:Tempus Timing Signoff Solution和Voltus IC Power Integrity Solution。Tempus为芯片信号完整性(Signal Integrity)分析工具,Voltus为芯片电源完整性分析工具。&br&&br&Tempus是与竞争对手Synopsys的PrimeTime竞争的产品。PrimeTime在STA(Static Timing Analysis)静态时序分析工具市场上占据垄断地位——差不多87%占有率。对5千万个晶体管的设计,PrimeTime在8个CPU上要花8.5小时,而Tempus在32个CPU上仅花费58分钟。Tempus能为20/16/14/10nm布局规则在MCMM时序优化中生成合法布局指令,能每小时处理1亿例晶体管,不需要布局工具来认可ECO。Tempus是业界首个全分布式大规模并行STA工具,已经在16/14/10nm工艺上得到认证,并且为7nm准备就绪。Tempus还能与Quantus QRC一起在Virtuoso环境内做静态时序分析。Tempus用户包括了高通、德州仪器、博通、意法半导体、NXP、ARM、夏普、LG这样的企业。&br&&br&Voltus-DP是全芯片signoff验收工具。可做电压降、Power-Grid-Views、ECO。可在几百个CPU阵列(CPU Farm)上大规模并行处理十亿级晶体管。能与Cadence其他工具Tempus、Innovus协同运行以及Sigrity在芯片/封装/电路板协同进行联合设计运行。在两个用户做的benchmark基准测试中赢取主要竞争对手Ansys收购的Apache的RedHawk。Voltus的一个早期用户在其一个大型ARM芯片设计中将运行时间从9天减至1天。Voltus用户包括德州仪器、英伟达、意法半导体、华为海思、ARM、台积电、NXP、LGE、展迅等企业。&br&&br&&b&Stratus High-Level Synthesis: STRATUS 16.1&/b& (STRATUS16.16.100_Update)&br&Stratus HLS是ASIC、SoC、FPGA设计的高层次综合平台。让用户能够从抽象的SystemC、C或C++模型中快速地设计和验证RTL实现,生成的Verilog RTL可以被Genus或者Synopsys的Design Compiler很容易地消化利用。能做控制逻辑和数据通道。通过与Innovus布局布线挂钩,Stratus HLS据说能够早在SystemC/C/C++原码中就能看到布局布线的拥挤阻塞问题。Cadence声称Stratus HLS比竞争对手Mentor Graphics的Catapult HLS有更高精确度。Stratus HLS的用户包括三星、LG、索尼、东芝、富士通、理光、Socionext、瑞昱半导体等公司。Stratus HLS原自Cadence收购的Forte设计系统公司。&br&&figure&&img src=&https://pic4.zhimg.com/v2-378bd320f005ce665f043d_b.jpg& data-rawwidth=&600& data-rawheight=&344& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-378bd320f005ce665f043d_r.jpg&&&/figure&&br&数字芯片设计流程:&br&&figure&&img src=&https://pic1.zhimg.com/v2-fae7e90e3d46435bdd8cb7810935ddf5_b.jpg& data-rawwidth=&600& data-rawheight=&910& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic1.zhimg.com/v2-fae7e90e3d46435bdd8cb7810935ddf5_r.jpg&&&/figure&&br&混合信号芯片设计流程:&br&&br&传统上混合信号芯片设计有两大方式:AoT和DoT。以模拟设计为主而集成少量到中等数量的数字逻辑时(即俗称的Big A,Little D——A/d),使用schematic驱动的AoT方式流程。以数字设计为主而引进模拟/混合信号IP时(即俗称的Big D,Little A——D/a),使用netlist驱动的DoT方式流程。&br&&figure&&img src=&https://pic3.zhimg.com/v2-13f903d7b97a64ab62a2042b05efdc30_b.jpg& data-rawwidth=&600& data-rawheight=&662& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-13f903d7b97a64ab62a2042b05efdc30_r.jpg&&&/figure&&br&Cadence针对混合信号芯片设计引进了一种先进的联合设计(Co-Design)方式:MSoT,通过OpenAccess(OA)数据库将Virtuoso平台与Innovus平台对接在一起,帮助模拟设计团队和数字设计团队有效地实现复杂的混合信号芯片设计。&/p&&p&&figure&&img src=&https://pic4.zhimg.com/v2-4857dcbe586f09510becfe8c7a898171_b.jpg& data-rawwidth=&600& data-rawheight=&398& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-4857dcbe586f09510becfe8c7a898171_r.jpg&&&/figure&其他EDA厂商都在模仿Cadence这种思路,但它们的EDA产品都还没有达到Cadence在混合信号芯片设计EDA市场上的所拥有的程度。&br&&br&&b&Functional Verification数字芯片设计的功能验证&/b&&br&&br&&b&Indago Debug Platform. INDAGO 2016.11&/b& (INDAGOMAIN_Base)&br&Indago排错调式平台从Cadence工具运行的logs中挖掘数据,将大数据捕获加入到根源分析中,以突出产生原先出错的因果关系和相关性。其理念是挖掘数据以尽量少做重复仿真。其竞争对手是市场领先的Synopsys的Verdi3。Indago用户包括IBM、HP、博通、英特尔、LSI、高通、Marvell、三星、日立等。&br&&br&&b&JasperGold Apps: JASPERGOLD 16.0&/b& (JASPERGOLD16.12.000-INCISIVE1520_Base)&br&JasperGold是形式验证工具市场上占据支配地位的明星产品,在第三方用户调查中被评为形式验证工具的第一名:“JasperGold是所有形式验证工具(包括Cadence的IFV、Synopsys的VCS Formal和Mentor Graphics的Questa Formal等)中具备最佳运行时间和容量的一个”,“JasperGold的Visualize debug是同类中之最”....。JasperGold现在有13个应用Apps。JasperGold 2016版比JasperGold 2015版在性能上又有了很大的提升。JasperGold用户包括高通、德州仪器、博通、Marvell、ADI、英伟达、意法半导体、三星、索尼等知名企业。这工具原自Cadence于2014年收购进的Jasper Design Automation。Jasper的CEO为Kathryn Kranen,是EDA业界的一个传奇女性。她两次领导两个EDA创业企业取得成功,将新型验证技术引入EDA产业界,一次是Verisity, Ltd的验证自动化方案,包括Specman Elite testbench,另一个就是这个Jasper的形式验证的先驱技术。而且最后这两家公司都被Cadence收购了。&br&&br&&b&Metric-Driven Verification: MDV 20161.11&/b& (MDVMAIN_Hotfix)&br&这个工具是原来Incisive中的验证规划和管理工具vManager和IMC,现在独立出来单独发行。&br&&br&&b&RocketSim Parallel Simulation Engine: RockSim 16.1&/b& (ROCKSIM02.00.021_Update)&br&这是Cadence去年(2016)收购的以色列创业企业Rocketick的新型验证仿真加速引擎,以色列的这伙EDA研发人员花了9年时间搞出了这个多线程并行仿真工具。这是当前Verilog RTL仿真器市场上领先的明星产品。它的benchmark基准测试比Cadence的Incisive、Synopsys的VCS以及Mentor Graphics的Questa快了23倍。能够做门仿真和RTL仿真。能在2小时内编译10亿个门。全System Verilog并加速SVA。RocketSim通过PLI接口接入Cadence的Incisive、Synopsys的VCS以及Mentor Graphics的Questa进行验证仿真。&br&&br&本来在Cadence、Synopsys和Mentor Graphics内部也都有多线程并行研发项目超过6年以上,但它们都没有鼓捣出什么结果。唯一另一个工具是Mentor Graphics于2013年收购了Axiom,但也没有奏效,Axiom只在某些设计上有用,其他设计都于太多事件而被压垮了。所以Cadence最后索性收购了这家以色列EDA公司,将这RocketSim超级仿真加速器纳入自己的囊中。而Synopsys则还在继续搞它的Cheetah VCS,但按照它自己的估计也还要2年以上才能搞出来。而且这Cheetah VCS还要用Nvidia英伟达的GPU特殊硬件,而不是像RocketSim那样使用x86_64的通用CPU,这对许多用户应用来说也是个妨碍。&br&&br&逻辑仿真已经经过了两代:第一代是演绎仿真(interpreted simulation),第二代是编译仿真(compiled simulation)。现在到了第三代:并行仿真(parallel simulation)。而Rocketick就是在并行仿真上突破了关键技术。&br&&figure&&img src=&https://pic4.zhimg.com/v2-429fed20869bcf3b4ff9aee4_b.jpg& data-rawwidth=&600& data-rawheight=&361& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic4.zhimg.com/v2-429fed20869bcf3b4ff9aee4_r.jpg&&&/figure&&br&&b&Verification IP: VIPCAT 11.3&/b& (VIPCAT11.30.045_Update)&br&验证使用的各种IP,包括收购的Denali的VIP,收购的Verisity的Specman &e& VIP。VIP包括AMBA 5 CHI,eMMC 5.0,HDMI 2.0,LPDDR4,MIPI C-PHY,MIPI CSI-3,MIPI SoundWire,Mobile PCI Express,PCI Express Gen 4,USB SuperSpeed Inter-Chip,Wide I/O 2,Ethernet 25G/50G,HBM,HMC,MIPI DSI-2,WiFi MAC。VIPCAT用户包括高通、博通、HP、IBM、英特尔、LSI、Marvell、三星、日立等企业。其竞争对手Mentor Graphics的Questa Verification IP在用户调查中处于遥遥领先地位。&br&&br&&b&Xcelium Verification Platform: XCELIUM 2016.11&/b& (XCELIUMMAIN_Base)&br&这是Cadence将Incisive的C原码与RocketSim的C原码整合起来重新编写成为GNU C++的全新版验证平台,用来替代原来的Incisive验证平台。这个全新版验证平台由于具备了RocketSim上面所介绍的验证加速特性,验证性能有了飞跃性进步。现在5千万门(Little Boy小孩级别)可综合System Verilog RTL的设计,Xcelium在8核Linux机器上运行比Incisive在单核Linux机器上运行快4倍。而对于4亿门(Fat Man胖子级别)的设计,Xcelium在6核机器上运行要比Incisive快9.3倍。也就是说,具备测试台激励最大活跃度的设计的规模越大,Xcelium的加速性能也越大。当4亿门胖子做高活跃度DFT(Design For Test可测试设计)门级仿真时,Xcelium要快30倍!此外由于集成为一体,所以RocketSim在Xcelium中绕过了原先Incisive需要PLI接入这个瓶颈。&br&&br&Incisive的各个程序指令在当前Xcelium版本中还能兼容继续使用,但在未来Xcelium升级版中将逐步被淘汰。Xcelium(以及Indago和MDV)现在分为Main Release主发布版和Agile Release灵活发布版。Agile版每月或更短时间进行升级以更快地改进工具(bug fixings等),而Main主发布版则要更长时间升级。&br&&br&数字芯片设计及验证流程:&br&&figure&&img src=&https://pic1.zhimg.com/v2-31aae8fd4b8d816bb12a344_b.jpg& data-rawwidth=&695& data-rawheight=&426& class=&origin_image zh-lightbox-thumb& width=&695& data-original=&https://pic1.zhimg.com/v2-31aae8fd4b8d816bb12a344_r.jpg&&&/figure&&br&Cadence的数字系统验证开发组合套件功能分布图,这里图示了个各部分功能所使用的工具。例如仿真工具包括了Incisive(现在为Xcelium),RocektSim,Specman这些仿真工具,而形式与静态验证工具则包括了JasperGold,IFV(Incisive Formal Verification),IEV(Incisive Enterprise Verifier)这些验证工具,等等:&br&&figure&&img src=&https://pic3.zhimg.com/v2-bd04bbdfd086cfb_b.jpg& data-rawwidth=&622& data-rawheight=&430& class=&origin_image zh-lightbox-thumb& width=&622& data-original=&https://pic3.zhimg.com/v2-bd04bbdfd086cfb_r.jpg&&&/figure&&br&&b&Silicon-Package-Board Co-Design芯片-封装-电路板联合设计&/b&&br&&br&&b&Allegro ECAD-MCAD Library Creator: SPBS 17.2&/b& (SPBS17.21.000_Base)&br&ECAD-MCAD(电子CAD-机械CAD)单元库的制作工具,用于ECAD-MCAD联合设计。&br&&br&&b&Allegro Sigrity: SIGRITY 2017&/b& (SIG17.00.000_Base)&br&Allegro信号完整性/电源完整性(SI/PI)工具,是高速PCB电路板和IC集成电路封装的分析工具,对芯片/封装/电路板进行信号和电源完整性进行分析。这工具原自Cadence收购的Sigrity。&br&&br&&b&OpenPOWER Compliance Kits in Sigrity2017:&/b& (SIG17.00.000-MODEL_OpenPOWER_Library)&br&这是Sigrity的Model Library中的分离出来单独包装的(因为其超过1.2GB),安装只需将其直接放进Sigrity的Library目录。&br&&br&&b&Silicon-Package-Board Co-Design: SPB 17.2&/b& (SPB17.20.009_Hotfix)&br&正如名称所示,SPB是芯片/封装/电路板的联合设计工具套件,而不仅仅是Allegro PCB电路板的设计工具。许多人将这个工具仅作为PCB电路板设计工具,只用到了其中的一部分功能。例如芯片设计企业可以利用其中的封装设计工具SiP(System in Package)将不同材料或不同工艺制程的芯片封装成为一个芯片。比如说将不同材料设计的射频芯片(例如高性能GaN材料设计的功率放大器PA)与CMOS数字芯片封装成一个芯片。&br&SPB的OrbitIO工具:芯片/封装/电路板通过OrbitIO互联设计工具进行联合设计。&br&&figure&&img src=&https://pic4.zhimg.com/v2-9cf095c3b4aca1dd003c28_b.jpg& data-rawwidth=&450& data-rawheight=&190& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&https://pic4.zhimg.com/v2-9cf095c3b4aca1dd003c28_r.jpg&&&/figure&&br&&b&Verification Accelerator and Emulator验证加速器及模拟器&/b&&br&&br&&b&Memory Model Portfolio: MMP 16.1&/b& (MMP16.10.000_Base)&br&&b&Palladium Applications: PDAPP 16.1&/b& (PDAPP16.10.000_Base)&br&&b&Protium Rapid Prototyping Platform. Protium 16.1&/b& (PTM16.10.000_Base)&br&&b&Palladium XP (Unified Xccelerator Emulator): UXE 15.1&/b& (UXE15.10.000_Base)&br&&b&Palladium Z1 (Verification Xccelerator Emulator): VXE 16.1&/b& (VXE16.10.000_Base)&br&此大类EDA是Cadence针对Incisive验证的硬件加速系统,用户需要购买Cadence的Palladium硬件加速系统,分别是Palladium XP系统和Palladium Z1系统,以及FPGA原型开发卡用于上面列出的Protium快速原型开发平台。整个系统相当于Cadence特制的服务器系统,对于大多数中小芯片设计企业来说其成本过于高昂,不值得投资,故在此不做更多介绍。&br&&br&再来说一下EDA工具培训。EDA工具的培训对芯片设计企业来说是非常重要的一环,许多中小型企业往往忽视对设计人员做必要的EDA工具培训,让设计人员即刻上岗从事芯片等设计工作。这往往会与企业预期相反,造成设计项目的延误等事倍功半的反效果,形成投入产出的损失。EDA工具培训的最佳手段是使用EDA厂商原始官方的全套培训素材,例如EDA厂商的培训视频、培训实验课件RAKs(Rapid Adoption Kits)等,如此能加快受培训人员对EDA工具的融入和掌握,提升设计效率。毕竟EDA原本就是为了提升设计的效率而产生和发展的。此外Cadence还提供其专有的SKILL程序的各种scripts供用户在其各种EDA工具中使用。&br&&br&最后声明:这里不接受任何个人关于EDA的咨询请求。若企业或研究机构特别是中小型设计创业企业startups需要EDA技术咨询,请私信留言并提供官方电邮联系方式。所有需要咨询的企业或机构必须是在中国大陆注册和可查证的。境外企业或机构及代理请不要请求咨询,我们会一一排查。&/p&
本篇对2017年初版Cadence的全套所有EDA工具的技术特性特点做一深入的分析,并与EDA其它主流厂商的对应工具进行比较。也为在校学习集成电路设计的学生们做一简单的科普,因为在学校学到的东西与在商业上做实际芯片设计是有很大区别的。 先来回答一个在国内经…
&figure&&img src=&ht

我要回帖

更多关于 蓝牙串口模块推荐 的文章

 

随机推荐