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

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

▶ ミラクシアエッジテクノロジー株式会社の特許一覧

特開2024-78142モデル作成システムおよびモデル作成方法
<>
  • 特開-モデル作成システムおよびモデル作成方法 図1
  • 特開-モデル作成システムおよびモデル作成方法 図2
  • 特開-モデル作成システムおよびモデル作成方法 図3
  • 特開-モデル作成システムおよびモデル作成方法 図4
  • 特開-モデル作成システムおよびモデル作成方法 図5
  • 特開-モデル作成システムおよびモデル作成方法 図6A
  • 特開-モデル作成システムおよびモデル作成方法 図6B
  • 特開-モデル作成システムおよびモデル作成方法 図7
  • 特開-モデル作成システムおよびモデル作成方法 図8
  • 特開-モデル作成システムおよびモデル作成方法 図9
  • 特開-モデル作成システムおよびモデル作成方法 図10
  • 特開-モデル作成システムおよびモデル作成方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024078142
(43)【公開日】2024-06-10
(54)【発明の名称】モデル作成システムおよびモデル作成方法
(51)【国際特許分類】
   G06F 11/36 20060101AFI20240603BHJP
   G06F 8/35 20180101ALI20240603BHJP
【FI】
G06F11/36 108
G06F8/35
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022190529
(22)【出願日】2022-11-29
(71)【出願人】
【識別番号】520423334
【氏名又は名称】ミラクシアエッジテクノロジー株式会社
(74)【代理人】
【識別番号】100109210
【弁理士】
【氏名又は名称】新居 広守
(74)【代理人】
【識別番号】100137235
【弁理士】
【氏名又は名称】寺谷 英作
(74)【代理人】
【識別番号】100131417
【弁理士】
【氏名又は名称】道坂 伸一
(72)【発明者】
【氏名】今井 紅
【テーマコード(参考)】
5B042
5B376
【Fターム(参考)】
5B042GA05
5B042HH10
5B042MA08
5B042MA11
5B042MC08
5B376BC06
5B376BC38
(57)【要約】
【課題】モデルと自動生成コードとの等価性の検証における生産性をあげることができるモデル作成システムを提供する。
【解決手段】モデル作成システム100は、入力モデルファイル200に含まれる1以上のブロックのうちから、関数化ブロックを決定する決定部101と、関数化ブロックの入出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、グループ化されている入出力パラメータをそれぞれ複数の要素に分解する分解部102と、複数の要素をグループ化するグループ化ブロックを作成し、複数の要素を分解する逆グループ化ブロックを作成し、入力パラメータがグループ化ブロックから関数化ブロックに入力され、出力パラメータが関数化ブロックから逆グループ化ブロックに入力されるように、結線を行い、結線が行われた上記各ブロックを示す情報を、作成対象モデルファイル300として出力する作成部103と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムであって、
前記第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定する決定部と、
前記関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の前記要素に分解する分解部と、
前記グループ化されている入力パラメータから分解された複数の前記要素が入力され、前記グループ化されている入力パラメータを出力するグループ化ブロックを作成し、
前記グループ化されている出力パラメータが入力され、前記グループ化されている出力パラメータから分解された複数の前記要素を出力する逆グループ化ブロックを作成し、
前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力され、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、結線を行い、
前記結線が行われた、前記グループ化ブロック、前記関数化ブロックおよび前記逆グループ化ブロックを示す情報を、前記第2モデルファイルとして出力する、
作成部と、を備える、
モデル作成システム。
【請求項2】
前記グループ化されている入力パラメータおよび前記グループ化されている出力パラメータのそれぞれは、ベクトル信号であり、
前記要素は、1つの変数である、
請求項1に記載のモデル作成システム。
【請求項3】
前記グループ化されている入力パラメータおよび前記グループ化されている出力パラメータのそれぞれは、バス信号であり、
前記要素は、1つの変数である、
請求項1に記載のモデル作成システム。
【請求項4】
前記作成部は、第1信号線と、第2信号線とを作成することで、前記結線を行い、
前記第1信号線は、前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力されるように、前記グループ化ブロックと前記関数化ブロックとを接続し、
前記第2信号線は、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、前記関数化ブロックと前記逆グループ化ブロックとを接続する、
請求項1~3のいずれか1項に記載のモデル作成システム。
【請求項5】
前記作成部は、第1タグと、第3信号線と、第2タグと、第4信号線と、第3タグと、第5信号線と、第4タグと、第6信号線とを作成することで、前記結線を行い、
前記第3信号線は、前記グループ化されている入力パラメータが前記グループ化ブロックから前記第1タグに入力されるように、前記第1タグと前記グループ化ブロックとを接続し、
前記第4信号線は、前記グループ化されている入力パラメータが前記第2タグから前記関数化ブロックに入力されるように、前記第2タグと前記関数化ブロックとを接続し、
前記第5信号線は、前記グループ化されている出力パラメータが前記関数化ブロックから前記第3タグに入力されるように、前記第3タグと前記関数化ブロックとを接続し、
前記第6信号線は、前記グループ化されている出力パラメータが前記第4タグから前記逆グループ化ブロックに入力されるように前記第4タグと前記逆グループ化ブロックとを接続し、
前記第1タグと前記第2タグとは、仮想的な信号線で接続されており、
前記第3タグと前記第4タグとは、仮想的な信号線で接続されている、
請求項1~3のいずれか1項に記載のモデル作成システム。
【請求項6】
前記作成部は、第1格納ブロックと、第7信号線と、第1参照ブロックと、第8信号線と、第2格納ブロックと、第9信号線と、第2参照ブロックと、第10信号線とを作成することで、前記結線を行い、
前記第7信号線は、前記グループ化されている入力パラメータが前記グループ化ブロックから前記第1格納ブロックに入力されるように、前記第1格納ブロックと前記グループ化ブロックとを接続し、
前記第8信号線は、前記グループ化されている入力パラメータが前記第1参照ブロックから前記関数化ブロックに入力されるように、前記第1参照ブロックと前記関数化ブロックとを接続し、
前記第9信号線は、前記グループ化されている出力パラメータが前記関数化ブロックから前記第2格納ブロックに入力されるように、前記第2格納ブロックと前記関数化ブロックとを接続し、
前記第10信号線は、前記グループ化されている出力パラメータが前記第2参照ブロックから前記逆グループ化ブロックに入力されるように、前記第2参照ブロックと前記逆グループ化ブロックと接続し、
前記第1格納ブロックおよび前記第2格納ブロックは、それぞれ、メモリ領域にデータを一時的に格納するブロックであり、
前記第1参照ブロックは、前記第1格納ブロックによってメモリ領域に一時的に格納されたデータを参照するブロックであり、
前記第2参照ブロックは、前記第2格納ブロックによってメモリ領域に一時的に格納されたデータを参照するブロックである、
請求項1~3のいずれか1項に記載のモデル作成システム。
【請求項7】
データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムによって実行されるモデル作成方法であって、
前記第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定し、
前記関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、
グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の前記要素に分解し、
前記グループ化されている入力パラメータから分解された複数の前記要素が入力され、前記グループ化されている入力パラメータを出力するグループ化ブロックを作成し、
前記グループ化されている出力パラメータが入力され、前記グループ化されている出力パラメータから分解された複数の前記要素を出力する逆グループ化ブロックを作成し、
前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力され、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、結線を行い、
前記結線が行われた、前記グループ化ブロック、前記関数化ブロックおよび前記逆グループ化ブロックを示す情報を、前記第2モデルファイルとして出力する、
モデル作成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、モデルベース開発におけるモデルの動作挙動と、モデルから自動生成されたコードとの等価性の検証を行うためのモデル作成システムおよびモデル作成方法に関する。
【背景技術】
【0002】
組込ソフトウェア開発において、動く仕様書モデルを使って要求仕様を検証し、そのままソースコードを自動生成する開発手法が用いられることが多い。このような開発手法は、モデルベース開発と呼ばれる。モデルベース開発では、モデルの実行環境と、自動コード生成器によってモデルから自動生成されたコード(自動生成コードとも呼ぶ)を更にバイナリ化して検証する環境とに乖離が出ることがあるため、モデルとバイナリコードとの等価性の検証を行う必要がある。
【0003】
特許文献1には、コード検査ツールおよびコード検査方法が開示されている。
【0004】
特許文献2には、プログラム検証装置、プログラム検証方法および検証機能実行用プログラムが開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2021-117666号公報
【特許文献2】特開2020-4036号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1および特許文献2には、モデルと自動生成されたコードとの等価性の検証を行う装置が開示されている。特許文献1および特許文献2に開示された装置では、モデルで記述された任意のブロックとソースコードとの対応関係を完全に把握しなければならないことが前提条件となっている。
【0007】
しかしながら、モデルとソースコードとの対応関係を機械的に把握させることは極めて難しく、適用できる範囲が限定されて汎用性に欠けてしまう。自動コード生成器およびモデルを司るモデリングツールは高級言語で実装された更なる高級言語であり、モデルの組み方次第では自動コード生成器が生成するソースコードの生成パターンが無数になり、完璧な想定が難しく、制限事項が多数存在してしまうためである。
【0008】
また、モデルについてはモデリングツールのシミュレータで動作挙動を検証し、自動生成コードについては更にバイナリ化してシミュレータ(例えばカバレッジマスターwinAMS(登録商標))で動作挙動を検証して、等価性の検証を行うための一連の流れを連携させる市販ツールMBTオプションがある。しかしながら、上述した理由により制限事項が多数存在し、制限事項に該当する場合、モデルの入出力信号とコードの入出力変数および入出力引数との対応付けを手動で行う必要があり、多大な労力や時間を費やしてしまうという問題がある。
【0009】
そこで、本開示は、モデルと自動生成コードとの等価性の検証における生産性をあげることができるモデル作成システムなどを提供する。
【課題を解決するための手段】
【0010】
本開示に係るモデル作成システムは、データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムであって、前記第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定する決定部と、前記関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の前記要素に分解する分解部と、前記グループ化されている入力パラメータから分解された複数の前記要素が入力され、前記グループ化されている入力パラメータを出力するグループ化ブロックを作成し、前記グループ化されている出力パラメータが入力され、前記グループ化されている出力パラメータから分解された複数の前記要素を出力する逆グループ化ブロックを作成し、前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力され、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、結線を行い、前記結線が行われた、前記グループ化ブロック、前記関数化ブロックおよび前記逆グループ化ブロックを示す情報を、前記第2モデルファイルとして出力する、作成部と、を備える。
【0011】
本開示に係るモデル作成方法は、データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムによって実行されるモデル作成方法であって、前記第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定し、前記関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の前記要素に分解し、前記グループ化されている入力パラメータから分解された複数の前記要素が入力され、前記グループ化されている入力パラメータを出力するグループ化ブロックを作成し、前記グループ化されている出力パラメータが入力され、前記グループ化されている出力パラメータから分解された複数の前記要素を出力する逆グループ化ブロックを作成し、前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力され、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、結線を行い、前記結線が行われた、前記グループ化ブロック、前記関数化ブロックおよび前記逆グループ化ブロックを示す情報を、前記第2モデルファイルとして出力する処理を含む。
【0012】
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
【発明の効果】
【0013】
本開示の一態様に係るモデル作成システムなどによれば、モデルと自動生成コードとの等価性の検証における生産性をあげることができる。
【図面の簡単な説明】
【0014】
図1】実施の形態に係るモデル作成システムの一例を示すブロック図である。
図2】実施の形態に係る入力モデルファイルの一例を示す図である。
図3】入力モデルファイルから自動生成されるソースコードの生成パターンが無数になり得ることを説明するための図である。
図4】実施の形態に係る決定部の動作の一例を示すフローチャートである。
図5】実施の形態に係る分解部の動作の一例を示すフローチャートである。
図6A】複数の要素に分解された入力パラメータの一例を示す図である。
図6B】複数の要素に分解された出力パラメータの一例を示す図である。
図7】実施の形態に係る作成対象モデルファイルの一例を示す図である。
図8】作成対象モデルファイルにおける結線の他の一例を示す図である。
図9】作成対象モデルファイルにおける結線の他の一例を示す図である。
図10】作成対象モデルファイルから自動生成されるソースコードの一例を示す図である。
図11】その他の実施の形態に係るモデル作成方法の一例を示すフローチャートである。
【発明を実施するための形態】
【0015】
以下、実施の形態について、図面を参照しながら具体的に説明する。
【0016】
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置および接続形態、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。
【0017】
(実施の形態)
以下、実施の形態に係るモデル作成システムについて説明する。
【0018】
図1は、実施の形態に係るモデル作成システム100の一例を示すブロック図である。なお、図1には、モデル作成システム100の他に、モデル作成システム100に入力される入力モデルファイル200およびモデル作成システム100から出力される作成対象モデルファイル300、ならびに、自動コード生成器400が示されている。自動コード生成器400は、モデル(モデルファイル)からソースコードなどを生成する。
【0019】
入力モデルファイル200は、データフローを示す第1モデルファイルの一例である。入力モデルファイル200は、モデルベース開発で用いられる処理内容を表すモデルである。モデルベース開発では、一般的に、処理単位となるブロックを用いてモデルが記述される。
【0020】
図2は、実施の形態に係る入力モデルファイル200の一例を示す図である。ここでは説明を簡単にするために、入力モデルファイル200を1つブロックからなるモデルとしている。
【0021】
入力モデルファイル200に含まれる1つのブロックは後述するように関数化されるブロックであり、このブロックを関数化ブロック201と呼ぶ。関数化ブロック201には、例えば、3つの入力パラメータIn1~In3および4つの出力パラメータOut1~Out4が対応付けられている。入力モデルファイル200での検証(MILS(Model In the Loop Simulation)検証)が行われ、自動コード生成器400によって入力モデルファイル200から自動生成コードが生成され、PILS(Processor In the Loop Simulation)検証が行われる場合には、自動生成コードの生成パターンが無数になり得、PILS検証が難しくなっている。
【0022】
図3は、入力モデルファイル200から自動生成されるソースコードの生成パターンが無数になり得ることを説明するための図である。
【0023】
図3に示されるように、入力モデルファイル200から自動生成されるソースコードには、想定が必要なパターンが無数にあり、入出力信号と自動生成コードの入出力変数とを一対一に対応させることが難しくなっている。このため、モデルの実装時に厳しい制約が必要となる。
【0024】
そこで、本開示では、入力モデルファイル200とは別の作成対象モデルファイル300を作成するモデル作成システム100を提供する。
【0025】
モデル作成システム100は、入力モデルファイル200から作成対象モデルファイル300を作成するシステムである。作成対象モデルファイル300は、データフローを示す第2モデルファイルの一例である。
【0026】
モデル作成システム100は、決定部101、分解部102および作成部103を備える。モデル作成システム100は、プロセッサおよびメモリなどを含むコンピュータである。メモリは、ROM(Read Only Memory)およびRAM(Random Access Memory)などであり、プロセッサにより実行されるプログラムを記憶することができる。決定部101、分解部102および作成部103は、メモリに格納されたプログラムを実行するプロセッサなどによって実現される。
【0027】
例えば、モデル作成システム100は、1つの筐体からなるコンピュータであってもよい。例えば、モデル作成システム100は、サーバであってもよい。なお、モデル作成システム100が備える構成要素は、1つのサーバに配置されていてもよいし、複数のサーバに分散して配置されていてもよい。
【0028】
決定部101は、入力モデルファイル200に含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロック201を決定する。決定部101の動作の詳細については、後述する図4で説明する。
【0029】
分解部102は、関数化ブロックの入力パラメータおよび出力パラメータをそれぞれ複数の要素に分解する。分解部102の動作の詳細については、後述する図5で説明する。
【0030】
作成部103は、作成対象モデルファイル300を作成し、出力する。作成部103の動作の詳細については、後述する図7で説明する。
【0031】
まず、決定部101の動作の詳細について、図4を用いて説明する。
【0032】
図4は、実施の形態に係る決定部101の動作の一例を示すフローチャートである。
【0033】
決定部101は、入力モデルファイル200に含まれる1以上のブロックのそれぞれについて、モデルの最上位階層のブロックであるか否かを判定する(ステップS101)。なお、図2に示されるように、入力モデルファイル200にブロックが1つのみ含まれている場合には、このブロックはモデルの最上位階層のブロックとなる。
【0034】
決定部101は、モデルの最上位階層のブロックでないと判定したブロック(ステップS101でNoと判定したブロック)について、関数化される設定がされているか否かを判定する(ステップS102)。つまり、決定部101は、2階層目以降のブロックについて、関数化される設定がされているか否かを判定する。例えば、各ブロックに対して関数化するか否かの設定は、モデルの開発ツールを介して行われてもよい。
【0035】
決定部101は、モデルの最上位階層のブロックであると判定したブロック(ステップS101でYesと判定したブロック)、または、関数化される設定がされていると判定したブロック(ステップS102でYesと判定したブロック)を関数化されるブロックに決定する(ステップS103)。ここでは、決定部101は、入力モデルファイル200に含まれる1以上のブロックのうちから、関数化ブロック201を決定する。
【0036】
決定部101は、モデルの最上位階層のブロックでないと判定したブロック(ステップS101でNoと判定したブロック)であり、かつ、関数化される設定がされていないと判定したブロック(ステップS102でNoと判定したブロック)を関数化されないブロックに決定する(ステップS104)。
【0037】
例えば、四則演算または論理演算などの細かい演算を行うブロックは、関数化されないブロックとなる。
【0038】
次に、分解部102の動作の詳細について、図5を用いて説明する。
【0039】
図5は、実施の形態に係る分解部の動作の一例を示すフローチャートである。
【0040】
まず、分解部102は、関数化ブロック201の入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定する(ステップS111)。図2に示されるように、関数化ブロック201には、3つの入力パラメータIn1~In3および4つの出力パラメータOut1~Out4が対応付けられている。例えば、分解部102は、各入出力パラメータのデータ型を確認することで、各入出力パラメータがパラメータの要素でグループ化されているか否かを判定する。データ型の確認方法は特に限定されないが、分解部102は、各入出力パラメータについて予めデータ型が定められている場合には、予め定められているデータ型を確認する。また、分解部102は、各入出力パラメータについて、実際に流れているデータを確認することで、データ型を確認してもよい。
【0041】
例えば、分解部102は、入出力パラメータのデータ型が配列型である、言い換えると、入出力パラメータがベクトル信号であると判定した場合、入出力パラメータがパラメータの要素でグループ化されていると判定する。また、例えば、分解部102は、入出力パラメータのデータ型が構造体である、言い換えると、入出力パラメータがバス信号であると判定した場合、入出力パラメータがパラメータの要素でグループ化されていると判定する。例えば、入力パラメータIn2およびIn3ならびに出力パラメータOut2がベクトル信号であり、出力パラメータOut3およびOut4がバス信号であり、分解部102は、これらの入出力パラメータがパラメータの要素でグループ化されていると判定する。
【0042】
分解部102は、グループ化されている入力パラメータおよびグループ化されている出力パラメータ(ステップS111でYesと判定した入力パラメータおよび出力パラメータ)をそれぞれ複数の要素に分解する(ステップS112)。例えば、要素は、1つの変数である。ここで、複数の要素に分解された入力パラメータおよび出力パラメータの例について、図6Aおよび図6Bを用いて説明する。
【0043】
図6Aは、複数の要素に分解された入力パラメータの一例を示す図である。
【0044】
図6Bは、複数の要素に分解された出力パラメータの一例を示す図である。
【0045】
図6Aに示されるように、例えば、ベクトル信号である入力パラメータIn2は、入力ブロック2~4に示される3つの要素(変数)に分解され、ベクトル信号である入力パラメータIn3は、入力ブロック5~8に示される4つの要素(変数)に分解される。図6Bに示されるように、ベクトル信号である出力パラメータOut2は、出力ブロック2~9に示される8つの要素(変数)に分解され、バス信号である出力パラメータOut3は、出力ブロック10~13に示される4つの要素(変数)に分解され、バス信号である出力パラメータOut4は、出力ブロック14~21に示される8つの要素(変数)に分解される。
【0046】
例えば、入力パラメータIn1および出力パラメータOut1は、ベクトル信号またはバス信号などではないため、分解部102は、これらの入出力パラメータがパラメータの要素でグループ化されていないと判定する。分解部102は、グループ化されていない入力パラメータおよびグループ化されていない出力パラメータ(ステップS111でNoと判定した入力パラメータおよび出力パラメータ)を複数の要素に分解しない。
【0047】
次に、作成部103の動作の詳細について、図7を用いて説明する。
【0048】
図7は、実施の形態に係る作成対象モデルファイル300の一例を示す図である。
【0049】
作成部103は、グループ化されている入力パラメータから分解された複数の要素が入力され、グループ化されている入力パラメータを出力するグループ化ブロックを作成する。図7に示されるように、例えば、作成部103は、分解された複数の要素として入力ブロック2~4が入力され、グループ化されている入力パラメータIn2を出力するグループ化ブロック301を作成する。また、例えば、作成部103は、分解された複数の要素として入力ブロック5~8が入力され、グループ化されている入力パラメータIn3を出力するグループ化ブロック302を作成する。このように、作成部103は、複数の入力を束ねて1つの入力信号を出力する処理を行うブロックを作成する。
【0050】
作成部103は、グループ化されている出力パラメータが入力され、グループ化されている出力パラメータから分解された複数の要素を出力する逆グループ化ブロックを作成する。図7に示されるように、例えば、作成部103は、グループ化されている出力パラメータOut2が入力され、分解された複数の要素として出力ブロック2~9を出力する逆グループ化ブロック303を作成する。また、例えば、作成部103は、グループ化されている出力パラメータOut3が入力され、分解された複数の要素として出力ブロック10~13を出力する逆グループ化ブロック304を作成する。また、例えば、作成部103は、グループ化されている出力パラメータOut4が入力され、分解された複数の要素として出力ブロック14~21を出力する逆グループ化ブロック305を作成する。このように、作成部103は、グループ化されている1つの信号を分解して出力する処理を行うブロックを作成する。
【0051】
作成部103は、グループ化されている入力パラメータがグループ化ブロックから関数化ブロック201に入力されるように、結線を行う。図7に示されるように、例えば、作成部103は、グループ化されている入力パラメータIn2がグループ化ブロック301から関数化ブロック201に入力されるように、結線を行う。また、例えば、作成部103は、グループ化されている入力パラメータIn3がグループ化ブロック302から関数化ブロック201に入力されるように、結線を行う。
【0052】
図7に示されるように、例えば、作成部103は、信号線311および312を作成することで、結線を行う。信号線311および312は、それぞれ第1信号線の一例である。例えば、信号線311は、グループ化されている入力パラメータIn2がグループ化ブロック301から関数化ブロック201に入力されるように、グループ化ブロック301と関数化ブロック201とを直接接続する。例えば、信号線312は、グループ化されている入力パラメータIn3がグループ化ブロック302から関数化ブロック201に入力されるように、グループ化ブロック302と関数化ブロック201とを直接接続する。
【0053】
作成部103は、グループ化されている出力パラメータが関数化ブロック201から逆グループ化ブロックに入力されるように、結線を行う。図7に示されるように、例えば、作成部103は、グループ化されている出力パラメータOut2が関数化ブロック201から逆グループ化ブロック303に入力されるように、結線を行う。また、例えば、作成部103は、グループ化されている出力パラメータOut3が関数化ブロック201から逆グループ化ブロック304に入力されるように、結線を行う。また、例えば、作成部103は、グループ化されている出力パラメータOut4が関数化ブロック201から逆グループ化ブロック305に入力されるように、結線を行う。
【0054】
図7に示されるように、例えば、作成部103は、信号線313~315を作成することで、結線を行う。信号線313~315は、それぞれ第2信号線の一例である。例えば、信号線313は、グループ化されている出力パラメータOut2が関数化ブロック201から逆グループ化ブロック303に入力されるように、関数化ブロック201と逆グループ化ブロック303とを直接接続する。また、例えば、信号線314は、グループ化されている出力パラメータOut3が関数化ブロック201から逆グループ化ブロック304に入力されるように、関数化ブロック201と逆グループ化ブロック304とを直接接続する。また、例えば、信号線315は、グループ化されている出力パラメータOut4が関数化ブロック201から逆グループ化ブロック305に入力されるように、関数化ブロック201と逆グループ化ブロック305とを直接接続する。
【0055】
このように、ブロック間を信号線で直接接続することで、ブロック間のデータの受け渡しをすることができる。
【0056】
そして、作成部103は、結線が行われた、グループ化ブロック301および302、関数化ブロック201、ならびに、逆グループ化ブロック303、304および305を示す情報を、作成対象モデルファイル300として出力する。
【0057】
なお、結線の行い方は、図7に示されるブロック間を信号線で直接接続する方法に限らない。ここで、結線の他の例について、図8および図9を用いて説明する。
【0058】
図8および図9は、作成対象モデルファイル300における結線の他の一例を示す図である。なお、図8および図9では、グループ化ブロック301と関数化ブロック201との結線、および、関数化ブロック201と逆グループ化ブロック303との結線に着目して説明する。グループ化ブロック302と関数化ブロック201との結線、ならびに、関数化ブロック201と逆グループ化ブロック304および305との結線にも図8および図9で説明する結線の方法を適用することができる。
【0059】
図8に示されるように、例えば、作成部103は、タグ321~324および信号線331~334を作成することで、結線を行ってもよい。タグ321は第1タグの一例であり、タグ322は第2タグの一例であり、タグ323は第3タグの一例であり、タグ324は第4タグの一例である。信号線331は第3信号線の一例であり、信号線332は第4信号線の一例であり、信号線333は第5信号線の一例であり、信号線334は第6信号線の一例である。
【0060】
例えば、信号線331は、グループ化されている入力パラメータIn2がグループ化ブロック301からタグ321に入力されるように、タグ321とグループ化ブロック301とを接続する。例えば、信号線332は、グループ化されている入力パラメータIn2がタグ322から関数化ブロック201に入力されるように、タグ322と関数化ブロック201とを接続する。タグ321とタグ322とは、仮想的な信号線で接続されているため、上記のように信号線331および332ならびにタグ321および322を接続することで、グループ化ブロック301と関数化ブロック201とを信号線311で直接接続する場合(図7参照)と同じように、グループ化ブロック301と関数化ブロック201とでデータの受け渡しをすることが可能となる。
【0061】
例えば、信号線333は、グループ化されている出力パラメータOut2が関数化ブロック201からタグ323に入力されるように、タグ323と関数化ブロック201とを接続する。例えば、信号線334は、グループ化されている出力パラメータOut2がタグ324から逆グループ化ブロック303に入力されるようにタグ324と逆グループ化ブロック303とを接続する。例えば、タグ323とタグ324とは、仮想的な信号線で接続されている。これにより、上記のように信号線333および334ならびにタグ323および324を接続することで、関数化ブロック201と逆グループ化ブロック303とを信号線313で直接接続する場合(図7参照)と同じように、関数化ブロック201と逆グループ化ブロック303とでデータの受け渡しをすることが可能となる。
【0062】
このように、仮想的な信号線で接続されたタグを介して、ブロック間のデータの受け渡しをすることができる。
【0063】
図9に示されるように、例えば、作成部103は、格納ブロック341および343、参照ブロック342および344ならびに信号線351~354を作成することで、結線を行ってもよい。格納ブロック341は第1格納ブロックの一例であり、格納ブロック343は第2格納ブロックの一例である。参照ブロック342は第1参照ブロックの一例であり、参照ブロック344は第2参照ブロックの一例である。信号線351は第7信号線の一例であり、信号線352は第8信号線の一例であり、信号線353は第9信号線の一例であり、信号線354は第10信号線の一例である。
【0064】
例えば、信号線351は、グループ化されている入力パラメータIn2がグループ化ブロック301から格納ブロック341に入力されるように、格納ブロック341とグループ化ブロック301とを接続する。例えば、信号線352は、グループ化されている入力パラメータIn2が参照ブロック342から関数化ブロック201に入力されるように、参照ブロック342と関数化ブロック201とを接続する。例えば、格納ブロック341は、メモリ領域にデータを一時的に格納するブロックであり、参照ブロック342は、格納ブロック341によってメモリ領域に一時的に格納されたデータを参照するブロックである。これにより、上記のように信号線351および352、格納ブロック341ならびに参照ブロック342を接続することで、グループ化ブロック301と関数化ブロック201とを信号線311で直接接続する場合(図7参照)と同じように、グループ化ブロック301と関数化ブロック201とでデータの受け渡しをすることが可能となる。
【0065】
例えば、信号線353は、グループ化されている出力パラメータOut2が関数化ブロック201から格納ブロック343に入力されるように、格納ブロック343と関数化ブロック201とを接続する。例えば、信号線354は、グループ化されている出力パラメータOut2が参照ブロック344から逆グループ化ブロック303に入力されるように、参照ブロック344と逆グループ化ブロック303と接続する。例えば、格納ブロック343は、メモリ領域にデータを一時的に格納するブロックであり、参照ブロック344は、格納ブロック343によってメモリ領域に一時的に格納されたデータを参照するブロックである。これにより、上記のように信号線353および354、格納ブロック343ならびに参照ブロック344を接続することで、関数化ブロック201と逆グループ化ブロック303とを信号線313で直接接続する場合(図7参照)と同じように、関数化ブロック201と逆グループ化ブロック303とでデータの受け渡しをすることが可能となる。
【0066】
このように、メモリへのデータの格納およびメモリに格納されたデータの参照を利用することで、ブロック間のデータの受け渡しをすることができる。
【0067】
なお、作成対象モデルファイル300において、図7から図9で説明した結線の方法が組み合わせられていてもよい。例えば、関数化ブロック201と逆グループ化ブロック303とが信号線で直接接続されることで結線され、関数化ブロック201と逆グループ化ブロック304とがタグを介して結線され、関数化ブロック201と逆グループ化ブロック305とがメモリを利用して結線されていてもよい。
【0068】
次に、作成対象モデルファイル300から自動生成される自動生成コードの例について、図10を用いて説明する。
【0069】
図10は、作成対象モデルファイル300から自動生成されるソースコードの一例を示す図である。
【0070】
図10に示されるように、作成対象モデルファイル300から自動生成されるソースコードの生成パターンは固定され、1パターンとなる。
【0071】
以上説明した通り、入力モデルファイル200における関数化ブロック201に対して、入力パラメータIn2およびIn3における複数の要素をグループ化するグループ化ブロック301および302と、出力パラメータOut2~Out4における複数の要素を分解する逆グループ化ブロック303~305とが作成され、これらのブロックと関数化ブロック201とが結線されたものが作成対象モデルファイル300として作成される。グループ化ブロック301および302ならびに逆グループ化ブロック303~305が作成されることで、作成対象モデルファイル300における各入出力信号は、自動生成コードでは一意の変数になり、入力モデルファイル200の入出力信号と自動生成コードの入出力変数とを一対一に対応させることができる。このように、入力モデルファイル200とは別の作成対象モデルファイル300を作成するモデル作成システム100を提供することで、複雑な検証手段で発生していた問題を解決することができ、モデルと自動生成コードとの等価性の検証における生産性をあげることができる。
【0072】
(その他の実施の形態)
以上、本開示の一つまたは複数の態様に係るモデル作成システム100について、実施の形態に基づいて説明したが、本開示は、これらの実施の形態に限定されるものではない。本開示の趣旨を逸脱しない限り、当業者が思いつく各種変形を各実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本開示の一つまたは複数の態様の範囲内に含まれてもよい。
【0073】
例えば、本開示は、モデル作成システム100として実現できるだけでなく、モデル作成システム100を構成する構成要素が行うステップ(処理)を含むモデル作成方法として実現できる。
【0074】
図11は、その他の実施の形態に係るモデル作成方法の一例を示すフローチャートである。
【0075】
モデル作成方法は、データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムによって実行される方法であって、図11に示されるように、第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定し(ステップS11)、関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し(ステップS12)、グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の要素に分解し(ステップS13)、グループ化されている入力パラメータから分解された複数の要素が入力され、グループ化されている入力パラメータを出力するグループ化ブロックを作成し(ステップS14)、グループ化されている出力パラメータが入力され、グループ化されている出力パラメータから分解された複数の要素を出力する逆グループ化ブロックを作成し(ステップS15)、グループ化されている入力パラメータがグループ化ブロックから関数化ブロックに入力され、グループ化されている出力パラメータが関数化ブロックから逆グループ化ブロックに入力されるように、結線を行い(ステップS16)、結線が行われた、グループ化ブロック、関数化ブロックおよび逆グループ化ブロックを示す情報を、第2モデルファイルとして出力する(ステップS17)処理を含む。
【0076】
例えば、本開示は、モデル作成方法に含まれるステップを、コンピュータ(プロセッサ)に実行させるためのプログラムとして実現できる。さらに、本開示は、そのプログラムを記録したCD-ROM等である非一時的なコンピュータ読み取り可能な記録媒体として実現できる。
【0077】
例えば、本開示が、プログラム(ソフトウェア)で実現される場合には、コンピュータのCPU、メモリおよび入出力回路などのハードウェア資源を利用してプログラムが実行されることによって、各ステップが実行される。つまり、CPUがデータをメモリまたは入出力回路などから取得して演算したり、演算結果をメモリまたは入出力回路などに出力したりすることによって、各ステップが実行される。
【0078】
なお、上記実施の形態において、モデル作成システム100に含まれる各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。
【0079】
上記実施の形態に係るモデル作成システム100の機能の一部または全ては典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。また、集積回路化はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)、またはLSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。
【0080】
(付記)
以上の実施の形態の記載により、下記の技術が開示される。
【0081】
(技術1)データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムであって、前記第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定する決定部と、前記関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の前記要素に分解する分解部と、前記グループ化されている入力パラメータから分解された複数の前記要素が入力され、前記グループ化されている入力パラメータを出力するグループ化ブロックを作成し、前記グループ化されている出力パラメータが入力され、前記グループ化されている出力パラメータから分解された複数の前記要素を出力する逆グループ化ブロックを作成し、前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力され、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、結線を行い、前記結線が行われた、前記グループ化ブロック、前記関数化ブロックおよび前記逆グループ化ブロックを示す情報を、前記第2モデルファイルとして出力する、作成部と、を備える、モデル作成システム。
【0082】
これによれば、第1モデルファイルにおける関数化ブロックに対して、入力パラメータにおける複数の要素をグループ化するグループ化ブロックと、出力パラメータにおける複数の要素を分解する逆グループ化ブロックとが作成され、これらのブロックと関数化ブロックとが結線されたものが第2モデルファイルとして作成される。グループ化ブロックおよび逆グループ化ブロックが作成されることで、第2モデルファイルにおける各入出力信号は、自動生成コードでは一意の変数になり、第1モデルファイルの入出力信号と自動生成コードの入出力変数とを一対一に対応させることができる。このように、第1モデルファイルとは別の第2モデルファイルを作成するモデル作成システムを提供することで、複雑な検証手段で発生していた問題を解決することができ、モデルと自動生成コードとの等価性の検証における生産性をあげることができる。
【0083】
なお、第1モデルファイルにおける関数化ブロックに入力パラメータおよび出力パラメータの両方が存在する場合に、第1モデルファイルから自動生成コードが生成される場合、入力パラメータおよび出力パラメータの一方のみ(例えば入力パラメータのみ)存在するモデルファイルから自動生成コードが生成される場合よりも自動生成コードの生成パターンがさらに多くなり、入出力信号と自動生成コードの入出力変数とを一対一に対応させることがより難しくなる。これに対して、本開示では、入力パラメータおよび出力パラメータの両方が存在する場合であっても、入力パラメータについてはグループ化ブロックが作成され、出力パラメータについては逆グループ化ブロックが作成されるため、第2モデルファイルにおける各入出力信号は、自動生成コードでは一意の変数になり、第1モデルファイルの入出力信号と自動生成コードの入出力変数とを一対一に対応させることができる。
【0084】
(技術2)前記グループ化されている入力パラメータおよび前記グループ化されている出力パラメータのそれぞれは、ベクトル信号であり、前記要素は、1つの変数である、技術1に記載のモデル作成システム。
【0085】
これによれば、分解部においてベクトル信号(配列)におけるベクトルの要素のそれぞれを変数に分解することができる。
【0086】
(技術3)前記グループ化されている入力パラメータおよび前記グループ化されている出力パラメータのそれぞれは、バス信号であり、前記要素は、1つの変数である、技術1に記載のモデル作成システム。
【0087】
これによれば、分解部においてバス信号(構造体)における任意の階層のメンバのそれぞれを変数に分解することができる。
【0088】
(技術4)前記作成部は、第1信号線と、第2信号線とを作成することで、前記結線を行い、前記第1信号線は、前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力されるように、前記グループ化ブロックと前記関数化ブロックとを接続し、前記第2信号線は、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、前記関数化ブロックと前記逆グループ化ブロックとを接続する、技術1~3のいずれかに記載のモデル作成システム。
【0089】
これによれば、ブロック間を信号線で直接接続することで、ブロック間のデータの受け渡しをすることができる。
【0090】
(技術5)前記作成部は、第1タグと、第3信号線と、第2タグと、第4信号線と、第3タグと、第5信号線と、第4タグと、第6信号線とを作成することで、前記結線を行い、前記第3信号線は、前記グループ化されている入力パラメータが前記グループ化ブロックから前記第1タグに入力されるように、前記第1タグと前記グループ化ブロックとを接続し、前記第4信号線は、前記グループ化されている入力パラメータが前記第2タグから前記関数化ブロックに入力されるように、前記第2タグと前記関数化ブロックとを接続し、前記第5信号線は、前記グループ化されている出力パラメータが前記関数化ブロックから前記第3タグに入力されるように、前記第3タグと前記関数化ブロックとを接続し、前記第6信号線は、前記グループ化されている出力パラメータが前記第4タグから前記逆グループ化ブロックに入力されるように前記第4タグと前記逆グループ化ブロックとを接続し、前記第1タグと前記第2タグとは、仮想的な信号線で接続されており、前記第3タグと前記第4タグとは、仮想的な信号線で接続されている、技術1~3のいずれかに記載のモデル作成システム。
【0091】
これによれば、仮想的な信号線で接続されたタグを介して、ブロック間のデータの受け渡しをすることができる。
【0092】
(技術6)前記作成部は、第1格納ブロックと、第7信号線と、第1参照ブロックと、第8信号線と、第2格納ブロックと、第9信号線と、第2参照ブロックと、第10信号線とを作成することで、前記結線を行い、前記第7信号線は、前記グループ化されている入力パラメータが前記グループ化ブロックから前記第1格納ブロックに入力されるように、前記第1格納ブロックと前記グループ化ブロックとを接続し、前記第8信号線は、前記グループ化されている入力パラメータが前記第1参照ブロックから前記関数化ブロックに入力されるように、前記第1参照ブロックと前記関数化ブロックとを接続し、前記第9信号線は、前記グループ化されている出力パラメータが前記関数化ブロックから前記第2格納ブロックに入力されるように、前記第2格納ブロックと前記関数化ブロックとを接続し、前記第10信号線は、前記グループ化されている出力パラメータが前記第2参照ブロックから前記逆グループ化ブロックに入力されるように、前記第2参照ブロックと前記逆グループ化ブロックと接続し、前記第1格納ブロックおよび前記第2格納ブロックは、それぞれ、メモリ領域にデータを一時的に格納するブロックであり、前記第1参照ブロックは、前記第1格納ブロックによってメモリ領域に一時的に格納されたデータを参照するブロックであり、前記第2参照ブロックは、前記第2格納ブロックによってメモリ領域に一時的に格納されたデータを参照するブロックである、技術1~3のいずれかに記載のモデル作成システム。
【0093】
これによれば、メモリへのデータの格納およびメモリに格納されたデータの参照を利用することで、ブロック間のデータの受け渡しをすることができる。
【0094】
(技術7)データフローを示す第1モデルファイルから第2モデルファイルを作成するモデル作成システムによって実行されるモデル作成方法であって、前記第1モデルファイルに含まれる1以上のブロックのうちから、関数化されるブロックである関数化ブロックを決定し、前記関数化ブロックの入力パラメータおよび出力パラメータがそれぞれパラメータの要素でグループ化されているか否かを判定し、グループ化されている入力パラメータおよびグループ化されている出力パラメータをそれぞれ複数の前記要素に分解し、前記グループ化されている入力パラメータから分解された複数の前記要素が入力され、前記グループ化されている入力パラメータを出力するグループ化ブロックを作成し、前記グループ化されている出力パラメータが入力され、前記グループ化されている出力パラメータから分解された複数の前記要素を出力する逆グループ化ブロックを作成し、前記グループ化されている入力パラメータが前記グループ化ブロックから前記関数化ブロックに入力され、前記グループ化されている出力パラメータが前記関数化ブロックから前記逆グループ化ブロックに入力されるように、結線を行い、前記結線が行われた、前記グループ化ブロック、前記関数化ブロックおよび前記逆グループ化ブロックを示す情報を、前記第2モデルファイルとして出力する、モデル作成方法。
【0095】
これによれば、モデルと自動生成コードとの等価性の検証における生産性をあげることができるモデル作成方法を提供することができる。
【産業上の利用可能性】
【0096】
本開示は、モデルベース開発におけるモデルの動作挙動と、モデルから自動生成されたコードとの等価性の検証を行うためのシステムなどに適用できる。
【符号の説明】
【0097】
100 モデル作成システム
101 決定部
102 分解部
103 作成部
200 入力モデルファイル
201 関数化ブロック
300 作成対象モデルファイル
301、302 グループ化ブロック
303、304、305 逆グループ化ブロック
311、312、313、314、315、331、332、333、334、351、352、353、354 信号線
321、322、323、324 タグ
341、343 格納ブロック
342、344 参照ブロック
400 自動コード生成器
図1
図2
図3
図4
図5
図6A
図6B
図7
図8
図9
図10
図11