亚洲综合图片区自拍_思思91精品国产综合在线观看_一区二区三区欧美_欧美黑人又粗又大_亚洲人成精品久久久久桥本

FPGA設計中經(jīng)常犯的10個錯誤

2023-05-31 16:25:45 來源:OpenFPGA

本文列出了FPGA設計中常見的十個錯誤。我們收集了 FPGA 工程師在其設計中犯的 10 個最常見錯誤,并提供了解決方案的建議和替代方案。本文假定讀者已經(jīng)具備 RTL 設計和數(shù)字電路方面的基礎。接下來讓我們深入探討在FPGA 設計中要避免的 10 大錯誤。


【資料圖】

異步邏輯

FPGA 設計適用于同步系統(tǒng),即使異步邏輯是可綜合的,它也會導致設計中的時序違規(guī)(亞穩(wěn)態(tài))。有 FPGA 工程經(jīng)驗的人往往會避免在他們的 FPGA 設計中使用任何異步邏輯。緩解此問題的一種方法是在驅動 LUT 的設計中同步鎖存所有異步邏輯。

設計中的異步循環(huán)會增加 FPGA 的功耗,從而增加熱量并可能導致不必要的“過熱”問題。

以下是使用異步邏輯有益的情況:

在 AXI-stream協(xié)議中,最好將“tready”表示為異步,這里可以使用reg slice來減輕異步邏輯,這會增加整個設計的利用率。

基于 DSPslice 的計算。使用 DSP slice 的除法、乘法可以異步完成,對時序幾乎沒有影響。

不使用廠商提供的原語

這是 FPGA 初學者常犯的錯誤。以Xilinx器件為例,Xilinx為時鐘緩沖器、CDC、DLL、時鐘分頻器等提供原語。充分利用器件中現(xiàn)有的原語將帶來更高效的設計,并大幅縮短開發(fā)時間。

例如:

1、 將 xpm-cdc 用于同步器將減少為其編寫 RTL 以及為該信號定義約束的麻煩。

2、使用 bufr 進行時鐘分頻會自動將生成的時鐘放置在時鐘樹上,并推斷生成的時鐘約束。

未充分利用 DSP Slice

在 Xilinx FPGA 中,DSP Slice 能夠用作累加器、加法器、減法器、除法器和乘法器。當需要這些功能時,最好使用 DSP slice 而不是 LUT/Fabric 來執(zhí)行此操作。這將減少花在設計優(yōu)化以及設計結束時的時序收斂上的時間。

有些設計需要非常高的時鐘頻率才能工作,在這種情況下,DSP Slice可以大大減少時序問題。

檢查設計中推斷的鎖存器

這是一個可以用例子很好解釋的案例。編寫狀態(tài)機時,應該有 1 個同步狀態(tài)和 2 個異步狀態(tài)。在異步的 NEXT STATE LOGIC中,如果忘記考慮所有條件,工具將推斷一個鎖存器,即 next_state 信號將被預期為設計中的生成時鐘,因為它將驅動多個 LUT。盲目忽略這種情況會導致狀態(tài)機停止,并且在出現(xiàn)故障時無法恢復。

不在每個階段運行 DRC 檢查

DRC 檢查是必須的,應該在綜合和實現(xiàn)之后進行。應正確分析 DRC 中的任何嚴重警告,并在設計中加以考慮。如果不這樣做,可能會導致系統(tǒng)不穩(wěn)定,并可能在某個時間點發(fā)生故障。

不遵循正確的命名和編碼約定

所有 RTL 設計工程師都應遵循其設計的標準命名約定,例如。

為所有輸入添加 i_

為所有輸出添加 o_

為所有信號添加 s_

為所有常量添加 c_

為所有通用信號添加 g_

時鐘應命名為 i_clk_m:例如 i_clk_122m88

復位應命名為 i_rst_

所有代碼都應正確記錄、注釋和測試(綜合前和綜合后)

復位信號的不必要使用

在 Xilinx 設備中,使用復位引腳驅動所有信號并不是首選,因為它會大大增加設計中的扇出。相反,最好將 gsr 引腳用于所有中間信號。

即:當聲明信號時,將其本身初始化為復位值。

利用率計算

在 FPGA 中,不建議完全利用所有可用資源。開始設計時,選擇一個可以容納設計并有額外 10% 到 20% 可用空間的FPGA。這樣做是為了讓路由有余地使用其內(nèi)置邏輯滿足建立和保持時間。

如果不這樣做,后續(xù)的時序很難收斂,就不得不降低系統(tǒng)時鐘。

將block design用于大型設計

block design是輕松互連 RTL 的好方法,但對于大型項目,block design在 Xilinx Vivado 中也有很多固有的錯誤,這會在設計中引起很多不必要的警告。

不檢查仿真設置中的記錄所有信號選項

在仿真設計時,最好首先檢查 vivado 中的記錄所有信號選項。這將避免為了向仿真波形添加附加信號而不得不重新運行整個仿真。這適用于與 vivado 結合使用的所有第三方仿真軟件。

審核編輯:湯梓紅

標簽:

上一篇:環(huán)球速看:Linux clock子系統(tǒng)及驅動實例
下一篇:最后一頁