(57)【特許請求の範囲】
【請求項１】
システムの仕様の構造を記録する仕様構造記録手段と、
前記仕様の内容を保持しつつ前記構造のうち割込みの構造を局所化する割込み構造局所化手段と、を具備し、前記割込み構造局所化手段は、前記構造に基づいて割込み可能な箇所を特定する割込み可能箇所特定手段と、
前記特定された割込み可能箇所を境に前記仕様を構造的に分割する仕様分割手段とを具備することを特徴とする割込み構造局所化装置。
【請求項２】
前記割込み構造局所化手段は、
下層構造が逐次構造のみからなる仕様の割込み構造を局所化する逐次割込み構造局所化手段と、
下層構造が並列構造を含む仕様の割込み構造を局所化する並列割込み構造局所化手段と、を具備することを特徴とする請求項１に記載の割込み構造局所化装置。
【請求項３】
前記並列割込み構造局所化手段は、並列に実行され、かつそれぞれが割込み可能な複数の仕様を、一つの逐次実行の仕様に展開する並列割込み展開手段を具備することを特徴とする請求項２に記載の割込み構造局所化装置。
【請求項４】
前記展開された一つの逐次実行の仕様を、前記並列に実行され、かつそれぞれが割込み可能な複数の仕様に分離する並列割込み分離手段をさらに具備することを特徴とする請求項３に記載の割込み構造局所化装置。
【請求項５】
前記システム仕様は、
処理単位と、処理単位間の通信を行うための通信路とを要素として記述され、
処理実行制御方式として少なくとも逐次、並列、割込み、繰り返し実行を用いた制御構造の階層的な組み合わせによって全体の制御仕様が記述され、
処理単位同士を通信路で結合してデータの流れが記述されたものであることを特徴とする請求項１ないし４のいずれか１項に記載の割込み構造局所化装置。
【請求項６】
前記システム仕様は、並列実行される２つ以上の処理単位間でのイベントの授受および同期処理についての記述をも含むものであることを特徴とする請求項５に記載の割込み構造局所化装置。
【請求項７】
システムレベルの計算の仕様および通信の仕様からなる仕様モデルを作成するための仕様モデル記述手段と、
前記仕様モデル記述手段により作成された仕様記述モデルの部分構造を分割して所定のアーキテクチャの部分要素に分配し、アーキテクチャモデルを作成するためのアーキテクチャ探索手段と、
前記アーキテクチャ上の仕様要素間の通信手順を合成し、コミュニケーションモデルを作成するためのコミュニケーション合成手段と、
前記仕様モデル記述手段により作成された仕様モデル、前記アーキテクチャ探索手段により作成されたアーキテクチャモデル、前記コミュニケーション合成手段により作成されたコミュニケーションモデルを相互に関連付け、これをシステム仕様として記録するシステム仕様記録手段と、
前記システム仕様記録手段に記録されているシステム仕様からハードウエア仕様を生成するハードウエア仕様生成手段と、
前記システム仕様記録手段に記録されているシステム仕様からソフトウエア仕様を生成するソフトウエア仕様生成手段と、
前記システム仕様に含まれる仕様の内容を保持しつつ該仕様の構造のうち割込みの構造を局所化する割込み構造局所化手段と、
を具備することを特徴とするシステム設計支援装置。
【請求項８】
前記システム仕様記録手段に記録されているシステム仕様を部品化し、該システム仕様の部品を前記仕様モデル記述手段、アーキテクチャ探索手段、およびコミュニケーション合成手段における再利用に供する部品化再利用手段をさらに具備することを特徴とする請求項７に記載のシステム設計支援装置。
【請求項９】
前記システム仕様は、
処理単位と、処理単位間の通信を行うための通信路とを要素として記述され、
処理実行制御方式として少なくとも逐次、並列、割込み、繰り返し実行を用いた制御構造の階層的な組み合わせによって全体の制御仕様が記述され、
処理単位同士を通信路で結合してデータの流れが記述されたものであることを特徴とする請求項７または８に記載のシステム設計支援装置。
【請求項１０】
前記システム仕様は、並列実行される２つ以上の処理単位間でのイベントの授受および同期処理についての記述をも含むものであることを特徴とする請求項９に記載のシステム設計支援装置。
【請求項１１】
システムの仕様の構造を記録する記録ステップと、
前記仕様構造に基づいて割込み可能な箇所を特定する特定ステップと、
前記特定された割込み可能箇所を境に前記仕様を構造的に分割する分割ステップと、
仕様の内容を保持しつつ前記仕様構造のうち割込みの構造を局所化する局所化ステップと、をコンピュータに実行させるためのプログラム。
【請求項１２】
システムレベルの計算の仕様および通信の仕様からなる仕様モデルを作成する作成ステップと、
前記作成された仕様記述モデルの部分構造を分割して所定のアーキテクチャの部分要素に分配し、アーキテクチャモデルを作成するステップと、
前記アーキテクチャ上の仕様要素間の通信手順を合成し、コミュニケーションモデルを作成するステップと、
前記作成された仕様モデル、アーキテクチャモデル、コミュニケーションモデルを相互に関連付け、これをシステム仕様として記録する記録ステップと、
前記システム仕様からハードウエア仕様を生成するステップと、
前記システム仕様からソフトウエア仕様を生成するステップと、
前記仕様記述モデルの部分構造への分割前に実行される割込み構造局所化ステップであって、
前記仕様構造に基づいて割込み可能な箇所を特定する特定ステップと、
前記特定された割込み可能箇所を境に前記仕様を構造的に分割する分割ステップと、
仕様の内容を保持しつつ前記仕様構造のうち割込みの構造を局所化する局所化ステップと、により構成される割込み構造局所化ステップと、をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、計算機や電子機器等のハードウエア、ソフトウエア、及びその組み合わせを含むシステムの設計支援に関する。
【０００２】
【従来の技術】
近年、ハードウエアとソフトウエアとを区別しない、システムレベルでの仕様記述のための言語が開発され、これによりシステムレベルでの仕様から具体的なソフトウェアまたはハードウェアに分割された仕様へ、同一の仕様の書式に基づいて一貫して仕様記述を行う環境が整いつつある。このような仕様記述のための言語の登場に伴い、新たな設計方法論も幾つか提唱されている。
【０００３】
また、システム設計の上流段階において、システム仕様を確かめながらの設計環境を提供するラピッドプロトタイピングツール（ＲａｐｉｄやＢｅｔｔｅｒＳｔａｔｅ）が知られている。Ｒａｐｉｄの参考文献：“Rapid-plus, White Paper”,http://www.e-sim.com/pdf/whtpaper.pdf）。
【０００４】
これらラピッドプロトタイピングツールは、階層的な状態遷移図を利用してシステム分析と設計をシームレスに、かつ迅速に行えることを特徴としており、仕様の実装方法が明らかでないシステムレベルでの仕様設計の観点からすると割込み実行、逐次実行、並列実行を階層的に組み合わせることで効率的な設計が行えたり、他の上流のシステム分析工程における成果物を少ない労力で当該システムレベルの仕様記述に変換、流用できる利点がある。
【０００５】
しかしその反面、設計された仕様の実装に伴う詳細化に弱点がある。例えば、ソフトウエアであればＣ言語等のプログラミング言語による実装、ハードウエアであればＨＤＬ(Hardware Description Language)等のハードウエア記述言語による実装において、これら実装言語が直接的には包含しない並列や割込み等の概念を当該実装言語向けに翻訳する必要が生じ、必ずしも効率的ではないという欠点がある。この問題は、階層的な組合せによりシステム仕様がもとより複雑である場合に顕著になる。
【０００６】
【発明が解決しようとする課題】
本発明は、システムベルの仕様を元に、下流の設計段階において実装可能な詳細度の仕様を効率的に得ることを目的とする。具体的には、システム記述言語に沿って作成されたシステムレベルの仕様を詳細化する際に好適であって、構造的なシステムレベルの仕様に含まれる割込み構造を局所化する装置及び方法を提供することである。
【０００７】
【課題を解決するための手段】
システム記述言語に沿って作成された仕様において、割込みを定義する階層が、上位階層に位置し実際に割込みが掛かる箇所と構造的に掛け離れている（はるかに隔たる）ことが、割込みの効率的な実装を困難にする点に着目する。
【０００８】
本発明の割込み構造局所化装置及び方法は、システムレベルの仕様において実質的に割込みが掛かる箇所（ポイント）を特定し、割込みが掛かる箇所に階層構造に渡って局所化する（局部集中させる）ことにより、階層構造にまたがって割込みが掛からないような仕様構造を得る。
【０００９】
具体的には、本発明は次のように構成されている。
【００１０】
本発明の請求項１に係る割込み構造局所化装置は、システムの仕様の構造を記録する仕様構造記録手段と、前記仕様の内容を保持しつつ前記構造のうち割込みの構造を局所化する割込み構造局所化手段と、を具備することを特徴とする割込み構造局所化装置である。
【００１１】
システム仕様は、具体的には計算機で実行されるソフトウエアの仕様、半導体を組み合わせたハードウエアの仕様、ソフトウエアとハードウエアを組み合わせた組み込みシステムの仕様、およびワークフローなどビジネスプロセスの仕様等を含む。
【００１２】
本発明の請求項８に係るシステム設計支援装置は、システムレベルの計算の仕様および通信の仕様からなる仕様モデルを作成するための仕様モデル記述手段と、前記仕様モデル記述手段により作成された仕様記述モデルの部分構造を分割して所定のアーキテクチャの部分要素に分配し、アーキテクチャモデルを作成するためのアーキテクチャ探索手段と、前記アーキテクチャ上の仕様要素間の通信手順を合成し、コミュニケーションモデルを作成するためのコミュニケーション合成手段と、前記仕様モデル記述手段により作成された仕様モデル、前記アーキテクチャ探索手段により作成されたアーキテクチャモデル、前記コミュニケーション合成手段により作成されたコミュニケーションモデルを相互に関連付け、これをシステム仕様として記録するシステム仕様記録手段と、前記システム仕様記録手段に記録されているシステム仕様からハードウエア仕様を生成するハードウエア仕様生成手段と、前記システム仕様記録手段に記録されているシステム仕様からソフトウエア仕様を生成するソフトウエア仕様生成手段と、前記システム仕様に含まれる仕様の内容を保持しつつ該仕様の構造のうち割込みの構造を局所化する割込み構造局所化手段と、を具備するシステム設計支援装置である。
【００１３】
本発明の請求項１２に係る割込み構造局所方法は、システムの仕様の構造を記録する記録ステップと、前記仕様構造に基づいて割込み可能な箇所を特定する特定ステップと、前記特定された割込み可能箇所を境に前記仕様を構造的に分割する分割ステップと、仕様の内容を保持しつつ前記仕様構造のうち割込みの構造を局所化する局所化ステップと、を具備する割込み構造局所化方法である。
【００１４】
本発明の請求項１８に係るプログラムは、システムの仕様の構造を記録する記録ステップと、前記仕様構造に基づいて割込み可能な箇所を特定する特定ステップと、前記特定された割込み可能箇所を境に前記仕様を構造的に分割する分割ステップと、仕様の内容を保持しつつ前記仕様構造のうち割込みの構造を局所化する局所化ステップと、をコンピュータに実行させるためのプログラムである。
【００１５】
本発明の請求項１９に係るプログラムは、システムレベルの計算の仕様および通信の仕様からなる仕様モデルを作成する作成ステップと、前記作成された仕様記述モデルの部分構造を分割して所定のアーキテクチャの部分要素に分配し、アーキテクチャモデルを作成するステップと、前記アーキテクチャ上の仕様要素間の通信手順を合成し、コミュニケーションモデルを作成するステップと、前記作成された仕様モデル、アーキテクチャモデル、コミュニケーションモデルを相互に関連付け、これをシステム仕様として記録する記録ステップと、前記システム仕様からハードウエア仕様を生成するステップと、前記システム仕様からソフトウエア仕様を生成するステップと、前記仕様記述モデルの部分構造への分割前に実行される割込み構造局所化ステップであって、前記仕様構造に基づいて割込み可能な箇所を特定する特定ステップと、前記特定された割込み可能箇所を境に前記仕様を構造的に分割する分割ステップと、仕様の内容を保持しつつ前記仕様構造のうち割込みの構造を局所化する局所化ステップと、により構成される割込み構造局所化ステップと、をコンピュータに実行させるためのプログラムである。
【００１６】
【発明の実施の形態】
以下、図面を参照しながら本発明の実施形態を説明する。
【００１７】
図１は、本発明の一実施形態に係る割込み構造局所化装置が適用されたシステム設計支援装置の全体構成を示すブロック図である。
【００１８】
図１に示すシステム設計支援装置１は、仕様モデル記述部２、システム仕様記録部３、アーキテクチャ探索部４、コミュニケーション合成部６、ハードウェア仕様生成部８、部品再利用部１０、およびソフトウェア仕様生成部１２から構成されている。
【００１９】
本実施形態のシステム設計支援装置１は、計算機で実行されるソフトウエアの仕様、半導体素子等を組み合わせたハードウエアの仕様、ソフトウエアとハードウエアとを組み合わせた組み込みシステムの仕様、ワークフロー等のビジネスプロセスの仕様などについての、システムレベルでの仕様を扱う。
【００２０】
このようなシステムレベルでの仕様における計算の仕様および通信の仕様からなる仕様モデルを設計するための仕様モデル記述部２は、設計者による仕様記述を支援する部分である。予め定められた仕様記述形式に従って、計算内容の仕様、通信内容の仕様を設計者が記述した結果、仕様記述モデルが生成される。この仕様記述モデルは、後述する仕様構造を含んでいる。仕様記述形式の例としては、構造化プログラミング言語に代表される構造化テキスト形式、グラフを利用する構造図形式、テーブルを利用する表形式などがある。
【００２１】
アーキテクチャ探索部４は、与えられた仕様記述モデルを元に、アーキテクチャ（ハードウェアとソフトウエア実行環境の構成）に対し、仕様の内容を保存したまま仕様記述モデルの部分構造を分割してアーキテクチャ要素に分配する。具体的な実施形態では、仕様モデル記述部２で設計された計算内容の仕様や通信内容の仕様を構成する部品（仕様記述モデルの構成要素）をアーキテクチャ要素に割り当てる（アーキテクチャモデル作成）。
【００２２】
コミュニケーション合成部６は、アーキテクチャ上の仕様要素間の通信手順を合成する。具体的には、アーキテクチャ探索部４で分配された通信仕様要素間に対して通信手順（プロトコル）を挿入し、通信内容の仕様が挿入された通信手順と整合性を保つためのプロトコル変換（通信手順の組替え）を行う（コミュニケーションモデル作成）。
【００２３】
システム仕様記録部３は、仕様モデル記述部２により作成された仕様モデル、アーキテクチャ探索部４により作成されたアーキテクチャモデル、コミュニケーション合成部６により作成されたコミュニケーションモデルを相互に関連付け、これをシステム仕様として記録する。
【００２４】
ハードウエア仕様生成部８は、システム仕様記録部３に記録されているシステム仕様からハードウエア仕様を生成する。一方、ソフトウエア仕様生成部１２は、システム仕様記録部３に記録されているシステム仕様からソフトウエア仕様を生成する。
【００２５】
部品化再利用部１０は、システム仕様記録部３に記録されているシステム仕様を部品化し、これを仕様モデル記述部２、アーキテクチャ探索部４、およびコミュニケーション合成部６のそれぞれの設計における再利用に供する。
【００２６】
本実施形態の割込み構造局所化装置は、アーキテクチャ探索部４における仕様分割を容易化するように、あらかじめ割込みの構造を局所化しておく装置として、システム設計支援装置１に組み込まれている。
【００２７】
図２は、割込み構造局所化装置の概略構成を示すブロック図である。同図に示すように割込み構造局所化装置２０は、割込み可能箇所の特定部２２、仕様分割部２４、および割込み構造局所化部２６により構成されている。割込み構造局所化部２６は、逐次割込み構造局所化部２８と、並列割込み構造局所化部３０とにより構成されている。また、並列割込み構造局所化部３０は、並列割込み展開部３２と、並列割込み分離部３３とを有する。
【００２８】
本実施形態のシステム設計支援装置１は、少なくとも、「逐次実行」、「繰り返し」、「割込み終了」、「割込み一次停止」、「並列実行」の仕様を記述するための記述要素を具備しており、これらの記述要素を階層的に組み合わせることによってシステム全体の仕様を記述することができる。
【００２９】
システム仕様記述方式には、図形的に仕様を記述するステートチャート（ＳｔａｔｅＣｈａｒｔ）や、構造的な言語として文字により仕様を表現するＳｐｅｃＣ(Specification description language based on C)言語等がある。ＳｐｅｃＣについては、例えば"SpecC: Specification Language and Methodology", Daniel D.Gajski, Kluwer Academic Publishers, Dordrecht, ISBN0-7923-7822-9に詳しい。
以下、本実施形態ではシステム仕様記述方式として、ＳｐｅｃＣ言語の記述形式に沿った説明を行うが、本発明はＳｐｅｃＣ言語に限定されない。
【００３０】
＜仕様の構造＞
当該実施形態において、仕様は、複数の「ビヘイビア」と呼ぶ基本単位で構成されるものとする。ビヘイビアは、階層構造を持つことができる。すなわち、ひとつのビヘイビアは、複数の他のビヘイビアを下階層として持つことができる。ビヘイビアは、ソフトウエアの仕様の場合は、関数やクラスに相当し、ハードウエアの場合は、ＬＳＩブロックに相当し、ビジネスプロセスの場合は、ジョブやタスクに相当する。
【００３１】
「仕様の構造」とは、ビヘイビアで構成される仕様の構造を規定し、ビヘイビアの実行の順番に関する階層構造と、ビヘイビア間でのデータの通信路に関する階層構造とによって構成される。実行の順番に関する構造と通信路に関する構造は、階層としては同じ構造を持つ。すなわち、ビヘイビアＡが実行の順番に関してビヘイビアＢの上位階層にあるならば、ビヘイビアＡは通信路に関してもビヘイビアＢの上位階層である。
【００３２】
仕様の構造により、アーキテクチャに対する仕様分割の方法も定義できる。例えば、組み込みシステムならば、ハードウエアとソフトウエアのそれぞれに対応する部分に、仕様がどのように分割されるかを、仕様として構造化して記述する。
【００３３】
＜仕様の書式＞
仕様の構造のうち、実行の順番に関係する構造は、少なくとも「逐次実行および繰返し実行」（ｆｓｍ）、「並列実行」（ｐａｒ）、「同期実行」（ｆｏｒｋ，ｊｏｉｎ，ｓｔａｒｔ，ｅｎｄ）、「割込み実行」（ｔｒｙ，ｔｒａｐ，ｉｔｒｐ）という４分類の文法的要素を用いた階層構造として表現される。ｆｓｍは有限状態機械（finite state machine）の略である。
【００３４】
例えば、
ｆｓｍ｛ａ，ｂ｝は、
“ａを実行し終了の後にｂを実行する”
という仕様を表現し、
ｐａｒ｛ａ，ｂ｝は、
“ａとｂを並列に実行する”
という仕様を表現し、
階層的な仕様である、ｆｓｍ｛ａ，ｐａｒ｛ｂ，ｃ｝，ｄ｝は、
“ａを実行した後にｂ，ｃを並列に実行し、
そしてｂ，ｃが両方終了したらｄを実行する”
という仕様を表現している。
【００３５】
また、「割込み実行」に関する仕様である、ｔｒｙ｛ａ｝ｔｒａｐ（ｅ）｛ｂ｝は、
“最初にａを実行する。ａの実行中にイベントｅが発生したら、
ａの実行を強制終了し、ｂの実行を開始する”
という仕様を示す。
【００３６】
「逐次実行および繰り返し実行」、「並列実行」、「同期実行」、「割込み実行」は、ソフトウエア、ハードウエア、そしてビジネスプロセスの仕様を記述するために用いられる実行制御方法規定のための手段として必要最小限の要素であり、これらを階層的に組み合わせることにより、いわゆるシステムの仕様を記述する。
【００３７】
一方、通信路に関する構造は、ビヘイビア間のデータのやりとりを規定する。ここでは、変数およびチャネルと呼ばれる部品により、通信路が実現されるものとする。変数やチャネルは仕様の階層関係の上位階層のビヘイビアの直属の部品として定義され、これと下位階層のビヘイビアとがポートと呼ばれる接続口を介して接続することにより、下位階層同士のビヘイビアが通信路を介して互いに通信することを可能にしている。
【００３８】
通信路は、ソフトウエアの場合は変数や通信用の関数に相当し、ハードウエアの場合はＬＳＩを結ぶ結線に相当する。ポートは、通信のための入出力口であり、ソフトウエアの場合は引数に相当し、ハードウエアの場合は部品同士を結線で結ぶための端子に相当する。チャンネルは、データを送受信するために特別に用意されたコマンドを受け付ける部品である。例えば、“ｐｕｔ（データ）”，“ｇｅｔ（）”といったコマンドが考えられる。変数は、書き込み“ｗｒｉｔｅ（データ）”コマンドと読み込み“ｒｅａｄ（）”コマンドとを備えたチャンネルの一種であるとみなすことができる。
【００３９】
ＳｐｅｃＣ言語の、簡便な文法要素および規則を説明する。
・システム記述：＝“ビヘイビア記述”の集合
・ビヘイビア記述：＝｛通信要素，…，処理内容｝
ここで、通信要素：＝変数，チャネル
処理内容：＝ビヘイビア（ポート，…），実行手順記述
実行手順記述：＝fsm｛…｝，par｛…｝，
try｛…｝trap（ｅ）｛…｝itrp（ｅ）｛…｝
ビヘイビア記述例｛ｉ，ｊ，ｋ，ｆｓｍ｛Ａ（ｉ），Ｂ（ｉ，ｊ），Ｃ（ｋ）｝において、ｉ，ｊ，ｋはローカル変数であり、Ａ，Ｂ，Ｃは下位階層のビヘイビアで、それぞれポートを持ち、ポートがローカル変数と接続していることを示している。
・ｐａｒ｛Ａ，Ｂ，Ｃ｝
この処理内容例は、Ａ，Ｂ，Ｃを並列実行するものである。
・ｆｓｍ｛｛１，Ａ，goto（２）｝，
｛２，Ｂ，flg==３：goto（１），flg==１：goto（２）｝，  ｝
ここで、ｆｓｍの各要素は、
｛ラベル，処理内容，｛条件：条件成立時の遷移｝，…｝、あるいは、
｛ラベル，処理内容，処理終了時の遷移，…｝、あるいは、
｛ラベル，処理内容｝、あるいは、
処理内容
のいずれかで構成され、特に指定が無い場合は、左から順に逐次実行される。すなわち、遷移ラベルの項目が無い場合、｛ラベル，処理内容｝は、処理内容が終了すると、次のｆｓｍ要素を実行することになる。また、ラベルが１のｆｓｍ要素又は最左のｆｓｍ要素が最初に実行されるものとする。遷移は、「ｇｏｔｏ（Ｘ）：Ｘはラベル番号」にて表す。例えば、ｇｏｔｏ（１）は、最初のｆｓｍ要素に戻ることを表している。
上記の処理内容例では、Ａが実行され、終了すれば、Ｂが実行され、Ｂが終了したとき、変数ｆｌｇの値が３ならばＡを、１ならばＢを実行することを表している。
【００４０】
次に例示するように、ラベルの無い要素は、ラベルを用いた或る実行制御の簡略形であるといえる。
fsm｛A,B,C｝＝fsm｛｛1,A,goto(2)｝,｛2,B,goto(3)｝,｛3,C,…｝,…｝
・ｔｒｙ｛Ａ｝ｔｒａｐ（ｅｖ１）｛Ｂ｝ｉｔｒｐ（ｅｖ２）｛Ｃ｝…
この処理内容例では、まず、Ａを実行する。そして、Ａの実行中にイベントｅｖ１が発生すれば、Ａを強制終了して、Ｂを実行する。また、Ａの実行中にイベントｅｖ２が発生すれば、Ａを一時停止して、Ｃを実行し、Ｃが終了したとき、Ａの処理を再開する。
なお、ｔｒａｐ（ｅ）｛Ｘ｝，ｉｔｒｐ（ｅ２）｛Ｙ｝は、複数あってもよい。
・ｗａｉｔ（ｅｖ）
これは、イベントｅｖの発生を待つ同期処理である。
・ｎｏｔｉｆｙ（ｅｖ）
これは、イベントｅｖを発生させる同期処理である。
・ｆｌｇ＝Ｘ
これは、変数ｆｌｇへの値の代入である。
・ｆｌｇ＝＝Ｘ
これは、条件判断である。
・ｓｔａｒｔ（ＩＤ）；
ｆｏｒｋ（ＩＤ）；
これは、同期処理Ｉであり、ｓｔａｒｔとｆｏｒｋは同期して実行される。
・ｅｎｄ（ＩＤ）；
ｊｏｉｎ（ＩＤ）；
これは、同期処理ＩＩであり、ｅｎｄとｊｏｉｎは同期して実行される。
【００４１】
上記に列挙した書式に従った、階層構造を持つ仕様の例を以下に挙げる。
（例：ｅｘ０）
Ａ：＝｛ｉ，par｛Ｂ（ｉ），ｇ（ｉ）｝｝
Ｂ（ｉ）：＝｛ｊ，ｋ，fsm｛ａ（ｊ），ｂ（ｋ，ｉ），Ｃ（ｋ）｝＞｝
Ｃ（ｋ）：＝｛par｛ｄ，ｅ，ｆ（ｋ）｝｝
これは、以下の仕様を表現している。
「ビヘイビアＡはＢ，Ｃ，ｇ，ａ，ｂ，ｄ，ｅ，ｆという子ビヘイビアから構成され、ビヘイビアＡは下位階層Ｂ，ｇより構成され、Ｂとｇは並列実行であり、Ａの下位階層であるＢは下位要素ａ，ｂ，Ｃより構成され、逐次実行され、さらにＢの下位階層であるＣは下位要素ｄ，ｅ，ｆより構成され、並列実効される。また、Ａは通信路ｉを持ち、ｉを介してＢのポートｉとｇのポートｉが接続しており、またＢは通信路ｊ，ｋを持ち下位要素ａのポートｊと通信路ｊが接続し、ｂのポートｋと通信路ｋが、ｂのポートｉとＢのポートｉが、Ｃのポートｋと通信路ｋがそれぞれ接続し、Ｃのポートｋとｆのポートｋが接続していることを示している。すなわち、階層を渡ってビヘイビアｆとｂ、ｇとｂがそれぞれ通信線により接続し互いにデータをやり取りする。」
以下では、説明のために実行の順番に着目して通信路と階層関係を簡略化する場合がある。例えば、上記の仕様例（ｅｘ０）を実行の順番に着目して簡略化すると以下のように記述できる。
Ａ：＝ｐａｒ｛ｆｓｍ｛ａ，ｂ，ｐａｒ｛ｄ，ｅ，ｆ｝｝，ｇ｝
また、説明のために通信路と接続関係に着目して、実行の順番を簡略化する場合がある。上記の仕様例（ｅｘ０）を通信路と接続関係に着目して簡略化すると以下のように記述できる。
Ａ：＝｛ｉ，bh｛Ｂ（ｉ），ｇ（ｉ）｝｝
Ｂ（ｋ）：＝｛ｉ，ｊ，bh｛ａ（ｉ），ｂ（ｉ，ｊ），Ｃ（ｊ）｝＞｝
Ｃ（ｊ）：＝｛bh｛ｄ，ｅ，ｆ（ｊ）｝｝
ｆｏｒｋ（ｘ）とｓｔａｒｔ（ｘ）、およびｅｎｄ（ｘ）とｊｏｉｎ（ｘ）は、それぞれ対となって、同期制約を表し、これらの２つが常に同期して実行されることを規定している（ここで、ｘはｉｄ番号であり同じｉｄ番号をもつペアが同期して実行されることとする）。
例えば、
0003923734.tif 000002
という仕様は、１から３および２から４の逐次実行（ｆｓｍ）を並列実行（ｐａｒ）することを階層的に示しているが、ｆｏｒｋ，ｊｏｉｎ，ｓｔａｒｔ，ｅｎｄの同期関係より１と３の間に２が実行されることがわかる。
通信路の構造に関しては、上記の仕様例（ｅｘ０）においては、ｆとｂがＢの通信路ｊを介して互いにデータをやり取りし、Ａの通信路ｉを介してａ，ｂ，ｇが互いにデータをやり取りできることを示している。
【００４２】
＜仕様の制約＞
本実施形態のシステム設計支援装置１は、仕様記述に関する制約をシステム仕様記録部３に記録しており、この仕様制約に基づき、仕様の内容が保持されることを判断することができるものとする。
【００４３】
＜割込みに関する仕様の記述＞
仕様モデル記述部２における割込みに関する仕様の記述において、割り込むタイミングがシステム実行時間の任意の時間単位で可能である割込みを、プリエンプティブ（ｐｒｅｅｍｐｔｉｖｅ）な割込みであるという。本実施形態におけるシステムレベルでの仕様記述において、割込みは、予め決められた仕様上の箇所でのみ許されるものとする。予め決められた仕様上の箇所とは、仕様記述方式特有のものであったり、設計者が任意の箇所に識別するための印（マーク）を付与したものである。プリエンプティブな割込みでは、この割込み可能な箇所が仕様全般にわたり稠密に存在することになる。多くの仕様記述言語では、割込み可能箇所を特定する仕組みを備えている。例えばＳｐｅｃＣ言語においては、ｗａｉｔ文やｗａｉｔｆｏｒ文の箇所でのみ割込みが許される。
【００４４】
したがって、例えば次のような仕様が与えられ、ビヘイビアＡ１，Ａ２およびＢがそれぞれｗａｉｔ／ｗａｉｔｆｏｒ要素を含まないとするとき、
0003923734.tif 000003
この仕様は、「まずＡ１が実行され、このＡ１の実行中には割込みが入らない。Ａ１が終了したときｗａｉｔ（ｅ１）が実行される。ｗａｉｔ（ｅ１）実行中はｔｒａｐ（ｅ２）による割込みが可能であるから、このｗａｉｔ中にイベントｅ２が発生すればｗａｉｔは割込みにより強制終了してＢが実行される。また、ｗａｉｔ中にｅ１が発生すればこのｗａｉｔは終了し、次にＡ２が実行される。Ａ２の実行中には割込みが入らない。」ことを示している。
【００４５】
＜割込み箇所の特定＞
割込み可能箇所の特定部２２は、システム仕様記録部３に記録されているシステム仕様に対し、仕様の内部構造（ＳｐｅｃＣであればｍａｉｎ関数内のＣ言語で記述された仕様）を探索し、割込み可能箇所（ＳｐｅｃＣであれば、ｗａｉｔ／ｗａｉｔｆｏｒ）を含む箇所を特定する。これは、構文解析器（パーサ）と呼ばれる計算機科学の技術を利用することにより実現される。または、割込み可能箇所特定部を用いて設計者が仕様中に印（ＳｐｅｃＣならｗａｉｔ／ｗａｉｔｆｏｒ）を挿入することにより割込み可能箇所を特定することもできる。これは、仕様編集の機能、例えばエディタ技術等を利用することにより実現される。
【００４６】
＜割込み箇所で仕様を分割＞
仕様分割部２４は、割込み可能箇所が特定された仕様に対して、該割込み可能箇所において仕様を分割する。例えば、ビヘイビアＡ内に割込み可能箇所を検出すると、該割込み可能箇所を境にこのビヘイビアＡを複数のビヘイビアに分割する。分割されたビヘイビアは、割込み可能箇所を全く含まないビヘイビアか、あるいは割込み可能な最小限の構造すなわちＳｐｅｃＣ言語の場合ならばｗａｉｔ／ｗａｉｔｆｏｒ要素のみで構成されるビヘイビアに分類される。このような仕様の分割は、割込み可能性のあるビヘイビア、すなわちｗａｉｔ文を内部に含むビヘイビアを対象にして行われる。
【００４７】
例えば、ビヘイビアＡが逐次実行であって、途中にｗａｉｔ（ｅ１）を含むものであるとする。
【００４８】
ｆｓｍ｛Ａ，Ｂ｝
Ａ＝＝［ｆ１；ｗａｉｔ（ｅ１）；ｆ２；］
（注）Ａ＝＝［ｘｘｘ；ｙｙｙ；ｚｚｚ；］とはビヘイビアの内部構造を表現する方法であり、ｍａｉｎ関数内部の逐次実行処理の並びを「；」で分けたものである。
ここで、ｆ１，ｆ２は割込みが掛からないとすると、ビヘイビアＡは仕様分割部によって３つのビヘイビアＡ１，Ａ２，Ａ３に分割される。
Ａ（分割）−＞ｆｓｍ｛Ａ１，Ａ２，Ａ３｝
A1==[f1;],A2==[wait(e1);],A3==[f2;]
このようにビヘイビアＡは、Ａ１，Ａ２，Ａ３を下階層とするｆｓｍ構造になる。
【００４９】
また、ビヘイビアＡの内部構造が繰り返し構造を含んでおり、該繰り返し構造中にｗａｉｔ文が含まれる場合には、
0003923734.tif 000004
このようにビヘイビアＡを分割して新たなｆｓｍ構造を得る。なお、条件分岐（if then else）についても上記と同様の処理により仕様の分割を行う。
【００５０】
＜割込みの局所化＞
階層構造に対する割込み（ｔｒｙ／ｔｒａｐ／ｉｎｔｔｅｒｒｕｐｔ）において、割込み作用が有効な範囲は、この割込みが定義された階層よりも下層の階層構造である。例えば以下の割込み構造、
ｔｒｙ｛Ａ
｝ｔｒａｐ（ｅ）｛Ｂ｝
において、イベントｅによる割込みが作用として有効な範囲は、ｔｒｙの下層であるビヘイビアＡ以下の階層に含まれるビヘイビアのみである。
【００５１】
この点に着目して割込み構造局所化部２６は、割込み定義階層の下層の内部構造を参照し、割込み定義箇所を実質的に割込みがかかる箇所まで階層構造を渡って局所化する（局部集中させる）。具体的には、実際に割込みが掛かる箇所を、割込みが有効な範囲を限定した別の構造に変換する。また、割込み構造局所化部２６は、逐次割込み構造局所化部２８と並列割込み構造局所化部３０とに構成されており、これらが、割込みが掛かる下階層の構造に応じて異なる処理を担う。
【００５２】
＜逐次割込み局所化部＞
逐次割込み構造局所化部２８は、下層構造が逐次構造（ｆｓｍ）である場合に割込み構造を局所化する。局所化においては、以下に説明する幾つかのルールを適用して行うものとする。尚、ここでのルールは便宜的なものであり実施の形態に応じて適宜変更され得る。
【００５３】
ビヘイビアＡ１，Ａ２を割込みの掛からないビヘイビアとし、ビヘイビアＡ３を割込み可能なビヘイビアとするとき、
例えば次の仕様、
ｔｒｙ｛ｆｓｍ｛Ａ１，Ａ２｝｝ｔｒａｐ（ｅ）｛Ｂ｝
に対し、逐次割込み構造局所化部２８は、
（ルール：割込みがが掛からないビヘイビアは割込み構造から外す。）
に従い割込みを局所化して次の仕様を得る。
【００５４】
ｆｓｍ｛Ａ１，Ａ２｝
この例では、上記割込み構造（ｔｒｙ）の下層が割込みの掛からないビヘイビアＡ１，Ａ２のｆｓｍのみから構成されているので、局所化の結果、割込み構造自体が無くなってしまっている。これは、システム仕様上は等価な内容である。
【００５５】
また、次のような仕様、
ｔｒｙ｛ｆｓｍ｛Ａ１，Ａ３，Ａ２｝｝ｔｒａｐ（ｅ）｛Ｂ｝
に対し、逐次割込み構造局所化部２８は、
まず「割込みがが掛からないビヘイビアは割込み構造から外す」という上記したルールに従い局所化を行って、
ｆｓｍ｛Ａ１，ｔｒｙ｛ｆｓｍ｛Ａ３，Ａ２｝｝ｔｒａｐ（ｅ）｛Ｂ｝｝
を得る。さらに、以下の部分、
ｔｒｙ｛ｆｓｍ｛Ａ３，Ａ２｝｝ｔｒａｐ（ｅ）｛Ｂ｝
に対して局所化を行う。ここでは以下のルール、
（ルール：割込みがが掛かった後の動作が保存されなければならない。）
（ルール：動作を保存するために必要な分岐情報の記録・参照を仕様に挿入する。）
に従って局所化を行う。
【００５６】
上述したように、ビヘイビアＡ３は割込み可能である。このビヘイビアＡ３に対する割込み発生の如何によりＡ２の実行の有無は決定される。すなわち、ビヘイビアＡ３の実行中に、
（１）割込みｅが発生すれば、ビヘイビアＡ３を中止しビヘイビアＢを実行する。ビヘイビアＡ２は実行されない。
【００５７】
（２）割込みｅが発生せず、ビヘイビアＡ３が終了すればビヘイビアＡ２を実行する。ビヘイビアＢは実行されない。
という動作仕様である。この仕様の内容が保存されるように、逐次割込み構造局所化部２８は、割込み構造を以下のように局所化する。
ｆｓｍ｛Ａ１，{A3',flg==1:EXIT,flg!=1:Ａ２}｝
A3'=try{fsm{A3,flg=0}}trap(e){flg=1}
すなわち、ビヘイビアＡ３の実行中に割込みが発生すればｆｌｇ（フラグ）を１に、割込みが発生せずビヘイビアＡ３が終了したらｆｌｇを０に設定することで割込み状況を分別している。割込み状況に応じてビヘイビアＡ２を実行するか、それとも終了するかをｆｓｍの仕様に従い分岐条件に応じて判別している。
【００５８】
以上説明した逐次割込み構造の局所化を、図３に示す別の例によって説明する。図３において、ｔｒｙ｛｝で示される構造から、割込み可能箇所特定部２２によりｗａｉｔ（ｅ１）が割込み可能箇所として特定される。次に、図３下部に示すように仕様分割が行われる（仕様分割部２４）。そして、図３右部に示すように局所化が行われる（逐次割込み構造局所化部２８）。
【００５９】
分割後の逐次割込み構造の局所化は、図４に示すように、ビヘイビアＡ１を実行した後、イベントｅ１とｅ２とを並列待ちし、先に成立したイベントに応じた遷移を実現する、というものである。逐次割込み構造局所化部２８は、このような仕様構造を自動的に作成する。
【００６０】
図５は、ＥＴＧ（Extended Task Graph）表記を説明するための図である。これまで説明したＳｐｅｃＣ言語の仕様表記を、図５に示す要素を追記することでＥＴＧ表記により表すこともできる。
【００６１】
図６は、ＳｐｅｃＣ言語による逐次割込み構造の局所化を、ＥＴＧ表記により示したものである。上位階層であるｔｒａｐ（ｅ２）が、割込み可能箇所（ｅ２）に関して局所化されている点は、ＳｐｅｃＣ言語でもＥＴＧでも同様であることがわかる。
【００６２】
＜並列割込み構造局所化部＞
次に、並列割込み構造の局所化を説明する。
並列割込み構造局所化部３０は、下層構造が並列（ｐａｒ）構造である場合の割込み構造の局所化を行う。局所化においては、以下に説明するルールを適用して行う。
【００６３】
（ルール：並列構造それぞれに割込みを掛ける。）
（ルール：割込み箇所における終了状況（割込み有り終了、割込み無し終了）に応じて全体の終了を定める。）
例えば次のようにｐａｒを含む仕様（図７にも示す）、
0003923734.tif 000005
においては、ポイントｗａｉｔ（ａ１），ｗａｉｔ（ａ２），ｗａｉｔ（ｂ）においてイベントｅによる割込みが起こる可能性がある。
【００６４】
上記ルールに従い、並列割込み構造局所化部３０は、まず、割込み構造を並列構造（ｐａｒ）の内部構造（ｆｓｍ構造）に入れ込むような局所化を行う（並列割込の展開）。
【００６５】
上記仕様において、次に示すようにｔｒｙの構造、
0003923734.tif 000006
に着目し、以下のような展開を行う（並列割込み展開部３２）。
【００６６】
0003923734.tif 000007
ここで、並列割込み構造局所化部３０は、ビヘイビアＡ，Ｂの割込み終了状況を次のように定める。
0003923734.tif 000008
上記並列割込み構造の局所化結果を、図８に示す。同図から分かるように、ｐａｒ中の割込可能箇所（ポイント）に関して局所化が行われ、１つのＦＳＭとして展開されている。
【００６７】
＜並列割込み展開部＞
並列割込み展開部３２は、割込みを含む並列構造において、個々の並列要素に対する割込み可能箇所が明らかである場合に、これらの並列要素を組み合わせた全体としての割込み可能箇所を明らかにする。
【００６８】
例えば図９に示すように、下層構造として並列（ｐａｒ）を含む割込み（ｔｒｙ／ｔｒａｐ／ｉｎｔｒｐ）構造がある場合、並列割込み展開部３２は、図１０に示すような並列合成を行って、ラティス構造のようなＦＳＭを得る。さらに、並列構造（ｐａｒ）のそれぞれに割込みを掛けたものを図１１に示す。
【００６９】
＜並列割込み分離部＞
並列割込み分離部３３は、並列割込み展開部３２とはまったく逆の作用をする。すなわち、ひとつの割込み構造を有する構造を、２つの並列実行される構造に変換する。割込み構造局所化の逆作用を行わない場合、当該分離部３３は不要である。
【００７０】
以上説明した並列割込み構造の局所化は、逐次割込み構造局所化と同様、上述したＥＴＧにより表記することもできる。図７に示した並列割込み構造をＥＴＧ表記したものを図１２〜図１４に示す。
【００７１】
図１２に示す仕様構造に対し、割込み構造を並列構造のそれぞれに掛け合わせた結果が図１３である。この図１３のにおいて、並列構造を並列割込み展開部３２により並列合成し、一本化したものが図１４である。図１４において、ビヘイビアＡ１，Ｂ１のｐａｒは、スケジューリング（ｆｓｍ化）が可能な箇所である。
【００７２】
以上説明した並列割込み構造に、さらにループ構造が含まれている場合についても、上記から容易に類推して対処可能である。このようにループ構造が含まれている構造に対し局所化を行った結果を図１５に示す。
【００７３】
以上説明した本実施形態の割込み構造局所化装置によれば、実質的に割込みが掛かる箇所（ポイント）を割込み可能箇所特定部２２が特定し、仕様分割部２４がその特定箇所を境に仕様を分割し、その分割結果を割込構造局所化部２６が局所化する。その結果、階層構造にまたがって割込みが掛からないような仕様構造を得ることができる。これにより、システム記述言語に沿って作成された仕様において割込みを定義する階層が上位階層に位置し、実際に割込みが掛かる箇所と構造的に掛け離れ、割込みの効率的な実装を困難にすることを回避できるようになる。
【００７４】
したがって、システム記述言語に沿って作成されたシステムレベルの仕様を詳細化する際に好適であって、構造的なシステムレベルの仕様に含まれる割込み構造を局所化する装置及び方法を提供できる。
【００７５】
なお、以上の各機能は、ソフトウェアとして実現可能である。
また、本実施形態は、コンピュータに所定の手段を実行させるための（あるいはコンピュータを所定の手段として機能させるための、あるいはコンピュータに所定の機能を実現させるための）プログラムとして実施することもでき、該プログラムを記録したコンピュータ読取り可能な記録媒体として実施することもできる。
【００７６】
なお、この発明の実施の形態で例示した構成は一例であって、それ以外の構成を排除する趣旨のものではなく、例示した構成の一部を他のもので置き換えたり、例示した構成の一部を省いたり、例示した構成に別の機能あるいは要素を付加したり、それらを組み合わせたりすることなどによって得られる別の構成も可能である。また、例示した構成と論理的に等価な別の構成、例示した構成と論理的に等価な部分を含む別の構成、例示した構成の要部と論理的に等価な別の構成なども可能である。また、例示した構成と同一もしくは類似の目的を達成する別の構成、例示した構成と同一もしくは類似の効果を奏する別の構成なども可能である。
また、この発明の実施の形態で例示した各種構成部分についての各種バリエーションは、適宜組み合わせて実施することが可能である。
また、この発明の実施の形態は、個別装置としての発明、関連を持つ２以上の装置についての発明、システム全体としての発明、個別装置内部の構成部分についての発明、またはそれらに対応する方法の発明等、種々の観点、段階、概念またはカテゴリに係る発明を包含・内在するものである。
従って、この発明の実施の形態に開示した内容からは、例示した構成に限定されることなく発明を抽出することができるものである。
【００７７】
本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。
【００７８】
【発明の効果】
以上説明したように、本発明によれば、システム記述言語に沿って作成されたシステムレベルの仕様を詳細化する際に好適であって、構造的なシステムレベルの仕様に含まれる割込み構造を局所化する装置及び方法を提供できる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るシステム設計支援装置の概略構成を示すブロック図
【図２】上記システム設計支援装置に適用された割込み構造局所化装置の概略構成を示すブロック図
【図３】逐次割込み構造の局所化の一例を示す図
【図４】分割された仕様に対する割込みの局所化を説明するための図
【図５】ＥＴＧ表記を説明するための図
【図６】逐次割込み構造の局所化の一例をＥＴＧ表記により示す図
【図７】並列割込み構造の局所化の一例を示す図
【図８】並列割込み構造の局所化の結果を示す図
【図９】並列割込み構造における並列合成を説明するための図
【図１０】並列割込み構造における並列合成結果を示す図
【図１１】並列合成結果に対する割込みの展開結果を示す図
【図１２】並列割込み構造のＥＴＧ表記の一例を示す図
【図１３】ＥＴＧ表記の並列割込み構造に対する割込みの局所化結果を示す図
【図１４】ＥＴＧ表記の並列合成結果を示す図
【図１５】ループ構造を含んだ並列割込み構造の局所化結果を示す図
【符号の説明】
１…システム設計支援装置
２…仕様モデル記述部
３…システム仕様記録部
４…アーキテクチャ探索部
６…コミュニケーション合成部
８…ハードウェア仕様生成部
１０…部品化再利用部
１２…ソフトウェア仕様生成部
２０…割込み構造局所化装置
２２…割込み可能箇所の特定部
２４…仕様分割部
２６…割込み構造局所化部
２８…逐次割込み構造局所化部
３０…並列割込み構造局所化部
【図１】
0003923734.tif 000009
【図２】
0003923734.tif 000010
【図３】
0003923734.tif 000011
【図４】
0003923734.tif 000012
【図５】
0003923734.tif 000013
【図６】
0003923734.tif 000014
【図７】
0003923734.tif 000015
【図８】
0003923734.tif 000016
【図９】
0003923734.tif 000017
【図１０】
0003923734.tif 000018
【図１１】
0003923734.tif 000019
【図１２】
0003923734.tif 000020
【図１３】
0003923734.tif 000021
【図１４】
0003923734.tif 000022
【図１５】
0003923734.tif 000023