(57)【要約】【課題】動作記述からオーバーフローを起こす可能性がある箇所を静的に検出する。【解決手段】ビット幅が明記された信号情報１０４及び関数情報１０５、並びに動作情報１０６を含む動作記述１０８が入力される入力部１０１と、入力部１０１に入力された動作記述１０８から、信号情報１０４、関数情報１０５及び動作情報１０６を取得し、信号情報１０４及び関数情報１０５を動作情報１０６に代入して動作情報１０６に従って演算し、該演算結果と信号情報１０４または関数情報１０５とのビット幅を比較することにより、動作情報１０６におけるオーバーフローを検出するオーバーフロー検出部１０２と、動作記述１０８のうちオーバーフロー検出部１０２にてオーバーフローが検出された箇所を表示する出力部１０３とを有する。【選択図】図１
2010204720.tif 000002
【特許請求の範囲】
【請求項１】
ビット幅を特定可能な信号情報及び関数情報、並びに動作情報を含む動作記述が入力される入力手段と、
前記入力手段に入力された動作記述から、前記信号情報、前記関数情報及び前記動作情報を取得し、前記信号情報及び前記関数情報を前記動作情報に代入して前記動作情報に従って演算し、該演算結果と前記信号情報または前記関数情報とのビット幅を比較することにより、前記動作情報におけるオーバーフローを検出する検出手段と、
前記動作記述のうち前記検出手段にてオーバーフローが検出された箇所を表示する出力手段とを有する回路設計支援システム。
【請求項２】
請求項１に記載の回路設計支援システムにおいて、
前記信号情報及び関数情報に、前記ビット幅が明記されている回路設計支援システム。
【請求項３】
請求項１に記載の回路設計支援システムにおいて、
前記信号情報及び関数情報のビット幅は、前記動作記述の定義された型によって特定可能である回路設計支援システム。
【請求項４】
請求項１乃至３のいずれか１項に記載の回路設計支援システムにおいて、
前記出力手段は、前記検出手段にてオーバーフローが検出された箇所を強調表示する回路設計支援システム。
【請求項５】
請求項４に記載の回路設計支援システムにおいて、
前記出力手段は、前記検出手段にてオーバーフローが検出された箇所となる行の先頭に特定の記号を表示する回路設計支援システム。
【請求項６】
ビット幅を特定可能な信号情報及び関数情報、並びに動作情報を含む動作記述を受け付ける処理と、
前記動作記述から、前記信号情報、前記関数情報及び前記動作情報を取得する処理と、
前記信号情報及び前記関数情報を前記動作情報に代入して前記動作情報に従って演算する処理と、
該演算結果と前記信号情報または前記関数情報とのビット幅を比較することにより、前記動作情報におけるオーバーフローを検出する処理と、
前記動作記述のうち前記オーバーフローが検出された箇所を表示する処理とを有する回路設計支援方法。
【請求項７】
請求項６に記載の回路設計支援方法において、
前記信号情報及び関数情報に、前記ビット幅が明記されている回路設計支援方法。
【請求項８】
請求項６に記載の回路設計支援方法において、
前記信号情報及び関数情報のビット幅は、前記動作記述の定義された型によって特定可能である回路設計支援方法。
【請求項９】
請求項６乃至８のいずれか１項に記載の回路設計支援方法において、
前記動作記述のうち前記オーバーフローが検出された箇所を強調表示する回路設計支援方法。
【請求項１０】
請求項９に記載の回路設計支援方法において、
前記動作記述のうち前記オーバーフローが検出された箇所となる行の先頭に特定の記号を表示する回路設計支援方法。
【請求項１１】
コンピュータに、
ビット幅を特定可能な信号情報及び関数情報、並びに動作情報を含む動作記述を受け付ける手順と、
前記動作記述から、前記信号情報、前記関数情報及び前記動作情報を取得する手順と、
前記信号情報及び前記関数情報を前記動作情報に代入して前記動作情報に従って演算する手順と、
該演算結果と前記信号情報または前記関数情報とのビット幅を比較することにより、前記動作情報におけるオーバーフローを検出する手順と、
前記動作記述のうち前記オーバーフローが検出された箇所を表示する手順とを実行させるためのプログラム。
【請求項１２】
請求項１１に記載のプログラムにおいて、
前記信号情報及び関数情報に、前記ビット幅が明記されているプログラム。
【請求項１３】
請求項１１に記載のプログラムにおいて、
前記信号情報及び関数情報のビット幅は、前記動作記述の定義された型によって特定可能であるプログラム。
【請求項１４】
請求項１１乃至１３のいずれか１項に記載のプログラムにおいて、
コンピュータに、
前記動作記述のうち前記オーバーフローが検出された箇所を強調表示する手順を実行させるためのプログラム。
【請求項１５】
請求項１４に記載のプログラムにおいて、
コンピュータに、
前記動作記述のうち前記オーバーフローが検出された箇所となる行の先頭に特定の記号を表示する手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計支援システム、回路設計支援方法及びプログラムに関し、特に、動作記述から回路を生成する動作合成において、入力する動作記述の不具合を検出する機能を有する回路設計支援システム、回路設計支援方法及びプログラムに関する。
【背景技術】
【０００２】
ＬＳＩ設計においては、ＲＴＬ記述よりも抽象度が高い動作記述でハードウェアの動作仕様を記述し、動作合成ツールでＲＴＬ記述を自動生成することで設計期間の短縮を実現している。このような動作記述を用いたＬＳＩ設計が行われている（例えば、特許文献１参照。）。
【０００３】
このような動作記述では、ＲＴＬ記述と同様に各変数のビット幅を明記するが、この変数のビット幅を、誤って必要なビット幅よりも小さなビット幅で宣言してしまった場合、値を代入したときに上位ビットが削れるオーバーフローが発生してしまい、期待した動作にならない。
【０００４】
このような間違いを検出する方法としては、実際に動作記述に入力を与えてシミュレーションを行い、出力が期待した値になっているかを確認する方法が行われている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平５−１８１９３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したように、実際に動作記述に入力を与えてシミュレーションを行い、出力が期待した値になっているかを確認する方法においては、入力する値によっては該当箇所がオーバーフローを起こさないため、検出をもらすことがあるという問題点がある。
【０００７】
本発明は、上述したような技術が有する問題点に鑑みてなされたものであって、動作記述からオーバーフローを起こす可能性がある箇所を静的に検出することができる回路設計支援システム、回路設計支援方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明は、
ビット幅を特定可能な信号情報及び関数情報、並びに動作情報を含む動作記述が入力される入力手段と、
前記入力手段に入力された動作記述から、前記信号情報、前記関数情報及び前記動作情報を取得し、前記信号情報及び前記関数情報を前記動作情報に代入して前記動作情報に従って演算し、該演算結果と前記信号情報または前記関数情報とのビット幅を比較することにより、前記動作情報におけるオーバーフローを検出する検出手段と、
前記動作記述のうち前記検出手段にてオーバーフローが検出された箇所を表示する出力手段とを有する。
【発明の効果】
【０００９】
本発明は、上記のように構成されているため、動作記述からオーバーフローを起こす可能性がある箇所を静的に検出することができ、それにより、動作記述上のどの箇所でオーバーフローが起こる可能性があるかがシミュレーションをしないでもわかるようになり、間違ってオーバーフローを起こしていないかを確認することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の回路設計支援システムの実施の一形態を示すブロック図である。
【図２】図１に示した回路設計支援システムにおける回路設計支援方法を説明するためのフローチャートである。
【図３】図１に示した入力部に入力される動作記述の一例を示す図である。
【図４】図１に示したオーバーフロー検出部にて取得された情報を示す図であり、（ａ）は信号情報を示す図、（ｂ）は関数情報を示す図、（ｃ）は動作情報を示す図である。
【図５】図１に示した違反情報の一例を示す図である。
【図６】図１に示した出力部から表示出力される動作記述の例を示す図である。
【発明を実施するための最良の形態】
【００１１】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１２】
図１は、本発明の回路設計支援システムの実施の一形態を示すブロック図である。
【００１３】
本形態は図１に示すように、信号情報１０４、関数情報１０５及び動作情報１０６を含む動作記述１０８が入力され、この動作記述１０８を受け付ける入力部１０１と、入力部に入力されて受け付けられた動作記述１０８から、信号情報１０４、関数情報１０５及び動作情報１０６を取得し、信号情報１０４及び関数情報１０５を動作情報１０６に代入して動作情報１０６に従って演算し、その演算結果と信号情報１０４または関数情報１０５とを比較することにより、動作情報１０６におけるオーバーフローを検出するオーバーフロー検出部１０２と、動作記述１０８のうちオーバーフロー検出部１０２にてオーバーフローが検出された箇所となる行に特定の記号が表示された動作記述１０９を表示する出力部１０３とから構成されている。
【００１４】
以下に、上記のように構成された回路設計支援システムにおける回路設計支援方法について説明する。
【００１５】
図２は、図１に示した回路設計支援システムにおける回路設計支援方法を説明するためのフローチャートである。
【００１６】
動作記述１０８が入力部１０１に入力されると、入力部１０１は、この動作記述１０８を受け付ける（ステップＳ１）。
【００１７】
図３は、図１に示した入力部１０１に入力される動作記述１０８の一例を示す図である。
【００１８】
図３に示すように、図１に示した入力部１０１に入力される動作記述１０８は、ビット幅が明記された信号情報１０４及び関数情報１０５、並びに動作情報１０６が含まれている。
【００１９】
図３に示したような動作記述１０８が入力部１０１にて受け付けられると、オーバーフロー検出部１０２は、まず、入力部１０１にて受け付けられた動作記述１０８から、信号情報１０４、関数情報１０５及び動作情報１０６を１文ずつ取得する（ステップＳ２）。
【００２０】
図４は、図１に示したオーバーフロー検出部１０２にて取得された情報を示す図であり、（ａ）は信号情報１０４を示す図、（ｂ）は関数情報１０５を示す図、（ｃ）は動作情報１０６を示す図である。
【００２１】
図４に示すように、オーバーフロー検出部１０２は、入力部１０１にて受け付けられた動作記述１０８から、信号情報１０４関数情報１０５及び動作情報１０６を取得する。
【００２２】
次に、オーバーフロー検出部１０２は、取得した信号情報１０４及び関数情報１０５を動作情報１０６に代入し、動作情報１０６に従って演算を行う（ステップＳ３）。
【００２３】
そして、オーバーフロー検出部１０２は、演算結果のビット幅とその演算にて動作情報１０６に代入した信号情報１０４や関数情報１０５のビット幅とを比較し、比較した結果、演算結果が、信号情報１０４や関数情報１０５のビット幅で表せる範囲を超えている場合、その箇所をオーバーフローとして検出する（ステップＳ４）。
【００２４】
例えば、図３に示した動作記述におけるａ＜＜３は、変数ａは３ビットのsignedの変数であるため、計算結果は−３２以上２４以下になる。同様に、ｂ＞＞２は、ｂは１０ビットのunsignedの変数であるため、計算結果は０以上２５５以下になる。そして、それらの和である（（ａ＜＜３）＋（ｂ＞＞２））は−３２以上２７９以下になる。オーバーフロー検出部１０２においては、この値が、信号情報１０４による代入先の変数ｃが表すことができる値の範囲に収まっていない場合にオーバーフロー違反として違反情報に登録する。この例では、信号情報１０４による変数ｃはsignedの９ビットであるため、−２５６以上２５５以下の範囲しか表せないこととなり、オーバーフローとして違反情報に登録する。同様に、関数の実引数における計算結果について仮引数の変数への代入においてもオーバーフローが起こらないか、また、return文における計算結果についても関数の返り値への代入においてオーバーフローが起こらないかのチェックを行いオーバーフローが起こる場合は違反情報１０７に登録する。
【００２５】
図５は、図１に示した違反情報１０７の一例を示す図である。
【００２６】
図５に示すように、オーバーフロー検出部１０２においては、オーバーフローが検出された箇所を違反情報１０７に登録する。
【００２７】
その後、出力部１０３において、動作記述１０８と違反情報１０７とに基づいて、動作記述１０８に対して、オーバーフローが検出されて違反情報１０７として登録された箇所となる行を強調表示する（ステップＳ５）。
【００２８】
図６は、図１に示した出力部１０３から表示出力される動作記述１０９の例を示す図である。
【００２９】
図６に示すように、出力部１０３においては、動作記述１０９の違反箇所以外の行、すなわちオーバーフローが検出されなかった行の先頭にはタブを挿入し、また、違反箇所の行、すなわちオーバーフローが検出された行には、特定の記号となる“!!”とタブを挿入した動作記述１０９を表示出力する。
【００３０】
これにより、動作記述１０９のうち、違反箇所、すなわちオーバーフローが起こる行を視覚的に認識することができる。
【００３１】
なお、本形態においては、ビット幅が明記された信号情報１０４及び関数情報１０５、並びに動作情報１０６が含まれた動作記述１０８が入力され、このビット幅を用いてオーバーフローを検出するものを例に挙げて説明したが、その他に、定義された型によってビット幅が特定可能であり、その型による動作記述が入力され、この型で宣言されたビット幅を取得し、取得したビット幅を用いてオーバーフローを検出するもの等、ビット幅を特定可能な信号情報及び関数情報、並びに動作情報を含む動作記述が入力され、そのビット幅を用いてオーバーフローを検出するものであれば、本発明を適用することができる。
【００３２】
また、本発明においては、回路設計支援システム内の処理は上述の専用のハードウェアにより実現されるもの以外に、その機能を実現するためのプログラムを回路設計支援システムにて読取可能な記録媒体に記録し、この記録媒体に記録されたプログラムを回路設計支援システムに読み込ませ、実行するものであっても良い。回路設計支援システムにて読取可能な記録媒体とは、ＩＣカードやメモリカード、あるいは、フロッピーディスク（登録商標）、光磁気ディスク、ＤＶＤ、ＣＤなどの移設可能な記録媒体の他、回路設計支援システムに内蔵されたＨＤＤ等を指す。この記録媒体に記録されたプログラムは、例えば、制御ブロックにて読み込まれ、制御ブロックの制御によって、上述したものと同様の処理が行われる。
【符号の説明】
【００３３】
１０１    入力部
１０２    オーバーフロー検出部
１０３    出力部
１０４    信号情報
１０５    関数情報
１０６    動作情報
１０７    違反情報
１０８，１０９    動作記述
【図１】
2010204720.tif 000003
【図２】
2010204720.tif 000004
【図３】
2010204720.tif 000005
【図４】
2010204720.tif 000006
【図５】
2010204720.tif 000007
【図６】
2010204720.tif 000008