基于FPGA的SoC原型驗證的設計與實現
為了減少功耗,SoC設計中使用了門控時鐘(clockgating),如圖4所示,對于FPGA來說這種門控時鐘容易產生毛刺,導致數據不正確,所以在FPGA設計中要使用時鐘使能寄存器代替門控時鐘。本文引用地址:http://www.104case.com/article/191152.htm
2.2.2 設計綜合
綜合是將較高級抽象層次的描述轉換成較低層次描述,在這里就是把HDL程序轉化成標準的門級結構網表。本設計采用的EDA工具是Sy-nopsys公司的Synplify,將SoC的各個模塊分別進行綜合,綜合時要加約束文件和Altera公司的相應器件的庫文件,產生一個FPGA網表文件。
2.2.3 等價性檢查
形式驗證(Formal Verification)主要用來在覆蓋所有可能輸入情況下,檢查是否與給定的規范一致。等價性檢查(equivalence check-ing)是形式驗證中的一部分,它主要是檢查兩個門級網表(gate-level netlisf)之間是否一致,保證網表處理后不會改變電路的功能,或者檢查RTL和門級網表之間是否一致,保證網表能正確地實現RTL代碼所描述的功能,或者檢查RTL間是否一致,保證兩種RTL描述邏輯一致。這種方法主要是用來尋找實現(Implementation Design)中的缺陷,而不是設計中的缺陷。由于芯片開發中,設計代碼將不斷的更改,都需要
更新FPGA的鏡像文件,這樣在頻繁的鏡像制作過程中,可能會因為環境和設計的更改引出許多實現過程中的錯誤,而本文為了減少這些錯誤,采用的Synopsys公司的Formality工具,主要用于檢查網標和RTL間是否一致,把RTL設計作為Reference Design,而把網標作為Imple-mentation Design,在進行等價性檢查時要加入Altera器件綜合過程中需要的相關庫文件。
2.2.4 設計整合和布局布線
把多個設計文件轉換合并到一個設計庫文件中,并把整合后的設計輸入到Altera公司的QuartuslI工具,將綜合過的網表中的邏輯門映射到FPGA的內部資源中,如ALUT等。
布局是指從映射取出定義的邏輯和輸入輸出塊,并把它們分配到FPGA內部的物理位置,布線是指利用自動布線軟件使用布線資源選擇路徑試著完成所有的邏輯連接。
2.2.5 時序分析
在設計實現過程中,在映射后需要對一個設計的實際功能塊的延時和估計的布線延時進行時序分析。而在布局布線后,也要對實際布局布線的功能塊延時和實際布線延時進行時序分析。時序分析不僅可以檢查出我們代碼設計中的時序問題,還可以檢查出由于布局布線產生的時序問題。在本設計中用Altera公司的TimeQuest來進行時序分析,通過對原型設計增加時序約束,提高了工作主頻和減少了關鍵路徑的延時。在設計中經常存在時序違約的情況,這時需要查看違約的關鍵路徑,然后查找原因,進行修改后再進行時序分析,重復整個過程直到滿足要求。
2.2.6 鏡像文件的生成和下載配置
QuartusII經過整合、布局布線等一系列操作后,最終會生成一個配置FPGA的位流文件(.sof洛式),然后利用QuartusII的Programmer工具,通過USB Blaster下載到FPGA,此時FPGA實現了原SoC設計的功能,原型驗證環境搭建完成。
3 FPGA原型驗證測試激勵的設計
測試程序在FPGA基原型驗證中起至關重要的作用,現在的SoC設計很多都采用IP復用的方式,本文所設計出的測試程序有可重用性好、功能覆蓋率高和調試簡易等特點。
測試程序的基本框架如圖5所示,具體模塊的測試程序只需要根據框架所提供的接口進行編寫相應的測試程序即可,代碼主要由以下四部分組成:
(1)系統啟動部分。主要包含系統的異常向量表和系統啟動后設置ARM內核的配置程序,如各種模式下的堆棧設置、開啟或關閉FIR和IRQ、設定中斷向量表等,在Boot_gfd.s中提供了跳到測試程序的接口。
(2)模塊測試部分。在此部分根據各個模塊的功能,編寫相應的測試函數,系統在執行時會調用這些函數,完成我們各個模塊的功能測試。
(3)頭文件部分。為了方便代碼的編寫和理解,在tyoedef.h文件中對系統的數據類型做了重新定義并包含了部分公用函數的宏定義。一個SoC系統中擁有大量的寄存器,在本設計中用Register.h文件來存放這些寄存器地址的宏定義。
評論