層次化的設(shè)計(jì)(hierarchy design):RTL和綜合
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一個(gè)完整的層次化設(shè)計(jì),在代碼設(shè)計(jì)階段,就應(yīng)該樹立層次化的理念。這里邊主要由以下幾個(gè)考量
簡(jiǎn)化大規(guī)模設(shè)計(jì)的必經(jīng)之路
后端實(shí)現(xiàn)的真實(shí)需求
驗(yàn)證和設(shè)計(jì)的一致性
相關(guān)配套、支持文件的參照點(diǎn)(SDC、UPF等等)
從架構(gòu)入手,合理分布RTL的層次結(jié)構(gòu),讓整個(gè)設(shè)計(jì)看起來張弛有道。這個(gè)思路體現(xiàn)如下

前端設(shè)計(jì)人員按照下面的思路過程來設(shè)計(jì)代碼
-
完成inst1的模塊代碼設(shè)計(jì)
-
完成inst1的內(nèi)部連線
-
完成inst2的模塊代碼設(shè)計(jì)
-
完成inst2的內(nèi)部連線
-
完成top-level的模塊代碼設(shè)計(jì)
-
完成top-level的連線
可以看到,這里邊涉及了三個(gè)部分的設(shè)計(jì)
-
inst1
-
inst2
-
top-level
通常來講,合理的分配各個(gè)模塊可以加速full-chip的收斂。從上面的例子可以看出,top-level的東西比較簡(jiǎn)單,只有一個(gè)控制邏輯和PAD,主要的功能都在子模塊里邊,這樣的好處是非常明顯的
-
子模塊的實(shí)際內(nèi)容多,但是總體規(guī)模不會(huì)很大,綜合和版圖的可控性會(huì)很好
-
相互關(guān)聯(lián)密切的功能IP封裝在一個(gè)模塊里,有利于時(shí)序收斂和后端工具優(yōu)化
-
top-level的主要用途就是穿線,以及中心控制和PAD等等,有利于整體功能布局的規(guī)劃,主要精力要放到interface的時(shí)序上,以及可繞通性。
每一個(gè)模塊都有一套自己獨(dú)立的文件結(jié)構(gòu),譬如inst1對(duì)應(yīng)的是design1,整個(gè)design1的文件架構(gòu)類似如下:

有了這些文件,design1的綜合就可以開始了。綜合的流程通常比較簡(jiǎn)單,這里不做過多的討論,基本流程可以參見下面的列表
-
HDL analysis 和 elaboration
-
read_sdc和read_upf 以及一些基礎(chǔ)配置
-
運(yùn)行compile_ultra和DFT insertion
-
創(chuàng)建Block Abstraction view
-
生成DDC和網(wǎng)表
重要的第四步時(shí)一定要執(zhí)行的,這里生成了后面層次化設(shè)計(jì)的重要信息。
對(duì)應(yīng)的,這里也列一下inst2(design2)的文件目錄結(jié)構(gòu)
使用綜合器,分別可以得到下面的文件
-
design1.ddc 和 design1.v
-
design2.ddc 和 design1.v
基于不同的DCT/DCG環(huán)境,可以開始根植于如下目錄結(jié)構(gòu)的頂層綜合

頂層綜合的思路會(huì)有一些不同,具體流程如下
-
配置block implementation的狀態(tài)
-
讀入底層帶有Block Abstraction的DDC(不要讀入子模塊netlist,會(huì)導(dǎo)致非常多的困惑),工具回顯如下例
-
HDL analysis 只分析top-level的verilog,譬如:top_ctrl_design.v、PAD_design.v 、designFC.v
-
elaboration的時(shí)候,一定要注意一下子模塊的鏈接狀態(tài),保證模塊信息都可以被正確掛載進(jìn)來
-
在保證link無誤的情況下,讀入designFC.sdc和designFC.upf,運(yùn)行compile_ultra和DFT insertion
-
生成DDC和網(wǎng)表,完成top-level的綜合
對(duì)應(yīng)的,在做層次化的設(shè)計(jì)的時(shí)候, 需要注意下面的事項(xiàng):
-
調(diào)用底層模塊的時(shí)候,一定要使用帶有block Abstraction的DDC,DDC里邊包含了block的
-
時(shí)序約束信息
-
UPF信息
-
時(shí)鐘結(jié)構(gòu)信息
-
邊界時(shí)序信息
-
top-level的UPF只有頂層的low power需求
-
頂層的LS、ISOLATION的需求,如果被約束的cell在頂層
-
頂層和block的PG連接關(guān)系
-
top-level的SDC包含了整個(gè)top-level和block-level的時(shí)序約束
-
頂層的SDC一定要和block的SDC,在block級(jí)別呈現(xiàn)出高度的一致性,譬如純粹block 內(nèi)部的MCP、false path等等
-
如果時(shí)鐘的源頭在頂層,block級(jí)別的clock無需二次聲明,譬如下面示例

在design1/desing2綜合的時(shí)候,分別在各自的sdc里邊定義pclk,如果把視角放到頂層,那么畫風(fēng)是這樣的

可以看到,從toplevel來看的話,以前的design1/design2的pclk,其實(shí)都是從top-level的pll驅(qū)動(dòng)的,在top-level構(gòu)建SDC的時(shí)候,只需要生命pll的clock就可以了(Pll_clk),剩下的就交給工具自動(dòng)衍生。





