修復關鍵路徑時序一直都是數字IC designer最耗時的工作任務之一,而且伴隨著同一個RTL設計應用于不同的業務場景,時序、面積和功耗的約束也是不同的,所以時序優化的方向也是多變的。
簡單來說,時序優化的任務是常見的,并不是說RTL寫得足夠好,就不存在后續的時序優化迭代。
本文介紹3個時序優化的RTL改動以及在其中Formal SEC的角色。
其中一種比較常用的關鍵時序修復方法是將兩個pipe之間的組合邏輯重新分配。
這個道理就是木桶原理,限制同步設計時鐘頻率的路徑就是關鍵時序路徑,如果一個木桶中所有的木板長短都是一樣的,那就是沒有短板,或者說全部都是短板。
如上圖所示,上方的設計是存在時序問題的設計,在第1個PIPE和第2個PIPE之間有一個比較長的組合邏輯,通過組合邏輯重新分配,讓組合邏輯在2個PIPE比較均勻地分配就可以優化這類時序問題。
注意:前提是保證端到端功能是一致的,即使中間階段寄存器的狀態可能不一致。由于中間寄存器的狀態不一致所以不能夠使用combinational FEV,只能使用sequential FEV或者transaction FEV。
經驗表明,這種時序優化有非常非常大的概率引入bug。修復時序的前提的保證功能,方向錯誤,跑得越快,越不是好事情。
這種由于修復時序引入的bug很容易通過修改前RTL(SPEC RTL)和修改后RTL(IMP RTL)之間的等價性(sequential FEC)比對來確保設計的時序優化修改沒有引入新的bug。
critical path reduction
在某些情況下組合邏輯重分配不可行時,可能需要將一個比較長的組合邏輯分拆成并行的2個比較小的組合邏輯,然后在后面的PIPE使用邏輯再匯聚在一起,如下圖所示。
對于上面的修改,上方的設計存在時序問題,下方的設計是優化后的問題,這個轉化的過程同樣非常非常容易導致bug的引入,也同樣可以通過FEC來保證。
Pipeline optimizations
隨著這個RTL設計的不同應用場景需求變化(工藝變化、業務場景變化、算法變化以及物理實現的變化等等),designer發現時序無論如何也無法優化,只能夠以犧牲latency的代價增加pipe數來優化時序。又或者發現可以減少pipe來優化latency,提升芯片的局部性能。
注意:同樣需要保證端到端的功能一致。
如上圖所示,上方是優化前的設計,下方是優化后的設計(減少了一個pipe)。
對于這種pipe個數變化,但是端到端功能不變的修改,同樣可以使用sequential FEC來進行等價性比對。只不過有所區別的是,需要指定比對是latency差異。
審核編輯:劉清
-
寄存器
+關注
關注
31文章
5318瀏覽量
120015 -
RTL
+關注
關注
1文章
385瀏覽量
59706 -
數字IC
+關注
關注
1文章
37瀏覽量
12513
發布評論請先 登錄
相關推薦
評論