《電子技術應用》
您所在的位置:首頁 > EDA與制造 > 設計應用 > Stratus HLS工具在高性能雙精度浮點乘法設計中的應用流程
Stratus HLS工具在高性能雙精度浮點乘法設計中的應用流程
2018年電子技術應用第8期
苑佳紅
天津飛騰信息技術有限公司,湖南 長沙410000
摘要: 雙精度浮點乘法部件是高性能CPU的核心運算部件之一。描述了使用Cadence Stratus HLS工具設計和實現(xiàn)雙精度浮點乘法部件,探索新設計方法學在關鍵路徑延時調(diào)整、數(shù)據(jù)路徑優(yōu)化以及低功耗優(yōu)化等問題的解決方法,并探討如何將新的設計流程結合到原有項目開發(fā)中等問題。最終,高階綜合設計的RTL,在28 nm工藝下綜合實現(xiàn)頻率為2.5 GHz、面積為28 211 μm2,基本滿足高性能微處理器的開發(fā)要求,增強了在項目中更加廣泛地使用新設計方法學的信心。
中圖分類號: TP302.2
文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.189018
中文引用格式: 苑佳紅. Stratus HLS工具在高性能雙精度浮點乘法設計中的應用流程[J].電子技術應用,2018,44(8):20-23,30.
英文引用格式: Yuan Jiahong. The application flow of Stratus HLS tool in high performance double precision floating point multiplication design[J]. Application of Electronic Technique,2018,44(8):20-23,30.
The application flow of Stratus HLS tool in high performance double precision floating point multiplication design
Yuan Jiahong
Phytium Technology Co.,Ltd.,Changsha 410000,China
Abstract: Double-precision floating-point multiplication parts is one of the most important unit of high performance CPU.This article describes the use of Cadence Stratus HLS tools in 28 nm process design and implement double-precision floating-point multiplication. The frequency of this multiplication is 2.5 GHz, and its area is 28 211 square micrometers, which almost meets the requirements of high performance microprocessor development. The experiences of this work enhance the confidence of the more widely using of the new design methodology in our project.
Key words : high-level synthesis;HLS;double-precision floating-point multiplication

0 引言

    數(shù)字多媒體的廣泛應用、互聯(lián)網(wǎng)的高速發(fā)展、人工智能等新興領域的蓬勃興起,對通用處理器的計算能力要求越來越高。采用更加復雜的算法設計、探索效率更高的架構有助于提升通用處理器的性能。然而在傳統(tǒng)的寄存器傳輸級(Register Transfer level,RTL)設計流程中,設計人員完成運算功能設計時需消耗大量時間在狀態(tài)機設計、流水棧劃分和調(diào)整、端口協(xié)議、存儲設計等復雜、難以驗證和優(yōu)化的部分。而且由于RTL抽象層次較低,需要大量的時間和資源驗證RTL的功能,最后導致較長的設計周期。Stratus高階綜合工具(High-level Synthesis,HLS)基于高階綜合設計方法學,將設計層次抽象到算法級,將設計的低值且復雜的領域交給工具自動完成,設計人員能夠?qū)⒏嗟臅r間應用在算法設計、優(yōu)化、架構探索等高價值領域,提高設計效率,專注產(chǎn)品質(zhì)量的提升。本文基于Cadence公司的高階綜合工具Stratus設計和實現(xiàn)高頻低功耗的雙精度浮點乘法模塊,并在此過程中探討高階綜合完成產(chǎn)品前端設計、驗證、優(yōu)化、性能評估的方法和流程。

1 HLS應用流程

    Stratus HLS將設計抽象到算法級,對算法做硬件微架構實現(xiàn)的構想后,使用高級語言SystemC/C/C++描述設計,并在高級語言層對設計做充分的非時序功能驗證,如圖1中設計階段1所示。在設計階段2,首先需根據(jù)設計目標設置高階綜合的約束文件及工藝庫。然后將設計階段1完成的SystemC代碼和約束文件灌入Stratus HLS工具,由工具完成狀態(tài)機、寄存器插入、流水線級數(shù)設置等控制電路,生成符合時序、面積、性能要求的RTL代碼。最后對RTL代碼做PPA檢查,選擇使用邏輯綜合工具再一次對HLS生成的RTL代碼做性能評估,如果符合要求,則開始做RTL的完整功能驗證。如果PPA檢查不能達到目標要求,則需要對關鍵路徑進行分析、優(yōu)化,此時可以充分利用HLS工具自帶的優(yōu)化功能加速優(yōu)化設計迭代的完成過程。功能驗證正確后,則可以進入設計階段3,邏輯綜合后,設計交由后端做邏輯實現(xiàn)。

