JP2004288206A - 半導体集積回路装置の設計方法 - Google Patents
半導体集積回路装置の設計方法 Download PDFInfo
- Publication number
- JP2004288206A JP2004288206A JP2004140209A JP2004140209A JP2004288206A JP 2004288206 A JP2004288206 A JP 2004288206A JP 2004140209 A JP2004140209 A JP 2004140209A JP 2004140209 A JP2004140209 A JP 2004140209A JP 2004288206 A JP2004288206 A JP 2004288206A
- Authority
- JP
- Japan
- Prior art keywords
- wiring
- information
- inter
- signal line
- blocks
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】 システムの消費電力の削減を実現しつつ、システムの設計の効率の高い設計方法を提供する。
【解決手段】 システム設計の高位合成において、プログラムを入力した後、まとまった機能を実現するためのブロックと、複数のHW資源と各HW資源とを接続する配線との構造を表すHW資源接続グラフとを生成する。HW資源を登録したデータベースからHW資源の大きさに関する情報を入力して、HW資源の仮配置を行ない、ブロック間配線における消費電力などに影響するパラメータの配線全体に対する寄与率をブロック間信号線重みとして算出する。ブロック間の配線におけるブロック間信号線重みが閾値以下になるまでブロックの生成をやり直して、ブロック間信号線重みが閾値以下になるとHDLを出力する。上流側の高位合成で、消費電力削減などを考慮したブロック生成により、全体としての設計効率を高める。
【選択図】 図1
【解決手段】 システム設計の高位合成において、プログラムを入力した後、まとまった機能を実現するためのブロックと、複数のHW資源と各HW資源とを接続する配線との構造を表すHW資源接続グラフとを生成する。HW資源を登録したデータベースからHW資源の大きさに関する情報を入力して、HW資源の仮配置を行ない、ブロック間配線における消費電力などに影響するパラメータの配線全体に対する寄与率をブロック間信号線重みとして算出する。ブロック間の配線におけるブロック間信号線重みが閾値以下になるまでブロックの生成をやり直して、ブロック間信号線重みが閾値以下になるとHDLを出力する。上流側の高位合成で、消費電力削減などを考慮したブロック生成により、全体としての設計効率を高める。
【選択図】 図1
Description
本発明は半導体集積回路装置の設計方法に係り、特に、消費電力の削減を図りつつ、設計全体の効率の向上を図るための対策に関する。
従来より、半導体集積回路装置の設計における高位合成は、半導体集積回路装置の仕様,動作,RTなどについて、半導体集積回路装置の各要素や機能をプログラム言語上で次第に具体化していくという流れに沿って行なわれる。そして、高位合成を経てHDLでまとめられた設計データにしたがって、論理合成が行なわれ論理回路(ネットリスト)が生成された後、配置配線が行なわれる。この段階になると、回路要素や配線が具体的に現れてくるので、シミュレーションによる消費電力,処理速度などの推定を利用した最適化処理が行なわれる。
例えば、回路の動作速度とチップ面積とのトレードオフを考慮した最適化処理などである。
しかしながら、近年のごとく、システムLSIなどの大規模な半導体集積回路装置が出現すると、論理合成に至るまでの高位合成においてどの程度的確な設計が行なわれているかによって、論理合成後の最適化の度合いが変わってくる。論理合成の前にブロック分割などがほぼ定まっているので、その後の最適化処理によって変更できる自由度は小さいからである。
ところが、従来の半導体集積回路装置の設計においては、高位合成の適否は設計者の熟練に委ねられているのが現状であり、この高位合成における最適化を図る手段が未開発である。そのために、論理合成後の設計の効率化を図る上で大きな障害となっている。
本発明の目的は、高位合成の最適化を図る手段を講ずることにより、設計全体としての効率の向上を図り、特に、低消費電力性の優れた半導体集積回路装置の設計を図ることにある。
本発明の半導体集積回路装置の設計方法は、半導体集積回路装置を設計するためのビヘイビア表記を含むアプリケーションプログラムを入力した後、ビヘイビア表記を含むアプリケーションをまとまった機能単位でHW資源の配置を行なうためのブロックの生成と、各ブロック内のHW資源の配置と各ブロック間を接続する配線とを表すHW資源接続グラフとを生成するステップ(a)と、HWライブラリから少なくともHW資源の大きさに関する情報を入力して、上記HW資源接続グラフ中のHW資源の仮配置を行ない、仮配置情報を出力するステップ(b)と、上記ブロック間を接続する各配線における消費電力,遅延のうち少なくともいずれか一方に影響するパラメータの比率をブロック間信号線重みとして算出するステップ(c)と、上記各ブロック間信号線重みが閾値以下か否かを判断するステップ(d)と、上記各ブロック間信号線重みが閾値以下になると、HDLで記述したRTLの論理回路を出力するステップ(e)とを含み、上記ステップ(d)の判断において各ブロック間信号線重みが閾値以下になるまで上記ステップ(a)におけるブロックの生成と、上記ステップ(b)〜(d)とを繰り返す方法である。
この方法により、設計の上流側である高位合成において、アプリケーションプログラム中の記述や人の経験に基づく判断に基づくブロック分割の代わりに、消費電力や遅延などに影響するパラメータの適正化を定量的に判断しうるブロック分割を効率よく行なうことが可能になる。したがって、下流側ではある程度適正に分割されたブロックを配置して配置配線などを行なうことが可能になるので、設計全体としての効率が向上する。
上記半導体集積回路装置の設計方法において、上記ステップ(a)に、上記アプリケーションプログラムの記述を、タスクを表すブロックに分割するとともに、各タスク間のデータの流れを示す第1のデータフロー図を生成するサブステップ(a1)と、上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a2)と、上記サブステップ(a2)で得られた各ブロック間の配線の遷移頻度の比率を第1のブロック間信号線重みとして算出するサブステップ(a3)と、上記初期のブロック間信号線重みが初期の閾値以下か否かを判断するサブステップ(a4)と、上記初期のブロック間信号線重みが上記初期の閾値以下になると、上記第1のデータフロー図中の各ブロックにHWライブラリに登録されたHW資源の配置が可能となるように第2のデータフロー図を生成するサブステップ(a5)と、上記第2のデータフロー図中の各ブロックの実行タイミングの決定とHW資源の配置とを行なって上記HW資源接続グラフを作成するサブステップ(a6)とを含ませて、上記初期のブロック間信号線重みが上記初期の閾値以下になるまで上記サブステップ(a1)におけるブロックの再分割と、上記サブステップ(a2)〜(a4)とを繰り返すことにより、まず、アプリケーションに内在する特徴を利用したブロック分割のおおまかな最適化を行った後、さらに仮配置情報を利用した細やかなブロック再分割を行なうことになる。したがって、2段階のブロック分割によるブロック分割の効率の向上を図ることができる。
上記半導体集積回路装置の設計方法において、上記ステップ(a)に、上記アプリケーションプログラムの記述を、複数の演算機能からなるモジュールに分割するとともに、各モジュール間のデータの流れを示す第1のデータフロー図を生成するサブステップ(a1)と、上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a2)と、上記サブステップ(a2)で得られたモジュール間を接続する配線の消費電力及び遅延のうち少なくともいずれか一方に影響するパラメータの比率を第1のモジュール間信号線重みとして算出するサブステップ(a3)と、上記複数のモジュールを、各々複数のモジュールによって構成される複数のブロックに分割するサブステップ(a4)と、上記第1のデータフロー図中の各モジュールにHWライブラリに登録されたHW資源の配置が可能な第2のデータフロー図を生成するサブステップ(a5)と、上記第2のデータフロー図中の各ブロックの実行タイミングの決定とHW資源の割り当てとを行なって上記HW資源接続グラフを作成するサブステップ(a6)とを含ませて、上記ステップ(c)では、上記仮配置情報と上記第1のモジュール間信号線重みとから第2のモジュール間信号線重みを算出するとともに、上記ブロック間を接続する配線となるものの第2のモジュール間信号線重みをブロック間信号線重みとすることにより、まず、ブロックを構成するモジュールという小さな回路単位の生成し、さらに、生成された複数のモジュールを組み合わせてブロックを生成するので、ブロック生成やモジュール生成の際の制約が緩やかになり、第1のCDFGからモジュールやブロックを最適に生成できる。
上記半導体集積回路装置の設計方法において、上記ステップ(a)に、上記アプリケーションプログラムの記述を解析して、各動作を実現する演算機能間のデータの流れを、HWライブラリに登録されたHW資源の配置が可能な第1のデータフロー図として生成するサブステップ(a1)と、上記複数の演算機能から各々複数の演算機能により構成されるモジュールを生成するとともに、上記第1のデータフロー図からモジュール間のデータの流れを示す第2のデータフロー図を生成するサブステップ(a2)と、上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a3)と、上記サブステップ(a3)で得られたモジュール間を接続する配線の消費電力及び遅延のうち少なくともいずれか一方に影響するパラメータの比率を第1のモジュール間信号線重みとして算出するサブステップ(a4)と、上記複数のモジュールを、各々複数のモジュールによって構成される複数のブロックに分割するサブステップ(a5)と、上記第2のデータフロー図中の各モジュールの実行タイミングとの決定とHW資源の割り当てとを行なって上記HW資源接続グラフを作成するサブステップ(a6)とを含ませて、上記ステップ(c)では、上記仮配置情報と上記第1のモジュール間信号線重みとから第2のモジュール間信号線重みを算出するとともに、上記ブロック間を接続する配線となるものの第2のモジュール間信号線重みをブロック間信号線重みとすることにより、モジュール生成の前に、いわゆるトランスフォーメーションを行なうことで、モジュール生成に際してトランスフォーメーションによる最適化を加味することができる。
上記半導体集積回路装置の設計方法において、上記ステップ(a)に、上記アプリケーションプログラムの動作記述を解析して、演算機能間のデータの流れを、HWライブラリに登録されたHW資源を配置することが可能な第1のデータフロー図として生成するサブステップ(a1)と、上記第1のデータフロー図中の各演算機能の実行タイミングとの決定とHW資源の割り当てとを行なって上記HW資源接続グラフを作成するサブステップ(a2)と、上記複数の演算機能から複数の演算機能により構成されるモジュールを生成するサブステップ(a3)と、上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a4)と、上記サブステップ(a3)で得られたモジュール間を接続する配線の消費電力及び遅延のうち少なくともいずれか一方に影響するパラメータの比率を第1のモジュール間信号線重みとして算出するサブステップ(a5)と、上記複数のモジュールを、各々複数のモジュールによって構成される複数のブロックに分割するサブステップ(a6)とを含ませて、上記ステップ(c)では、上記仮配置情報と上記第1のモジュール間信号線重みとから第2のモジュール間信号線重みを算出するとともに、上記ブロック間を接続する配線となるものの第2のモジュール間信号線重みをブロック間信号線重みとすることにより、モジュール生成及びブロック生成が、いわゆるトランスフォーメーション,バインディングなどによる情報を利用して行なわれるので、モジュール生成に際してトランスフォーメーション及びバインディングによる最適化を加味することができる。
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記ブロック及びブロック間の配線構造に関する情報をネットリストにまとめるステップ(f)と、上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含ませて、上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行なうことにより、高位合成で分割されたブロックを配置して迅速な配置配線を行なうことが可能になる。
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含みませて、上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、上記ステップ(e)の後、ステップ(f)の前に、HDLシミュレーションを行なって、その結果得られた情報を上記ステップ(c)にフィードバックすることにより、HDLデータを利用した情報に基づいて、より適正なブロック分割を行なうことができる。
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含ませて、上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、上記ステップ(f)の後、ステップ(g)の前に、ネットリストを用いた仮配線と、仮配線の結果を用いた仮配線シミュレーションとを行なって、仮配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることにより、仮配線情報に基づいて、より適正なブロック分割を行なうことができる。
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含ませて、上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることにより、実配線情報に基づいて、より適正なブロック分割を行なうことができる。
また、上記HDLシミュレーションの結果得られた情報,仮配線シミュレーションの結果得られた情報,実配線シミュレーションの結果得られた情報のうちいずれか2つ以上の情報をフィードバックすることがより好ましい。
上記ステップ(c)では、ブロック間配線の配線長の寄与率をブロック間信号線重みとすることにより、遅延を考慮したブロック分割を行なうことが可能となる。
上記ステップ(c)では、ブロック間配線の配線容量の寄与率をブロック間信号線重みとすることにより、消費電力の削減を考慮したブロック分割を行なうことができる。
上記ステップ(c)では、ブロック間配線の配線遷移頻度の寄与率をブロック間信号線重みとすることによっても、消費電力の削減を考慮したブロック分割を行なうことができる。
上記ステップ(c)では、ブロック間配線の配線長及び配線遷移頻度の寄与率や、配線容量及び配線遷移頻度の寄与率をブロック間信号線重みとすることがより好ましい。
また、上記HDLシミュレーションの結果得られた情報,仮配線シミュレーションの結果得られた情報,実配線シミュレーションの結果得られた情報などを、上記ステップ(a)中のサブステップ(a1)にフィードバックすることにより、下流側でのシミュレーション結果を利用して最適なトランスフォーメーションを行なってからブロック分割を行なうことができる。
また、上記HDLシミュレーションの結果得られた情報,仮配線シミュレーションの結果得られた情報,実配線シミュレーションの結果得られた情報などを、上記ステップ(a)中のサブステップ(a2)にフィードバックすることにより、下流側でのシミュレーション結果を利用して最適なアロケーション,バインディングを行なってからブロック分割を行なうことができる。
本発明の半導体集積回路装置の設計方法によれば、ビヘイビア表記を含むアプリケーションプログラムを入力した後、ブロック,HW資源接続グラフを生成してから、HW資源接続グラフ中のHW資源の仮配置を行なうとともに、ブロック間を接続する各配線における消費電力,遅延のうち少なくともいずれか一方に影響するパラメータの比率をブロック間信号線重みとして算出し、各ブロック間信号線重みが閾値以下になるまでブロックの再分割をおこなってから、RTレベルの記述を含むHDLを出力するようにしたので、設計の上流側である高位合成において、アプリケーションプログラム中の記述や人の経験に基づく判断に基づくブロック分割の代わりに、消費電力や遅延などに影響するパラメータの適正化を定量的に判断しうるブロック分割を効率よく行なうことができ、よって、設計全体としての効率の向上を図ることができる。
実施形態の説明に入る前に、本発明において利用する“高位合成”の概念について説明する。
−高位合成の基本的な流れ−
図1(a)は、本発明で利用する高位合成の流れを示すフローチャートである。図1(b)〜(e)は、各ステップにおいて出力されるデータの一例を示す図である。
図1(a)は、本発明で利用する高位合成の流れを示すフローチャートである。図1(b)〜(e)は、各ステップにおいて出力されるデータの一例を示す図である。
まず、動作仕様設計により、アプリケーションが得られる。図1(b)は、このときのC言語プログラムの例を示す例である。この例では、a,b,c,d,x,y,zを入力し、x=a×b,y=c×d,z=x+yの演算を行なう関数main()に関する記述が含まれているとする。C言語などのプログラムは、ビヘイビア(動作)を表す記述(動作記述)を含んでおり、このようなビヘイビアが記述されたプログラムをビヘイビア表記(アプリケーションプログラム)ともいう。
次に、トランスフォーメーションにより、ビヘイビア表記中の記述を解析して、演算数や段数の削減、ループの展開などのハードウエア化に向けた適合化処理を行ない、その結果得られるデータの流れとそのデータに対する処理とをアーク(データの流れの方向を示す矢印)とノードで表すCDFG(コントロールデータフローグラフ)に変換する。この例では、図1(c)に示すように、アークで示す各データの流れと、データaとbとの加算処理を示すノード1と、データcとdとの加算処理を示すノード2と、ノード1とノード2との処理で得られる結果同士の乗算処理を示すノード3とが現れている。
次に、スケジューリングにより、CDFG中の各処理部分(ノード)を時間軸上の各クロック・サイクルに割り当てて、各処理の実行タイミング(step)を決定する。この例では、図1(d)に示すように、まず、step1でノード1の処理を行ない、次に、step2でノード2の処理を行なってから、step3でノード3の処理を行なうように決定される。
次に、アロケーションにより、HW資源(演算器)を格納しているライブラリから、それぞれの処理の種類に応じた種類のHW資源を各ノードに割り当てる。この例では、図1(e)に示すように、ノード1,2には乗算器(MPY)が割り当てられ、ノード3には加算器(ADD)が割り当てられる。このように、CDFG中のノードに演算器が割り当てられたフローグラフを、HW資源接続グラフという。
次に、バインディングにより、HW資源の最終的な接続関係を決定する。このとき、アロケーションで割り当てられたHW資源をそのまま接続したのでは、回路面積が膨大なものとなるので、共有できるHW資源は共有し、できるだけシステムを簡素にする。この例では、図1(f)に示すように、ノード1,2に割り当てられた各乗算器(MPY)が同じタイミングで動作しないようにスケジューリングされているので、共通のHW資源である乗算器(MPY1)を利用することができる。そして、データa,b,c,dや乗算結果を保持するためのレジスタや、乗算器(MPY1)などへのデータの入力を切り換えるマルチプレクサを配置することにより、図1(b)に示すC言語プログラム中の関数main()の機能を実現するための回路を生成する。
そして、最終的に生成された回路は、ハードウエア記述言語であるHDLによるRTL(レジスタ・トランスファー・レベル)の論理情報の記述として出力される。代表的なHDLとしては、例えば、Verilog-HDLやVHDLなどがある。そして、高位合成によって出力されたHDL記述には、後述するように、高位合成によって分割されたブロックや階層構造の情報が含まれている。
次に、上述のトランスフォーメーション,スケジューリング,アロケーション,バインディングなどの処理内容について、もう少し詳細に説明する。
−トランスフォーメーション−
図2(a)〜(d)は、トランスフォーメーションの過程を示す図である。上述のように、トランスフォーメーションとは、ビヘイビア表記(アプリケーションプログラム)中の動作記述を、ハードウエア化に向けた適合化処理を施し、CDFGに変形する作業である。
図2(a)〜(d)は、トランスフォーメーションの過程を示す図である。上述のように、トランスフォーメーションとは、ビヘイビア表記(アプリケーションプログラム)中の動作記述を、ハードウエア化に向けた適合化処理を施し、CDFGに変形する作業である。
そのために、例えば、図2(a)に示すように、分配則や交換則を活用して演算数や段数の削減を行なう。例えば、分配則を利用して、“A×B+A×C”を“A(B+C)”と変形することにより、演算数つまり乗算の回数を低減することができる。また、交換則を利用して、“((A+B)+C)+D”を“(A+B)+(C+D)”と変形することにより、段数を3段から2段に低減することができる。
また、図2(b)に示すように、設計の階層化・非階層化を行なう。例えば、処理1,2,3を含む関数FunctionAがある場合、この関数FunctionAを、処理1を行なうFunctionBと、処理2を行なうFunctionCと、処理3を行なうFunctionDと、FunctionB,C,Dを統合したFunctionAとに階層化する。逆に、階層化されたFunctionA−FunctionB,C,Dがある場合に、これを単一のFunctionAにして非階層化することも行なう。
また、図2(c)に示すように、ループの展開を行なう。例えば、3つのデータ列に対して、処理Aの入力を切り替えて処理する場合、3つの処理Aを並列に配置してそれぞれ3つの流れでデータの処理を行なうように展開する。
また、図2(d)に示すように、乗算,加算などの処理を表すノードと、各ノードに対するデータの流れとを示すCDFG(コントロールデータフローグラフ)がトランスフォーメーションの結果として出力される。これらの処理は、必ずしも図2(a)〜(d)の順に行なう必要はなく、適宜順序を変更し、又は図2(a)〜(d)中の複数の処理を同時に行なうことが可能である。
−スケジューリング−
上述のように、スケジューリングとは動作記述中の各演算を実行するタイミングを決定することを言うが、スケジューリングを大きく分けると、時間を制約するものと、HW資源を制約するものとの2つに分類される。
上述のように、スケジューリングとは動作記述中の各演算を実行するタイミングを決定することを言うが、スケジューリングを大きく分けると、時間を制約するものと、HW資源を制約するものとの2つに分類される。
スケジューリングのアルゴリズムには、ASAPスケジューリング,ALAPスケジューリング,リストスケジューリング,Force Directedスケジューリング,整数計画法などがある。
また、スケジューリングアルゴリズムを拡張するものとして、パイプライン化スケジューリング,マルチサイクル演算,演算のチェイニング,パイプライン化演算器,条件文のスケジューリング,投機的実行などがある。
スケジューリングの例を挙げると、図3(a)に示すCDFGが入力された場合に、図3(b)に示すように、ノード1の処理はstep1で、ノード2の処理はstep2で、ノード3,4の処理はstep3で、ノード5の処理はstep4で行なわれるような組立となっている。
図4(a),(b)は、パイプライン化スケージューリングの一例を説明するための図である。図4(a)に示すノード1の処理を行なってからノード2を行なう処理を複数回繰り返すという記述がある場合、そのiteration (繰り返し処理)間の依存関係を解析し、依存関係がなければパイプライン化が可能であるので、各iteration 間で演算をオーバーラップして実行するようにスケジューリングを行なう。例えば、図4(b)に示すように、step1,2でノード1Aから2Aの処理を行ない、step2,3でノード1Bからノード2Bの処理を行ない、step3,4でノード1Cからノード2Cの処理を行なうことで、各処理を直列的に行なうのに比べて、スループットの向上を図ることができる。
−アロケーション−
上述のように、アロケーションとは、CDFG中のノードに適当なHW資源を割り当てることを言い、アロケーションによりHW資源接続グラフが生成される。このとき、HW資源の種類と数とが決定される。ただし、HW資源はあらかじめライブラリに登録済みのものを用い、性能とコストのトレードオフを考慮する必要がある。
上述のように、アロケーションとは、CDFG中のノードに適当なHW資源を割り当てることを言い、アロケーションによりHW資源接続グラフが生成される。このとき、HW資源の種類と数とが決定される。ただし、HW資源はあらかじめライブラリに登録済みのものを用い、性能とコストのトレードオフを考慮する必要がある。
図5(a)〜(c)は、アロケーションの過程を説明するための図である。図5(a)に示すように、スケジューリングによってCDFG中の乗算処理や加算処理を行なうノードの実行タイミングが決まっている。次に、図5(b)に示すように、Module Libraryから乗算器(MPY)や加算器(ADD)などの演算器を取り出して、図5(c)に示すように、各ノードに乗算器や加算器を割り当てる。この過程によって、HW資源接続グラフが生成される。
−バインディング−
上述のように、バインディングとは最終的なHW資源の接続関係を決定することを言う。
上述のように、バインディングとは最終的なHW資源の接続関係を決定することを言う。
図6(a),(b)は、バインディングの過程を説明するための図である。例えば、アロケーションにより、図6(a)に示すように乗算器(MPY),加算器(ADD)などがノードに割り当てられたHW資源接続グラフが入力されたとする。このとき、図6(b)に示すように、3回の乗算については共有できるHW資源である乗算器(MPY)を共有し、データにレジスタを割り当てるとともに、演算器−レジスタ間でデータを転送するためのバスも生成する。これによって、最終的な回路構造が現れた状態となっている。
また、バインディング終了時点で使用するHW資源が決定されることから、HW資源情報により、各ブロックの大きさやブロック間距離を高位合成において最終的に見積もることができる。
図7(a),(b)は、それぞれブロックの大きさとブロック間距離とを見積もる方法を示す図である。図7(a)に示すように、システムがブロックA〜Fに分割されているとする。そして、図7(b)に示すように、ブロックA,Bをそれぞれ1辺の長さがlA ,lB の正方形と仮定して、ブロックA−B間の中心距離をlABとする。ただし、lAB>(lA +lB )/2とする。また、ブロックAの各辺をUA ,DA ,RA ,LA とし、ブロックBの各辺をUB ,DB ,RB ,LB とする。
このとき、ブロックA−B間を接続する配線は、辺RA と辺LB 間で接続されているものとする。そこで、配線のピン位置情報として、辺RA と辺LB とを位置決定情報に与える。また、ブロックAの辺DA に対向するブロック(例えばC)に接続される配線も同様に位置決定情報を与える。ただし、配線情報による配線の優先順位がある場合には、優先順位の高い方からピン位置情報として、RA1,RA2,…RAnを位置決定情報に与える。さらに、配線の重みも計算されていれば、これも付加する。
ここで、各ブロックの位置は、基準となるブロック(例えばブロックA)を選択し、ブロックAの辺UA と辺LA とが交わるコーナーを原点とする。その後、各ブロックA〜Fの中心の座標位置を当該ブロックの位置情報として位置決定情報に付加する。例えば、ブロックAの座標位置は(lA /2,lA /2)であり、ブロックBの座標位置は((lA /2)+lAB,lB /2)である。
−高位合成後の設計−
高位合成が終了した後のHDLには、設計対象となるシステムの内容がRTLで記述されているが、このシステムは以下のような回路単位(要素)によって構成されている。
高位合成が終了した後のHDLには、設計対象となるシステムの内容がRTLで記述されているが、このシステムは以下のような回路単位(要素)によって構成されている。
すなわち、複数の演算器がまとまって1つのモジュールが構成されている。ここでいうモジュールとは、複数の演算器からなる単一機能を実現するための回路単位である。単一機能とは、例えば、アドレス生成,誤り訂正などをいう。
また、ここでは、複数のモジュールがまとまったものをブロックという。ブロックとは、複数のモジュールからなる複合機能を実現するための回路単位をいい、例えばプロセッサや、プロセッサ(SW)による処理では満足な性能が得られない処理を専用のHWで実現したエンジンなどが1つのブロックを構成する。次に、HDL中のRTLで記述された論理ブロックを、その機能を実現するために適したマクロセルの組み合わせによって構成されるネットリストに変換するための論理合成を行なう。この処理は、一般に自動論理合成ツールを用いて行なわれる。自動論理合成用ツールとして、Verilog-HDL,VHDLを入力データとする各種のツールが開発されている。論理合成で生成されたネットリストは、実際に使用するマクロセルとマクロセル間の接続情報とによって構成されている。
次に、ネットリストの情報を用いた配置配線(レイアウト設計)を行なう。図8は、配置配線の手順の一例を概略的に示すフローチャートである。
まず、ブロック位置情報に含まれるブロックのピン位置情報によりピン位置を決定する。次に、各ブロック内のレイアウト(配置配線)などを行なう。次に、ブロック位置情報に含まれるブロックの座標に基づいて、各ブロックの配置を行なう。
ブロック配置を行なった後、ブロック間配線を行なう。その際、配線領域面積の不足などによって配線処理が終了しないときには、位置決定情報の座標を考慮し、また、配線の優先順位(又は重み)がある場合はこれも考慮しながら、ブロック間を広げてブロックを再配置し、ブロック間配線をやり直す。
以上が、本発明における各実施形態の前提となる半導体集積回路装置の設計手順の概略である。以下、本発明の特徴部分を有する各実施形態について説明する。
(第1の実施形態)
本実施形態においては、ビヘイビア表記(アプリケーションプログラム)に対して、おおまかなブロック分割を行なった後、高位合成においてブロック分割の適否をチェックすることにより、ブロック間信号線の消費電力や遅延を適正に保持した状態で下流側の設計に進む方法について説明する。
本実施形態においては、ビヘイビア表記(アプリケーションプログラム)に対して、おおまかなブロック分割を行なった後、高位合成においてブロック分割の適否をチェックすることにより、ブロック間信号線の消費電力や遅延を適正に保持した状態で下流側の設計に進む方法について説明する。
図9は本実施形態における半導体集積回路装置の設計方法の手順を示すフローチャートである。
まず、ステップST11で、データベースからビヘイビア表記されたプログラムを取り込んで、プログラム中の字句,構文の解析を行なって、ビヘイビア表記の誤りと、ビヘイビア表記で表されているシステムに含まれる機能とを調べる。この誤り検出は、一般的なコンパイラなどと同様の処理によって自動的に行なわれる。このシステムに含まれる機能とは、一定の機能を果たしている関数の組み合わせ、もしくは関数単体で表現されているものであって、字句,構文解析等によって検出される。そして、この機能を解析情報として記憶装置に格納しておく。
次に、ステップST12で、ビヘイビア表記と解析情報とを利用し、ブロックを生成する(ブロック分割)。そして、ある程度のブロックの接続関係を示す第1のCDFG(タスクグラフ)がデータベースに格納される。このときの当初のブロック分割と、後述するフィードバックを受けたときのブロック分割(再分割)との相違については、後に図25(a),(b)を参照しながら説明する。
図10(a),(b)は、このときに生成される第1のCDFG及び各ノードの内容を示す図である。この第1のCDFGは、上述の図1(c)又は図2(d)に示すCDFG(本実施形態における第2のCDFG)とは異なり、ノード1〜4には演算処理ではなくtask0〜3(タスク)が配置されている。各タスク(プロセス)は、図10(b)に示すように、プログラム中の複数の関数functionによって構成されている。このタスクは、例えば“データ圧縮”というように、いくつかの演算処理によって独立処理される1つのまとまった機能を果たすものである。すなわち、ステップST12においては、図10(a)に示すようなタスクをブロックとして分割する。
次に、ステップST13で、第1のCDFGを取り込んで、実際のアプリケーションを動作させるアプリケーションレベルシミュレーションを行なう。このアプリケーションレベルシミュレーションにより、ブロック間信号線の遷移頻度と、アクティブ率とがわかる。
次に、ステップST14で、アプリケーションシミュレーションによって明らかになったプロファイル情報から算出される各ブロック間の信号線の重みを第1のブロック間信号線重みWとして算出する。最初のステップST12では、重みWとして何らかの初期値(例えば一律の値)が与えられているが、このアプリケーションシミュレーションによって、図10(a)に示すように、実際の重みW1〜W3が算出可能になる。つまり、task0〜task4をブロックとしたときに、実際に処理してどのような計算を何回行なったのか、どのようなデータがどれぐらい転送されているのかということがプロファイル情報として得られるので、このブロック間の信号の遷移頻度(アクティブ率を含む)の関数として重みWを算出する。この重みの具体的な計算方法については、図26(a),(b)を参照しながら後に説明する。ここでは、W=F(配線遷移頻度)となっている。
次に、ステップST15で、第1のブロック間信号線重みが適正か否かを判断する。この判断は、例えば、各信号線における第1のブロック間信号線重みWを予め定められた第1の閾値と比較することで行なわれる。すなわち、ある信号線の第1のブロック間信号線重みWが第1の閾値を越えていれば(NG)、その部分の電力消費が大きくなるおそれがあるので、ブロックをもう少し細かく分けるような処理、あるいはブロックの分け方を変更するような処理を行なう必要がある。そこで、ステップST12に戻って、ブロックの生成をやり直す(ブロック再分割)。
次に、ステップST15における判断で第1のブロック間信号線重みがすべて第1の閾値を越えていないときには(OK)、ステップST16に進んで、第1のCDFGを取り込んで上述のトランスフォーメーションを行なう。このトランスフォーメーションによって、上述の図1(c)又は図2(d)に示すような第2のCDFGが生成される。この段階では、各タスク内部はCDFGにより表現されており、各ノードには演算器が入った状態である。次に、ステップST17で、スケジューリングを行ない、第2のCDFG中の処理(ノード)の実行タイミングをクロック・サイクルに割り当てて、図1(d)又は図3(b)に示す第3のCDFGを生成する。
次に、ステップST18で、HWライブラリ中のHW規模情報を取り込んで、第3のCDFGから上述のアロケーションを行なう。これにより、図1(e)又は図5(c)に示すような第1のHW資源接続グラフが生成される。
次に、ステップST19で、第1のHW資源接続グラフから上述のバインディングを行なう。このとき、上述のように共有できるHW資源があるときは共有して、図1(f)又は図6(b)に示すような第2のHW資源接続グラフを生成するとともに、第2のHW資源接続グラフ中の各HW資源を制御するステートマシーンを生成する。
次に、ステップST20で、仮フロアプランを行なう。フロアプランとは、チップ内でどのようにブロックを配置するかを検討し、決定する処理をいう。そして、仮フロアプランとは、予め登録されているHWライブラリ中のHW規模情報を抽出し、ブロックの大きさを仮見積もりし、ブロックの仮配置を行なうことにより、ブロック間の距離を算出する処理をいう。本実施形態においては、すでに説明した図7(a),(b)に示す方法によって、HWライブラリからHW規模情報を取り込んで、第2のHW資源接続グラフ中の各HW資源間の距離を求める。そして、第2のHW資源接続グラフ中の各HW資源の仮配置を行ない、仮配置情報を出力する。このとき、HW資源間の距離は、ほぼ配線長の大まかな目安となる。
そして、ステップST21で、仮配置情報に基づいて、ブロック間配線の重みの判断に、ある程度のブロック間距離からわかる配線長,配線容量などを含めた第2のブロック間信号線重みW’を算出する。この計算方法の例については、後述する。
次に、ステップST22で、第2のブロック間信号線重みW’が適正か否かを判断する。すなわち、ステップST15におけると同様に、第2のブロック間信号線重みW’が第2の閾値よりも小さいか否かを判断し、すべての第2のブロック間信号線重みW’が第2の閾値よりも小さければ(OK)、ステップST23に進んでHDLを出力する。
一方、第2のブロック間信号線重みW’のうちの1つでも第2の閾値以上であれば(NG)、ステップST12に戻ってブロックの生成をやり直す。本実施形態では、例えば図10(a)に示すtask0とtask1とをまとめて1つのブロックとしたり、task0中の一部の関数functionを他のtask2内に組み込む。このように、ブロックの組み立て方を変更することにより、ブロック間距離を変更してから、再びステップST13〜ST22の処理を実行する。
このとき、ステップST12に戻る前に、第2の閾値を緩和するように変更するステップを経てからステップST12に戻るようにしてもよい。第2の閾値の変更は、例えば初期の第2の閾値からある一定比率で大きくするように設定しておけば自動的に行なうことができる。
本実施形態によると、以下の効果を発揮することができる。
一般に、信号線の消費電力は、信号の遷移頻度,配線容量(配線長に比例),電源電圧,動作周波数などによって定まることが知られている。また、配線の遅延は配線長の関数となることも知られている。したがって、上流側の設計である高位合成においては、まだ配置配線が行なわれておらず配線長などが定まっていないことから、従来、信号線の消費電力や遅延を考慮した設計は行なわれていない。したがって、下流側の設計において、配置配線を行なってから初めて、一部の信号線の消費電力や遅延が過大であることなどがわかると、上流側に戻って高位合成をやり直していた。そのため、高位合成の頻繁なやり直しを回避するためには、設計者の経験と能力が必要であった。
それに対し、本実施形態では、システムのビヘイビア表記のレベルで表現されたブロック分割(生成)や人間の経験に基づくブロック分割にとらわれることなく、アプリケーションに内在する特徴,つまりブロック間の通信量,仮フロアプランの結果得られる配線長に対する定量的なブロック分割のための情報を得て、消費電力や遅延の低減の観点からブロック分割(及び再分割)を行なうことにより、消費電力の低減や遅延の低減を図りつつ効率のよいブロック分割を行なうことができる。すなわち、一般的には、ブロック間信号線の長さはブロック内信号線の長さよりも長いので、ブロック間信号線重みを考慮したブロック分割を行なうことにより、消費電力の削減効果などを高めることができる。
すなわち、ステップST12で、ビヘイビア表記の機能に沿ったブロック分割を行なっているが、その後、ステップST14で、配線長までは考慮しなくても、信号の遷移頻度から重みを算出し、ステップST15でブロック間信号線重みの適正を判断を行なってからステップST12のブロック生成をやり直すフローを繰り返すので、ステップST15の段階で、ある程度ブロック間信号線の消費電力や遅延が過大にならないように適正なブロック分割が行なわれる。したがって、トランスフォーメーション以下の処理で、第2のブロック間信号線重みが第2の閾値以上になることによって再分割する確率が低減する。
さらに、ステップST16〜ST21の処理で、従来から行なわれている高位合成の処理,つまり、トランスフォーメーション,スケジューリング,アロケーション,バインディングを行なった後、仮フロアプランによって得られるブロック間配線の長さに関する情報を用いて、信号の遷移頻度と配線長とを考慮したブロック間配線の消費電力や遅延を適正化処理を行なうことで、高位合成後においてブロック間配線の消費電力や遅延が過大になることに起因する高位合成のやり直しを少なくすることができる。
また、ステップST11からST23までの処理を、第1,第2の閾値の設定を除いてすべて自動を行なうことができるので、ステップST11〜ST23までを行なうのに要する期間は非常に短くて済む。
なお、本実施形態では、ブロック配置がほぼ適正化された状態で、下流側の設計においてモジュールの生成を行なって、論理合成や配置配線を行なうことができる。
(第2の実施形態)
本実施形態においては、トランスフォーメーションを行なう前にモジュール分割し、モジュール間の重みをアプリケーションレベルシミュレーションによって算出することで、ブロック組み立てを行なう方法について説明する。
本実施形態においては、トランスフォーメーションを行なう前にモジュール分割し、モジュール間の重みをアプリケーションレベルシミュレーションによって算出することで、ブロック組み立てを行なう方法について説明する。
図11は、本実施形態における半導体集積回路装置の設計方法の手順を示すフローチャートである。
まず、ステップST31で、第1の実施形態と同様に、データベースからビヘイビア表記されたプログラムを取り込んで、プログラム中の字句,構文の解析を行なって、ビヘイビア表記の誤りがないかどうかをチェックするとともに、ビヘイビア表記で表されているシステムに含まれる機能(演算器レベル)を調べる。そして、解析の結果得られた機能を解析情報として記憶装置に格納する。
次に、ステップST32で、解析情報に基づいて、アプリケーション全体を分割して、ブロックに分割するためのモジュールを生成する。そして、このモジュール内の演算機能をノードとする第1のCDFGを生成して、これを記憶装置に格納しておく。
図12は、本実施形態において生成される第1のCDFGを示す図である。ここで、CDFG中の各ノード1〜4は、比較器,加算器,乗算器などの演算器であって、これらの複数の演算器によって1つのモジュールが構成されている。
次に、ステップST33で、第1のCDFGを取り込んで、実際のアプリケーションを動作させるアプリケーションレベルシミュレーションを行なう。このアプリケーションレベルシミュレーションにより、モジュール間配線のデータ通信量がわかる。
次に、ステップST34で、アプリケーションシミュレーションによって明らかになったプロファイル情報から算出される各モジュール間の信号線の重みを第1のモジュール間に信号線重みwとして算出する。すなわち、アプリケーションレベルシミュレーションにより、各モジュール間で、どのようなデータがどれぐらい転送されているのかということがプロファイル情報として得られるので、このモジュール間のデータ通信量の関数として、第1のモジュール間信号線重みwを算出する。
図13は、各モジュールM1〜M7と、これらを接続する信号線の第1のモジュール間信号線重みw1〜w12を説明するための図である。同図に示すように、各モジュールの間の配線に対してデータの通信量に応じた重みW1〜w12が定められている。
次に、ステップST35で、第1のCDFGとモジュール間信号線の重み情報とを利用して、ブロックを生成する(グループ分け)。このブロックは、モジュール間信号線の重みから、各ブロックの入出力信号線のデータ通信量の総和ができるだけ小さくなるように生成される。
次に、ステップS36で、第1のCDFGを取り込んで上述のトランスフォーメーションを行なう。このトランスフォーメーションによって、上述の図1(c)又は図2(d)に示すような第2のCDFGが生成される。次に、ステップST37で、スケジューリングを行ない、第2のCDFG中の処理(ノード)の実行タイミングをクロック・サイクルに割り当てて、図1(d)又は図3(b)に示す第3のCDFGを生成する。
次に、ステップST38で、HWライブラリ中のHW規模情報を取り込んで、第3のCDFGから上述のアロケーションを行なう。これにより、図1(e)又は図5(c)に示すような第1のHW資源接続グラフが生成される。
次に、ステップST39で、第1のHW資源接続グラフから上述のバインディングを行なう。このとき、図1(f)又は図6(b)に示すような第2のHW資源接続グラフを生成するとともに、第2のHW資源接続グラフ中の各HW資源を制御するステートマシーンを生成する。
次に、ステップST40で、仮フロアプランを行なって、HWライブラリからHW規模情報を取り込んで、すでに説明した図7(a),(b)に示す方法によって、第2のHW資源接続グラフ中の各HW資源間の距離を求める。そして、第2のHW資源接続グラフ中の各HW資源の仮配置を行ない、仮配置情報を出力する。このとき、HW資源間の距離は、ほぼ配線長の大まかな目安となる。
そして、ステップST41で、仮配線情報と第1のモジュール間信号線重みに基づいて、第2のモジュール間信号線重みw’を算出する。ここでは、大まかな配線長がわかっているので、第2のモジュール間信号線重みは、モジュール間のデータの通信量に配線長を乗じた値に基づいて算出することができる。具体的な方法については、後述する。そして、この第2のモジュール間信号線重みw’のうちブロック間配線となる部分の重みをブロック間信号線重みWとする。
図14は、このときのブロックの分割された状態を示す図である。同図に示すように、各ブロックB1〜B4は複数のモジュールによって構成され、各ブロック間配線となるモジュール間信号線の第2のモジュール線間信号線重みw’がブロック間信号線重みW1〜W5となっている。なお、ブロック間に複数のモジュール間信号線がある場合は、ブロック間信号線重み(例えば、W5)は、複数の第2のモジュール間信号線重みの和(例えばwn’+wm’)となっている。また、モジュール間信号線重みとして配線長のみ,配線遷移頻度のみ又は配線容量のみを組み込んだ重み付けを行なってもよいし、配線容量と配線遷移頻度を組み込んだ重み付けを行なってもよい。
次に、ステップST42で、ブロック間信号線重みWが適正か否かを判断する。すなわち、ブロック間信号線重みWがその閾値よりも小さいか否かを判断し、すべてのブロック間信号線重みが閾値よりも小さければ(OK)、ステップST43に進んでHDLを出力する。
一方、ブロック間信号線重みWのうちの1つでも閾値以上であれば(NG)、ステップST35に戻ってブロックの生成をやり直す。すなわち、モジュールによるブロックの組み立て方を変更することにより、ブロック間信号線となるモジュール間信号線の一部を変更してから、再びステップST35〜ST42の処理を実行する。
本実施形態によると、基本的には、上記第1の実施形態と同様に、高位合成において、モジュール分割を通じて消費電力や遅延を考慮したブロック分割を行なうことができる。すなわち、システムのビヘイビア表記のレベルで記述されたブロック分割にとらわれることなく、アプリケーションが要するブロック間の通信量や配線長が小さくなるように個々のモジュールをまとめてブロックを構成するため、ブロック間の通信や配線容量による消費電力の削減や、遅延の低減を図ることができる。
特に、第1の実施形態とは異なり、当初からブロックではなくモジュールという単位でアプリケーション全体を分割し、その後ブロックを構成するように各モジュールをグループ分けするので、上記第1の実施形態よりも効率よくブロックを生成することができる利点がある。
(第3の実施形態)
本実施形態においては、トランスフォーメーションを行なってから、モジュール分割し、モジュール間の重みをアプリケーションレベルシミュレーションによって算出することで、ブロック組み立てを行なう方法について説明する。
本実施形態においては、トランスフォーメーションを行なってから、モジュール分割し、モジュール間の重みをアプリケーションレベルシミュレーションによって算出することで、ブロック組み立てを行なう方法について説明する。
図15は、本実施形態における半導体集積回路装置の設計方法の手順を示すフローチャートである。
まず、ステップST51で、第1の実施形態と同様に、データベースからビヘイビア表記されたプログラムを取り込んで、プログラム中の字句,構文の解析を行なって、ビヘイビア表記の誤りがないかどうかをチェックするとともに、ビヘイビア表記で表されているシステムに含まれる機能を調べる、そして、解析の結果得られた機能を解析情報として記憶装置に格納する。
次に、ステップS52で、解析情報を取り込んで、解析情報をHWライブラリに登録されたHW資源によって回路に置き換えることができるように、上述のトランスフォーメーションを行なう。このトランスフォーメーションによって、上述の図12に示すような第1のCDFGが生成される。
次に、ステップST53で、解析情報に基づいて、アプリケーション全体を分割して、ブロックに分割するためのモジュールを生成する。このとき、複数のノードによりモジュールが構成されている状態を示す第2のCDFGを生成し、これを記憶装置に格納しておく。ここで、第2のCDFG中の各ノードは、図12に示す第1のCDFG上のノードと同様に、比較器,加算器,乗算器などの演算器である。そして、これらの複数の演算器によって1つのモジュールが構成されている。
その後、ステップST54〜ST63で、第2の実施形態におけるステップST33〜ST43(ステップST36を除く)と同様の処理を行なう。
すなわち、本実施形態においては、モジュール生成及びブロック生成がトランスフォーメーションの後で行なわれる点のみが、第2の実施形態と異なる。
したがって、本実施形態によっても、基本的には、上述の第2の実施形態と同様の効果を発揮することができる。
加えて、本実施形態では、トランスフォーメーションへの情報のフィードバックを行なってからモジュール分割,ブロック分割が可能となるので、後述するように、トランスフォーメーションによる設計の最適化を図ることができる利点がある。
(第4の実施形態)
本実施形態においては、トランスフォーメーション〜バインディングを行なってから、モジュール分割し、モジュール間の重みをアプリケーションレベルシミュレーションによって算出することで、ブロック生成を行なう方法について説明する。
本実施形態においては、トランスフォーメーション〜バインディングを行なってから、モジュール分割し、モジュール間の重みをアプリケーションレベルシミュレーションによって算出することで、ブロック生成を行なう方法について説明する。
図16は、本実施形態における半導体集積回路装置の設計方法の手順を示すフローチャートである。
まず、ステップST71で、第1の実施形態と同様に、データベースからビヘイビア表記されたプログラムを取り込んで、プログラム中の字句,構文の解析を行なって、ビヘイビア表記の誤りがないかどうかをチェックするとともに、ビヘイビア表記で表されているシステムに含まれる機能を調べる。そして、解析の結果得られた機能を解析情報として記憶装置に格納する。
次に、ステップST72で、解析情報を取り込んで、解析情報をHWライブラリに登録されたHW資源によって回路に置き換えることができるように、上述のトランスフォーメーションを行なう。このトランスフォーメーションによって、上述の図12に示すような第1のCDFGが生成される。
次に、ステップST73で、スケジューリングを行ない、第1のCDFG中の処理(ノード)の実行タイミングをクロック・サイクルに割り当てて、図1(d)又は図3(b)に示す第2のCDFGを生成する。
次に、ステップST74で、HWライブラリ中のHW規模情報を取り込んで、第3のCDFGから上述のアロケーションを行なう。これにより、図1(e)又は図5(c)に示すような第1のHW資源接続グラフが生成される。
次に、ステップST75で、第1のHW資源接続グラフから上述のバインディングを行なう。このとき、図1(f)又は図6(b)に示すような第2のHW資源接続グラフを生成するとともに、第2のHW資源接続グラフ中の各HW資源を制御するステートマシーンを生成する。
次に、ステップST76で、第2のHW資源接続グラフを解析して、アプリケーション全体を分割して、ブロックを組み立てるためのモジュールを生成する。このとき、複数の演算器によりモジュールが構成されている状態を示す第3のHW資源接続グラフを生成し、これを記憶装置に格納しておく。
次に、ステップST77で、第3のHW資源接続グラフを取り込んで、実際のアプリケーションを動作させるアプリケーションレベルシミュレーションを行なう。このアプリケーションレベルシミュレーションにより、モジュール間配線のデータ通信量がわかる。
次に、ステップST78で、アプリケーションシミュレーションによって明らかになったプロファイル情報から算出される各モジュール間の信号線の重みを第1のモジュール間に信号線重みwとして算出する。すなわち、アプリケーションレベルシミュレーションにより、各モジュール間で、どのようなデータがどれぐらい転送されているのかということがプロファイル情報として得られるので、このモジュール間のデータ通信量の関数として、図13に示すような第1のモジュール間重みwを算出する。
次に、ステップST79で、モジュール間信号線の重み情報を利用して、ブロックを生成する(グループ分け)。このブロックは、モジュール間信号線の重みから、各ブロックの入出力信号線のデータ通信量の総和ができるだけ小さくなるように生成される。
次に、ステップST80で、仮フロアプランを行なって、HWライブラリからHW規模情報を取り込んで、すでに説明した図7(a),(b)に示す方法によって、第3のHW資源接続グラフ中の各HW資源間の距離を求める。そして、第3のHW資源接続グラフ中の各HW資源の仮配置を行ない、仮配置情報を出力する。このとき、HW資源間の距離は、ほぼ配線長の大まかな目安となる。
そして、ステップST81で、仮配線情報と第1のモジュール間信号線重みとに基づいて、第2のモジュール間信号線重みw’を算出する。ここでは、大まかな配線長がわかっているので、第2のモジュール間信号線重みは、モジュール間のデータの通信量に配線長を乗じた値に基づいて算出することができる。具体的な方法については、後述する。そして、図14に示すように、この第2のモジュール間信号線重みw’のうちブロック間配線となる部分の重みをブロック間信号線重みWとすることができる。
次に、ステップST82で、ブロック間信号線重みWが適正か否かを判断する。すなわち、ブロック間信号線重みWがその閾値よりも小さいか否かを判断し、すべてのブロック間信号線重みが閾値よりも小さければ(OK)、ステップST83に進んでHDLを出力する。
一方、ブロック間信号線重みWのうちの1つでも閾値以上であれば(NG)、ステップST79に戻ってブロックの生成からやり直す。すなわち、モジュールによるブロックの組み立て方を変更することにより、ブロック間信号線となるモジュール間信号線の一部を変更してから、再びステップST80〜ST82の処理を実行する。
本実施形態においても、基本的には上記第1の実施形態と同様に、高位合成において、モジュール分割を通して、消費電力や遅延を考慮したブロック分割を行なうことができる。
特に、本実施形態においては、ステップST52〜ST75のトランスフォーメーション,スケジューリング,アロケーション,バインディングによって、HW資源の接続関係が決定された後に、ステップST76,ST79で、モジュール生成,ブロック分割が行なわれる。すなわち、バインディング後のHW資源が割り当てられた時点でモジュール生成が行なわれるため、共有化が可能なHW資源は共有化するなど、モジュール自体がある程度最適化された複数の演算器によって構成されている。つまり、第1〜第3の実施形態では、モジュールやタスク間ではバインディングできなかったが、本実施形態においては、このようなモジュールやブロックが生成されていないので、第1のHW資源接続グラフ中の各HW資源を自由にバインディングすることができる。したがって、システム全体のHW資源を特に有効に活用しつつ、消費電力や遅延を考慮した設計効率の向上を図ることができる。
また、本実施形態では、トランスフォーメーション又はバインディングへの情報のフィードバックを行なってからモジュール分割,ブロック分割が可能となるので、後述するように、トランスフォーメーション又はバインディングによる設計の最適化を図ることができる利点がある。
(第5の実施形態)
本実施形態においては、上記第1〜第4の実施形態の少なくともいずれか1つの高位合成を行なった後の論理合成,配置配線を行なう方法について、以下の各具体例に沿って説明する。
本実施形態においては、上記第1〜第4の実施形態の少なくともいずれか1つの高位合成を行なった後の論理合成,配置配線を行なう方法について、以下の各具体例に沿って説明する。
−第1の具体例−
図17は、第1の具体例における論理合成,配置配線の手順を示すフローチャートである。
図17は、第1の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST101で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST102で、HDL中の論理ブロックをマクロセルの組み合わせによって構成されるネットリストに変換するための論理合成を行なう。ここでは、高位合成で分割されたブロック及び階層構造を保持するような論理合成が適用され、ネットリストにおいてもブロックと同じ認識可能な情報を保持するように論理合成を行なう。
次に、ネットリストの情報と、高位合成で得られた位置決定情報とを用いた配置配線(レイアウト設計)を行なう。すなわち、すでに説明した図8に示すフローに沿って、ブロック内への演算器などの配置及び配線と、各ブロックの配置及び各ブロック間の配線とが行なわれる。そして、最終的に半導体装置集積回路装置のレイアウトが出力される。
本具体例によると、高位合成において消費電力の削減や遅延の低減という観点から最適化されたブロック,モジュールなどの位置情報に基づいて、論理合成,配置配線を自動的に行なうことが可能になる。
−第2の具体例−
図18は、第2の具体例における論理合成,配置配線の手順を示すフローチャートである。
図18は、第2の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST111で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST112で、HDLを入力して、配線の遷移頻度についてのシミュレーションを行なう。すなわち、HDLシミュレータを用いて、アプリケーションを実行させると、各信号線(配線)のトグル頻度(遷移頻度)が求まり、この遷移頻度は高位合成におけるアプリケーションレベルシミュレーションから得られる遷移頻度よりも精度の高い値である。そして、この配線遷移頻度についての情報を高位合成にフィードバックする。このフィードバックは、第2の実施形態においては、図11のステップST41における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、第3の実施形態においては、図15のステップST61における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、第4の実施形態においては、図16のステップST81における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、行なわれる。
その後、ステップST113,ST114で、上記第1の具体例と同様の論理合成,配置配線を行なう。
本具体例によると、アプリケーションレベルシミュレーションに比べてより精度の高いHDLシミュレーションによる配線遷移頻度の情報を、高位合成におけるブロック分割又は組み立てに反映させることができるので、第2回目以降の高位合成によって、設計精度がさらに向上する。よって、消費電力の削減や遅延の低減の効果の高いブロック分割又はブロックの組み立てを行なうことが可能になる。
−第3の具体例−
図19は、第3の具体例における論理合成,配置配線の手順を示すフローチャートである。
図19は、第3の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST121で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST122で、上記第1の具体例と同様の論理合成を行なう。次に、ステップST123で、論理合成によって得られたネットリストを用いて仮配線を行なった後、ステップST124で、論理シミュレータ上でアプリケーションを実行させることにより、仮配線シミュレーションを行なう。そして、この仮配線シミュレーションによって、配線のトグル数だけでなく、配線容量についても測定を行なう。そして、この配線遷移頻度及び配線容量についての仮配線情報を出力し、高位合成にフィードバックする。このフィードバックは、第2の実施形態においては、図11のステップST41における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、第3の実施形態においては、図15のステップST61における第2のモジュール間信号線重み及びブロック間信号線重みの算出をやり直すように、第4の実施形態においては、図16のステップST81における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、行なわれる。
本具体例によると、アプリケーションレベルシミュレーションに比べてより精度の高い仮配線シミュレーションによる配線遷移頻度及び配線容量の情報を、高位合成におけるブロック分割又は組み立てに反映させることができるので、第2回目以降の高位合成によって、設計精度がさらに向上する。よって、消費電力の削減や遅延の低減の効果の高いブロック分割又はブロックの組み立てを行なうことが可能になる。
−第4の具体例−
図20は、第4の具体例における論理合成,配置配線の手順を示すフローチャートである。
図20は、第4の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST131で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST132,ST133で、上記第1の具体例と同様の論理合成,配置配線を行なう。
次に、ステップST134で、配置配線によって得られたレイアウト上の回路を用いて、論理シミュレータ又はSPICE上でアプリケーションを実行させることにより、実配線シミュレーションを行なう。そして、この実配線シミュレーションによって、配線のトグル数だけでなく、配線容量も測定する。そして、配線遷移頻度及び配置配線によるレイアウト情報としての配線容量についての実配線情報を出力し、高位合成にフィードバックする。このフィードバックは、第2の実施形態においては、図11のステップST41における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、第3の実施形態においては、図15のステップST61における第2のモジュール間信号線重み及びブロック間信号線重みの算出をやり直すように、第4の実施形態においては、図16のステップST81における第2のモジュール間信号線重み及びブロック間信号線重みの算出を再度やり直すように、行なわれる。
本具体例によると、仮配線シミュレーションに比べてより精度の高い実配線シミュレーションによる配線容量の情報を、高位合成におけるブロック分割又は組み立てに反映させることができるので、第2回目以降の高位合成によって、設計精度がさらに向上する。よって、消費電力の削減効果や遅延の低減効果の高いブロック分割又はブロックの組み立てを行なうことが可能になる。
−第5の具体例−
図21は、第5の具体例における論理合成,配置配線の手順を示すフローチャートである。
図21は、第5の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST141で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST142で、第2の具体例と同様に、HDLを入力して、配線の遷移頻度についてのシミュレーションを行なう。すなわち、HDLシミュレータを用いて、アプリケーションを実行させて、各信号線(配線)のトグル頻度(遷移頻度)を求め、この配線遷移頻度に関する情報を、上記第2の具体例において説明した各実施形態における高位合成のステップにフィードバックする。
次に、ステップST143で、上記第1の具体例と同様の論理合成を行なう。次に、ステップST144で、論理合成によって得られたネットリストを用いて仮配線を行なった後、ステップST145で、上記第3の具体例と同様に、論理シミュレータ上でアプリケーションを実行させることにより、仮配線シミュレーションを行なう。そして、この仮配線シミュレーションによって、得られた配線遷移頻度及び配線容量についての仮配線情報を出力し、高位合成にフィードバックする。このフィードバックは、上記第3の具体例と同様に行なわれる。
本具体例によると、まず、シミュレーション時間が比較的短く、出力情報の精度の低いHDLシミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第1の閾値Xよりも小さくなるようにブロック分割の精度が高められる。次に、シミュレーション時間が中程度でシミュレーション精度が中程度の仮配線シミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第2の閾値Yよりも小さくなるようにブロック分割の精度がさらに高められる。
そして、このような2種類のフィードバック情報を高位合成に利用することにより、設計の手戻り回数を低減することができる。
−第6の具体例−
図22は、第6の具体例における論理合成,配置配線の手順を示すフローチャートである。
図22は、第6の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST151で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST152で、第2の具体例と同様に、HDLを入力して、配線の遷移頻度についてのシミュレーションを行なう。すなわち、HDLシミュレータを用いて、アプリケーションを実行させて、各信号線(配線)のトグル頻度(遷移頻度)を求め、この配線遷移頻度に関する情報を、上記第2の具体例において説明した各実施形態における高位合成中のステップにフィードバックする。
次に、ステップST153,ST154で、上記第1の具体例と同様の論理合成,配置配線を行なう。次に、ステップST155で、配置配線によって得られたレイアウト上の回路を用いて、論理シミュレータ又はSPICE上でアプリケーションを実行させることにより、実配線シミュレーションを行なう。そして、この実配線シミュレーションによって、配線のトグル数だけでなく、配線容量も測定する。そして、配線遷移頻度及び配置配線によるレイアウト情報としての配線容量についての実配線情報を出力し、高位合成にフィードバックする。このフィードバックは、上記第4の具体例と同様に行なわれる。
本具体例によると、まず、シミュレーション時間が比較的短く、出力情報の精度の低いHDLシミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第1の閾値Xよりも小さくなるようにブロック分割の精度が高められる。次に、シミュレーション時間が比較的長くシミュレーション精度が高い実配線シミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第2の閾値Zよりも小さくなるようにブロック分割の精度がさらに高められる。
そして、このような2種類のフィードバック情報を高位合成に利用することにより、設計の手戻り回数を低減することができる。
−第7の具体例−
図23は、第7の具体例における論理合成,配置配線の手順を示すフローチャートである。
図23は、第7の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST161で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST162で、第1の具体例と同様の論理合成を行なう。次に、ステップST163で、論理合成によって得られたネットリストを用いて仮配線を行なった後、ステップST164で、上記第3の具体例と同様に、論理シミュレータ上でアプリケーションを実行させることにより、仮配線シミュレーションを行なう。そして、この仮配線シミュレーションによって、得られた配線遷移頻度及び配線容量についての仮配線情報を出力し、高位合成にフィードバックする。このフィードバックは、上記第3の具体例と同様に行なわれる。
次に、ステップST165で、上記第1の具体例と同様の配置配線を行なう。次に、ステップST166で、配置配線によって得られたレイアウト上の回路を用いて、論理シミュレータ又はSPICE上でアプリケーションを実行させることにより、実配線シミュレーションを行なう。そして、この実配線シミュレーションによって、配線のトグル数だけでなく、配線容量も測定する。そして、配線遷移頻度及び配置配線によるレイアウト情報としての配線容量についての実配線情報を出力し、高位合成にフィードバックする。このフィードバックは、上記第4の具体例と同様に行なわれる。
本具体例によると、まず、シミュレーション時間が中程度で出力情報の精度も中程度の仮配線シミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第1の閾値Yよりも小さくなるようにブロック分割の精度が高められる。次に、シミュレーション時間が比較的長くシミュレーション精度が高い実配線シミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第2の閾値Zよりも小さくなるようにブロック分割の精度がさらに高められる。
そして、このような2種類のフィードバック情報を高位合成に利用することにより、設計の手戻り回数を低減することができる。
−第8の具体例−
図24は、第8の具体例における論理合成,配置配線の手順を示すフローチャートである。
図24は、第8の具体例における論理合成,配置配線の手順を示すフローチャートである。
まず、ステップST171で、アプリケーションプログラムを入力して、上記各実施形態の高位合成を行なう。その結果、上述のようなHDLと位置決定情報とが得られる。
次に、ステップST172で、第2の具体例と同様に、HDLを入力して、配線の遷移頻度についてのシミュレーションを行なう。すなわち、HDLシミュレータを用いて、アプリケーションを実行させて、各信号線(配線)のトグル頻度(遷移頻度)を求め、この配線遷移頻度に関する情報を、上記第2の具体例において説明した各実施形態における高位合成のステップにフィードバックする。
次に、ステップST173で、第1の具体例と同様の論理合成を行なう。次に、ステップST174で、論理合成によって得られたネットリストを用いて仮配線を行なった後、ステップST175で、上記第3の具体例と同様に、論理シミュレータ上でアプリケーションを実行させることにより、仮配線シミュレーションを行なう。そして、この仮配線シミュレーションによって、得られた配線遷移頻度及び配線容量についての仮配線情報を出力し、高位合成にフィードバックする。このフィードバックは、上記第3の具体例と同様に行なわれる。
次に、ステップST176で、上記第1の具体例と同様の配置配線を行なう。次に、ステップST177で、配置配線によって得られたレイアウト上の回路を用いて、論理シミュレータ又はSPICE上でアプリケーションを実行させることにより、実配線シミュレーションを行なう。そして、この実配線シミュレーションによって、配線のトグル数だけでなく、配線容量も測定する。そして、配線遷移頻度及び配置配線によるレイアウト情報としての配線容量についての実配線情報を出力し、高位合成にフィードバックする。このフィードバックは、上記第4の具体例と同様に行なわれる。
本具体例によると、上述のHDLシミュレーションを行なうことによる効果に加えて、まず、シミュレーション時間が中程度で出力情報の精度も中程度の仮配線シミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第2の閾値Yよりも小さくなるようにブロック分割の精度が高められる。さらに、シミュレーション時間が比較的長くシミュレーション精度が高い実配線シミュレーションの出力を高位合成にフィードバックすることで、高位合成におけるブロック間信号線重みが第3の閾値Zよりも小さくなるようにブロック分割の精度がさらに高められる。
そして、このような3種類のフィードバック情報を高位合成に利用することにより、設計の手戻り回数も低減することができる。
(第6の実施形態)
本実施形態においては、上記第1〜第4の実施形態に限られずに、高位合成一般に適用しうるブロックの生成(分割又は組み立て)方法や、ブロックの再分割方法について説明する。ただし、本実施形態の方法は、上記第1〜第4の実施形態におけるブロックの生成(分割又は組み立て)や、図9のステップST15及びST22,図11のステップST42,図15のステップST62及び図16のステップST82の判別によるフィードバック(第5の実施形態におけるHDL生成後のシミュレーションによる情報のフィードバックを受けたときを含む)を受けてブロックを再分割するときの処理方法にも適用することができる。
本実施形態においては、上記第1〜第4の実施形態に限られずに、高位合成一般に適用しうるブロックの生成(分割又は組み立て)方法や、ブロックの再分割方法について説明する。ただし、本実施形態の方法は、上記第1〜第4の実施形態におけるブロックの生成(分割又は組み立て)や、図9のステップST15及びST22,図11のステップST42,図15のステップST62及び図16のステップST82の判別によるフィードバック(第5の実施形態におけるHDL生成後のシミュレーションによる情報のフィードバックを受けたときを含む)を受けてブロックを再分割するときの処理方法にも適用することができる。
−ブロック分割及び再分割−
図25(a),(b)は、高位合成において行なわれる本実施形態のブロックの分割,再分割の例を示す図である。
図25(a),(b)は、高位合成において行なわれる本実施形態のブロックの分割,再分割の例を示す図である。
図9に示すフローにおいて、ステップST12で、情報のフィードバックがまだ入力されていない最初の処理においては、すでに説明したように、アプリケーションプログラムのビヘイビア表記の字句,構文の解析を行なった結果に基づいて機能的に意味のある処理を1つのタスクとする第1のCDFG(タスクグラフ)を生成する。このタスクは1つ以上のサブタスクにより構成されている。このサブタスクは、モジュール生成を行なう第2,第3,第4の実施形態においては、モジュールに相当するものである。例えば、図25(a)に示すように、TaskB内に、Sub-TaskB0,Sub-TaskB1,Sub-TaskB2が含まれているとする。TaskA,TaskCにもサブタスクが含まれているが、図25(a),(b)にはそれらの図示が省略されている。図25(a),(b)に示すアーク(矢印)はデータ通信を意味する。また、タスクグラフ中の各タスクは1つのHWブロックに対応し、あるブロックから別のブロックに至るアークはブロック間配線に対応する。アプリケーションのプログラムのシミュレーション結果から得られる実行プロファイルや実行トレースなどの情報のフィードバックにより、タスク間のデータ通信量(ブロック間配線の遷移頻度)を推定することができる。
具体的な例でいうと、図9のステップST12でフィードバック情報がない最初のブロック分割は、生成されたタスクグラフに基づいて行なう。このとき、アークに対応する配線長や、配線遷移頻度はまだわかっていないので、初期値としてある値を与える。この初期値は、一律に与えてもよいし、すでに優先的に配置したいタスクが判明している場合には、そのタスクが優先的に配置されるように与える。
その後、例えば図9のステップST15からのフィードバックを受ける場合には、アプリケーションレベルシミュレーションによってタスク間のデータ通信量(ブロック間配線の遷移頻度)がある程度具体的に判るので、これを用いてブロックの再分割を行なうことになる。たとえば、図9のステップST22,図11のステップST42,図15のステップST62及び図16のステップST82からのフィードバックの際には、ブロック間の距離(図25(a)に示すアークの長さ)がわかっているので、配線長と配線遷移頻度とを考慮して初期値に対する重み付けを行ない、アークに対応する配線長と、配線遷移頻度を用いて初期値を更新する。これにより、各タスクの配置後における各タスク間のアーク(ブロック間配線)に対応する配線長,配線遷移頻度が求まるので、次の過程では、この値に基づいてブロックの再分割(又は統合)を行なうことができる。また、例えば、第5の実施形態におけるHDLシミュレーション後のフィードバックを受けた後に、さらにステップST22などからのフィードバックを受けてブロック再分割を行なう場合には、ブロック間配線の遷移頻度がより正確にわかっている。さらに、例えば、第5の実施形態における仮配線シミュレーション又は実配線シミュレーション後のフィードバックを受けた後に、さらにステップST22などからのフィードバックを受けてブロックの再分割を行なう場合には、配線遷移頻度,配線長及び配線容量がわかっているので、これらすべてを考慮した重み付けが可能となる。
例えば、図25(a)において、TaskAからTaskBへのアークの遷移頻度あるいはデータ転送量が大きく、一方、Sub-TaskB0からSub-TaskB1へのデータ転送量が少ないことが判明したとする。このような場合としては、TaskAから大量の配列データ(ベクトルデータ)が転送され、Sub-TaskB0ではTaskAから送られてくる配列データに対して処理を行ない、最終的な結果として1つの値をSub-TaskB1に渡すような処理を行なう場合がある。このような関係が各タスク間にある場合には、TaskB内のSub-TaskB0をTaskAのブロック内に移動させることにより、TaskAのブロックとTaskBのブロックとの間におけるデータ転送量,あるいは配線遷移頻度を低減することができる。つまり、配線長の長いブロック間配線におけるデータ転送量又は配線遷移頻度を低減することで、システムの消費電力や遅延の低減を図ることができる。
−重み付け計算−
(1) 配線長
図26(a),(b)は、ブロック間信号線重みの計算方法を示す図である。最初の処理において、図26(a)に示すように、TaskM,N,O,L,Kが分割されたものとする。このとき、各ブロック間のアーク(ブロック間配線)に対する配線長の初期値Li が設定されている。例えば、TaskM−N間配線の配線長の初期値Li-mnと、TaskN−O間配線の配線長の初期値Li-noと、TaskM−L間配線の配線長の初期値Li-mlと、TaskL−K間配線の配線長の初期値Li-lkとが設定されているものとする。このとき、フィードバック情報として、実配線長,仮配線長,位置情報などが与えられると、図26(b)に示すように、各ブロック間の配線長,位置情報の値を正規化した比率α(αmn,αno,αml,αlk)を初期値Li に掛けることにより、新たなブロック間配線情報(図26(b)に示す値)を生成する。文献“Neil H.E.Weste,Kamran Eshraghian,Principles of CMOS VLSI Design, A System Perspective, Second Edition ADDSION-WESLEY PUBLISHING COMPANY ”の“4.3 Capacitance Estimation”にあるように、配線遅延は配線長に比例する関数であるので、配線遅延を抑制するためには配線長情報を用いることが有効である。もちろん、与えられたフィードバック情報で初期値Li を置き換えることで、新たなブロック間配線情報を生成することも可能である。特に、実配線長がフィードバックされる場合には、実際の値を使用する方が推定精度が向上する。そして、ブロック間配線長Lと許容される上限値Lmax (閾値)とを比較することにより、例えば、図11のステップST42,図15のステップST62及び図16のステップST82のような判別を行なうことができる。つまり、L≦Lmax である場合には次のステップに進み、L>Lmax の場合には、L≦Lmax になるように、ブロックの再組み立て又はブロックの再分割を行なうことができる。
(1) 配線長
図26(a),(b)は、ブロック間信号線重みの計算方法を示す図である。最初の処理において、図26(a)に示すように、TaskM,N,O,L,Kが分割されたものとする。このとき、各ブロック間のアーク(ブロック間配線)に対する配線長の初期値Li が設定されている。例えば、TaskM−N間配線の配線長の初期値Li-mnと、TaskN−O間配線の配線長の初期値Li-noと、TaskM−L間配線の配線長の初期値Li-mlと、TaskL−K間配線の配線長の初期値Li-lkとが設定されているものとする。このとき、フィードバック情報として、実配線長,仮配線長,位置情報などが与えられると、図26(b)に示すように、各ブロック間の配線長,位置情報の値を正規化した比率α(αmn,αno,αml,αlk)を初期値Li に掛けることにより、新たなブロック間配線情報(図26(b)に示す値)を生成する。文献“Neil H.E.Weste,Kamran Eshraghian,Principles of CMOS VLSI Design, A System Perspective, Second Edition ADDSION-WESLEY PUBLISHING COMPANY ”の“4.3 Capacitance Estimation”にあるように、配線遅延は配線長に比例する関数であるので、配線遅延を抑制するためには配線長情報を用いることが有効である。もちろん、与えられたフィードバック情報で初期値Li を置き換えることで、新たなブロック間配線情報を生成することも可能である。特に、実配線長がフィードバックされる場合には、実際の値を使用する方が推定精度が向上する。そして、ブロック間配線長Lと許容される上限値Lmax (閾値)とを比較することにより、例えば、図11のステップST42,図15のステップST62及び図16のステップST82のような判別を行なうことができる。つまり、L≦Lmax である場合には次のステップに進み、L>Lmax の場合には、L≦Lmax になるように、ブロックの再組み立て又はブロックの再分割を行なうことができる。
(2) 配線遷移頻度
第1の実施形態においては、最初のブロック分割(生成)において与えられた各ブロック間のアークに対するブロック間信号線情報に対して、フィードバックされたブロック間信号線情報に配線遷移頻度を正規化した比率β(βmn,βno,βml,βlk)を掛けることにより、新たなブロック間配線遷移頻度情報S(Smn,Sno,Sml,Slk)を生成する。これにより、各ブロック間配線における消費電力の概略値を演算することが可能になる。
第1の実施形態においては、最初のブロック分割(生成)において与えられた各ブロック間のアークに対するブロック間信号線情報に対して、フィードバックされたブロック間信号線情報に配線遷移頻度を正規化した比率β(βmn,βno,βml,βlk)を掛けることにより、新たなブロック間配線遷移頻度情報S(Smn,Sno,Sml,Slk)を生成する。これにより、各ブロック間配線における消費電力の概略値を演算することが可能になる。
“Principles of CMOS VLSI Design, A System Perspective, Second Edition”の“4.7 Power Dissipation ”に記載されているように、回路のダイナミック消費電力は配線の遷移頻度に比例する関数である。つまり、配線の遷移率a,配線容量C,電源電位V,周波数fにおける各配線の消費電力Pは、下記式
P=a・C・V2 ・f
で表される。したがって、消費電力を抑制するためには、この新たな配線遷移頻度情報を利用することは有効であることがわかる。
P=a・C・V2 ・f
で表される。したがって、消費電力を抑制するためには、この新たな配線遷移頻度情報を利用することは有効であることがわかる。
また、最初のブロック間配線情報(配線遷移頻度)に対して、正規化した比率βではなく遷移頻度そのものを掛けることや、シミュレーション等で得られたより正確な遷移頻度で置き換えることも可能である。そして、各ブロック間配線における消費電力の総和(ΣP)と許容される上限値Pmax とを比較することにより、図9のステップST15のような判別を行なうことができる。すなわち、各ブロック間配線の消費電力の総和(ΣP)が上限値Pmax を越えない場合(ΣP≦Pmax )には次のステップに進み、各ブロック間配線の消費電力の総和(ΣP)が上限値Pmax を越える場合(ΣP>Pmax )にはブロックの再分割又は再組み立てを行なうことができる。
ただし、図9のステップST22,図11のステップST42,図15のステップST62及び図16のステップST82においても、配線遷移頻度のみを考慮したブロック間信号線重みの可否判断を行なうことが可能である。また、第1の実施形態においては、仮フロアプランによってある程度のブロック間距離がわかってからは、配線遷移頻度だけでなく配線長や配線容量を組み込んで、図9のステップST22における重み付けの可否判断が可能になる。
(3) 配線容量
最初のブロック分割(生成)において与えられた各ブロック間のアークに対するブロック間信号線情報に対して、フィードバックされたブロック間信号線情報に配線容量を正規化した比率γ(γmn,γno,γml,γlk)を掛けることにより、新たなブロック間配線容量情報T(Tmn,Tno,Tml,Tlk)を生成する。
最初のブロック分割(生成)において与えられた各ブロック間のアークに対するブロック間信号線情報に対して、フィードバックされたブロック間信号線情報に配線容量を正規化した比率γ(γmn,γno,γml,γlk)を掛けることにより、新たなブロック間配線容量情報T(Tmn,Tno,Tml,Tlk)を生成する。
上記式 P=a・C・V2 ・fから明らかなように、回路のダイナミック消費電力は配線容量に比例する関数である。したがって、消費電力を抑制するためには、配線容量情報を利用することは有効であることがわかる。ただし、配線容量は配線長から近似的に算出することができる。
また、最初のブロック間配線容量情報に対して、正規化した比率γではなく配線容量そのものを掛けることや、シミュレーション等で得られたより正確な配線容量で置き換えることも可能である。そして、各ブロック間配線における消費電力の総和(ΣP)と許容される上限値Pmax とを比較することにより、図9のステップST22,図11のステップST42,図15のステップST62及び図16のステップST82のような判別を行なうことができる。すなわち、各ブロック間配線の消費電力の総和(ΣP)が上限値Pmax を越えない場合(ΣP≦Pmax )には次のステップに進み、各ブロック間配線の消費電力の総和(ΣP)が上限値Pmax を越える場合(ΣP>Pmax )にはブロックの再分割又は再組み立てを行なうことができる。
(4) 配線長&配線遷移頻度,配線容量&配線遷移頻度
上述の配線長,配線遷移頻度,配線容量というパラメータについて、これらのパラメータを単独ではなくいくつかを組み合わせてブロック間配線重みを判断することができる。
上述の配線長,配線遷移頻度,配線容量というパラメータについて、これらのパラメータを単独ではなくいくつかを組み合わせてブロック間配線重みを判断することができる。
すなわち、ブロック間信号線重みの初期値に対して、上述のような各パラメータについての正規化された比率を掛けることや、フィードバック情報そのものを利用する(置き換える)ことができる。配線容量は、配線の単位長さ当たりの容量をC unit-lengthとすると、配線長に比例する関数として表される。また、配線遅延は、配線の抵抗成分(R)と容量(C)との関数である。そして、図9のステップST22,図11のステップST42,図15のステップST62,図16のステップST82において、これらをすべて組み込んだブロック間信号線重みに基づいて、ブロック分割の可否判断を行なうことができる。したがって、これらを組み合わせて用いることにより、配線遅延と消費電力との双方に関するより詳細なブロック間配線情報が得られるので、遅延時間,消費電力の値の精度が向上することになる。
(第7の実施形態)
本実施形態においては、上記第5の実施形態におけるHDL生成後の各種シミュレーションの結果得られた情報を、第1〜第4の実施形態におけるブロック間信号線重みの算出ステップではなく、トランスフォーメーションやバインディングのステップに戻す例について説明する。
本実施形態においては、上記第5の実施形態におけるHDL生成後の各種シミュレーションの結果得られた情報を、第1〜第4の実施形態におけるブロック間信号線重みの算出ステップではなく、トランスフォーメーションやバインディングのステップに戻す例について説明する。
ここで、情報のフィードバック経路について説明する。配線遷移頻度又は仮配線情報又は実配線情報をフィードバックする信号線は、モジュール間又はブロック間を接続する信号線であり、この信号線としては、例えばバス,グローバル配線(割り込みなど)がある。そして、モジュール内の信号線は、高位合成過程において最適化されているために、上述のフィードバックを行なう対象とはしない。
フィードバックする情報としては、HDLシミュレーションの結果得られる配線遷移頻度情報,仮配線シミュレーションの結果得られる仮配線情報,実配線シミュレーションの結果得られる実配線情報がある。
配線遷移頻度情報は、HDLレベルにおける論理シミュレーション(HDLシミュレーション)の結果得られるモジュール間の配線に関する遷移頻度(遷移頻度及びアクティブ頻度)を含んでいる。
仮配線情報は、仮配線後におけるSPICEなどを利用した回路シミュレーションの結果得られるモジュール間配線の長さ(配線容量),遷移頻度(あるいは配線遷移頻度及びアクティブ頻度の双方)を含んでいる。
実配線情報は、実配線後におけるSPICEなどを利用した回路シミュレーションの結果得られるモジュール間配線の長さ(配線容量),遷移頻度(あるいは配線遷移頻度及びアクティブ頻度の双方)を含んでいる。
そこで、以下の具体例においては、HDL生成後におけるシミュレーションの結果得られた情報をトランスフォーメーション又はバインディングにフィードバックする方法について説明する。
−第1の具体例(トランスフォーメーションへのフィードバック)−
高位合成は、動作レベル(ビヘイビアレベル)のハードウエア記述言語(HDL)、機能ブロック図等のスケマティック,C言語などの高級言語などによって表されたシステムを、レジスタ・トランスファ・レベル(RTL)のHDLを生成する処理といえる。このように、抽象度の高いビヘイビア表記から抽象度の低いRTL記述を得るために、高位合成では、ビヘイビア表記の意味を壊さない範囲で、ハードウエアで実現可能なレベルにシステムの表現を変換する。この処理は、C言語などの高級言語をオブジェクトコードに変換するコンパイル処理の過程と共通の要素を有している。
高位合成は、動作レベル(ビヘイビアレベル)のハードウエア記述言語(HDL)、機能ブロック図等のスケマティック,C言語などの高級言語などによって表されたシステムを、レジスタ・トランスファ・レベル(RTL)のHDLを生成する処理といえる。このように、抽象度の高いビヘイビア表記から抽象度の低いRTL記述を得るために、高位合成では、ビヘイビア表記の意味を壊さない範囲で、ハードウエアで実現可能なレベルにシステムの表現を変換する。この処理は、C言語などの高級言語をオブジェクトコードに変換するコンパイル処理の過程と共通の要素を有している。
ここで、本発明の各実施形態におけるトランスフォーメーションの処理とは、高級言語のコンパイラで一般に行なわれるフロントエンド処理中の中間言語のレベルでの式の変換に相当する。このフロントエンド処理は、刊行物「コンパイラI,II 原理・技法・ツール,A.V.エイホ,R.セシィ,J.D.ウルマン著,原田賢一約,サイエンス社」に記載されている。また、トランスフォーメーションの前処理,すなわち,字句解析,構文解析などの処理はコンパイラのフロントエンド処理で行なわれている処理と類似している。
このトランスフォーメーションは、すでに説明したように、数式への交換則や分配則の適用,関数のインライン展開,ループの1重化,ループ内に存在する定数のループ外への移動など、コンパイラにおける種々の技法を利用して行なわれる。
図27(a),(b)は、トランスフォーメーションにおける分配則の適用により消費電力の削減を図る例を示す図である。図27(a)に示すように、演算 A=B×C+B×Dを行なう機能を有する回路ブロックが、2つの乗算器と1つの加算器により構成されている場合、フィードバックされた各信号線の消費電力の総和(つまりこの回路全体の消費電力)が閾値よりも大きいときには、分配則を適用して、図27(b)に示す回路に変形することができる。この変形により、活性化される信号線の数(つまり容量)が低減されるので、回路全体の消費電力も削減される。
図28(a),(b)は、トランスフォーメーションにおけるインライン展開の適用により消費電力の削減を図る例を示す図である。図28(a)に示すように、functionAがprogPとprogQとにおいて使用されている場合、progPとprogQとをハードウエア化する際には、両者がfunctionAという共通の演算機能を有しているので、functionAをprogPとprogQとが共有する演算モジュールとしてハードウエア化することがある。しかし、functionAを共有HW資源として抜き出すことにより、全体としての配線長が長くなって信号線部分の消費電力が増大することもある。かかる場合には、図28(b)に示すように、インライン展開することにより、共有していた演算モジュールを個別に持たせることができる。このインライン展開により、functionAの演算モジュールが各回路ブロック毎に必要となるが、例えば演算モジュール毎に、Gated Clock や電圧制御などを適用することにより、消費電力を抑制することができる。また、回路面積が増大することになるが、チップ全体として許容範囲内であればインライン展開を実施する方が有利である。
したがって、回路規模の増大が問題とならない範囲で、増設された演算モジュールを各々有する回路ブロックの消費電力を抑制することができるのであれば、このようなインライン展開により回路全体としての消費電力の削減を実現することができる利点がある。
−第2の具体例(バインディングへのフィードバック)−
バインディングは、アロケーションでCDFGの各節に割り当てられた演算器などのモジュールに関し、複数の節で共通のモジュールがあれば、これらをリソースシェアリング(資源の共有化)するかしないかを判断し、最終的なデータパスの決定と制御のためのステートマシーンを生成する工程である。
バインディングは、アロケーションでCDFGの各節に割り当てられた演算器などのモジュールに関し、複数の節で共通のモジュールがあれば、これらをリソースシェアリング(資源の共有化)するかしないかを判断し、最終的なデータパスの決定と制御のためのステートマシーンを生成する工程である。
ここで、再バインディングを行なうか行なわないかは、フィードバックされた情報に基づいて、求められた信号線の総消費電力と最大遅延とが予め定められた目標範囲に収まっているか否かによる。すなわち、これらのパラメータが目標範囲に収まっていれば再バインディングを行なわないが、目標範囲に収まっていない場合には、再バインディングを実行する。
図29(a),(b)は、再バインディングを行なう過程を説明する図である。再バインディングを行なう際の最適化の方向性(戦略)としては、できるだけリソースシェアリング(資源の共有化)を行なわないようにする。その理由は、リソースシェアリングを行なっていると、リソースシェアリングされるモジュールが抜き出されるために、図29(a)に示すように、共有化しているモジュール(共有HW資源)とこれに接続される周辺のモジュールとを接続する信号線が長くなり、配線の総消費電力や配線遅延が大きくなるからである。そこで、総消費電力や配線遅延が大きい場合には、図29(b)に示すように、非共有化を図ることが好ましい。ただし、この場合にも、第2の具体例と同様に、HW資源の非共有化によって回路面積が問題になるほどは増大しないことが前提である。
本発明の半導体集積回路装置の設計方法は、LSI,特にいわゆるシステムLSIの設計に利用することができる。
Claims (24)
- 半導体集積回路装置を設計するためのビヘイビア表記を含むアプリケーションプログラムを入力した後、ビヘイビア表記を含むアプリケーションをまとまった機能単位でHW資源の配置を行なうためのブロックの生成と、各ブロック内のHW資源の配置と各ブロック間を接続する配線とを表すHW資源接続グラフとを生成するステップ(a)と、
HWライブラリから少なくともHW資源の大きさに関する情報を入力して、上記HW資源接続グラフ中のHW資源の仮配置を行ない、仮配置情報を出力するステップ(b)と、
上記ブロック間を接続する各配線における消費電力,遅延のうち少なくともいずれか一方に影響するパラメータの比率をブロック間信号線重みとして算出するステップ(c)と、
上記各ブロック間信号線重みが閾値以下か否かを判断するステップ(d)と、
上記各ブロック間信号線重みが閾値以下になると、HDLで記述したRTLの論理回路を出力するステップ(e)とを含み、
上記ステップ(d)の判断において各ブロック間信号線重みが閾値以下になるまで上記ステップ(a)におけるブロックの生成と、上記ステップ(b)〜(d)とを繰り返す半導体集積回路装置の設計方法。 - 請求項1記載の半導体集積回路装置の設計方法において、
上記ステップ(a)は、
上記アプリケーションプログラムの記述を、タスクを表すブロックに分割するとともに、各タスク間のデータの流れを示す第1のデータフロー図を生成するサブステップ(a1)と、
上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a2)と、
上記サブステップ(a2)で得られた各ブロック間の配線の遷移頻度の比率を第1のブロック間信号線重みとして算出するサブステップ(a3)と、
上記初期のブロック間信号線重みが初期の閾値以下か否かを判断するサブステップ(a4)と、
上記初期のブロック間信号線重みが上記初期の閾値以下になると、上記第1のデータフロー図中の各ブロックにHWライブラリに登録されたHW資源の配置が可能となるように第2のデータフロー図を生成するサブステップ(a5)と、
上記第2のデータフロー図中の各ブロックの実行タイミングの決定とHW資源の配置とを行なって上記HW資源接続グラフを作成するサブステップ(a6)とを含み、
上記初期のブロック間信号線重みが上記初期の閾値以下になるまで上記サブステップ(a1)におけるブロックの再分割と、上記サブステップ(a2)〜(a4)とを繰り返すことを特徴とする半導体集積回路装置の設計方法。 - 請求項1記載の半導体集積回路装置の設計方法において、
上記ステップ(a)は、
上記アプリケーションプログラムの記述を、複数の演算機能からなるモジュールに分割するとともに、各モジュール間のデータの流れを示す第1のデータフロー図を生成するサブステップ(a1)と、
上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a2)と、
上記サブステップ(a2)で得られたモジュール間を接続する配線の消費電力及び遅延のうち少なくともいずれか一方に影響するパラメータの比率を第1のモジュール間信号線重みとして算出するサブステップ(a3)と、
上記複数のモジュールを、各々複数のモジュールによって構成される複数のブロックに分割するサブステップ(a4)と、
上記第1のデータフロー図中の各モジュールにHWライブラリに登録されたHW資源の配置が可能な第2のデータフロー図を生成するサブステップ(a5)と、
上記第2のデータフロー図中の各モジュールの実行タイミングの決定とHW資源の割り当てとを行なって上記HW資源接続グラフを作成するサブステップ(a6)とを含み、
上記ステップ(c)では、上記仮配置情報と上記第1のモジュール間信号線重みとから第2のモジュール間信号線重みを算出するとともに、上記ブロック間を接続する配線となるものの第2のモジュール間信号線重みをブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1記載の半導体集積回路装置の設計方法において、
上記ステップ(a)は、
上記アプリケーションプログラムの記述を解析して、各動作を実現する演算機能間のデータの流れを、HWライブラリに登録されたHW資源の配置が可能な第1のデータフロー図として生成するサブステップ(a1)と、
上記複数の演算機能から各々複数の演算機能により構成されるモジュールを生成するとともに、上記第1のデータフロー図からモジュール間のデータの流れを示す第2のデータフロー図を生成するサブステップ(a2)と、
上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a3)と、
上記サブステップ(a3)で得られたモジュール間を接続する配線の消費電力及び遅延のうち少なくともいずれか一方に影響するパラメータの比率を第1のモジュール間信号線重みとして算出するサブステップ(a4)と、
上記複数のモジュールを、各々複数のモジュールによって構成される複数のブロックに分割するサブステップ(a5)と、
上記第2のデータフロー図中の各モジュールの実行タイミングとの決定とHW資源の割り当てとを行なって上記HW資源接続グラフを作成するサブステップ(a6)とを含み、
上記ステップ(c)では、上記仮配置情報と上記第1のモジュール間信号線重みとから第2のモジュール間信号線重みを算出するとともに、上記ブロック間を接続する配線となるものの第2のモジュール間信号線重みをブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1記載の半導体集積回路装置の設計方法において、
上記ステップ(a)は、
上記アプリケーションプログラムの動作記述を解析して、演算機能間のデータの流れを、HWライブラリに登録されたHW資源を配置することが可能な第1のデータフロー図として生成するサブステップ(a1)と、
上記第1のデータフロー図中の各演算機能の実行タイミングとの決定とHW資源の割り当てとを行なって上記HW資源接続グラフを作成するサブステップ(a2)と、
上記複数の演算機能から複数の演算機能により構成されるモジュールを生成するサブステップ(a3)と、
上記アプリケーションプログラムのシミュレーションを行なうサブステップ(a4)と、
上記サブステップ(a3)で得られたモジュール間を接続する配線の消費電力及び遅延のうち少なくともいずれか一方に影響するパラメータの比率を第1のモジュール間信号線重みとして算出するサブステップ(a5)と、
上記複数のモジュールを、各々複数のモジュールによって構成される複数のブロックに分割するサブステップ(a6)とを含み、
上記ステップ(c)では、上記仮配置情報と上記第1のモジュール間信号線重みとから第2のモジュール間信号線重みを算出するとともに、上記ブロック間を接続する配線となるものの第2のモジュール間信号線重みをブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1〜5のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記ブロック及びブロック間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行なうことを特徴とする半導体集積回路装置の設計方法。 - 請求項3〜5のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(e)の後、ステップ(f)の前に、HDLシミュレーションを行なって、その結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項3〜5のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(f)の後、ステップ(g)の前に、ネットリストを用いた仮配線と、仮配線の結果を用いた仮配線シミュレーションとを行なって、仮配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項3〜5のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項7記載の半導体集積回路装置の設計方法において、
上記ステップ(f)の後、ステップ(g)の前に、ネットリストを用いた仮配線と、仮配線の結果を用いた仮配線シミュレーションとを行なって、仮配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項7記載の半導体集積回路装置の設計方法において、
上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項8記載の半導体集積回路装置の設計方法において、
上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項10記載の半導体集積回路装置の設計方法において、
上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記ステップ(c)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1〜9のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(c)では、ブロック間配線の配線長の寄与率をブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1〜9のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(c)では、ブロック間配線の配線容量の寄与率をブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1〜9のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(c)では、ブロック間配線の配線遷移頻度の寄与率をブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1〜9のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(c)では、ブロック間配線の配線長及び配線遷移頻度の寄与率をブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項1〜9のうちいずれか1つに記載の半導体集積回路装置の設計方法において、
上記ステップ(c)では、ブロック間配線の配線容量及び配線遷移頻度の寄与率をブロック間信号線重みとすることを特徴とする半導体集積回路装置の設計方法。 - 請求項4又は5記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(e)の後、ステップ(f)の前に、HDLシミュレーションを行なって、その結果得られた情報を上記サブステップ(a1)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項4又は5記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(f)の後、ステップ(g)の前に、ネットリストを用いた仮配線と、仮配線の結果を用いた仮配線シミュレーションとを行なって、仮配線シミュレーションの結果得られた情報を上記サブステップ(a1)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項4又は5記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記ステップ(a1)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項5記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(e)の後、ステップ(f)の前に、HDLシミュレーションを行なって、その結果得られた情報を上記サブステップ(a2)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項4又は5記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(f)の後、ステップ(g)の前に、ネットリストを用いた仮配線と、仮配線の結果を用いた仮配線シミュレーションとを行なって、仮配線シミュレーションの結果得られた情報を上記サブステップ(a2)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。 - 請求項4又は5記載の半導体集積回路装置の設計方法において、
上記ステップ(e)の後に、上記HDLで記述された設計データを用いた論理合成を行なって、上記モジュール及びモジュール間の配線構造に関する情報をネットリストにまとめるステップ(f)と、
上記ネットリストを用いた配置配線を行なってレイアウト情報を出力するステップ(g)とをさらに含み、
上記ステップ(g)では、上記ステップ(b)における仮配置の情報と、上記ステップ(c)におけるブロックに関する情報とを位置決定情報として用いて配置配線を行ない、
上記ステップ(g)の後、レイアウト情報を用いた実配線シミュレーションを行なって、実配線シミュレーションの結果得られた情報を上記サブステップ(a2)にフィードバックすることを特徴とする半導体集積回路装置の設計方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004140209A JP2004288206A (ja) | 2004-05-10 | 2004-05-10 | 半導体集積回路装置の設計方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004140209A JP2004288206A (ja) | 2004-05-10 | 2004-05-10 | 半導体集積回路装置の設計方法 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP32358799A Division JP2001142922A (ja) | 1999-11-15 | 1999-11-15 | 半導体集積回路装置の設計方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004288206A true JP2004288206A (ja) | 2004-10-14 |
Family
ID=33297025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004140209A Pending JP2004288206A (ja) | 2004-05-10 | 2004-05-10 | 半導体集積回路装置の設計方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004288206A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010015339A (ja) * | 2008-07-02 | 2010-01-21 | Sharp Corp | 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法 |
JP2010224864A (ja) * | 2009-03-24 | 2010-10-07 | Nec Corp | 動作合成装置、動作合成方法、及び、プログラム |
CN112906339A (zh) * | 2021-03-30 | 2021-06-04 | 天津飞腾信息技术有限公司 | 物理设计布线和优化方法、系统、设备、介质和程序 |
-
2004
- 2004-05-10 JP JP2004140209A patent/JP2004288206A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010015339A (ja) * | 2008-07-02 | 2010-01-21 | Sharp Corp | 動作合成装置、動作合成方法、プログラム、記録媒体、および半導体集積回路の製造方法 |
JP2010224864A (ja) * | 2009-03-24 | 2010-10-07 | Nec Corp | 動作合成装置、動作合成方法、及び、プログラム |
CN112906339A (zh) * | 2021-03-30 | 2021-06-04 | 天津飞腾信息技术有限公司 | 物理设计布线和优化方法、系统、设备、介质和程序 |
CN112906339B (zh) * | 2021-03-30 | 2022-12-16 | 飞腾信息技术有限公司 | 物理设计布线和优化方法、系统、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2001142922A (ja) | 半導体集積回路装置の設計方法 | |
Barat et al. | Reconfigurable instruction set processors from a hardware/software perspective | |
US7831951B2 (en) | Task concurrency management design method | |
JP6001873B2 (ja) | 並列パイプライン化ハードウェアにおけるストリームスケジューリング方法および装置 | |
JP2002123563A (ja) | コンパイル方法および合成装置ならびに記録媒体 | |
US20030171907A1 (en) | Methods and Apparatus for Optimizing Applications on Configurable Processors | |
KR20130114688A (ko) | 아키텍처 최적화기 | |
Compton et al. | Totem: Custom reconfigurable array generation | |
JP2001202397A (ja) | システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法 | |
Reshadi et al. | A cycle-accurate compilation algorithm for custom pipelined datapaths | |
Marconi | Online scheduling and placement of hardware tasks with multiple variants on dynamically reconfigurable field-programmable gate arrays | |
Casseau et al. | Design of multi-mode application-specific cores based on high-level synthesis | |
CN113158599B (zh) | 基于量子信息学的芯片和芯片化eda装置 | |
Gokhale et al. | Co-synthesis to a hybrid RISC/FPGA architecture | |
JP2004288206A (ja) | 半導体集積回路装置の設計方法 | |
CN116048521A (zh) | 一种多阵列粗粒度可重构架构的多层级并行性开发方法 | |
Kim et al. | Low power pipelining of linear systems: A common operand centric approach | |
Matai et al. | Trimmed VLIW: Moving application specific processors towards high level synthesis | |
Qu et al. | Estimating the utilization of embedded FPGA co-processor | |
Jozwiak et al. | Hardware synthesis for reconfigurable heterogeneous pipelined accelerators | |
Jiang et al. | Performance-driven interconnection optimization for microarchitecture synthesis | |
Trajkovic et al. | Automatic data path generation from C code for custom processors | |
Cambonie et al. | Compiler and system techniques for soc distributed reconfigurable accelerators | |
Trajkovic et al. | A graph based algorithm for data path optimization in custom processors | |
Diguet et al. | A framework for high level estimations of signal processing vlsi implementations |