1. 程式人生 > >如何在quartus下做邏輯鎖定(quartus,邏輯鎖定)

如何在quartus下做邏輯鎖定(quartus,邏輯鎖定)

摘要:

  當你的設計做得越來越大,效能要求越來越高的時候,你就會發現,之前跑得好好的模組,怎麼突然間不行了,其實這就是約束的問題,FPGA內部的佈局佈線就像我們畫PCB時的自動佈線,如果沒有規則設定,那麼軟體將不能保證你能達到多大的Fmax,而且當你的設計變更的時候,其它沒有改動的模組也會在重新綜合後受到影響。

正文:

  有兩種方法來解決發生的這種意外,一個是時序約束,另一個就是邏輯鎖定。時序約束是按照你的時序要求去佈局佈線。而邏輯鎖定則是指設計者將某個模組或者某個網路指定在器件的某個位置。儘管有時序約束,但綜合器也不能保證每次都能達到要求;而只有當邏輯鎖定後,它能保證被鎖定的模組在下一次綜合不被改變。

  事出有因,之前加進來的一個SPI模組,一開始是正常的,後來陸續在設計中加了一些模組,綜合後,居然發現SPI模組工作不正常,奇怪的是,在我備份的幾個版本中,有幾個正常,有幾個又不正常,而在這個過程中SPI模組從未被修改過。我想一定是綜合器在搗鬼,後來我在SPI正常的版本上檢視chip planner中spi的佈局資訊,然後將其邏輯鎖定,再新增新的模組進來,結果發現,SPI果然沒有受到影響。

  下面在11.1 sp2版本下,介紹這個例項

  首先編譯SPI正常的那個工程,然後檢視spi在chip planner中的位置

  如下圖

  然後建立邏輯鎖定

  在chip planner中選擇spi鎖定的區域

  選擇邏輯鎖定區域

  綜合後,檢視結果如下:

  在logiclock regions window中可設定型別及屬性

  Logiclock的區域型別

  有時候,並不知道邏輯鎖定區域應該放在哪裡才算合適,這可以跟據器件pin的位置來安排,儘量保證每個模組集中放置,相關的模組也集中放置,這樣綜合器綜合出來的效果都會要好一些。

結語:

如果當邏輯沒問題,添加了時序約束,但仍不能滿足時,為了保證系統能穩定的工作,邏輯鎖定不失為一個好方法。