JP5328447B2 - 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体 - Google Patents

高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体 Download PDF

Info

Publication number
JP5328447B2
JP5328447B2 JP2009083459A JP2009083459A JP5328447B2 JP 5328447 B2 JP5328447 B2 JP 5328447B2 JP 2009083459 A JP2009083459 A JP 2009083459A JP 2009083459 A JP2009083459 A JP 2009083459A JP 5328447 B2 JP5328447 B2 JP 5328447B2
Authority
JP
Japan
Prior art keywords
communication
hardware
level synthesis
description
calculation
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.)
Expired - Fee Related
Application number
JP2009083459A
Other languages
English (en)
Other versions
JP2010237858A (ja
Inventor
貴弘 森下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sharp Corp
Original Assignee
Sharp Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sharp Corp filed Critical Sharp Corp
Priority to JP2009083459A priority Critical patent/JP5328447B2/ja
Publication of JP2010237858A publication Critical patent/JP2010237858A/ja
Application granted granted Critical
Publication of JP5328447B2 publication Critical patent/JP5328447B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ハードウェアの動作を検証できる汎用プログラミング記述を生成する高位合成装置および高位合成方法、この高位合成装置を用いた半導体集積回路の製造方法、この動作合成方法の各工程をコンピュータに実行させるための処理手順が記述された制御プログラム、この制御プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体に関する。
従来より、システムLSIなどの半導体集積回路のハードウェア部分を設計するため、RTL(レジスタ・トランスファ・レベル)での設計技術が用いられてきた。ところが、大規模化、複雑化するシステムを設計するためには、膨大な時間と労力が必要となるため、効率的に設計作業を進めるために高位合成技術が用いられるようになってきた。
従来の高位合成装置は、ハードウェアの構造に関する情報は含まず、処理の動作のみを記述した動作記述から、RTL(レジスタ・トランスファ・レベル)の論理回路を自動生成する高位合成技術を用いたコンピュータシステムである。高位合成手法としては、例えば特許文献1で提案されているような方法がある。ハードウェアの動作を表すために従来からハードウェアの設計言語として用いられてきたHDL(Hardware Description Language)に比べて、抽象度の高い言語、例えばC言語やC++言語などを用いて書かれた動作記述を解析し、設計仕様で与えられるクロック周波数で動作が可能なようにハードウェア動作をスケジューリングし、必要に応じて演算器やレジスタのアロケーションを行い、FSM(Finite State Machine:有限状態機械)で構成される制御回路と、演算などを行うデータパス回路をHDL言語として出力する。
このように、高位合成技術などによって得られたHDLが設計仕様通りに動作するかどうかを検証する必要がある。従来では、ハードウェアの検証にHDLシミュレータを用いていた。このHDLシミュレータにテストパターンを入力し、シミュレーションして得られる出力が期待する値かどうかを検証する。
しかし、ハードウェアの動作が複雑になり、より多くの、また、より長いテストパターンを必要とする場合、従来のように、HDLシミュレータを用いた検証には、多大な時間と労力が必要となる。この検証に要する時間を短縮する目的で、特許文献2や特許文献3が提案されている。特許文献2や特許文献3では、高位合成技術を用いたハードウェアのクロックサイクル精度の動作モデルの生成方法が開示されている。
これらの特許文献2および特許文献3の高位合成技術を用いると、従来のHDLシミュレータのように信号変化のイベント単位で行われる計算に比べて、レジスタの値をクロックサイクル単位で計算するだけでよく、シミュレーションに必要な計算量を大幅に削減することができる。
特許文献2や特許文献3の従来技術によると、図16に示すように、ハードウェアの動作記述から構文解析および字句解析を行ってブロック分割を実行した後に、CDFG(コントロール・データ・フロー・グラフ)を生成し、ハードウェアの設計仕様で要求される動作周波数でハードウェアが動作可能なようにスケジューリングし、CDFGに含まれるノードをステート毎に割り振り、CDFGの各ノードが持つ動作情報を用いて動作モデルを生成し、CDFGの枝情報を用いて各ノードの動作モデルを計算する順序付けを行い、レジスタへの入力値を求めるための計算式を作成してサイクルアキュレートモデルの記述を生成する。ここで、CDFGのノードとは、ハードウェアで実現されるべき演算動作、例えば加算、減算、乗算、除算などを表したもので、各ノードは演算の実行順序などから前後関係を持ち、有向な枝で結ばれている。
例えば、図17に示すようなハードウェアの動作記述を高位合成して得られるCDFGの一例を図18に示している。このCDFGの事例では、入力aと入力bを乗算するノード301と、入力cと入力dを乗算するノード302、および各乗算ノードの結果を加算するノード303が存在している。このように、特許文献3では、CDFGから作成されたレジスタへの計算式をクロックサイクル単位で計算することにより、ハードウェアのシミュレーションをHDLシミュレータに比べて高速に行う手法を提案している。
特開平5−101141号公報 特開2004−348606号公報 特開2006−139729号公報
上記特許文献2や特許文献3に提案されている従来の高位合成手法では、ハードウェアに含まれるレジスタの計算式をサイクル精度で計算し、シミュレーションを行っている。どのレジスタの計算式が実行されるかは、高位合成の過程でスケジューリングされたCDFGの各ステップに含まれるレジスタによる。計算するステップを順番に進めていくことにより、ハードウェアのサイクル精度のシミュレーションが実現できる。
スケジューリングされたCDFGのステップには、外部との通信を表すノードを含むステップがある。ここで言う外部とは、例えば演算途中の値を保存しておくためのRAMや、並列動作する他のハードウェアブロックや、テストベンチなどである。また一方で、このような通信を表すノードを含まないステップがある。例えば、あるレジスタから読み出した値を用いて演算し、その結果をレジスタに保存するような動作を表すノードだけを含むステップなどである。
以降の説明を簡略化するために、このように通信を表すノードを通信ノードとし、また、1つでも通信ノードを含むステップを通信ステップと呼ぶことにする。また、通信を表すノード以外を非通信ノードとし、また、非通信ノードのみを含むステップを非通信ステップと呼ぶことにする。これら通信ステート、非通信ステートの1つの計算が、ハードウェアの1クロックサイクル分の動作のシミュレーションに相当する。
ここで、テストベンチからデータを受信し、受信したデータを用いて演算を行い、その結果をテストベンチに送信するような動作を考える。この動作を実現するため、高位合成技術でハードウェアを合成し、サイクル精度でシミュレーション可能なモデルを生成してシミュレーションをする場合、例えば図19で示すように、テストベンチからデータを受信するために1ステップを必要とし、次に、受信したデータを用いて演算するために100ステップが必要であり、最後に、テストベンチに演算結果を送信するために1ステップ必要であると仮定する。
つまり、ノード401やノード404のように、通信ノードを含むステップは通信ステップであり、ノード402やノード403のように非通信ノードのみを含むステップは非通信ステップであると言える。高位合成においては、図19では、各ステップの境界とノード間の枝が交差するポイントがハードウェアのレジスタに相当する。特許文献3の高位合成手法によると、このレジスタへの値を計算するための式を生成し、計算することによりハードウェアのサイクル精度のシミュレーションを実現する。
図20に、特許文献3の高位合成手法によって生成した図19のCDFGのサイクル精度の検証用記述の一例を示している。この高位合成手法によるサイクル精度の検証用記述の事例は、C言語の文法を用いて記述した一例である。図19に示すCDFGの各ステップはそれぞれ関数として表されている。
この関数step0は、テストベンチからデータを受信する処理を行う関数であり、通信ステップの関数である。関数step1、step2などは、演算処理を行う関数で非通信ステップの関数である。関数step1やstep2などの関数は、図19で示すように100ステップ分必要である。関数step101は演算結果をテストベンチに送信する処理を行う関数で、通信ステップの関数である。変数r0、r1、r2はハードウェアのレジスタを表現しており、関数step1やstep2などで演算された結果を保存する。変数r0は、図19中のノード401とノード402を結ぶ枝とステップの境界が交差するポイントのレジスタを表している。また、変数r1は、図19中のノード402とノード403を結ぶ枝とステップの境界が交差するポイントのレジスタを表している。
図20で示すように、テストベンチから受信したデータを元に各ステップで演算し、レジスタを表す変数を中継して結果をテストベンチに送信する。各ステップがハードウェアのクロックサイクルに相当するため、ステップの関数を実行した個数を数え上げることによりハードウェアのクロックサイクル精度のシミュレーションが可能となる。
このハードウェアの動作を検証するため、各クロックサイクル、つまり、CDFGの各ステップにおけるレジスタ値をシミュレーションする場合、図20で示すようなモデルを用いると、多くのレジスタの値を逐次計算する必要があるが、テストベンチから送信したデータが正しく演算されてテストベンチで受信できるか否かを検証したい場合、演算の途中経過、即ち図19で示すようなレジスタの値が正しいか否かを確認する必要がないのであれば、関数step1やstep2での演算結果を変数r0やr1に逐次保存するための処理は冗長であると言える。各ステップで演算の入出力の個数が増えれば、各ステップで計算するレジスタの個数も増えてその計算時間は多大なものとなってしまう。また、ステップの関数の数が多ければ、関数の切り替え時間も増大することになる。
本発明は、上記従来の問題を解決するもので、非通信ステップのハードウェア動作をシミュレーションするための計算量を削減してシミュレーションを高速化することにより、ハードウェアの検証に要する時間を節約することができて、システムLSIの開発コストを低減すると共に開発期間を短縮することができる高位合成装置および高位合成方法、この高位合成装置を用いて論理回路などの半導体集積回路を製造する半導体集積回路の製造方法、この動作合成方法をコンピュータに実行させるための処理手順が記述された制御プログラム、この制御プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体を提供することを目的とする。
本発明の高位合成装置は、ハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、当該ハードウェアを機能ブロックに分割する機能ブロック分割手段と、該機能ブロック分割手段で分割された機能ブロック毎に、該動作記述を解析した動作情報から該ハードウェアのコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、ハードウェア仕様として要求される動作周波数で該コントロールデータフローグラフをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り手段と、該コントロールデータフローグラフから通信を行う動作が含まれない非通信ステップを抽出する非通信ステップ抽出手段と、該非通信ステップのハードウェアの動作を統合した計算式を生成してサイクル精度で検証可能なプログラミング記述を生成するステップサイクル精度検証記述生成手段とを有し、該通信は、機能ブロック間通信および共有リソースアクセスのいずれかであり、そのことにより上記目的が達成される。
また、好ましくは、本発明の高位合成装置におけるステップサイクル精度検証記述生成手段は、前記非通信ステップのハードウェアの動作を統合した計算式を生成する計算式生成手段と、該計算式を用いて、該ハードウェアを汎用プログラミング言語で表現した記述として、サイクル精度で検証する動作モデルを生成する動作モデル生成手段とを有する。
さらに、好ましくは、本発明の高位合成装置における非通信ステップ抽出手段は、前記コントロールデータフローグラフに含まれる各ノードの動作情報を用いて、通信を行う動作を表すノードが含まれないステップを選び出す。
さらに、好ましくは、本発明の高位合成装置における非通信ステップ抽出手段は、前記コントロールデータフローグラフの中から通信ステップを抽出することにより、該通信ステップ以外を前記非通信ステップとして抽出する。
さらに、好ましくは、本発明の高位合成装置における計算式生成手段は、通信を行う動作を表すノードが含まれない非通信ステップの中で、最終のステップに含まれるレジスタの出力結果を計算するための計算式を生成する。
さらに、好ましくは、本発明の高位合成装置における計算式生成手段は、前記コントロールデータフローグラフの中のセレクタの選択条件によって不要となる演算を行わないように計算式を生成する。
さらに、好ましくは、本発明の高位合成装置におけるハードウェアの機能ブロック間で計算を実行する機能ブロックの実行順序を制御する制御記述を生成する機能ブロック実行順序制御記述生成手段を更に有する。
さらに、好ましくは、本発明の高位合成装置における実行順序制御記述生成手段は、前記ハードウェアの機能ブロック毎に、計算を終了したステップを数えるカウンタを有しており、該カウンタのカウント値が最小である機能ブロックから順番に計算を行う制御記述を生成する。
さらに、好ましくは、本発明の高位合成装置における通信を行うステップの1ステップ前までの非通信ステップは、前記機能ブロック内で連続して前記計算を実行する。
本発明の高位合成方法は、機能ブロック分割手段とコントロールデータフローグラフ生成手段とスケジューリング・ステップ割り振り手段と非通信ステップ抽出手段とステップサイクル精度検証記述生成手段とを備える高位合成装置において実行される高位合成方法であって、該機能ブロック分割手段が、ハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、当該ハードウェアを機能ブロックに分割する機能ブロック分割工程と、該コントロールデータフローグラフ生成手段が、該機能ブロック分割工程で分割した機能ブロック毎に、該動作記述を解析した動作情報から該ハードウェアのコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程と、該スケジューリング・ステップ割り振り手段が、ハードウェア仕様として要求される動作周波数で該コントロールデータフローグラフをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り工程と、該非通信ステップ抽出手段が、該コントロールデータフローグラフから通信を行う動作が含まれない非通信ステップを抽出する非通信ステップ抽出工程と、該ステップサイクル精度検証記述生成手段が、該非通信ステップのハードウェアの動作を統合した計算式を生成してサイクル精度で検証する動作モデルを生成するステップサイクル精度検証記述生成工程とを有し、該通信は、機能ブロック間通信および共有リソースアクセスのいずれかであり、そのことにより上記目的が達成される。
また、好ましくは、本発明の高位合成方法におけるステップサイクル精度検証記述生成工程は、前記非通信ステップのハードウェアの動作を統合した計算式を生成する計算式生成工程と、該計算式を用いて、ハードウェアを汎用プログラミング言語で表現した記述として、サイクル精度で検証する動作モデルを生成する動作モデル生成工程とを有する。
さらに、好ましくは、本発明の高位合成方法における非通信ステップ抽出工程は、前記コントロールデータフローグラフに含まれる各ノードの動作情報を用いて、通信を行う動作を表すノードが含まれないステップを選び出す。
さらに、好ましくは、本発明の高位合成方法における非通信ステップ抽出工程は、前記コントロールデータフローグラフの中から通信ステップを抽出することにより、該通信ステップ以外を前記非通信ステップとして抽出する。
さらに、好ましくは、本発明の高位合成方法における計算式生成工程は、通信を行う動作を表すノードが含まれないステップの中で、最終のステップに含まれるレジスタの出力結果を計算するための計算式を生成する。
さらに、好ましくは、本発明の高位合成方法における計算式生成工程は、前記コントロールデータフローグラフの中のセレクタの選択条件によって不要となる演算を行わないように計算式を生成する。
さらに、好ましくは、本発明の高位合成方法における前記高位合成装置は、機能ブロック実行順序制御記述生成手段を更に備え、前記高位合成方法は、該機能ブロック実行順序制御記述生成手段が、前記ハードウェアの機能ブロック間で計算を実行する機能ブロックの実行順序を制御する制御記述を生成する機能ブロック実行順序制御記述生成工程を更に有する。
さらに、好ましくは、本発明の高位合成方法における実行順序制御記述生成手段は、前記ハードウェアの機能ブロック毎に、前記計算を終了したステップを数えるカウンタを有しており、該カウンタのカウント値が最小である機能ブロックから順番に次の計算を行う制御記述を生成する。
本発明の半導体集積回路の製造に用いられるレジストパターンを設計する方法は、本発明の上記高位合成装置を用いてハードウェア動作をシミュレーションした論理合成回路情報に基づいてレジストパターンを設計するものであり、そのことにより上記目的が達成される。
本発明の制御プログラムは、本発明の上記高位合成方法の各工程をコンピュータに実行させるための処理手順が記述されたものであり、そのことにより上記目的が達成される。
本発明の可読記憶媒体は、本発明の上記制御プログラムが格納されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
上記構成により、以下、本発明の作用を説明する。
本発明の高位合成装置においては、ハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、当該ハードウェアを機能ブロックに分割する機能ブロック分割手段と、この機能ブロック分割手段で分割された機能ブロック毎に動作記述を解析した動作情報からハードウェアのコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、ハードウェア仕様として要求される動作周波数でコントロールデータフローグラフをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り手段と、コントロールデータフローグラフから通信を行う動作が含まれない非通信ステップを抽出する非通信ステップ抽出手段と、非通信ステップのハードウェアの動作を統合した計算式を生成してサイクル精度で検証可能なプログラミング記述を生成するステップサイクル精度検証記述生成手段とを有している。
このように、非通信ステップを一つのステップに統合したため、レジスタは各ステップの境界毎に不要となり、この不要となったレジスタの更新のための計算を削減することが可能となる。これによって、非通信ステップのハードウェア動作をシミュレーションするための計算量を削減してシミュレーションを高速化することができ、ハードウェアの検証に要する時間を節約すると共に、システムLSIの開発コストを低減すると共に開発期間を短縮することが可能となる。
以上により、本発明によれば、非通信ステップを一つのステップに統合したため、レジスタは各ステップの境界毎に不要となることから、この不要となったレジスタの更新のための計算を削減して、非通信ステップのハードウェア動作をシミュレーションするための計算量を削減してシミュレーションを高速化することができ、ハードウェアの検証に要する時間を節約すると共に、システムLSIの開発コストを低減すると共に開発期間を短縮することができる。
本発明の高位合成装置の基本構成例を模式的に示すブロック図である。 図1のROM内に格納された制御プログラムにおける高位合成手段の詳細な構成例をそのハードウェア構成と共に模式的に示すブロック図である。 ハードウェアの動作記述の一例を示す図である。 図2の制御プログラムとしてのハードウェア高位合成プログラムにおけるCDFG生成手段を用いて得られるCDFGの一例を示す図である。 非通信ステップを抽出するアルゴリズムを示すフローチャートである。 通信ステップを抽出するアルゴリズムを示すフローチャートである。 通信ステップと非通信ステップを抽出するアルゴリズムを示すフローチャートである。 本発明の手法によって図4に示すCDFGの非通信ステップを統合して、計算するレジスタの数を削減した場合のCDFGを示す図である。 図8のCDFGから得られるハードウェアをサイクル精度で検証可能なプログラミング記述の一例を示す図である。 図8のCDFGから得られるハードウェアをサイクル精度で検証可能なプログラミング記述の別の例を示す図である。 セレクタの選択条件s1が「0」で、かつ選択条件s2が「0」のときの図8のCDFGを示す図である。 2つの並列動作する機能ブロック間で、誤ったサイクル精度の検証を説明するためのCDFGの事例を示す図である。 本発明の実施形態2において、2つの並列動作する機能ブロック間で、各機能ブロックの計算順序を制御した正しいサイクル精度の検証を説明するためのCDFGの事例を示す図である。 本発明の実施形態2において、複数の並列動作する機能ブロックの計算順序を制御する制御記述を生成するアルゴリズムを示すフローチャートである。 図14のアルゴリズムをC言語のプログラムを用いて実装した制御記述例を示す図である。 特許文献2および3に開示されている従来の高位合成手法の各処理工程を模式的に示す流れ図である。 ハードウェアの動作記述の一例を示す図である。 図17のハードウェアの動作記述を高位合成して得られるCDFGの一例を示す図である。 テストベンチからデータを受信し、受信したデータを用いて一連の演算をし、最後に、テストベンチに演算結果を送信する処理をCDFGからスケジューリングした結果を示す図である。 特許文献2および3の高位合成手法によって生成した図19のCDFGから得られるハードウェアをサイクル精度で検証可能なプログラミング記述の一例を示す図である。
以下に、本発明の高位合成装置および高位合成方法の実施形態1、2について図面を参照しながら具体的に説明する前に、図1の本発明の高位合成装置の基本構成例および図2の制御プログラムにおける高位合成手段の詳細な構成例について説明する。
図1は、本発明の高位合成装置の基本構成例を模式的に示すブロック図である。
図1において、本実施形態のハードウェア検証用プログラミング記述生成装置としての高位合成装置1は、コンピュータシステムで構成されており、各種入力指令を可能とするキーボードやマウス、画面入力装置などの操作入力部2と、各種入力指令に応じて表示画面上に、初期画面、選択誘導画面および処理結果画面などの各種画像を表示可能とする表示部3と、全体的な制御を行う制御手段としてのCPU4(中央演算処理装置)と、CPU4を動作させるための制御プログラムおよびこれに用いる各種データなどが記録されたコンピュータ読み取り可能な可読記録媒体(記憶手段)としてのROM5と、CPU4の起動時にワークメモリとして働く一時記憶手段としてのRAM6とを有している。
CPU4は、操作入力部2からの入力指令の他、ROM5内からRAM6内に読み出された制御プログラムおよびこれに用いる各種データに基づいて、次の図2で詳細に後述する高位合成手段51の各機能を実行するようになっている。
ROM5は、ここでは可読記録媒体(記憶手段)としてのハードディスクであるが、その他に、光ディスク、磁気ディスクおよびICメモリなどの可読記録媒体(記憶手段)で構成されていてもよい。この制御プログラムおよびこれに用いる各種データは、携帯自在な光ディスク、磁気ディスクおよびICメモリなどからROM5にダウンロードされてもよいし、コンピュータのハードディスクから別のROM5にダウンロードされてもよいし、無線または有線、インターネットなどを介してROM5にダウンロードされてもよい。
図2は、図1のROM5内に格納された制御プログラムにおける高位合成手段の詳細な構成例をそのハードウェア構成と共に模式的に示すブロック図である。なお、図2では、ハードウェアをサイクル精度で検証可能なプログラミング記述を生成する詳細処理構成を示しており、ハードウェア検証用プログラミング記述の高位合成において、回路の機能単位でブロックに分割した形で動作を記述でき、各機能ブロックを並列動作可能なハードウェアの動作記述とする。また、この説明において生成されるハードウェアをサイクル精度で検証可能なプログラミング記述は、汎用プログラミング言語のC言語で記述されるものとする。他の言語でも同様に記述できる。
図2において、本発明のハードウェア検証用プログラミング記述生成装置としての高位合成装置1の構成を更に説明すると、キーボードなどの入力装置である操作入力部2、表示画面3aを持つモニタ装置である表示部3、計算機本体に含まれるCPU(中央演算処理ユニット)4、メモリなどのRAM6および磁気ディスク(ハードディスク)などの可読記憶媒体としてのROM5から構成されている。磁気ディスクなどの可読記憶媒体としてのROM5には、本発明のハードウェアをサイクル精度で検証可能なプログラミング記述を高位合成するための制御プログラムとしてのハードウェア高位合成プログラムが格納されている。
高位合成手段51の各機能を実行する制御プログラムとしてのハードウェア高位合成プログラムには、次の各機能手段が含まれる。
即ち、本発明の高位合成手段51は、ハードウェアの動作記述を構文解析・字句解析する構文解析・字句解析手段511と、機能ブロック単位で並列動作をするかまたは直列動作をするハードウェアの回路ブロックに分割する機能ブロック分割手段512と、各機能ブロックでCDFG(コントロール・データフロー・グラフ)を生成するCDFG生成手段513と、各機能ブロックで、ハードウェアに与えられた設計仕様の動作周波数の制約を満たすためにCDFGのノードをスケジューリングしてノードをステップに割り振るスケジューリング・ステップ割り振り手段514と、各機能ブロックで、非通信ステップを抽出する非通信ステップ抽出手段515と、非通信ステップ抽出手段515で抽出されたステップのハードウェアの動作を統合した計算式を生成し、ハードウェアを汎用プログラミング言語で表現した記述として、各機能ブロックで、各ステップをサイクル精度で検証する動作モデル(検証可能なプログラミング記述)を生成するステップサイクル精度検証記述生成手段516と、機能ブロック間で、計算を実行する機能ブロックの実行順序を制御するための記述を生成する機能ブロック実行順序制御記述生成手段517とを有している。
本発明の高位合成手段51を用いた高位合成方法としては、構文解析・字句解析手段511がハードウェアの動作記述を構文解析・字句解析する構文解析・字句解析工程と、その後に、機能ブロック分割手段512が、回路のハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、機能ブロック単位で並列動作するなどのハードウェアを機能ブロックに分割する機能ブロック分割工程と、CDFG生成手段513が、分割された機能ブロック毎に動作記述を解析した動作情報からハードウェアのコントロールデータフローグラフを生成するCDFG生成工程と、スケジューリング・ステップ割り振り手段514が、ハードウェア仕様として要求される動作周波数でコントロールデータフローグラフをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り工程と、非通信ステップ抽出手段515が、通信を行う動作が含まれないステップを抽出する非通信ステップ抽出工程と、ステップサイクル精度検証記述生成手段516が、抽出されたステップのハードウェアの動作を統合した計算式を生成し、ハードウェアを汎用プログラミング言語で表現した記述として、サイクル精度で検証する動作モデルを生成するステップサイクル精度検証記述生成工程と、機能ブロック実行順序制御記述生成手段517が、機能ブロック間で、計算を実行する機能ブロックの実行順序を制御するための記述を生成する機能ブロック実行順序制御記述生成工程とを有している。
なお、通常の高位合成処理は、スケジューリング後に、各処理を回路素子に割り付けると共に処理途中のデータを記憶するためにレジスタに割り付けるアロケーション工程と、スケジューリング工程およびアロケーション工程による各処理結果にしたがって、データパスとそれを制御するコントローラを生成し、演算器およびレジスタの接続を表すネットリストを作成すると共に、上記クロック情報に基づいて信号伝播保証回路(または同期化回路)を追加生成したりするデータパス・コントローラ生成工程とを有しており、そのデータパス・コントローラ生成結果をRTL記述として出力している。このデータパス・コントローラ生成結果によって、論理合成回路情報を得ることができる。
本発明の半導体集積回路の製造方法では、高位合成手段51を用いてハードウェア動作をシミュレーションし、高位合成した論理合成回路情報に基づいてレジストパターンを設計し、この設計情報によりパターニングしたレジストパターンを用いて半導体集積回路(ICやLSI)を製造することができる。
ここで、高位合成手段51を用いたハードウェア動作のシミュレーションと、高位合成する設計情報の論理合成回路情報との関係について説明する。
本発明のシミュレーションは、スケジューリング・ステップ割り振り工程以降であれば行うことができる。
本実施形態では、レジスタを使って説明しており、レジスタアロケーション以降の回路情報を用いているような説明になっているが、アロケーションより前でも本発明のシミュレーションは可能である。スケジューリング後であれば、CDFGのあるステップのノードの計算結果(出力)が次のステップで使用されるかどうか判断できるので、結果がステップを跨ぐような場合は結果を保存しておけばよい。次のステップでその保存してある値を使う。回路シミュレーションを行うための動作モデルを本実施形態のようにC言語で表現する場合、変数などを用いて計算結果を保存する。レジスタアロケーションの情報があれば、その変数がハードウェアのどのレジスタに相当するかを識別することができる。
したがって、例えば設計情報の論理合成回路情報はデータパス・コントローラ生成工程後に得られるが、本発明のシミュレーションは、スケジューリング・ステップ割り振り工程後でアロケーション工程前でもよく、よちろん、アロケーション工程後でもデータパス・コントローラ生成工程後でもよい。
ここで、本発明の高位合成手段51の特徴構成としては、非通信ステップを抽出する非通信ステップ抽出手段515と、ステップのハードウェアの動作を統合した計算式を生成し、各機能ブロックで、各ステップをサイクル精度で検証する動作モデルを生成するステップサイクル精度検証記述生成手段516と、機能ブロック間で、計算を実行する機能ブロックの実行順序を制御するための記述を生成する機能ブロック実行順序制御記述生成手段517とを有している点である。
この機能ブロックを一つ(単一スレッドの場合)だけ持つハードウェアのサイクル精度で検証可能なプログラミング記述を生成する場合を次の実施形態1で詳細に説明する。この場合は、構文解析・字句解析手段511、機能ブロック分割手段512、CDFG生成手段513、スケジューリング・ステップ割り振り手段514、非通信ステップ抽出手段515およびステップサイクル精度検証記述生成手段516を用い、機能ブロック実行順序制御記述生成手段517は用いない。
また、複数の機能ブロック(複数のスレッドの場合)を持つハードウェアのサイクル精度で検証可能なプログラミング記述を生成する場合を実施形態2で詳細に説明する。この場合は、構文解析・字句解析手段511、機能ブロック分割手段512、CDFG生成手段513、スケジューリング・ステップ割り振り手段514、非通信ステップ抽出手段515およびステップサイクル精度検証記述生成手段516の他に、機能ブロック実行順序制御記述生成手段517を用いる。
(実施形態1)
図3は、ハードウェアの動作記述例を示す図である。
図3に示すハードウェアの動作記述を、図2の制御プログラムとしてのハードウェア高位合成プログラムに基づいて高位合成処理することを考える。図3で示す動作記述では、i0からi15までの変数で表される値を用いて乗算と加算を行い、その結果を変数xとyに代入する。ただし、xとyの計算には条件が付いており、変数s0とs1によって乗算と加算で用いるi0からi15までの値が選択される。変数xとyの値が求まれば、この2つを加算して変数zに代入する。この変数zをハードウェア外部に送信する。ここで言うハードウェア外部をテストベンチと仮定する。
図3で示す動作を、図2の制御プログラムとしてのハードウェア高位合成プログラムにおけるCDFG生成手段513を用いて得られるCDFGの一例を図4に示している。
図4の事例では、CDFGは、加算、乗算などの演算、および複数の入力から条件に従って出力を決定するセレクタなどの非通信ノードと、外部への通信を行う通信ノードと、これらのノードを接続する枝で構成されている。また、ある動作周波数でスケジューリングされた結果、動作に必要なステップは4ステップになっている。即ち、図4では、ステップnからステップn+3までの4ステップとして表している。図4の事例では、i0からi15までの値については、高位合成処理された回路中の他のレジスタから得られた値である。また、セレクタを表すノードの選択条件であるs1とs2についても、回路中の他のレジスタから得られる値とする。
以下、各ステップにおける動作について詳細に説明する。
まず、ステップnにおいて、i0からi15までの値を用いて、n0からn7までのノードで乗算処理を行う。各演算結果は、それぞれレジスタr0からr7に保存される。
次に、ステップn+1において、レジスタr0からr7の値を用いて、n8からn11までのノードで加算処理を行う。各演算結果は、それぞれレジスタr8からr11に保存される。
続いて、ステップn+2におおいて、レジスタr8からr11までの値を用いて加算処理を行う。ただし、選択条件s0と選択条件s1が示す値に従い演算で用いるレジスタの値を選択する。本事例において、ノードn12では、選択条件s1の値が「0」のときレジスタr8の値が選択され、「1」のときはレジスタr9の値が選択される。また、ノードn13では、選択条件s2の値が「0」のときレジスタr10の値が選択され、選択条件s2の値が「1」のときはレジスタr11が選択される。ノードn14で加算演算された結果は、レジスタr12に保存される。
最後に、ステップn+3において、レジスタr12の値を取り出してテストベンチに送信処理する。
このようなCDFGにおける各ステップの情報を元に、図2の非通信ステップ抽出手段515を用いて非通信ステップを抽出する。
図5は、CDFGの中から非通信ステップを抽出するアルゴリズムのフローチャートであり、図6は、CDFGの中から通信ステップを抽出するアルゴリズムのフローチャートである。なお、この抽出方法は、図7で示すように通信ステップの抽出と非通信ステップの抽出とを同時に行ってもよい。
まず、図5の非通信ステップを抽出するアルゴリズムについて詳細に説明する。
図5に示すように、まず、ステップS1で非通信ステップの抽出を開始する。ステップS2でCDFGに含まれる全ての非通信ステップの抽出が完了したかどうかを判定する。続いて、ステップS2でCDFGに含まれる全ての非通信ステップの抽出が完了していない場合は、次のステップS3でCDFGデータからステップの情報を取り出す。さらに、ステップS2でCDFGに含まれる全ての非通信ステップの抽出が完了した場合は、ステップS4でその抽出処理を終了する。
次に、ステップS3でCDFGデータから取り出したステップに対して、ステップS5で通信ノードが含まれるかどうか判定する。ステップS5で通信ノードを含む場合には、ステップS2の処理に戻って、全ステップの抽出が完了したかどうかを判定する。ステップS5で通信ノードを含まない場合には、次のステップS6で非通信ステップのリストにステップの通信ノードを含まないという情報を保存し、ステップS2の処理に戻って、全ステップの抽出が完了したかどうかを判定する。
また、以下、図6の通信ステップを抽出するアルゴリズムについて詳細に説明する。
図6に示すように、まず、ステップS11で通信ステップの抽出を開始する。ステップS12でCDFGに含まれる全ての通信ステップの抽出が完了したかどうかを判定する。続いて、ステップS12でCDFGに含まれる全ての通信ステップの抽出が完了していない場合は、次のステップS13でCDFGデータからステップの情報を取り出す。さらに、ステップS12でCDFGに含まれる全ての通信ステップの抽出が完了した場合は、ステップS14でその抽出処理を終了する。
次に、ステップS13でCDFGデータから取り出したステップに対して、ステップS15で通信ノードが含まれるかどうか判定する。ステップS15で通信ノードを含まない場合には、ステップS12の処理に戻って、全ステップの抽出が完了したかどうかを判定する。ステップS15で通信ノードを含む場合には、次のステップS6で通信ステップのリストにステップの通信ノードを含む情報を保存し、ステップS2の処理に戻って、全ステップの抽出が完了したかどうかを判定する。
この図6の通信ステップを抽出するアルゴリズムでは、通信ノードを含むか否かの判定結果によって保存するステップが通信ステップのリストであることを除けば、図5で示す非通信ステップを抽出するアルゴリズムの場合と同様である。
このCDFGデータの中で、図6に示すアルゴリズムで抽出された通信ステップのリストに入っていない残りのステップは非通信ステップであると言えるので、通信ステップを抽出することで非通信ステップを抽出することも可能である。
さらに、以下、図7の通信ステップおよび非通信ステップを共に抽出するアルゴリズムについて詳細に説明する。
図7に示すように、まず、ステップS21で通信ステップおよび非通信ステップの抽出を開始する。ステップS22でCDFGに含まれる全てのステップの抽出が完了したかどうかを判定する。続いて、ステップS22でCDFGに含まれる全てのステップの抽出が完了していない場合は、次のステップS23でCDFGデータからステップの情報を取り出す。さらに、ステップS22でCDFGに含まれる全てのステップの抽出が完了した場合は、ステップS24でその抽出処理を終了する。
次に、ステップS23でCDFGデータから取り出したステップに対して、ステップS25で通信ノードが含まれるかどうか判定する。ステップS25で通信ノードを含む場合には、次のステップS26Aで通信ステップのリストにステップの通信ノードを含む情報を保存し、ステップS22の処理に戻って、全ステップの抽出が完了したかどうかを判定する。また、ステップS25で通信ノードを含まない場合には、次のステップS26Bで非通信ステップのリストにステップの非通信ノードを含む情報を保存し、ステップS22の処理に戻って、全ステップの抽出が完了したかどうかを判定する。
このように、図7で示すアルゴリズムでは、通信ノードを含むか否かの判定結果によって通信ステップのリスト、または非通信ステップのリストに振り分けていることを除けば、図5で示す非通信ステップを抽出するアルゴリズムの場合と同じである。
前述した特許文献3の従来技術にあるように、スケジューリングされたCDFGの各ステップでは、ステップに含まれるノードと、ノード間の有向な枝の情報を含んでおり、ノードの接続関係からステップ間の接続関係が判明できるとしている。つまり、ステップ間の連続性は、ステップに含まれるノードを調べることで判断できるとしている。
図4に示す事例では、ステップn、ステップn+1、およびステップn+2の各ステップは非通信ステップであり、ステップn+3のみが通信ステップである。よって、ステップn、ステップn+1、およびステップn+2は非通信ステップリストに登録され、ステップn+3だけが通信ステップリストに登録されることになる。
従来であれば、図2で示す各ステップのサイクル精度シミュレーション記述のステップサイクル精度検証記述生成手段516を用いて、CDFGの全ステップでのレジスタの値を求めるための計算式を作成するが、本発明においては、連続した非通信ステップの最終ステップに含まれるレジスタの出力結果、つまり、図4におけるレジスタr12の値を求める計算式を作成する。
図5に示す非通信ステップを抽出するアルゴリズムによって得られた非通信ステップのリストからステップを取り出し、取り出した連続するステップのうち、最終ステップに含まれ、レジスタの出力結果の値を求めるための計算式を作成する。図4中のレジスタr0からr11までのように、連続する非通信ステップの最終ステップではないステップのレジスタに割り当たっている部分については計算式を作成せず、レジスタr12の計算式の中に含める。
図8は、本発明の手法によって図4に示すCDFGの非通信ステップを統合して、計算するレジスタの数を削減した場合のCDFGを示す図である。
図8に示すように、ステップnからステップn+2までの入力となるレジスタがなく、ステップn+2での出力となるレジスタr12のみがある。ステップnからステップn+2までのステップを仮想的に1つのステップとして統合し、図2で示すステップサイクル精度検証生成手段516を用いてサイクル精度で検証可能なプログラミング記述を生成する。このとき、統合したステップ数が分かっているので、統合されたステップのサイクル精度の計算を実行しても、ハードウェア動作の何クロックサイクル分に相当するか計算可能である。つまり、これは、サイクル精度での検証が可能であることを意味する。
図9は、図8に示すCDFGのステップnからステップn+2を統合したステップのサイクル精度で検証可能な記述を、図2に示すステップサイクル精度検証生成手段516を用いて生成した事例を示す図である。
図9の事例では、三項演算子を用いて条件分岐する式で表しているが、図10のようにif条件文を用いて記述してもよい。図9や図10の事例では、選択条件s1と選択条件s2の値によって計算で必要な値が選択されている。例えばs1が0で、かつs2が0の場合、入力i0、i1、i2、i3、i8、i9、i10、i11の値を用いてr12に代入する値を計算しているが、入力i4、i5、i6、i7、i12、i13、i14、i15の値は計算に使用されない。一方、s1が1で、かつs2が1の場合、逆に、入力i4、i5、i6、i7、i12、i13、i14、i15は計算に使用されるが、入力i0、i1、i2、i3、i8、i9、i10、i11は使用されない。つまり、選択条件によって計算を分けているため、図8のCDFGにおいて、計算に必要なノードの動作だけが計算される。
図11は、セレクタの選択条件s1が「0」でかつ選択条件s2が「0」のときの図8のCDFGを示す図である。
図11に示すように、本実施形態1のセレクタの選択条件によって不要な演算を行わない場合であって、例えばセレクタの選択条件s1が「0」でかつ選択条件s2が「0」であれば、ノードn2、n3、n9およびノードn6、n7、n11はセレクタによって選択されないので、ノードn2、n3、n9およびノードn6、n7、n11の動作は計算する必要がなく、ステップnからステップn+2までの非通信ステップを統合したステップの計算に必要な計算量を大幅に削減することができる。これによって、高速にハードウェアの動作をサイクル精度でシミュレーション可能である。
したがって、本実施形態1によれば、ステップnからステップn+2までの非通信ステップを統合したため、レジスタは各ステップの境界毎に不要となって通信ステップ直前の1個で済み、不要となったレジスタの更新のための計算を削減することができて高速にハードウェアの動作をサイクル精度でシミュレーションできる。また、セレクタの選択条件によって不要な計算を削減することができて高速にハードウェアの動作をサイクル精度でシミュレーションできる。さらに、スケジューリング結果から必要なステップ数は分かっているので、サイクル精度でシミュレーションを進めることができる。この場合のサイクルカウントは正確である。
(実施形態2)
本実施形態2では、複数の並列動作をする機能ブロックを含むハードウェアの動作をサイクル精度で検証する場合について説明する。
この場合、機能ブロック間の通信をサイクル精度で確実にシミュレーションする必要がある。上記実施形態1で説明したように、複数の非通信ステップを仮想的に1つのステップとして統合して計算するときには、シミュレーション開始時から計算を行ったステップ数が、機能ブロック間で一致しない場合が出てくる。ステップ数が一致しないと言うことは、各機能ブロックでシミュレーションを行ったクロックサイクル数が一致しないことを意味しており、そのような状況において、機能ブロック間で通信を行っても、正確にサイクル精度でシミュレーションができているとは言えない。よって、機能ブロック間で、計算を実行する機能ブロックの実行順序を制御するための仕組みが必要となる。
図12は、2つの並列動作する機能ブロック間で、誤ったサイクル精度の検証を説明するためのCDFGの事例を示す図である。
図12において説明を簡単にするために、この2つの機能ブロックは共に8個のノードを持ち、CDFGの1つのステップで1つのノードの動作を計算するものとする。機能ブロックAでは、6個の非通信ノードを実行したのち、2個の通信ノードを連続して実行する。これらの通信ノードでは、同一の通信路を用いて、機能ブロックBにデータを送信する。ただし、それぞれの通信では、異なるデータが送信されるものとする。例えば、1回目の通信ではデータXを送信し、2回目の通信ではデータYを送信する。
また、機能ブロックBでは、3個の非通信ノードを実行したのち、1個の通信ノードを実行する。この通信ノードで通信する対象は機能ブロックA以外であるとする。例えば、テストベンチにデータを送信する動作とする。次に、2個の非通信ノードを実行したのち、2個の連続した通信ノードを実行する。これらの通信ノードでは、機能ブロックAから送信されるデータを受信し、機能ブロックBで使用するものとする。
図12の事例では、上記実施形態1で説明した手法を用いて、非通信ステップを仮想的に統合した場合、破線で示したステップの境界部分については統合されて実行される。
前述した特許文献3で述べられている手法を用いて、複数の並列動作する機能ブロックのサイクル精度のシミュレーションでは、計算を実行する機能ブロックの実行順序は任意である。本発明の実施形態2の場合でも同様であり、機能ブロックの実行順序は任意である。図12で示した事例においては、まず、機能ブロックAの計算を実行し、次に、機能ブロックBの計算を実行するものとする。特許文献3で述べられている手法では、各機能ブロックの計算を順番に実行し、全ての計算が終わった時点で1クロックサイクル分のサイクル精度のハードウェア動作の計算が行えることを意味しており、同様の手法を用いて図12で示す機能ブロックの計算を行うと、以下のような順番で計算を行う。
図12に示すように、まず、機能ブロックAの(1)示す非通信ノードの6ステップを計算する。次に、機能ブロックを変え、機能ブロックBの(2)で示す非通信ノードの3ステップを計算する。続いて、機能ブロックを変え、機能ブロックAの(3)で示す通信ノードのステップを計算する。さらに、この通信ノードのステップでは、機能ブロックBに対してデータXを送信する。
次に、機能ブロックを変え、機能ブロックBの(4)で示す通信ノードのステップを計算する。この通信ノードのステップでは、テストベンチに対して何らかのデータを送信する。その後、機能ブロックを変え、機能ブロックAの(5)で示す通信ノードのステップを計算する。この通信ノードのステップでは、機能ブロックBに対してデータYを送信する。この通信ノードのステップで機能ブロックAの動作は終了する。
さらに、機能ブロックを変え、機能ブロックBの(6)で示す非通信ノードの2ステップを計算する。次に、機能ブロックBの(7)で示す通信ノードのステップを計算する。この通信ノードのステップでは、機能ブロックAからデータを受信する。その後、機能ブロックBの(8)で示す通信ノードのステップを計算する。この通信ノードのステップでは、機能ブロックAからデータを受信する。この通信ノードのステップで機能ブロックBの動作も終了する。
このように、機能ブロックAの(3)の通信ノードのステップで送信されるデータXは、機能ブロックBの(7)の通信ノードのステップで受信して使用されるのが正しい動作であるとすると、機能ブロックBのステップ(7)の動作を実行する時点では、機能ブロックAのステップ(5)の動作が実行されているため、データYを受信してしまい誤った動作となる虞がある。
正しい計算の順番は、図13に示すような順番である。図13で示すようにステップの計算を(1)〜(8)まで順番に行えば、機能ブロックAの(5)の通信ノードのステップで送信するデータXは、機能ブロックBの(6)の受信前に機能ブロックAの(7)の送信がないので、機能ブロックBの(6)の通信ノードのステップで正しく受信される。また、機能ブロックAの(7)の通信ノードのステップで送信するデータYは、機能ブロックBの(8)の通信ノードのステップで正しく受信される。
この場合の本発明の高位合成手段51の特徴構成としては、非通信ステップを抽出する非通信ステップ抽出手段515と、ステップのハードウェアの動作を統合した計算式を生成し、各機能ブロックで、各ステップをサイクル精度で検証する動作モデルを生成するステップサイクル精度検証記述生成手段516と、機能ブロック間で、計算を実行する機能ブロックの実行順序を制御するための記述を生成する機能ブロック実行順序制御記述生成手段517とを有している。
機能ブロック実行順序制御記述生成手段517は、ハードウェアの機能ブロック毎に、計算を終了したステップを数えるカウンタを持ち、このカウンタのカウント値が最小である機能ブロックから順番に計算を行う制御記述を生成するものである。このことを図14および図15を用いて説明する。
図14は、複数の並列動作する機能ブロックを含むハードウェアの動作を正しくサイクル精度で検証するために、計算を実行する機能ブロックの順序を制御するためのアルゴリズムを示すフローチャートである。
以下に、複数の並列動作する機能ブロックの計算順序を制御する記述を生成するアルゴリズムを示すフローチャートについて説明する。
図14に示すように、まず、ステップS31でシミュレーションを開始する。ステップS32で各機能ブロックでの計算を実行終了したステップ数を表すカウンタのカウント値を「0」にして初期化する。ここでは、n個の機能ブロックがあるとし、C言語での変数の配列c[n]を用いて表現している。
次に、ステップS33で計算を実行終了したステップ数が最小の機能ブロックを選択する。図14では、c[n]の値を参照し、最小の値を持つ機能ブロックを選択する。
続いて、ステップS34で選択された機能ブロックの計算を実行する。さらに、ステップS35で計算したステップ数を、計算を実行した機能ブロックのステップ数のカウンタのカウント値に加算する。
図15は、図14のアルゴリズムをC言語のプログラムを用いて実装した記述例であって、複数の並列動作する機能ブロックの計算順序を制御する制御記述例を示す図である。
図15の制御記述例では、4つの並列動作する機能ブロックがある。各機能ブロックの計算を実行終了したステップ数を表すカウンタのカウント値を、変数の配列c[4]を用いて表している。各機能ブロックの計算を行うための関数は、block0、block1、block2、block3で表され、これらの関数の戻り値は、各機能ブロックで計算を実行したステップ数であるとする。
図15中のC言語の関数minimunは、図14のアルゴリズムのステップS33の処理を実現するための機能を実装した関数である。各機能ブロックで計算を実行終了したステップ数を表すカウンタのカウント値を参照し、その中から最小の値を持つカウンタのカウント値を抽出し、そのカウンタのカウント値を持つ機能ブロックの番号を戻り値として返す。図15中のC言語の関数cycle_accurate_simulateでは、各機能ブロックのカウンタのカウント値を初期化し、次に、無限ループを用いて図14で示すところのステップS33〜S35の各処理を繰り返し行っている。この無限ループ内部では、関数minimunを用いて実行終了したステップ数が最小の機能ブロックを求め、switch構文を用いて計算を実行する機能ブロックを振り分けている。
ここで、複数の並列動作をする機能ブロック(スレッド)を含むハードウェアの動作をサイクル精度で検証する場合(複数のスレッドの場合)について更に説明する。
スレッド間通信および共有リソースアクセスをトランザクションと定義し、トランザクションを行うステップの1ステップ前まで一連のシミュレーションを実行する。即ち、トランザクションがスケジューリングされているステップまでスレッド回路動作をシミュレーションする。なお、ここでは、スレッド間通信および共有リソースアクセスを含めて単に通信として一般化している。
この場合、トランザクションがない非通信ステップは、連続してシミュレーションを実行する。非通信ステップでは、上記実施形態1で説明したように、ステップ間のレジスタ更新は行わず、レジスタアロケーションを考慮しないことにより、シミュレーションの高速化を図ることができる。また、非通信ステップでは、上記実施形態1で説明したように、セレクタの条件に応じて不要な計算を削除することによっても、シミュレーションの高速化を図ることができる。
まず、前述したように、単一スレッドの場合と同様に、トランザクションを行うステップの1ステップ前まで一連のシミュレーションを実行する。トランザクションが発生するまではスレッド内部で閉じた計算を行うことができる。
次に、スレッド毎にシミュレーションを進めたステップ数をカウンタでカウントする。
続いて、進めたステップ数のカウント値が最小のスレッドについてシミュレーションを進める。
複数のスレッドについて、ステップ数のカウント値が同一になる場合、シミュレーションを進めるスレッドの順番は任意とする。例えばスレッド番号の小さい順にシミュレーションを進めてもよい。
さらに、ハンドシェイクを必要とするトランザクションは、ハンドシェイクが成立するまで同一のステップを実行する。複数の要求があった場合にどれに割り当てるかを調停するアービトレーションを必要とするトランザクションは、アービトレーションが終了するまで同一のステップを実行する。
このように、図14で示すアルゴリズムを用いれば、複数の並列動作する機能ブロックがあり、本発明のような非通信ステップを統合して計算を実行しても、正しいサイクル精度でハードウェアのシミュレーションを実行することができる。
したがって、上記実施形態1,2を用いれば、非通信ステップのハードウェア動作をシミュレーションするための計算量を大幅に削減することができて、シミュレーションを高速化することができ、これによって、ハードウェアの検証に要する時間を節約して、システムLSIの開発コストおよび開発期間を大幅に低減することができる。
なお、上記実施形態1、2で前述したが、本発明の高位合成装置1の高位合成手段51において、ハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、当該ハードウェアを機能ブロックに分割する機能ブロック分割手段512と、この機能ブロック分割手段512で分割された機能ブロック毎に動作記述を解析した動作情報からハードウェアのCDFGを生成するCDFG生成手段513と、ハードウェア仕様として要求される動作周波数でCDFGをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り手段514と、CDFGから通信を行う動作が含まれない非通信ステップを抽出する非通信ステップ抽出手段515と、非通信ステップのハードウェアの動作を統合した計算式を生成してサイクル精度で検証可能なプログラミング記述を生成するステップサイクル精度検証記述生成手段516とを有している。これによって、非通信ステップのハードウェア動作をシミュレーションするための計算量を削減してシミュレーションを高速化することにより、ハードウェアの検証に要する時間を節約することができて、システムLSIの開発コストを低減すると共に開発期間を短縮することができる本発明の目的を達成することができる。
また、上記実施形態1、2では特に説明しなかったが、ハードウェアの動作を統合した計算式と検証用の動作モデルとの関係について説明する。
このハードウェアの動作を統合した計算式は動作モデルの構成要素である。ハードウェアのサイクル精度の動作モデルは、ハードウェアの動作をクロックサイクル単位で等価に表現したもので、ハードウェアの動作を統合した計算式や、サイクル数を表すカウンタ、複数の機能ブロックで構成されたハードウェアであれば、機能ブロックの切り替え処理などから構成されている。したがって、非通信ステップのハードウェアの動作を統合した計算式を用いて、ハードウェアを汎用プログラミング言語で表現した記述として、サイクル精度で検証する動作モデルを生成する。
以上のように、本発明の好ましい実施形態1、2を用いて本発明を例示してきたが、本発明は、この実施形態1、2に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態1、2の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
本発明は、ハードウェアの動作を検証できる汎用プログラミング記述を生成する高位合成装置および高位合成方法、半導体集積回路の製造方法、この動作合成方法の各工程をコンピュータに実行させるための処理手順が記述された制御プログラム、この制御プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体の分野において、非通信ステップのハードウェア動作をシミュレーションするための計算量を削減してシミュレーションを高速化することにより、ハードウェアの検証に要する時間を節約することができて、システムLSIの開発コストを低減すると共に開発期間を短縮することができる。
1 高位合成装置
2 操作入力部(入力装置)
3 表示部(モニタ装置)
3a 表示画面
4 CPU(制御部)
5 ROM(可読記録媒体)
51 高位合成手段
511 構文解析・字句解析手段
512 機能ブロック分割手段
513 CDFG生成手段
514 スケジューリング・ステップ割り振り手段
515 非通信ステップ抽出手段
516 ステップサイクル精度検証記述生成手段
517 機能ブロック実行順序制御記述生成手段
6 RAM

Claims (20)

  1. ハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、当該ハードウェアを機能ブロックに分割する機能ブロック分割手段と、
    該機能ブロック分割手段で分割された機能ブロック毎に、該動作記述を解析した動作情報から該ハードウェアのコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、
    ハードウェア仕様として要求される動作周波数で該コントロールデータフローグラフをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り手段と、
    該コントロールデータフローグラフから通信を行う動作が含まれない非通信ステップを抽出する非通信ステップ抽出手段と、
    該非通信ステップのハードウェアの動作を統合した計算式を生成してサイクル精度で検証可能なプログラミング記述を生成するステップサイクル精度検証記述生成手段とを有し、
    該通信は、機能ブロック間通信および共有リソースアクセスのいずれかである高位合成装置。
  2. 前記ステップサイクル精度検証記述生成手段は、
    前記非通信ステップのハードウェアの動作を統合した計算式を生成する計算式生成手段と、
    該計算式を用いて、該ハードウェアを汎用プログラミング言語で表現した記述として、サイクル精度で検証する動作モデルを生成する動作モデル生成手段とを有する請求項1に記載の高位合成装置。
  3. 前記非通信ステップ抽出手段は、前記コントロールデータフローグラフに含まれる各ノードの動作情報を用いて、前記通信を行う動作を表すノードが含まれないステップを選び出す請求項1に記載の高位合成装置。
  4. 前記非通信ステップ抽出手段は、前記コントロールデータフローグラフの中から通信ステップを抽出することにより、該通信ステップ以外を前記非通信ステップとして抽出する請求項1に記載の高位合成装置。
  5. 前記計算式生成手段は、前記通信を行う動作を表すノードが含まれない非通信ステップの中で、最終のステップに含まれるレジスタの出力結果を計算するための計算式を生成する請求項2に記載の高位合成装置。
  6. 前記計算式生成手段は、前記コントロールデータフローグラフの中のセレクタの選択条件によって不要となる演算を行わないように計算式を生成する請求項2または5に記載の高位合成装置。
  7. 前記ハードウェアの機能ブロック間で計算を実行する機能ブロックの実行順序を制御する制御記述を生成する機能ブロック実行順序制御記述生成手段を更に有する請求項1に記載の高位合成装置。
  8. 前記実行順序制御記述生成手段は、前記ハードウェアの機能ブロック毎に、前記計算を終了したステップを数えるカウンタを有しており、該カウンタのカウント値が最小である機能ブロックから順番に次の計算を行う制御記述を生成する請求項7に記載の高位合成装置。
  9. 通信を行うステップの1ステップ前までの非通信ステップは、前記機能ブロック内で連続して前記計算を実行する請求項7または8に記載の高位合成装置。
  10. 機能ブロック分割手段とコントロールデータフローグラフ生成手段とスケジューリング・ステップ割り振り手段と非通信ステップ抽出手段とステップサイクル精度検証記述生成手段とを備える高位合成装置において実行される高位合成方法であって、
    該機能ブロック分割手段が、ハードウェアの構造に関する情報を含まず、処理動作のみが記述されたハードウェアの動作記述から、当該ハードウェアを機能ブロックに分割する機能ブロック分割工程と、
    該コントロールデータフローグラフ生成手段が、該機能ブロック分割工程で分割した機能ブロック毎に、該動作記述を解析した動作情報から該ハードウェアのコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程と、
    該スケジューリング・ステップ割り振り手段が、ハードウェア仕様として要求される動作周波数で該コントロールデータフローグラフをスケジューリングして各ステップに割り振るスケジューリング・ステップ割り振り工程と、
    該非通信ステップ抽出手段が、該コントロールデータフローグラフから通信を行う動作が含まれない非通信ステップを抽出する非通信ステップ抽出工程と、
    該ステップサイクル精度検証記述生成手段が、該非通信ステップのハードウェアの動作を統合した計算式を生成してサイクル精度で検証する動作モデルを生成するステップサイクル精度検証記述生成工程とを有し、
    該通信は、機能ブロック間通信および共有リソースアクセスのいずれかである高位合成方法。
  11. 前記ステップサイクル精度検証記述生成工程は、
    前記非通信ステップのハードウェアの動作を統合した計算式を生成する計算式生成工程と、
    該計算式を用いて、ハードウェアを汎用プログラミング言語で表現した記述として、サイクル精度で検証する動作モデルを生成する動作モデル生成工程とを有する請求項10に記載の高位合成方法。
  12. 前記非通信ステップ抽出工程は、前記コントロールデータフローグラフに含まれる各ノードの動作情報を用いて、前記通信を行う動作を表すノードが含まれないステップを選び出す請求項10に記載の高位合成方法。
  13. 前記非通信ステップ抽出工程は、前記コントロールデータフローグラフの中から通信ステップを抽出することにより、該通信ステップ以外を前記非通信ステップとして抽出する請求項10に記載の高位合成方法。
  14. 前記計算式生成工程は、前記通信を行う動作を表すノードが含まれないステップの中で、最終のステップに含まれるレジスタの出力結果を計算するための計算式を生成する請求項11に記載の高位合成方法。
  15. 前記計算式生成工程は、前記コントロールデータフローグラフの中のセレクタの選択条件によって不要となる演算を行わないように計算式を生成する請求項11に記載の高位合成方法。
  16. 前記高位合成装置は、機能ブロック実行順序制御記述生成手段を更に備え、
    前記高位合成方法は、該機能ブロック実行順序制御記述生成手段が、前記ハードウェアの機能ブロック間で計算を実行する機能ブロックの実行順序を制御する制御記述を生成する機能ブロック実行順序制御記述生成工程を更に有する請求項10に記載の高位合成方法。
  17. 前記実行順序制御記述生成手段は、前記ハードウェアの機能ブロック毎に、前記計算を終了したステップを数えるカウンタを有しており、該カウンタのカウント値が最小である機能ブロックから順番に次の計算を行う制御記述を生成する請求項16に記載の高位合成方法。
  18. 請求項1〜のいずれかに記載の高位合成装置を用いてハードウェア動作をシミュレーションした論理合成回路情報に基づいて、半導体集積回路の製造に用いられるレジストパターンを設計する方法。
  19. 請求項10〜17のいずれかに記載の高位合成方法の各工程をコンピュータに実行させるための処理手順が記述された制御プログラム。
  20. 請求項19に記載の制御プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体。
JP2009083459A 2009-03-30 2009-03-30 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体 Expired - Fee Related JP5328447B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009083459A JP5328447B2 (ja) 2009-03-30 2009-03-30 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009083459A JP5328447B2 (ja) 2009-03-30 2009-03-30 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体

Publications (2)

Publication Number Publication Date
JP2010237858A JP2010237858A (ja) 2010-10-21
JP5328447B2 true JP5328447B2 (ja) 2013-10-30

Family

ID=43092123

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009083459A Expired - Fee Related JP5328447B2 (ja) 2009-03-30 2009-03-30 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体

Country Status (1)

Country Link
JP (1) JP5328447B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10896272B2 (en) 2017-02-07 2021-01-19 Mitsubishi Electric Corporation High-level synthesis device, high-level synthesis method, and computer readable medium
JP7215244B2 (ja) * 2019-03-08 2023-01-31 富士通株式会社 記述変換方法、シミュレーション方法及び記述変換プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3763700B2 (ja) * 1998-06-04 2006-04-05 シャープ株式会社 高位合成装置
JP2003006265A (ja) * 2001-06-26 2003-01-10 Matsushita Electric Ind Co Ltd 動作モデル生成方法および動作モデル生成装置
JP4175953B2 (ja) * 2003-05-23 2008-11-05 シャープ株式会社 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体
JP2006048525A (ja) * 2004-08-06 2006-02-16 Toshiba Corp シミュレーション方法
JP2006139729A (ja) * 2004-11-15 2006-06-01 Sharp Corp ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
EP1962210A4 (en) * 2005-11-30 2010-03-17 Ip Flex Inc STYLE RECONSTRUCTION METHOD AND COMPUTER SYSTEM HAVING THE SAME
US7472361B2 (en) * 2005-12-30 2008-12-30 Cadence Design Systems, Inc. System and method for generating a plurality of models at different levels of abstraction from a single master model

Also Published As

Publication number Publication date
JP2010237858A (ja) 2010-10-21

Similar Documents

Publication Publication Date Title
Habibi et al. Design and verification of SystemC transaction-level models
US7945894B2 (en) Implementing a design flow for a programmable hardware element coupled to a processor
JP4994393B2 (ja) 単一のマスターモデルから異なる抽象化レベルの複数のモデルを生成するシステムと方法
US8527972B2 (en) Method for forming a parallel processing system
US20020152061A1 (en) Data processing system and design system
CN115315702A (zh) 早期阶段电路设计中基于机器学习的度量的预测
US20230120227A1 (en) Method and apparatus having a scalable architecture for neural networks
JP2006139729A (ja) ハードウェア検証用プログラミング言語モデル生成装置、ハードウェア検証用プログラミング言語モデル生成方法、コンピュータシステム、ハードウェアシミュレーション方法、制御プログラムおよび可読記憶媒体
JP4293562B2 (ja) ハードウェア検証用プログラミング記述生成装置、高位合成装置、ハードウェア検証用プログラミング記述生成方法、ハードウェア検証用プログラム生成方法、制御プログラムおよび可読記録媒体
JP2004348606A (ja) 高位合成装置、ハードウェア検証用モデル生成方法およびハードウェア検証方法
JP5328447B2 (ja) 高位合成装置および高位合成方法、半導体集積回路の製造方法、制御プログラム、可読記憶媒体
JP2009140388A (ja) 性能評価モデル生成方法、システム性能評価方法、及び性能評価モデル生成装置
US11995386B2 (en) Verification of hardware design for data transformation component
US9135376B2 (en) Input space reduction for verification test set generation
US7257786B1 (en) Method and apparatus for solving constraints
US9223910B1 (en) Performance and memory efficient modeling of HDL ports for simulation
JP5147801B2 (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、及び制御プログラム
JP2003067438A (ja) シミュレーションモデルの生成方法及びシミュレーション方法及びその記録媒体
Petry et al. A spectrum of MPSoC models for design space exploration and its use
Gajski System-level design methodology
KR100928181B1 (ko) 디지털 시스템 설계 방법
JP2009140028A (ja) ハードウェア検証用プログラミング記述生成装置、ハードウェア検証用プログラミング記述生成方法、制御プログラムおよび可読記録媒体
JP6761182B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN116911219A (zh) 用于逻辑系统设计的仿真的方法、电子设备和存储介质
Mendias et al. Efficient verification of scheduling, allocation and binding in high-level synthesis

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120607

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120713

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130321

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130702

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130723

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

LAPS Cancellation because of no payment of annual fees