//來自微信公眾號 "數字晶元實驗室"

以下要點總結了設計階段的主要考慮因素:

寄存關鍵模塊的所有輸出。這將使得在系統級集成期間,介面時序很容易滿足

根據時鐘域和功能目標,對設計進行劃分(Partition)

遵循命名約定,便於以後的維護。

避免實例化特定工藝的門

在設計中使用參數化代碼

避免在設計內部生成時鐘和複位

在頂層的模塊實例化時避免使用膠合邏輯(glue logic)

什麼是「snake」路徑,為什麼要避免它們?

一條snake路徑,就是一條穿越多個層次的路徑。

設計中必須避免使用snake路徑,原因如下:

在對頂層進行靜態時序分析時,它將構成一個很長的時序路徑。但是,在模塊級的靜態時序分析時可能不會被發現。

綜合工具需要付出更多努力來優化跨層次的時序路徑,同時增加綜合時間。

為了避免snake路徑

寄存不同功能模塊的輸出。

功能上劃分設計,以避免跨越層次結構的過長的時序路徑。

定期在集成後的,即使沒有完全通過驗證的設計中執行綜合,檢查是否存在snake路徑。這將通過時序報告提供早期的反饋。

劃分設計時有哪些注意事項?

大型設計需要以分層的方式處理。在劃分這些設計時需要考慮以下因素:

功能:層次結構中邏輯的功能是劃分設計的主要標準。典型層次結構的劃分是:

地址和數據路徑:此模塊通常包含地址和數據寄存器,用於驅動匯流排的地址和數據。

控制邏輯:該模塊通常包含有限狀態機器(FSM)

時鐘域:在多時鐘設計中,建議將同一個時鐘域中的模塊劃分在單個模塊。當信號需要與不同時鐘域中的模塊進行交互時,需要通過一個同步模塊,它將源時鐘域中的信號同步到目的時鐘域。

面積:模塊中的邏輯太少會產生太多的層次結構,單個模塊中的邏輯過多會在以後的Floorplan期間產生問題。


推薦閱讀:
相关文章