数字IC设计bilibili-Designer Compiler的理论笔记+实操
文章目錄
- 理論部分
轉眼已經進入工作半年了,然而IC設計方面的進步,卻很少很少,DFT總算大致理論flow走了一遍,但細枝末節,也困難重重,不免讓人灰心。今天開始,我將每周加速IC設計方面的理論與實踐,最終目標當然是前端、DFT、后端一條Flow有一個比較清晰的認識。有困難不可怕,可怕的是,這些困難永遠在那里,卻得不到真正的驗證,真正的克服。再大的困難,我相信也能依靠時間換取空間。如果不去一點一點的啃他,他就是一直在那里。
進入正題,本篇博客介紹DC的工具使用流程,全篇集合理論與實際,只取重要內容并加以消化理解,并非對視頻資料的一種搬移。
理論部分
什么是邏輯綜合,這個話題經常會被問到,但需要真正去理解,然后根深蒂固在腦海:
映射–>約束–>優化
綜合的過程分為了三大部分:
首先需要設置search_path,這里面一般包括三大部分:rtl的路徑、lib的路徑、scripts的路徑。
dc會自動在search_path里面查找文件。
下面這個library_setup就非常重要了,特別是target_library與link_library的區別
在我的另一篇.sysnopsys_dc.setup的文章里面也介紹過了,這里slide其實解釋的更會好一些。
https://blog.csdn.net/ciscomonkey/article/details/108908386
link_library指的是resolve那些哪些instance。
假如說我現在已經有一個netlist了,為A,但這個netlist A使用的工藝庫是55nm的,現在我設計的時候我需要把這個A給吃進去,然后和B一起綜合成一個新的netlist,假設為C,但是我現在用的工藝庫是90nm的,因此我的link_library 需要有55nm 90nm,而我的target只需要有90nm。
也就是說target target target 是目標,代表的是映射目標,而link指的是resolve。
所以有的人會說把IP放到link_library,這樣你就能理解為什么了。當然是為了resolve。
如下圖所示,一定要注意的是current_design指定的是里面的module name,不是文件 name
接下來比較重要就是timing constrain。
時鐘的偏移(skew):時鐘分支信號在到達寄存器的時鐘端口過程中,都存在有線網等延時,由于延時,到達寄存器時鐘端口的時鐘信號存在有相位差,也就是不能保證每一個沿都對齊,這種差異稱為時鐘偏移(clock skew)。
時鐘的轉換時間(transition) :時鐘的上升沿跳變到下降沿或者時鐘下降沿跳變到上升沿的時間,這個時間并不是如左下圖所示那樣完全沒有跳變時鐘的,而是像下圖那樣,時鐘沿的跳變時間就是時鐘的轉換時間。
時鐘的延時(latency) :時鐘從時鐘源(比如說晶振)出發到達觸發器時鐘端口的延時,稱為時鐘的延時,包含時鐘源延遲(source latency)和時鐘網絡的延遲(network latency)
時鐘的延時(latency) :時鐘從時鐘源(比如說晶振)出發到達觸發器時鐘端口的延時,稱為時鐘的延時,包含時鐘源延遲(source latency)和時鐘網絡的延遲(network latency)
如下圖所示
通過指定input delay相當于告訴dc
M的延時是0.6ns從而DC就會去推測,要滿足timing的話,我要盡量的去優化N這塊組合邏輯。
通過告訴DC, 外部T的組合邏輯延時是多少,然后DC才能盡量去優化你的內部邏輯S。
如果優化不了,就會報錯。
這個延時如何確定,由SPEC工程師,在定義整體架構的時候就定好。
下面是定義環境約束
在滿足時序的情況下,再去盡量優化面積盡量小。
報告的都是一些關鍵路徑。
中間文件都會存到下面的文件夾里面。
總結
以上是生活随笔為你收集整理的数字IC设计bilibili-Designer Compiler的理论笔记+实操的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DC_command的部分理解(持续更新
- 下一篇: 如何理解ScanDef的概念