罗风 · 2021年04月25日

金线之上的老专家 | Jason 哥

题记:Jason哥聪明且勤勉,踏实且干练。有人说行业可以决定个人的成就,有人说平台可以决定个人的发展,有人说工种可以限制个人的进步,这对于大部分人而言确实成立,但对出类拔萃者不成立。在这一点上Jason哥是我的榜样,他让我看到,只要你自己足够努力足够勤勉,你可以游刃有余地切换角色,并不会落入『世人』所认知的既定『模式』。Jason哥绝对是在金线之上的『老专家』,倾佩且仰慕。感谢Jason哥百忙之中,知无不言言无不尽的回答。

Floorplan:

要做好floorplan需要掌握哪些知识跟技能?

通常,遇到floorplan问题,大致的debug步骤跟方法有哪些?

如何衡量floorplan的QA?

Floorplan是后端实现中至关重要的一个步骤,记得在我刚接触后端这个工作的时候,我的后端设计导师就跟我说,要想把一个芯片的floorplan做的完美,除了需要有电子工程师的思想,还需要具备艺术家的眼光。

现在随着工艺节点的不断缩小,物理设计的Design rule也越来越复杂,给后端的floorplan 也带来了更多新的挑战,我认为要做好一个floorplan需要掌握下面这些知识跟技能:

  • 了解你所使用的这个工艺节点的基本的design rule。
  • 需要考虑hardmacro摆放的一些约束条件(譬如macro能否进行翻转,macro之间的最小间距要求)。如果macro某个方向有出pin,macro之间的间距要充分考虑到这些pin的绕线需求。macro之间的channel是否允许放std-cell。
  • 设计中是否有multi-voltage,如何去规划芯片中voltage area的位置,并且也要考虑在多电压设计中电源网络设计的规则。
  • 设计中对于一些特殊IP的摆放要求。
  • 如果是chip level的floorplan,需要清楚各种IOcell的使用方法,以及package方面的design rule。
  • 如果是block level的floorplan,需要知道block的port位置跟hard macro的一些相关性。
  • 尽可能详细的了解这个设计的Data Flow,对于Data flow的了解能够让后端设计工程师进一步优化macro的摆放位置。

一个好的floorplan从直观上来看,应该是充分考虑到std-cell的摆放区域尽量集中,尽量避免出现macro隔离std-cell摆放区域的情况。

Floorplan的大小也关系到整个芯片的成本,所以好的floorplan也是面积最优的floorplan,要合理的利用每一片空间。

从量化的指标来看,好的floorplan最终的结果肯定是PnR之后PPA最好,route DRC数目最少。

WeChat Image_20210425102016.jpg

Placement:

要做好placement需要掌握哪些知识跟技能?

通常,遇到placement问题,大致的debug步骤跟方法有哪些?

如何衡量placement的QA?

在placement阶段主要是围绕着timing, congestion 和power 这三个指标进行优化,需要掌握的知识跟技能,我觉得主要分为下面几个部分:

  • Tool:需要知道工具在placement优化方面的一些行为,知道这些行为之后,可以通过加一些constrain的方法去引导工具对PPA进一步优化。
  • Timing:根据placement优化的结果去进行分析,查看critical path的timing report,并对这些critical path进行归类(例如:不合理的constraint,layout上cell的摆放位置不合理,工具没有很好的优化,等等)。并针对不同类别的timing问题一一找到相应的解决方案:不合理的constraint——需要跟前端同事去查看SDC的问题;cell摆放位置不合理——需要分析DataFlow,调整floorplan或者加一些placement的constraint,例如move bound去引导工具对关键的module进行摆放;工具没有很好优化——是不是有些工具的设置需要调整。
  • Congestion:这个是placement阶段需要解决的一个重点问题,要想把congestion优化好,首先还是得对DataFlow有一定的了解,通过对DataFlow的了解去调整macro的摆放位置。另外,需要去分析congestion的hotspot,看看是否跟module里面的复杂逻辑有关系,是否需要考虑对复杂逻辑加keepout,和对这些hotspot区域的local density进行限制。
  • Power:对于设计中功耗的优化,取决于项目的一些指标,如果只是关心Leakage power,需要在placement进行不同Vth cell比例进行控制。如果是关心dynamic power,需要考虑是否要读取VCD的仿真文件进行placement优化。

