当前位置: 首页 > news >正文

数字IC后端层次化Hierarchical Flow子系统Sub-System模块 block partition和pin assignment细节盘点

今天通过一个学员典型问题来解析下子系统Sub-System在做block partition,pin assignment和powerplan时应该注意的细节问题。

老师,我的问题是a7top的模块的partition和pin assignment是怎么做的,我了解过a7core的floorplan可以根据data flow或者arm官方推荐的floorplan进行摆放,但是我不太了解a7top的floorplan应该去怎么做,他也会有一个data flow可以参考吗?partition模块的大小的话可以通过钉钉上的面积估算公式去确定,我不太清楚top的partition需要从哪些方面去考虑?在pin assignment的时候要遵循min area的规则设置pin的长度和宽度,但是对于出pin 的层数不是很清楚要从哪些方面考虑?

数字IC设计实现之hierarchical flow系列(一)

首先,我们来看下华为海思麒麟这颗芯片的整体floorplan。其中整个GPU子系统位于芯片的左下角,而且它的整体形状其实也不是很规整的形状。之所以没那么规整的主要原因是它的边上还有其他模块和IP。

这个形状是芯片顶层owner来划分的,每个人切出来的形状都会不太一样,最终只要确保整体拼起来时序和物理上都是没问题的就可以。

在这里插入图片描述

整个GPU子系统的出pin 如下图红色所示。顶层实现负责人做完形状切分和出pin后就会release这个形状和出pin的floorplan def给到GPU子系统的负责人。

在这里插入图片描述

而我们知道这个GPU子系统里面还包含12个core和一个GPU shared logic逻辑。由于种种原因在物理设计实现时需要把12个core划分成如下情况:

1)左侧6个相同的core (只需要做一个模块core的harden,重复调用6次即可)

2)右上3个相同的core (只需要做一个模块core的harden,重复调用3次即可)

3)右下3个相同的core (这三个可以使用上面右上那个core的实现结果直接调用,也可以单独做一个模块core的harden,因为右下这3个core可能有low power需求,可能需要添加power switch cell)

这16个cpu做完后就可以在顶层直接例化调用,顶层的逻辑部分其实就是图中标注的GPU Shared Logic。

每个需要单独做harden的模块都需要在GPU 顶层规划好它们的形状和出pin。这时候GPU子系统负责人就会根据前面芯片顶层release的floorplan def来做当前子系统中的各个子模块的切分和出 pin。

回到我们社区低功耗四核A7 TOP Hierarchical Flow的项目,它的实现方式跟这个是一模一样的。

在这里插入图片描述

在这里插入图片描述

首先我们读取芯片顶层release的floorplan def,形状如下图所示。

在这里插入图片描述

有了这个形状后,我们就要开始切下面的子模块A7 TOP,我们特地挖出一个空间留给A7TOP_Wrapper。所以下图中的白色框框区域为A7 TOP的最终形状。

在这里插入图片描述

当然在切分的时候需要大概估算下A7TOP_Wrapper层需要的面积。这个面积的估算完全可以参照咱们钉钉上那份面积估算教程。

A7 Top形状有了后还需要给它摆放好IO port,具体给子模块partition摆放io port的操作如下图所示。

在这里插入图片描述

需要说明的是这个io port到底出在哪一层理论上都是可以的,只要后续绕线没问题就可以。当然还是要遵守这个工艺metal stack下的金属优先走线方向。

比如我们T28nm 工艺,这里的io port出的terminal必须是横向出pin,所以用来出这些io port的metal layer可以是M2,M4,M6(如果Power Rail用的是M1和M2 dual power rail,这里的出pin不要使用M2。因为很容易有short和drc violation)!

在这里插入图片描述

这里需要注意的是摆放io port的时候需要确保io port terminal的metal面积要满足工艺要求的最小面积min area的要求,即depth*width的数值要大于这层metal的最小面积要求(否则后续这根线不连的话会有min area的drc violation)。

在这里插入图片描述

这个A7 TOP做完模块partition和pin assignment后,直接写出当前这个形状和出pin的a7 top floorplan def即可。

有了这个a7 top floorplan def后,我们可以开始切子模块cortexa7core。在这一层我们需要提前知道子模块cortexa7core的大概需要面积,然后根据A7TOP这层的data flow把相应的memory摆放好,确保4个cpu子模块和所有的memory都可以完全摆放得下。这个过程需要不断迭代直到调出一个自己满意的floorplan。

在这里插入图片描述

子模块切分的形状可以自己根据子模块实现难度自己调整形状。它的出pin位置和出pin的layer理论上也都可以子系统自己定,但由于四个cpu core之间的交互是通过一个共同的module SCU的,所以这四个cpu core的出pin尽量出在一起!

以下图咱们学员切出来的floorplan图,我们知道这时候我们需要给子模块cpu core出纵向的io terminal,所以它可以使用M3,M5来出pin(M7线宽和线间距太大,一般情况不用)。

在这里插入图片描述

在这里插入图片描述

在面试的时候经常还会问到子系统是如何规划整体的powerplan的。以咱们社区低功耗四核A7Top 1P7M这层为例。子模块cpu core powerplan用到的最高层是M7,子模块直接尽量把PG对齐连通,比如上下两个cpu的M7尽量连通形成一个整体。

A7TOP这层调用四个cpu core后,我们会使用AP这一层去跟各个子模块cpu core的M7打孔形成一个power mesh(此时A7TOP顶层只需要管Global VDD和VSS,VDD_LOCAL是不需要连接的)。

在这里插入图片描述

最后再留一个面试题:

子系统Sub-System在做模块partition时你是如何规划ESD Clamp Cell和TCD Cell的?又是通过什么样的方式把这些要求release给各个子模块owner呢?

在这里插入图片描述

在这里插入图片描述

http://www.dtcms.com/a/326543.html

相关文章:

  • C++算法(数据结构)版
  • 《深度解构:React与Redux构建复杂表单的底层逻辑与实践》
  • 【软考架构】需求工程中,系统分析与设计的结构化方法
  • JavaEE 初阶第十七期:文件 IO 的 “管道艺术”(下)
  • C++11范围for循环:高效遍历新方式
  • Django ORM查询技巧全解析
  • 【LLM】OpenAI开源GPT级模型,120B及20B参数GPT-OSS
  • 如何在 Ubuntu 24.04 LTS Linux 上安装和使用 Flatpak
  • Oracle自动采集AWR Gets TOP SQL脚本
  • Spring Cloud 过滤器工厂
  • Go选手如何快速上手第三方库
  • 机器视觉的PCB板对位印刷加工应用
  • python—day1
  • U-Boot常用命令完全指南
  • 线程的同步与互斥
  • 基于深度学习的异常检测算法在时间序列数据中的应用
  • QT QProcess + xcopy 实现文件拷贝
  • AcWing 6479. 点格棋
  • 数据结构-排序(2)
  • 嵌入式 - Linux软件编程:标准IO
  • 文件夹生成器,一键批量生成,效率提升!
  • 1.Apollo Planning 模块总结
  • 一键生成AI视频!Spring Cloud微服务架构的AgentAlVideo平台开源啦!
  • 内存问题排查工具ASan初探
  • 【liunx】web高可用---nginx
  • AR 智能眼镜:从入门到未来
  • DDIA第五章:复制
  • PCB批量线路板厂家有哪些?
  • LAMPLNMP 最佳实践
  • Ubuntu 22.04 离线环境下 Python 包与 FFmpeg 安装全攻略​