Lattice Diamond 階層式設計測試平台教程

邏輯主頁

特點

以下主題透過 Lattice Diamond 2.0.1 版設計軟體進行解說。

  • Lattice Diamond 設計流程工具基本概述
  • 在頂層階層結構中實例化 VHDL 模組
  • 使用 Diamond 的設計視圖產生階層結構
  • 使用 Diamond 的設計視圖產生測試平台模板
  • 使用自訂測試平台建立 Active-HDL 工程
  • 在 Active-HDL 中檢視訊號並執行自訂測試平台

介紹

本教學將介紹如何使用 Lattice Diamond 2.0.1 版和 Active-HDL 語言,針對 Lattice LFE2-70E FPGA 進行基本的測試台建立和 Active-HDL 模擬。該測試平台將驅動組合進位超前加法器的激勵訊號,該加法器可在另一篇文章中找到更詳細的介紹。本教學提供了 VHDL 模組;使用者只需建立原理圖符號、頂層原理圖檔案和測試平台模板,即可在 Active HDL 中使用。

背景

Lattice ECP2 是一款中等密度(6 至 95K 個 LUT 和 90 至 583 個輸入/輸出)裝置,配備 sysDSP 和靈活的記憶體資源。它支援 3 至 42 個高效能 DSP 模組和 55Kbit 至 5308Kbit 的 sysMEM 嵌入式區塊 RAM。本教程是以模擬為基礎,僅使用軟體。

本教學所需軟體:
Lattice Diamond 設計軟體 2.0.1 版,以及第三方軟體 Synplify Pro for Lattice 和 Active-HDL Lattice Edition。

應用程式

建構電路

  1. 開發的第一步是啟動 Lattice Diamond 設計軟體,並使用新建專案精靈建立一個新專案。文件 → 創建 → 項目。輸入項目名稱(例如 Testbench_Tutorial)和路徑。

  2. 點選「下一步>」進入「新增來源檔案」視窗。點選「新增來源檔案」匯入在附錄提供的 VHDL 模組。新增 Top_Testbench_Tutorial.vhd、dflipflop_nbit.vhd 和 nbitsatadder.vhd,並勾選「將來源檔案複製到實作目錄」。

  3. 點選「下一步>」進入選擇裝置視窗。輸入以下資訊並點選「下一步>」。
    • 產品系列:LatticeECP2
    • 裝置:LFE2-70E
    • 性能等級:5
    • 封裝類型:FPBGA672
    • 工作條件:商業級
    • 裝置名稱:LFE2-70E-5F672C

  4. 確保設定正確,然後點擊「完成 > 」。其他 Lattice FPGA 也可以按照相同的步驟操作;只是「選擇設備」視窗中的設定會有所不同。

  5. 在「檔案清單」視窗中,按兩下任何個的 .vhd 檔案即可開啟檢視。環境應該類似下圖 1。

圖 1:Diamond 設計環境

  1. 在檔案清單視窗中,右鍵點選輸入檔案資料夾上一層的活動實作資料夾,然後從彈出式選單中選擇「屬性」。

  2. 在「專案屬性」對話方塊中,確保項目已被反白顯示,並在「頂層單元」的值儲存格中選擇「Top_Testbench_Tutorial」。此文件可能需要手動輸入。如下圖 2 所示。

圖 2:項目屬性視窗

  1. 在上方工具列中,點選「生成階層結構」按鈕,或點選「設計」→「生成階層結構」。

  2. 此時,您應該會看到設計視圖,其中 VHDL 元件按階層結構排列。現在,點選「執行 BKM 檢查」或點選「設計」→「執行 BKM 檢查」。VHDL 模組現在應該顯示綠色,表示錯誤數為 (0) 和警告數為 (0) 如下圖 3 所示。

圖 3:生成階層結構的設計視圖

  1. 在設計視圖中右鍵點選 top_testbench_tutorial,然後選擇「VHDL 測試平台範本」。如下圖 4 所示。

圖 4:建立測試台模板

  1. 在檔案清單視窗的「輸入檔案」資料夾下將建立一個新檔案。這是測試台模板,包含運行模擬所需的大部分 VHDL 程式碼。該檔案可以從此路徑運行,也可以移動到來源資料夾。現在可以將測試台的名稱從「testbench.vhd」重新命名為類似「top_testbench_tutorial_tb.vhd」的名稱,如本例所示。測試台還需要自訂測試向量來驅動頂層設計輸入端口,以及一個進程來控制時脈。需要在「tb:PROCESS」進程中進行訊號分配。將會新增一個名為 「clock:PROCESS」的進程來控制時脈。在執行設計後,可以透過在 Lattice Diamond 工具列中開啟 Synplify Pro,然後點擊「RTL View」按鈕,在 Synplify Pro 中建立驅動架構的 RTL 原理圖(可選)。它將建立一個如下圖 5 所示的 RTL 原理圖。