对于衡量placement的QA,我觉得这很大程度上取决于这个design更关心Performance, Power, Area 中的哪项指标。当然Congestion肯定是第一位,placement阶段,我们需要根据以往项目经验预判出这个design在给定的面积下是否是route-able。Performance和Power通常是trade-off,我们需要根据项目关心的硬指标找到一个平衡点。

WeChat Image_20210425102033.jpg

CTS:

要做好CTS需要掌握哪些知识跟技能?

通常,遇到CTS问题,大致的debug步骤跟方法有哪些?

如何衡量CTS的QA?

Clock network是芯片的大动脉,没有一个高质量的时钟网络,是没有办法让这个芯片发挥它的正常性能的。在做CTS之前,我觉得首先需要能够回答得出来下面几个问题:

  • 这个设计中有多少个clock domain?每个clock domain下面分别驱动了多少Flip-flop?
  • 设计中的clock之间是否有关联?谁是master clock,谁是generate clock?是否需要对不同clock domain之间进行inter-clock balance?
  • Function clock跟Scan clock的关系如何?两者在什么地方开始有分支?
  • 设计中有哪些registers或者特殊IP在clock network上,但是不需要进行clock balance。
  • 是否有clock跨越不同的powerd omain,要进行特殊处理?

当在做CTS之前能够回答出上面这几点问题,我觉得基本上也就能了解这个design的时钟结构了。然后我们需要做的就是根据对工具的理解来对CTS进行一些约束,

  • 对clock network logic DRC进行约束(max-transition, max-fanout, max-capacitance).
  • 重要的clock需要设置Non-default-routing Rule,是否需要做clock net shielding来减少clock network的noise。
  • 对于clock network上,需要额外考虑的IP设置balance point,不需要进行balance的点设置ignore pin。
  • 对于一些高性能的design,为了达到更小的skew和latency需要考虑使用ClockMesh来进行实现。

对于CTS的QA,主要从下面几个指标来衡量:

  • clock skew:其中包含了减少global skew和减少local skew。
  • clock latency:clock的latency是否能够做到足够短。
  • clock CRPR:尽量多的能够让clock network share common path,这样有利于减少timing path的skew,提高性能和减少hold buffer数目。
  • clock tree power: 时钟网络对于整个芯片的动态功耗消耗占了很大一部分,clock tree上的power需要特别关注,并尽量减少。

WeChat Image_20210425102050.jpg

Route:

要做好Route需要掌握哪些知识跟技能?

通常,遇到Route问题,大致的debug步骤跟方法有哪些?

如何衡量Route的QA?

在布线环节我觉得需要掌握的知识跟技能是:

  • Timing:在先进工艺节点下,布线前跟布线后的时序肯定会有差异,我们需要具备对布线前后的时序路径进行分析的技能。并了解是由于哪些原因导致了布线后的时序变差(Detour,SI, route DRC etc.)。
  • Xtalk:如何在布线前对于Xtalk进行避免和预防,并在布线后对于Xtalk严重的net进行修复,也是很关键技能。
  • Route DRC的分析:对于布线后的routeDRC需要进行分析并归类,看看哪些是PG相关,那些跟floorplan相关,那些是由于IP的库文件不正确导致的。

对于Route的QA,我觉得主要是:RouteDRC数目足够少,布线后的时序能够收敛。

WeChat Image_20210425102103.jpg

DRC:

要做好DRC需要掌握哪些知识跟技能?

通常,遇到DRC问题,大致的debug步骤跟方法有哪些?

如何衡量DRC的QA?

DRC的分析和解决,需要掌握的技能肯定是首先需要能够读懂Foundary提供的Design Rule Manual,其中DRC rule包含了base layer,metal layer,metal density 等等。

拿到物理验证的DRC report,能够对照着layout对这些DRC进行归类总结:macro相关的需要检查是否IP接口和IP GDS相关问题,base layer DRC要检查是否由floorplan引起,PG相关的是否是PG shape不符合DRC的要求。

现在项目的周期都比较短,工艺节点的DRC又相对越来越复杂,为了避免由于Floorplan摆放不正确和PG shape不符合要求,通常都会建议做完Floorplan之后进行一个DRC check,确保这个版本的floorplan和PG shape在DRC上是满足要求的。

衡量DRC的QA,肯定是DRC的数量越少越好。

作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/PBLfxKjGWb9on3GT4ZpD0g
作者微信公众号
捕获.PNG

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
20186
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息