wdz5-t1.gif

2 Fmul64 SystemC設計

    雙精度浮點乘法運算部件是通用CPU內(nèi)最基本運算部件之一,其應用要求高階綜合獲得RTL設計滿足2.5 GHz的高頻率,三站流水,并且其面積和功耗較小。此部分將介紹Fmul64的主要結構和SystemC設計方法。

2.1 Fmul64_hls總體結構

    Fmul64的SC設計總體框圖如圖2所示,sc_main()是SystemC設計的top文件,連接測試環(huán)境Testbench和待測設計DUT。DUT即Fmul64,用SystemC語言中的SC_MODULE類實現(xiàn),作為此次設計的頂層模塊,同時在此模塊內(nèi)定義模塊的端口、時鐘信號、復位信號、輸入端口、輸出端口等,作為設計的頭文件,并包含在其他文件內(nèi)使用。SystemC語言提供兩個方法用于設計功能的描述:SC_METHOD和SC_CTHREAD。其中SC_METHOD用于組合邏輯電路實現(xiàn),內(nèi)部不能包括wait()語句,而要實現(xiàn)的Fmul64是流水線設計,所以使用SC_CTHREAD用于乘法運算功能的實現(xiàn),函數(shù)命名為run。

wdz5-t2.gif

2.2 SC_CTHREAD方法實現(xiàn)

    SC_CTHREAD進程實現(xiàn)如圖3所示,首先設置需要復位的信號和復位值,然后是定義無限循環(huán)語句,并在內(nèi)部調(diào)用輸入輸出信號的讀寫函數(shù)和含3階波茲編碼的乘法運算函數(shù)do_booth3_multply。這里用HLS命令HLS_PIPELINE_LOOP設置設計類型,即吞吐率參數(shù)PIPELINE_Ⅱ設為1,即將Fmul64_hls設置為流水線型設計,并用HLS_CONSTRAINT_LATENCY設定流水線拍數(shù)LATENCY為3。Stratus HLS允許將吞吐率和延遲使用宏定義的形式,便于架構探索時更改參數(shù)。

wdz5-t3.gif

2.3 Fmul64行為級實現(xiàn)

    雙精度浮點乘法運算過程如圖4所示。首先對輸入乘法操作數(shù)做數(shù)據(jù)的預處理,然后做尾數(shù)相乘的乘法運算,在這里,本文做了架構探索,一種架構是使用3階波茲編碼算法實現(xiàn)雙精度浮點尾數(shù)乘法運算;另一種是使用乘號“*”直接完成浮點尾數(shù)相乘運算,讓工具來完成乘法運算的具體實現(xiàn)。兩種架構的驗證環(huán)境、優(yōu)化流程是相同的,所以后續(xù)設計將以Fmul64波茲編碼設計為例進行介紹,最后會介紹兩者邏輯綜合結果。設計中使用到的高階綜合指導語句(主要是HLS_DPOPT_REGION)如圖5所示。

wdz5-t4.gif

wdz5-t5.gif

    至此,SC代碼設計已完成,并且按照設計目標的要求使用高階綜合指導語句設置了流水線和時序要求,可以開始后續(xù)的驗證和高階綜合處理。雖然設計是使用高級語言SystemC描述,但是其微架構仍然是符合硬件設計和實現(xiàn)規(guī)則的,所以需要注意保持良好的SystemC代碼風格非常重要。

3 功能驗證

    Stratus HLS工具提供統(tǒng)一的驗證平臺,所以在SC級的測試用例可以同樣用于RTL代碼的驗證。但是,SC設計是不包含時序信息的,所以包含時序的RTL驗證也是必需的,除了在Stratus內(nèi)回歸測試SC代碼的用例,還將使用已有的UVM平臺,對RTL和SC設計同時驗證,一方面驗證RTL的功能并收集RTL覆蓋率,另一方面一定程度上驗證SC設計和RTL代碼的一致性。所以HLS設計的驗證分為2個方面:

    (1)基于Stratus HLS的驗證

    ①SC行為級模型驗證(SystemC behavioral model)

    ②綜合的SC RTL模型驗證(Synthesized SystemC RTL model)

    (2)基于UVM的SystemC&RTL的驗證

    Verilog RTL實現(xiàn)驗證(Verilog RTL implementation)

