0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

谈谈芯片中的层次化的设计(hierarchy design)

sanyue7758 来源:艾思后端实现 2023-10-18 16:09 次阅读

层次化设计适当下非常流行的设计思路,随着芯片的规模越来越大,fullchip的数据量和复杂度和过去已经不能同日而语了,无论是工具的runtime还是QoR,直接完成full-chip的工作越来越不现实。所以,在这里,就需要引入 层次化的设计(hierarchy design) 的概念,

从芯片的规划开始,层次化的理念贯穿整个设计流程,下面的各个设计方面都会受到不同程度的影响

RTL
UPF
verification
DFT
Timing constraint
synthesis
EC
layout
STA
stream-out
layout verification
Power analysis

一个项目的开始,需要根据实际的需要确定层次,这主要是基于模块功能规模,一起来看下面这个实例

wKgZomUvkseAKKElAADh8YzDQ7A180.jpg

wKgaomUvkviAGMxFAACjLVunxHA960.jpg

可以看出,从整个SOC的设计当中,主要的partition分割是两种,top和none-top。理论上讲,所有的none-top,互相之间都没有依赖关系(dependency),除非它本身也是一个小top,具体可见下面的示例:

1fda3a0e-6d8d-11ee-939d-92fbcf53809c.jpg

这里的top和sub-top_1就是所谓的hierarchy design,在一个芯片里边,top通常只有一个,但是可能会有多个sub-top,甚至是sub-sub-top,这取决于芯片层次化的深度和芯片的复杂度。可以预见,层次化越多,单个partition的复杂度会降低,但是给top的partition划分带来了更多的工作量,譬如

UPF
SDC
physical partition boundary

还有一个影响就是dependency,所有的sub-top,都和top一样,在后端实现的时候(synthesis/layout),任何的top的后端工作,都需要sub partition的支持,譬如上图,要想开始sub-top1的synthesis,就必须先要完成 sub_par_1_1,sub_par_1_2,sub_par_1_3的综合工作。

这就是runtime的瓶颈。实际项目中,为了减少这方面的影响,通常都会有一些变通的手段,来快速支持顶层设计,这个小技巧的具体细节,也会在本系列文章里边提及。

业界里边还有一种更为前卫的partition的设计,被称为abut-partition的设计,简单的讲就是没有top的概念,所有的partition都是完全贴合的,譬如下面这个floorplan的partition的框图

1fe04d36-6d8d-11ee-939d-92fbcf53809c.png

这种架构更为简练,所有的设计全部都推到了partition,从物理实现上来讲,top level已经不包含任何的leaf cell,所有的存在就是一些连线关系、PG、terminal以及co-design routing了,这种极简的abut设计有其优越性,也有一些限制。

一个完整的层次化设计,在代码设计阶段,就应该树立层次化的理念。这里边主要由以下几个考量

简化大规模设计的必经之路
后端实现的真实需求
验证和设计的一致性
相关配套、支持文件的参照点(SDC、UPF等等)

从架构入手,合理分布RTL的层次结构,让整个设计看起来张弛有道。这个思路体现如下

1fee0eee-6d8d-11ee-939d-92fbcf53809c.gif

前端设计人员按照下面的思路过程来设计代码

完成inst1的模块代码设计

完成inst1的内部连线

完成inst2的模块代码设计

完成inst2的内部连线

完成top-level的模块代码设计

完成top-level的连线

可以看到,这里边涉及了三个部分的设计

inst1

inst2

top-level

通常来讲,合理的分配各个模块可以加速full-chip的收敛。从上面的例子可以看出,top-level的东西比较简单,只有一个控制逻辑和PAD,主要的功能都在子模块里边,这样的好处是非常明显的

子模块的实际内容多,但是总体规模不会很大,综合和版图的可控性会很好

相互关联密切的功能IP封装在一个模块里,有利于时序收敛和后端工具优化

top-level的主要用途就是穿线,以及中心控制和PAD等等,有利于整体功能布局的规划,主要精力要放到interface的时序上,以及可绕通性。

