(57)【要約】【課題】冗長化を防止しつつ、デフォルトが生じないパターン生成プログラムの最適化方法を提供する。【解決手段】上記課題は、パターン生成プログラムに基づいて信号パターンを生成する生成手段と、前記信号パターンを格納する記憶手段と、前記記憶手段に格納された前記信号パターンを所定周期毎に出力する出力手段とを備える信号生成装置に用いられる前記パターン生成プログラムの最適化方法であって、前記パターン生成プログラムの命令ごとに、当該命令が展開必要か判断する判断ステップと、前記命令を展開する展開ステップとを含む最適化方法により解決される。【選択図】図１
2006058048.tif 000002
【特許請求の範囲】
【請求項１】
パターン生成プログラムに基づいて信号パターンを生成する生成手段と、
前記信号パターンを格納する記憶手段と、
前記記憶手段に格納された前記信号パターンを所定周期毎に出力する出力手段とを備える信号生成装置に用いられる前記パターン生成プログラムの最適化方法であって、
前記パターン生成プログラムの命令ごとに、当該命令が展開必要か判断する判断ステップと、
前記命令を展開する展開ステップとを含む最適化方法。
【請求項２】
前記判断ステップが、
前記命令がサブルーチン呼出命令か否かを判断するステップと、
前記命令がサブルーチン呼出命令である場合には、
サブルーチン実行中における、前記記憶手段に格納された前記信号パターンの数の変化量を求めるステップと、前記変化量が所定値以下の場合に前記サブルーチンの展開が必要と判断するステップとを含むことを特徴とする請求項１に記載の最適化方法。
【請求項３】
前記判断ステップが、
前記命令が繰返命令か否かを判断するステップと、
前記命令が繰返命令である場合には、
繰返実行前後における、前記記憶手段に格納された前記信号パターン数の変化量を求めるステップと、
繰返内容の実行中における、前記記憶手段に格納された前記信号パターンの数の最小値を求めるステップと、
前記変化量および前記最小値が所定値以下の場合に前記繰返命令の展開が必要と判断するステップとを含むことを特徴とする請求項１に記載の最適化方法。
【請求項４】
前記展開ステップが、
デフォルトが発生しない繰返終了命令の最大実行回数を求めるステップと、
前記最大実行回数に基づいて前記繰返命令の前後に前記繰返内容を追加するステップとを含むことを特徴とする請求項３に記載の最適化方法。
【請求項５】
前記命令が最適化可能か否かの判定を行うステップと、
前記命令が最適化できない場合には、エラー処理を行うステップとを、さらに、含むことを特徴とする請求項１から４のいずれかに記載の最適化方法。
【請求項６】
コンピュータに、請求項１から５のいずれかに記載の最適化方法を実行させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを格納するコンピュータ読み取り可能な記録媒体。
【請求項８】
パターン生成プログラムに基づいて信号パターンを生成する生成手段と、
前記信号パターンを格納する第１の記憶手段と、
前記パターン生成プログラムの命令ごとに、当該命令が展開必要か判断する判断ステップと  前記命令を展開する展開ステップとを含む最適化方法を実行させるためのプログラムを格納した第２の記憶手段と、
前記第１の記憶手段に格納された前記信号パターンを所定周期毎に出力する出力手段とを備えた信号生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタルパターン信号生成装置のパターン生成プログラムの最適化に関し、特に先入れ先出しメモリ（ＦＩＦＯメモリ）を備える信号生成装置のパターン生成プログラムの最適化方法、プログラムおよび信号生成装置に関する。
【背景技術】
【０００２】
ディジタル信号処理機能をもつ半導体素子やボードなどのディジタル回路は、一般に、外部から所定パターンのディジタル信号を入力して、回路の動作制御を行ったり、出力信号を検出して機能試験を行うことが多い。このような制御や試験では、外部入力信号として複数種の信号パターンが必要となることが多く、また制御条件や試験条件の変更に対応して柔軟に信号パターンを変更することが必要となる。このため、ディジタル信号パターンを生成する信号生成装置は、生成する信号パターンを記述したプログラムをプロセッサで実行することによって信号パターンを生成する方式が主流である。
【０００３】
図２に従来の代表的な信号生成装置を示す。信号生成装置２６は、メモリ２０、メモリ２０に接続されたプロセッサ２３、およびプロセッサ２３の出力が接続された信号出力回路２４で構成されている。メモリ２０には、信号パターンを記述したパターン生成プログラム２１と基本となる信号パターンのパターンデータ２２が格納されている。パターン生成プログラム２１とパターンデータ２２の一例を、それぞれ図３（ａ）および（ｂ）に示す。プロセッサ２３は、クロック信号に同期してパターン生成プログラム２１を実行して信号パターンを生成する。信号出力回路２４は、プロセッサ２３により生成された信号パターンを、制御や試験の対象となるデバイス２５にあった信号レベルの電気信号に変換してデバイス２５に出力する。
【０００４】
次に、図２の信号生成装置２５の動作を、図３のパターン生成プログラムの実行時の動作を例に説明を行う。図４はクロック信号ごとの実行命令を表した図であり、信号パターンがデバイス２５に出力されるクロックを下線で示した。なお、図３（ａ）のプログラムにおいて、ＤＡＴＡ命令は、パターンデータ２２の中から引数で示されるパターンデータを生成する命令である。ＬＯＯＰ命令は、ＬＯＯＰ命令からＬＯＯＰ  ＥＮＤ命令までの命令を引数の回数だけ繰り返す繰返命令である。ＪＳＲ命令は、引数のサブルーチンの実行命令である。ＳＴＯＰ命令は、プログラムの終了を示す命令である。
【０００５】
パターン生成プログラムが実行されると、最初のクロック（クロック１）でステップ３０のＤＡＴＡ命令が実行され、プロセッサ２３がパターンデータ２２のＤＡＴＡ０に格納されている信号パターン「００００」を生成する。次のクロック（クロック２）では、ステップ３１のＬＯＯＰ命令が実行され、ＬＯＯＰ命令（ステップ３１）からＬＯＯＰ  ＥＮＤ命令（ステップ３４）までのステップを３回繰り替えすように設定される。クロック３では、ステップ３２のＪＳＲ命令が実行され、サブルーチンＳＵＢ１（ステップ３６、３７）が呼び出される。この呼出によって、クロック４ではステップ３６のＤＡＴＡ命令が実行され、パターンデータ２２のＤＡＴＡ１に格納されている信号パターン「１０１０」が生成される。クロック５では、ステップ３７のＲＴＮ命令が実行され、サブルーチンからメインルーチンへ復帰する。
【０００６】
クロック６から８まではサブルーチンＳＵＢ２について、同様な動作を行ってパターンデータ２２のＤＡＴＡ２に格納されている信号パターン「１１１１」が生成される。クロック９ではＬＯＯＰ  ＥＮＤ命令により、繰返回数の判定と繰返処理が行われる。この時点では、ステップ３１〜３４の繰返しは１回しか実行されていないため、ステップ３２に戻って２回目の繰返内容を実行する。クロック１０〜１６の２回目の繰返し、クロック１７〜２３の３回目の繰返しが終了すると、クロック２４でＳＴＯＰ命令により、パターン生成プログラムが終了する。
【０００７】
図４から明らかなように、図３（ａ）のパターン生成プログラムの実行には２４クロックの時間が必要となる。この間、下線で示したクロック１、４、７、１１、１４、１８、２１のときに信号パターンが生成される。ここで、各信号パターンが生成されるタイミングに着目すると、クロック１の信号パターンが生成されてからクロック４の信号パターンが生成されるまでの時間間隔は３クロックであるのに対して、クロック７の信号パターンが生成されてからクロック１１の信号パターンが生成されるまでの時間間隔は４クロックである。このように、図２の信号生成装置２６で図３のパターン生成プログラムを実行すると、パターン生成間隔が一定間隔にならないという問題が生ずる。
【０００８】
この問題に対して、図５に示すようにＤＡＴＡ命令のみでパターン生成プログラム２１を記述することにより、パターン生成間隔を一定にする方法が考えられる。この方法では、ＤＡＴＡ命令間に他の命令の処理を行う必要がないため、ＤＡＴＡ命令の処理時間（１クロック）と同じ時間間隔で信号パターンを出力することができる。しかし、信号パターンの長さに比例してパターン生成プログラム２１が長くなるため、同一の信号パターンを幾度も繰返す場合には、パターン生成プログラムが冗長となり、大容量のメモリ２０が必要となるという問題がある。
【０００９】
また、特許文献１記載の技術のように、プログラム中に所定時間の待機命令（ＮＯＰ命令）を適切に配置することにより、信号パターン発生周期を一定にする技術がある。しかし、命令の実行に必要な時間は、パターン生成プログラム２１のコンパイラやプロセッサ２３の種類毎に異なるため、信号生成装置２６の特性に応じたパターン生成プログラム２１を装置毎に作成せねばならない。また、信号生成タイミングを考慮しながらプログラミングを行う必要があるため、高度なプログラミング技術が必要となる。さらに、この方法では、最も信号生成時間間隔が長いタイミングに残り信号パターンの生成タイミングをあわせることになるため、信号パターンの最大周波数が、クロック信号周波数の数分の一から数十分の一になってしまうという問題がある。
【００１０】
そこで、図６の信号生成装置６０ように、出力段にＦＩＦＯメモリ６２を設ける方法がある。信号生成装置６０と図２の信号生成装置２６とは、プロセッサ６１の出力と信号出力回路２４の間にＦＩＦＯメモリ６２が設けられていることと、ＦＩＦＯメモリ６２が満杯になったときには、プロセッサ６１が動作を停止する機能を有する点が異なるが、他の構成要素の動作は同じである。
【００１１】
信号生成装置６０は、デバイス２５への信号パターン出力に先立って信号パターンを生成し、ＦＩＦＯメモリ６２に所定数の信号パターンが格納された時点で、順次、信号パターンを出力する。プロセッサ６１の信号生成速度よりＦＩＦＯメモリ６２からの出力速度の方が速い場合には、プロセッサ６１は再停止することなく信号生成を行うが、ＤＡＴＡ命令が連続してＦＩＦＯメモリ６２が満杯になった場合には、プロセッサ６１はＦＩＦＯメモリ６２に空き容量ができるまで動作を停止する。
【００１２】
このように、図６の信号生成装置６０では、プロセッサ６１が生成した信号パターンをいったんＦＩＦＯメモリ６２に格納し、ＦＩＦＯメモリ６２から一定周期でデバイス２５に信号パターンを出力するため、パターン生成プログラム２１の作成の際に、信号生成タイミングを考慮する必要がない。また、予めＦＩＦＯメモリ６２に信号パターンを格納してから信号出力を開始するため、プロセッサ６１の図２の信号生成装置２６よりも高い周波数で信号パターンを出力することが可能となる。
【００１３】
【特許文献１】特開２０００−１６２２８７号公報
【特許文献２】特開平１０−１６０８０８号公報
【特許文献３】特開平１１−２６６８号公報
【特許文献４】特開平１１−６４４６９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
ところで、ＦＩＦＯメモリ６２の容量は有限であることから、複雑な構造をもつパターン生成プログラム２１を実行すると、信号パターンの生成が追いつかずに、プログラムの実行途中でＦＩＦＯメモリ６２が空の状態になってしまい、一定周期で信号パターンを出力することができなくなってしまう（デフォルト）。デフォルトを防止するため大容量のＦＩＦＯメモリ６２を搭載すると、装置の大型化、複雑化、コストアップを招く。そこで、ＦＩＦＯメモリ６２の容量やパターン生成とパターン出力の速度比などのシステム特性にあわせて、パターン生成プログラム２１を最適化する必要がある。
【課題を解決するための手段】
【００１５】
本発明は、パターン生成プログラムに基づいて信号パターンを生成する生成手段と、前記信号パターンを格納する記憶手段と、前記記憶手段に格納された前記信号パターンを所定周期毎に出力する出力手段とを備える信号生成装置に用いられる前記パターン生成プログラムの最適化方法であって、前記パターン生成プログラムの命令ごとに、当該命令が展開必要か判断する判断ステップと、前記命令を展開する展開ステップとを含む最適化方法により、上記課題を解決する。
【００１６】
すなわち、パターン生成プログラム２１を実行する前に、プログラムの各命令ごとに、該命令の実行によるＦＩＦＯメモリ６２のパターン格納数の変化を調べて、デフォルトが起こる可能性がある命令のみを簡素化する。繰返命令やサブルーチン命令は、命令自体だけでデフォルトの有無や最適化構造を判断することができないため、繰返内容や呼び出されるサブルーチンの内容を調べて判断を行う必要がある。
【発明の効果】
【００１７】
本発明により、パターン生成プログラムを、冗長化を防止しつつ、デフォルトを解消することができる。
【実施例】
【００１８】
以下に図面を参照して、本発明の好適実施態様となる信号生成装置について詳細に説明する。
図７は、本発明を利用した信号生成装置８０の概略構成図である。図７の各構成要素うち、図２や図６の構成要素と同等または類似の機能を有するものについては、同じ符号をふった。
信号生成装置８０は、メモリ８１（第２の記憶手段）と、メモリ８１に接続されたプロセッサ６１（生成手段）と、プロセッサ８１の出力に接続されたＦＩＦＯメモリ６２（第１の記憶手段）と、ＦＩＦＯメモリ６２の出力に接続された信号出力回路２４（出力手段）により構成されている。信号生成装置８０の出力は、デバイス２５の信号パターン入力に接続されている。  
【００１９】
メモリ８１には、信号パターンを記述したパターン生成プログラム２１と、基本信号パターンのパターンデータ２２と、本発明の方法によりパターン生成プログラム２１を最適化するための最適化プログラム８２が格納されている。パターン生成プログラム２１とパターンデータ２２の一例を、それぞれ図３（ａ）および（ｂ）に示す。
【００２０】
プロセッサ６１は、クロック信号に従って、パターン生成プログラム２１や最適化プログラム８２を実行する。本実施例で用いたプロセッサ６１は、いずれの命令も１クロックで処理する機能を有する。本実施例の信号生成装置８０のプロセッサ６１も、図６の信号生成装置６０のと同様に、ＦＩＦＯメモリ６２が満杯のときには、空き容量ができるまで動作を停止する機能を有する。
【００２１】
ＦＩＦＯメモリ６２は、プロセッサ６１からの書き込み要求に応じて、クロック信号に同期してプロセッサ６１からの信号パターンを入力して格納する。また、信号出力回路２４は、読み出しクロックに同期して格納された信号パターンを順次出力する。本実施例では、プロセッサ６１のクロック信号を１／２に分周（半分の周波数）したクロック信号を読み出しクロックとして利用している。なお、読み出しクロックの生成方法については、プロセッサ６１のクロック信号を分周してそのまま利用してもよいし、プロセッサ６１とクロック信号と非同期の信号を利用してもよい。
【００２２】
次に、図７の信号生成装置８０の動作を説明する。はじめに、プロセッサ６１が最適化プログラム８２を実行し、パターン生成プログラム２１の実行中にデフォルトが発生しないように、パターン生成プログラム２１の最適化を行う。次に、プロセッサ６１が最適化されたパターン生成プログラム２１を実行し、信号パターンを生成する。生成された信号パターンは、順次、ＦＩＦＯメモリ６２に格納される。ＦＩＦＯメモリ６２に所定の数の信号パターンが格納されたところで、信号出力回路２４はデバイス２５への信号出力を開始する。ＤＡＴＡ命令が連続してＦＩＦＯメモリ６２が満杯になった場合には、ＦＩＦＯメモリ６２に空き容量ができるまでプロセッサ６１の動作を再停止する。以上により、プロセッサ６１の信号パターン生成タイミングに拘わらず、ＦＩＦＯメモリ６２の読み出しクロックによる一定周期の信号パターンを得ることができる。
【００２３】
なお、以下の説明において、サブルーチン呼出命令（ＪＳＲ命令）自体をサブルーチンのヘッダ、復帰命令（ＲＴＮ命令）をサブルーチンのテイル、復帰命令以外のサブルーチンの内容をサブルーチンのボディーと呼ぶ。また、繰返命令（ＬＯＯＰ命令）自体を繰返のヘッダ、繰返終了命令（ＬＯＯＰ  ＥＮＤ命令）を繰返のテイル、ＬＯＯＰ命令とＬＯＯＰ  ＥＮＤ命令の間にあるル繰返内容を繰返のボディーと呼ぶ。さらに、パターン生成命令（ＤＡＴＡ命令）は、ＤＡＴＡ命令自体をボディーと呼ぶ。
【００２４】
サブルーチンのヘッダ、ボディーおよびテイルを処理する間に、ＦＩＦＯメモリ６２に格納される信号パターンの数の変化量をそれぞれＨｊ、Ｂ、Ｔｊと表す。ＦＩＦＯメモリ６２に格納される信号パターンの数の変化量とは、当該命令の実行中にＦＩＦＯメモリ６２に格納される数から、信号出力回路２４により出力される数を差し引いた理論値である。本実施例の信号生成装置８０では、いずれの命令も１クロックで実行され、２クロック毎に信号出力回路２４から信号パターンから出力されることから、ＤＡＴＡ命令では０．５増加し、ＤＡＴＡ命令以外の命令では０．５減少することになる。従って、ＨｊとＴｊは−０．５の固定値、Ｂはサブルーチンの内容によって変動する変数である。
【００２５】
同様に、繰返のヘッダ、ボディーおよびテイルにおいてＦＩＦＯメモリ６２に格納される信号パターンの数の変動量を、それぞれＨｌ、Ｂ、Ｔｌと表す。本実施例においては、Ｈｌ＝Ｔｌ＝−０．５の固定値であり、Ｂは繰返内容により変動する変数である。さらに、ＤＡＴＡ命令のボディーをＢｄと表す。Ｂｄは単一命令であることから固定値（＋０．５）である。以上をまとめたものを表１に示す。
【００２６】
【表１】
2006058048.tif 000003
【００２７】
次に、図３（ａ）のパターン生成プログラム２１の最適化を例にとり、図１、図８および図９のフローチャート参照下に、最適化プログラム８２による最適化方法について説明を行う。図１は、最適化プログラム８２のメインルーチンのフローチャートである。図８は、サブルーチン呼出命令（ＪＳＲ命令）について展開が必要が判断し、必要であれば展開を実施するＪＳＲルーチン１０３のフローチャートである。図９は、繰返命令（ＬＯＯＰ命令）について、展開が必要か否かを判断し、必要であれば展開を実施するＬＯＯＰルーチン１０４のフローチャートである。
【００２８】
なお、以下の説明おいて、図３、図４等のようなプログラムにおけるステップ番号と、図１、図６等のようなフローチャートにおけるステップ番号の混同を避けるため、フローチャートにおけるステップ番号を「フローチャート１００」のように表記する。
【００２９】
フローチャートの変数のうち、ＲはＦＩＦＯメモリ６２に格納されている信号パターンの数である。通常はパターン生成プログラム２１実行時点でＦＩＦＯメモリ６２は空であるためＲは０に初期設定されるが、いくつかのパターン生成プログラムを連続して実行する場合や予めＦＩＦＯメモリ６２に所定数の信号パターンを格納してからプログラムを実行する場合には、Ｒ≠０となる。本実施例ではＦＩＦＯメモリ６２に２つの信号パターンが格納されている状態からパターン生成プログラム２１を実行する条件で最適化を行うため、Ｒの初期値を２とする。
【００３０】
ＲｉおよびＣは、それぞれＲ、Ｂの退避変数である。また、Ｍはボディーの実行中（繰返命令の場合は１回目の実行中）に、各処理ルーチンの開始時点を基準として、ＦＩＦＯメモリ６２の格納数が最小となる値である。なお、変数ＢやＭはローカル変数であるため、ルーチン間での変数値の授受はなく、ルーチン実行中に異なるルーチンが呼び出されると、現在値をメモリにスタックして、復帰時に当該スタック値を読み出して代入される。
【００３１】
最適化プログラム８２は、まずＲ値を２に初期設定する（フローチャート１００）。次に最初の命令種別を判定する（フローチャート１０１）。最初の命令はステップ３０のＤＡＴＡ命令であるから、Ｃ＝Ｂｄ（＝０．５）を代入して（フローチャート１０２）、Ｒに加える（フローチャート１０７）。この結果、Ｒ＝２．５となる。
【００３２】
次の命令はステップ３１のＬＯＯＰ命令であることから、ＬＯＯＰルーチン１０４を実行する。ＬＯＯＰルーチンでは、まず変数を初期設定する（フローチャート１３０）。次に、繰返の実行（ステップ３１〜３４）によるＲ値の変動量と第１回目の繰返実行時のＭ値（B値の最小値）を求めるために、繰返内容の解析を行う。まず、ステップ３２の命令種別を判定する（フローチャート１３１）。ステップ３２は、ＪＳＲ命令であることから、ＪＳＲルーチン１０３を呼び出す。なお、ステップ３１のＬＯＯＰ命令実行によってR値はＨｌ（＝−０．５）だけ変動するため、ＪＳＲルーチンを処理する際のＲの初期値は２である。
【００３３】
ＪＳＲルーチンでは、まず変数を初期設定する（フローチャート１１０）。次に、サブルーチン実行時における、ＦＩＦＯメモリ６２に格納された信号パターンの数の最小値Ｍを求める。まず、サブルーチン内容の最初の命令種別を判定する（フローチャート１１１）。ステップ３６はＤＡＴＡ命令なので、Ｃ＝Ｂｄ（＝０．５）を代入して（フローチャート１１２）、ＢとＲに加える（フローチャート１１５）。Ｂ＝０．５となりＭ＝０より大きいため、次の命令の分析に移行する。もし、ステップ３６がＦＩＦＯメモリ６２に格納されている信号パターン数が減少する処理の場合には、Ｍ≧Ｂとなり（フローチャート１１６）、ＭにＢの値が代入される（フローチャート１１７）。これにより、Ｍにはサブルーチン実行時におけるＢの最小値が記録されることになる。
【００３４】
ふたたび、図３のプログラムの動作説明に戻る。ステップ３７は、サブルーチンの終了を示すＲＴＮ命令である。よって、この時点で、Ｂ値にはサブルーチン内容の処理によるＲ値の変動量が、Ｍ値にはＢ値の最小値が格納されている。そこで、まずＪＳＲルーチンのスタート時の信号パターン格納数ＲｉにＭを加えた値を評価する（フローチャート１１８）。この値が０より小さい場合にはサブルーチンを展開（サブルーチン命令をサブルーチン内容で置き換えること）してもデフォルト状態を解消することができない。従って、この場合にはエラー表示をおこなって（フローチャート１２４）、最適化プログラムの実行を終了する（フローチャート１２５）。
【００３５】
本実施例の場合にはＲｉ＋Ｍ＝２であるため、最適化可能である。そこで、次に展開が必要か否かを判断するために、呼出及び復帰処理を含めたサブルーチン全体の信号パターン格納数の変化量（Ｈｊ＋Ｂ＋Ｔｊ）の評価を行う（フローチャート１１９）。Ｈｊ＋Ｂ＋Ｔｊ値が０より大きい場合には、サブルーチンの実行により信号パターン格納数が増加するため、展開の必要がない。この場合には、Ｃにサブルーチン処理実行時に信号パターン格納数の変化量（Ｈｊ＋Ｂ＋Ｔｊ）を代入して（フローチャート１２２）、ＪＳＲルーチンを終了する（フローチャート１２３）。
【００３６】
本実施例の場合には、Ｈｊ＋Ｂ＋Ｔｊ＝−０．５＜０であるため、ステップ３２のＪＳＲ命令をステップ３６のサブルーチン内容に置き換える（フローチャート１２０）。展開よって、サブルーチン呼出処理と復帰処理が無くなるため、信号パターン格納数の変化量はサブルーチン内容の実行時の変化量Ｂ（＝０．５）となる。この値をＣに代入して（フローチャート１２１）、ＪＳＲルーチンを終了してＬＯＯＰルーチンへ復帰する（フローチャート１２３）。以上で、ステップ３１〜３４の繰返処理のうち、ステップ３２の最適化処理が終了する。
【００３７】
復帰したＬＯＯＰルーチンにおいて、まずＣ値をＢ値とＲ値に加算する（フローチャート１３５）。Ｃ＝０．５であるから、Ｂ＝０．５、Ｒ＝２．５となる。その後、Ｍ値とＢ値を比較する（フローチャート１３６）。Ｍ≧Ｂの場合にはＭにＢが代入されるが（フローチャート１３４７）、この時点でＭ値は０であるから、Ｍ＜Ｂとなり代入は行われない。
【００３８】
ステップ３３はＪＳＲ命令であるため、ステップ３２と同様にＪＳＲルーチンを実行する。その結果、ステップ３３はステップ３２と同様に展開される。この最適化により、ステップ３３実行後のＢ値は１、Ｒ値は３となる（フローチャート１３５）。ステップ３４は、繰返命令の終了を示すＬＯＯＰ  ＥＮＤ命令である。よって、この時点で、Ｂ値には繰返内容の１回あたりの処理によるＲ値の変動量が、Ｍ値にはＢ値の最小値が格納されている。そこで、まずＬＯＯＰルーチン開始時のＲ値Ｒｉ（ＬＯＯＰルーチン開始時の信号パターン格納数）と、繰返回数（ｎ）から１を引いたものにＢ値を掛けた値（繰返し開始から最終回開始時点までの格納数の変化量）と、Ｍ値（最終回の繰返実行中のＢの最小値）の合計が０より小さいか否かを評価する（フローチャート１３８）。この値が０より小さい場合には、繰返命令を全展開（繰返内容を繰返回数分順次記述すること）しても、デフォルトを解消することができない。従って、この場合にはエラー表示をおこなって（フローチャート１３９）、最適化プログラムの実行を終了する（フローチャート１４０）。
【００３９】
本実施例の場合には、Ｒｉ＋（ｎ−１）×Ｂ＋Ｍ＝２．５＋２×１＋０≧０となるため、最適化が可能である。そこで、次にＬＯＯＰ命令自体の格納数変化量（Ｈｌ）と、１回の繰返処理による格納数変化量（Ｂ＋Ｔｌ）に繰返回数（ｎ）を掛けた値との合計値が０以上か否かを評価する（フローチャート１４１、第１の展開要否判断条件）。合計値が０より小さい場合には繰返実行によって、格納数が減ることになるため展開（繰返内容を繰返内外に記述し、繰返終了命令の実行回数を削減すること）を行う。展開前後ではＬＯＯＰ  ＥＮＤ命令の処理による格納数の変化分が変化することになる。そこで、デフォルトが生じないためのＬＯＯＰ  ＥＮＤ命令の最大処理回数ｐを求める（フローチャート１４２）。すなわち、ＬＯＯＰ  ＥＮＤ命令をｐ回実行すると、ｎ×B＋Ｈｌ＋ｐ×Ｔｌだけ格納数が変動するから、ｎ×B＋Ｈｌ＋ｐ×Ｔｌ≧０となるｐの最大値を求める。更に具体的には−（ｎ×Ｂ＋Ｈｌ）／Ｔｌの値を求め、その小数部分を切り捨てた値をｐ値とする。
【００４０】
次に、繰返終了命令の実行回数がｐ回となるように、ループ内（繰返命令の後）に配置する繰返内容の回数ｑと、ループ前（繰返命令の前）に配置する繰返内容の回数ｒを求める。すなわち、ｎをｐで割った商をｑ、剰余をｒとする。例えば、図１１（ａ）のような７回のループ（ｎ＝７）を２回の繰返終了命令となるように展開する場合（ｐ＝２）には、図１１（ｂ）のようにループ内に繰返内容を３回記述し（ｑ＝３）、ループ前に繰返し内容を１回記述すればよい（ｒ＝１）。
【００４１】
本実施例の場合には、Ｈｌ＋ｎ×（Ｂ＋Ｔｌ）＝−０．５＋３×（１−０．５）＝１≧０であるから、フローチャート１４２、１４３の処理は行わない。次に、繰返処理前の格納数Ｒｉと、繰返内容実行による格納数変化量Ｂにｒを掛けた値と、ＬＯＯＰ命令自体の格納数変化量Ｈｌと、繰返内容の実行中における格納数の最小値Ｍとの合計値が０以上か否かを評価する（フローチャート１４４、第２の展開要否判断条件）。この合計値が０より小さいと、繰返処理全体では格納数が増加したとしても、第１回目の繰返処理途上においてデフォルトが生じてしまう。そこで、繰返処理を開始する前に十分な格納数が得られるように、さらに繰返内容を繰返命令の前に配置する。このため、まず、合計値が０以上となるようなｒの最小値を算出する（フローチャート１４５）。より具体的には、ｒ≧−（Ｒｉ＋Ｈｌ＋Ｍ）／Ｂとなるｒ値を求めればよいから、−（Ｒｉ＋Ｈｌ＋Ｍ）／Ｂの値を求め、その値が整数値の場合にはその値を、小数以下を含む場合には整数部分に１を加えたうえで小数部分を切り捨てた値をｒ値とする。
【００４２】
次に、繰返回数の残数（ｎ−ｒ）からｐ、ｑ、ｒを再計算する（フローチャート１４６）。このとき、再計算後のｒはフローチャート１４５で求めたｒ値より大きくなるように設定する。
また、繰返終了命令がフローチャート１４２で求めたｐ以下となるように設定する（フローチャート１４２を実行していない場合は制限なし）。すなわち、ｎ−ｒ＜ｐの場合はｐ＝ｎ−ｒとしたうえで、ｎ−ｒをｐで割った商をｑとし、剰余をｒに加算する。
【００４３】
本実施例の場合には、Ｒｉ＋ｒ×Ｂ＋Ｈｌ＋Ｍ＝２．５＋３×１−０．５＋０＞０であるため、フローチャート１４５、１４６の処理は行わない。以上の、第１および第２の展開要否判断条件により得られた結果をもとに展開処理を行う。まず、ｐ値を評価する（フローチャート１４７）。ｐ≦１の場合には、繰返処理を全展開する。また、１＜ｐ＜ｎの場合には、図１１にように、ＬＯＯＰ命令の前に繰返内容をｒ回配置し、ＬＯＯＰ命令の後に繰返内容をｑ回配置して繰返回数をｐ回に設定する。本実施例のように、ｐ＝ｎの場合、すなわち展開後の繰返回数ｎが展開前の繰返回数ｐと同じ場合には、展開が不要であるから、展開は行わない。
【００４４】
最後に、展開後の繰返処理における信号パターンの変動量（Ｈｌ＋ｎ×Ｂ＋ｐ×Ｔｌ）をＣに代入する（フローチャート１５０）。以上でステップ３１〜３４までの繰返処理の最適化が終了し、メインルーチンへ復帰する。次の命令（ステップ３５）はパターン生成プログラム２１の終了を示すＳＴＯＰ命令なので、最適化プログラムの実行を終了する（フローチャート１０６）。展開後のパターン生成プログラム２１を図１０に示す。このように、本発明に係る最適化方法により、パターン生成プログラム２１を、冗長化を防止しつつ、デフォルトを回避する最適化を行うことができる。
【００４５】
なお、本実施例では、展開要否の判断（フローチャート１１９、１４１、１４４）において、評価する変数と０との比較を行っているが、１以上の任意の値との比較してもよい。比較する値が大きくなるほど、デフォルトに対する耐性が増し、パターン生成プログラム２１動作中に何らかの要因によりプロセッサ６１の処理能力が一時的に低下しても、デフォルトの発生を抑制し、安定した信号パターンの出力を行うことができる。ただし、比較する値が大きいほど、最適化後のプログラムは冗長になるため、必要以上に大きな値とすることは避けることが望ましい。
【００４６】
本実施例においては、信号パターンの生成手段とパターン生成プログラムの最適化手段が共通のプロセッサ６１を利用しているため、パターン生成プログラム２１と最適化プログラム８２を同一のプロセッサ６１で実行しているが、それぞれ別々のプロセッサで構成してもよい。本実施例のように同一プロセッサで構成するメリットは、装置構成が簡素化しコストが安くなる点にある。他方、最適化手段は高速メモリ処理が可能なプロセッサ、信号生成手段はＤＳＰなどの信号処理に特化したプロセッサを利用すると、高速な最適化・信号パターン生成が可能となるというメリットがある。
【００４７】
また、本実施例で用いたプロセッサ６１は、プログラム中のいずれの命令も１クロックで処理する機能を有しているが、このような機能を有さないプロセッサでも本発明は実施可能である。この場合には、ＦＩＦＯメモリ６２に格納された信号パターン数の変動量（例えば、Ｈｊ、Ｔｌ、Ｂｄなど）を算出する際に、信号出力回路２４から出力される信号パターン周期と各命令の処理時間から変動量を求めることになる。例えば、ＤＡＴＡ命令の実行時間が２クロックの場合には、ＤＡＴＡ命令によって１つの信号パターンが生成される間に信号出力回路２４から１つ信号パターンが出力されるため、変動量（Ｂｄ）＝０となる。
【００４８】
以上、本発明に係る技術的思想を特定の実施例を参照しつつ詳細にわたり説明したが、本発明の属する分野における当業者には、請求項の趣旨及び範囲から離れることなく様々な変更及び改変を加えることが出来ることは明らかである。例えば、最適化プログラム８２を、コンピュータで読み込み可能なフレキシブルディスク、ＣＤ−ＲＯＭ、ハードディスクなどの記録媒体に格納し、信号発生装置とは異なるコンピュータで最適化プログラムを実行してパターン生成プログラムの最適化を行ってから、最適化されたパターン信号発生装置を信号発生装置に格納して信号パターンを得ることができるが、かかる実施も本発明に係る最適化方法の一実施態様であり、本発明に係る技術的思想の範囲を超えるものではない。
【図面の簡単な説明】
【００４９】
【図１】本発明に係る最適化方法のメインルーチンのフローチャートである。
【図２】従来の信号生成装置の概略構成図である。
【図３】パターン生成プログラムおよびパターンデータの例である。
【図４】従来の信号生成装置の動作をクロック順に示した説明図である。
【図５】従来のパターン生成プログラム変換例である。
【図６】従来の信号生成装置の概略構成図である。
【図７】本発明に係る信号生成装置の概略構成図である。
【図８】本発明に係る最適化方法のＪＳＲルーチンのフローチャートである。。
【図９】本発明に係る最適化方法のＬＯＯＰルーチンのフローチャートである。
【図１０】本発明に係る最適化方法により展開されたパターン生成プログラム変換例である。
【図１１】ＬＯＯＰルーチンの展開要否判定および展開方法の説明図である。
【符号の説明】
【００５０】
２０、８１  メモリ
２１  パターン生成プログラム
２２  パターンデータ
２３、６１  プロセッサ
２４  信号出力回路
２５  デバイス
２６、６０，８０  信号生成装置
６２  ＦＩＦＯメモリ
８２  最適化プログラム
【図１】
2006058048.tif 000004
【図２】
2006058048.tif 000005
【図３】
2006058048.tif 000006
【図４】
2006058048.tif 000007
【図５】
2006058048.tif 000008
【図６】
2006058048.tif 000009
【図７】
2006058048.tif 000010
【図８】
2006058048.tif 000011
【図９】
2006058048.tif 000012
【図１０】
2006058048.tif 000013
【図１１】
2006058048.tif 000014