- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/tecsgen/tecslib/plugin/HRP2KernelObjectPlugin.rb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby;charset=UTF-8
r270 r321 6 6 # Copyright (C) 2008-2012 by TOPPERS Project 7 7 #-- 8 # ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 # å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 # ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 # è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 # ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 # ã¨ï¼ 27 # (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 # (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 # å ±åãããã¨ï¼ 35 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 # 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 # å 43 責ãããã¨ï¼ 8 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 # スコード中に含まれていること. 14 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 # の無保証規定を掲載すること. 18 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 # と. 21 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 # 報告すること. 25 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 # 免責すること. 44 30 # 45 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 # ã®è²¬ä»»ãè² ããªãï¼ 31 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 # の責任を負わない. 51 36 # 52 37 #++ 53 38 54 # Region ã¯ã©ã¹ã«ã¡ã½ããã追å39 # Regionクラスにメソッドを追加 55 40 =begin 56 41 class Region … … 69 54 =end 70 55 71 # Cell ã¯ã©ã¹ã«ã¤ã³ã¹ã¿ã³ã¹å¤æ°ã¨ã¡ã½ããã追å56 # Cellクラスにインスタンス変数とメソッドを追加 72 57 =begin 73 58 class Cell … … 85 70 end 86 71 87 # set_referenced_cell ã«ããã»ãããã72 # set_referenced_cellにしたほうがよい 88 73 # def set_referenced_region( region, port_name ) 89 74 def set_referenced_cell( cell, port_name ) … … 139 124 =end 140 125 141 #== celltype ãã©ã°ã¤ã³ã®å 142 ±éã®è¦ªã¯ã©ã¹ 126 #== celltype プラグインの共通の親クラス 143 127 class HRP2KernelObjectPlugin < CelltypePlugin 144 128 # @@obj_hash = {} 145 129 146 130 #@celltype:: Celltype 147 #@option:: String : ãªãã·ã§ã³æåå131 #@option:: String :オプション文字列 148 132 def initialize( celltype, option ) 149 133 super 150 # ããããã®ã«ã¼ãã«ãªãã¸ã§ã¯ãã解æ対象ã»ã«ã¿ã¤ãã«è¿½å134 # それぞれのカーネルオブジェクトを解析対象セルタイプに追加 151 135 HRP2KernelObjectPlugin.set_celltype(celltype) 152 136 end 153 137 154 138 #=== HRP2KernelObjectPlugin#print_cfg_cre 155 # å種ã«ã¼ãã«ãªãã¸ã§ã¯ãã®CRE_*ã®åºå 156 # file:: FILE: åºåå 157 ãã¡ã¤ã« 158 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 159 # tab :: string: ã¤ã³ãã³ãç¨ã®tab 139 # 各種カーネルオブジェクトのCRE_*の出力 140 # file:: FILE: 出力先ファイル 141 # val :: string: カーネルオブジェクトの属性の解析結果 142 # tab :: string: インデント用のtab 160 143 def print_cfg_cre(file, cell, val, tab) 161 144 raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin" … … 163 146 164 147 #=== HRP2KernelObjectPlugin#print_cfg_sac 165 # å種ã«ã¼ãã«ãªãã¸ã§ã¯ãã®SAC_*ã®åºå 166 # file:: FILE: åºåå 167 ãã¡ã¤ã« 168 # val :: string: ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å±æ§ã®è§£æçµæ 169 # acv :: string: ã¢ã¯ã»ã¹ãã¯ã¿ 148 # 各種カーネルオブジェクトのSAC_*の出力 149 # file:: FILE: 出力先ファイル 150 # val :: string: カーネルオブジェクトの属性の解析結果 151 # acv :: string: アクセスベクタ 170 152 def print_cfg_sac(file, val, acv) 171 153 raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin" … … 173 155 174 156 #=== HRP2KernelObjectPlugin#get_entry_ports_name_list 175 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã®å種ã¢ã¯ã»ã¹ã®ç¨®å¥ã®åãå£åãåå¾157 # カーネルオブジェクトの各種アクセスの種別の受け口名を取得 176 158 def get_entry_ports_name_list() 177 159 raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin" … … 185 167 puts "===== begin #{@celltype.get_name.to_s} plugin =====" 186 168 187 # 対象ã¨ãªããã¹ã¦ã®ã»ã«ã«ã¤ãã¦ãåãå£ã«çµåããã¦ãã188 # ã»ã«ã®æå±ãã¡ã¤ã³ã解æ169 # 対象となるすべてのセルについて、受け口に結合されている 170 # セルの所属ドメインを解析 189 171 if !HRP2KernelObjectPlugin.isChecked() 190 172 HRP2KernelObjectPlugin.check_referenced_cells() … … 193 175 end 194 176 195 # 追è¨ããããã« AppFile ã使ãï¼æåã³ã¼ãå¤æãããªãï¼177 # 追記するために AppFile を使う(文字コード変換されない) 196 178 file2 = AppFile.open( "#{$gen}/tecsgen.cfg" ) 197 179 file2.print "\n/* Generated by #{self.class.name} */\n\n" … … 200 182 if cell.is_generate? 201 183 puts "===== begin check my domain #{cell.get_name} =====" 202 # attrã®å¤ãããã·ã¥ã«å 203 ¥ãã 184 # attrの値をハッシュに入れる 204 185 val = {} 205 186 @celltype.get_attribute_list.each{ |a| … … 208 189 val[a.get_name] = [] 209 190 if j = cell.get_join_list.get_item(a.get_name) 210 # ã»ã«çææã«åæåããå ´å191 # セル生成時に初期化する場合 211 192 j.get_rhs.each { |elem| 212 193 val[a.get_name] << elem.to_s 213 194 } 214 195 elsif i = a.get_initializer 215 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å196 # セルタイプの初期化値を使う場合 216 197 i.each { |elem| 217 198 val[a.get_name] << elem.to_s … … 222 203 else 223 204 if j = cell.get_join_list.get_item(a.get_name) 224 # ã»ã«çææã«åæåããå ´å205 # セル生成時に初期化する場合 225 206 val[a.get_name] = j.get_rhs.to_s 226 207 elsif i = a.get_initializer 227 # ã»ã«ã¿ã¤ãã®åæåå¤ã使ãå ´å208 # セルタイプの初期化値を使う場合 228 209 val[a.get_name] = i.to_s 229 210 else … … 232 213 end 233 214 } 234 # generate.rb ãåèã«235 # $id$ ãç½®æ215 # generate.rbを参考に 216 # $id$を置換 236 217 if val[:id].nil? != true 237 218 puts val[:id] 238 219 val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" ) 239 220 end 240 # $cbp$ ã®ä»£ãã221 # $cbp$の代わり 241 222 index = cell.get_id - @celltype.get_id_base 242 223 cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]" … … 244 225 cell_domain_type = cell.get_region.get_domain_root.get_domain_type 245 226 246 # CRE_XXX/DEF_XXX ã®çæ227 # CRE_XXX/DEF_XXXの生成 247 228 if cell_domain_type.get_option.to_s != "OutOfDomain" 248 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å229 # 保護ドメインに属する場合 249 230 if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s) 250 # ãã®ä¿è·ãã¡ã¤ã³ã®.cfgãçæããã¦ããªãå ´å231 # その保護ドメインの.cfgが生成されていない場合 251 232 HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s) 252 233 puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!" … … 269 250 file3.close 270 251 else 271 # ç¡æå±ã®å ´å252 # 無所属の場合 272 253 puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain" 273 254 print_cfg_cre(file2, cell, val, "") … … 275 256 276 257 puts "===== end check my domain #{cell.get_name} =====" 277 # SAC_XXX ã®çæ258 # SAC_XXXの生成 278 259 puts "===== begin check regions #{cell.get_name} =====" 279 260 p val[:accessPattern] … … 281 262 282 263 #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ] 283 # åã«ã¼ãã«ãªãã¸ã§ã¯ãã®åãå£åãåå¾264 #各カーネルオブジェクトの受け口名を取得 284 265 # ep = get_entry_ports_name_list() 285 266 i = 0 286 267 acv = [] 287 # ã¢ã¯ã»ã¹è¨±å¯ãã¯ã¿ã®çæ268 # アクセス許可ベクタの生成 288 269 val[:accessPattern].each { |acptnx| 289 # ã¢ã¯ã»ã¹è¨±å¯ãã¿ã¼ã³ã®çæ270 # アクセス許可パターンの生成 290 271 if acptnx != "OMIT" 291 272 acv << acptnx … … 306 287 p acv 307 288 308 # å種SACã®çæ289 #各種SACの生成 309 290 domainOption = cell_domain_type.get_option 310 291 # if cell.get_region.get_region_type == :DOMAIN 311 292 if domainOption != "OutOfDomain" 312 # ä¿è·ãã¡ã¤ã³ã«å±ããå ´å293 # 保護ドメインに属する場合 313 294 file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" ) 314 295 print_cfg_sac(file3, val, acv) 315 296 file3.close 316 297 else 317 # ç¡æå±ã®å ´å298 # 無所属の場合 318 299 print_cfg_sac(file2, val, acv) 319 300 end … … 327 308 end 328 309 329 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã»ã«ã¿ã¤ãã®ç®¡ç330 # HRP2KernelObjectPlugin ã¯ã©ã¹ã«å¯¾ãã¦ã¡ã½ããå¼åºããè¡ããã¨ãæ³å®310 # カーネルオブジェクトセルタイプの管理 311 # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定 331 312 @@checked = false 332 313 @@celltype_list = [] … … 351 332 printf "===== check call port : " 352 333 p p.get_name.to_s 353 next if j.nil? # æªçµåã®å ´å334 next if j.nil? # 未結合の場合 354 335 if @@celltype_list.include?(j.get_celltype) 355 336 # j.get_cell.set_referenced_region(cell.get_region) -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.