RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

談談芯片中的層次化的設計(hierarchy design)

sanyue7758 ? 來源:艾思后端實現(xiàn) ? 2023-10-18 16:09 ? 次閱讀

層次化設計適當下非常流行的設計思路,隨著芯片的規(guī)模越來越大,fullchip的數(shù)據(jù)量和復雜度和過去已經(jīng)不能同日而語了,無論是工具的runtime還是QoR,直接完成full-chip的工作越來越不現(xiàn)實。所以,在這里,就需要引入 層次化的設計(hierarchy design) 的概念,

從芯片的規(guī)劃開始,層次化的理念貫穿整個設計流程,下面的各個設計方面都會受到不同程度的影響

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

一個項目的開始,需要根據(jù)實際的需要確定層次,這主要是基于模塊功能規(guī)模,一起來看下面這個實例

wKgZomUvkseAKKElAADh8YzDQ7A180.jpg

wKgaomUvkviAGMxFAACjLVunxHA960.jpg

可以看出,從整個SOC的設計當中,主要的partition分割是兩種,top和none-top。理論上講,所有的none-top,互相之間都沒有依賴關(guān)系(dependency),除非它本身也是一個小top,具體可見下面的示例:

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

這里的top和sub-top_1就是所謂的hierarchy design,在一個芯片里邊,top通常只有一個,但是可能會有多個sub-top,甚至是sub-sub-top,這取決于芯片層次化的深度和芯片的復雜度??梢灶A見,層次化越多,單個partition的復雜度會降低,但是給top的partition劃分帶來了更多的工作量,譬如

UPF
SDC
physical partition boundary

還有一個影響就是dependency,所有的sub-top,都和top一樣,在后端實現(xiàn)的時候(synthesis/layout),任何的top的后端工作,都需要sub partition的支持,譬如上圖,要想開始sub-top1的synthesis,就必須先要完成 sub_par_1_1,sub_par_1_2,sub_par_1_3的綜合工作。

這就是runtime的瓶頸。實際項目中,為了減少這方面的影響,通常都會有一些變通的手段,來快速支持頂層設計,這個小技巧的具體細節(jié),也會在本系列文章里邊提及。

業(yè)界里邊還有一種更為前衛(wèi)的partition的設計,被稱為abut-partition的設計,簡單的講就是沒有top的概念,所有的partition都是完全貼合的,譬如下面這個floorplan的partition的框圖

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

這種架構(gòu)更為簡練,所有的設計全部都推到了partition,從物理實現(xiàn)上來講,top level已經(jīng)不包含任何的leaf cell,所有的存在就是一些連線關(guān)系、PG、terminal以及co-design routing了,這種極簡的abut設計有其優(yōu)越性,也有一些限制。

一個完整的層次化設計,在代碼設計階段,就應該樹立層次化的理念。這里邊主要由以下幾個考量

簡化大規(guī)模設計的必經(jīng)之路
后端實現(xiàn)的真實需求
驗證和設計的一致性
相關(guān)配套、支持文件的參照點(SDC、UPF等等)

從架構(gòu)入手,合理分布RTL的層次結(jié)構(gòu),讓整個設計看起來張弛有道。這個思路體現(xiàn)如下

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

前端設計人員按照下面的思路過程來設計代碼

完成inst1的模塊代碼設計

完成inst1的內(nèi)部連線

完成inst2的模塊代碼設計

完成inst2的內(nèi)部連線

完成top-level的模塊代碼設計

完成top-level的連線

可以看到,這里邊涉及了三個部分的設計

inst1

inst2

top-level

通常來講,合理的分配各個模塊可以加速full-chip的收斂。從上面的例子可以看出,top-level的東西比較簡單,只有一個控制邏輯和PAD,主要的功能都在子模塊里邊,這樣的好處是非常明顯的

子模塊的實際內(nèi)容多,但是總體規(guī)模不會很大,綜合和版圖的可控性會很好

相互關(guān)聯(lián)密切的功能IP封裝在一個模塊里,有利于時序收斂和后端工具優(yōu)化

top-level的主要用途就是穿線,以及中心控制和PAD等等,有利于整體功能布局的規(guī)劃,主要精力要放到interface的時序上,以及可繞通性。

