時序約束和綜合
時脈頻率
# 時鐘單位為ns,2ns對應500M時脈頻率
create_clock -period 2 [get ports clk]
skew
# 設定時鐘的skew,即上升沿之間的誤差,當前設定為0.3ns
set_clock_uncertainty -setup 0.3 [get_clocks CLK]
transition
# 設定時鐘上升沿的轉化時間
set_clock_transition -max 0.15 [get_clocks CLK]
latency
# 設定晶振源到時鐘輸入端的延時
set_clock_latency -max 0.7 [get clocks CLK]
input delay
# 0.6的值為電路M的最大時間,從FF1的Q端到到下一個設計的A埠需要的時間
以Ck的上升沿作為計算的起點。
M和N為兩塊電路,總延時不變的情況下,M給定約束,則綜合工具儘可能減少N部分的時間。
set_input_delay -max 0.6 -clock Clk [getports A]
output delay
# 給定了外部電路FF4中的T的延時總為0.8。
以CLk作為時鐘參考,上升沿開始計算,訊號從S到T的的總時間一定,T已知,那麼S最大值可由綜合工具得出
set_output_delay -max 0.8 -clock Clk [getports B]
input transition
輸入的充電時間,從低電平到高電平需要的時間
set_input_transition 0.12 [get_ports A]
set load
# 設定電容負載最大值,當前設定為0.03
set load [expr{30.0/1000}] [get ports B]
輸出sdc
# 輸出sdc
write_sdc xxxx.sdc(新思約束檔案資訊)
# 輸出網表和sdc檔案
write -f ddc -hier -output xxxx.ddc(網表和sdc檔案資訊)
# 輸出網表
write -f verilog -hier -output xxxx.gv(網表檔案,額外的sdf標準延時檔案用於反標到gv檔案上,做後模擬)
design_version內的約束和輸出設定
如設定線載模型
如輸出報告
綜合的等級
編譯劃分為三個部分,
- 架構級別的調整
- 級別的最佳化,即使用什麼型別的邏輯單元完成功能,與門還是異或門?
- 確定好使用的邏輯單元后,使用什麼樣的器件完成功能,使用型號1的與門,還是型號2的與門?
編譯有兩種方式
compile 預編譯,普通編譯
compile_ultra 超級編譯,儘可能最佳化
跨時鐘產生的問題
手冊:SpyGlass® CDC Submethodology (for GuideWare 2.0 xxxx)
亞穩態產生
亞穩態產生的根本原因是建立保持時間不夠。設計時不可控的外界因素,則是工藝、溫度、電壓、電磁波等的影響。
設計問題主要是時鐘取樣頻率、取樣位置、復位釋放時機等不合適,導致無法滿足建立保持時間。緩解亞穩態的方法主要是訊號打拍。
對於多bit訊號,採用握手。
Reconvergence問題
在多個bit出現反轉的時候,從X4到Y4的資訊,可能出現多bit取樣時候,無法完全同步得到取樣,使用格雷碼可以解決問題
https://www.elecfans.com/d/2077894.html
資料丟失的問題
從快時鐘到慢時鐘,傳遞資訊,慢時鐘取樣的時間短,需要額外增補資料保持的時間,即使用與門,或者或門,增加低電平或高電平的持續時間
設計意圖產生的問題
在一些需要做出跨時鐘的設計意圖時候,需要採用fifo或者單bit握手方式,實現握手。
復位問題
復位需要非同步復位,同步釋放。果復位是非同步釋放,則導致非同步的資料送出到各種組合邏輯,而時鐘取樣這些組合邏輯,容易導致亞穩態。同步復位的設計是使用兩級同步實現。
CDC典型問題
時脈頻率切換問題
頻率切換使用以下方法,可以安全切換
spyglass的使用
使用spyglass提前發現CDC的問題,可以減少返工,提高效率,spyglass還可以檢查STA
讀入檔案和型別
spyglass可以讀入的檔案型別有很多
read_file -type <type> <file-name>
選擇要檢查的位置,使用外部控制
spyglass -batch project Project-1.prj-goal G1
下述程式碼選擇了第一個選項,即set_parameter fa_modulelist {M1 M2}
set_option top T1
current_goal Gl -top T1
set_parameter fa_modulelist {M1 M2}
current_goal G1 -top T2
set_parameter fa_modulelist {M3 M4}
current_goal G1 -alltop
set_parameter fa_modulelistk {Ml M2 M3 M4}
spyglass cdc工具功能
SpyGlass® Constraints Submethodology (for GuideWare 2.0 and 2015.12) 手冊
SOC設計問題
設計重點
SOC設計的三個重點內容:時鐘、介面、復位。稱為CIR檔案。
DFT功能
SOC有正常工作狀態和DFT工作狀態。DFT主要用於矽後的檢查,良率控制。
DFT對邏輯閘的開路和短路進行檢查,透過PinMux外部的PAD切換工作狀態。
最優的DFT/BIST策略保證產品測試錯誤覆蓋率最大,測試時間最短
MBIST
記憶體內建的自檢電路,是DFT的一種實現例項,用於檢查記憶體是否正確。檢查錯誤時立馬退出,送出fail訊號。
March演算法是一種較為高效的記憶體檢查演算法,其步驟存在變體,一種情況如下:
PIN和PAD
PIN是內部的晶片送出訊號,外部到PCB板上是PAD
FloorPlan
用於規劃各個模組的位置
電源分佈
物理設計部分
Layout版圖
送入晶片生產前的最後步驟
SRAM的大小含義
比如大小為8K*8,則其深度為8K,寬度為8bit。劃分為兩個bank,每個bank獨立的選通訊號,一個bank最終的大小是8K*32,。