my $tt = CDFG->new(); $tt->set_time_weighted_vertex('#::1',0); ... $tt->set_time_weighted_edge('<::0','#::1',1); ... # initial set $tt->run_time_weighted_ini(); # ASAP flow $tt->run_time_weighted_test(); $tt->run_time_weighted_ASAP(); $tt->rst_time_weighted_ASAP(); # dump or not $tt->dump_ASAP_graphviz_file('ASAP.dot'); # ALAP flow $tt->run_time_weighted_test(); $tt->run_time_weighted_max_path(); $tt->run_time_weighted_ALAP(); $tt->rst_time_weighted_ALAP(); # dump or not $tt->dump_ALAP_grpahviz_file('ALAP.dot'); # report my $rpt = $tt->run_report(); print Dumper($rpt);project: https://github.com/funningboy/SOC_c_model/blob/master/ASALAP/main.pl
2010年12月3日 星期五
ASAP ALAP scheduling @perl
利用 ASAP, ALAP 做 scheduling 找出每個 Vertex 的 tolerance range. 我們就可以利用這樣的 info 來減少 peak power 的產生. 範例如下圖所示
constrain
1. 在不影響每個 Vertex 的先後順序下, 用 ASAP 算出 begin 值. 用 ALAP 算出 end 值.
2. 當 begin==end 時,為 critical path, 表示這個 vertex 不能被移動, begin!=end 表示為 vertex 可以移動的位置.
example :
vertex 1 : begin time 2 end time 4
vertex 2 : begin time 3 end time 3
vertex 3 : begin time 2 end time 4
由此可知, vertex 2 的位置為固定值, 只能靠移動 Vertex1, Vertex3 來減少 peak power.
worst case
best case
ps: 這可以用 short path algorithm 來算出最小值
example :
power_vertex1(x) 2<=x<=4;
power_vertex2(y) 3<=y<=3;
power_vertex3(z) 2<=z<=4;
find min( power_vertex1(x) + power_vertex2(y) + power_vertex3(z) )
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言