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
    +关注

    关注

    11

    文章

    707

    浏览量

    65201
  • 芯片设计
    +关注

    关注

    15

    文章

    997

    浏览量

    54788
  • SoC芯片
    +关注

    关注

    1

    文章

    608

    浏览量

    34858
  • PHY
    PHY
    +关注

    关注

    2

    文章

    301

    浏览量

    51673
  • SDC
    SDC
    +关注

    关注

    0

    文章

    48

    浏览量

    15522

原文标题:芯片中的层次化的设计(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

    Parametric_Hierarchy

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

    层次设计方法讲解

      层次设计是指在一个大型设计任务中,将目标层分解,在各个层次上进行设计的方法。
    的头像 发表于 11-19 07:08 5644次阅读

    谈谈汽车芯片安全(下篇)

    继《谈谈汽车芯片安全-上篇》之后,本文针对芯片安全存储、FOTA、安全诊断、安全运行环境做了进一步阐述。1.安全存储1.1 OTP存储器一次性可编程存储器(On Chip One Time
    发表于 12-09 15:06 13次下载
    <b class='flag-5'>谈谈</b>汽车<b class='flag-5'>芯片</b>安全(下篇)

    芯片中的CP测试是什么

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

    芯片设计复杂性处理之层次结构概念分析

     考虑当今使用的层次结构形式的最简单方法是要求工程师从概念上设计一个系统。他们可能会开始绘制一个包含大块的框图,其中包含 CPU、编码器、显示子系统等标签。这不是一个功能层次结构,尽管许多划分的块被认为是提供功能的。这也不是纯粹的结构分解,因为在
    发表于 11-22 09:59 1067次阅读
    <b class='flag-5'>芯片</b>设计复杂性处理之<b class='flag-5'>层次</b>结构概念分析

    芯片中的存储器有哪些

    芯片中的存储器是芯片功能实现的重要组成部分,它们负责存储和处理数据。根据功能、特性及应用场景的不同,芯片中的存储器可以分为多种类型。以下是对芯片中主要存储器的详细介绍。
    的头像 发表于 07-29 16:55 901次阅读