胡 凱,虞 健,周洋洋,王新晨,武亞恒
(中科芯集成電路有限公司,江蘇無錫 214072)
在FPGA應用開發方面,靜態時序分析通過分析用戶設計的建立保持時間來指導用戶進行FPGA應用開發。在FPGA配套軟件方面,靜態時序分析通過分析計算電路中每條時序路徑的延時,指導布局布線進行時序優化,為FPGA應用開發提供有效的技術保障[1]。
在靜態時序分析工具中算法引擎影響時序分析的效率,時序參數影響最終時序分析的正確性。FPGA每一個型號芯片針對不同的設計結構和生產工藝,時序參數存在巨大差異。因此針對每一個型號芯片,軟件都會有一套相對應的時序參數庫,作為時序分析引擎的輸入。在時序參數提取方面,由于參數數量巨大、精度要求高、仿真負載情況等原因,經常會出現仿真時序參數與實際芯片時序表現出入比較大的現象[2-4]。
目前國外Xilinx公司在FPGA時序參數提取技術方面最為成熟,其準確度被大家公認。而國內針對軟件時序參數提取方法的研究還處于起步階段,沒有形成系統規范性的方法論。隨著中美貿易沖突等因素影響,實現EDA軟件自主可控已經迫在眉睫。
針對以上情況,本文基于自主FPGA配套軟件,提出了一種以仿真時序參數為基礎、選取典型路徑進行實測,并通過分析實測延時與仿真數據、進行簡單的推算和數據擬合,得到比較準確的時序參數值的方法。該方法得到的時序參數通過與Xilinx軟件時序參數進行誤差對比測試,證明該方法具有一定的有效性和可替代性。
時序參數提取流程如圖1所示,軟件時序參數提取主要分為以下步驟:(1)軟件根據硬件邏輯單元結構構建軟件時序模型;(2)硬件根據軟件時序模型進行時序仿真,獲得仿真時序參數;(3)將芯片選定固定路徑進行實測,修正仿真數據,作為最終的軟件時序參數;(4)將沒有實測到的數據以模塊為單位進行數據擬合,得到相應數據。

圖1 時序參數提取流程圖
軟件靜態時序分析根據硬件設計模型來建立軟件時序參數模型,由硬件根據相關配置進行時序仿真并提取時序參數,輸入標準庫文件。以DICE模塊的CIN端口輸入到COUT輸出為例(如圖2硬件模型中紅色標記所示),根據硬件模型建立軟件模型,如圖2軟件模型所示。根據軟件模型輸入輸出端口及相關配置,可以建立一條軟件時序參數模型:

圖2 軟硬件模型轉換圖
tarc.set-name TCINCOUT combinational{(160,210)}{CIN}{COUT}-switch_cfg{COUTUSET=0}其中的(160,210)表示信號從CIN端口輸入到COUT端口輸出所需要的延時時間,160表示該段路徑最小延時時間為160 ps,210表示該段路徑最大延時時間為210 ps[5]。
軟件時序參數中的基礎參數由硬件仿真先提供基礎版本數據。根據軟件時序參數模型和配置屬性,電路設計通過后仿真方式提取指定路徑的時序參數值。時序仿真流程如圖3所示,每個模塊首先根據上文描述的模塊時序軟件模型構建指定路徑的設計用例;然后通過Cadence工具Virtuoso建立電路仿真環境,接上電路相應的輸入輸出負載,導出相應的網表文件;打通需要仿真的指定路徑開關進行時序仿真;最后通過工具Wave_view測量指定路徑輸入輸出波形差來確定指定路徑延時值[6]。
通過時序仿真,在不同的溫度、電壓條件下,每條特定路徑可以得到一個不同的延時值。選取其中最大最小的2個值作為該條路徑的最小最大延時填入圖3所示的lib文件中。

圖3 時序仿真流程圖
仿真數據是在理想狀態下的測量值,由于芯片生產工藝等因素,實際芯片門延時和線延時會有一定的差異,因此在樣品批次需要對芯片進行實測來修正仿真數據,并建立芯片速度等級。
芯片內部模塊的路徑延時值非常小,一般為皮秒級,由于測量儀器精度原因很難在開發板上進行實測且實際測量誤差會非常大,因此本文采用指定路徑多級串聯的方式進行實測,以減少測量誤差,保證延時數據的正確性。時序參數實測修正方法如圖4所示,如測量DICE中CIN-COUT的延時,首先通過測試腳本構建2個測試用例carry_337和carry_537,carry_337含有337個DICE,carry_537含有537個DICE,保證每個DICE中都打通相同的CIN到COUT通路。每個測試用例根據布線資源使用相同的路徑將DICE進行串聯,保證2個測試連接方式相同;然后分別測量carry_337和carry_537的延時數據,根據d=(d537-d337)/(537-337),計算出DICE上CIN-COUT的延時數據[7-9]。
測試時,測試用例設計采用固定信號從IO端口進入,然后經過需要測試的組合邏輯,最后從IO端口輸出的模式,如圖4所示。

圖4 延時實測示意圖
實測環境如圖5所示,主要由PC機、示波器、信號源、開發板、芯片、下載器等組成。

圖5 實測環境圖
上板測試時通過外加低頻100 kHz的波形信號,示波器測量信號經過上述邏輯后的波形位移差來確定指定路徑的延時,測量結果如圖6、7所示,337個slice打通從CIN到COUT端口串聯的實測延時為106.20 ns,537個slice打通從CIN到COUT端口串聯的實測延時為144.47 ns。

圖6 信號延時示波器測量圖(337個slice)