每一個模塊都有一套自己獨立的文件結(jié)構(gòu),譬如inst1對應的是design1,整個design1的文件架構(gòu)類似如下:

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

有了這些文件,design1的綜合就可以開始了。綜合的流程通常比較簡單,這里不做過多的討論,基本流程可以參見下面的列表

HDL analysis 和 elaboration

read_sdc和read_upf 以及一些基礎配置

運行compile_ultra和DFT insertion

創(chuàng)建Block Abstraction view

生成DDC和網(wǎng)表

重要的第四步時一定要執(zhí)行的,這里生成了后面層次化設計的重要信息。

對應的,這里也列一下inst2(design2)的文件目錄結(jié)構(gòu)

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

使用綜合器,分別可以得到下面的文件

design1.ddc 和 design1.v

design2.ddc 和 design1.v

基于不同的DCT/DCG環(huán)境,可以開始根植于如下目錄結(jié)構(gòu)的頂層綜合

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

頂層綜合的思路會有一些不同,具體流程如下

配置block implementation的狀態(tài)

讀入底層帶有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的時候,一定要注意一下子模塊的鏈接狀態(tài),保證模塊信息都可以被正確掛載進來

在保證link無誤的情況下,讀入designFC.sdc和designFC.upf,運行compile_ultra和DFT insertion

生成DDC和網(wǎng)表,完成top-level的綜合

對應的,在做層次化的設計的時候, 需要注意下面的事項:

調(diào)用底層模塊的時候,一定要使用帶有block Abstraction的DDC,DDC里邊包含了block的

時序約束信息

UPF信息

時鐘結(jié)構(gòu)信息

邊界時序信息

top-level的UPF只有頂層的low power需求

頂層的LS、ISOLATION的需求,如果被約束的cell在頂層

頂層和block的PG連接關(guān)系

top-level的SDC包含了整個top-level和block-level的時序約束

頂層的SDC一定要和block的SDC,在block級別呈現(xiàn)出高度的一致性,譬如純粹block 內(nèi)部的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驅(qū)動的,在top-level構(gòu)建SDC的時候,只需要生命pll的clock就可以了(Pll_clk),剩下的就交給工具自動衍生。

寫到這里,相信讀者們對層次化設計流程有一個比較具體的了解了。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • DDR
    DDR
    +關(guān)注

    關(guān)注

    11

    文章

    712

    瀏覽量

    65318
  • 芯片設計
    +關(guān)注

    關(guān)注

    15

    文章

    1015

    瀏覽量

    54876
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    610

    瀏覽量

    34905
  • PHY
    PHY
    +關(guān)注

    關(guān)注

    2

    文章

    301

    瀏覽量

    51732
  • SDC
    SDC
    +關(guān)注

    關(guān)注

    0

    文章

    48

    瀏覽量

    15534

