IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日立オートモティブシステムズ株式会社の特許一覧

特開2024-11231ソフトウェア作成システム、及びソフトウェア作成方法
<>
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図1
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図2
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図3
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図4
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図5
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図6
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図7
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図8
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図9
  • 特開-ソフトウェア作成システム、及びソフトウェア作成方法 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024011231
(43)【公開日】2024-01-25
(54)【発明の名称】ソフトウェア作成システム、及びソフトウェア作成方法
(51)【国際特許分類】
   G06F 8/35 20180101AFI20240118BHJP
   G06F 8/41 20180101ALI20240118BHJP
【FI】
G06F8/35
G06F8/41 130
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022113064
(22)【出願日】2022-07-14
(71)【出願人】
【識別番号】509186579
【氏名又は名称】日立Astemo株式会社
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】茅根 修平
【テーマコード(参考)】
5B081
5B376
【Fターム(参考)】
5B081CC21
5B376BC08
5B376BC57
5B376BC61
(57)【要約】
【課題】各コアにおける演算処理の破綻の有無を判定する。
【解決手段】
ソフトウェアを作成するソフトウェア作成システムであって、部分制御モデルのモデルソースを記憶する記憶部と、処理のコアへの割り当てが定義されるコア割り当て情報、前記マイコンのコアの情報を含むプロセッサ情報、及び、前記部分制御モデルに属する機能の実行周期と実行順序の情報を含むジョブテーブルに基づいて、前記コアの各々に前記部分制御モデルの処理を割り当てる並列処理作成部と、前記並列処理作成部で前記コアに処理が割り当てられた部分制御モデルのモデルソースのコンパイル前に、前記部分制御モデルの処理が割り当てられた各コアの演算実行時間が演算周期より短いかを判定する演算負荷確認部と、前記各コアの演算実行時間が演算周期より短い場合に、前記マイコンに書き込み可能なソフトウェアを出力する出力部とを有する。
【選択図】図4
【特許請求の範囲】
【請求項1】
ソフトウェアを作成するソフトウェア作成システムであって、
プログラムを実行する演算装置と、前記演算装置がアクセス可能な記憶装置を備え、
前記ソフトウェアは、各々が1以上の関数を含む複数の部分制御モデルを含む全体制御モデルで構成されており、複数のコアを有するマイコンにおいて所定の演算周期で繰り返し実行されるものであり、
前記ソフトウェア作成システムは、
前記部分制御モデルのモデルソースを記憶する記憶部と、
前記演算装置が、処理のコアへの割り当てが定義されるコア割り当て情報、前記マイコンのコアの情報を含むプロセッサ情報、及び、前記部分制御モデルに属する機能の実行周期と実行順序の情報を含むジョブテーブルに基づいて、前記コアの各々に前記部分制御モデルの処理を割り当てる並列処理作成部と、
前記演算装置が、前記並列処理作成部で前記コアに処理が割り当てられた部分制御モデルのモデルソースのコンパイル前に、前記部分制御モデルの処理が割り当てられた各コアの演算実行時間が演算周期より短いかを判定する演算負荷確認部と、
前記各コアの演算実行時間が演算周期より短い場合に、前記マイコンに書き込み可能なソフトウェアを出力する出力部とを有することを特徴とするソフトウェア作成システム。
【請求項2】
請求項1に記載のソフトウェア作成システムであって、
前記記憶部は、前記ソフトウェア作成システムに入力された、前記部分制御モデルを構成する関数単位の演算負荷情報を記憶し、
前記演算負荷確認部は、前記記憶部から取得した演算負荷情報、及び前記並列処理作成部が処理をコアに割り当てた部分制御モデルの情報に基づいて、コアごとの部分制御モデルの演算負荷を積算して、前記部分制御モデルの処理が割り当てられた各コアの演算処理時間が演算周期より短いかを判定することを特徴とするソフトウェア作成システム。
【請求項3】
請求項1に記載のソフトウェア作成システムであって、
前記演算負荷確認部は、前記コア単位の演算負荷情報と、別コアに配置できない機能の纏まりである関数グループ単位の演算負荷情報を出力することを特徴とするソフトウェア作成システム。
【請求項4】
ソフトウェアを作成するソフトウェア作成システムが実行するソフトウェア作成方法であって、
前記ソフトウェア作成システムは、プログラムを実行する演算装置と、前記演算装置がアクセス可能な記憶装置を有し、
前記記憶装置は、前記部分制御モデルのモデルソースを記憶する記憶部を含み、
前記ソフトウェアは、各々が1以上の関数を含む複数の部分制御モデルを含む全体制御モデルで構成されており、複数のコアを有するマイコンにおいて所定の演算周期で繰り返し実行されるものであり、
前記ソフトウェア作成方法は、
前記演算装置が、処理のコアへの割り当てが定義されるコア割り当て情報、前記マイコンのコアの情報を含むプロセッサ情報、及び、前記部分制御モデルに属する機能の実行周期と実行順序の情報を含むジョブテーブルに基づいて、前記コアの各々に前記部分制御モデルの処理を割り当てる並列処理作成手順と、
前記演算装置が、前記並列処理作成部で前記コアに処理が割り当てられた部分制御モデルのモデルソースのコンパイル前に、前記部分制御モデルの処理が割り当てられた各コアの演算実行時間が演算周期より短いかを判定する演算負荷確認手順と、
前記演算装置が、前記各コアの演算実行時間が演算周期より短い場合に、前記マイコンに書き込み可能なソフトウェアを出力する出力手順をと有することを特徴とするソフトウェア作成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェア作成システムに関し、特に、機器の動作を制御するモデルベース開発において、複数の制御ソフトウェア部品を組み合わせて構成されるソフトウェアの結合に好適な技術に関する。
【背景技術】
【0002】
近年、組込みソフトウェアの開発では、開発者が仕様書に基づいてソフトウェアのソースコードの記述に代えて、仕様書をより簡易に作成でき視認性が良い「モデル」によって記述する場合がある。このモデルから自動的にコードを生成する開発手法をモデルベース開発と呼ぶ。
【0003】
モデルベース開発に対応したプログラム開発環境としては、例えば、MathWorks社のMATLABがある。開発者は、MATLABの一機能であるSimulinkを用いて、モデルを記述する。モデルは、ブロックと呼ばれる機能単位及び機能単位間の入出力関係を示す結線によって記述される(MathWorks、MATLAB、Simulinkは登録商標)。
【0004】
Simulinkを用いて、ソフトウェアとして実装したい制御動作を記述したモデルは、制御モデルと呼ばれる。細分化された制御機能ごとに作成された制御モデルは、部分制御モデルと呼ばれ、制御用のソースコードは、部分制御モデル単位でdSpace社のTargetLink等を用いて生成される。部分制御モデルには、モデル間の接続に必要な情報(演算順序情報や変数の接続情報など)が含まれない。そのため、ソフトウェア作成時に部分制御モデルを集めただけでは、接続情報が不足する問題がある。その解決のため、複数の部分制御モデルを内包し、それらが接続された全体制御モデルが使用される。全体制御モデルの情報から、部分制御モデルをソフトウェアとして一つに結合するために必要な情報を取得する(dSpace、TargetLinkは登録商標)。
【0005】
ソフトウェア開発においては、ゼロからソフトウェアを作成してプログラムを作成するよりも、ソフトウェア部品を集めて再利用する流用開発が効率的な手法として知られている。部分制御モデルから予めコード生成しておき、全体制御モデルに含まれる部分制御モデルのソースコードを収集し、同一モデルのコードは再利用する手法がとられることがある。例えば、特許文献1には、第1のプロセッサを有するソフトウェア開発支援装置は、制御モデルの実行順序を含んでソフトウェアの制御仕様を含む特徴モデルを入力し、特徴モデル内の制御モデルを解析して演算周期と実行順序を解析して実行順序情報を出力する特徴モデル解析部と、制御モデルを入力して、演算周期を含んでファイル名が制御モデルと同一のモデルソースを生成するモデルソース生成部と、制御モデルと同名のモデルソースを収集するモデルソース収集部と、複数コアを有する第2のプロセッサの情報を入力して、前記収集されたモデルソースに対して、ソフトウェアを複数のコアの処理へ最適化するために演算周期と実行順序情報に基づいてコア毎の処理の割り当て情報を生成する並列処理生成部と、を有するソフトウェア開発支援装置が記載されている。
【0006】
組み込み開発では、作成したソフトウェアの演算が目標時間(演算周期)内に終了すること、すなわちリアルタイム性が必要であり、ソフトウェア作成後に、マイコンを使った実機試験等により演算負荷(演算処理時間)が規定した処理時間を超過する演算処理の破綻が生じていないかを確認する。実機試験において演算処理の破綻が確認されると、ソフトウェアの作成工程まで大きな手戻りが生じるため、演算処理の破綻をより上流の工程で予測することが求められている。
【0007】
特許文献2には、機能と遅延とを少なくとも属性として持つ要素演算ブロックの集合である基本ブロックデータベースを備え、上記基本ブロックのデータベースを用いて開発したモデルを記憶する設計モデル記憶部と、一つ以上の基本ブロックの組み合わせからなる上記モデルに含まれる全てのタスクについての、基本ブロックの組み合わせ構成や実行優先度などが定義されたタスク定義記憶部と、CPU、ROM/RAMなど実装リソースの情報を記憶するリソース情報記憶部と、一部または全てのタスクのデッドラインを記憶するデッドライン記憶部を備えるモデルベースの性能予測システムが記載されている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2022-11264号公報
【特許文献2】特開2011-154521号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
特許文献1に記載の装置では、演算負荷を予測していないため、ソフトウェア作成後に実機試験を実施するまで、作成したソフトウェアの演算処理が破綻するかを確認できない。そのため、演算処理の破綻が確認された場合、シングルコアマイコンでは組み込む制御の減少を検討し、マルチコアマイコンでは演算処理のコア割り当ての変更などを検討する。コア割り当ての変更で問題が解消しない場合は、シングルコアマイコンと同様に、組み込む制御の減少を検討する。
【0010】
図1に示すように、実機試験ではコア単位の演算負荷を取得し、各コアの演算処理が規定時間(例えば演算周期)より短いかを確認する。例えば、コア1の処理時間が演算周期を超えており、かつコア0やコア2の処理時間は演算周期に対して余裕がある場合、設計者はコア1からコア0やコア1へ関数の再割り当てを検討し、全てのコアの処理時間が演算周期内より短くなるように関数を移動する。しかし、移動する関数を検討する際に、各コアに割り当てられた関数単位の演算時間を計測しなければ、どの関数をコア1から移動すればコア1の処理時間が演算周期より短くなるかを判断できない。また、演算順序や変数の算出参照関係による実行順序の制約によって別コアに配置できない処理を考慮しながら処理を再配置するため、検討に多くの工数が必要となる。また、再検討後のソフトウェアにおける各コアの処理時間を確認できないため、再度ソフトウェアを作成し、実機試験にて再確認する必要がある。この実機試験にて、再び演算処理の破綻が確認されると再度手戻りとなる可能性もあり、修正に多くの時間を要する。
【0011】
特許文献2に記載の方法では、モデルの情報から自動生成後のコードの演算負荷を予測するため、ソフトウェア作成前に制御モデルの演算負荷を確認できる。しかし、モデル毎の予想となるため、部分制御モデルへは適応できるものの、全体制御モデルへの適応は考慮されていない。演算処理の破綻による手戻りを抑制するためには、実機試験で使用するソフトウェアと同等の状態(全体制御モデルの構成を満たすように複数の部分制御モデルを組み込み、演算処理のコアへの割り当てを実施済みの状態)で演算負荷を確認する必要がある。また、マルチコアマイコンでは、全てのコアにおいて演算処理が破綻していないことを確認する必要がある。
【0012】
さらに、自動車用電子制御ユニット(Electric Control Unit、以下ECU)の組み込みソフトウェア開発においては、一部制御の新規追加や変更はあるものの、大部分の部分制御モデルについては既存のモデルが再利用される流用開発が多い。そのため、再利用されるモデルの演算負荷情報の再利用を考慮すべきである。
【0013】
本発明は、前述の課題に鑑みてなされたものであって、実機マイコンを使用した演算負荷確認試験を実施する前のソフトウェアを結合する段階において、結合後のソフトウェアにおける各コアの演算負荷を予測し、各コアにおける演算処理の破綻の有無を判定可能で、かつECUで多用される流用開発においても、作成するソフトウェアの演算負荷の予測や演算処理の破綻の有無を効率よく判定できるソフトウェア作成システムを提供することを目的とする。
【課題を解決するための手段】
【0014】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ソフトウェアを作成するソフトウェア作成システムであって、プログラムを実行する演算装置と、前記演算装置がアクセス可能な記憶装置を備え、前記ソフトウェアは、各々が1以上の関数を含む複数の部分制御モデルを含む全体制御モデルで構成されており、複数のコアを有するマイコンにおいて所定の演算周期で繰り返し実行されるものであり、前記ソフトウェア作成システムは、前記部分制御モデルのモデルソースを記憶する記憶部と、前記演算装置が、処理のコアへの割り当てが定義されるコア割り当て情報、前記マイコンのコアの情報を含むプロセッサ情報、及び、前記部分制御モデルに属する機能の実行周期と実行順序の情報を含むジョブテーブルに基づいて、前記コアの各々に前記部分制御モデルの処理を割り当てる並列処理作成部と、前記演算装置が、前記並列処理作成部で前記コアに処理が割り当てられた部分制御モデルのモデルソースのコンパイル前に、前記部分制御モデルの処理が割り当てられた各コアの演算実行時間が演算周期より短いかを判定する演算負荷確認部と、前記各コアの演算実行時間が演算周期より短い場合に、前記マイコンに書き込み可能なソフトウェアを出力する出力部とを有することを特徴とする。
【発明の効果】
【0015】
本発明の一態様によれば、ソフトウェア開発における手戻りを抑制できる。前述した以外の課題、構成及び効果は、以下の実施例の説明によって明らかにされる。
【図面の簡単な説明】
【0016】
図1】マイコンの各コアの演算負荷状況に生じる課題を示す図である。
図2】本発明の実施例の部分制御モデルの関係を示す図である。
図3】本発明の実施例の部分制御モデルの内部処理の例を示す図である。
図4】本発明の実施例のソフトウェア作成システムの概要を示す図である。
図5】本発明の実施例のモデルソース記憶部の構成を示す図である。
図6】本発明の実施例のジョブテーブルを示す図である。
図7】本発明の実施例のコア割り当て情報を示す図である。
図8】本発明の実施例の並列処理作成の例を示す図である。
図9】本発明の実施例の演算負荷確認部が実行する処理のフローチャートである。
図10】本発明の実施例において、演算負荷の破綻が予測される場合の作業例を示す図である。
【発明を実施するための形態】
【0017】
以下に本発明の実施形態について図面を参照しつつ説明を行う。
【0018】
本実施例のソフトウェア作成システム401が作成するソフトウェアは、自動車用電子制御ユニット(Electric Control Unit、以下ECU)の組み込みソフトウェアである。自動車用電子制御ユニットに実装されるマイコンは、通常、複数のコアを有し、制御モデルによって構成されるソフトウェアをコア毎に実行する。
【0019】
図2は、部分制御モデル202~209の関係を示す図である。全体制御モデル201は複数の部分制御モデル202~209によって構成されている。部分制御モデルは細かな機能単位など、部分的な制御単位で記述されたモデルである。全体制御モデル内の部分制御モデルは、図中のモデル同士の結線で表される変数の算出及び参照のタイミングによって実行順序が決定される。部分制御モデルによって機能毎に階層分けされた全体制御モデルを用いることで、部分制御モデルが属する機能が判別可能となっている。
【0020】
図3は、部分制御モデルの内部処理の例を示す図である。部分制御モデルは、図3に示すように内部において、一つ以上の入力値302、303に対して、一つ以上の処理304~306を実行し、一つ以上の出力値307、308を算出する。全体制御モデル及び部分制御モデルは、Simulink(登録商標)等のモデリングツールを使用して記述されるとよい。
【0021】
図4は、ソフトウェア作成システム401の概要を示す図である。
【0022】
ソフトウェア作成システム401は、全体制御モデル解析部407、モデルソース生成部405、記憶部406、モデルソース収集部408、接続処理追加部409、並列処理作成部410、演算負荷確認部413、コンパイル部414及びプログラム出力部415を有する。
【0023】
ソフトウェア作成システム401の入力情報は、部分制御モデル402、全体制御モデル201、及び演算負荷情報404である。部分制御モデル402は、作成するソースコードの仕様となる制御モデルである。全体制御モデル201は、車両の制御仕様を成す複数の部分制御モデル402の構成や処理順序が表現された制御モデルである。演算負荷情報404は、部分制御モデル402に含まれる関数単位の演算負荷を含む。入力される演算負荷情報404は、モデルソース生成部405で部分制御モデル402から生成されたモデルソースを入力とし、マイコンシミュレータ等で実行し得られた演算負荷、又は特許文献2のように、部分制御モデルの経路とその経路に含まれる処理ブロックから予測した演算負荷などを含む。演算負荷情報404の算出方法は、前述した二つの例の他、部分制御モデルの関数単位で演算負荷が出力できる方法を採用できる。演算処理が破綻するかを確認するため、ここでの演算負荷は部分制御モデルの関数における最悪値である必要がある。
【0024】
モデルソース生成部405は、TargetLink(登録商標)等のオートコーディング機能を使用して、入力された部分制御モデル402からC言語で記述されたソースコードを生成する。特に、モデルソース生成部405は、入力された部分制御モデルとモデル名及びバージョン情報同じモデルソースが記憶部406に格納されていない場合、部分制御モデルと同一のファイル名のモデルソースを、部分制御モデルから生成する。この制御モデルに基づいて生成されたソースコードはモデルソースと呼ばれる。モデルソース生成後、関数の入力値に対する出力値が、部分制御モデル(制御仕様)とモデルソースの間で等価であるかを単体テストによって検証される。
【0025】
記憶部406は、モデルソース及びその演算負荷情報404をモデルと関連付けて記憶する。
【0026】
図5に示すように、部分制御モデル内の関数単位で入力された演算負荷情報404と生成されたモデルソースには、モデル名及びモデルバージョンに基づいて生成されたIDを付与することで、部分制御モデルと関連付けて記憶部406に記憶する。全体制御モデルに含まれる全ての部分制御モデルについて、事前にモデルソースを生成し、モデルに含まれる関数単位の演算負荷情報404と合わせて記憶しておく。
【0027】
全体制御モデル解析部407は、全体制御モデルで使用されている部分制御モデルの一覧、及びそれらの部分制御モデルに属する機能の実行周期と実行順序を取得し、部分制御モデルの処理順序及び実行周期の定義が記載されるジョブテーブル(図6参照)と呼ばれる一覧を作成する。このジョブテーブルにおいて、実行周期及び機能が同じ部分制御モデルは別のコアに割り当てられないので、これらの部分制御モデルの間では、テーブルに記載された順番が実行順序を表す。さらに、異なる演算周期で同一変数を使用している箇所を検索し、検索された変数を接続する変数接続処理の一覧を生成する。
【0028】
モデルソース収集部408は、全体制御モデル解析部407がジョブテーブルに一覧化した部分制御モデルのうち、全体制御モデル内で使用される部分制御モデルのモデルソースを記憶部406から収集する。
【0029】
接続処理追加部409は、ジョブテーブルに記載された関数実行順序情報と全体制御モデル解析部407で作成した変数接続処理の一覧を参照し、異なる演算周期の変数情報受け渡し処理などの制御モデル間の接続処理を追加し、実行周期及び機能の組み合わせ毎の関数実行順序定義ファイル及び変数情報受け渡し処理定義ファイルを作成する。これらによって、モデルソース収集部408で収集されたモデルソースと全体制御モデルの振る舞いを一致させる。また、モデルソースのファイル名の一覧を用いて、コンパイルの対象となるソースファイルを定義するコンパイル情報を作成する。
【0030】
並列処理作成部410は、コア割り当て情報411と、プロセッサ情報412と、ジョブテーブルに記載された機能及び周期の情報に基づいて、モデルソースの関数を各コアに割り当てる。ジョブテーブルに記載された関数のうち、実行周期及び機能が同じ関数の間では変数は、受け渡しや算出参照の関係から実行順序の制約が発生するため、同一コアに割り当てる必要がある。そのため、実行周期及び機能が同じ関数を一つの関数グループとして扱うとよい。この関数グループ単位であれば、変数の受け渡しや実行順序の制約を考慮せずコアへ割り当てできる。
【0031】
コア割り当て情報411は、図7に示すようにジョブテーブルに記載された実行周期及び機能が同じ関数を含む関数グループごとに分類された処理のコアへの割り当てが定義される情報である。図8に割り当ての例を示す。ジョブテーブル上で「10ms_機能A」に該当する関数(関数1、関数2)が、コア割り当て情報411でコア0に割り当てると定義されている場合、コア0に割り当てられる。このように、ジョブテーブルに記載された関数について、関数グループ単位でコアへ割り当てる。
【0032】
プロセッサ情報412は、作成したソフトウェアを動作させるプロセッサの情報であり、例えば、使用するマイコンのコア数の情報、コアごとのRAMのアドレス割り当て情報を含む。これにより、使用するマイコンのコア数に応じて自動的に並列化した処理を作成できる。
【0033】
演算負荷確認部413は、記憶部406から演算負荷情報404を取得し、並列処理作成部410が作成した並列処理適用済みのソース群、コア割り当て情報411、全体制御モデル解析部407が作成したジョブテーブル、記憶部406に記憶された部分制御モデルに含まれる関数の演算負荷情報404に基づいて、コア単位の演算負荷を予測し、コア単位で演算処理が破綻するかを確認する。
【0034】
コンパイル部414は、演算負荷確認部413で演算処理が破綻しないと判定された場合、モデルソースを自動車用電子制御ユニットのマイコンで実行可能なコードにコンパイルする。
【0035】
プログラム出力部415は、コンパイル部414で変換されたコンパイル済プログラムを、自動車用電子制御ユニットに書き込むために出力する。
【0036】
ソフトウェア作成システム401は、プロセッサ、メモリ、補助記憶装置及び通信インターフェースを有する計算機によって構成される。プロセッサは、メモリに格納されたプログラムを実行する演算装置である。プロセッサが、各種プログラムを実行することによって、ソフトウェア作成システム401が提供する機能が実現される。なお、プロセッサがプログラムを実行して行う処理の一部を、他の演算装置(例えば、ASIC、FPGA等のハードウェア)で実行してもよい。メモリは、不揮発性の記憶素子であるROM及び揮発性の記憶デバイスであるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶デバイスであり、プロセッサが実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。補助記憶装置は、例えば、磁気記憶装置等の大容量かつ不揮発性の記憶デバイスであり、プロセッサが実行するプログラム及びプログラムの実行時にプロセッサが使用するデータを格納する。通信インターフェースは、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置である。
【0037】
プロセッサが実行するプログラムは、リムーバブルメディア(CD-ROM、フラッシュメモリなど)又はネットワークを介してソフトウェア作成システム401に提供され、非一時的記憶媒体である不揮発性の補助記憶装置に格納される。このため、ソフトウェア作成システム401は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【0038】
ソフトウェア作成システム401は、物理的に一つの計算機上で、又は、論理的又は物理的に構成された1又は複数の計算機上で構成される計算機システムであり、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。ソフトウェア作成システム401を構成する各機能ブロック(例えば、モデルソース生成部405、全体制御モデル解析部407など)は、別個の物理的又は論理的計算機上で動作するものでも、複数が組み合わされて一つの物理的又は論理的計算機上で動作するものでもよい。
【0039】
図9は、本実施例の演算負荷確認部413が実行する処理のフローチャートである。
【0040】
並列処理作成部410が処理を実行した後、演算負荷確認部413は以下の手順で演算処理が破綻するかを確認する。まず、全体制御モデルを構成する部分制御モデル群に含まれる関数の演算負荷情報404を記憶部406から収集する(901)。次に、ジョブテーブルを参照し、各関数が属する関数グループを特定する(902)。さらに、関数グループを割り当てるコアを記載したコア割り当て情報411と各関数が属する関数グループの情報に基づいて、各コアに割り当てられた関数の演算負荷情報404を積算する。その後、コア単位の演算負荷情報と、関数グループ単位の演算負荷情報を出力する(904、905)。そして、コア単位の演算負荷の見積り結果から、全てのコアにおける演算処理時間が設計者が規定した処理時間(例えば演算周期)より短いかを判定する(906)。全てのコアにおける演算処理時間が設計者が規定した処理時間より短い場合、演算処理は破綻しないと予測されるので、コンパイル可能なソース群を出力し(907)、出力されたソース群をコンパイル部414がコンパイルする。一方、一部のコアにおける演算処理時間が設計者が規定した処理時間より長い場合、少なくとも一部のコアで演算処理が破綻すると予想されるので、演算負荷が演算周期を超過しているエラーを設計者に通知する(908)。
【0041】
設計者はエラー通知を契機に、図10に示すような下記1、2の検討を行い、コア割り当て情報411を修正し、図9の演算負荷確認処理を最初から再実行する。
【0042】
1.出力済みのコア単位の演算負荷情報と関数グループ単位の演算負荷情報から、コア単位の演算負荷の状況と移動可能な最小単位(実行周期及び機能が同じ関数グループ単位)の演算負荷を把握する。
【0043】
2.コア1において演算処理が破綻していることが確認できる場合、設計者は、コア1に配置された実行周期及び機能が同じ関数グループの一部を別コアに配置するため、コア割り当て情報411を変更して、並列処理作成部410による処理から演算負荷確認部413による処理を再実行する。図10の下側に示すように、コア1の演算処理時間が設計者が規定した処理時間より短くなり、コンパイル可能ソース群を出力するまでコア割り当て情報411の修正、並列処理作成部410による処理から演算負荷確認部413による処理の再実行を繰り返す。
【0044】
ここで処理のコアへの再配置は、演算負荷確認部413によって出力される実行周期及び機能単位の演算負荷情報に基づいて設計者が手動で行うことを想定しているが、他の方法で処理をコアへ再配置してもよい。例えば、複数パターンのコア割り当て情報411を与えておき、並列処理作成部410及び演算負荷確認部413による処理を複数回自動的に繰り返し実行することで、複数のコア割り当て情報411の中から演算処理が破綻しない割り当てパターンを選択してもよい。
【0045】
演算負荷確認部413においてソフトウェアの演算処理が破綻しないことが確認された後、コンパイル部414はマイコンに書き込みできるように全体制御モデルのコードを変換し、変換されたコンパイル済プログラムをプログラム出力部415から出力する。
【0046】
以上に説明したように、本実施例のソフトウェア作成システム401によると、部分制御モデル402のモデルソースを記憶する記憶部406と、処理のコアへの割り当てが定義されるコア割り当て情報411、マイコンのコアの情報を含むプロセッサ情報412、及び、部分制御モデル402に属する機能の実行周期と実行順序の情報を含むジョブテーブルに基づいて、コアの各々に部分制御モデルの処理(モデルソース)を割り当てる並列処理作成部410と、並列処理作成部410でコアに処理が割り当てられた部分制御モデル402のモデルソースのコンパイル前に、部分制御モデル402の処理が割り当てられた各コアの演算実行時間が演算周期より短いかを判定する演算負荷確認部413と、各コアの演算実行時間が演算周期より短い場合に、マイコンに書き込み可能なソフトウェアを出力するプログラム出力部415とを有する。すなわち、並列処理作成部410がコアごとの並列処理を割り当てた後、演算負荷確認部413が処理の割り当て情報に基づいてコアごとの演算負荷を予測することで、ソフトウェア全体の処理の内容やコアへの配置が実機試験で使用するものと同等の状態となり、結合後のソフトウェアの演算処理の破綻を実機検証前の段階で判定できる。このため、ソフトウェア開発における手戻りを抑制できる。
【0047】
また、記憶部406は、ソフトウェア作成システム401に入力された、部分制御モデル402を構成する関数単位の演算負荷情報404を記憶し、演算負荷確認部413は、記憶部406から取得した演算負荷情報404及び並列処理作成部410がコアに割り当てた部分制御モデル402の情報に基づいて、コアごとの部分制御モデル402の演算負荷を積算して、部分制御モデル402の処理が割り当てられた各コアの演算処理時間が演算周期より短いかを判定する。このため、部分制御モデルのモデル名及びバージョン情報によってモデルソースの演算負荷情報を記憶部406から取得できるようにして、部分制御モデルの再利用時においても再度演算負荷情報を入力することなく、記憶部から該当モデルの演算負荷情報を再利用でき、ソフトウェアの演算負荷を効率よく確認でき、演算処理が破綻するかを実機検証前の段階で確認できる。
【0048】
また、演算負荷確認部413は、コア単位の演算負荷情報と、別コアに配置できない機能の纏まりである関数グループ単位の演算負荷情報を出力する。すなわち、変数の受渡しが発生する部分を一纏めに配置して、変数の受け渡しを追わなくても、部分制御モデルを容易に再配置できる。
【0049】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【0050】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【0051】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記憶装置、又は、ICカード、SDカード、DVD等の記録媒体に格納することができる。
【0052】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【0053】
201~209 部分制御モデル
302、303 入力値
304~306 処理
307、308 出力値
401 ソフトウェア作成システム
402 部分制御モデル
404 演算負荷情報
405 モデルソース生成部
406 記憶部
407 全体制御モデル解析部
408 モデルソース収集部
409 接続処理追加部
410 並列処理作成部
411 コア割り当て情報
412 プロセッサ情報
413 演算負荷確認部
414 コンパイル部
415 プログラム出力部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10