3.1 基于Stratus HLS的驗證

    基于Stratus HLS環(huán)境,本文使用SystemC建立設計的Testbench環(huán)境,其結構框圖如圖6所示。時鐘和復位信號的定義是在主函數(shù)內(nèi),并連接到測試模塊和待測設計模塊。Testbench中共實現(xiàn)兩個進程,Stimuli和Monitor。Stimuli進程里調(diào)用SystemC語言提供的隨機數(shù)據(jù)生成函數(shù),生成測試的隨機數(shù)據(jù)。Monitor進程實現(xiàn)簡單的雙精度乘法運算模型,用于待測設計的參考模型,并在此處監(jiān)測DUT的結果輸出,獲得DUT結果并與參考模型結果做比對,判斷結果的正確性。Stratus HLS工具內(nèi)可以自動實現(xiàn)對SC設計和RTL設計使用同一個Testbench驗證,只要在project.tcl中定義不同的define_sim_config時,指定為RTL_C是對SC設計驗證或者指定RTL_V是測試高階綜合生成的RTL模型。

wdz5-t6.gif

3.2 基于UVM的SystemC&RTL驗證

    UVM驗證環(huán)境是既有的乘法運算驗證環(huán)境,如圖7所示,可以對Fmul64_hls設計做完整的功能驗證、覆蓋率收集、斷言監(jiān)測,同時將SC設計也放到了驗證環(huán)境里,但是需要對其外包一個殼,可以由Stratus工具自動生成。此部分功能驗證即如圖1 Stratus HLS設計流程的設計階段2中的功能驗證2,因為高階綜合生成RTL代碼的可讀性較差,所以如果測試用例結果不一致,尤其SC設計的結果也報錯的話,則需要將測試用例轉(zhuǎn)到Stratus HLS環(huán)境下進行調(diào)試。

wdz5-t7.gif

4 性能評估

4.1 優(yōu)化設計

    Stratus HLS在將SC設計轉(zhuǎn)化為RTL代碼時,由于評估的謹慎性,會給出更加悲觀的結果,因此本文選擇使用邏輯綜合工具評估HLS設計的PPA檢查,邏輯綜合約束參考設計實際實現(xiàn)要求,所以比HLS工具中的邏輯綜合約束設置得更加細致,最后根據(jù)邏輯綜合結果來決定是否做設計優(yōu)化的迭代。

    在時序較為緊張的時候,Stratus通常需要很長的時間來做高階綜合優(yōu)化和調(diào)度,這就使設計優(yōu)化迭代的時間非常長,是違背使用高階綜合工具提高設計效率初衷的。但是Stratus提供多種有效的數(shù)據(jù)路徑優(yōu)化方法,可以有效地改善路徑延遲,提高高階綜合效率。比如在設計優(yōu)化迭代過程中添加DPOPT,如圖5 SC實現(xiàn)Fmul64過程中的主要HLS指導語句所示。DPOPT會調(diào)用內(nèi)部集成的邏輯綜合工具優(yōu)化這部分設計,而且DPOPT通常會使Stratus綜合一版RTL用時大為縮短,從而大幅提高優(yōu)化設計的效率。

4.2 低功耗優(yōu)化

    Stratus工具自帶低功耗優(yōu)化選項,可以自動完成寄存器門控時鐘的插入、時鐘樹優(yōu)化、狀態(tài)機優(yōu)化等。本文的設計是運算功能模塊,要求在沒有此模塊運算指令的情況下,模塊完全關閉,動態(tài)功耗為零;有乘法運算指令的情況下,動態(tài)功耗和靜態(tài)功耗能夠盡可能小。Fmul4_booth3的初次功耗評估結果如表1所示。

wdz5-b1.gif

    通過上述數(shù)據(jù),可以了解到Fmul64_HLS設計在無乘法運算時,滿足動態(tài)功耗為零的要求,但是在有乘法運算指令時的功耗卻比較大,不滿足功耗要求,需要對功耗做進一步的優(yōu)化。分析設計發(fā)現(xiàn)DPOPT功耗和資源共享都會引起功耗的增加,所以在project增加以下選項優(yōu)化功耗:

    (1)set_attr  dpopt_with_enable   on

    (2)set_attr  sharing_effort_parts  low

    dpopt_with_enable對RTL架構的影響如圖8所示。