圖7 信號延時示波器測量圖(537個slice)
將用來對比的2個測試用例實測延時做差,從而可以去除輸入連接線及IO的差異。將差值除以2個對比測試用例相同路徑差異個數便可以得出每一段需要測量的指定路徑延時。如上文中的2個對比測試用例carry_337和carry_537,通過做差除以2個測試用例的串聯從CIN到COUT端口的數量差,可以得出每個CIN到COUT的實測延時為191 ps。通過這個算出的實測值,就可以去修正原來仿真得出的仿真時序參數。比如原先仿真值認為該段延時為180 ps,則需要根據實測情況,將仿真值進行一定比例的擴大形成最終值,使得最終值應該略大于最差條件下測量出來的實測值。
由于整個芯片路徑數量巨大,實際測試不可能做到全部覆蓋。本文主要做了DICE、DSP、IOB等主要模塊的主要通路的實測分析。每一個模塊通過實測主要通路,得出一個實測與仿真的比例系數,應用到該模塊的其他通路中。最后通過大量測試用例實測與時序分析對比,進行特定參數修正,形成最終與芯片相符合的軟件時序參數,作為靜態時序分析工具的輸入。由于同一芯片不同生產批次生產的芯片具有一定的差異性,因此需要對每一批次生產的芯片進行重要模塊時序參數測量,并與基準參數作對比,形成大概的比例系數,并以比例系數的形式導入軟件,軟件可以根據不同批次的芯片特點,動態選擇比例系數進行時序報告。
為了證明本文提出的方法具有一定的合理性及對Xilinx軟件時序參數的可替代性,本文采用了自主芯片與Xilinx芯片軟硬件對比測試方法。采用確定性布線方式分別在自主FPGA芯片和Xilinx的XC5VLX330芯片上進行對比性測試,通過分析路徑延時值來反映相應延時參數的準確性,測試流程如圖8所示。

圖8 對比測試流程圖
XC5VLX330芯片測試流程為:(1)XC5VLX330芯片對確定性布線測試用例進行確定路徑實測延時;(2)Xilinx ISE軟件對測試用例進行靜態時序分析,得出軟件分析延時;(3)分析Xilinx軟件時序分析結果與實測數據的誤差。
自主FPGA芯片測試流程為:(1)自主FPGA芯片對確定性布線測試用例進行確定路徑實測延時;(2)采用自主的億芯軟件對測試用例進行靜態時序分析,得出軟件分析延時;(3)分析自主軟件時序分析結果與實測數據誤差。
在做時序分析時,時序分析軟件的效率由時序分析算法引擎確定,而分析的準確性由時序參數確定,時序參數最終決定某一條確定路徑時序分析報告報多少。一般時序分析的結果都會略悲觀于實測值,但是不能過分悲觀,需要在一定的誤差范圍內。如一個設計實際可以運行到100 MHz的運行頻率,過于悲觀的時序分析報告結果認為只能運行到20 MHz,這個結果可以確保設計沒有時序問題,可靠性可以,但是會大大影響用戶設計方案,不具備指導用戶設計的作用,缺乏有效性。通常時序分析原則是在芯片最惡劣條件下、時序分析結果略悲觀于最惡劣條件下的實測值[7]。本文針對自主FPGA芯片中不同模塊的主要路徑,專門構造了22個不同路徑的測試用例。每個測試用例以邏輯串聯的方式,將需要測量的路徑以串聯方式連接起來,如測試用例carry137串聯了137個carry,專門用于測量和軟件時序分析DICE中carry模塊的CIN端口到COUT端口延時。XC5VLX330和自主FPGA芯片測試結果如表1、表2所示,其中測試用例序號1~11為DICE模塊的主要路徑測試用例;序號12~18為DSP模塊主要路徑測試用例,序號19~20為IOB模塊主要路徑測試用例[8],序號21~22為BUFG模塊主要路徑測試用例。將同樣的測試用例分別下載到Xilinx芯片和自主芯片,實際測量路徑延時值,然后將本文提出方法提取的時序參數導入到自主時序分析軟件,進行軟件時序分析,得出軟件時序分析結果,并與Xilinx軟件針對Xilinx芯片的軟件時序分析結果進行對比。XC5VLX330芯片實測延時與軟件報告延時的整體平均誤差在高溫條件下為47.21%,常溫條件下為56.39%,低溫條件下為45.99%。自主FPGA芯片實測與軟件報告的平均誤差在高溫條件下為37.85%,常溫條件下為46.87%,低溫條件下為42.48%。在相同測試用例條件下,自主軟件利用本文方法提取的時序參數平均誤差小于Xilinx軟件的誤差,并且每個測試用例軟件分析延時都大于芯片最差工作條件下的實測延時,從而可以保證芯片在最惡劣條件下時序分析的有效性。

表1 XC5VLX330測試表

表2 自主FPGA芯片測試表
本文提出了一種針對自主FPGA芯片提取軟件時序參數的方法。通過測試,提取的軟件時序參數誤差在有限范圍內,可以保證時序分析的有效性,并且在芯片最惡劣條件下可以滿足芯片時序分析的需求,從而保證了時序分析的有效性。試驗結果表明,該方法在實際工程領域具有一定的可行性,并且具有替代Xilinx軟件時序參數分析的可行性。但是本方法也存在一定的局限,如在實測驗證方面,首先需要手動建立特定路徑的測試用例,沒有形成自動化測試流程,沒辦法滿足覆蓋整個芯片所有邏輯資源的大規模測試要求。其次,由于測量儀器的精度問題,如示波器的測量單位是納秒,而一般一段延時單位是皮秒級,因此許多沒有辦法串聯起來的路徑無法做到準確測試,只能通過所在邏輯單元其他可以測量的延時參數形成比例系數,進行數據擬合,這類參數的準確度無法保證。針對上述問題,后續需要進一步提出改進方案,提高時序參數的準確度。

續表2