在大規模邏輯設計中,邏輯模塊可能達到數十甚至上百個。每個模塊都需要通過寄存器輸入配置和讀取狀態。若將每個模塊的寄存器都平鋪式設計,將每個模塊的寄存器直接與邏輯模塊相連,會帶來以下幾個問題:
第一,連線復雜,資源占用高:各邏輯模塊與寄存器模塊之間的連線會變得非常復雜,導致片上布線資源的大量占用,增加了設計的復雜性和物理實現的難度。
第二,地址管理困難:各模塊寄存器的地址分配不易區分,寄存器說明文件會變得龐大且難以維護,查找特定寄存器的信息變得低效。
第三,擴展性差:當其中一個模塊需要增加寄存器時,地址分配和文件修改的工作量會顯著增加,影響設計的可擴展性和維護效率。
這種設計方式不僅增加了開發和調試的復雜性,還可能影響系統的性能和可維護性。因此,需要采用更優化的寄存器管理方案來解決這些問題。
針對上述設計帶來的問題,我們提出一種寄存器分級設計方案。通過將寄存器按功能或模塊進行層次化劃分,可以有效解決連線復雜、地址管理困難以及擴展性差等問題。這種分級設計不僅優化了片上資源的利用率,還提高了系統的可維護性和可擴展性。
首先,設計一種寄存器總線,可支持針對特定地址的讀寫操作,應用于各模塊之間。第二,對大規模邏輯設計進行層次化劃分,從頂到底分為top、block、module三級,數個布局相鄰模塊、功能相近模塊劃分在一個block內,數個block匯聚為邏輯設計頂層。寄存器模塊通過寄存器總線連接各block,在頂層設置寄存器總線仲裁器,同時只允許一個寄存器進行讀寫訪問。為各block分配地址段。同理,對于同一個block下的數個module,block寄存器通過寄存器總線和各module寄存器相連,在block內設置總線仲裁器,同時只允許一個寄存器進行讀寫訪問。為各module在block地址段內分配子地址段。層次結構如圖一所示。
圖一 寄存器層級劃分

同時,在設計寄存器文件時,可以根據module和block進行如圖二至圖五所示的分頁設計,使得大規模邏輯設計的地址更加清晰。
圖二

圖三 top寄存器設計實例

圖四 block級寄存器設計

圖五 module寄存器設計

按照這樣的寄存器層級進行設計,可以實現多人協作設計和大規模邏輯設計的加速。