高級綜合工具StratusHLS學習筆記(4)

HLS中使用浮點數(shù)

學習目標:

  • 使用浮點數(shù)
  • 換用自己的庫進行高級綜合

HLS中的浮點數(shù)

stratus HLS提供內(nèi)置的浮點數(shù)村斟,可以實現(xiàn)常規(guī)的加減乘操作昔汉,類型為:

cynw_cm_float<e,f,accurcy,rounding mode,NaN handle>

該類型共有5個模板參數(shù)丢胚,分別如下所示:

  • e:指數(shù)位寬,為浮點數(shù)的指數(shù)位數(shù)
  • f:尾數(shù)位寬倦蚪,為浮點數(shù)的尾數(shù)位數(shù)
  • accuracy:精確度碉碉,這一參數(shù)可以設(shè)置是否需要實現(xiàn)完整的IEEE標準浮點數(shù)殴穴。若需要實現(xiàn)則可以提高計算精度凉夯,若不實現(xiàn)則可以縮小面積提升性能。
  • rounding mode:取整模式采幌,推測為浮點數(shù)尾數(shù)處理中如何取整劲够,具有多種模式
  • NaN handle:用于選擇如何處理NaN

對于指數(shù)位寬和尾數(shù)位寬,為每一個浮點數(shù)都具有的參數(shù)休傍,不用過多解釋征绎;對于精確度,具有多種選項,每種選項具有不同的精度-代價折中人柿,如下表所示:

標號 說明
CYNW_REDUCED_ACCURACY 默認情況柴墩,使用低精度低代價實現(xiàn)方法
CYNW_BEST_ACCURACY 使用IEEE標準的浮點數(shù)
CYNW_NATIVE_ACCURACY 使用C++中的浮點數(shù),不可綜合
CYNW_EXCEPTION_ACCURACY 使用IEEE標準帶異常的浮點數(shù)精度

對于取整模式rounding凫岖,可選擇的如下表所示:

標號 說明
CYNW_NEAREST 默認情況江咳,向最接近的偶數(shù)取整
CYNW_POSINF 向上取整
CYNW_NEGINF 向下取整
CYNW_RNDZERO 向零取整
CYNW_NEAREST_AWAY 四舍五入

對于NaN處理,有下表所示:

標號 說明
0 返回恒定的NaN
1 默認情況哥放,標準IEEE的NaN處理方法歼指,左操作數(shù)優(yōu)先
2 標準IEEE的NaN處理方法,右操作數(shù)優(yōu)先

使用方法

在設(shè)計中甥雕,需要添加頭文件cynw_cm_float.h即可使用以上浮點數(shù)類型踩身,使用時如同常規(guī)數(shù)據(jù)類型直接使用,可實現(xiàn)加減乘等操作社露,如下所示:

#include "cynw_cm_float.h"
typedef cynw_cm_float<5,10> DT;
// DT a,b,c;c = a+b 可實現(xiàn)

project.tcl中挟阻,需要在添加庫的同時添加使用浮點庫,如下所示:

use_hls_lib "cynw_cm_float"

隨后進行常規(guī)的仿真流程即可呵哨,下圖為CYNW_REDUCED_ACCURACY的float16加法器的仿真和綜合結(jié)果赁濒,使用的庫是自帶的55nm庫:

時序相關(guān)

時序設(shè)置

對于時序而言,在HLS有多個參數(shù)可以設(shè)置孟害,包括:

  • 時鐘頻率(必須)
  • 時鐘非理想因素
  • 輸入與輸出延遲

這些因素在常規(guī)流程中使用SDC進行設(shè)置拒炎,在HLS流程中在代碼或project.tcl中設(shè)置。首先考慮時鐘非理想因素挨务。即uncertainty击你,在HLS中使用cycle_slackproject.tcl中設(shè)置,如下所示:

set_attr clock_period 10.0
set_attr cycle_slack 1.5

