• 注册
  • 查看作者
  • 教你彻底搞懂ARM Cortex-A75 CPU的数字后端实现报告

    下图为ARM公司release的Cortex-A75 CPU 数字后端实现报告。今天吾爱IC社区的小编将从数字后端设计实现的角度,带领各位彻底看懂这份报告。

    第一行为RTL集成配置的信息部分。设计中使用了一级缓存DCache 64KB,一级缓存Icache 64KB,二级缓存大小为256KB,并集成了Crypto加密模块,NEON和浮点运算单元FP。一般情况下,一级缓存放置在cpu core中,二级缓存放置在Non-Cpu模块中。在Non-CPU模块中,有个非常大的模块,它被称之为SCU(Snooping Control Unit)。

    这些配置直接影响了最后芯片实现的面积大小。在满足设计要求的同时需要尽量减少一级二级缓存的大小,这样可以显著减少芯片的面积。该图中的数据是ARM公司为了推广他们的处理器,简单做一个数字后端实现的数据报告,所以在16nm工艺及以下的实际应用场景中,L1和L2的大小可能远远大于图中所列的数值。

    第二行为数字后端实现后的频率,3.1GHz @TT/1.00v/85c/typical。这一项简明扼要指出这款cpu在TT85度,电压为1.0v条件下(某个特定PVT),芯片可以最高跑到3.1GHz的频率。为何要选用TT85c这个corner呢?频率可以跑得更高,可以用来吹牛,推广市场呗!实际项目中虽然也checktt85c下的setup,但往往仅仅用来分析power,并不是需要timing signoff的corner。

    我们知道,在一个晶圆wafer上,不可能每个点的电子漂移速度都一样,而电压,温度不同,它们的特性也会不同,我们把它们分类,就有了PVT(Process, Voltage, Temperature)。下图为摘自静态时序分析(STA)红宝书的一个图表,(a)图原书存在错误,小编已经用红色标注出来了。

    第三行为A75 core的功耗信息部分。前面那部分为静态漏电功耗leakage,大小为70mw。后面那部分为动态功耗(Dynamic Power),大小为270mw/GHz。其实这样写功耗信息,个人觉得不够严谨。因为功耗分析时,需要指定工作场景,你所用的pattern是什么。

    通常情况,我们在分析CPU动态功耗的时候,采用两种常见的模式,一种是Dhrystone,另外一种是Max Power。Dhrystone是一个比较古老的跑分程序,基本上是在做字符串拷贝,比较容易被软件编译器和硬件优化。但是它有个好处,就是程序很小,数据量也少,可以只运行在一级缓存,这样二级缓存和其他电路只存在漏电。

    Max Power则是一个最大功耗模式,仿真时让大部分逻辑都处于高翻转状态,从而获得一个最高的工作功耗。这种模式显然会过于悲观,因为实际应用场景,很难出现这种场景。一般这种模式可以用来评估在做恶劣的情况下芯片的功耗大小。

    第四行为A75 CORE的面积信息部分,其大小为1.729mm2。这里需要指出的是,在28nm及以上工艺时,我们谈芯片面积时,务必指出面积大小为pre-shrinked或者为post-shrinked的。这一项的大小直接影响了芯片的成本,决定了芯片的市场竞争力。

    第五行为数字后端实现的工艺,本设计A75采用的是台积电TSMC16nm的工艺。TSMC16 nm又分为很多小节点,比如FFLL+,FFC等。如何选择一个适合自己公司产品的工艺节点非常关键,因为它涉及到芯片的性能,功耗,面积等方面的tradeoff。

    第六行和第七行指出本设计采用的是台积电TSMC16 nm 工艺, Metal Stack为11m_2xa1xd3xe2y2r_utrdl 9Track library(总共11层金属层)来进行数字后端实现的。Foundary在提供的design manual中都对所有的metal stack进行了详细的介绍,在采用一个新工艺节点时,各位数字后端工程师务必要认真查阅相关文档,比如design manual,design guidline或者implementation guidline。

    第八行指出在数字后端实现(P&R)时,设置的route layer范围,从M2到M9。那么最顶上的两层金属层用来干啥了呢?很显然用于规划我们的power。为何M1不能用于绕线呢?老铁们你们知道原因不?

    第九行为设计实现所用不同阈值 VT的library。

    第十行指出设计所采用的是channel length为16的c16 ulvt(Ultra Low Voltage Threshold)。这里需要指出的是采用ulvt虽然可以使得timing更好,跑得更快,但是会导致leakage特别大,需要谨慎使用。这里还指出这个A75 CORE的实现中使用了ARM的POP library。所谓的POP library就是指ARM为了满足部分客户高性能需求而定制的一套高速library。

    第十一行至第十二行指出设计实现选用了三种不同的VT,分别为ULVT,LVT,SVT。用来优化时序和功耗用了三种不同channel length的library cell。

    最后一行指出本设计采用的是单一电压,单独供电的情况。

    另外,根据小编多年与ARM打交道的经验来看,官方提供的数据并不一定是可靠的,所有的数据只能作为参考,而非比较的标准。这里简单指出以下几点。

     

    Design的margin

    比如PT signoff时,setup和hold的uncertainty,derate设置值分别是多少。这些值会直接影响到芯片的各项指标,如面积,性能,功耗等。

     

    Design的数据是否已经fix hold

    很多时候ARM在公布数据时,往往自己只做到PR阶段,并没有进行hold fix。试问这样的数据能用来做比较吗?

     

    Design是否routeable

    如果ARM公司发布的数据是基于一个存在很多Physical DRC,特别是很多short时,那么他们可能提供了一个很漂亮的数据,但是真正物理实现时可能很难做到。

     

    Design实现的物理条件

    ARM一般在做模块hardening时,往往都是选用最舒服,最易于实现的形状(boundary)来进行设计评估的。特别是CPU这种模块,形状的差异性可能能带来较大的性能差异。但是对于ARM公司来讲,他们也只能是做一个比较规整的形状,为客户提供一套标准的reference。这个我觉得倒是合理的。

    对于数字后端工程师来讲,每当实现一个模块时都需要做好各种数据的记录,整理和归纳,并以表格的形式保存下来。我相信大家做的实现数据报告一定会比今天展示的这个报告更为详尽,更为严谨。要能做到老板一看你的图表就知道design的实现情况。

    最后吾爱IC社区的小编想传达一个观点:在数据面前,数字后端工程师需要时刻保持一种怀疑的态度,同时还需要自己去不断实践。

     

    小编知识星球简介:

    在这里,目前已经规划并正着手做的事情:

    • ICC/ICC2 lab的编写
    • 基于ARM CPU的后端实现流程(已经发布)
    • 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)
    • 基于ARM 四核CPU  数字后端Hierarchical Flow 实现教程(准备中)
    • 时钟树结构分析
    • 低功耗设计实现
    • 定期在星球布置作业题(星球已经支持布置作业功能)

    在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在24小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。

    反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有五十四星球成员,感谢这五十四童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车)

     

  • 0
  • 5
  • 0
  • 367
  • 0
    已经加入星球看过了,提问里还是有很多干货... 没想到教程是A53的...这么高端的库是没有的,老师给用的还是90、130这种远古工艺库
  • 0
    如果你能够提供库,可以联系我。我的微信ID: ic-backend2018
  • 0
    OK~教研室有库,您是会提供代码,脚本讲解吗?
  • 0
    目前library不对外公布,因为涉及版权问题。脚本有的。 明年争取上线一个hierarchy的cpu实现实战。
  • 0
    请问知识星球中的“基于ARM CPU的后端实现流程”有对应的库和脚本吗?还是只有原理性的讲解。最近看完 student lab,想再深入的学一下
  • 单栏布局 侧栏位置: