aging
hspice_experiment
gen_benchmark_profile
算出每個 benchmark 的 delay 和 power consumption
file structure
在hsipice_experiment/
下
先把所有 script 都 link 到這個目錄下,這樣執行時路徑才不會出錯
在這個實驗中會執行 4 個 script:
隨機產生電路的input pattern set
./gen_input_pattern.pl
第一次run的時候遇到錯誤
沒抓到header.pm
將./ncverilog/
加入環境變數中
export PERLLIB
export後,可執行,但出現第二個ERROR
在./ncverilog/gen_hspice_header.pm
中找到進行修改
執行後可以看到 input_pattern/c432 目錄下產生了 20 組 input_vec_file,
trans 開頭的是將原本的 input_vec_file 進行transpose 得到的,這只是為了方便 script 讀取,不須理會
打開其中一個
檔名最後面的 0 代表這是 task 0,可以看到裡面有 16 組 input pattern,每一條 pattern 的長度等於 input pin 個數
這邊產生出來的little core (ex. C432)的input pattern 要轉化成big core(ex. c432d)的input pattern,因為big core 的pattern長度會是little core的兩倍,而組數將會減半
在./auto_copy_input_pattern.pl
中修改
modify ./script/copy_input_pattern.pl
c432d.v
在isca85_v
底下
輸出檔案會放在 ./input pattern/c432d
要先source ncverilog
big core 和 LITTLE core 都要執行 ncverilog
以下以LITTLE core為例
c432 : 要模擬的電路
20 : ./gen_input_pattern.pl
所產生的input pattern set 總數
執行完後,會在./hspice_experiment/input_pattern/c432
中多了output pattern相關的檔案
而這些檔案是最後拿來驗證hspice的模擬結果是否跟ncverilog模擬的結果一致
0.8v
or 1.2v
要抓取的電壓
LITTLE core是用 0.8v
big core是用1.2v
Update:
2021.12.21: 按照aging順序執行hspice
將 hspice result 整理成 benchmark profile (每個 task 每年的 delay, power infromation)
file structure
將前面 hspice experiment 所產生的結果,蒐集成一個紀錄 delay/power consumption 的檔案 (benchmark_profile),後續的 multicore experiment 會使用這些 benchmark_profile
run_simulate.pl
修改 benchmark 名稱
source_code/getTaskProfile.cpp
將最底下的 GetTaskProfile function 內的第一個for迴圈中的數字,改成要讀取的電壓值
(例如 hspice experiment中,little core 用 0.8v,則設 i=8;i<9)
XXX is up to date
檢查是否有重複的檔案
遇到 Fail to open
的錯誤訊息
通常是因為有些 result 檔案沒有放到正確位置,因此讀取不到,例如以下,把 0_12_50_9m.* 全放進 0_12_50_9m/ ,再重跑一次即可
這個實驗中,會模擬heterogeneous multicore system的行為,讀取事先定義好的 task graph,依序執行 task
./run_simulate.pl
中,設定 big/little core 的 benchmark,以及設定要 run 的 policy
設定 env (critical task 和 non-critical task 組合)
env 表示各種critical task的比例(ex. 0.2,0.4,0.6 ),在每一個round,little和 big core所個要執行的task 的個數
./gen_env
裡面可以自行產生env,進入./gen_env
資料夾
執行 ./ gen_env.pl
會產生test_env檔案,再自行複製至上層,並且重新命名為env
執行 ./run_simulate.pl
結果會儲存在result/big_little/c432_c432d
修改 ./parse_result.pl
的benchmark
執行 ./parse_result
,結果會整理成一份 csv 檔案,其中包含
- 每個 policy 的 big/little cluster/total lifetime, energe, power consumption
- 每個 policy 的結果 normalize 到 Sym policy 的結果