每一个模块都有一套自己独立的文件结构,譬如inst1对应的是design1,整个design1的文件架构类似如下:

1ff7e996-6d8d-11ee-939d-92fbcf53809c.png

有了这些文件,design1的综合就可以开始了。综合的流程通常比较简单,这里不做过多的讨论,基本流程可以参见下面的列表

HDL analysis 和 elaboration

read_sdc和read_upf 以及一些基础配置

运行compile_ultra和DFT insertion

创建Block Abstraction view

生成DDC和网表

重要的第四步时一定要执行的,这里生成了后面层次化设计的重要信息

对应的,这里也列一下inst2(design2)的文件目录结构

1ffedd00-6d8d-11ee-939d-92fbcf53809c.jpg

使用综合器,分别可以得到下面的文件

design1.ddc 和 design1.v

design2.ddc 和 design1.v

基于不同的DCT/DCG环境,可以开始根植于如下目录结构的顶层综合

20056d32-6d8d-11ee-939d-92fbcf53809c.png

顶层综合的思路会有一些不同,具体流程如下

配置block implementation的状态

读入底层带有Block Abstraction的DDC(不要读入子模块netlist,会导致非常多的困惑),工具回显如下例

200b4cde-6d8d-11ee-939d-92fbcf53809c.png

HDL analysis 只分析top-level的verilog,譬如:top_ctrl_design.v、PAD_design.v 、designFC.v

elaboration的时候,一定要注意一下子模块的链接状态,保证模块信息都可以被正确挂载进来

在保证link无误的情况下,读入designFC.sdc和designFC.upf,运行compile_ultra和DFT insertion

生成DDC和网表,完成top-level的综合

对应的,在做层次化的设计的时候, 需要注意下面的事项:

调用底层模块的时候,一定要使用带有block Abstraction的DDC,DDC里边包含了block的

时序约束信息

UPF信息

时钟结构信息

边界时序信息

top-level的UPF只有顶层的low power需求

顶层的LS、ISOLATION的需求,如果被约束的cell在顶层

顶层和block的PG连接关系

top-level的SDC包含了整个top-level和block-level的时序约束

顶层的SDC一定要和block的SDC,在block级别呈现出高度的一致性,譬如纯粹block 内部的MCP、false path等等

如果时钟的源头在顶层,block级别的clock无需二次声明,譬如下面示例

20118c66-6d8d-11ee-939d-92fbcf53809c.png

在design1/desing2综合的时候,分别在各自的sdc里边定义pclk,如果把视角放到顶层,那么画风是这样的

201701b4-6d8d-11ee-939d-92fbcf53809c.png

可以看到,从toplevel来看的话,以前的design1/design2的pclk,其实都是从top-level的pll驱动的,在top-level构建SDC的时候,只需要生命pll的clock就可以了(Pll_clk),剩下的就交给工具自动衍生。

写到这里,相信读者们对层次化设计流程有一个比较具体的了解了。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DDR
    DDR
    +关注

    关注

    9

    文章

    677

    浏览量

    64255
  • 芯片设计
    +关注

    关注

    15

    文章

    897

    浏览量

    54419
  • SoC芯片
    +关注

    关注

    1

    文章

    534

    浏览量

    34478
  • PHY
    PHY
    +关注

    关注

    2

    文章

    265

    浏览量

    51008
  • SDC
    SDC
    +关注

    关注

    0

    文章

    47

    浏览量

    15302

原文标题:芯片中的层次化的设计(hierarchy design)

