(57)【要約】【課題】  ライセンスに空きがない場合であっても待ち時間が発生することなくジョブを実行すること【解決手段】  ジョブ管理テーブル１１２は、回路シミュレータのライセンス使用状況を保持する。ライセンス管理部１０５は、ジョブ管理テーブル１１２を参照して、要求されたジョブに対応する第１の回路シミュレータのライセンスが使用可能かを判定する。キーワード解析部１０４は、第１の回路シミュレータのライセンスが使用不可能である場合に、第１の回路シミュレータとの互換性を示す互換性情報を参照して、ジョブの実行に使用する第２の回路シミュレータを決定する。設計情報変換部１１０は、予め定められた構文変換ルールに応じて第１の回路シミュレータの設計情報を第２の回路シミュレータの設計情報に変換する。【選択図】図３
2012137936.tif 000002
【特許請求の範囲】
【請求項１】
回路シミュレータのライセンス使用状況を保持する管理テーブルと、
前記管理テーブルを参照して、要求されたジョブに対応する第１の回路シミュレータのライセンスが使用可能かを判定するライセンス管理部と、
前記第１の回路シミュレータのライセンスが使用不可能である場合に、前記第１の回路シミュレータとの互換性を示す互換性情報を参照して、前記ジョブの実行に使用する第２の回路シミュレータを決定する解析部と、
予め定められた構文変換ルールに応じて前記第１の回路シミュレータの設計情報を前記第２の回路シミュレータの設計情報に変換する設計情報変換部と、を備えるジョブ実行管理装置。
【請求項２】
終了したジョブを実行した装置、前記回路シミュレータの種類、前記設計情報に含まれる素子数、実行に要した時間、を保持するログテーブルと、
前記ジョブを実行した装置からの実行結果の通知を基に前記ログテーブルを更新するログ解析部と、を備えることを特徴とする請求項１に記載のジョブ実行管理装置。
【請求項３】
前記第１または前記第２の回路シミュレータが実行する前記ジョブに含まれる素子数をカウントし、当該素子数と、前記ログテーブルと、を照合してジョブの実行終了時間を予測するジョブ実行予測部を備えることを特徴とする請求項１または請求項２に記載のジョブ実行管理装置。
【請求項４】
前記互換性情報は、前記第１の回路シミュレータの設計情報内にコメント形式にて記載されていることを特徴とする請求項１乃至請求項３のいずれか１項に記載のジョブ実行管理装置。
【請求項５】
前記互換性情報には、前記第１の回路シミュレータに代わり実行される回路シミュレータについての優先順位が含まれることを特徴とする請求項１乃至請求項４のいずれか１項に記載のジョブ実行管理装置。
【請求項６】
回路シミュレータの使用状況に応じて、要求されたジョブに対応する第１の回路シミュレータのライセンスが使用可能かを判定し、
前記第１の回路シミュレータのライセンスが使用不可能である場合に、前記第１の回路シミュレータとの互換性を示す互換性情報を参照して、前記ジョブの実行に使用する第２の回路シミュレータを決定し、
予め定められた構文変換ルールに応じて前記第１の回路シミュレータの設計情報を前記第２の回路シミュレータの設計情報に変換する、ジョブ実行管理方法。
【請求項７】
終了したジョブを実行した装置、前記回路シミュレータの種類、前記設計情報に含まれる素子数、実行に要した時間、を保持するログテーブルを、前記ジョブを実行した装置からの実行結果の通知を基に更新することを特徴とする請求項６に記載のジョブ実行管理方法。
【請求項８】
前記第１または前記第２の回路シミュレータが実行する前記ジョブに含まれる素子数をカウントし、当該素子数と、前記ログテーブルと、を照合してジョブの実行終了時間を予測することを特徴とする請求項６または請求項７に記載のジョブ実行管理方法。
【請求項９】
前記互換性情報は、前記第１の回路シミュレータの設計情報内にコメント形式にて記載されていることを特徴とする請求項６乃至請求項８のいずれか１項に記載のジョブ実行管理方法。
【請求項１０】
前記互換性情報には、前記第１の回路シミュレータに代わり実行される回路シミュレータについての優先順位が含まれることを特徴とする請求項６乃至請求項９のいずれか１項に記載のジョブ実行管理方法。
【請求項１１】
ソフトウェアの使用状況を保持する管理テーブルと、
前記管理テーブルを参照して、要求されたジョブに対応する第１のソフトウェアが使用可能を判定するライセンス管理部と、
前記第１のソフトウェアが使用不可能である場合に、前記第１のソフトウェアとの互換性を示す情報を参照して、前記ジョブの実行に使用する第２のソフトウェアを決定する解析部と、
予め定められた変換ルールに応じて、前記第１のソフトウェアの実行に用いる情報を前記第２のソフトウェアの実行に用いる情報に変換する設計情報変換部と、を備えるジョブ実行管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はジョブ実行管理装置、ジョブ実行管理方法に関する。
【背景技術】
【０００２】
ネットワークに接続された情報処理装置では、ライセンスソフトウェアを用いてジョブ実行を行うことがある。そのため、複数のライセンスソフトウェアを用いたジョブ実行の管理、実行監視、及び終了状態の報告を行うシステムが実用化されている。
【０００３】
ライセンスソフトウェアの一種である回路シミュレータは、複数のＥＤＡ（Electronic Design Automation）ベンダから発売されている。この回路シミュレータは、現在では高精度かつ高速にシミュレーション検証を行うことができる。この回路シミュレータを用いて回路検証を実施する半導体製品では、短期間に数多くの開発を進めなければならない。そのため、ライセンスソフトウェアによるジョブ実行の管理等を行うシステムを用い、回路シミュレータによるシミュレーションを高速かつ効率よく行う必要がある。
【０００４】
前述のように、回路シミュレータはライセンスソフトウェアであるため、その使用ライセンス数は所定契約数に限られる。すなわち、ライセンスソフトウェアの所定契約数を超過して回路シミュレータの実行を行うことは不可能である。
【０００５】
特許文献１には、ライセンスソフトウェア管理を自動化し、依頼された処理を確実に実行することができるライセンス管理システムに関する技術が開示されている。詳細には、複数のソフトウェアのジョブステップ毎にライセンスを取得して制御することが記載されている。
【０００６】
特許文献２には、ライセンスソフトウェアの実行処理等のジョブをシステム全体として効率的に割り当て可能にするジョブ実行管理装置に関する技術が開示されている。図１３は、特許文献２に記載のジョブ実行管理装置の構成を示すブロック図である。
【０００７】
ジョブ実行管理装置７０は、通信インターフェイス７１と、ＣＰＵリソース管理部７２と、ジョブ管理データベース７３と、ジョブ解析部７４と、ライセンス管理部７５と、待ち行列管理部７６と、ジョブ実行予測部７７と、ジョブ管理部７８と、を備える。
【０００８】
通信インターフェイス７１は、外部との通信を制御する。ＣＰＵリソース管理部７２は、ライセンスソフトウェアの実行処理などのジョブをシステム全体で効率的に割り当てるために、ネットワーク上のＣＰＵリソースの状態を管理する。ジョブ管理データベース７３は、ジョブ平均実行時間を含む過去のジョブ実行情報を保持する。ジョブ解析部７４は、ジョブ管理データベース７３に保持されたジョブ実行情報を参照してジョブの内容を解析する。ライセンス管理部７５は、入力されたジョブに対応するライセンスソフトウェアのライセンスが所定契約数を超過したか否かを判断する。待ち行列管理部７６は、ジョブ実行のためのＣＰＵリソースに空きがない場合に、当該ジョブを待ち行列に入れて管理する。
【０００９】
ジョブ実行予測部７７は、入力されたジョブのジョブ解析結果（例えばジョブ平均実行時間）、ＣＰＵリソースの状態、及び待ち行列の順序を基に、各ジョブの実行開始時刻、ジョブの実行時間、ジョブの実行終了時刻などを予測する。ジョブ管理部７８は、ジョブ平均実行時間を含めたジョブ解析結果及びＣＰＵリソースの状態を基に、ジョブを最短時間に実行できる最適なＣＰＵリソースに割り当てる。さらに、ジョブ管理部７８は、ジョブの実行情報をジョブ管理データベース７３に格納する。
【００１０】
続いて、特許文献２に記載のジョブ実行管理装置の動作について図１４のフローチャートを参照して説明する。ジョブ管理部７８は、通信インターフェイス７１を介して、クライアントからライセンスソフトウェアを実行させるためのジョブを受け付ける（Ｓ２０１）。ジョブ管理部７８は、入力されたジョブの解析をジョブ解析部７４に指示する（Ｓ２０２）。ジョブ解析結果をもとにライセンス管理部７５が管理する待ち行列の中から最優先ジョブを取得する処理（Ｓ２０３）が実行される。
【００１１】
最優先ジョブの取得処理（Ｓ２０３）の詳細を図１５に示す。ライセンス管理部７５は、入力されたジョブが指定するライセンスソフトウェアの使用数が所定契約数を超過しているか否か、すなわちライセンスに空きが有るか否かを判定する（Ｓ３０１）。ライセンスに空きが有る場合（Ｓ３０１：Ｙｅｓ）、ジョブがライセンス有りの待ち行列に格納される（Ｓ３０２）。そして、ライセンス有の待ち行列内のジョブの順序が更新され（Ｓ３０３）、最優先ジョブの選出（Ｓ３０６）が行われる。
【００１２】
ライセンスに空きがない場合（Ｓ３０１：Ｎｏ）、ジョブは待ち行列管理部７６内の待ち行列内に格納される（Ｓ３０４）。そして、待ち行列管理部７６内の待ち行列のジョブ順序が更新され（Ｓ３０５）、最優先ジョブの選出（Ｓ３０６）が行われる。
【００１３】
図１４に戻り、Ｓ２０３の後の処理について説明する。ジョブ管理部７８は、選出された最優先ジョブに対応する最適ＣＰＵリソースを決定する（Ｓ２０４）。最適ＣＰＵリソースの割り当て結果を基に、ジョブ管理部７８は、対応するＣＰＵリソースに対してジョブ実行の指令を行う（Ｓ２０５）。
【００１４】
ジョブ管理部７８は、ジョブの実行あるいはジョブの待ち行列への入力に対して、該ジョブの実行予測処理をジョブ実行予測部７７に対して行わせる（Ｓ２０６）。ジョブ実行予測部７７は、ジョブ平均実行時間を含むジョブ解析結果とＣＰＵリソースの状態と待ち行列の順序とを基に、各ジョブの実行開始時刻、ジョブの実行時間、ジョブの実行終了時刻などを予測する演算を行い、予測結果をジョブ管理部７８に通知する。
【００１５】
ジョブ管理部７８は、予測情報を受け付けると、当該ジョブを発行したクライアントに対してジョブ実行予測時間を通知する（Ｓ２０７）。ジョブ管理部７８は、ＣＰＵがジョブの実行を終了した旨の通知を受信すると、終了したジョブに対応するジョブ管理データベース７３のデータ列を更新する（Ｓ２０８）。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００２−１５７０３７号公報
【特許文献２】特開２００４−２４６５９２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、上述の技術によっては、全てのライセンスが使用されていた場合に、ジョブ実行が待機状態となってしまうという問題がある。以下に、当該問題の詳細について説明する。
【００１８】
特許文献１の管理システムでは、ライセンスを確保できなかった場合には、ジョブをキューに入れる処理を行う。すなわち、ジョブは所定契約数のライセンスに空きが生じるまで実行が待ち状態となってしまう。
【００１９】
特許文献２に記載のジョブ実行管理装置では、上述のように全てのライセンスソフトウェアが使用されていた場合、ジョブは待ち行列管理部７６内の待ち行列に格納される。すなわち、ジョブは所定契約数のライセンスに空きが生じるまで実行が待ち状態となってしまう。
【課題を解決するための手段】
【００２０】
本発明にかかるジョブ実行管理装置の一態様は、
回路シミュレータのライセンス使用状況を保持する管理テーブルと、
前記管理テーブルを参照して、要求されたジョブに対応する第１の回路シミュレータのライセンスが使用可能かを判定するライセンス管理部と、
前記第１の回路シミュレータが使用不可能である場合に、前記第１の回路シミュレータとの互換性を示す互換性情報を参照して、前記ジョブの実行に使用する第２の回路シミュレータを決定する分析部と、
予め定められた構文変換ルールに応じて前記第１の回路シミュレータの設計情報を前記第２の回路シミュレータの設計情報に変換する設計情報変換部と、を備える、ものである。
【００２１】
本発明にかかるジョブ実行管理方法の一態様は、
回路シミュレータのライセンス使用状況に応じて、要求されたジョブに対応する第１の回路シミュレータのライセンスが使用可能かを判定し、
前記第１の回路シミュレータのライセンスが使用不可能である場合に、前記第１の回路シミュレータとの互換性を示す互換性情報を参照して、前記ジョブの実行に使用する第２の回路シミュレータを決定し、
予め定められた構文変換ルールに応じて前記第１の回路シミュレータの設計情報を前記第２の回路シミュレータの設計情報に変換する、ものである。
【００２２】
本発明においては、ジョブ実行管理装置は、所望の回路シミュレータのライセンスに空きがない場合に、代替の回路シミュレータを選択するとともに、所望の回路シミュレータの設計情報を代替の回路シミュレータ用の設計情報に変換する。この変換により、所望の回路シミュレータと代替の回路シミュレータの互換性が確保され、代替の回路シミュレータが即時に利用可能の状態となる。これにより、ジョブ実行の待ち時間を軽減して、ジョブを実行することが可能になる。
【発明の効果】
【００２３】
本発明によれば、ライセンスに空きがない場合であっても待ち時間が発生することなくジョブを実行することができるジョブ実行管理装置、及びジョブ実行管理方法を提供することができる。
【図面の簡単な説明】
【００２４】
【図１】実施の形態１にかかるジョブ実行システムの構成を示すブロック図である。
【図２】実施の形態１にかかる回路シミュレータにかかるネットリストを示す図である。
【図３】実施の形態１にかかるジョブ実行システムの詳細な構成を示すブロック図である。
【図４】実施の形態１にかかるジョブ実行ログテーブルの構成を示す図である。
【図５】実施の形態１にかかる回路シミュレータ構文テーブルの構成を示す図である。
【図６】実施の形態１にかかるネットリストの変更方法を示す図である。
【図７】実施の形態１にかかるジョブ管理テーブルの構成を示す図である。
【図８】実施の形態１にかかるジョブ実行管理装置の動作を示すフローチャートである。
【図９】実施の形態１にかかるジョブ実行管理装置の動作を示すフローチャートである。
【図１０】実施の形態１にかかるジョブ管理テーブルの変更手順を示す図である。
【図１１】実施の形態１にかかるジョブ管理テーブルの変更手順を示す図である。
【図１２】実施の形態１にかかるジョブ管理テーブルの変更手順を示す図である。
【図１３】特許文献２に記載のジョブ実行管理装置の構成を示すブロック図である。
【図１４】特許文献２に記載のジョブ実行管理装置の動作を示すフローチャートである。
【図１５】特許文献２に記載のジョブ実行管理装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００２５】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、ジョブ実行システム１の構成を示すブロック図である。
【００２６】
ジョブ実行システム１は、ジョブ実行管理装置１０と、クライアント装置２０が複数配置されたクライアント装置群５０と、ジョブ実行装置３０が複数配置されたジョブ実行装置群６０と、を備える。ジョブ実行管理装置１０と、クライアント装置群５０と、ジョブ実行装置群６０と、はネットワーク４０により相互に接続されている。
【００２７】
ジョブ実行管理装置１０は、ワークステーション等のサーバであり、内部に記憶装置１０１やＣＰＵ（Central Processing Unit）を備える。この記憶装置１０１は、後述のジョブ実行の管理や制御を行うためのプログラム、ジョブ実行ログテーブル１０９、回路シミュレータ構文テーブル１１１、ジョブ管理テーブル１１２等が格納される。記憶装置１０１は、例えばハードディスクやメモリである。ジョブ実行管理装置１０は、クライアント装置２０からジョブ実行要求を受け付け、ジョブの実行命令をジョブ実行装置群６０内のいずれかのジョブ実行装置３０に送信する。
【００２８】
クライアント装置２０は、ジョブ実行管理装置１０に対してジョブ実行要求を発行する。クライアント装置２０は、例えば一般的なコンピュータ端末であり、内部に記憶装置２０１やＣＰＵ（Central Processing Unit）を備える。ジョブ実行装置３０は、ジョブ実行管理装置１０からのジョブ実行命令を受け付け、ジョブ実行を行う。ジョブ実行装置３０は、ジョブ実行終了後にジョブ実行結果をジョブ実行管理装置１０に通知する。ジョブ実行装置３０は、ワークステーション等のサーバであり、内部に記憶装置３０１やＣＰＵ（Central Processing Unit）を備える。記憶装置３０１は、例えばハードディスクやメモリである。
【００２９】
ジョブ実行装置３０は、ライセンスソフトウェアである回路シミュレータを実行することによりジョブを処理する。所定契約数のみ使用できるライセンスソフトウェアである回路シミュレータは、複数のＥＤＡベンダがリリースしたものである。以下、本例では、回路シミュレータは第１の回路シミュレータ（以下、Ａシミュレータ）及び第２の回路シミュレータ（以下、Ｂシミュレータ）の２種類とする。ここで、ＡシミュレータとＢシミュレータは、同一のライセンスソフトウェアではない。回路シミュレータがジョブを実行する際に参照するネットリストについて図２を参照して説明する。ネットリストは、各回路シミュレータで回路検証を行うクライアントが記載し、ジョブを実施する回路シミュレーション毎にクライアントが準備するものである。換言すると、ジョブ毎にネットリストが用意される。
【００３０】
図２は、Ａシミュレータにかかるネットリストを示す記述例である。ネットリストの記述には、互換性のある回路シミュレータの情報及び優先順位を示すキーワード行と、オプションパラメータ構文と、シミュレータ制御構文と、素子の記述と、が含まれる。キーワード行（図２では文頭）は、Ａシミュレータと互換性のあるシミュレータの情報が優先順位に応じて記載される。図２では、Ａシミュレータを優先的に使用し、Ａシミュレータが使用できない場合にはＢシミュレータをＡシミュレータの代わりに使用できることが記載されている。キーワード行は、アスタリスク文字（＊）でコメントアウトされており、当該アスタリスク文字に続いて"ｋｅｙｗｏｒｄ"という文字が続いている。このため、回路シミュレータはコメント行として認識するが、後述のキーワード解析部１０４はアスタリスクに続いて"ｋｅｙｗｏｒｄ"という文字が記載された行をキーワード文と認識し、処理を行う。
【００３１】
このように、キーワード文をコメント行として記載することにより、キーワード解析部１０４のみがキーワード文として扱うことができるとともに、他の処理部の動作に影響を与えることがないという効果がある。さらにネットリストは、回路シミュレータ毎に複数準備しておく必要がなく、キーワードとしてジョブ実行順を示したネットリストを、一つ準備しておけばよい。なお、互換性のある回路シミュレータの情報及び優先順位はコメント行としてネットリストへ記載せず、データベースの任意のテーブル内に格納することももちろん可能である。
【００３２】
オプションパラメータ構文は、回路シミュレータの精度指定やスピード指定に必要な情報である。シミュレータ制御構文は、回路シミュレータを制御する情報である。素子の記載には、ＭＯＳ型電界効果トランジスタ、抵抗、容量などの情報が含まれる。詳細には、素子の記述行は、ＳＰＩＣＥ（Simulation Program with Integrated Circuit Emphasis）形式により記述される。図２において、頭文字が"Ｍ"である行はＭＯＳ型電界効果トランジスタ、頭文字が"Ｒ"である行は抵抗、頭文字が"Ｃ"である行は容量を示す。
【００３３】
図３は、ジョブ実行管理装置１０の詳細を主に示すジョブ実行システム１の構成を示す図である。なお、説明の便宜上、クライアント装置２０及びジョブ実行装置３０は、一つのみ図示する。
【００３４】
ジョブ実行管理装置１０は、通信インターフェイス部１０２と、ジョブ管理部１０３と、キーワード解析部１０４と、ライセンス管理部１０５と、ジョブ実行分析部１０６と、ジョブ実行予測部１０７と、ログ解析部１０８と、ジョブ実行ログテーブル１０９と、設計情報変換部１１０と、回路シミュレータ構文テーブル１１１と、ジョブ管理テーブル１１２と、を備える。
【００３５】
通信インターフェイス１０２は、ネットワーク４０を介してクライアント装置２０及びジョブ実行装置３０との通信を制御するインターフェイスである。ジョブ管理部１０３は、ジョブ実行の管理及び制御を行う。詳細には、ジョブ管理部１０３は、クライアント装置２０からのジョブ発行のための発行コマンドの受け付けを行う。ジョブ管理部１０３は、ジョブ実行装置３０へのジョブ実行命令の発行を行う。ジョブ管理部１０３は、ジョブの実行状況の通知等に応じて後述のジョブ管理テーブル１１２を適宜更新する。
【００３６】
キーワード解析部１０４は、ジョブ管理部１０３の指示に応じて、ジョブ実行を要求された回路シミュレータのネットリストからキーワード行の検索を行う。キーワード行が検出された場合、キーワード解析部１０４は、ジョブ実行を要求された回路シミュレータと互換性のある回路シミュレータを優先順とともに抽出する。
【００３７】
ライセンス管理部１０５は、ジョブ管理部１０３の指示に応じて、各回路シミュレータのライセンス使用状況を把握し、使用要求のあった回路シミュレータのライセンス数に空きが有るかを判定し、該状況をジョブ管理部１０３へ通知する。ライセンス管理部１０５は、各回路シミュレータのライセンス契約数と、現在使用しているライセンス数と、空き状態となっているライセンス数を管理する。ライセンス管理部１０５による判定は、図７を参照して後述する。
【００３８】
ジョブ実行解析部１０６は、ジョブ管理部１０３の指示に応じて、Ａシミュレータ及びＢシミュレータのジョブ実行状況を解析し、解析結果をジョブ管理部１０３に通知する。ここで、ジョブ実行状態とは、実行中のジョブを発行したクライアントのユーザ識別情報、ジョブＩＤ、ジョブ実行中のジョブ実行装置３０の識別情報（ジョブ実行マシン）、ジョブの実行に用いるライセンスソフトウェア、ジョブ実行開始からの経過時間であるジョブ実行状態時間、を含む情報である。
【００３９】
ジョブ実行予測部１０７は、ジョブ管理部１０３の指示に応じて、ＡシミュレータまたはＢシミュレータの実行時間の予測を行う処理部である。具体的には、ジョブ実行予測部１０７は、回路シミュレータのネットリストと、後述するジョブ実行ログテーブル１０９と、を参照して実行時間を予測する。ジョブ実行予測部１０７の動作予測の詳細については、後述する。
【００４０】
ログ解析部１０８は、ジョブ管理部１０３の指示に応じて、ジョブ実行装置３０のジョブ実行のログを解析し、解析結果をジョブ実行ログテーブル１０９に格納する処理部である。ジョブ実行ログテーブル１０９の構成例を図４に示す。
【００４１】
ジョブ実行ログテーブル１０９は、ログ解析部１０８の指示に応じて、ユーザと、ジョブＩＤと、ライセンスソフトウェアと、ジョブ実行マシンと、ネットリスト素子数と、ジョブ実行時間と、をジョブ実行の情報として保持する。ユーザは、ジョブを発行したユーザの情報である。ジョブＩＤは、実行したジョブの識別情報である。ライセンスソフトウェアは、ジョブの実行に使用した回路シミュレータの情報である。ジョブ実行マシンは、ジョブを実行したジョブ実行装置３０の識別情報である。ネットリスト素子数は、ネットリストに含まれている素子の数であり、一般に素子数が多いほどジョブの実行時間が大きくなる。ジョブ実行時間は、ジョブの実行に要した時間である。なお、ジョブ実行ログテーブル１０９の情報は、ジョブを発行したクライアント装置２０等に適宜出力することが可能である。
【００４２】
設計情報変換部１１０は、ジョブ管理部１０３の指示に応じて、ある回路シミュレータのライセンスに空きがない場合に、互換性のある他の回路シミュレータでの実行を行うためにネットリストを書き換える処理部である。例えば、設計情報変換部１１０は、Ａシミュレータ用のネットリストをＢシミュレータが実行できるように書き換える。この書き換えは、回路シミュレータ構文テーブル１１１に記載された書き換えルールに基づいて実行される。
【００４３】
図５は、回路シミュレータ構文テーブル１１１の一例を示す図である。回路シミュレータ構文テーブル１１１は、オプションパラメータ構文などの対応が記載されている。ＡシミュレータとＢシミュレータは、異なる回路シミュレータであり、異なるＥＤＡベンダが提供しているため、ネットリストには同一ではない類似する構文が用いられる。回路シミュレータ構文テーブル１１１には、この類似する構文の対応関係が記載される。なお、図５ではオプションパラメータ構文の対応について記述したが、あくまで構文の一例であり、他の構文についての対応も記載してもよい。
【００４４】
図６は、図５に示す回路シミュレータ構文テーブル１１１を使用したオプションパラメータ構文の変更を示す図である。詳細には、図６は、Ａシミュレータ用のネットリストのオプションパラメータ構文をＢシミュレータ用のネットリストのオプションパラメータ構文に変更した状態を示す。図６（Ａ）は、Ａシミュレータ用のネットリストを示す。図６（Ｂ）は、図６（Ａ）のネットリストを図５の回路シミュレータ構文テーブル１１１を使用してＢシミュレータ用のネットリストに変更した状態を示す。
【００４５】
ジョブ管理テーブル１１２は、ジョブ実行状況やライセンス使用状況がリアルタイムに更新されるテーブルである。ジョブ管理テーブル１１２の詳細な構成例を図７に示す。図７は、ジョブ管理部１０３がＡシミュレータのジョブ実行のためにジョブ管理テーブル１１２を更新する様子を示す図である。ジョブ管理テーブル１１２には、ユーザと、ジョブＩＤと、ジョブ実行マシンと、ライセンスソフトウェアと、ジョブ実行状態時間と、ジョブ実行終了予測時間と、ジョブ実行待機状態と、所定契約ライセンス数と、使用ライセンス数と、空きライセンス数と、が格納される。
【００４６】
ユーザは、ジョブを発行したユーザの情報である。ジョブＩＤは、ジョブの識別情報である。ジョブ実行マシンは、ジョブを実行するジョブ実行装置３０を識別できる識別情報である。ライセンスソフトウェアは、ジョブ実行装置３０がジョブ実行に用いる回路シミュレータの種類である。ジョブ実行状態時間は、ジョブの実行開始から経過している時間である。ジョブ実行終了予測時間は、ジョブの実行が終了するまでに要すると思われる時間である。ジョブ実行終了予測時間は、ジョブ実行予測部１０７による予測結果が反映される項目である。
【００４７】
ジョブ実行待機状態は、ライセンスソフトウェアのライセンス不足によりジョブが実行できない場合に１が設定され、それ以外の場合に０が設定されるフラグである。所定契約ライセンス数は、ライセンスソフトウェアが使用できる契約数である。空きライセンス数は、使用するライセンスソフトウェアの使用可能数である。空きライセンス数には、ライセンスソフトウェアが同一であるジョブについては、全て同じ値が設定される。
【００４８】
図７（Ａ）の例では、Ａシミュレータをジョブ実行装置３０であるＡマシン、Ｂマシン、Ｃマシンが実行している場合に、新たにＡシミュレータのライセンスを１つ（使用ライセンス数＝１）使用するジョブが発生した例を示している。この図７（Ａ）の状態では、Ａシミュレータの所定契約ライセンス数が"４"であるのに対して、既に使用しているライセンスの総数は"３"である。そのため、ジョブ管理テーブル１１２と等しいライセンス状況を管理するライセンス管理部１０５は、使用可能なライセンスが存在すると判定する。そのため、ライセンス管理部１０５から判定結果を受信したジョブ管理部１０３は、新たに入力されたジョブを示す行に対して、Ａシミュレータのジョブ実行待機状態を"０"、使用ライセンス数"１"、空きライセンス数"０"としてジョブ管理テーブル１１２を更新する。また、ジョブ管理部１０３は、Ａシミュレータを使用するジョブの空きライセンス数を全て"０"に更新する。図７（Ｂ）は、当該更新後のテーブル状態を示す。ジョブ管理テーブル１１２の更新状況は、ジョブ管理部１０３を通じて、ライセンス管理部１０５に逐次通知される。
【００４９】
続いて、ジョブ実行管理装置１０の動作について図８及び図９のフローチャートを参照して説明する。以下の説明では、ユーザがＡシミュレータの使用を意図してジョブを発行したものとする。はじめにジョブ管理部１０３は、クライアント装置２０からＡシミュレータのジョブ実行の要求を受け付ける（Ｓ１０１）。より詳細には、クライアント装置２０が発行したジョブ実行コマンドは、ネットワーク４０及び通信ターフェイス１０２を介して、ジョブ管理部１０３に伝達される。この伝達により、ジョブ管理部１０３は、ジョブ実行の要求が発行されたと認識し、ジョブ実行を受け付ける。
【００５０】
次に、ジョブ管理部１０３は、受け付けたジョブ実行要求をキーワード解析部１０４に通知する（Ｓ１０２）。通知を受けたキーワード解析部１０４は、予め用意されたＡシミュレータのネットリストからキーワード行の検索を行う。キーワード解析部１０４は、キーワード行の検索結果をジョブ管理部１０３に通知する。キーワード行の記述例は、図２に示す通りである。
【００５１】
ジョブ管理部１０３は、キーワード解析部１０４に対し、ジョブ実行を行う回路シミュレータの優先順位の解析を指示する。当該指示に応じて、キーワード解析部１０４は、ジョブ実行を行う回路シミュレータの優先順位の解析を行う（Ｓ１０３）。当該解析とは、キーワード行に記載されている回路シミュレータの優先順位を解析することである。すなわち、キーワード解析部１０４は、どの回路シミュレータが優先して実行されるかを解析する。キーワード解析部１０４は、解析結果をジョブ管理部１０３に通知する。
【００５２】
図２の例では、キーワード行には、回路シミュレータの優先順位が不等号により記載されている。この場合、キーワード解析部１０４は、キーワード行"＊ｋｅｙｗｏｒｄ  Ａシミュレータ＞Ｂシミュレータ"との記載から、Ａシミュレータの実行を要求された場合に、Ａシミュレータが優先して実行され、続いてＢシミュレータが実行されることを解析する。このように、回路シミュレータの互換性だけではなく優先順位も記載することにより、ある回路シミュレータが使用できない場合に次に使用される回路シミュレータを明示的に指定できる。これにより、より互換性の高い回路シミュレータを優先して使用することが可能となり、シミュレーション品質の向上等を図ることができる。
【００５３】
続いて、ジョブ管理部１０３は、ジョブ実行予測部１０７に対し、Ａシミュレータのネットリストから素子数のカウントを指示する。当該指示に応じて、ジョブ実行予測部１０７は、処理対象となるＡシミュレータのネットリストの素子数をカウントする（Ｓ１０４）。詳細には、ジョブ実行予測部１０７は、ＡシミュレータのネットリストからＭＯＳ型電界効果トランジスタ、抵抗、容量等の素子がいくつ記載されているかをカウントする。
【００５４】
ジョブ管理部１０３は、ジョブ実行予測部１０７に対し、Ａシミュレータの実行時間の予測を指示する。当該指示に応じて、ジョブ実行予測部１０３は、入力されたジョブを実行するためにＡシミュレータが要する時間の予測を行う（Ｓ１０５）。詳細には、ジョブ実行予測部１０７は、ジョブ実行ログテーブル１０９からＡシミュレータが過去に処理した素子数とその素子数の処理にかかった時間を抽出する。ここで、ジョブ実行ログテーブル１０９は、回路シミュレータ毎に素子数によりソートされている。そして、ジョブ実行予測部１０７は、Ｓ１０４にてカウントした素子数と、抽出した素子数の情報とを照合することにより、入力されたジョブを実行するためにＡシミュレータが要する時間の予測を行う。以下、具体的な例を示す。
【００５５】
Ａシミュレータのネットリスト内に含まれる素子数が３０００００素子であり、ジョブ実行マシンがＡマシンである場合、ジョブ実行予測部１０７は、ＡマシンにてＡシミュレータが３０００００素子だけ処理した案件があるかを検索する。図４に示すように、ジョブＩＤ１００のジョブは、Ａシミュレータが３時間（３ｈ）で実行を終了し、処理した素子数は３０００００素子であるため、ジョブ実行予測部１０７は、これから行う処理の実行に３時間（３ｈ）かかると予測する。
【００５６】
ジョブ実行予測部１０７は、予測したジョブ実行終了時間を、ジョブ管理部１０３を介してジョブ管理テーブル１１２に書き込む（Ｓ１０６）。なお、ジョブ実行管理装置１０は、予測した当該ジョブ実行終了時間を、ジョブ発行を行ったクライアント装置２０に送信してもよい。これにより、クライアント装置２０は、ジョブ実行が終了するまでのおおよその時間を把握できる。この予測時間の参照するにより、クライアント装置２０のユーザは、続いて投入するジョブのスケジューリング等の効率的に行うことができる。
【００５７】
次に、ジョブ管理部１０３は、ライセンス管理部１０５にＡシミュレータのライセンス使用状況の解析を指示する。当該指示に応じて、ライセンス管理部１０５は、各回路シミュレータのライセンス使用状況を解析し、当該解析結果をジョブ管理部１０３に通知する（Ｓ１０７）。ライセンス使用状況とは、各回路シミュレータの所定契約ライセンス数と、使用ライセンス数と、空きライセンス数から構成される情報である。
【００５８】
ライセンス管理部１０５は、ジョブ管理部１０３を介してライセンス使用状況をジョブ管理テーブル１１２に書き込む（Ｓ１０８）。詳細には、ライセンス管理部１０５は、ジョブ管理テーブル１１２の所定契約ライセンス数の項目と、使用ライセンス数の項目と、空きライセンス数の項目と、を更新する。
【００５９】
続いて、ジョブ管理部１０３は、ジョブ実行解析部１０６に対してジョブ実行状況の解析を指示する。当該指示に応じて、ジョブ実行解析部１０６は、Ａシミュレータ及びＢシミュレータのジョブ実行状況を解析し、解析結果をジョブ管理部１０３に通知する（Ｓ１０９）。ジョブ実行状態とは、前述のように、実行中のジョブを発行したクライアントのユーザ識別情報、ジョブＩＤ、ジョブ実行中のジョブ実行装置３０（ジョブ実行マシン）の識別情報、ジョブの実行に用いるライセンスソフトウェア、ジョブ実行開始からの経過時間であるジョブ実行状態時間、を含む情報である。
【００６０】
解析結果を受け付けたジョブ管理部１０３は、ジョブ実行状態をジョブ管理テーブル１１２に書き込む（Ｓ１１０）。詳細には、ジョブ管理部１０３は、ジョブ管理テーブル１１２のユーザの項目、ジョブＩＤの項目、ジョブ実行マシンの項目、ライセンスソフトウェアの項目、ジョブ実行状態時間の項目、を解析結果により更新する。
【００６１】
ジョブ実行状況の解析（Ｓ１０９）を、図７を参照して具体的に説明する。図７は、ユーザＦＦＦがＡシミュレータを使用するジョブを発行した場合を示している。そのため、ジョブ管理部１０３は、ジョブ管理テーブル１１２のユーザの項目を"ＦＦＦ"、ジョブＩＤの項目を"３０５"、ジョブ実行マシンの項目を"Ｆマシン"、ライセンスソフトウェアの項目を"Ａシミュレータ"、ジョブ実行状態時間の項目を実行開始前であるため"０ｈ"に更新する。なお、ジョブ実行終了予測時間の項目は、Ｓ１０５の解析結果により、Ｓ１０６にて更新されている。
【００６２】
ジョブ実行解析部１０６による解析は、リアルタイムにジョブ管理テーブル１１２を更新するために定期的に行われる。
【００６３】
続いて、ジョブ管理部１０３は、ライセンス使用状況の解析結果（Ｓ１０７）と、ジョブ実行状況の解析結果（Ｓ１０９）と、からＡシミュレータでのジョブ実行が可能か否かを判定する（Ｓ１１１）。詳細には、ジョブ管理部１０３は、ジョブ管理テーブル１１２内の空きライセンス数が新たに入力されたジョブの使用ライセンス数よりも大きい、または等しければＡシミュレータが使用可能と判断する。一方、ジョブ管理部１０３は、ジョブ管理テーブル１１２内の空きライセンス数が新たに入力されたジョブの使用ライセンス数よりも小さければＡシミュレータが使用不可能と判断する。
【００６４】
Ａシミュレータの実行可否判定（Ｓ１１１）の詳細について図７を参照して説明する。ユーザＦＦＦがジョブＩＤ３０５を発行した際に、ＡシミュレータはジョブＩＤ３００、ジョブＩＤ３０１、及びジョブＩＤ３０２により使用されている。すなわち、ユーザＦＦＦがジョブＩＤ３０５を発行した際に、Ａシミュレータに関するライセンスは既に３つ使用されている。Ａシミュレータの所定契約ライセンス数は図７に示すように"４"であるため空きライセンス数は"１"である。発行されたジョブＩＤ３０５のＡシミュレータの使用ライセンス数が"１"であるため、ジョブ管理部１０３は、Ａシミュレータが実行可能と判定する。
【００６５】
Ａシミュレータが実行可能である場合（Ｓ１１１：Ｙｅｓ）、ジョブ管理部１０３は、ジョブ管理テーブル１１２を更新する（Ｓ１１２）。詳細には、ジョブ管理部１０３は、Ａシミュレータに関する空きライセンス数を１だけ減らし、Ａシミュレータを割り当てたジョブに関するジョブ実行待機状態の項目を"０"に設定する（Ｓ１１２）。図７の例では、ジョブ管理部１０３は、Ａシミュレータにかかる空きライセンス数を全て"０"に設定し、ジョブＩＤ３０５のジョブ実行待機状態の項目を"０"に更新する。ジョブ管理部１０３は、該更新情報をライセンス管理部１０５に通知する。
【００６６】
ジョブ管理部１０３は、Ａシミュレータの実行を行うジョブ実行装置３０（図７の例ではＦマシン）に対してジョブの実行を指示する。当該指示に応じて、ジョブ実行装置３０は、Ａシミュレータのジョブ実行を開始する（Ｓ１１３）。なお、ジョブ実行装置３０は、ジョブ実行中に実行状況をジョブ実行解析部１０６にリアルタイムで通知する。当該通知を受信したジョブ実行解析部１０６は、ジョブ実行状況を、ジョブ管理部１０３を介して逐次ジョブ管理テーブル１１２に書き込む。
【００６７】
ジョブ実行装置３０は、ジョブの実行が終了すると、当該終了をジョブ管理部１０３に通知する。終了通知を受け付けたジョブ管理部１０３は、実行が終了したジョブのデータ列を削除するようにジョブ管理テーブル１１２の更新を行う（Ｓ１１４）。例えば、図７のジョブＩＤ３０５のジョブの実行が終了すれば、ジョブＩＤ３０５にかかるデータ列が削除される。当該データ列の削除の後、ジョブ管理部１０３は、ライセンス管理部１０５及びジョブ実行予測部１０７にデータ列削除の結果を通知する。
【００６８】
ジョブ実行装置３０は、実行が終了したジョブに関する情報を、ジョブ管理部１０３を介してログ解析部１０８に通知する（Ｓ１１５）。ログ解析部１０８は、ジョブ実行装置３０からの通知を基にジョブ実行のログ解析を行う（Ｓ１１６）。ジョブ実行のログ解析とは、ジョブ実行ログテーブル１０９に格納する情報を抽出することである。すなわち、ログ解析部１０８は、通知された情報を基に、実行が終了したジョブを発行したユーザ、ジョブＩＤ、使用したライセンスソフトウェア、ジョブを実行したジョブ実行装置３０の識別名（ジョブ実行マシン）、処理したネットリスト素子数、実行終了に要した時間をジョブ実行ログから抽出する。ログ解析部１０８は、この抽出した情報をジョブ実行ログテーブル１０９に格納する（Ｓ１２７）。
【００６９】
続いて、Ａシミュレータが直ちに実行できないと判定された場合（Ｓ１１１：Ｎｏ）の処理について説明する。具体的な動作を図８及び図９のフローチャートに加えて、図１０〜図１２に示すジョブ管理テーブル１１２のデータ例も参照して説明する。図１０は、ユーザＧＧＧがＡシミュレータの使用を意図してジョブＩＤ３０５を発行した様子を示す。ジョブＩＤ３００と、ジョブＩＤ３０１と、ジョブＩＤ３０２と、ジョブＩＤ３０５は、既にＡシミュレータのライセンスを使用してジョブを実行している。そのため、Ａシミュレータの使用ライセンスの総数は"４"となる。すなわち、Ａシミュレータのライセンスは全て使用していることになる。
【００７０】
Ａシミュレータのライセンスが全て使用状態であるため、ライセンス管理部１０５は、Ａシミュレータは使用不可能と判定される（Ｓ１１１：Ｎｏ）。そのため、ジョブ管理部１０３は、ジョブＩＤ３０６のデータ行のジョブ実行待機状態を"０"から"１"に更新する（Ｓ１１８）。これにより、ジョブＩＤ３０６のジョブが待ち状態となる（図１１）。
【００７１】
続いて、Ａシミュレータと互換性が有るとネットリストに記載されたＢシミュレータが使用可能か否かが判定される（Ｓ１１９）。すなわち、ジョブ管理部１０３は、Ｂシミュレータの空きライセンス数が１以上であるか否かを判定する。図１１の場合、Ｂシミュレータの所定契約ライセンス数は"４"であり、ジョブＩＤ３０３とジョブＩＤ３０４がＢシミュレータを使用してジョブを実行している。そのため、Ｂシミュレータの使用ライセンスの総数は"２"となり、Ｂシミュレータの空きライセンス数は"２"となる。Ｂシミュレータの空きライセンスが１以上である場合、ジョブ管理部１０３は、Ｂシミュレータが使用可能と判断する（Ｓ１１９：Ｙｅｓ）。
【００７２】
Ｂシミュレータが使用可能である場合（Ｓ１１９：Ｙｅｓ）、ジョブ管理部１０３は、ジョブ管理テーブル１１２を、Ｂシミュレータを使用するように更新する。詳細には、ジョブ管理部１０３は、待ち状態となっていたジョブに関するライセンスソフトウェアの項目、ジョブ実行待機状態の項目、使用ライセンス数の項目、空きライセンス数の項目、を更新する（Ｓ１２０）。詳細には、図１２のように、ジョブ管理部１０３は、ジョブＩＤ３０６に関して、ライセンスソフトウェアの項目を"Ｂシミュレータ"、ジョブ実行待機状態の項目を"０"、使用ライセンス数の項目を"１"、空きライセンス数の項目をＢシミュレータの直前の空きライセンス数の値から１減らして"１"とする。ジョブ管理部１０３は、該更新情報をライセンス管理部１０５に通知する。
【００７３】
次に、ジョブ管理部１０３は、ジョブ管理テーブルの更新（Ｓ１２０）の後に、設計情報変換部１１０にネットリストの構文変換を指示する。当該指示に応じて、設計情報変換部１１０は、Ａシミュレータ用に作成されたネットリストをＢシミュレータ用に使用できるネットリストに変換する（Ｓ１２１）。
【００７４】
ネットリストの変換（Ｓ１２１）の詳細を、図５及び図６を参照して再度説明する。図５は、前述のように回路シミュレータ構文テーブル１１１の一例を示す図である。設計情報変換部１１０は、回路シミュレータ構文テーブル１１１に示された回路シミュレータの精度指定やシミュレータのスピード指定に必要なオプションパラメータ構文等を変換対象とする。図５に示されるように回路シミュレータ構文テーブル１１１には、Ａシミュレータの構文とＢシミュレータの構文が対比されるように記載される。
【００７５】
図６は、前述のように図５の回路シミュレータ構文テーブル１１１を用いてＡシミュレータ用のネットリストをＢシミュレータ用のネットリストに変換した変換処理を示している。この例では、Ａシミュレータ用のネットリストのオプションパラメータ構文では、精度指定は"Ｍｏｄｅ＝ＡｎａｌｏｇＳｐｉｃｅ"、シミュレータスピード指定は"ＳｉｍＳｐｅｅｄ＝３"と記載されていた。しかし、これらの構文は、Ｂシミュレータではオプションパラメータ構文として認識されることがない。そのため、設計情報変換部１１０は、回路シミュレータ構文テーブル１１１を参照して、Ｂシミュレータではオプションパラメータ構文として認識される精度指定の記述を"ＳｉｍＭｏｄｅ＝ＡｎａｌｏｇＳｐｉｃｅ"、シミュレータスピード指定の記述を"Ｓｐｅｅｄ＝３"に書き換える。
【００７６】
設計情報変換部１１０は、Ｂシミュレータ用のネットリストを作成した後に、当該作成終了をジョブ管理部１０３に通知する（Ｓ１２２）。当該通知に応じて、ジョブ管理部１０３は、Ｂシミュレータを用いてジョブを実行可能なジョブ実行装置３０に対してジョブの実行を指示する。当該指示を受けたジョブ実行装置３０は、生成されたＢシミュレータ用のネットリストを用いてジョブの実行を行う（Ｓ１２３）。
【００７７】
なお、ジョブ実行装置３０は、ジョブ実行中に実行状況をジョブ実行解析部１０６にリアルタイムで通知する。当該通知を受信したジョブ実行解析部１０６は、ジョブ実行状況を、ジョブ管理部１０３を介して逐次ジョブ管理テーブル１１２に書き込む。
【００７８】
ジョブ実行装置３０は、Ｂシミュレータを用いたジョブ実行の完了後にジョブ管理部１０３に対してジョブの実行終了を通知する。終了通知を受け付けたジョブ管理部１０３は、実行が終了したジョブのデータ列を削除するようにジョブ管理テーブル１１２の更新を行う（Ｓ１２４）。例えば、図７に示すジョブＩＤ３０５のジョブの実行が終了すれば、ジョブＩＤ３０５にかかる全てのデータ列が削除される。当該データ列の削除の後、ジョブ管理部１０３は、ライセンス管理部１０５及びジョブ実行予測部１０７にデータ列削除の結果を通知する。
【００７９】
ジョブ実行装置３０は、実行が終了したジョブに関する情報を、ジョブ管理部１０３を介してログ解析部１０８に通知する（Ｓ１２５）。ログ解析部１０８は、ジョブ実行装置３０からの通知を基にジョブ実行のログ解析を行う（Ｓ１２６）。ログ解析部１０８は、ログ解析により抽出した情報をジョブ実行ログテーブル１０９に格納する（Ｓ１２７）。実行ログテーブル１０９に格納する情報は、前述の通り、図４のユーザと、ジョブＩＤと、ライセンスソフトウェアと、ジョブ実行マシンと、ネットリスト素子数と、ジョブ実行時間と、である。
【００８０】
続いて、本実施の形態にかかるジョブ実行管理装置の効果について説明する。本実施の形態にかかるジョブ実行管理装置は、要求されたジョブの実行に使用するライセンスソフトウェアである回路シミュレータのライセンスに空きがない場合に、互換性のある他の回路シミュレータを使用するように決定する。この際に、回路シミュレータ間のネットリストの違いを構文変換することにより、異なる回路シミュレータを用いても所望の動作を行うことができる。これにより、ライセンスに空きがない場合であっても待ち時間が発生することなくジョブを実行することができる。
【００８１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の説明では、２つのライセンスソフトウェアを用いることを前提として説明したが必ずしもこれに限られない。ライセンスソフトウェアの種類は任意の数の種類でよく、ネットリスト内にこれらのライセンスソフトウェアの互換性及び優先順位を記載すればよい。
【符号の説明】
【００８２】
１      ジョブ実行システム
１０    ジョブ実行管理装置
１０１  記憶装置
１０２  通信インターフェイス
１０３  ジョブ管理部
１０４  キーワード解析部
１０５  ライセンス管理部
１０６  ジョブ実行解析部
１０７  ジョブ実行予測部
１０８  ログ解析部
１０９  ジョブ実行ログテーブル
１１０  設計情報変換部
１１１  回路シミュレータ構文テーブル
１１２  ジョブ管理テーブル
２０    クライアント装置
２０１  記憶装置
３０    ジョブ実行装置
３０１  記憶装置
４０    ネットワーク
５０    クライアント装置群
６０    ジョブ実行装置群
【図１】
2012137936.tif 000003
【図２】
2012137936.tif 000004
【図３】
2012137936.tif 000005
【図４】
2012137936.tif 000006
【図５】
2012137936.tif 000007
【図６】
2012137936.tif 000008
【図７】
2012137936.tif 000009
【図８】
2012137936.tif 000010
【図９】
2012137936.tif 000011
【図１０】
2012137936.tif 000012
【図１１】
2012137936.tif 000013
【図１２】
2012137936.tif 000014
【図１３】
2012137936.tif 000015
【図１４】
2012137936.tif 000016
【図１５】
2012137936.tif 000017