wdz5-t8.gif

    顯然dpopt_with_enable=on的RTL架構是對靜態(tài)功耗的優(yōu)化大有幫助的。

    sharing_effort_parts =low 會停止演算器的共享。經(jīng)分析,這個選項可以減少不必要的演算器的共享從而可優(yōu)化動態(tài)功耗以及時序。優(yōu)化之后的Fmul64_booth3功耗如表2所示。

wdz5-b2.gif

    可以看到通過設置優(yōu)化選項,靜態(tài)功耗和動態(tài)功耗均有所優(yōu)化,其中靜態(tài)功耗約優(yōu)化了5%,動態(tài)功耗優(yōu)化了約39%。寄存器門控比率達到100%,完全由工具完成寄存器門控時鐘的插入和低功耗優(yōu)化,提高設計效率。

4.3 邏輯綜合結果

    高階綜合設計的RTL功能驗證正確后,則設計可以做邏輯綜合。對兩種Fmul64架構分別作了邏輯綜合,在28 nm工藝下,邏輯綜合結果如表3所示。

wdz5-b3.gif

    Stratus HLS給出的面積評估結果與邏輯綜合工具的結果有所不同,經(jīng)分析,Stratus HLS綜合約束并不嚴格,所以面積、延遲的評估數(shù)據(jù)存在誤差。而對比兩種架構綜合結果,可以看到Fmul64用乘號代替波茲編碼算法的設計面積上更優(yōu)化,而時序結果相對較差,但是,其在設計時間的節(jié)省是非常顯著的。

5 結論

    Stratus HLS工具改變了設計的抽象層次,所以其在工程中的應用流程與傳統(tǒng)RTL設計是有區(qū)別的,驗證環(huán)境、調(diào)試流程、驗證收斂的依據(jù)、邏輯綜合優(yōu)化的時間等問題的解決提前到了算法級,而且可以將微架構的探索加入到設計流程,不變的是設計人員仍然需要從硬件的角度考慮SC代碼的微架構設計。Stratus HLS工具強大的狀態(tài)機自動化設計、資源自動調(diào)度和共享、低功耗優(yōu)化等功能,使設計人員能夠?qū)⒏嗟臅r間用于架構探索或者算法優(yōu)化,極大的縮短設計周期,拓展設計人員可控制設計規(guī)模上限,滿足工程項目的時間進度要求,也增強了我們在工程項目中推廣使用高階綜合工具的信心和決心。



作者信息:

苑佳紅

