(57)【要約】【課題】  複数のプログラムの動作比較のための作業を簡易化する。【解決手段】  同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む手段と、同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する手段と、上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する手段とを備える。【選択図】  図２
2006309666.tif 000002
【特許請求の範囲】
【請求項１】
同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む手段と、
同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する手段と、
上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する手段とを備えたことを特徴とするプログラム開発支援装置。
【請求項２】
上記変数のペアを指定する手段は、同じ値をとるべき変数のペアを複数個指定し、
上記変数の値を比較する手段は、上記変数の各ペアに対して、ペアを構成する2つの変数の値を比較することを特徴とする請求項１に記載のプログラム開発支援装置。
【請求項３】
読み込んだ上記第１のプログラムおよび上記第２のプログラムを解析し、変数リストを表示する手段を備えたことを特徴とする請求項１または２のいずれか一項に記載のプログラム開発支援装置。
【請求項４】
上記変数のペアを指定する手段は、上記第１のプログラムおよび上記第２のプログラムのソースコード表示画面上で変数のペアを指定することを特徴とする請求項１乃至３のいずれか一項に記載のプログラム開発支援装置。
【請求項５】
指定された上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数につき、上記第１のプログラムおよび上記第２のプログラムに対して変数の値を出力する関数を追加する手段を備えたことを特徴とする請求項１乃至４のいずれか一項に記載のプログラム開発支援装置。
【請求項６】
変数の値を出力する関数の追加された第１の実行用プログラムおよび第２の実行用プログラムを出力する手段を備えたことを特徴とする請求項５に記載のプログラム開発支援装置。
【請求項７】
変数の値を出力する関数の追加された第１の実行用プログラムおよび第２の実行用プログラムを実行する手段を備えたことを特徴とする請求項５に記載のプログラム開発支援装置。
【請求項８】
上記変数の値を比較する手段は、不一致が発生した箇所を表示してプログラムの実行を停止することを特徴とする請求項１乃至７のいずれか一項に記載のプログラム開発支援装置。
【請求項９】
上記第２のプログラムを修正する手段を備えたことを特徴とする請求項１乃至８のいずれか一項に記載のプログラム開発支援装置。
【請求項１０】
同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む工程と、
同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する工程と、
上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する工程とを備えたことを特徴とするプログラム動作比較方法。
【請求項１１】
同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む工程と、
同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する工程と、
上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する工程とを、システム設計記述デバッグ工程として備えたことを特徴とする半導体集積回路製造方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法に関する。
【背景技術】
【０００２】
半導体集積回路を設計する場合、一般に次のような作業が行われる。
（１）先ず、回路として実現したい部分のアルゴリズムを、Ｃ言語などの汎用プログラミング言語を用いて記述し、このプログラムを使ってアルゴリズムの正当性を確認する。
（２）その後、ＳｙｓｔｅｍＣなどのシステム設計言語を用いて、そのアルゴリズムを実現する回路を設計（記述）する。
（３）汎用プログラミング言語のプログラムの出力結果と、システム設計言語のプログラムの出力結果が同じかどうかを比較する。
【０００３】
ところで、回路開発の途中においては、汎用プログラミング言語により開発したプログラムの出力結果とシステム設計言語による回路（プログラム）の出力結果は一致しない場合が多い。これは回路設計に誤りがあるからである。両者の出力結果が一致しない場合は、その原因が回路のどこにあるのかを調べることになる。
【０００４】
通常よく行われる手法としては、汎用プログラミング言語のプログラム内に内部変数Ａの値を表示する「ｐｒｉｎｔｆ」（Ｃ言語における文字列出力関数）等の関数呼び出しを追加し、プログラムを実行する。そして、システム設計言語によるプログラム内においても、先の内部変数Ａと同じ値をとると思われる変数Ａ’の値を表示する同様な命令文を記述し、論理シミュレーションを実施する。その後、表示された内部変数Ａの値と、変数Ａ’の値とを目視にて比較し、同じかどうかを調べる。この作業を複数の変数に対して実施し、回路記述内のどのあたりから動作がおかしくなっているのかを調べる。そして、システム設計言語のプログラムを修正していき、正しい動作を行う最終的なプログラムを得る。
【０００５】
なお、出願人は出願時点までに本発明に関連する先行技術文献を発見することができなかった。よって、先行技術文献情報を開示していない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来における半導体集積回路の設計では上述したような作業が行われていたが、次のような問題点が指摘されていた。
【０００７】
（１）汎用プログラミング言語のプログラムとシステム設計言語のプログラムの両者に対して手作業により変数の値を表示する関数ないしは命令文の記述を追加する必要があり、手間のかかる作業であることから、設計工程ひいては半導体集積回路の製造工程全体の遅延を招く。
【０００８】
（２）変数の値を表示する命令文の記述を追加したシステム設計言語のプログラムに対して修正を行っていくことから、これらの命令文の入っていない正式のプログラムのヴァージョン管理が困難である。これらの追加記述は本来の動作を実現させるという意味では全く不要な記述であり、できることならこれらの追加記述は避けたいところである。
【０００９】
（３）追加記述の入ったプログラムから正式のプログラムに戻すためには、追加記述を探して削除していかなければならず、その作業も手間のかかるものであり、設計工程ひいては半導体集積回路の製造工程全体の遅延を招く。
【００１０】
なお、これらの問題点は、半導体集積回路の設計のための汎用プログラミング言語のプログラムとシステム設計言語のプログラムに限らず、同じ動作を実現するべき二つ以上のプログラムの動作を比較検証する必要がある場合に同様に言えることである。
【００１１】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、複数のプログラムの動作比較のための作業を簡易化することのできるプログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記の課題を解決するため、本発明にあっては、請求項１に記載されるように、同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む手段と、同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する手段と、上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する手段とを備えたプログラム開発支援装置を要旨としている。
【００１３】
また、請求項２に記載されるように、上記変数のペアを指定する手段は、同じ値をとるべき変数のペアを複数個指定し、上記変数の値を比較する手段は、上記変数の各ペアに対して、ペアを構成する2つの変数の値を比較するようにすることができる。
【００１４】
また、請求項３に記載されるように、読み込んだ上記第１のプログラムおよび上記第２のプログラムを解析し、変数リストを表示する手段を備えるようにすることができる。
【００１５】
また、請求項４に記載されるように、上記変数のペアを指定する手段は、上記第１のプログラムおよび上記第２のプログラムのソースコード表示画面上で変数のペアを指定するようにすることができる。
【００１６】
また、請求項５に記載されるように、指定された上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数につき、上記第１のプログラムおよび上記第２のプログラムに対して変数の値を出力する関数を追加する手段を備えるようにすることができる。
【００１７】
また、請求項６に記載されるように、変数の値を出力する関数の追加された第１の実行用プログラムおよび第２の実行用プログラムを出力する手段を備えるようにすることができる。
【００１８】
また、請求項７に記載されるように、変数の値を出力する関数の追加された第１の実行用プログラムおよび第２の実行用プログラムを実行する手段を備えるようにすることができる。
【００１９】
また、請求項８に記載されるように、上記変数の値を比較する手段は、不一致が発生した箇所を表示してプログラムの実行を停止するようにすることができる。
【００２０】
また、請求項９に記載されるように、上記第２のプログラムを修正する手段を備えるようにすることができる。
【００２１】
また、請求項１０に記載されるように、同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む工程と、同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する工程と、上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する工程とを備えたプログラム動作比較方法として構成することができる。
【００２２】
また、請求項１１に記載されるように、同じ動作を実現するべき第１のプログラムおよび第２のプログラムを読み込む工程と、同じ値をとるべき上記第１のプログラム内の第１の変数および上記第２のプログラム内の第２の変数のペアを指定する工程と、上記第１のプログラムおよび上記第２のプログラムを実行した時の上記第１の変数の値および上記第２の変数の値を比較する工程とを、システム設計記述デバッグ工程として備えた半導体集積回路製造方法として構成することができる。
【発明の効果】
【００２３】
本発明のプログラム開発支援装置、プログラム動作比較方法および半導体集積回路製造方法にあっては、複数のプログラムに対して同じ値をとるべき変数のペアを指定することで自動的に比較が行われるため、観測したい変数値の表示命令文を人手により追加記述することなく、観測したい変数の値を比較することが可能であり、複数のプログラムの動作比較のための作業を簡易化することができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の好適な実施形態につき図面を参照して説明する。
【００２５】
図１は本発明の一実施形態にかかる半導体集積回路の製造工程の例を示す図である。図１において、半導体集積回路の製造工程は、回路として実現したい部分のアルゴリズムをＣ言語などの汎用プログラミング言語を用いて記述したプログラムと、そのアルゴリズムを実現する回路をＳｙｓｔｅｍＣなどのシステム設計言語を用いて記述したプログラムとを動作比較することでデバッグを行う工程（ステップＳ１）と、デバッグの完了したシステム設計言語のプログラムに基づいてＲＴＬ（Register Transfer Level）による表現を生成（動作合成）する工程（ステップＳ２）と、生成されたＲＴＬに基づいて論理合成を行う工程（ステップＳ３）と、論理合成の結果に基づいて配置・配線を行う工程（ステップＳ４）と、配置・配線の結果に基づいてマスクを作成する工程（ステップＳ５）と、作成されたマスクによりウェハの製造およびチップの組み立てを行う工程（ステップＳ６）とを備えている。
【００２６】
図２は図１におけるシステム設計記述デバッグ工程（ステップＳ１）を実施するプログラム開発支援装置の構成例を示す図である。
【００２７】
図２において、第１のプログラム１は、回路として実現したい部分のアルゴリズムをＣ言語などの汎用プログラミング言語を用いて記述したプログラムであり、第２のプログラム２は、そのアルゴリズムを実現する回路をＳｙｓｔｅｍＣなどのシステム設計言語を用いて記述したプログラムである。図３は第１のプログラム１の例を示す図であり、内部変数としてＡ、Ｂ等が用いられている。図４は第２のプログラム２の例を示す図であり、内部変数としてＡ’、Ｂ’等が用いられている。なお、図３、図４は説明用に簡略化した例を示しており、標記についても実際の環境とは変えてある。例えば、実際には変数名の一部に「’」が用いられることはないが、変数ＡとＡ’との対応関係がわかるように「’」を付してある。また、Ｃ言語とＳｙｓｔｅｍＣを例に挙げたが、いかなるプログラミング言語あるいはハードウェア記述言語であってもかまわない。
【００２８】
図２に戻り、出力結果を比較したい、同じ動作を実現するべき第１のプログラム１および第２のプログラム２はソースコード読み込み部３により読み込まれる。
【００２９】
次いで、変数リスト表示部４は、ソースコード読み込み部３により読み込まれた第１のプログラム１および第２のプログラム２を解析し、変数リストを表示する。図５は変数リストの表示例を示す図であり、第１のプログラム１および第２のプログラム２のそれぞれにつき、出現順に変数名を表示している。
【００３０】
図２に戻り、変数対応付け部５は、同じ値をとるべき第１のプログラム１内の第１の変数および第２のプログラム２内の第２の変数のペアの指定を操作者から受け付ける。この場合、図５に示した変数リストを参考しながら指定してもよいし、参考にせずに指定してもよい。また、変数リストの表示上から変数のペアを指定させるようにしてもよいし、他の方法により指定させるようにしてもよい。図６はソースコード表示画面での変数ペア指定の例を示す図であり、画面上に第１のプログラム１および第２のプログラム２を並べて表示し、ＧＵＩ（Graphical User Interface）により変数Ａ、Ａ’を選択（マウスクリック等）することで強調表示１ａ、２ａを行うとともに、両者がペアとして指定されていることを示すペア表示ｂを行うようにしたものである。
【００３１】
図２に戻り、変数出力用関数追加部６は、変数対応付け部５により対応付けられた（指定された）第１のプログラム１内の第１の変数および第２のプログラム２内の第２の変数につき、第１のプログラム１および第２のプログラム２に対して変数の値を出力する関数を追加する。そして、ソースコード出力部７は、変数の値を出力する関数の追加された第１のプログラム１に対応する第１の実行用プログラム８および第２のプログラム２に対応する第２の実行用プログラム９を出力する。出力先としては、ディスク装置あるいはメモリのいずれでもよい。図７は第１の実行用プログラム８の例を示す図であり、変数Ａの値を計算する行の次に、変数Ａの値を出力する変数出力用関数８１が追加された状態を示している。図８は第２の実行用プログラム９の例を示す図であり、変数Ａ’の値を計算する行の次に、変数Ａ’の値を出力する変数出力用関数９１が追加された状態を示している。なお、ｐｒｉｎｔｆ関数により変数の値を出力させる例を示したが、使用するプログラミング言語に適した方法により実現することができる。例えば、デバッガのトレース機能を利用し、デバッガを制御するファイル等にトレース命令を記述することによっても実現することができる。
【００３２】
図２に戻り、プログラム実行部１０は、第１の実行用プログラム８および第２の実行用プログラム９を実行する。なお、第１の実行用プログラム８および第２の実行用プログラム９を順次に実行する場合と、同時並行的に実行する場合とがある。そして、第１の実行用プログラム８および第２の実行用プログラム９の実行により、追加された変数出力用関数８１、９１の動作によって変数の値が出力される。変数の値はディスプレイに出力して表示させるようにしてもよいし、ファイルもしくはメモリ上に出力するようにしてもよい。図９は第１の実行用プログラム８についての変数表示の例を示す図であり、第１の実行用プログラム８中の変数出力用関数８１（図７）が実行される都度に出力される変数の値が表示される。図１０は第２の実行用プログラム９についての変数表示の例を示す図であり、第２の実行用プログラム９中の変数出力用関数９１（図８）が実行される都度に出力される変数の値が表示される。
【００３３】
図２に戻り、変数出力結果比較部１１は、プログラム実行部１０で実行される第１の実行用プログラム８および第２の実行用プログラム９につき、ペアとして指定された変数の値を比較し、必要に応じて比較結果を表示する。なお、ペアとなっている比較の対象の情報は、変数対応付け部５から得ることができる。また、変数の値を比較は、第１の実行用プログラム８および第２の実行用プログラム９の実行後に一括して行う場合と、第１の実行用プログラム８および第２の実行用プログラム９を同時並行的に実行させながら行う場合とがある。図１１は不一致箇所でプログラムの一時停止を行うソースコード表示画面の例を示す図であり、変数の値の比較の結果、不一致が検出された時点でプログラムの実行を停止し、不一致のあった変数について強調表示１ｃ、２ｃを行うようにしている。
【００３４】
図２に戻り、プログラム修正部１２は、操作者の操作に基づき、変数の値の不一致が生じた原因を修正するためのプログラム修正を第２のプログラム２に対して行う。
【００３５】
このように、２つのプログラムに対して同じ値をとるべき変数のペアを指定することで、変数出力用関数が自動的に追加され、プログラム実行による変数の値の比較が自動的に行われるため、観測したい変数値の表示命令文を人手により追加記述することなく、観測したい変数の値を比較することが可能であり、プログラムの動作比較のための作業を簡易化することができる。また、変数出力用関数の含まれない正式なプログラムに対して修正を行うことから、ヴァージョン管理が適切に行えるとともに、変数出力用関数を削除する必要もなくなる。
【００３６】
なお、上述した実施形態では２つのプログラムソースコードを読み込んで動作比較する場合について説明したが、３つ以上のプログラムソースコードを対象とする場合にも本発明は適用可能である。
【００３７】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【図面の簡単な説明】
【００３８】
【図１】本発明の一実施形態にかかる半導体集積回路の製造工程の例を示す図である。
【図２】システム設計記述デバッグ工程を実施するプログラム開発支援装置の構成例を示す図である。
【図３】第１のプログラムの例を示す図である。
【図４】第２のプログラムの例を示す図である。
【図５】変数リストの表示例を示す図である。
【図６】ソースコード表示画面での変数ペア指定の例を示す図である。
【図７】第１の実行用プログラムの例を示す図である。
【図８】第２の実行用プログラムの例を示す図である。
【図９】第１の実行用プログラムについての変数表示の例を示す図である。
【図１０】第２の実行用プログラムについての変数表示の例を示す図である。
【図１１】不一致箇所でプログラムの一時停止を行うソースコード表示画面の例を示す図である。
【符号の説明】
【００３９】
１      第１のプログラム
２      第２のプログラム
３      ソースコード読み込み部
４      変数リスト表示部
５      変数対応付け部
６      変数出力用関数追加部
７      ソースコード出力部
８      第１の実行用プログラム
８１    変数出力用関数
９      第２の実行用プログラム
９１    変数出力用関数
１０    プログラム実行部
１１    変数出力結果比較部
１２    プログラム修正部
【図１】
2006309666.tif 000003
【図２】
2006309666.tif 000004
【図３】
2006309666.tif 000005
【図４】
2006309666.tif 000006
【図５】
2006309666.tif 000007
【図６】
2006309666.tif 000008
【図７】
2006309666.tif 000009
【図８】
2006309666.tif 000010
【図９】
2006309666.tif 000011
【図１０】
2006309666.tif 000012
【図１１】
2006309666.tif 000013