電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 29|回復(fù): 0
收起左側(cè)

【芯片設(shè)計(jì)】DC綜合retiming策略的學(xué)習(xí)與實(shí)踐

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 7 天前 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
之前規(guī)劃的系列除了異步專題外已經(jīng)均推送完成,所以這一篇開始,把前一段時(shí)間在項(xiàng)目交付過(guò)程中的一些學(xué)習(xí)與總結(jié)作為一個(gè)專題推送。
對(duì)于DC綜合中的retiming策略早有耳聞,但是一直沒(méi)有比較系統(tǒng)的學(xué)習(xí)和實(shí)驗(yàn)過(guò),正好借著這次交付過(guò)程的歸納總結(jié)機(jī)會(huì),把一些零零散散的收獲學(xué)習(xí)記錄下。記得剛出新手村時(shí)和某位大佬聊到過(guò),他說(shuō)你邏輯里寫了在某級(jí)計(jì)算一個(gè)結(jié)果,但是這個(gè)值不一定是在這一級(jí)產(chǎn)生的,可能是上一級(jí)產(chǎn)生也可能是下一級(jí)產(chǎn)生。當(dāng)時(shí)懵懂無(wú)知我就光“啊對(duì)對(duì)對(duì)”,實(shí)際上心里想的是“是不是跟我扯呢,怎么我寫在這一級(jí)出的結(jié)果還能流竄到其他級(jí)去呢,那整個(gè)邏輯鏈不就亂了么?”當(dāng)時(shí)啥也不懂,所以也沒(méi)有多問(wèn),后來(lái)想想應(yīng)該說(shuō)的就是綜合過(guò)程的retiming策略。
綜合的retiming策略通過(guò)重新分配組合邏輯路徑中的時(shí)序,達(dá)到優(yōu)化電路性能的目的。具體來(lái)說(shuō),它可以在組合邏輯和時(shí)序邏輯路徑中插入或刪除緩沖器、反相器甚至觸發(fā)器等元素,從而調(diào)整信號(hào)的傳播時(shí)間,使關(guān)鍵路徑的延遲滿足設(shè)計(jì)要求。我們平時(shí)總談起的這個(gè)DC里的retiming優(yōu)化更多好像是指涉及到時(shí)序調(diào)整的操作,用一個(gè)簡(jiǎn)化的例子來(lái)說(shuō)明下。假設(shè)我們現(xiàn)在有一個(gè)操作是D = A+B+C,在第一級(jí)時(shí)三個(gè)數(shù)相加,然后空打了一拍最后輸出:

那么如果此時(shí)我們打開了retiming的開關(guān),并且DC工具綜合判斷進(jìn)行retime的效果會(huì)更好,那么最后綜合的結(jié)果可能就變成這樣了(只是單純的舉例):

工具會(huì)把一部分邏輯放到下一級(jí)去處理,這樣就減輕了這一級(jí)的時(shí)序壓力能夠確保能夠match violation。而具體什么時(shí)候會(huì)retime以何種策略retime,網(wǎng)上的資料有很多我也沒(méi)有查太深。而后就想直觀地看一看retime處理的效果和電路圖(有時(shí)我確實(shí)有點(diǎn)執(zhí)著于眼見(jiàn)為實(shí)了),所以在本地虛擬機(jī)里進(jìn)行了一下實(shí)驗(yàn)。測(cè)試的代碼和上圖很像,只不過(guò)為了加深邏輯級(jí)數(shù)我多加了很多邏輯,輸入為3個(gè)48bit data1/2/3數(shù)據(jù)輸出為96bit res:

在DC中先關(guān)閉retime,以compile_ultra -incremental進(jìn)行綜合,之后在dc_shell中打開互連start_gui:

這版圖看著是真舒服,邏輯層級(jí)清晰,誰(shuí)看到不得說(shuō)一句好代碼?(^?^*)。放大具體看一下互連結(jié)構(gòu),可以清晰的看到datax_p1級(jí)的寄存器區(qū)域、p1到p2的邏輯區(qū)域、res_p2的寄存器區(qū)域和res_p3的寄存器區(qū)域:

而后具體看一下res_p2和res_p3的直接打拍區(qū),可以發(fā)現(xiàn)res_p2的Q端直連到res_p3的D端,完全沒(méi)有組合邏輯,這也符合不開retime的預(yù)期:

最后是report,時(shí)鐘頻率設(shè)的比較高最差路徑-280p邏輯深度22級(jí),自然時(shí)序是沒(méi)有match的:

之后引入retime方法,以compile_ultra -incremental -retime進(jìn)行綜合,綜合之后的網(wǎng)表就能看出來(lái)亂了很多:

