Class: HRPTaskPlugin

Inherits:
HRPKernelObjectPlugin show all
Defined in:
lib/tecsgen/plugin/HRPTaskPlugin.rb

Overview

celltype プラグインの共通の親クラス

Constant Summary

Constants inherited from Plugin

Plugin::PluginArgProc

Instance Method Summary collapse

Methods inherited from HRPKernelObjectPlugin

check_referenced_cells, #gen_factory, get_celltype_list, include_celltype?, include_region, #initialize, isChecked, set_celltype, set_region_list

Methods inherited from CelltypePlugin

#gen_factory, gen_post_code, #initialize

Methods inherited from Plugin

#cdl_error, #check_plugin_arg, #gen_cdl_file, #gen_ep_func?, #gen_postamble, #gen_preamble, #initialize, #parse_plugin_arg, #print_msg, #set_locale, #set_silent

Methods inherited from Node

#cdl_error, #cdl_error2, #cdl_error3, #cdl_info, #cdl_info2, #cdl_warning, #cdl_warning2, #get_locale, #initialize, #locale_str, #set_locale

Constructor Details

This class inherits a constructor from HRPKernelObjectPlugin

Instance Method Details

#new_cell(cell) ⇒ Object

oyama: add to avoid Ruby exception in code generation phase.



45
46
47
48
49
50
51
52
# File 'lib/tecsgen/plugin/HRPTaskPlugin.rb', line 45

def new_cell(cell)
  region = cell.get_region
  dbgPrint "HRPTaskCelltypePlugin new_cell=#{cell.get_name} region=#{region.get_name}\n"
  domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
  if domainOption == "OutOfDomain"
    cdl_error("HRP9999 HRP task '$1' must belong to a domain", cell.get_name)
  end
end

CRE_TSKの出力

file:: FILE:     出力先ファイル
cell :: Cell タスクセルインスタンス
val :: Hash {attr => string}:   カーネルオブジェクトの属性の解析結果
tab :: string: タブ


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/tecsgen/plugin/HRPTaskPlugin.rb', line 64

def print_cfg_cre(file, cell, val, tab)
  val[:id] = val[:id].gsub(/(^|[^\$])\$id\$/, "\\1#{@celltype.get_name}_#{cell.get_name}")
    # $cbp$の代わり
    cell_IDX = @celltype.get_name_array(cell)[7]
    # CRE_TSKの生成
    dbgPrint "assign task plugin\n"
    domainOption = cell.get_region.get_domain_root.get_domain_type.get_option
    # if cell.get_region.get_region_type == :DOMAIN
    if domainOption != "OutOfDomain"
      if val[:systemStackSize] == "0"
          #
          #  システムスタックの定義を省略
          #
        file.print <<EOT
CRE_TSK(#{val[:id]}, { #{val[:attribute]}, #{cell_IDX}, tTask_start, #{val[:priority]}, #{val[:stackSize]}, NULL });
EOT
      else
          #
          #  システムスタックの定義を追加
          #
        file.print <<EOT
CRE_TSK(#{val[:id]}, { #{val[:attribute]}, #{cell_IDX}, tTask_start, #{val[:priority]}, #{val[:stackSize]}, NULL, #{val[:systemStackSize]}, NULL });
EOT
      end
    else
        #
        #  無所属のタスクは存在してはならないため,エラーとする
        #
      raise "task #{val[:id]} must belong to a domain."
    end
end

SAC_TSKの出力

file:: FILE:     出力先ファイル
val :: Hash {attr => string}:   カーネルオブジェクトの属性の解析結果
acv :: Hash {accessPatternx => string}:   アクセス許可ベクタ


102
103
104
105
106
# File 'lib/tecsgen/plugin/HRPTaskPlugin.rb', line 102

def print_cfg_sac(file, val, acv)
   # pp "SAC_TSK"
   # pp val
  file.puts "SAC_TSK(#{val[:id]}, { #{acv[:accessPattern1]}, #{acv[:accessPattern2]}, #{acv[:accessPattern3]}, #{acv[:accessPattern4]} });"
end