Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

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 to text/x-ruby;charset=UTF-8
    r270 r321  
    66#   Copyright (C) 2008-2012 by TOPPERS Project
    77#--
    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#       免責すること.
    4430
    45 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    46 ãŠ
    47 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    49 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    50 #   ã®è²¬ä»»ã‚’負わない.
     31#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35#   の責任を負わない.
    5136
    5237#++
    5338
    54 # Regionクラスにメソッドを追加
     39# Regionクラスにメソッドを追加
    5540=begin
    5641class Region
     
    6954=end
    7055
    71 # Cellクラスにインスタンス変数とメソッドを追加
     56# Cellクラスにインスタンス変数とメソッドを追加
    7257=begin
    7358class Cell
     
    8570    end
    8671
    87     # set_referenced_cellにしたほうがよい
     72    # set_referenced_cellにしたほうがよい
    8873    # def set_referenced_region( region, port_name )
    8974    def set_referenced_cell( cell, port_name )
     
    139124=end
    140125
    141 #== celltype プラグインのå
    142 ±é€šã®è¦ªã‚¯ãƒ©ã‚¹
     126#== celltype プラグインの共通の親クラス
    143127class HRP2KernelObjectPlugin < CelltypePlugin
    144128    # @@obj_hash = {}
    145129
    146130    #@celltype:: Celltype
    147     #@option:: String     :オプション文字列
     131    #@option:: String     :オプション文字列
    148132    def initialize( celltype, option )
    149133        super
    150         # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
     134        # それぞれのカーネルオブジェクトを解析対象セルタイプに追加
    151135        HRP2KernelObjectPlugin.set_celltype(celltype)
    152136    end
    153137 
    154138    #=== 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
    160143    def print_cfg_cre(file, cell, val, tab)
    161144        raise "called virtual method print_cfg_cre in #{@celltype.get_name} plugin"
     
    163146 
    164147    #=== 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:   アクセスベクタ
    170152    def print_cfg_sac(file, val, acv)
    171153        raise "called virtual method print_cfg_sac in #{@celltype.get_name} plugin"
     
    173155 
    174156    #=== HRP2KernelObjectPlugin#get_entry_ports_name_list
    175     # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
     157    # カーネルオブジェクトの各種アクセスの種別の受け口名を取得
    176158    def get_entry_ports_name_list()
    177159        raise "called virtual method get_entry_ports_name_list in #{@celltype.get_name} plugin"
     
    185167        puts "===== begin #{@celltype.get_name.to_s} plugin ====="
    186168
    187         # 対象となるすべてのセルについて、受け口に結合されている
    188         # セルの所属ドメインを解析
     169        # 対象となるすべてのセルについて、受け口に結合されている
     170        # セルの所属ドメインを解析
    189171        if !HRP2KernelObjectPlugin.isChecked()
    190172            HRP2KernelObjectPlugin.check_referenced_cells()
     
    193175        end
    194176
    195         # 追記するために AppFile を使う(文字コード変換されない)
     177        # 追記するために AppFile を使う(文字コード変換されない)
    196178        file2 = AppFile.open( "#{$gen}/tecsgen.cfg" )
    197179        file2.print "\n/* Generated by #{self.class.name} */\n\n"
     
    200182            if cell.is_generate?
    201183                puts "===== begin check my domain #{cell.get_name} ====="
    202                 # attrの値をハッシュにå
    203 ¥ã‚Œã‚‹
     184                # attrの値をハッシュに入れる
    204185                val = {}
    205186                @celltype.get_attribute_list.each{ |a|
     
    208189                        val[a.get_name] = []
    209190                        if j = cell.get_join_list.get_item(a.get_name)
    210                             # セル生成時に初期化する場合
     191                            # セル生成時に初期化する場合
    211192                            j.get_rhs.each { |elem|
    212193                                val[a.get_name] << elem.to_s
    213194                            }
    214195                        elsif i = a.get_initializer
    215                             # セルタイプの初期化値を使う場合
     196                            # セルタイプの初期化値を使う場合
    216197                            i.each { |elem|
    217198                                val[a.get_name] << elem.to_s
     
    222203                    else
    223204                        if j = cell.get_join_list.get_item(a.get_name)
    224                             # セル生成時に初期化する場合
     205                            # セル生成時に初期化する場合
    225206                            val[a.get_name] = j.get_rhs.to_s
    226207                        elsif i = a.get_initializer
    227                             # セルタイプの初期化値を使う場合
     208                            # セルタイプの初期化値を使う場合
    228209                            val[a.get_name] = i.to_s
    229210                        else
     
    232213                    end
    233214                }
    234                 # generate.rbを参考に
    235                 # $id$を置換
     215                # generate.rbを参考に
     216                # $id$を置換
    236217                if val[:id].nil? != true
    237218                    puts val[:id]
    238219                    val[:id] = val[:id].gsub( /(^|[^\$])\$id\$/, "\\1#{@celltype.get_name.to_s}_#{cell.get_name.to_s}" )
    239220                end
    240                 # $cbp$の代わり
     221                # $cbp$の代わり
    241222                index = cell.get_id - @celltype.get_id_base
    242223                cell_CB_name = "#{@celltype.get_global_name}_CB_tab[#{index}]"
     
    244225                cell_domain_type = cell.get_region.get_domain_root.get_domain_type
    245226
    246                 # CRE_XXX/DEF_XXXの生成
     227                # CRE_XXX/DEF_XXXの生成
    247228                if cell_domain_type.get_option.to_s != "OutOfDomain"
    248                     # 保護ドメインに属する場合
     229                    # 保護ドメインに属する場合
    249230                    if !HRP2KernelObjectPlugin.include_region(cell_domain_root.get_name.to_s)
    250                         # その保護ドメインの.cfgが生成されていない場合
     231                        # その保護ドメインの.cfgが生成されていない場合
    251232                        HRP2KernelObjectPlugin.set_region_list(cell_domain_root.get_name.to_s)
    252233                        puts "~~~~~ #{cell_domain_root.get_name.to_s} is registered!"
     
    269250                    file3.close
    270251                else
    271                     # 無所属の場合
     252                    # 無所属の場合
    272253                    puts "~~~~~ #{cell_domain_root.get_name.to_s} is OutOfDomain"
    273254                    print_cfg_cre(file2, cell, val, "")
     
    275256
    276257                puts "===== end check my domain #{cell.get_name} ====="
    277                 # SAC_XXXの生成
     258                # SAC_XXXの生成
    278259                puts "===== begin check regions #{cell.get_name} ====="
    279260                p val[:accessPattern]
     
    281262
    282263                #ep = [ :eTaskActivate, :eTaskControl, :eTaskManage, :eTaskRefer ]
    283                 #各カーネルオブジェクトの受け口名を取得
     264                #各カーネルオブジェクトの受け口名を取得
    284265                # ep = get_entry_ports_name_list()
    285266                i = 0
    286267                acv = []
    287                 # アクセス許可ベクタの生成
     268                # アクセス許可ベクタの生成
    288269                val[:accessPattern].each { |acptnx|
    289                     # アクセス許可パターンの生成
     270                    # アクセス許可パターンの生成
    290271                    if acptnx != "OMIT"
    291272                        acv << acptnx
     
    306287                p acv
    307288
    308                 #各種SACの生成
     289                #各種SACの生成
    309290                domainOption = cell_domain_type.get_option
    310291                # if cell.get_region.get_region_type == :DOMAIN
    311292                if domainOption != "OutOfDomain"
    312                     # 保護ドメインに属する場合
     293                    # 保護ドメインに属する場合
    313294                    file3 = AppFile.open( "#{$gen}/tecsgen_#{cell.get_region.get_name.to_s}.cfg" )
    314295                    print_cfg_sac(file3, val, acv)
    315296                    file3.close
    316297                else
    317                     # 無所属の場合
     298                    # 無所属の場合
    318299                    print_cfg_sac(file2, val, acv)
    319300                end
     
    327308    end
    328309
    329     # カーネルオブジェクトセルタイプの管理
    330     # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
     310    # カーネルオブジェクトセルタイプの管理
     311    # HRP2KernelObjectPluginクラスに対してメソッド呼出しを行うことを想定
    331312    @@checked = false
    332313    @@celltype_list = []
     
    351332                printf "===== check call port : "
    352333                p p.get_name.to_s
    353                 next if j.nil? # 未結合の場合
     334                next if j.nil? # 未結合の場合
    354335                if @@celltype_list.include?(j.get_celltype)
    355336                    # j.get_cell.set_referenced_region(cell.get_region)
Note: See TracChangeset for help on using the changeset viewer.