原文標題:芯片中的層次化的設計(hierarchy design)

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    使用層次式電路時,發(fā)現(xiàn)Descend Hierarchy是灰色的,不可選

    使用層次式電路時,發(fā)現(xiàn)Descend Hierarchy是灰色的,不可選,但是我的Implementation是設置過的,Descend Hierarchy還是灰色的,這是為什么???求高手解答
    發(fā)表于 11-15 17:00

    【AD問答 11】 怎么創(chuàng)建層次的原理圖形式

    本帖最后由 cooldog123pp 于 2020-3-30 14:27 編輯 隨著電路的日益復雜,電路的設計方法也是趨向層次結(jié)構(gòu)(Hierarchy)設計者可以先分別繪制及處理還每個子電路
    發(fā)表于 03-13 11:13

    層次式電路設計與平坦式電路設計的區(qū)別

    層次式電路設計(Hierarchical Design):通常是在設計比較復雜的電路和系統(tǒng)時采用的一種自上而下的電路設計方法,即首先在一張圖紙上設計電路總體框圖,然后再在另外層次圖紙上設計每個框圖
    發(fā)表于 08-20 09:54

    “按層次結(jié)構(gòu)使用”中的LUT數(shù)量不正確

    嗨,我正在使用“-detail”選項進行MAP,并在MAP結(jié)束時獲得“按層次結(jié)構(gòu)使用”報告。在本報告中,頂層模塊“ref_design_v5lxt250_x1”的LUT數(shù)量為24953!|模塊|分區(qū)
    發(fā)表于 10-09 15:29

    映射報告怎么按層次結(jié)構(gòu)使用

    。在“按層次結(jié)構(gòu)使用”一章中列出了一些功能塊,但并非全部。使用硬件的總和也與工作表頂部的摘要不同。 (例如,根據(jù)摘要,使用了8個乘數(shù),但我在詳細列表中找不到任何使用過的乘數(shù))。是否有選項顯示所有
    發(fā)表于 10-15 11:50

    包含層次結(jié)構(gòu)窗口完全空白

    您好,我使用MPLAB X IDE V4.15i已經(jīng)打開了一個具有相當復雜層次的包含文件的項目。它沒有錯誤地構(gòu)建。當我查看包含層次結(jié)構(gòu)窗口時,如幫助文件中所描述的,窗口打開,但它是完全空白的。這發(fā)生
    發(fā)表于 10-18 15:55

    FPGA編輯器中的塊層次結(jié)構(gòu)不正確

    親愛的大家我的設計有一個靜態(tài)部分和兩個部分可重配置模塊。在FPGA編輯器中,我找到了一個空置站點并在那里添加了一個組件,然后將該組件連接到部分模塊的網(wǎng)絡,但是我收到了以下錯誤: - 塊層次結(jié)構(gòu)不正確
    發(fā)表于 11-09 11:36

    在Vivado 2015.2塊設計上打開子層次結(jié)構(gòu)彈出一個新的Block Design窗口

    假設我在Vivado 2015.2的Block Design中有三層設計。此塊設計看起來像Hierarchy_0(Hierarchy_1(Hierarchy_2))。當我雙擊
    發(fā)表于 12-25 10:58

    層次結(jié)構(gòu)設計是否意味著將一個大模塊分成幾個子模塊?

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

    Parametric_Hierarchy

    Parametric Hierarchy,好東西,喜歡的朋友可以下載來學習。
    發(fā)表于 02-18 16:34 ?0次下載

    層次設計方法講解

      層次設計是指在一個大型設計任務中,將目標層分解,在各個層次上進行設計的方法。
    的頭像 發(fā)表于 11-19 07:08 ?5690次閱讀

    談談汽車芯片安全(下篇)

    繼《談談汽車芯片安全-上篇》之后,本文針對芯片安全存儲、FOTA、安全診斷、安全運行環(huán)境做了進一步闡述。1.安全存儲1.1 OTP存儲器一次性可編程存儲器(On Chip One Time
    發(fā)表于 12-09 15:06 ?13次下載
    <b class='flag-5'>談談</b>汽車<b class='flag-5'>芯片</b>安全(下篇)

    芯片中的CP測試是什么

    芯片中的CP一般指的是CP測試,也就是晶圓測試(Chip Probing)。
    的頭像 發(fā)表于 07-12 17:00 ?1.7w次閱讀
    <b class='flag-5'>芯片中</b>的CP測試是什么

    芯片設計復雜性處理之層次結(jié)構(gòu)概念分析

     考慮當今使用的層次結(jié)構(gòu)形式的最簡單方法是要求工程師從概念上設計一個系統(tǒng)。他們可能會開始繪制一個包含大塊的框圖,其中包含 CPU、編碼器、顯示子系統(tǒng)等標簽。這不是一個功能層次結(jié)構(gòu),盡管許多劃分的塊被認為是提供功能的。這也不是純粹的結(jié)構(gòu)分解,因為在
    發(fā)表于 11-22 09:59 ?1212次閱讀
    <b class='flag-5'>芯片</b>設計復雜性處理之<b class='flag-5'>層次</b>結(jié)構(gòu)概念分析

    芯片中的存儲器有哪些

    芯片中的存儲器是芯片功能實現(xiàn)的重要組成部分,它們負責存儲和處理數(shù)據(jù)。根據(jù)功能、特性及應用場景的不同,芯片中的存儲器可以分為多種類型。以下是對芯片中主要存儲器的詳細介紹。
    的頭像 發(fā)表于 07-29 16:55 ?1079次閱讀
    RM新时代网站-首页