(57)【特許請求の範囲】
【請求項１】
少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述からラベル文を除去する記述処理装置であって、
処理対象となる動作レベル記述の入力を受け付ける受付部、
新たなラベル名を生成するラベル名生成部、
前記受け付けられた動作レベル記述の先頭に前記生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置するラベル配置部、
前記受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する抽出部、
前記抽出ラベル文に対応付けられる新たな変数名を生成する変数名生成部、
前記入力を受け付けられた動作レベル記述において、当該先頭ラベル文の直後から当該抽出ラベル文までを、前記生成された変数名の変数の値が第１の値である場合に当該先頭ラベル文の直後から当該抽出ラベル文の直前までの文を実行する条件実行文と、前記生成された変数名の変数に当該第１の値を代入する演算代入文と、の列に置換し、当該抽出ラベル文のラベルにジャンプするジャンプ文を、前記生成された変数名の変数に第２の値を代入する演算代入文と、当該先頭ラベルにジャンプするジャンプ文と、の列に置換する置換部、
所定の終了条件が満たされるまで前記抽出部による抽出と前記変数名生成部による新たな変数名の生成と前記置換部による置換を繰り返させる制御部、
前記生成された変数名の変数のそれぞれを当該第１の値に初期化する演算代入文を、当該繰り返しにおいて最後の置換により得られた結果における当該先頭ラベル名によるラベル文の直前に挿入する挿入部、
前記挿入された結果の動作レベル記述を出力する出力部、
を備える、ことを特徴とする記述処理装置。
【請求項２】
少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述のラベル文を移動する記述処理装置であって、
処理対象となる動作レベル記述の入力を受け付ける受付部、
前記受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する抽出部、
当該抽出ラベル文に対応付けられる新たな変数名を生成する変数名生成部、
前記入力を受け付けられた動作レベル記述において、当該抽出ラベル文を囲む第１の条件実行文を、
（１）前記生成された変数名の変数に第１の値を代入する代入文と、
（２）当該抽出ラベル文と、
（３）当該第１の条件実行文の条件式が成立する又は前記生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文であって、当該囲まれる文は、
（ａ）前記生成された変数名の変数が第１の値である場合に当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より前の文を実行する第３の条件実行文と、
（ｂ）前記生成された変数名の変数に第１の値を代入する代入文と、
（ｃ）当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より後の文
の列である第２の条件実行文と、
の列に置換し、当該抽出ラベル文のラベルにジャンプするジャンプ文を、前記生成された変数名の変数に第２の値を代入する演算代入文と、当該抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する置換部、
所定の終了条件が満たされるまで前記抽出部による抽出と前記変数名生成部による新たな変数名の生成と前記置換部による置換を繰り返させる制御部、
当該繰り返しにおいて最後の置換により得られた結果の動作レベル記述を出力する出力部、
を備える、ことを特徴とする記述処理装置。
【請求項３】
請求項２に記載の記述処理装置から出力される動作レベル記述を請求項１に記載の記述処理装置に入力として与える、
ことを特徴とする記述処理装置。
【請求項４】
請求項１乃至３のいずれか１項に記載の記述処理装置であって、
当該所定の終了条件は、前記抽出部によるラベル文の抽出ができなくなると満たされる、
ことを特徴とする記述処理装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の記述処理装置であって、
当該所定の終了条件は、当該繰り返しが所定の回数に達すると満たされる、
ことを特徴とする記述処理装置。
【請求項６】
少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述からラベル文を除去する記述処理方法であって、当該記述処理方法は、受付部、ラベル名生成部、ラベル配置部、抽出部、変数名生成部、置換部、制御部、挿入部、出力部を備える記述処理装置が実行し、当該記述処理方法は、
前記受付部が、処理対象となる動作レベル記述の入力を受け付ける受付ステップ、
前記ラベル名生成部が、新たなラベル名を生成するラベル名生成ステップ、
前記ラベル配置部が、前記受け付けられた動作レベル記述の先頭に前記生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置するラベル配置ステップ、
前記抽出部が、前記受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する抽出ステップ、
前記変数名生成部が、当該抽出ラベル文に対応付けられる新たな変数名を生成する変数名生成ステップ、
前記置換部が、前記入力を受け付けられた動作レベル記述において、当該先頭ラベル文の直後から当該抽出ラベル文までを、前記生成された変数名の変数の値が第１の値である場合に当該先頭ラベル文の直後から当該抽出ラベル文の直前までの文を実行する条件実行文と、前記生成された変数名の変数に当該第１の値を代入する演算代入文と、の列に置換し、当該抽出ラベル文のラベルにジャンプするジャンプ文を、前記生成された変数名の変数に第２の値を代入する演算代入文と、当該先頭ラベルにジャンプするジャンプ文と、の列に置換する置換ステップ、
前記制御部が、所定の終了条件が満たされるまで前記抽出部による抽出と前記変数名生成部による新たな変数名の生成と前記置換部による置換を繰り返させる制御ステップ、
前記挿入部が、前記生成された変数名の変数のそれぞれを当該第１の値に初期化する演算代入文を、当該繰り返しにおいて最後の置換により得られた結果における当該先頭ラベル名によるラベル文の直前に挿入する挿入ステップ、
前記出力部が、前記挿入された結果の動作レベル記述を出力する出力ステップ、
を備える、ことを特徴とする記述処理方法。
【請求項７】
少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述のラベル文を移動する記述処理方法であって、当該記述処理方法は、受付部、抽出部、変数名生成部、置換部、制御部、出力部を備える記述処理装置が実行し、当該記述処理方法は、
前記受付部が、処理対象となる動作レベル記述の入力を受け付ける受付ステップ、
前記抽出部が、前記受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する抽出ステップ、
前記変数名生成部が、当該抽出ラベル文に対応付けられる新たな変数名を生成する変数名生成ステップ、
前記置換部が、前記入力を受け付けられた動作レベル記述において、当該抽出ラベル文を囲む第１の条件実行文を、
（１）前記生成された変数名の変数に第１の値を代入する代入文と、
（２）当該抽出ラベル文と、
（３）当該第１の条件実行文の条件式が成立する又は前記生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文であって、当該囲まれる文は、
（ａ）前記生成された変数名の変数が第１の値である場合に当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より前の文を実行する第３の条件実行文と、
（ｂ）前記生成された変数名の変数に第１の値を代入する代入文と、
（ｃ）当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より後の文
の列である第２の条件実行文と、
の列に置換し、当該抽出ラベル文のラベルにジャンプするジャンプ文を、前記生成された変数名の変数に第２の値を代入する演算代入文と、当該抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する置換ステップ、
前記制御部が、所定の終了条件が満たされるまで前記抽出部による抽出と前記変数名生成部による新たな変数名の生成と前記置換部による置換を繰り返させる制御ステップ、
前記出力部が、当該繰り返しにおいて最後の置換により得られた結果の動作レベル記述を出力する出力ステップ、
を備える、ことを特徴とする記述処理方法。
【請求項８】
コンピュータを、
少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述からラベル文を除去する記述処理装置として機能させるためのプログラムであって、
当該プログラムは、当該コンピュータを、
処理対象となる動作レベル記述の入力を受け付ける受付部、
新たなラベル名を生成するラベル名生成部、
前記受け付けられた動作レベル記述の先頭に前記生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置するラベル配置部、
前記受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する抽出部、
前記抽出ラベル文に対応付けられる新たな変数名を生成する変数名生成部、
前記入力を受け付けられた動作レベル記述において、当該先頭ラベル文の直後から当該抽出ラベル文までを、前記生成された変数名の変数の値が第１の値である場合に当該先頭ラベル文の直後から当該抽出ラベル文の直前までの文を実行する条件実行文と、前記生成された変数名の変数に当該第１の値を代入する演算代入文と、の列に置換し、当該抽出ラベル文のラベルにジャンプするジャンプ文を、前記生成された変数名の変数に第２の値を代入する演算代入文と、当該先頭ラベルにジャンプするジャンプ文と、の列に置換する置換部、
所定の終了条件が満たされるまで前記抽出部による抽出と前記変数名生成部による新たな変数名の生成と前記置換部による置換を繰り返させる制御部、
前記生成された変数名の変数のそれぞれを当該第１の値に初期化する演算代入文を、当該繰り返しにおいて最後の置換により得られた結果における当該先頭ラベル名によるラベル文の直前に挿入する挿入部、
前記挿入された結果の動作レベル記述を出力する出力部、
として機能させることを特徴とするプログラム。
【請求項９】
コンピュータを、
少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述のラベル文を移動する記述処理装置として機能させるためのプログラムであって、
当該プログラムは、当該コンピュータを、
処理対象となる動作レベル記述の入力を受け付ける受付部、
前記受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する抽出部、
当該抽出ラベル文に対応付けられる新たな変数名を生成する変数名生成部、
前記入力を受け付けられた動作レベル記述において、当該抽出ラベル文を囲む第１の条件実行文を、
（１）前記生成された変数名の変数に第１の値を代入する代入文と、
（２）当該抽出ラベル文と、
（３）当該第１の条件実行文の条件式が成立する又は前記生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文であって、当該囲まれる文は、
（ａ）前記生成された変数名の変数が第１の値である場合に当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より前の文を実行する第３の条件実行文と、
（ｂ）前記生成された変数名の変数に第１の値を代入する代入文と、
（ｃ）当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より後の文
の列である第２の条件実行文と、
の列に置換し、当該抽出ラベル文のラベルにジャンプするジャンプ文を、前記生成された変数名の変数に第２の値を代入する演算代入文と、当該抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する置換部、
所定の終了条件が満たされるまで前記抽出部による抽出と前記変数名生成部による新たな変数名の生成と前記置換部による置換を繰り返させる制御部、
当該繰り返しにおいて最後の置換により得られた結果の動作レベル記述を出力する出力部、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子回路を設計するための動作レベル記述を変換して並列度を高めるのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
コンピュータ技術の進歩により、動作合成ツールや論理合成ツールを備えるＣＡＤ（Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ）システムを使用して半導体集積回路の設計、解析および評価等を行うのが一般的になっている。例えば、特許文献１には、動作合成ツールや論理合成ツールを備える回路設計支援システムが開示されている。
【０００３】
回路設計支援システムを用いて半導体集積回路を設計する場合、設計者は、まず、入力ポートや変数のビット幅等のＨ／Ｗ化に必要な情報を含んだ動作レベル記述を用意する。
【０００４】
次に、設計者は、動作合成ツールを用いて、動作レベル記述を、実現する論理をレジスタとレジスタ間の論理機能で表現したＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ（レジスタ転送レベル））記述に変換する。そして、設計者は、論理合成ツールを用いて、ＲＴＬ記述をゲートレベルの論理回路に変換する。
【０００５】
このような電子回路の設計においては、条件分岐の条件式、ＴＨＥＮ部、ＥＬＳＥ部を投機的に計算して並列度を高める技術が、例えば特許文献２、特許文献３及び非特許文献１に開示されている。
【特許文献１】特開２００７−２７２６７１号公報
【特許文献２】特開平５−３３４３９１号公報
【特許文献３】特開平５−３３４４６６号公報
【非特許文献１】Kazutoshi Wakabayashi and Hiroshi Tanaka, " Global Scheduling Independent of Control Dependencies based on Condition Vectors," Proc. of 29th ACM/IEEE Design Automation Conference,  pp112-115, 1992, 6
【発明の開示】
【発明が解決しようとする課題】
【０００６】
そこで、ジャンプ文のジャンプ先であるラベルを宣言するラベル文が存在している場合でも、その前後の文を並列化することにより、ラベル文を消去したり移動したりして、非特許文献１に開示の技術を適用し並列度を高めて高速な電子回路を構成したいとの要望がある。
【０００７】
本発明は、上記問題に鑑みてなされたものであり、電子回路を設計するための動作レベル記述を変換して並列度を高めるのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の第１の観点に係る記述処理装置は、動作レベル記述からラベル文を除去する。
ここで、動作レベル記述は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される。
そして、当該記述処理装置は、受付部、ラベル名生成部、ラベル配置部、抽出部、変数名生成部、置換部、制御部、挿入部、出力部を備え、以下のように構成する。
まず、受付部は、処理対象となる動作レベル記述の入力を受け付ける。
次に、ラベル名生成部は、新たなラベル名を生成する。
さらに、ラベル配置部は、当該受け付けられた動作レベル記述の先頭に当該生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置する。
また、抽出部は、当該受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。
そして、変数名生成部は、当該抽出ラベル文に対応付けられる新たな変数名を生成する。
次に、置換部は、入力を受け付けられた動作レベル記述において、当該先頭ラベル文の直後から当該抽出ラベル文までを、当該生成された変数名の変数の値が第１の値である場合に当該先頭ラベル文の直後から当該抽出ラベル文の直前までの文を実行する条件実行文と、当該生成された変数名の変数に当該第１の値を代入する演算代入文と、の列に置換する。
さらに、置換部は、入力を受け付けられた動作レベル記述において、当該抽出ラベル文のラベルにジャンプするジャンプ文を、当該生成された変数名の変数に第２の値を代入する演算代入文と、当該先頭ラベルにジャンプするジャンプ文と、の列に置換する。
さらに、制御部は、所定の終了条件が満たされるまで抽出部による抽出と変数名生成部による新たな変数名の生成と置換部による置換を繰り返させる。
また、挿入部は、当該生成された変数名の変数のそれぞれを当該第１の値に初期化する演算代入文を、当該繰り返しにおいて最後の置換により得られた結果における当該先頭ラベル名によるラベル文の直前に挿入する。
そして、出力部は、当該挿入された結果の動作レベル記述を出力する。
【０００９】
上記目的を達成するために、その他の観点に係る記述処理装置は、動作レベル記述のラベル文を移動する。
ここで、動作レベル記述は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される。
そして、当該記述処理装置は、受付部、抽出部、変数名生成部、置換部、制御部、出力部を備え、以下のように構成する。
まず、受付部は、処理対象となる動作レベル記述の入力を受け付ける。
次に、抽出部は、当該受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。
そして、変数名生成部は、当該抽出ラベル文に対応付けられる新たな変数名を生成する。
また、置換部は、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文を囲む第１の条件実行文を、
（１）当該生成された変数名の変数に第１の値を代入する代入文と、
（２）当該抽出ラベル文と、
（３）当該第１の条件実行文の条件式が成立する又は当該生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文と、
の列に置換する。
なお、当該囲まれる文は、
（ａ）当該生成された変数名の変数が第１の値である場合に当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より前の文を実行する第３の条件実行文と、
（ｂ）当該生成された変数名の変数に第１の値を代入する代入文と、
（ｃ）当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より後の文
の列である。
さらに、置換部は、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文のラベルにジャンプするジャンプ文を、当該生成された変数名の変数に第２の値を代入する演算代入文と、当該抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する。
そして、制御部は、所定の終了条件が満たされるまで抽出部による抽出と変数名生成部による新たな変数名の生成と置換部による置換を繰り返させる。
また、出力部は、当該繰り返しにおいて最後の置換により得られた結果の動作レベル記述を出力する。
【００１０】
上記目的を達成するために、その他の観点に係る記述処理方法は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述からラベル文を除去する記述処理方法である。
そして当該記述処理方法は、受付部、ラベル名生成部、ラベル配置部、抽出部、変数名生成部、置換部、制御部、挿入部、出力部を備える記述処理装置が実行する。
この記述処理方法は、受付ステップ、ラベル名生成ステップ、ラベル配置ステップ、抽出ステップ、変数名生成ステップ、置換ステップ、制御ステップ、挿入ステップ、出力ステップを備え、以下のように構成する。
まず、受付ステップでは、受付部が、処理対象となる動作レベル記述の入力を受け付ける。
そして、ラベル名生成ステップでは、ラベル名生成部が、新たなラベル名を生成する。
また、ラベル配置ステップでは、ラベル配置部が、当該受け付けられた動作レベル記述の先頭に当該生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置する。
さらに、抽出ステップでは、抽出部が、当該受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。
そして、変数名生成ステップでは、変数名生成部が、当該抽出ラベル文に対応付けられる新たな変数名を生成する。
また、置換ステップでは、置換部が、当該入力を受け付けられた動作レベル記述において、当該先頭ラベル文の直後から当該抽出ラベル文までを、当該生成された変数名の変数の値が第１の値である場合に当該先頭ラベルの直後から当該抽出ラベル文の直前までの文を実行する条件実行文と、当該生成された変数名の変数に当該第１の値を代入する演算代入文と、の列に置換する。
さらに、置換ステップでは、置換部が、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文のラベルにジャンプするジャンプ文を、当該生成された変数名の変数に第２の値を代入する演算代入文と、当該先頭ラベルにジャンプするジャンプ文と、の列に置換する。
そして、制御ステップでは、制御部が、所定の終了条件が満たされるまで抽出部による抽出と変数名生成部による新たな変数名の生成と置換部による置換を繰り返させる。
また、挿入ステップでは、挿入部が、当該生成された変数名の変数のそれぞれを当該第１の値に初期化する演算代入文を、当該繰り返しにおいて最後の置換により得られた結果における当該先頭ラベル文の直前に挿入する。
さらに、出力ステップでは、出力部が、当該挿入された結果の動作レベル記述を出力する。
【００１１】
上記目的を達成するために、その他の観点に係る記述処理方法は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述のラベル文を移動する記述処理方法である。
そして当該記述処理方法は、受付部、抽出部、変数名生成部、置換部、制御部、出力部を備える記述処理装置が実行する。
この記述処理方法は、受付ステップ、抽出ステップ、変数名生成ステップ、置換ステップ、制御ステップ、出力ステップを備え、以下のように構成する。
まず、受付ステップでは、受付部は、処理対象となる動作レベル記述の入力を受け付ける。
次に、抽出ステップでは、抽出部は、当該受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。
そして、変数名生成ステップでは、変数名生成部は、当該抽出ラベル文に対応付けられる新たな変数名を生成する。
また、置換ステップでは、置換部は、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文を囲む第１の条件実行文を、
（１）当該生成された変数名の変数に第１の値を代入する代入文と、
（２）当該抽出ラベル文と、
（３）当該第１の条件実行文の条件式が成立する又は当該生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文と、
の列に置換する。
なお、当該囲まれる文は、
（ａ）当該生成された変数名の変数が第１の値である場合に当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より前の文を実行する第３の条件実行文と、
（ｂ）当該生成された変数名の変数に第１の値を代入する代入文と、
（ｃ）当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より後の文
の列である。
さらに、置換ステップでは、置換部は、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文のラベルにジャンプするジャンプ文を、当該生成された変数名の変数に第２の値を代入する演算代入文と、当該抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する。
そして、制御ステップでは、制御部は、所定の終了条件が満たされるまで抽出部による抽出と変数名生成部による新たな変数名の生成と置換部による置換を繰り返させる。
また、出力ステップでは、出力部は、当該繰り返しにおいて最後の置換により得られた結果の動作レベル記述を出力する。
【００１２】
上記目的を達成するために、その他の観点に係るプログラムは、コンピュータを、動作レベル記述からラベル文を除去する記述処理装置として機能させるためのプログラムである。
ここで、動作レベル記述は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される。
そして、当該記述処理装置は、受付部、ラベル名生成部、ラベル配置部、抽出部、変数名生成部、置換部、制御部、挿入部、出力部を備え、以下のように構成する。
まず、受付部は、処理対象となる動作レベル記述の入力を受け付ける。
次に、ラベル名生成部は、新たなラベル名を生成する。
さらに、ラベル配置部は、当該受け付けられた動作レベル記述の先頭に当該生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置する。
また、抽出部は、当該受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。
そして、変数名生成部は、当該抽出ラベル文に対応付けられる新たな変数名を生成する。
次に、置換部は、入力を受け付けられた動作レベル記述において、当該先頭ラベル文の直後から当該抽出ラベル文までを、当該生成された変数名の変数の値が第１の値である場合に当該先頭ラベル文の直後から当該抽出ラベル文の直前までの文を実行する条件実行文と、当該生成された変数名の変数に当該第１の値を代入する演算代入文と、の列に置換する。
さらに、置換部は、入力を受け付けられた動作レベル記述において、当該抽出ラベル文のラベルにジャンプするジャンプ文を、当該生成された変数名の変数に第２の値を代入する演算代入文と、当該先頭ラベルにジャンプするジャンプ文と、の列に置換する。
さらに、制御部は、所定の終了条件が満たされるまで抽出部による抽出と変数名生成部による新たな変数名の生成と置換部による置換を繰り返させる。
また、挿入部は、当該生成された変数名の変数のそれぞれを当該第１の値に初期化する演算代入文を、当該繰り返しにおいて最後の置換により得られた結果における当該先頭ラベル名によるラベル文の直前に挿入する。
そして、出力部は、当該挿入された結果の動作レベル記述を出力する。
【００１３】
上記目的を達成するために、その他の観点に係るプログラムは、コンピュータを、動作レベル記述のラベル文を移動する記述処理装置として機能させるためのプログラムである。
ここで、動作レベル記述は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される。
そして、当該記述処理装置は、受付部、抽出部、変数名生成部、置換部、制御部、出力部を備え、以下のように構成する。
まず、受付部は、処理対象となる動作レベル記述の入力を受け付ける。
次に、抽出部は、当該受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。
そして、変数名生成部は、当該抽出ラベル文に対応付けられる新たな変数名を生成する。
また、置換部は、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文を囲む第１の条件実行文を、
（１）当該生成された変数名の変数に第１の値を代入する代入文と、
（２）当該抽出ラベル文と、
（３）当該第１の条件実行文の条件式が成立する又は当該生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文と、
の列に置換する。
なお、当該囲まれる文は、
（ａ）当該生成された変数名の変数が第１の値である場合に当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より前の文を実行する第３の条件実行文と、
（ｂ）当該生成された変数名の変数に第１の値を代入する代入文と、
（ｃ）当該第１の条件実行文に囲まれる文のうち当該抽出ラベル文より後の文
の列である。
さらに、置換部は、当該入力を受け付けられた動作レベル記述において、当該抽出ラベル文のラベルにジャンプするジャンプ文を、当該生成された変数名の変数に第２の値を代入する演算代入文と、当該抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する。
そして、制御部は、所定の終了条件が満たされるまで抽出部による抽出と変数名生成部による新たな変数名の生成と置換部による置換を繰り返させる。
また、出力部は、当該繰り返しにおいて最後の置換により得られた結果の動作レベル記述を出力する。
【発明の効果】
【００１４】
本発明によれば、電子回路を設計するための動作レベル記述を変換して並列度を高めるのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１５】
（第１の実施形態）
以下、図面を参照して、第１の実施形態に係る記述処理装置について説明する。
【００１６】
まず、図１を参照して、本実施形態に係る記述処理装置１００の構成について説明する。記述処理装置１００は、入力ポートや変数のビット幅等のＨ／Ｗ化に必要な情報を含んだ記述であってＳｙｓｔｅｍＣ言語等で記載された動作レベル記述を、生成される電子回路の並列度が高められるような動作レベル記述に変換する装置である。より詳細には、記述処理装置１００は、動作レベル記述から条件実行文に囲まれないラベルを削除する処理（以下、「ラベル削除処理」という。）を実行する。
【００１７】
図１に示すように、記述処理装置１００は、物理的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ハードディスク装置１４と、入力装置１５と、表示装置１６と、出力装置１７と、を備える。記述処理装置１００が備える各構成要素はバスを介して接続される。
【００１８】
ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムに従って記述処理装置１００全体の動作を制御する。ＣＰＵ１１は、各構成要素とバスを介して接続され制御信号やデータのやりとりをする。
【００１９】
ＲＯＭ１２は、電源投入直後に実行されるＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）を記憶する。ＩＰＬが実行された後、ＣＰＵ１１は、ハードディスク装置１４に記憶されたプログラムをＲＡＭ１３に読み出して実行する。
【００２０】
ＲＡＭ１３は、データやプログラムを一時的に記憶する。ＲＡＭ１３は、ハードディスク装置１４から読み出されたプログラムや、ラベル削除処理に必要なデータ等を一時記憶する。
【００２１】
ハードディスク装置１４は、ＣＰＵ１１により実行されるプログラムを記憶する。また、ハードディスク装置１４は、ラベルを削除すべき動作レベル記述や、ラベル削除処理により得られた動作レベル記述等を記憶する。
【００２２】
入力装置１５は、ＣＰＵ１１による制御のもと、ラベル削除処理に必要なパラメータ等の入力をユーザから受け付け、また、ラベル削除処理開始要求等の要求をユーザから受け付ける。入力装置１５は、例えば、キーボードやマウスから構成される。
【００２３】
表示装置１６は、ＣＰＵ１１による制御のもと、ユーザからのパラメータ等の入力やラベル削除処理開始要求等の要求を受け付けるための画面、動作レベル記述を表示するための画面等を表示する。表示装置１６は、例えば、液晶ディスプレイ装置から構成される。
【００２４】
出力装置１７は、ＣＰＵ１１による制御のもと、ラベル削除処理により得られた動作レベル記述等を出力する。出力装置１７は、例えば、ＵＳＢポート等の汎用の通信インターフェースや、ディジタル出力ポート等から構成される。
【００２５】
次に、本実施形態に係る記述処理装置１００の構成について説明する。
【００２６】
図２は、本実施形態に係る記述処理装置１００の基本構成を示すブロック図である。図２に示すように、記述処理装置１００は、機能的には、受付部２０と、ラベル名生成部３０と、ラベル配置部４０と、抽出部５０と、変数名生成部６０と、置換部７０と、制御部８０と、挿入部９０と、出力部９５と、を備える。
【００２７】
受付部２０は、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述の入力を受け付ける。受付部２０は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び入力装置１５と協働することにより実現される。
【００２８】
ラベル名生成部３０は、新たなラベル名を生成する。ラベル名生成部３０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００２９】
ラベル配置部４０は、受け付けられた動作レベル記述の先頭に生成された新たなラベル名によるラベル文（以下、「先頭ラベル文」という。）を配置する。ラベル配置部４０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００３０】
抽出部５０は、受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。抽出部５０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００３１】
変数名生成部６０は、抽出ラベル文に対応付けられる新たな変数名を生成する。変数名生成部６０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００３２】
置換部７０は、入力を受け付けられた動作レベル記述において、先頭ラベル文の直後から抽出ラベル文までを、生成された変数名の変数の値が第１の値である場合に先頭ラベル文の直後から抽出ラベル文の直前までの文を実行する条件実行文と、生成された変数名の変数に第１の値を代入する演算代入文と、の列に置換する。
【００３３】
また、置換部７０は、入力を受け付けられた動作レベル記述において、抽出ラベル文のラベルにジャンプするジャンプ文を、生成された変数名の変数に第２の値を代入する演算代入文と、先頭ラベルにジャンプするジャンプ文と、の列に置換する。置換部７０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００３４】
制御部８０は、所定の終了条件が満たされるまで抽出部５０による抽出と変数名生成部６０による変数名の生成と置換部７０による置換を繰り返させる。制御部８０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００３５】
挿入部９０は、生成された変数名の変数のそれぞれを第１の値に初期化する演算代入文を、繰り返しにおいて最後の置換により得られた結果における先頭ラベル文の直前に挿入する。挿入部９０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００３６】
出力部９５は、第１の値に初期化する演算代入文が挿入された結果の動作レベル記述を出力する。出力部９５は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び出力装置１７と協働することにより実現される。
【００３７】
次に、本実施形態に係る記述処理装置１００が実行するラベル削除処理について図３、図４（Ａ）〜（Ｃ）、及び、図５（Ａ）〜（Ｃ）を参照して詳細に説明する。
【００３８】
図３は、記述処理装置１００が実行するラベル削除処理の一例を示すフローチャートである。また、図４（Ａ）〜（Ｃ）、及び、図５（Ａ）〜（Ｃ）は、それぞれ、記述処理装置１００が実行するラベル削除処理の各段階における動作レベル記述の一例である。
【００３９】
記述処理装置１００は、例えば、ラベル削除処理の開始要求を入力装置１５を介してユーザから受けると、図３のフローチャートに示すラベル削除処理を開始する。
【００４０】
まず、記述処理装置１００は、初期化を実行する（ステップＳ１０１）。記述処理装置１００は、ＲＡＭ１３に記憶されたラベル削除処理で使用する変数の初期化等を実行する。
【００４１】
そして、受付部２０は、ユーザからラベル削除処理の対象の動作レベル記述を受け付ける（ステップＳ１０２）。受付部２０は、ユーザから、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述の指定を受け付ける。ここで、１文は、例えば、１行に相当し、文の列は複数の行に相当する。
【００４２】
ここで、受付部２０が指定を受け付ける動作レベル記述は、図４（Ａ）に示すように、２、３、５、６、８及び９行目に示す演算代入文と、４及び７行目に示すラベル文と、２０、３０及び４０行目に示すジャンプ文とを含む。受付部２０は、例えば、ユーザから指定された動作レベル記述をハードディスク装置１４から読み出してＲＡＭ１３に記憶する。
【００４３】
次に、ラベル名生成部３０は、新たなラベル名を生成する（ステップＳ１０３）。ラベル名生成部３０は、例えば、現在の動作レベル記述中で使用されていない新たなラベル名「ＳＴＡＲＴ」を生成する。
【００４４】
次に、ラベル配置部４０は、受け付けられた動作レベル記述の先頭に先頭ラベル文を配置する（ステップＳ１０４）。ラベル配置部４０は、図４（Ｂ）に示すように、先頭ラベル文「ＳＴＡＲＴ：」を動作レベル記述の先頭（２行目）に配置する。
【００４５】
そして、抽出部５０は、受け付けられた動作レベル記述の文のうち条件実行文に囲まれないラベル文を一つ抽出する（ステップＳ１０５）。抽出部５０は、図４（Ｂ）に示すリストから条件実行文に囲まれないラベル文「Ｌ１：」（５行目）を抽出ラベルとして抽出する。ここで条件実行文とは、所定の条件を指定する条件文とこの条件が満たされる場合に実行される演算代入文とを含む文である。例えば、図４（Ｃ）のリストにおいて、「ｉｆ（Ｆ１  ＝＝  ０）｛」（３行目）は条件文であり、「ｘ  ＝  ａ  ＋  ｂ」（４行目）と「ｙ  ＝  ｃ  ＋  ｄ」（５行目）とが演算代入文であり、「ｉｆ（Ｆ１  ＝＝  ０）｛」（３行目）から「｝」（６行目）までが条件実行文である。
【００４６】
なお、図４（Ｂ）に示すリストには、他のラベル文として、ラベル文「Ｌ２：」（８行目）も存在するが、ここでは、一つのラベル文のみを抽出する。抽出部５０がどのラベル文を抽出するかは任意であるが、例えば、番号の小さい行に配置されたラベル文から優先的に抽出する。
【００４７】
次に、変数名生成部６０は、抽出ラベル文に対応付けられる新たな変数名を生成する（ステップＳ１０６）。変数名生成部６０は、抽出ラベル文「Ｌ１：」に対応付けられる新たな変数名として変数名「Ｆ１」を生成する。
【００４８】
そして、置換部７０は、先頭ラベル文の直後から抽出ラベル文までを置換する（ステップＳ１０７）。図４（Ｂ）に示すリストにおいては、置換部７０は、先頭ラベル文「ＳＴＡＲＴ：」の直後「ｘ  ＝  ａ  ＋  ｂ」（３行目）から抽出ラベル文「Ｌ１：」（５行目）までを、以下に示す２つの文（以下、文とは、２行以上の文を含むものとする。）（１）及び（２）に置換する。
【００４９】
文（１）は、生成された変数名の変数「Ｆ１」の値が第１の値、例えば、「０」である場合に先頭ラベル文の直後「ｘ  ＝  ａ  ＋  ｂ」（３行目）から抽出ラベル文「Ｌ１：」（５行目）の直前までの文「ｙ  ＝  ｃ  ＋  ｄ」（４行目）を実行する文である。また、文（２）は、生成された変数名の変数「Ｆ１」に第１の値「０」を代入する演算代入文「Ｆ１  ＝  ０；」である。置換部７０が、先頭ラベル文の直後から抽出ラベル文までを置換した後の動作レベル記述のリストを図４（Ｃ）に示す。
【００５０】
また、置換部７０は、抽出ラベル文のラベルにジャンプするジャンプ文を置換する（ステップＳ１０８）。置換部７０は、抽出ラベル文のラベルにジャンプするジャンプ文「ｇｏｔｏ  Ｌ１；」（２０及び４０行）を以下に示す２つの文（３）及び（４）に置換する。
【００５１】
文（３）は、生成された変数名の変数「Ｆ１」に第２の値、例えば、「１」を代入する演算代入文「Ｆ１  ＝  １；」である。また、文（４）は、抽出ラベル文のラベルにジャンプするジャンプ文「ｇｏｔｏ  Ｌ１；」である。置換部７０が、抽出ラベル文のラベルにジャンプするジャンプ文を置換した後の動作レベル記述のリストを図５（Ａ）に示す。
【００５２】
次に、制御部８０は、条件実行文に囲まれないラベル文がさらに抽出可能か否かを判別する（ステップＳ１０９）。制御部８０は、動作レベル記述の先頭から条件実行文に囲まれないラベル文を検索し、或いは、抽出部５０に条件実行文に囲まれないラベル文を検索させることにより、さらなるラベル文の抽出が可能か否かを判別する。
【００５３】
制御部８０は、さらなるラベル文の抽出が可能であると判別した場合（ステップＳ１０９：ＹＥＳ）、抽出部５０によりラベル文が抽出されなくなるまで抽出部５０による抽出（ステップＳ１０５）と変数名生成部６０による変数名の生成（ステップＳ１０６）と置換部７０による置換（ステップＳ１０７及びＳ１０８）とを繰り返させる。
【００５４】
図５（Ａ）に示す例では、未だに抽出されていないラベル文「Ｌ２：」（１０行目）が存在するため、制御部８０は、ラベル文「Ｌ２：」についても、抽出部５０による抽出（ステップＳ１０５）から置換部７０による置換（ステップＳ１０８）までの処理を実行する。ラベル文「Ｌ２：」についても、上述の処理を実行した後の動作レベル記述のリストを図５（Ｂ）に示す。
【００５５】
一方、制御部８０が、さらなるラベル文の抽出が不可能であると判別した場合（ステップＳ１０９：ＮＯ）、挿入部９０は、初期化用の演算代入文を挿入する（ステップＳ１１０）。挿入部９０は、生成された変数名の変数「Ｆ１」及び「Ｆ２」のそれぞれを第１の値「０」に初期化する演算代入文「Ｆ１  ＝  ０；」及び「Ｆ２  ＝  ０；」を、先頭ラベル文「ＳＴＡＲＴ：」の直前に挿入する。挿入部９０が初期化用の演算代入文を挿入した後の動作レベル記述のリストを図５（Ｃ）に示す。
【００５６】
次に、出力部９５は、挿入部９０により初期化用の演算代入文が挿入された動作レベル記述を出力する（ステップＳ１１１）。出力部９５が動作レベル記述の出力を完了するとラベル削除処理が完了する。
【００５７】
本実施形態に係る記述処理装置１００によれば、動作レベル記述から条件実行文に囲まれないラベル文を削除することができる。言い換えれば、条件実行文に囲まれないラベル文を含む動作レベル記述を、条件実行文に囲まれないラベル文を含まない動作レベル記述に変換することができる。本実施形態に係る記述処理装置１００による変換後の動作レベル記述は、ラベル文が少なくなり並列度の向上が期待できる。
【００５８】
（第２の実施形態）
次に、図面を参照して、第２の実施形態に係る記述処理装置について説明する。なお、本実施形態に係る記述処理装置１０１の物理的な構成については、第１の実施形態に係る記述処理装置１００の構成とほぼ同様であるため説明を省略する。記述処理装置１０１も、上述した記述処理装置１００と同様に、動作レベル記述を生成される電子回路の並列度が高められるような動作レベル記述に変換する装置である。ただし、記述処理装置１０１は、動作レベル記述中の条件実行文に囲まれるラベル文を条件実行文の外側に移動する処理（以下、「ラベル移動処理」という。）を実行する。言い換えれば、記述処理装置１０１は、条件実行文に囲まれるラベル文を含む動作レベル記述を条件実行文に囲まれるラベルを含まない動作レベル記述に変換する。
【００５９】
以下、本実施形態に係る記述処理装置１０１の構成について説明する。
【００６０】
図６は、本実施形態に係る記述処理装置１０１の基本構成を示すブロック図である。図６に示すように、記述処理装置１０１は、機能的には、受付部２１と、抽出部５１と、変数名生成部６１と、置換部７１と、制御部８１と、出力部９６と、を備える。以下、第１の実施形態にかかる記述処理装置１００と同様の構成要素については、説明を省略または簡略化する。
【００６１】
受付部２１は、動作レベル記述の入力を受け付ける。受付部２１は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び入力装置１５と協働することにより実現される。
【００６２】
抽出部５１は、受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ（以下、「抽出ラベル文」という。）抽出する。抽出部５０は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００６３】
変数名生成部６１は、抽出ラベル文に対応付けられる新たな変数名を生成する。変数名生成部６１は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００６４】
置換部７１は、入力を受け付けられた動作レベル記述において、抽出ラベル文を囲む第１の条件実行文を、（１）生成された変数名の変数に第１の値を代入する代入文と、（２）抽出ラベル文と、（３）第１の条件実行文の条件式が成立する又は生成された変数名の変数が第２の値である場合に実行すべき文を囲む第２の条件実行文と、の列に置換する。
【００６５】
なお、この囲まれる文は、（ａ）生成された変数名の変数が第１の値である場合に第１の条件実行文に囲まれる文のうち抽出ラベル文より前の文を実行する第３の条件実行文と、（ｂ）生成された変数名の変数に第１の値を代入する代入文と、（ｃ）第１の条件実行文に囲まれる文のうち抽出ラベル文より後の文、の列である。
【００６６】
また、置換部７１は、さらに、入力を受け付けられた動作レベル記述において、抽出ラベル文のラベルにジャンプするジャンプ文を、生成された変数名の変数に第２の値を代入する演算代入文と、抽出ラベル文のラベルにジャンプするジャンプ文と、の列に置換する。置換部７１は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００６７】
制御部８１は、抽出部５１によりラベル文が抽出されなくなるまで抽出部５１による抽出と変数名生成部６１による変数名の生成と置換部７１による置換を繰り返させる。制御部８１は、ＣＰＵ１１が、ＲＯＭ１２及びＲＡＭ１３と協働することにより実現される。
【００６８】
出力部９６は、第１の値に初期化する演算代入文が挿入された結果の動作レベル記述を出力する。出力部９６は、ＣＰＵ１１が、ＲＯＭ１２、ＲＡＭ１３及び出力装置１７と協働することにより実現される。
【００６９】
次に、本実施形態に係る記述処理装置１０１が実行するラベル移動処理について図７、図８（Ａ）、（Ｂ）、及び、図９を参照して詳細に説明する。
【００７０】
図７は、記述処理装置１０１が実行するラベル移動処理の一例を示すフローチャートである。また、図８（Ａ）、（Ｂ）、及び、図９は、それぞれ、記述処理装置１０１が実行するラベル移動処理の各段階における動作レベル記述の一例である。
【００７１】
記述処理装置１０１は、例えば、ラベル移動処理の開始要求を入力装置１５を介してユーザから受けると、図７のフローチャートに示すラベル移動処理を開始する。
【００７２】
まず、記述処理装置１０１は、初期化を実行する（ステップＳ２０１）。記述処理装置１０１は、ＲＡＭ１３に記憶されたラベル移動処理で使用する変数の初期化等を実行する。
【００７３】
そして、受付部２１は、ユーザからラベル移動処理の対象の動作レベル記述を受け付ける（ステップＳ２０２）。受付部２１は、ユーザから、少なくとも、演算及び／又は代入を実行する演算代入文と、条件が成立する場合に実行すべき文を囲んで指定する条件実行文と、ラベルを宣言するラベル文と、ラベルにジャンプするジャンプ文と、の列により記述される動作レベル記述の指定を受け付ける。
【００７４】
ここで、受付部２０が指定を受け付ける動作レベル記述は、図８（Ａ）に示すように、２、４、６、７、９及び１０行目に示す演算代入文と、３及び８行目に示すラベル文と、２０及び３０行目に示すジャンプ文とを含む。受付部２１は、例えば、ユーザから指定された動作レベル記述をハードディスク装置１４から読み出してＲＡＭ１３に記憶する。
【００７５】
次に、抽出部５１は、受け付けられた動作レベル記述の文のうち条件実行文に囲まれるラベル文を一つ抽出する（ステップＳ２０３）。抽出部５１は、図８（Ａ）に示すリストから条件実行文に囲まれるラベル文「Ｌ２：」（８行目）を抽出ラベルとして抽出する。
【００７６】
次に、変数名生成部６１は、抽出ラベル文に対応付けられる新たな変数名を生成する（ステップＳ２０４）。変数名生成部６１は、抽出ラベル文「Ｌ２：」に対応付けられる新たな変数名として変数名「ｖａｌＬ２」を生成する。
【００７７】
そして、置換部７１は、抽出ラベル文を囲む第１の条件実行文を置換する（ステップＳ２０５）。図８（Ａ）に示すリストにおいては、置換部７１は、「ｉｆ（ｃｏｎｄ＿ｅｘｐ）｛」（５行目）から「｝」（１１行目）までを、以下に示す３つの文（１）、（２）及び（３）に置換する。
【００７８】
図８（Ｂ）において、文（１）は、生成された変数名の変数「ｖａｌＬ２」に第１の値、例えば、「０」を代入する文「ｖａｌＬ２  ＝  ０」（５行目）である。また、文（２）は、抽出ラベル文「Ｌ２；」（６行目）である。さらに、文（３）は、以下に示す３つの文（ａ）、（ｂ）及び（ｃ）を囲む第２の条件実行文（７〜１５行目）である。
【００７９】
文（ａ）は、生成された変数名の変数「ｖａｌＬ２」が第１の値、例えば、「０」である場合に第１の条件実行文に囲まれる文のうち抽出ラベル文「Ｌ２；」より前の文（９、１０行目）を実行する第３の条件実行文（８〜１１行目）である。文（ｂ）は、生成された変数名の変数「ｖａｌＬ２」に第１の値、例えば、「０」を代入する文「ｖａｌＬ２  ＝  ０」（１２行目）である。また、文（ｃ）は、第１の条件実行文に囲まれる文のうち抽出ラベル文「Ｌ２；」より後の文（１３、１４行目）。
【００８０】
また、置換部７１は、抽出ラベル文のラベルにジャンプするジャンプ文を置換する（ステップＳ２０６）。置換部７１は、抽出ラベル文のラベルにジャンプするジャンプ文「ｇｏｔｏ  Ｌ２；」（３０行）を以下に示す２つの文（４）及び（５）に置換する。
【００８１】
文（４）は、生成された変数名の変数「ｖａｌＬ２」に第２の値、例えば、「１」を代入する演算代入文「ｖａｌＬ２  ＝  １；」である。また、文（５）は、抽出ラベル文のラベルにジャンプするジャンプ文「ｇｏｔｏ  Ｌ２；」である。置換部７１が、抽出ラベル文のラベルにジャンプするジャンプ文を置換した後の動作レベル記述のリストを図９に示す。
【００８２】
次に、制御部８１は、条件実行文に囲まれるラベル文がさらに抽出可能か否かを判別する（ステップＳ２０７）。制御部８１は、動作レベル記述の先頭から条件実行文に囲まれるラベル文を検索し、或いは、抽出部５１に条件実行文に囲まれるラベル文を検索させることにより、さらなるラベル文の抽出が可能か否かを判別する。
【００８３】
制御部８１は、さらなるラベル文の抽出が可能であると判別した場合（ステップＳ２０７：ＹＥＳ）、抽出部５１によりラベル文が抽出されなくなるまで抽出部５１による抽出（ステップＳ２０３）と変数名生成部６１による変数名の生成（ステップＳ２０４）と置換部７１による置換（ステップＳ２０５及びＳ２０６）とを繰り返させる。
【００８４】
図９に示す例では、未だに抽出されていないラベル文が存在しないため、制御部８１は、さらなるラベル文の抽出が不可能であると判別する（ステップＳ２０７：ＮＯ）。
【００８５】
最後に、出力部９６は、最後の置換結果の動作レベル記述を出力する（ステップＳ２０８）。出力部９６が動作レベル記述の出力を完了するとラベル移動処理が完了する。
【００８６】
本実施形態に係る記述処理装置１０１によれば、動作レベル記述中の条件実行文に囲まれるラベル文を条件実行文の外側に移動することができる。言い換えれば、条件実行文に囲まれるラベル文を含む動作レベル記述を条件実行文に囲まれるラベルを含まない動作レベル記述に変換することができる。本実施形態に係る記述処理装置１０１による変換後の動作レベル記述は、条件実行文に囲まれるラベルを含まない。従って、この動作レベル記述を上述の第１の実施形態に係る記述処理装置１００に処理させることにより、先頭ラベル以外のラベルを含まない動作レベル記述を生成することができる。この先頭ラベル以外のラベルを含まない動作レベル記述を動作合成することにより、並列度のさらなる向上が期待できる。
【００８７】
（第３の実施形態）
次に、図面を参照して、第３の実施形態に係る記述処理装置について説明する。第３の実施形態に係る記述処理装置１０２は、第１の実施形態に係る記述処理装置１００をラベル削除部１０２２として備え、また、第２の実施形態に係る記述処理装置１０１をラベル移動部１０２１として備える。
【００８８】
ここでは、記述処理装置１０２の構成については図１０を参照して簡単に説明し、記述処理装置１０２を用いた動作合成処理について図１１及び図１２を参照して詳細に説明する。
【００８９】
まず、図１０を参照して、本実施形態に係る記述処理装置１０２を用いて動作レベル記述を動作合成する場合のシステムについて簡単に説明する。図１０に示すように、記述処理装置１０２は、ラベル削除部１０２２と、ラベル移動部１０２１と、を備える。ラベル削除部１０２２は、記述処理装置１００と同様の構成であり、ラベル移動部１０２１は、記述処理装置１０１と同様の構成であるため説明を省略する。
【００９０】
なお、前処理部２００は、外部から供給された動作レベル記述を前処理し、処理済みの動作レベル記述をラベル移動部１０２１に供給する。また、動作合成部３００は、ラベル削除部１０２２から供給された動作レベル記述を動作合成することにより、半導体集積回路の構成、配置、配線を記述するＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ（レジスタ転送レベル））記述を生成し、出力する。
【００９１】
次に、本実施形態に係る記述処理装置１０２を用いて実行する動作合成処理について、図１０、図１１及び図１２（Ａ）、（Ｂ）を参照して詳細に説明する。
【００９２】
図１１は、記述処理装置１０２を含む動作合成システムが実行する動作合成処理の一例を示すフローチャートである。また、図１２（Ａ）は、前処理部２００に供給される動作レベル記述の一例であり、図１２（Ｂ）は、前処理部２００から出力される動作レベル記述の一例である。
【００９３】
動作合成システムは、例えば、動作合成処理の開始要求を入力装置１５を介してユーザから受けると、図１１のフローチャートに示す動作合成処理を開始する。
【００９４】
まず、前処理部２００が前処理を実行する（ステップＳ３０１）。前処理部２００は、記述処理装置１０２においてラベル移動処理及びラベル削除処理が円滑に実行できるように供給された動作レベル記述を変換して、出力する。
【００９５】
具体的には、例えば、前処理部２００は、ｉｆ文とｅｌｓｅ文とから構成される条件実行文をｅｌｓｅ文がない条件実行文に変換する。また、例えば、前処理部２００は、ｓｗｉｔｃｈ文から構成される条件実行文をｉｆ文から構成される条件実行分に変換する。また、例えば、前処理部２００は、ｆｏｒ文又はｗｈｉｌｅ文から構成される条件実行文をｉｆ文とｇｏｔｏ文とから構成される条件実行分に変換する。
【００９６】
図１２（Ａ）及び図１２（Ｂ）を用いて、前処理部２００は、ｉｆ文とｅｌｓｅ文とから構成される条件実行文をｅｌｓｅ文がない条件実行文に変換する例を示す。
【００９７】
図１２（Ａ）に示すように、前処理を行う前の動作レベル記述には、ｉｆ文が４行目にｅｌｓｅ文が７行目に記述されている。また、４行目に記述された条件式「ｃｏｎｄ＿ｅｘｐ」が、真である場合に実行される文が５及び６行目に記述され、偽である場合に実行される文が８及び９行目に記述されている。
【００９８】
前処理部２００は、ｇｏｔｏ文とラベルＬ１とラベルＬ２とを用いることにより、ｅｌｓｅ文を用いない記述に変換する。具体的には、図１２（Ｂ）に示すように、条件式「ｃｏｎｄ＿ｅｘｐ」が真である場合に実行される文を「ｇｏｔｏ  Ｌ１；」に置換し、ｅｌｓｅ文を削除し、条件式「ｃｏｎｄ＿ｅｘｐ」が偽である場合に実行される文の後に、「ｇｏｔｏ  Ｌ２；」とラベル文「Ｌ１：」とを連続して配置する。そして、配置されたラベル文「Ｌ１：」の後に条件式「ｃｏｎｄ＿ｅｘｐ」が真である場合に実行される文を配置し、さらにその後にラベル文「Ｌ２：」を配置する。
【００９９】
以上のような置換をすることにより、前処理部２００は、ｉｆ文とｅｌｓｅ文とから構成される条件実行文をｅｌｓｅ文がない条件実行文に変換する。ｓｗｉｔｃｈ文やｆｏｒ文やｗｈｉｌｅ文についても同様に、ｇｏｔｏ文やｉｆ文を用いた記述に変換することが可能である。
【０１００】
前処理部２００が前処理を完了すると、ラベル移動部１０２１はラベル移動処理を実行する（ステップＳ３０２）。ここで、ラベル移動部１０２１には、前処理によりｅｌｓｅ文、ｓｗｉｔｃｈ文、ｆｏｒ文、ｗｈｉｌｅ文等を含まない動作レベル記述が供給される。このような動作レベル記述であれば、ラベル移動部１０２１は円滑にラベル移動処理を実行できる。なお、ラベル移動処理については、図７のフローチャートを用いて説明した処理と同様であるため説明を省略する。
【０１０１】
次に、ラベル削除部１０２２は、ラベル削除処理を実行する（ステップＳ３０３）。ここで、ラベル削除部１０２２には、条件実行文に囲まれるラベルを含まない動作レベル記述が供給される。このような動作レベル記述であれば、先頭ラベル以外のラベルを含まない動作レベル記述を生成することができる。なお、ラベル削除処理については、図３のフローチャートを用いて説明した処理と同様であるため説明を省略する。
【０１０２】
そして、動作合成部３００は、並列度が高くなるように動作合成する（ステップＳ３０４）。ここで、動作合成部３００には、先頭ラベル以外のラベルを含まない動作レベル記述が供給される。このような動作レベル記述であれば、並列度の高いＲＴＬ記述を生成することができる。なお、動作合成部３００が実行する動作合成については、例えば非特許文献１に開示されているため、ここでは説明を省略する。
【０１０３】
動作合成部３００が動作合成を完了すると動作合成処理が完了する。
【０１０４】
本実施形態に係る記述処理装置１０２によれば、動作レベル記述から生成される電子回路の並列度のさらなる向上が期待できる。
【０１０５】
上記第１の実施形態では、ステップＳ１０９においてラベル文の抽出が可能な限り、抽出ラベルの削除（置換）を実行し続けた。すなわち、繰り返しの終了条件として、ラベル文が抽出できなくなることを採用した。しかしながら、終了条件としては、他の条件を選択することもできる。例えば、繰り返しの回数が所定の上限に達したときはラベル文が抽出できるか否かにかかわらず繰り返しを終了することとしてもよい。この他、出力される動作レベル記述からＲＴＬ記述を生成する際に得られる並列度を調べ、これが所定の上限に達したところで抽出ラベルの削除を中止してもよい。これらの上限は、ユーザがパラメータとして入力するようにしてもよいし、あらかじめ記憶装置に記憶していてもよい。第２の実施形態のステップＳ２０７についても同様である。
【０１０６】
また、動作レベル記述の「先頭」として、本実施形態では、各関数の先頭部分を採用したが、このほかにも、以下のような「先頭」の定め方がありうる。すなわち、全関数をインライン展開して、全体での先頭を「先頭」とするもの、多重ループの一番外側の開始位置を「先頭」とするもの、ユーザが関数の途中などに「先頭」を適宜配置するもの、動作レベル記述の文を一定の数で区切り、その区切りごとに「先頭」を配置するもの、などである。本発明の本質は、複数のラベルを一つにまとめることにあるからである。
【０１０７】
さらに、これらのようなラベルをまとめる「先頭」をどこにするか、についても、ＲＴＬ記述を生成し、その並列度や回路の面積の制限によって、複数の候補から最適なものを選択することとする手法を採用することができる。ラベルをできるだけ前にまとめると、それだけ並列度は増すが、必要な演算器も増加するため、両者はトレードオフの関係にあるからである。
【０１０８】
上記実施形態では、プログラムが、記憶装置に予め記憶されているものとして説明した。しかし、記述処理装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１０９】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
【０１１０】
上述のように、本発明によれば、電子回路を設計するための動作レベル記述を変換して並列度を高めるのに好適な記述処理装置、記述処理方法並びにこれらをコンピュータ上で実現するためのプログラムを提供することができる。
【図面の簡単な説明】
【０１１１】
【図１】本発明の実施形態に係る記述処理装置の構成を示すブロック図である。
【図２】第１の実施形態に係る記述処理装置の基本構成を示すブロック図である。
【図３】ラベル削除処理を示すフローチャートである。
【図４】（Ａ）〜（Ｃ）は、ラベル削除処理の各段階における動作レベル記述の一例である。
【図５】（Ａ）〜（Ｃ）は、ラベル削除処理の各段階における動作レベル記述の一例である。
【図６】第２の実施形態に係る記述処理装置の基本構成を示すブロック図である。
【図７】ラベル移動処理を示すフローチャートである。
【図８】（Ａ）、（Ｂ）は、ラベル移動処理の各段階における動作レベル記述の一例である。
【図９】ラベル移動処理の各段階における動作レベル記述の一例である。
【図１０】第３の実施形態に係る記述処理装置を用いた動作合成システムを示すブロック図である。
【図１１】動作合成処理を示すフローチャートである。
【図１２】（Ａ）は、前処理部に供給される動作レベル記述の一例である。（Ｂ）は、前処理部から出力される動作レベル記述の一例である。
【符号の説明】
【０１１２】
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ハードディスク装置
１５  入力装置
１６  表示装置
１７  出力装置
２０、２１  受付部
３０  ラベル名生成部
４０  ラベル配置部
５０、５１  抽出部
６０、６１  変数名生成部
７０、７１  置換部
８０、８１  制御部
９０  挿入部
９５、９６  出力部
１００、１０１、１０２  記述処理装置
１０２１  ラベル移動部
１０２２  ラベル削除部
【図１】
0005109764.tif 000002
【図２】
0005109764.tif 000003
【図３】
0005109764.tif 000004
【図４】
0005109764.tif 000005
【図５】
0005109764.tif 000006
【図６】
0005109764.tif 000007
【図７】
0005109764.tif 000008
【図８】
0005109764.tif 000009
【図９】
0005109764.tif 000010
【図１０】
0005109764.tif 000011
【図１１】
0005109764.tif 000012
【図１２】
0005109764.tif 000013