1
賽題背景分析
低功耗設(shè)計(jì)是數(shù)字系統(tǒng)非常重要的考慮因素。為了支持低功耗設(shè)計(jì),首先要對功耗進(jìn)行計(jì)算。功耗可分為靜態(tài)功耗(漏電流引起)和動(dòng)態(tài)功耗(門翻轉(zhuǎn)引起)。在本賽題中,我們主要考慮動(dòng)態(tài)功耗的計(jì)算方法。 動(dòng)態(tài)功耗的計(jì)算公式如下: ?其中,VDD為電壓,C為等效電容,Tr為翻轉(zhuǎn)率,即單位時(shí)間內(nèi)邏輯門從0→1或從1→0的翻轉(zhuǎn)次數(shù)。我們可以把電壓和等效電容近似視為常數(shù),對于不同的電路負(fù)載,統(tǒng)計(jì)其Tr,就可以計(jì)算動(dòng)態(tài)功耗。 這道賽題的目的,就是讓大家通過VCD文件來統(tǒng)計(jì)一個(gè)電路負(fù)載的翻轉(zhuǎn)率。 如何得到翻轉(zhuǎn)率呢?我們回顧一下,在電路設(shè)計(jì)的時(shí)候,先設(shè)計(jì)其RTL(如verilog)代碼,并編寫testbench給出激勵(lì)進(jìn)行測試,如下所示: ?用常見的仿真工具跑如上RTL代碼和testbench,可得到如下的輸出結(jié)果波形: 信號(hào)變化波形圖(芯華章科技股份有限公司-Fusion Debug 提供) 仿真工具可以把上述波形輸出VCD文件,類似: ?好,現(xiàn)在重點(diǎn)來了。給定VCD文件(其實(shí)就是波形的文本表示),我們就可以統(tǒng)計(jì)翻轉(zhuǎn)率,進(jìn)而利用上述的功耗公式來計(jì)算動(dòng)態(tài)功耗,它們之間的邏輯關(guān)系如下圖: ?在本賽題中,我們只關(guān)注如何從VCD文件(對應(yīng)波形)到翻轉(zhuǎn)率的解析。2
賽題要點(diǎn)解析
本賽題主要就是進(jìn)行VCD文件的解析,然后根據(jù)題目的要求,得到不同的統(tǒng)計(jì)結(jié)果(如翻轉(zhuǎn)次數(shù)tc,信號(hào)邏輯值為1的時(shí)間t1, 信號(hào)邏輯值為0的時(shí)間t0,信號(hào)邏輯值為x的時(shí)間tx,以及信號(hào)邏輯值為1的概率又稱靜態(tài)概率sp)、某個(gè)時(shí)間窗口的統(tǒng)計(jì)結(jié)果、不同層次信號(hào)的統(tǒng)計(jì)結(jié)果。 因此,首先需要定義一些數(shù)據(jù)結(jié)構(gòu)表示信號(hào)時(shí)間序列,可以用數(shù)組或者vector等,將VCD文件讀取、解析為這些信號(hào)時(shí)間序列變量,再針對這些變量進(jìn)行統(tǒng)計(jì)分析,得到所需的輸出。如下圖所示: ?2.1 VCD文件解析
VCD文件解析的思路如下:-
首先掃描文件頭,建立每個(gè)信號(hào)對應(yīng)的數(shù)組或者vector。
-
將VCD文件看作是不同時(shí)間段的信號(hào)改變,對于一個(gè)時(shí)間段,掃描各個(gè)變量的值的變化,記錄其變化,就構(gòu)成了時(shí)間序列。
?這樣,掃描完一個(gè)文件之后,各個(gè)變量隨時(shí)間變化的序列就存下來了。
2.2統(tǒng)計(jì)輸出
有了信號(hào)的時(shí)間序列值,可以根據(jù)題目要求打印統(tǒng)計(jì)結(jié)果。主要考慮幾方面:-
翻轉(zhuǎn)率等參數(shù)的計(jì)算,需要統(tǒng)計(jì)1和0的時(shí)間。
-
一個(gè)時(shí)間窗口的統(tǒng)計(jì)值,需要截取一個(gè)時(shí)間窗口進(jìn)行計(jì)算。
-
層次化的信號(hào),需要從文件中讀取信號(hào)間的層次關(guān)系進(jìn)行計(jì)算。
2.3多核加速
在題目要求中提到了多核加速,假如你的電腦有多個(gè)核,就可以用多線程方式加速。多核加速的本質(zhì)是將任務(wù)劃分到多個(gè)線程,讓多個(gè)線程在多個(gè)核上同時(shí)運(yùn)行從而提高計(jì)算速度。 加速方法有兩種,一種是將文件讀入到內(nèi)存,然后將不同的行分配到不同的核/線程來處理,我們稱之為橫向劃分;另外一種是將文件切分開分到不同的核,每個(gè)核處理文件的不同段,我們稱之為縱向劃分。 ?可以采用pthread或者openMP進(jìn)行并行編程,需要注意線程間的同步和鎖機(jī)制。2.4文件處理
當(dāng)VCD文件很大時(shí),為了減少一次性讀入占用太多內(nèi)存,可以每次讀入一部分文件存在內(nèi)存中,如用getline等函數(shù)每次讀一行等。3
建議解題步驟
1
對VCD的基本語法先熟悉一下,如信號(hào)名字的對應(yīng)關(guān)系,每一行表示什么含義等。
2
實(shí)現(xiàn)VCD文件到信號(hào)時(shí)間序列變量的轉(zhuǎn)換。這是一個(gè)文本逐行解析的過程。
3
寫統(tǒng)計(jì)分析的模塊,每個(gè)模塊對應(yīng)不同的統(tǒng)計(jì)需求,相對獨(dú)立。
4
學(xué)習(xí)pthread或openMP多線程編程,學(xué)習(xí)如何創(chuàng)建線程、線程間如何同步、加鎖等。
5
用pthread或openMP提高你的程序的效率,這里需要并行劃分程序。
6
嘗試一下不同的文件讀取速度和占用內(nèi)存情況,選擇一個(gè)占用內(nèi)存比較小的方式。
4
其它注意事項(xiàng)
大家在解題時(shí)還需要注意以下幾點(diǎn): 1)不要輕易放棄,題目本身難度不大,已經(jīng)提煉成了算法題,前期的知識(shí)準(zhǔn)備要花點(diǎn)時(shí)間; 2)一定要積極參加培訓(xùn),很多知識(shí)其實(shí)一點(diǎn)就透;在沒有相關(guān)背景積累的情況下學(xué)習(xí)會(huì)有一定的挑戰(zhàn)性,但也可以補(bǔ)充很多知識(shí); 3)要遵循循序漸進(jìn)、從易到難的解題思路,切不可貪大求全讓自己陷入到重重迷霧之中; 最后,預(yù)祝各位同學(xué)發(fā)揮出自己的水平,取得良好的成績。 審核編輯 :李倩-
集成電路
+關(guān)注
關(guān)注
5378文章
11329瀏覽量
360483 -
電壓
+關(guān)注
關(guān)注
45文章
5540瀏覽量
115498 -
等效電容
+關(guān)注
關(guān)注
0文章
16瀏覽量
7914
原文標(biāo)題:芯華章賽題解析:數(shù)字集成電路動(dòng)態(tài)功耗優(yōu)化策略分析與評估
文章出處:【微信號(hào):X-EPIC,微信公眾號(hào):芯華章科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論