圖 5:RTL 原理圖

  1. 在「PORT MAP(」上方的「BEGIN」語句之前插入以下內容:

• constant PERIOD : time := 20 ns;

在「tb:PROCESS」之前插入以下 VHDL 來控制時脈:

• clock : PROCESS
• BEGIN

• clk <= ‘1’;
• WAIT FOR PERIOD/2;
• clk <= ‘0’;
• WAIT FOR PERIOD/2;

• END PROCESS;

  1. 在 BEGIN 和等待語句之間的「tb:PROCESS」中輸入以下 VHDL 來驅動輸入埠:

• ready <= ‘0’;
• n_reset <= ‘0’;

• WAIT FOR 40 NS;

• n_reset <= ‘1’;

• WAIT FOR 40 NS;

• ready <= ‘1’;

• a_in <= “001100111111111111”;
• b_in <= “000010000000000001”;

• WAIT FOR 10 NS;

• a_in <= “101100111111111111”;
• b_in <= “100010000000000001”;

• WAIT FOR 10 NS;

• a_in <= “011100111111111111”;
• b_in <= “010010000110000001”;

• WAIT FOR 10 NS;

• a_in <= “101100000100001111”;
• b_in <= “100010000000000001”;

• WAIT FOR 10 NS;

• a_in <= “101111111111111111”;
• b_in <= “111110001111100001”;

• WAIT FOR 40 NS;

• a_in <= “111111000001111111”;
• b_in <= “111011111111100001”;

• WAIT FOR 40 NS;

• a_in <= “001111111111111111”;
• b_in <= “101001100011100001”;

• WAIT FOR 40 NS;

• a_in <= “001111110000110011”;
• b_in <= “001011111111100001”;

• WAIT FOR 40 NS;

• a_in <= “100000111111111111”;
• b_in <= “111101101111100001”;

• WAIT FOR 40 NS;

• a_in <= “000000000000001111”;
• b_in <= “011010000011100110”;

  1. 程式碼應按照下面的圖 6 和圖 7 所示輸入。

圖 6:修改後的測試台,新增了時脈流程

圖 7:新增測試向量的修改後的測試台

  1. 儲存設計,然後點選上方工具列中的「模擬精靈」,或點選「工具」→「模擬精靈」。

  2. 輸入項目名稱(如本例所示)「testbench」,然後瀏覽到正確的專案位置。點選 Active-HDL 的單選按鈕,然後點選「下一步」。

  3. 點選 RTL 的單選按鈕,然後點選「下一步」。

  4. 在「新增並重新排序來源檔案」視窗中,點選「下一步」。

  5. 在「剖析用於模擬的 HDL 檔案」視窗中,檢查「top_testbench_tutorial_tb」是否設定為「模擬頂層模組:」,然後點選「下一步」。

  6. 在「總結」視窗中,確保已選取「運行模擬器」,然後點擊「完成」。

  7. Active-HDL 現在將會開啟;在「檔案」視窗中,展開「工作庫」,右鍵點選「top_testbench_tutorial_tb (behavior)」,然後選擇「初始化模擬」。這可以從下面的圖 8 看到。

圖 8:Active-HDL 模擬初始化

  1. 「結構」標籤將出現在頂部,現在可以將頂層連接埠新增至波形視窗。為此,請右鍵單擊每個訊號,然後從彈出式功能表中選擇「新增至波形」。如下圖 9 所示。

圖 9:將連接埠訊號加入波形

  1. 現在,可以透過點擊工具列中的「Run For」(運行時間)按鈕 (F5) 或在「Console」視窗中輸入「run」並指定時間(例如「run 100ns」)來執行測試台。

  2. 另一個有用的指令是「restart」,它會從測試台的開頭重新啟動模擬。測試台模擬的最終結果應類似於下面的圖 10。

圖 10:測試平台最終結果

可行、限制及改進

本教學使用 Lattice Diamond 2.0.1 版開發,並結合 Synopsis(Synplify Pro for Lattice)和 Aldec(Active-HDL Lattice Edition)等軟體支援。 Diamond 可作為獨立開發環境,與其他綜合和模擬軟體搭配使用。

總結

本教學示範如何使用 Lattice Diamond 設計軟體從範本建立自訂使用者測試平台的簡單方法。只需按照本教學概述的步驟操作,即可為任何設計建立自訂測試平台。

附加資訊

更多設計支援、產品教學、應用說明、使用者指南和其他文件可在 Lattice 網站上找到。

附錄:文件下載

LD_Testbench_Tutorial.doc (774 KB)
Top_Testbench_Tutorial.vhd (3.1 KB)
NbitSatAdder.vhd (3.0 KB)
NBitDFF.vhd (2.0 KB)
top_testbench_tutorial_tb.vhd (3.9 KB)