(57)【要約】【課題】モジュールの構成や動作などの重要な技術を保護するようにシミュレーションモデルを生成するシミュレーションモデル生成装置を提供すること。【解決手段】ＨＤＬコード生成部２３は、入力パラメータ２１およびＨＤＬテンプレート２２からＨＤＬソースコード２４を生成する。保護機能付ＨＤＬコード生成部２６は、ＨＤＬコード生成部２３によって生成されたＨＤＬソースコード２４内の保護対象の記述を、当該保護対象の記述に対応する機能を有するユーザタスクを呼び出す記述に置換し、ユーザタスクをバイナリーコード２９に変換して出力する。したがって、モジュールの構成や動作などの重要な技術を保護することが可能となる。【選択図】図２
2011022690.tif 000002
【特許請求の範囲】
【請求項１】
論理シミュレータによって使用されるシミュレーションモデルを生成するシミュレーションモデル生成装置であって、
入力パラメータおよびテンプレートからハードウェア記述言語ソースコードを生成する第１のコード生成手段と、
前記第１のコード生成手段によって生成されたソースコード内の保護対象の記述を、当該保護対象の記述に対応する機能を有するユーザタスクを呼び出す記述に置換し、該ユーザタスクをバイナリーコードに変換して出力する第２のコード生成手段とを含む、シミュレーションモデル生成装置。
【請求項２】
前記ハードウェア記述言語ソースコードは、保護対象とする記述の範囲を規定する記述を含み、
前記第２のコード生成手段は、保護対象とする記述の範囲を規定する記述を参照して当該保護対象の記述を削除し、削除した保護対象の記述に対応する機能を有するユーザタスクを呼び出す記述を挿入する、請求項１記載のシミュレーションモデル生成装置。
【請求項３】
前記入力パラメータは、有効期限を規定する記述を含み、
前記第２のコード生成手段は、前記有効期限および前記入力パラメータに記述された情報を暗号化したライセンスキーを含むライセンスファイルを生成する、請求項１または２記載のシミュレーションモデル生成装置。
【請求項４】
前記ユーザタスクのバイナリーコードは、前記ライセンスファイルを解読してライセンスが有効か否かを判定するコードを含む、請求項３記載のシミュレーションモデル生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理シミュレータによって使用されるシミュレーションモデルを生成する技術に関し、特に、第３者によって不正に改変されたり、使用許可された者以外の者に無断で使用されたりすることを防止する保護機能を有するシミュレーションモデルを生成するシミュレーションモデル生成装置に関する。
【背景技術】
【０００２】
近年、ＬＳＩ（Large Scale Integrated circuit）の設計などで論理シミュレータが広く利用されるようになり、論理シミュレータに様々な機能が追加されるようになってきている。そのような機能の１つに、ソースコードが第３者によって不正に改変されたり、使用許可された者以外の者に無断で使用されたりすることを防止する保護機能を挙げることができる。
【０００３】
このようなソースコードを保護する機能は、論理シミュレータにオプション機能として備えられていることが多い。このオプション機能によって保護されたソースコードは、第３者が解読したり、改変したりすることができないため、重要な技術やノウハウを保護することができる。これに関連する技術として、下記の特許文献１〜４に開示された発明がある。
【０００４】
特許文献１は、ＩＰコア回路のソースコードからライセンス情報の削除および改ざんを阻止し、ＩＰコアの権利を保護することを目的とする。プログラムは、メモリおよびコンパイラを有するコンピュータに用いられ、コンピュータ支援設計におけるレジスタトランスファーレベルのハードウェア記述言語で記述されたソースコードからなり、再利用可能なマクロセルとして記述されたＩＰコアのコードを含む。ＩＰコアのコードとしては、予めライセンス情報が埋め込まれている。このため、プログラムのソースコードからライセンス情報を削除または改ざんすると、ＩＰコアに基づいて実装されるＩＰコア回路が動作しなくなり、ライセンス情報を削除および改ざんすることができなくなる。
【０００５】
特許文献２は、回路動作シミュレーション装置において、回路情報の秘匿性を高めつつ、容易にシミュレーションできるようにすることを目的とする。暗号化されて提供された回路情報（供給回路情報）は、供給回路情報復号化部によって復号化され、さらに記憶回路情報暗号化部により暗号化されて、記憶回路情報として記憶部に記憶される。上記記憶回路情報は、記憶回路情報・中間データ復号化部により復号化されてシミュレータエンジンに入力され、シミュレーションが行われる。また、シミュレーション中の中間データは、中間データ暗号化部により暗号化されて記憶部に記憶され、やはり記憶回路情報・中間データ復号化部により復号化されてシミュレータエンジンに入力される。
【０００６】
特許文献３は、シンボルの属性に関した変更に対して柔軟に対応可能で、且つシンボルの属性に関しセキュリティを保証するシンボル属性情報利用方法の提供を目的とする。ＣＡＤツールを用いた図面上における各シンボルに関する属性情報を利用する利用方法で、属性情報利用ツールを起動してユーザの認証を行なう。その後ＣＡＤツールを立ち上げて図面格納領域から図面ファイルを検索し図面を表示させ、属性情報を利用したいシンボルを指定して、当該認証の結果に基づいて当該指定されたシンボルの属性情報の利用許可の可否を判断して、利用可であれば属性情報テーブルから属性情報を取得し表示する。
【０００７】
特許文献４は、ＬＳＩ設計側の作成したソースコードレベルの設計内容を文字列変換してＬＳＩ製造側に渡すことで秘密を確保しつつ作業性を向上させるＬＳＩ設計・製造システムのセキュリティ方式に関する。ＬＳＩ設計・製造システムは、ＬＳＩ設計者側の設計したＬＳＩ設計内容をＬＳＩ製造者側に渡して、ＬＳＩ製造者側でＬＳＩ設計内容に基づいてＬＳＩの製造を行うに際して、ＬＳＩ設計者側が、ＬＳＩ設計内容をハードウェア記述言語で記述したソースコードであるＲＴＬ記述に対して文字列変換部で所定の文字列変換処理を施す。そして、当該文字列変換したソースコードである変換済ＲＴＬ記述をＬＳＩ製造者側に渡す。したがって、セキュリティを向上させることができるとともに、利用性を向上させることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−１１７２９６号公報
【特許文献２】特開２００４−１７１３６７号公報
【特許文献３】特開２００１−１９５４３４号公報
【特許文献４】特開２００５−２３５８４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、論理シミュレータのオプション機能を用いることによって、ソースコードを保護することができる。しかしながら、ある論理シミュレータで保護されたソースコードは他の論理シミュレータで解読することができない。したがって、ソースコードを保護する際、使用者側の論理シミュレータに合わせて保護したソースコードを用意する必要があり、作業が煩雑になるといった問題があった。
【００１０】
また、論理シミュレータのバージョンによって、暗号化アルゴリズムが変更されている場合がある。したがって、ソースコードを保護した際の論理シミュレータと、保護したソースコードを使用する使用者側の論理シミュレータとが同一の論理シミュレータであっても、バージョンが異なる場合にはアルゴリズムの違いによって解読できないことがある。そのため、使用者側の論理シミュレータのバージョン毎に保護したソースコードを用意しなければならないといった問題もあった。
【００１１】
さらには、従来の論理シミュレータのソースコードの保護機能には、有効期限を設定する機能がない。そのため、一度使用許可範囲外に流出したソースコードは、第３者によって無制限に利用される可能性があるといった問題もあった。
【００１２】
本発明は、上記問題点を解決するためになされたものであり、その目的は、モジュールの構成や動作などの重要な技術を保護するようにシミュレーションモデルを生成するシミュレーションモデル生成装置を提供することである。
【課題を解決するための手段】
【００１３】
本発明の一実施例によれば、論理シミュレータによって使用されるシミュレーションモデルを生成するシミュレーションモデル生成装置が提供される。ＨＤＬコード生成部は、入力パラメータおよびＨＤＬテンプレートからＨＤＬソースコードを生成する。保護機能付ＨＤＬコード生成部は、ＨＤＬコード生成部によって生成されたＨＤＬソースコード内の保護対象の記述を、当該保護対象の記述に対応する機能を有するユーザタスクを呼び出す記述に置換し、ユーザタスクをバイナリーコードに変換して出力する。
【発明の効果】
【００１４】
この実施例によれば、ＨＤＬソースコード内の保護対象の記述を、当該保護対象の記述に対応する機能を有するユーザタスクを呼び出す記述に置換し、ユーザタスクをバイナリーコードに変換して出力するので、モジュールの構成や動作などの重要な技術を保護することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態におけるシミュレーションモデル生成装置のハードウェア構成の一例を示すブロック図である。
【図２】本発明の実施の形態におけるシミュレーションモデル生成装置を機能的構成によって示したブロック図である。
【図３】本発明の実施の形態におけるシミュレーションモデル生成装置の処理手順を説明するためのフローチャートである。
【図４】入力パラメータファイル２１の記述例を示す図である。
【図５】ＳＰＲＡＭに対応するＨＤＬテンプレートファイル２２の記述例を示す図である。
【図６】ＲＯＭに対応するＨＤＬテンプレートファイル２２の記述例を示す図である。
【図７】ＨＤＬコード生成部２３によって生成されたＳＰＲＡＭに対応するＨＤＬソースコード２４の一例を示す図である。
【図８】ＨＤＬコード生成部２３によって生成されたＲＯＭに対応するＨＤＬソースコード２４の一例を示す図である。
【図９】ＲＯＭコード３０の記述例を示す図である。
【図１０】ＨＤＬコード生成部２３によって生成されたＲＯＭコード対応外部ファイル３１の一例を示す図である。
【図１１】保護機能付ＨＤＬコード生成部２６の処理手順を説明するためのフローチャートである。
【図１２】ユーザタスクテンプレートファイル２５の記述例を示す図である。
【図１３】ユーザタスクソースコードの記述例を示す図である。
【図１４】図７に示す未保護ＨＤＬソースコード（ＳＰＲＡＭ）２４から生成された保護機能付ＨＤＬソースコードを示す図である。
【図１５】図８に示す未保護ＨＤＬソースコード（ＲＯＭ）２４から生成された保護機能付ＨＤＬソースコードを示す図である。
【図１６】ライセンスファイル２７の記述例を示す図である。
【図１７】保護機能付ＨＤＬ２８に組み込まれたユーザタスクの処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１６】
図１は、本発明の実施の形態におけるシミュレーションモデル生成装置のハードウェア構成の一例を示すブロック図である。このシミュレーションモデル生成装置は、一般的なコンピュータによって実現され、コンピュータ本体１、ディスプレイ装置２、ＦＤ（Flexible Disk）４が装着されるＦＤドライブ３、キーボード５、マウス６、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）８が装着されるＣＤ−ＲＯＭ装置７およびネットワーク通信装置９を含む。
【００１７】
シミュレーションモデル生成プログラムは、ＦＤ４またはＣＤ−ＲＯＭ８等の記憶媒体によって供給される。シミュレーションモデル生成プログラムはコンピュータ本体１によって実行され、シミュレーションモデルの生成が行なわれる。また、シミュレーションモデル生成プログラムは他のコンピュータより通信回線を経由し、コンピュータ本体１に供給されてもよい。
【００１８】
なお、記録媒体はＦＤ４、ＣＤ−ＲＯＭ８に限定されるものではなく、磁気テープ、ＭＯ（Magnetic Optical disk）、ＭＤ（Mini Disc）、ＤＶＤ（Digital Versatile Disc）、ＩＣ（Integrated Circuit）カードなどであってもよい。
【００１９】
また、コンピュータ本体１は、ＣＰＵ１０、ＲＯＭ（Read Only Memory)１１、ＲＡＭ（Random Access Memory）１２およびハードディスク１３を含む。ＣＰＵ１０は、ディスプレイ装置２、ＦＤドライブ３、キーボード５、マウス６、ＣＤ−ＲＯＭ装置７、ネットワーク通信装置９、ＲＯＭ１１、ＲＡＭ１２またはハードディスク１３との間でデータを入出力しながら処理を行なう。ＦＤ４またはＣＤ−ＲＯＭ８に記録されたシミュレーションモデル生成プログラムは、ＣＰＵ１０によりＦＤドライブ３またはＣＤ−ＲＯＭ装置７を介してハードディスク１３に格納される。ＣＰＵ１０は、ハードディスク１３から適宜シミュレーションモデル生成プログラムをＲＡＭ１２にロードして実行することによってシミュレーションモデルの生成を行なう。
【００２０】
図２は、本発明の実施の形態におけるシミュレーションモデル生成装置を機能的構成によって示したブロック図である。上述のシミュレーションモデル生成プログラムによって、ＨＤＬ（ハードウェア記述言語）コード生成部２３の機能および保護機能付ＨＤＬコード生成部２６の機能が実現される。
【００２１】
入力パラメータファイル２１は、生成するモデルの構成や種類、有効期限などを定義したものである。ＨＤＬテンプレートファイル２２は、生成するモデルの構成や種類に対応したモデルのテンプレートが記述されたファイルである。ＲＯＭコード３０は、ＲＯＭなどのモデルに対して組み込む外部データである。
【００２２】
ＨＤＬコード生成部２３は、入力パラメータファイル２１およびＨＤＬテンプレートファイル２２などに基づいて、シミュレーションモデルのソースコードである未保護ＨＤＬソースコード２４を生成する。このソースコードは、保護対象のコードを含んでいる。
【００２３】
また、ＨＤＬコード生成部２３は、ＲＯＭコード３０をユーザタスク２５に組み込むために、ＲＯＭコード３０に対応する外部ファイル３１に変換する。このＲＯＭコード対応外部ファイル３１は、Ｃ言語によって記述される。
【００２４】
ユーザタスクテンプレートファイル２５は、保護するコードの機能と等価な機能を有するユーザタスクのソースコードのテンプレートファイルである。
【００２５】
保護機能付ＨＤＬコード生成部２６は、未保護ＨＤＬ２４のソースコードの一部または全部をユーザタスクに置き換えたＨＤＬコードである保護機能付ＨＤＬ２８を生成して出力する。
【００２６】
また、保護機能付ＨＤＬコード生成部２６は、ユーザタスクテンプレートファイル２５に基づいて、未保護ＨＤＬソースコード２４内の保護する範囲の記述をユーザタスクを呼び出す記述に変換し、変換された記述をＣ言語コンパイラでバイナリーコードに変換してユーザタスク（バイナリーコード）として出力する。このとき、保護機能付ＨＤＬコード生成部２６は、ＲＯＭコード対応外部ファイル３１をユーザタスクのソースコードに組み込む。
【００２７】
また、保護機能付ＨＤＬコード生成部２６は、生成したシミュレーションモデルを使用するために必要な有効期限を付加したライセンスファイル２７を生成して出力する。
【００２８】
保護機能付ＨＤＬコード生成部２６によって生成されたライセンスファイル２７、保護機能付ＨＤＬ２８およびユーザタスク（バイナリーコード）２９がシミュレーションモデルとしてユーザに提供される。ユーザは、これらのデータを論理シミュレータに与えてシミュレーションを行なう。
【００２９】
図３は、本発明の実施の形態におけるシミュレーションモデル生成装置の処理手順を説明するためのフローチャートである。まず、ＨＤＬコード生成部２３は、入力パラメータファイル２１を読み込む（Ｓ１１）。
【００３０】
図４は、入力パラメータファイル２１の記述例を示す図である。この入力パラメータファイル２１は、ＳＰＲＡＭおよびＲＯＭに対応するモジュールのパラメータが定義されたものであり、モジュール（ＨＤＬ）毎にワード数４１、ビット数４２、モジュールのタイプ４３、および有効期限４４が記述されている。
【００３１】
次に、ＨＤＬコード生成部２３は、入力パラメータファイル２１に記述されているモジュール（モデル）のタイプ４３に対応したＨＤＬテンプレートファイル２２を読み込む（Ｓ１２）。
【００３２】
図５は、ＳＰＲＡＭに対応するＨＤＬテンプレートファイル２２の記述例を示す図である。このＨＤＬテンプレートファイルは、ＳＰＲＡＭの入出力ピン名の宣言、入出力宣言、パラメータ宣言、ＳＰＲＡＭの動作記述などの記述４５を含んでいる。
【００３３】
図６は、ＲＯＭに対応するＨＤＬテンプレートファイル２２の記述例を示す図である。このＨＤＬテンプレートファイルは、ＲＯＭの入出力ピン名の宣言、入出力宣言、パラメータ宣言、ＲＯＭの動作記述などの記述４６を含んでいる。
【００３４】
ＨＤＬコード生成部２３は、入力パラメータファイル２１に記述されているモジュール名、ビット数、ワード数などの構成情報によって、ＨＤＬテンプレートファイル２２に記述される当該構成情報を置き換えることにより未保護ＨＤＬ（ソースコード）２４を生成する（Ｓ１３）。
【００３５】
図７は、ＨＤＬコード生成部２３によって生成されたＳＰＲＡＭに対応するＨＤＬソースコード２４の一例を示す図である。ＨＤＬテンプレートファイル２２においては、保護対象とする記述の範囲を、コメント行に定義したユニークなキーワードによって予め定義されている。図７は、このようなＨＤＬテンプレートファイル２２を用いて生成されたソースコードであり、“ＥＭＥＭ＿ＰＲＯＴＥＣＴ＿ＳＰＲＡＭ＿ＦＵＮＣ＿ＳＴＡＲＴ”および“ＥＭＥＭ＿ＰＲＯＴＥＣＴ＿ＳＰＲＡＭ＿ＦＵＮＣ＿ＥＮＤ”というキーワードを含むコメント行で囲まれる記述５２が、保護対象のＳＰＲＡＭの動作に関する記述であることを示している。なお、記述５１は、ＳＰＲＡＭの入出力ピン名を定義する記述である。
【００３６】
図８は、ＨＤＬコード生成部２３によって生成されたＲＯＭに対応するＨＤＬソースコード２４の一例を示す図である。“ＥＭＥＭ＿ＰＲＯＴＥＣＴ＿ＲＯＭＣＯＤＥ＿ＳＴＡＲＴ”および“ＥＭＥＭ＿ＰＲＯＴＥＣＴ＿ＲＯＭＣＯＤＥ＿ＥＮＤ”というキーワードを含むコメント行で囲まれる記述５４〜５５が、保護対象のＲＯＭの構成に関する記述であることを示している。また、“ＥＭＥＭ＿ＰＲＯＴＥＣＴ＿ＲＯＭＣＯＤＥ＿ＦＵＮＣ＿ＳＴＡＲＴ”および“ＥＭＥＭ＿ＰＲＯＴＥＣＴ＿ＲＯＭＣＯＤＥ＿ＦＵＮＣ＿ＥＮＤ”というキーワードを含むコメント行で囲まれる記述５６が、保護対象のＲＯＭの動作に関する記述であることを示している。
【００３７】
次に、ＨＤＬコード生成部２３は、モジュールのタイプがＲＯＭであるか否かを判定する（Ｓ１４）。モジュールのタイプがＲＯＭでなければ（Ｓ１４，Ｎｏ）、ステップＳ１６に処理が進む。
【００３８】
また、モジュールのタイプがＲＯＭであれば（Ｓ１４，Ｙｅｓ）、ＨＤＬコード生成部２３は、当該ＲＯＭコードファイル３０を読み込み、ＲＯＭコードに対応するＨＤＬコードをＨＤＬソースコード２４に組み込む。また、ＨＤＬコード生成部２３は、ユーザタスクに組み込むためのＣ言語記述ファイルであるＲＯＭコード対応外部ファイル３１を生成して出力する（Ｓ１５）。
【００３９】
図９は、ＲＯＭコード３０の記述例を示す図である。このＲＯＭコード３０は、ＨＤＬ内部に予め所望のデータを組み込む必要がある場合に参照される。図９においては、記述４７がＨＤＬソースコードを生成するために必要なデータである。
【００４０】
図１０は、ＨＤＬコード生成部２３によって生成されたＲＯＭコード対応外部ファイル３１の一例を示す図である。図９に示す記述４７が、Ｃ言語記述６０に変換されてＲＯＭコード対応外部ファイル３１に出力される。
【００４１】
ＨＤＬコード生成部２３は、ステップＳ１３およびＳ１５において生成されたＨＤＬソースコード２４を出力し（Ｓ１６）、入力パラメータファイル２１に定義されている全構成の処理を終了したか否かを判定する（Ｓ１７）。処理を終了していない構成がある場合には（Ｓ１７，Ｎｏ）、ステップＳ１１に戻って以降の処理を繰り返す。また、処理を終了していない構成がなければ（Ｓ１７，Ｙｅｓ）、処理を終了する。
【００４２】
図１１は、保護機能付ＨＤＬコード生成部２６の処理手順を説明するためのフローチャートである。まず、保護機能付ＨＤＬコード生成部２６は、ＨＤＬソースコード２４を読み込む（Ｓ２１）。
【００４３】
次に、保護機能付ＨＤＬコード生成部２６は、ＨＤＬソースコード２４のコメント行に保護対象コードの範囲を意味するキーワードが定義されている場合、当該箇所を削除して所望の機能を有するユーザタスクをその箇所に挿入する（Ｓ２２）。
【００４４】
図１２は、ユーザタスクテンプレート２５の記述例を示す図である。このユーザタスクテンプレート２５はＣ言語で記述されており、ＳＰＲＡＭのモジュールに対応するライセンスファイルの読み込みおよび解読処理の記述とＳＰＲＡＭの動作記述とを含んだ記述７１と、ＲＯＭのモジュールに対応するライセンスファイルの読み込みおよび解読処理の記述とＲＯＭの動作記述とを含んだ記述７２とを含む。
【００４５】
保護機能付ＨＤＬコード生成部２６は、入力パラメータファイル２１とユーザタスクテンプレート２５とに基づいて、当該ユーザタスクに組み込むビット数やワード数などの構成に対応したユーザタスクのソースコードに変換する。
【００４６】
図１３は、ユーザタスクソースコードの記述例を示す図である。記述７３は、図１２の記述７１のモジュール名を“ＥＳＰＡ７４ＰＢ００４１３ＺＺ１ＺＺ”に置き換え、このモジュール名に対応したライセンスファイルの読み込みおよび解読処理の記述とこのモジュール名に対応したＳＰＲＡＭの動作記述とに変換したものである。
【００４７】
また、記述７４は、図１２の記述７２のモジュール名を“ＢＲＭＡ２５Ｐ１４０１０５ＡＧＡＺＺ”に置き換え、このモジュール名に対応したライセンスファイルの読み込みおよび解読処理の記述とこのモジュール名に対応したＲＯＭの動作記述とに変換したものである。なお、この記述７４に、図１０に示すＲＯＭコード対応外部ファイル３１の記述６０が組み込まれる。
【００４８】
図１４は、図７に示す未保護ＨＤＬソースコード（ＳＰＲＡＭ）２４から生成された保護機能付ＨＤＬソースコードを示す図である。保護機能付ＨＤＬコード生成部２６は、図７に示す未保護ＨＤＬソースコード２４の保護対象記述である記述５２を削除し、削除された記述に相当する機能を有するユーザタスクを呼び出す記述、すなわち図１３の記述７３を呼び出す記述を挿入する。
【００４９】
図１５は、図８に示す未保護ＨＤＬソースコード（ＲＯＭ）２４から生成された保護機能付ＨＤＬソースコードを示す図である。保護機能付ＨＤＬコード生成部２６は、図８に示す未保護ＨＤＬソースコード２４の保護対象記述である記述５４〜５６を削除し、削除された記述に相当する機能を有するユーザタスクを呼び出す記述、すなわち図１３の記述７４を呼び出す記述を挿入する。
【００５０】
保護機能付ＨＤＬコード生成部２６は、このようにして生成した保護機能付ＨＤＬコード２８を出力する（Ｓ２３）。
【００５１】
次に、保護機能付ＨＤＬコード生成部２６は、入力パラメータファイル２１とユーザタスクのソースコードとを読み込み、ソースコードに定義されているユーザタスク名を各構成に対応したユーザタスク名に置き換え（Ｓ２４）、ユーザタスクのソースコードをＣ言語コンパイラによってコンパイルして、ユーザタスクのバイナリーコード２９を生成する（Ｓ２５）。
【００５２】
次に、保護機能付ＨＤＬコード生成部２６は、入力パラメータファイル２１に定義されているモジュール名とライセンス情報（有効期限）とに基づいてライセンスキーを生成する（Ｓ２６）。このライセンスキーは、入力パラメータファイル２１に定義されているモジュール名と有効期限とを暗号化した情報である。暗号化の方法はどのような方法であってもよく、特に限定されるものではない。
【００５３】
最後に、保護機能付ＨＤＬコード生成部２６は、各モジュールに対するライセンス情報（モジュール名、有効期限、ライセンスキー）をライセンスファイル２７に出力して（Ｓ２７）、処理を終了する。
【００５４】
図１６は、ライセンスファイル２７の記述例を示す図である。保護機能付ＨＤＬコード生成部２６は、図４に示す入力パラメータファイルの各モジュール名に対応する有効期限の記述４４を記述６１としてライセンスファイル２７に出力し、さらに生成したライセンスキーを記述６２として出力する。
【００５５】
図１７は、保護機能付ＨＤＬ２８に組み込まれたユーザタスクの処理手順を説明するためのフローチャートである。このユーザタスクの処理は、ユーザが保護機能付ＨＤＬ２８を用いてシミュレーションを行なう際に、保護機能付ＨＤＬ２８に組み込まれたユーザタスクが起動されることによって実現される。
【００５６】
まず、ユーザタスクは初期化を行なって（Ｓ３１）、ライセンスファイル２７が存在するか否かを判定する（Ｓ３２）。ライセンスファイル２７がなければ（Ｓ３２，Ｎｏ）、ライセンスエラーと判定して論理シミュレータにシミュレーションを停止または終了させるためのイベント信号を送信し（Ｓ３６）、処理を終了する。
【００５７】
ライセンスファイル２７があれば（Ｓ３２，Ｙｅｓ）、ユーザタスクは、ライセンスファイル２７を読み込んでライセンスキーを解読し（Ｓ３３）、解読した情報とモジュール名および有効期限とを比較することによって、ライセンスが有効か否かを判定する（Ｓ３４）。ライセンスが有効でなければ（Ｓ３４，Ｎｏ）、ライセンスエラーと判定して論理シミュレータにシミュレーションを停止または終了させるためのイベント信号を送信し（Ｓ３６）、処理を終了する。
【００５８】
また、ライセンスが有効であれば（Ｓ３４，Ｙｅｓ）、ユーザタスクは、モジュールに対応する動作処理を行なって（Ｓ３５）、処理を終了する。
【００５９】
以上説明したように、本実施の形態におけるシミュレーションモデル生成装置によれば、保護機能付ＨＤＬコード生成部２６が、未保護ＨＤＬソースコード２４に記述された保護対象のモジュールの構成や動作に関する記述を削除し、削除された記述に対応する機能を有するユーザタスクを呼び出す記述を挿入するようにした。ユーザにはユーザタスクのバイナリーコードのみが提供されるため、モジュールの構成や動作に関する記述を解読することができず、重要な技術やノウハウを保護することが可能となった。
【００６０】
また、ユーザタスクのソースコードを業界標準言語であるＣ言語やＰＬＩ言語で記述し、そのソースコードからバイナリーコードを生成するようにしたので、論理シミュレータに備えられたソースコードの保護機能を使用せずに、ほとんどの論理シミュレータ上で動作するＨＤＬコードを提供しつつ、モジュールの構成や動作などの重要な技術を保護することが可能となった。
【００６１】
また、モジュール毎に有効期限を規定したライセンスファイルをユーザに提供し、ユーザタスクがそのライセンスファイルに規定された有効期限を用いてライセンスが有効か否かを判定するようにしたので、第３者によってソースコードが無制限に使用されるのを防止することが可能となった。
【００６２】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６３】
１  コンピュータ本体、２  ディスプレイ装置、３  ドライブ、４  ＦＤ、５  キーボード、６  マウス、７  ＣＤ−ＲＯＭ装置、８  ＣＤ−ＲＯＭ、９  ネットワーク通信装置、１０  ＣＰＵ、１１  ＲＯＭ、１２  ＲＡＭ、１３  ハードディスク、２１  入力パラメータ、２２  ＨＤＬテンプレート、２３  ＨＤＬコード生成部、２４  未保護ＨＤＬ、２５  ユーザタスクテンプレート、２６  保護機能付ＨＤＬコード生成部、２７  ライセンスファイル、２８  保護機能付ＨＤＬ、２９  ユーザタスク（バイナリコード）、３０  ＲＯＭコード、３１  ＲＯＭコード対応外部ファイル。
【図１】
2011022690.tif 000003
【図２】
2011022690.tif 000004
【図３】
2011022690.tif 000005
【図４】
2011022690.tif 000006
【図５】
2011022690.tif 000007
【図６】
2011022690.tif 000008
【図７】
2011022690.tif 000009
【図８】
2011022690.tif 000010
【図９】
2011022690.tif 000011
【図１０】
2011022690.tif 000012
【図１１】
2011022690.tif 000013
【図１２】
2011022690.tif 000014
【図１３】
2011022690.tif 000015
【図１４】
2011022690.tif 000016
【図１５】
2011022690.tif 000017
【図１６】
2011022690.tif 000018
【図１７】
2011022690.tif 000019