(天津飛騰信息技術有限公司,湖南 長沙410000)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国内成人精品2018免费看| 一本久久综合亚洲鲁鲁五月天| 欧美精品一区二区在线观看| 久久久在线视频| 午夜在线精品偷拍| 亚洲一区二区在线看| 99国产精品久久久久久久| 亚洲国产欧美一区二区三区久久| 欧美一区二区女人| 欧美一区二区高清| 午夜国产精品视频免费体验区| 亚洲手机视频| 亚洲与欧洲av电影| 亚洲网站视频福利| 亚洲一区二区高清| 亚洲一区二区三区在线看| 一区二区三区视频在线播放| 亚洲精选视频免费看| 亚洲精品国精品久久99热一| 亚洲全黄一级网站| 亚洲精品欧美日韩专区| 亚洲精品久久视频| 99国产一区| 亚洲视频久久| 亚洲综合视频一区| 性感少妇一区| 久久国产手机看片| 亚洲国产精品精华液网站| 亚洲国产欧美国产综合一区| 亚洲国产综合在线看不卡| 亚洲精品中文字幕在线观看| 99国产麻豆精品| 中文在线资源观看网站视频免费不卡| 亚洲午夜国产成人av电影男同| 亚洲午夜性刺激影院| 亚洲永久精品大片| 欧美在线网站| 久久综合精品一区| 欧美精品激情| 国产精品v一区二区三区| 国产精品一区二区黑丝| 国内久久视频| 亚洲国产精品一区二区三区 | 国产精品亚发布| 国产亚洲精品一区二区| 在线观看欧美精品| 亚洲伦理网站| 午夜性色一区二区三区免费视频| 亚洲第一精品夜夜躁人人爽| 亚洲人成网站影音先锋播放| 一区二区三区四区五区精品| 欧美一区精品| 欧美aa在线视频| 国产精品v欧美精品∨日韩| 国内精品久久久久影院色| 亚洲黄色小视频| 亚洲天堂成人| 亚洲黄色影片| 亚洲欧美日韩国产综合在线| 久久婷婷av| 欧美午夜精彩| 国内精品福利| 夜夜嗨网站十八久久 | 久久激情久久| 正在播放欧美视频| 久久久99精品免费观看不卡| 欧美日本国产| 国产综合婷婷| 99成人精品| 亚洲韩国青草视频| 午夜精品久久久久久久久| 男同欧美伦乱| 国产日韩精品一区二区| 亚洲三级观看| 久久福利精品| 亚洲专区免费| 欧美国产在线视频| 国产午夜亚洲精品理论片色戒| 亚洲精品国精品久久99热一| 午夜精品在线看| 在线视频日本亚洲性| 久久久久网址| 国产精品美女久久福利网站| 亚洲欧洲一区| 久久精品欧美日韩| 香蕉久久精品日日躁夜夜躁| 欧美精品久久久久久久久老牛影院| 国产亚洲毛片| 亚洲一区二区视频| 一二三区精品| 欧美v国产在线一区二区三区| 国产视频在线观看一区| 一区二区日韩| 99国产麻豆精品| 女女同性精品视频| 国产自产精品| 香蕉尹人综合在线观看| 亚洲免费在线播放| 欧美日韩四区| 亚洲欧洲在线一区| 最新69国产成人精品视频免费| 久久精品国产免费看久久精品| 国产精品成人一区二区| 亚洲麻豆av| 99ri日韩精品视频| 欧美国产亚洲视频| 亚洲国产人成综合网站| 亚洲国产福利在线| 久久尤物视频| 国产一区清纯| 欧美在线视频在线播放完整版免费观看| 亚洲一区二区三区四区在线观看| 欧美日本免费| 亚洲黄色成人网| 99国产精品| 欧美日韩视频在线观看一区二区三区 | 亚洲人成在线观看| 美女诱惑一区| 一区二区三区在线高清| 久久www成人_看片免费不卡| 久久精品夜夜夜夜久久| 国产视频在线观看一区二区三区| 亚洲欧美日本国产专区一区| 午夜综合激情| 国产精品一区久久| 亚洲专区免费| 久久精品国产在热久久 | 亚洲第一精品在线| 久久久久久一区| 伊人一区二区三区久久精品| 久久精品女人| 亚洲激情电影在线| 午夜国产精品视频| 亚洲欧美在线免费| 欧美午夜一区| 亚洲无亚洲人成网站77777| 亚洲一区二区三区四区在线观看| 欧美午夜在线视频| 亚洲在线观看视频| 久久精品亚洲一区二区三区浴池 | 国产欧美日本在线| 久久国产精品久久精品国产| 狂野欧美一区| 亚洲伦理中文字幕| 亚洲欧美日韩中文播放| 国产日韩亚洲欧美综合| 久久精品道一区二区三区| 免费在线播放第一区高清av| 亚洲精品永久免费精品| 国产精品99久久久久久人| 国产精品日韩一区| 久久高清福利视频| 欧美精品首页| 亚洲先锋成人| 久久久噜噜噜久久人人看| 亚洲缚视频在线观看| 亚洲天堂第二页| 国产亚洲人成a一在线v站| 亚洲日本欧美天堂| 国产精品成人观看视频国产奇米| 午夜视频久久久久久| 免费日本视频一区| 一本久久综合亚洲鲁鲁| 久久久999| 亚洲另类在线视频| 久久动漫亚洲| 亚洲国产合集| 亚洲欧美激情视频| 影音欧美亚洲| 亚洲午夜高清视频| 黄色成人在线网站| 亚洲一区网站| 黄色成人在线免费| 亚洲自拍偷拍色片视频| 国模吧视频一区| 亚洲一区二区欧美| 精品二区视频| 亚洲综合成人婷婷小说| 一区在线播放| 亚洲欧美第一页| 欲香欲色天天天综合和网| 亚洲一区二区三区激情| 一区免费观看| 午夜在线一区| 亚洲精品小视频| 久久资源在线| 亚洲永久免费视频| 欧美日韩国产精品| 久久精品理论片| 国产精品亚洲综合久久| 日韩一级黄色av| 狠狠色狠狠色综合日日小说| 亚洲综合三区| 亚洲黄色av| 久久青草欧美一区二区三区| 亚洲午夜精品| 欧美日韩高清在线| 亚洲精品久久嫩草网站秘色 | 一区二区三区成人| 免费看亚洲片|