放大之后還是可以大概看出來(lái)三級(jí)寄存器的分布,同時(shí)還生成一個(gè)中間模塊(下圖最長(zhǎng)的那個(gè)箭頭)。從這個(gè)圖就能很明顯的看出來(lái),p3寄存器和p2寄存器不是直連,中間加入了邏輯,加入的邏輯集中在中間模塊里:

對(duì)于這個(gè)生成的中間模塊簡(jiǎn)單看下,內(nèi)部很亂很難進(jìn)行具體的分析:

但是從接口和互連可以大概看出,p1到p2的一部分邏輯被放到了p1前的輸入側(cè)(即p0級(jí)),一部分被放到了p2到p3之間:

中間模塊作用在p3的D端:

中間模塊的輸入一部分直接來(lái)自于輸入datax,也就是說(shuō)本來(lái)集中在一級(jí)的邏輯,被分散到了輸入和res_p2~res_p3之間,res_p3之后從圖上看并沒(méi)有插入組合邏輯:

最后看一下report:

沒(méi)有retiming時(shí)是22級(jí)邏輯,分散到p0~p1~p2~p3三級(jí)之后最長(zhǎng)路徑變成了8級(jí),太合理了三八二十二嘛。而后看一下時(shí)序單元數(shù)量由336增加到了883,說(shuō)明確實(shí)有多出來(lái)的中間變量需要進(jìn)行緩存。而組合邏輯數(shù)量是下降了的,總的面積(我這里沒(méi)截)也下降了,這也比較正常面積增加減小或者大體不變都是有道理的。甚至?xí)r序單元也不一定就增加,比如部分邏輯前移了可能會(huì)省去一些寄存單元。由這里延伸,最近學(xué)習(xí)到的另外一點(diǎn)經(jīng)驗(yàn)就是,我們不是經(jīng)常會(huì)在設(shè)計(jì)中調(diào)用DW ip嗎,當(dāng)DW的ip時(shí)序不滿足時(shí)既可以配置DW內(nèi)的打拍級(jí)數(shù),也可以在其后面插入寄存器(比如我們手動(dòng)加2拍寄存器),然后通過(guò)set_optimize_registers命令來(lái)優(yōu)化這個(gè)DW使其邏輯分散于這幾拍中完成。

系列文章入口——
【芯片設(shè)計(jì)】SoC 101(一):緒論
【芯片設(shè)計(jì)】FIFO漫談(零)從無(wú)處不在的FIFO開始說(shuō)起
【芯片設(shè)計(jì)】計(jì)算機(jī)體系結(jié)構(gòu)(一)虛擬內(nèi)存
【芯片設(shè)計(jì)】深入理解AMBA總線(零)緒論
【芯片設(shè)計(jì)】握手協(xié)議的介紹與時(shí)序說(shuō)明
【芯片設(shè)計(jì)】復(fù)位那些小事 —— 復(fù)位消抖
【芯片設(shè)計(jì)】快速入門數(shù)字芯片設(shè)計(jì)(一)Introduction
【芯片驗(yàn)證】UVM源碼計(jì)劃(零)下定決心讀源碼前的自測(cè)環(huán)節(jié)
【芯片設(shè)計(jì)】異步電路碎碎念(一) 到底什么是異步電路
【芯片設(shè)計(jì)】從RTL到GDS(一):Introduction
其他文章鏈接——
【芯片驗(yàn)證】sva_assertion: 15道助力飛升的斷言練習(xí)
【芯片驗(yàn)證】可能是RTL定向驗(yàn)證的巔峰之作
【芯片驗(yàn)證】RTL仿真中X態(tài)行為的傳播 —— 從xprop說(shuō)起
【芯片驗(yàn)證】年輕人的第一個(gè)systemVerilog驗(yàn)證環(huán)境全工程與解析
【芯片設(shè)計(jì)】verilog中有符號(hào)數(shù)和無(wú)符號(hào)數(shù)的本質(zhì)探究
【芯片設(shè)計(jì)】論RTL中always語(yǔ)法的消失術(shù)
【芯片設(shè)計(jì)】代碼即注釋,注釋即代碼
【芯片設(shè)計(jì)】700行代碼的risc處理器你確實(shí)不能要求太多了
入職芯片開發(fā)部門后,每天摸魚之外的時(shí)間我們要做些什么呢
如何計(jì)算系統(tǒng)的outstanding 和 burst length?
芯片搬磚日!け扑缽(qiáng)迫癥的關(guān)鍵詞不對(duì)齊事件
熟人社會(huì)里,一群沒(méi)有社會(huì)價(jià)值的局外人

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有賬號(hào)?立即注冊(cè)

x
回復(fù)

使用道具

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表