上述設(shè)置時鐘周期為10ns谎柄,非理想因素為1.5ns丁侄,等效時鐘周期為8.5ns。輸入與輸出延遲在代碼中直接設(shè)置朝巫,使用HLS_SET_INPUT_DELAYHLS_SET_DEFAULT_INPUT_DELAY設(shè)置輸入延遲鸿摇,其中:

  • HLS_SET_INPUT_DELAY( port, float delay, "char* name" ):用于設(shè)置特定端口
  • HLS_SET_DEFAULT_INPUT_DELAY( float delay, "char* name" );:用于設(shè)置所有未被特定設(shè)置的端口

對于輸出而言,同理有:

  • HLS_SET_OUTPUT_DELAY(signal_id, delay );:用于設(shè)置特定端口
  • HLS_SET_DEFAULT_OUTPUT_DELAY( delay);:用于設(shè)置所有未被特定設(shè)置的端口

stratus HLS一般使用寄存器輸出劈猿,因此除非輸出端口拙吉,輸出延遲可以不進行設(shè)置。設(shè)置端口延遲如下所示揪荣,以下例子中筷黔,設(shè)置了w_in端口的輸入延遲為0.5ns,其他端口(x_in和data_valid)均為0.3ns仗颈。

void dut_template::t() {
    HLS_SET_INPUT_DELAY(w_in,0.5,"data0_delay");
    HLS_SET_DEFAULT_INPUT_DELAY(0.3,"data1_delay");
    {
        HLS_DEFINE_PROTOCOL("reset");
        w_in.reset();
        x_in.reset();
        y_out.reset();
        data_valid.write(0);
        wait();
    }
    while(1) {
        HLS_PIPELINE_LOOP(SOFT_STALL, 1, "main_loop");
        DT x_val = x_in.get();
        DT w_val = w_in.get();
        DT out_val = x_val + w_val;
        y_out.put(out_val);
    }
}

時序違例

HLS一般不會出現(xiàn)時序違例佛舱,因為可以自動進行流水線的插入操作,經(jīng)過試驗,即使float計算ip也可以在時序不滿足時自動進行流水線插入以避免時序違例请祖,同時stratus HLS將時序違例看做“錯誤”订歪,當出現(xiàn)時序違例時,軟件會拋出錯誤Error并打印時序違例的信息损拢,一般時序違例來源于人工指定過多時序等陌粹,例如強制要求某段代碼在指定的時鐘周期內(nèi)完成。

使用自己的庫

stratus HLS中內(nèi)置一個55nm的庫福压,在具體工藝中掏秩,需要使用自己的庫進行評估,在project.tcl中荆姆,使用如下命令:

use_tech_lib "path.lib"

注意需要使用的是.lib庫而不是.db庫蒙幻。隨后重新生成makefile,即可使用自己的庫進行評估胆筒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末邮破,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子仆救,更是在濱河造成了極大的恐慌抒和,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彤蔽,死亡現(xiàn)場離奇詭異摧莽,居然都是意外死亡,警方通過查閱死者的電腦和手機顿痪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門镊辕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚁袭,你說我怎么就攤上這事征懈。” “怎么了揩悄?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵卖哎,是天一觀的道長。 經(jīng)常有香客問我删性,道長亏娜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任镇匀,我火速辦了婚禮,結(jié)果婚禮上袜啃,老公的妹妹穿的比我還像新娘汗侵。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布晰韵。 她就那樣靜靜地躺著发乔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪雪猪。 梳的紋絲不亂的頭發(fā)上栏尚,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音只恨,去河邊找鬼译仗。 笑死,一個胖子當著我的面吹牛官觅,可吹牛的內(nèi)容都是我干的纵菌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼休涤,長吁一口氣:“原來是場噩夢啊……” “哼咱圆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起功氨,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤序苏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捷凄,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忱详,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年纵势,在試婚紗的時候發(fā)現(xiàn)自己被綠了踱阿。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡钦铁,死狀恐怖软舌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牛曹,我是刑警寧澤佛点,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站黎比,受9級特大地震影響超营,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阅虫,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一演闭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颓帝,春花似錦米碰、人聲如沸窝革。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虐译。三九已至,卻和暖如春吴趴,著一層夾襖步出監(jiān)牢的瞬間漆诽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工锣枝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厢拭,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓惊橱,卻偏偏與公主長得像蚪腐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子税朴,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345