文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用层次式电路时,发现Descend Hierarchy是灰色的,不可选

    使用层次式电路时,发现Descend Hierarchy是灰色的,不可选,但是我的Implementation是设置过的,Descend Hierarchy还是灰色的,这是为什么啊?求高手解答
    发表于 11-15 17:00

    【AD问答 11】 怎么创建层次的原理图形式

    本帖最后由 cooldog123pp 于 2020-3-30 14:27 编辑 随着电路的日益复杂,电路的设计方法也是趋向层次结构(Hierarchy)设计者可以先分别绘制及处理还每个子电路
    发表于 03-13 11:13

    层次式电路设计与平坦式电路设计的区别

    层次式电路设计(Hierarchical Design):通常是在设计比较复杂的电路和系统时采用的一种自上而下的电路设计方法,即首先在一张图纸上设计电路总体框图,然后再在另外层次图纸上设计每个框图
    发表于 08-20 09:54

    “按层次结构使用”中的LUT数量不正确

    嗨,我正在使用“-detail”选项进行MAP,并在MAP结束时获得“按层次结构使用”报告。在本报告中,顶层模块“ref_design_v5lxt250_x1”的LUT数量为24953!|模块|分区
    发表于 10-09 15:29

    映射报告怎么按层次结构使用

    。在“按层次结构使用”一章中列出了一些功能块,但并非全部。使用硬件的总和也与工作表顶部的摘要不同。 (例如,根据摘要,使用了8个乘数,但我在详细列表中找不到任何使用过的乘数)。是否有选项显示所有
    发表于 10-15 11:50

    包含层次结构窗口完全空白

    您好,我使用MPLAB X IDE V4.15i已经打开了一个具有相当复杂层次的包含文件的项目。它没有错误地构建。当我查看包含层次结构窗口时,如帮助文件中所描述的,窗口打开,但它是完全空白的。这发生
    发表于 10-18 15:55

    FPGA编辑器中的块层次结构不正确

    亲爱的大家我的设计有一个静态部分和两个部分可重配置模块。在FPGA编辑器中,我找到了一个空置站点并在那里添加了一个组件,然后将该组件连接到部分模块的网络,但是我收到了以下错误: - 块层次结构不正确
    发表于 11-09 11:36

    在Vivado 2015.2块设计上打开子层次结构弹出一个新的Block Design窗口

    假设我在Vivado 2015.2的Block Design中有三层设计。此块设计看起来像Hierarchy_0(Hierarchy_1(Hierarchy_2))。当我双击
    发表于 12-25 10:58

    层次结构设计是否意味着将一个大模块分成几个子模块?

    ;hierarchy design", which makes me a little confused. I have following questions;1. Does
    发表于 03-21 12:42

    怎么在Cadence中实现层次设计

    。很欣赏Altium安装目录下给的例子,层次设计十分美观大方。比如这样:搜索了很久,没有搜索到满意的回答,关于怎么在Cadence中实现层次设计。然后花了一天摸索,并总结如下:..
    发表于 11-12 08:55

    Parametric_Hierarchy

    Parametric Hierarchy,好东西,喜欢的朋友可以下载来学习。
    发表于 02-18 16:34 0次下载

    芯片中的CP测试是什么

    芯片中的CP一般指的是CP测试,也就是晶圆测试(Chip Probing)。
    的头像 发表于 07-12 17:00 1.4w次阅读
    <b class='flag-5'>芯片中</b>的CP测试是什么

    金在芯片中有什么用途呢?金在芯片中的应用和优势介绍

    本文主要探讨了金在芯片中的广泛应用领域。随着科技的发展,金作为一种优质的导电材料,在芯片产业中发挥着重要作用。
    的头像 发表于 12-22 10:54 466次阅读

    存储器层次结构如何解释?

    存储器层次结构可以从图片中清晰的看出来,图片中共分为六级,越向上的层次,存储器速度越快,容量更小,造价越高。
    的头像 发表于 02-19 14:03 503次阅读
    存储器<b class='flag-5'>层次</b>结构如何解释?

    OpenAI新研究:指令层次结构防御LLM攻击策略

    为了解决这个问题,这篇研究提出了一种指令层次结构(instruction hierarchy)。它明确定义了不同指令的优先级,以及当不同优先级的指令发生冲突时,LLM应该如何表现。
    发表于 04-28 10:41 29次阅读
    OpenAI新研究:指令<b class='flag-5'>层次</b>结构防御LLM攻击策略