JP3923920B2 - 集積回路の設計システム及び集積回路の設計方法 - Google Patents
集積回路の設計システム及び集積回路の設計方法 Download PDFInfo
- Publication number
- JP3923920B2 JP3923920B2 JP2003096687A JP2003096687A JP3923920B2 JP 3923920 B2 JP3923920 B2 JP 3923920B2 JP 2003096687 A JP2003096687 A JP 2003096687A JP 2003096687 A JP2003096687 A JP 2003096687A JP 3923920 B2 JP3923920 B2 JP 3923920B2
- Authority
- JP
- Japan
- Prior art keywords
- description
- circuit
- file
- flip
- preprocessor
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【0001】
【発明の属する技術分野】
この発明は、ハードウェア記述をコンフィギュレーションに従って変更する作業を自動化する場合などにおいて使用されるプリプロセッサを用いた集積回路の設計システム、及びこのシステムによる集積回路の設計方法に関する。特にIP,ソフトIPをユーザの指定に従って自動的に生成するシステムなどに好適なもので、フリップフロップの同期/非同期指定やゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルを生成するためのものである。
【0002】
【従来の技術】
従来、集積回路の設計システムは、例えば図13に示すように構成されている。このような集積回路を設計するためのコンピュータシステムとその方法については、例えば特許文献1に記載されている。
【0003】
ユーザによって既存の言語(Verilog−HDL:Verilog-Hardware Description LanguageまたはVHDL:Very High Speed Integrated Circuits Hardware Description Languageなど)で記述された回路記述ファイル11と、論理合成制御スクリプトファイル(論理合成プログラムを制御するためのスクリプトファイル)12がプロセッサ(コンピュータ)13の論理合成プログラム14によって論理合成される。論理合成プログラム14では、上記回路記述ファイル11を、回路を構成する基本単位である「セル」を使用した回路記述ファイルに変換する処理が行われ、ネットリスト(Netlist)15が生成される。このネットリスト15が配置配線プログラム(セル及び配線を配置するプログラム)16により処理されて、セルと配線の配置が決定され、チップ(半導体集積回路)17の回路設計が行われる。
【0004】
ところで、上記のような従来の集積回路の設計システムでは、Verilog−HDLやVHDLなどの既存の言語を使用して同期リセット回路や非同期リセット回路を記述する場合には、同期リセット用と非同期リセット用の2つの記述を人手で作成しなければならない。また、低消費電力化のためにフリップフロップのゲーテッドクロック化を行う場合、何個のフリップフロップを1つのクラスタとするのが最適であるか、あるいはどのフリップフロップとどのフリップフロップがチップ中で近くに配置されているからクラスタ結合をすべきか、などの条件が種々の要因で異なるため最適なクラスタの構成方法が異なってくる。上記要因としては、例えば下記(1)〜(3)がある。
【0005】
(1)半導体集積回路(ICやLSI)の物理的なテクノロジの相違。
【0006】
(2)回路の動作パターン、すなわちユーザアプリケーションがその回路をどのように使用するかの違い。
【0007】
(3)チップ中での各回路の配置の仕方。
【0008】
しかし、従来は人手により、同期リセット用と非同期リセット用の記述を作成したり、ゲーテッドクロック化のための回路を試行錯誤で挿入していたので、最適値に収束させるのが難しい。しかも、ゲーテッドクロック化のための回路を挿入する場合には周辺の回路を修正する必要があり、フリップフロップの記述周辺の修正だけとはいえ、回路規模が大きいと数千ヶ所になることもある。また、人手による修正では、バグの混入を避けることができず、修正のたびに機能検証作業が必要となる。LSIの回路規模や複雑度は大変な速度で上昇しており、これに伴って検証作業にかかる時間も膨大になっている。このため、開発期間の長期化やコストの上昇の1つの要因になっている。
【0009】
なお、上記ゲーテッドクロック化のための回路を自動的に挿入するツールは既に存在しているが(例えば非特許文献1参照)、指定したクラスタを結合するなどの細かな要求に応えることはできず、必ずしも満足できるものではない。
【0010】
【特許文献1】
U.S.Patent No.5,987,239. Graham Kirsch "COMPUTER SYSTEM AND METHOD FOR BUILDING A HARDWARE DESCRIPTION LANGUAGE REPRESENTATION OF CONTROL LOGIC FOR A COMPLEX DIGITAL SYSTEM" Nov.16,1996.
【0011】
【非特許文献1】
0-8186-4350-1/93 1993 IEEE pp.466-471 "A Workbench for Generation of Component Models" Marcus Bluml et al.
【0012】
【発明が解決しようとする課題】
上述したように、従来のプリプロセッサ、集積回路の設計システム及び集積回路の設計方法では、人手による作業が必要なため、時間がかかりバグの混入も不可避であり、開発期間の長期化やコストの上昇の要因となる、という問題があった。
【0013】
また、ゲーテッドクロック化のための回路を自動的に挿入するツールは存在するが、細かな要求に応えることができない、という問題があった。
【0014】
この発明は上記のような事情に鑑みてなされたもので、その目的とするところは、フリップフロップの同期/非同期指定及びゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルを生成できるプリプロセッサを用いることで、開発期間を短縮し、コストを低減できる集積回路の設計システムとこのシステムによる集積回路の設計方法を提供することにある。
【0018】
【課題を解決するための手段】
この発明の一態様によると、ユーザによって記述されたプリプロセッサ制御ファイルに基づいて、ユーザによって記述され、第1のハードウェア記述言語でリセット方式が定まっていない状態のフリップフロップの記述を含む第1の回路記述ファイルの処理を行い、少なくとも前記フリップフロップの記述を第2のハードウェア記述言語に変換して第2の回路記述ファイルとゲーテッドクロック回路用の論理合成制御スクリプトファイルとを生成するように構成されたプリプロセッサと、前記プリプロセッサで生成された前記第2の回路記述ファイル、前記プリプロセッサで生成された前記論理合成制御スクリプトファイル及び予め用意されているゲーテッドクロック以外の制御を行うための論理合成制御スクリプトファイルを論理合成して、回路を構成する基本単位であるセルを使用した回路記述ファイルに変換することによりネットリストを生成し、且つフリップフロップのゲーテッドクロック化のための情報を生成し、前記ネットリストに基づいて集積回路におけるセルと配線の配置を決定するように構成されたメインプロセッサとを具備し、前記第1の回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換する際に、前記フリップフロップが同期リセット方式か非同期リセット方式かがユーザによって指定される集積回路の設計システムが提供される。
【0019】
上記のような構成のシステムによれば、プリプロセッサでフリップフロップの同期/非同期指定やゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイル(第2の回路記述ファイル)を生成するので、従来は人手による作業で行っていた部分を自動化して集積回路を設計できる。これによって、作業時間を短縮し、且つ人手の介在によるバグの混入を避けることができ、検証作業にかける時間も不要になる。よって、開発期間を短縮し、コストを低減できる。
【0020】
また、この発明の一態様によると、ユーザによって記述され、第1のハードウェア記述言語と第2のハードウェア記述言語が混在し、第1のハードウェア記述言語でリセット方式が定まっていない状態のフリップフロップの記述を含む回路記述ファイルと、ユーザによって記述されたプリプロセッサの動作を制御するためのプリプロセッサ制御ファイルとをプリプロセッサに入力し、このプリプロセッサで前記回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換するステップと、前記プリプロセッサから出力される回路記述ファイルとゲーテッドクロック回路用の論理合成制御スクリプトファイル、及び予め用意されているゲーテッドクロック回路以外の論理合成制御スクリプトファイルをメインプロセッサで論理合成し、このメインプロセッサで回路を構成する基本単位であるセルを使用した回路記述ファイルに変換してネットリストを生成するステップと、前記ネットリストに基づいて前記セルと配線の配置を決定し、チップの回路設計を行うステップとを具備し、前記プリプロセッサによって同期/非同期指定とゲーテッドクロックのクラスタ結合が変更される集積回路の設計方法が提供される。
【0021】
上記のような方法によれば、従来は人手による作業で行っていた部分を自動化して集積回路を設計できる。これによって、作業時間を短縮し、且つ人手の介在によるバグの混入を避けることができ、検証作業にかける時間も不要になる。この結果、開発期間を短縮し、コストを低減できる。
【0022】
【発明の実施の形態】
以下、この発明の実施の形態について図面を参照して説明する。
図1は、この発明の実施の形態に係るプリプロセッサ及び集積回路の設計システムについて説明するためのもので、システム全体の概略構成を示している。ユーザによって記述された回路記述ファイル21と、同じくユーザによって記述されたプリプロセッサ制御ファイル(プリプロセッサの動作を制御するための記述ファイル)22がプリプロセッサ23に入力され、プリプロセッサ制御ファイル22の制御データに基づいて回路記述ファイル21に対する処理が行われる。上記回路記述ファイル21には、異なるハードウェア記述言語(ここでは記述言語Aと記述言語Bと称する)が混在している。また、上記回路記述ファイル21には、下記(a)〜(f)の情報が記述されている。
【0023】
(a)リセット信号の名前
(b)クロック信号の名前
(c)フリップフロップのリセット方式[同期/非同期]
(d)ゲーテッドクロック化するか否か[YES/NO]
(e)ゲーテッドクロック化する場合に、そのクロックゲーティングの記述をプリプロセッサが生成するか否か
論理合成プログラムの自動ゲーテッドクロック化機能が自動認識できる記述形式で出力するか否か[自動/プリプロセッサが生成]
(f)どのクラスタを1つと見なすか(結合)に関する情報(複数可)
上記プリプロセッサ23により、上記回路記述ファイル21中の記述言語Aが既存の記述言語B(Verilog−HDLまたはVHDLなど)に変換され、回路記述ファイル24が作成される。また、論理合成プログラム25でゲーテッドクロック化を行う際に使用する論理合成制御スクリプトファイル(ゲーテッドクロック回路用)26が作成される。
【0024】
論理合成ツール(コンピュータ)27には、上記回路記述ファイル24及び上記論理合成制御スクリプトファイル26に加えて、予め用意されているゲーテッドクロックに関するもの以外の論理合成スクリプトファイル28が入力される。論理合成プログラム25では、上記回路記述ファイル24を、回路を構成する基本単位であるセルを使用した回路記述ファイルに変換する処理が行われる。この段階では、セル及び配線をどのように配置するかは決まっていない。そして、この論理合成プログラム25によってネットリスト(論理合成プログラムから出力されたセルを使用した回路記述)29が生成される。
【0025】
上記ネットリスト29は、配置配線プログラム(セル及び配線を配置するプログラム)30により処理されてセルと配線の配置が決定される。そして、この配置配線プログラム30の処理結果に基づいて、チップ(半導体集積回路)31の回路設計が行われる。
【0026】
図2乃至図7はそれぞれ、上記図1に示した集積回路の設計システムにおけるプリプロセッサ23の動作を示すフローチャートである。図2は図1に示したシステムにおけるプリプロセッサの概略的な動作を示すフローチャート、図3は第1ステージの処理サブルーチンを示すフローチャート、図4は拡張記述解析サブルーチンを示すフローチャート、図5は第2ステージの処理サブルーチンを示すフローチャート、図6はタグBの処理サブルーチンを示すフローチャート、図7はクラスタ結合サブルーチンを示すフローチャートである。
【0027】
図2に示すように、まず、プリプロセッサ23のプログラム本体の動作が開始されると、プリプロセッサ制御ファイルの読み込みとその解釈が行われ、その情報が配列CTRLへ格納される(STEP1)。
【0028】
次に、図3に示す第1ステージの処理サブルーチンに入る(STEP2)。第1ステージの処理では、ユーザによる回路記述ファイル21を開き(STEP3)、ファイルが終わりか否かを判定する(STEP4)。ファイルが終わりでないと判定されると、拡張記述に関する記述か否かが判定される(STEP5)。ここで拡張記述であると判定されると拡張記述解析サブルーチンへジャンプし(STEP6)、拡張記述でないと判定されると、何も変換せずに一時バッファtmpにタグ「A」を付加して格納し(STEP7)、STEP4の判定動作に戻る。そして、ファイルが終わりと判定されるまで上述したSTEP4乃至STEP7の動作を繰り返す。STEP4でファイルが終わりと判定されると、サブルーチンの呼び出し元(STEP2)へ戻る。
【0029】
拡張記述サブルーチンでは、図4に示すように、フリップフロップに関する拡張記述か否かが判定される(STEP8)。そして、フリップフロップに関する拡張記述であると判定されると、拡張回路記述の文法解析により情報を構造体FFの各変数へ格納し(STEP9)、フリップフロップに関する拡張記述でないと判定されると、エラー処理を行ってプログラムを終了する(STEP10)。上記構造体FFの各変数への情報の格納は、変数名Nameにフリップフロップの名前、BitNumにフリップフロップのビット数、ClusterNoにクラスタ番号、CtrlNamePtr*にフリップフロップの制御信号群の名前へのポインタ、ValPtr*にフリップフロップの制御信号群がそれぞれ1になった場合に代入すべき値または信号群へのポインタの情報をそれぞれ格納する。
【0030】
次に、構造体FFの実体へのポインタに、タグ「B」を付加して一時バッファtmpに格納する(STEP11)。
【0031】
その後、サブルーチンの呼び出し元(STEP5)へ戻る。
【0032】
上述した第1ステージの処理サブルーチンが終了すると、第2ステージの処理サブルーチンへジャンプする(STEP12)。第2ステージの処理サブルーチンでは、まず図5に示すように、一時バッファtmpの終わりか否かが判定され(STEP13)、終わりでないと判定されると一時バッファtmpからタグ及び格納情報を取得する(STEP14)。そして、タグが「B」か否かが判定される(STEP15)。タグが「B」でない場合には、格納情報をそのまま出力ファイルOUTに出力(STEP16)してSTEP13に戻って同様な処理を繰り返す。そして、上記STEP13で一時バッファtmpの終わりと判定されると、サブルーチンの呼び出し元(STEP12)へ戻る。一方、タグが「B」であった場合には、タグBの処理サブルーチンへジャンプする(STEP17)。
【0033】
タグBの処理サブルーチンは、図6に示すように、配列CTRLにゲーテッドクロック機能を有効にする指定が存在し、タグBとともに格納された構造体FFのデータにおける変数ClusterNo(=CurrentNo)と別のClusterNo(=AppendNo)とのクラスタ結合指定が存在するか否かが判定される(STEP18)。クラスタ結合指定が存在する場合には、クラスタ結合サブルーチンへジャンプし(STEP19)、存在しない場合には配列CTRLにゲーテッドクロック用セルを直接配置する指定が存在するか否かが判定される(STEP20)。指定が存在する場合には、フリップフロップ用のクロック信号として、配列CTRLに格納されているクロック信号をゲーテッドクロック用に制御する回路を通過した後の信号名を使用するように変更する。また、制御する回路用のVerilog記述を出力ファイルOUTに出力する(STEP21)。一方、指定が存在しない場合には、フリップフロップ用のクロック信号として配列CTRLに格納されているクロック信号を使用することにする(STEP22)。
【0034】
上記STEP21及びSTEP22による処理結果に対して、配列CTRLにフリップフロップを非同期リセットに設定する項目が存在するか否かが判定される(STEP23)。存在する場合には、構造体FFの変数CtrlNamePtrで示される配列に配列CTRLに格納された「リセット信号」と同じものが存在した場合には、その信号を非同期リセット信号と見なして構造体FFの内容を、非同期リセットを有するフリップフロップとなるようなVerilog記述を生成し、出力ファイルOUTへ出力する(STEP24)。これに対し、存在しない場合には、構造体FFの変数CtrlNamePtrで示される配列に配列CTRLに格納された「リセット信号」と同じものが存在した場合には、その信号を同期リセット信号と見なして構造体FFの内容を、同期リセットを有するフリップフロップとなるようなVerilog記述を生成し、出力ファイルOUTへ出力する(STEP25)。その後、サブルーチンの呼び出し元(STEP15)に戻る。
【0035】
上記STEP19において、クラスタ結合サブルーチンへジャンプした場合には、図7に示すように、結合対象のAppendNoが存在するか否かが判定され(STEP26)、存在する場合には、CurrentNoの構造体FFとAppendNoの構造体を結合して、1つのゲーテッドクラスタを形成するようにCurrentNoの構造体FFの構造を変更する(STEP27)。次に、結合に必要な回路のうち、構造体FFだけで表現できないVerilog記述に関する記述を生成して出力ファイルOUTに出力する(STEP28)。その後、Verilog記述に関する情報を一時バッファtmpから削除する(STEP29)。そして、STEP26に戻って結合対象のAppendNoが存在しなくなるまでSTEP27乃至STEP29の処理を繰り返し、存在しなくなるとゲーテッドクロック化の対象となったフリップフロップのレジスタ名などの情報を論理合成制御ファイルの形式で出力する(STEP30)。次に、サブルーチンの呼び出し元(STEP18)に戻る。
【0036】
図8は、上記図2乃至図7に示したプリプロセッサによるフリップフロップのリセットの同期/非同期指定を変更する場合の入力ファイルと出力ファイルを示している。ここでは、フリップフロップのリセット方式として同期リセット/非同期リセットを指定した場合の、それぞれの変換プログラムA(ProgramA)の出力結果を示す。
【0037】
図8において、“</”と“/>”はマーカー(marker)であり、“</”と“/>”で囲まれた部分の記述が変換対象となる。clk clockは変換後のハードウェア記述におけるクロック信号の名前(ここではclock)を指定するものである。delayは変換後のハードウェア記述におけるシミュレーションのディレイ値(ここでは2)を指定するものである。
【0038】
また、programAは、プリプロセッサ23の変換プログラムAを意味しており、option−SYNCは、上記programAに対して同期リセット方式でフリップフロップを初期化するハードウェア記述を出力することを指定し、option−ASYNCは、上記programAに対して非同期リセット方式でフリップフロップを初期化するハードウェア記述を出力することを指定する。
【0039】
上記のようなプリプロセッサへの入力ファイルに対して、フリップフロップのリセットの同期/非同期指定に応じた変換プログラムAによる処理結果が出力される。
【0040】
このように、プリプロセッサ23により、フリップフロップの同期/非同期指定を自由に変更可能な回路記述ファイルを生成できる。また、フリップフロップのリセットに関して「同期リセット」とした記述と「非同期リセット」とした記述の2つは、変換プログラムAを2回実行すれば得られる。これにより人手で作成した場合に比べて、短期間で「同期リセット」とした記述と「非同期リセット」の2つを得ることが可能である。
【0041】
図9は、ゲーテッドクロック機能をグルーピング指定なしで行った場合(クラスタ結合機能を使わない場合)のプリプロセッサ(変換プログラムA)23の入力ファイルと出力ファイルの例である。また、図10は、上記図9に示した出力ファイルから形成された回路例を示している。ここで、a00,a01はクロック信号を停止(ゲーティング)するための回路、b00,b02はラッチ、b01,b03は論理積回路、c00,c01,c02はフリップフロップ、d00,d01はクラスタを表している。
【0042】
プリプロセッサ23にゲーテッドクロック機能を指示する信号enable gate−clockが入力されると、入力ファイルは変換プログラムAにより処理されて出力ファイルが生成される。
【0043】
図11は、ゲーテッドクロック機能をグルーピング指定して行った場合(クラスタ結合機能を使った場合)のプリプロセッサ(変換プログラムA)の入力ファイルと出力ファイルの例である。また、図12は、上記図11に示した出力ファイルから形成された回路例を示している。プリプロセッサ23には、ゲーテッドクロック機能を指示する信号enable gate−clockとクラスタ結合機能を指示する信号grouping{FF00,FF01}が入力される。クラスタ結合機能は変換プログラムAに対してgrouping{FF00,FF01}などを指定することで機能する。ここで、a00はクロック信号を停止(ゲーティング)するための回路、b00はラッチ、b01は論理積回路、c00,c01,c02はフリップフロップ、d00はクラスタである。
【0044】
このように、フリップフロップの同期/非同期指定だけでなく、ゲーテッドクロックのクラスタ結合も変更可能な回路記述ファイルを生成できる。しかも、低消費電力化のためのゲーテッドクロック化において、より大きなクラスタをクラスタ結合機能により簡単に実現することができるために、クラスタサイズの最適値を求める作業などに要する時間を大幅に短縮できる。
【0045】
上述したように、この発明の実施の形態に係るプリプロセッサ、集積回路の設計システム及び集積回路の設計方法では、フリップフロップのハードウェア記述において、同期リセット付きフリップフロップであるか、非同期リセット付きフリップフロップであるかを特定しない形式で記述する。この際、上記フリップフロップに関する記述は、既存のハードウェア記述言語(第2のハードウェア記述言語)で記述されたファイル(第1の回路記述ファイル)の中に、第1のハードウェア記述言語で記述する。このフリップフロップに関する記述が埋め込まれた回路記述ファイルを変換プログラムA(ProgramA)で処理すると、フリップフロップに関する記述部は既存のハードウェア記述言語に変換されて出力される。このとき変換プログラムAに与える引数により、同期リセット方式のフリップフロップ記述を出力させることができる。同様に、非同期リセット方式のフリップフロップ記述を出力させることもできる。
【0046】
このように、ハードウェア記述言語の変換を変換プログラムAにより自動化することにより、「同期リセット」と「非同期リセット」のそれぞれの方式で記述されたハードウェア記述を簡単に得ることができる。また、例えば「同期リセット」方式の記述側を検証すれば、「非同期リセット」方式の記述の方も検証されたことになるので、2つのハードウェア記述の検証にかかる時間を半分にすることができる、これにより、LSIの開発等において開発期間を短縮することができる。
【0047】
また、フリップフロップのクロックをゲーテッドクロック化する指定を変換プログラムAに対して指定することが可能であり、この場合にはフリップフロップのクロックをゲーティングした記述が生成される。更に、フリップフロップの記述Xおよび記述Yが存在する場合に、記述Xと記述Yのクロックを共通化し、共通化されたクロックに対してゲーテッドクロック化を行うこともできる(クラスタ結合)。
【0048】
上述したように、様々なコンフィギュレーションに従ったRTL記述を容易に得ることが可能となる。
【0049】
従って、上記のような構成並びに設計方法によれば、フリップフロップの同期/非同期指定及びゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルをプリプロセッサ23で生成できるので、開発期間の短縮とコストの低減を図ることが可能となる。しかも、人手による作業ではバグの混入による修正が必要になり、修正のたびに機能検証作業が発生するが、自動化により検証作業が不要となり、この点からも開発期間の短縮やコストの低減が図れる。
【0050】
なお、上記実施の形態では、説明を分かりやすくするために、回路記述ファイル21とプリプロセッサ制御ファイル22が別のファイルの場合を例に取って説明したが、1つのファイルにまとめても良いのは勿論である。
【0051】
以上実施の形態を用いてこの発明の説明を行ったが、この発明は上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば実施の形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも1つが解決でき、発明の効果の欄で述べられている効果の少なくとも1つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0052】
【発明の効果】
以上説明したように、この発明によれば、フリップフロップの同期/非同期指定及びゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルを生成できるプリプロセッサを用いることで、開発期間を短縮し、コストを低減できる集積回路の設計システムとこのシステムによる集積回路の設計方法が得られる。
【図面の簡単な説明】
【図1】 この発明の実施の形態に係るプリプロセッサ及び集積回路の設計システムについて説明するためのもので、システム全体の概略構成を示す機能ブロック図。
【図2】 図1に示したシステムにおけるプリプロセッサの概略的な動作を示すフローチャート。
【図3】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、第1ステージの処理サブルーチンを示すフローチャート。
【図4】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、拡張記述解析サブルーチンを示すフローチャート。
【図5】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、第2ステージの処理サブルーチンを示すフローチャート。
【図6】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、タグBの処理サブルーチンを示すフローチャート。
【図7】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、クラスタ結合サブルーチンを示すフローチャート。
【図8】 図2乃至図7に示したプリプロセッサによるフリップフロップのリセットの同期/非同期指定を変更する場合の入力と出力の関係について説明するための図。
【図9】 図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用しない場合の入力ファイルと出力ファイルとの関係について説明するための図。
【図10】 図1に示した集積回路の設計システムを用い、図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用しないで形成した回路の構成例を示す回路図。
【図11】 図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用した場合の入力ファイルと出力ファイルとの関係について説明するための図。
【図12】 図1に示した回路システムを用い、図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用して形成した回路の構成例を示す回路図。
【図13】 従来の集積回路の設計システム及び集積回路の設計方法について説明するための機能ブロック図。
【符号の説明】
21…回路記述ファイル(第1の回路記述ファイル)、22…プリプロセッサ制御ファイル、23…プリプロセッサ、24…回路記述ファイル(第2の回路記述ファイル)、25…論理合成プログラム、26…論理合成制御スクリプトファイル、27…論理合成ツール(コンピュータ)、28…論理合成スクリプトファイル、29…ネットリスト、30…配置配線プログラム、31…チップ。
【発明の属する技術分野】
この発明は、ハードウェア記述をコンフィギュレーションに従って変更する作業を自動化する場合などにおいて使用されるプリプロセッサを用いた集積回路の設計システム、及びこのシステムによる集積回路の設計方法に関する。特にIP,ソフトIPをユーザの指定に従って自動的に生成するシステムなどに好適なもので、フリップフロップの同期/非同期指定やゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルを生成するためのものである。
【0002】
【従来の技術】
従来、集積回路の設計システムは、例えば図13に示すように構成されている。このような集積回路を設計するためのコンピュータシステムとその方法については、例えば特許文献1に記載されている。
【0003】
ユーザによって既存の言語(Verilog−HDL:Verilog-Hardware Description LanguageまたはVHDL:Very High Speed Integrated Circuits Hardware Description Languageなど)で記述された回路記述ファイル11と、論理合成制御スクリプトファイル(論理合成プログラムを制御するためのスクリプトファイル)12がプロセッサ(コンピュータ)13の論理合成プログラム14によって論理合成される。論理合成プログラム14では、上記回路記述ファイル11を、回路を構成する基本単位である「セル」を使用した回路記述ファイルに変換する処理が行われ、ネットリスト(Netlist)15が生成される。このネットリスト15が配置配線プログラム(セル及び配線を配置するプログラム)16により処理されて、セルと配線の配置が決定され、チップ(半導体集積回路)17の回路設計が行われる。
【0004】
ところで、上記のような従来の集積回路の設計システムでは、Verilog−HDLやVHDLなどの既存の言語を使用して同期リセット回路や非同期リセット回路を記述する場合には、同期リセット用と非同期リセット用の2つの記述を人手で作成しなければならない。また、低消費電力化のためにフリップフロップのゲーテッドクロック化を行う場合、何個のフリップフロップを1つのクラスタとするのが最適であるか、あるいはどのフリップフロップとどのフリップフロップがチップ中で近くに配置されているからクラスタ結合をすべきか、などの条件が種々の要因で異なるため最適なクラスタの構成方法が異なってくる。上記要因としては、例えば下記(1)〜(3)がある。
【0005】
(1)半導体集積回路(ICやLSI)の物理的なテクノロジの相違。
【0006】
(2)回路の動作パターン、すなわちユーザアプリケーションがその回路をどのように使用するかの違い。
【0007】
(3)チップ中での各回路の配置の仕方。
【0008】
しかし、従来は人手により、同期リセット用と非同期リセット用の記述を作成したり、ゲーテッドクロック化のための回路を試行錯誤で挿入していたので、最適値に収束させるのが難しい。しかも、ゲーテッドクロック化のための回路を挿入する場合には周辺の回路を修正する必要があり、フリップフロップの記述周辺の修正だけとはいえ、回路規模が大きいと数千ヶ所になることもある。また、人手による修正では、バグの混入を避けることができず、修正のたびに機能検証作業が必要となる。LSIの回路規模や複雑度は大変な速度で上昇しており、これに伴って検証作業にかかる時間も膨大になっている。このため、開発期間の長期化やコストの上昇の1つの要因になっている。
【0009】
なお、上記ゲーテッドクロック化のための回路を自動的に挿入するツールは既に存在しているが(例えば非特許文献1参照)、指定したクラスタを結合するなどの細かな要求に応えることはできず、必ずしも満足できるものではない。
【0010】
【特許文献1】
U.S.Patent No.5,987,239. Graham Kirsch "COMPUTER SYSTEM AND METHOD FOR BUILDING A HARDWARE DESCRIPTION LANGUAGE REPRESENTATION OF CONTROL LOGIC FOR A COMPLEX DIGITAL SYSTEM" Nov.16,1996.
【0011】
【非特許文献1】
0-8186-4350-1/93 1993 IEEE pp.466-471 "A Workbench for Generation of Component Models" Marcus Bluml et al.
【0012】
【発明が解決しようとする課題】
上述したように、従来のプリプロセッサ、集積回路の設計システム及び集積回路の設計方法では、人手による作業が必要なため、時間がかかりバグの混入も不可避であり、開発期間の長期化やコストの上昇の要因となる、という問題があった。
【0013】
また、ゲーテッドクロック化のための回路を自動的に挿入するツールは存在するが、細かな要求に応えることができない、という問題があった。
【0014】
この発明は上記のような事情に鑑みてなされたもので、その目的とするところは、フリップフロップの同期/非同期指定及びゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルを生成できるプリプロセッサを用いることで、開発期間を短縮し、コストを低減できる集積回路の設計システムとこのシステムによる集積回路の設計方法を提供することにある。
【0018】
【課題を解決するための手段】
この発明の一態様によると、ユーザによって記述されたプリプロセッサ制御ファイルに基づいて、ユーザによって記述され、第1のハードウェア記述言語でリセット方式が定まっていない状態のフリップフロップの記述を含む第1の回路記述ファイルの処理を行い、少なくとも前記フリップフロップの記述を第2のハードウェア記述言語に変換して第2の回路記述ファイルとゲーテッドクロック回路用の論理合成制御スクリプトファイルとを生成するように構成されたプリプロセッサと、前記プリプロセッサで生成された前記第2の回路記述ファイル、前記プリプロセッサで生成された前記論理合成制御スクリプトファイル及び予め用意されているゲーテッドクロック以外の制御を行うための論理合成制御スクリプトファイルを論理合成して、回路を構成する基本単位であるセルを使用した回路記述ファイルに変換することによりネットリストを生成し、且つフリップフロップのゲーテッドクロック化のための情報を生成し、前記ネットリストに基づいて集積回路におけるセルと配線の配置を決定するように構成されたメインプロセッサとを具備し、前記第1の回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換する際に、前記フリップフロップが同期リセット方式か非同期リセット方式かがユーザによって指定される集積回路の設計システムが提供される。
【0019】
上記のような構成のシステムによれば、プリプロセッサでフリップフロップの同期/非同期指定やゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイル(第2の回路記述ファイル)を生成するので、従来は人手による作業で行っていた部分を自動化して集積回路を設計できる。これによって、作業時間を短縮し、且つ人手の介在によるバグの混入を避けることができ、検証作業にかける時間も不要になる。よって、開発期間を短縮し、コストを低減できる。
【0020】
また、この発明の一態様によると、ユーザによって記述され、第1のハードウェア記述言語と第2のハードウェア記述言語が混在し、第1のハードウェア記述言語でリセット方式が定まっていない状態のフリップフロップの記述を含む回路記述ファイルと、ユーザによって記述されたプリプロセッサの動作を制御するためのプリプロセッサ制御ファイルとをプリプロセッサに入力し、このプリプロセッサで前記回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換するステップと、前記プリプロセッサから出力される回路記述ファイルとゲーテッドクロック回路用の論理合成制御スクリプトファイル、及び予め用意されているゲーテッドクロック回路以外の論理合成制御スクリプトファイルをメインプロセッサで論理合成し、このメインプロセッサで回路を構成する基本単位であるセルを使用した回路記述ファイルに変換してネットリストを生成するステップと、前記ネットリストに基づいて前記セルと配線の配置を決定し、チップの回路設計を行うステップとを具備し、前記プリプロセッサによって同期/非同期指定とゲーテッドクロックのクラスタ結合が変更される集積回路の設計方法が提供される。
【0021】
上記のような方法によれば、従来は人手による作業で行っていた部分を自動化して集積回路を設計できる。これによって、作業時間を短縮し、且つ人手の介在によるバグの混入を避けることができ、検証作業にかける時間も不要になる。この結果、開発期間を短縮し、コストを低減できる。
【0022】
【発明の実施の形態】
以下、この発明の実施の形態について図面を参照して説明する。
図1は、この発明の実施の形態に係るプリプロセッサ及び集積回路の設計システムについて説明するためのもので、システム全体の概略構成を示している。ユーザによって記述された回路記述ファイル21と、同じくユーザによって記述されたプリプロセッサ制御ファイル(プリプロセッサの動作を制御するための記述ファイル)22がプリプロセッサ23に入力され、プリプロセッサ制御ファイル22の制御データに基づいて回路記述ファイル21に対する処理が行われる。上記回路記述ファイル21には、異なるハードウェア記述言語(ここでは記述言語Aと記述言語Bと称する)が混在している。また、上記回路記述ファイル21には、下記(a)〜(f)の情報が記述されている。
【0023】
(a)リセット信号の名前
(b)クロック信号の名前
(c)フリップフロップのリセット方式[同期/非同期]
(d)ゲーテッドクロック化するか否か[YES/NO]
(e)ゲーテッドクロック化する場合に、そのクロックゲーティングの記述をプリプロセッサが生成するか否か
論理合成プログラムの自動ゲーテッドクロック化機能が自動認識できる記述形式で出力するか否か[自動/プリプロセッサが生成]
(f)どのクラスタを1つと見なすか(結合)に関する情報(複数可)
上記プリプロセッサ23により、上記回路記述ファイル21中の記述言語Aが既存の記述言語B(Verilog−HDLまたはVHDLなど)に変換され、回路記述ファイル24が作成される。また、論理合成プログラム25でゲーテッドクロック化を行う際に使用する論理合成制御スクリプトファイル(ゲーテッドクロック回路用)26が作成される。
【0024】
論理合成ツール(コンピュータ)27には、上記回路記述ファイル24及び上記論理合成制御スクリプトファイル26に加えて、予め用意されているゲーテッドクロックに関するもの以外の論理合成スクリプトファイル28が入力される。論理合成プログラム25では、上記回路記述ファイル24を、回路を構成する基本単位であるセルを使用した回路記述ファイルに変換する処理が行われる。この段階では、セル及び配線をどのように配置するかは決まっていない。そして、この論理合成プログラム25によってネットリスト(論理合成プログラムから出力されたセルを使用した回路記述)29が生成される。
【0025】
上記ネットリスト29は、配置配線プログラム(セル及び配線を配置するプログラム)30により処理されてセルと配線の配置が決定される。そして、この配置配線プログラム30の処理結果に基づいて、チップ(半導体集積回路)31の回路設計が行われる。
【0026】
図2乃至図7はそれぞれ、上記図1に示した集積回路の設計システムにおけるプリプロセッサ23の動作を示すフローチャートである。図2は図1に示したシステムにおけるプリプロセッサの概略的な動作を示すフローチャート、図3は第1ステージの処理サブルーチンを示すフローチャート、図4は拡張記述解析サブルーチンを示すフローチャート、図5は第2ステージの処理サブルーチンを示すフローチャート、図6はタグBの処理サブルーチンを示すフローチャート、図7はクラスタ結合サブルーチンを示すフローチャートである。
【0027】
図2に示すように、まず、プリプロセッサ23のプログラム本体の動作が開始されると、プリプロセッサ制御ファイルの読み込みとその解釈が行われ、その情報が配列CTRLへ格納される(STEP1)。
【0028】
次に、図3に示す第1ステージの処理サブルーチンに入る(STEP2)。第1ステージの処理では、ユーザによる回路記述ファイル21を開き(STEP3)、ファイルが終わりか否かを判定する(STEP4)。ファイルが終わりでないと判定されると、拡張記述に関する記述か否かが判定される(STEP5)。ここで拡張記述であると判定されると拡張記述解析サブルーチンへジャンプし(STEP6)、拡張記述でないと判定されると、何も変換せずに一時バッファtmpにタグ「A」を付加して格納し(STEP7)、STEP4の判定動作に戻る。そして、ファイルが終わりと判定されるまで上述したSTEP4乃至STEP7の動作を繰り返す。STEP4でファイルが終わりと判定されると、サブルーチンの呼び出し元(STEP2)へ戻る。
【0029】
拡張記述サブルーチンでは、図4に示すように、フリップフロップに関する拡張記述か否かが判定される(STEP8)。そして、フリップフロップに関する拡張記述であると判定されると、拡張回路記述の文法解析により情報を構造体FFの各変数へ格納し(STEP9)、フリップフロップに関する拡張記述でないと判定されると、エラー処理を行ってプログラムを終了する(STEP10)。上記構造体FFの各変数への情報の格納は、変数名Nameにフリップフロップの名前、BitNumにフリップフロップのビット数、ClusterNoにクラスタ番号、CtrlNamePtr*にフリップフロップの制御信号群の名前へのポインタ、ValPtr*にフリップフロップの制御信号群がそれぞれ1になった場合に代入すべき値または信号群へのポインタの情報をそれぞれ格納する。
【0030】
次に、構造体FFの実体へのポインタに、タグ「B」を付加して一時バッファtmpに格納する(STEP11)。
【0031】
その後、サブルーチンの呼び出し元(STEP5)へ戻る。
【0032】
上述した第1ステージの処理サブルーチンが終了すると、第2ステージの処理サブルーチンへジャンプする(STEP12)。第2ステージの処理サブルーチンでは、まず図5に示すように、一時バッファtmpの終わりか否かが判定され(STEP13)、終わりでないと判定されると一時バッファtmpからタグ及び格納情報を取得する(STEP14)。そして、タグが「B」か否かが判定される(STEP15)。タグが「B」でない場合には、格納情報をそのまま出力ファイルOUTに出力(STEP16)してSTEP13に戻って同様な処理を繰り返す。そして、上記STEP13で一時バッファtmpの終わりと判定されると、サブルーチンの呼び出し元(STEP12)へ戻る。一方、タグが「B」であった場合には、タグBの処理サブルーチンへジャンプする(STEP17)。
【0033】
タグBの処理サブルーチンは、図6に示すように、配列CTRLにゲーテッドクロック機能を有効にする指定が存在し、タグBとともに格納された構造体FFのデータにおける変数ClusterNo(=CurrentNo)と別のClusterNo(=AppendNo)とのクラスタ結合指定が存在するか否かが判定される(STEP18)。クラスタ結合指定が存在する場合には、クラスタ結合サブルーチンへジャンプし(STEP19)、存在しない場合には配列CTRLにゲーテッドクロック用セルを直接配置する指定が存在するか否かが判定される(STEP20)。指定が存在する場合には、フリップフロップ用のクロック信号として、配列CTRLに格納されているクロック信号をゲーテッドクロック用に制御する回路を通過した後の信号名を使用するように変更する。また、制御する回路用のVerilog記述を出力ファイルOUTに出力する(STEP21)。一方、指定が存在しない場合には、フリップフロップ用のクロック信号として配列CTRLに格納されているクロック信号を使用することにする(STEP22)。
【0034】
上記STEP21及びSTEP22による処理結果に対して、配列CTRLにフリップフロップを非同期リセットに設定する項目が存在するか否かが判定される(STEP23)。存在する場合には、構造体FFの変数CtrlNamePtrで示される配列に配列CTRLに格納された「リセット信号」と同じものが存在した場合には、その信号を非同期リセット信号と見なして構造体FFの内容を、非同期リセットを有するフリップフロップとなるようなVerilog記述を生成し、出力ファイルOUTへ出力する(STEP24)。これに対し、存在しない場合には、構造体FFの変数CtrlNamePtrで示される配列に配列CTRLに格納された「リセット信号」と同じものが存在した場合には、その信号を同期リセット信号と見なして構造体FFの内容を、同期リセットを有するフリップフロップとなるようなVerilog記述を生成し、出力ファイルOUTへ出力する(STEP25)。その後、サブルーチンの呼び出し元(STEP15)に戻る。
【0035】
上記STEP19において、クラスタ結合サブルーチンへジャンプした場合には、図7に示すように、結合対象のAppendNoが存在するか否かが判定され(STEP26)、存在する場合には、CurrentNoの構造体FFとAppendNoの構造体を結合して、1つのゲーテッドクラスタを形成するようにCurrentNoの構造体FFの構造を変更する(STEP27)。次に、結合に必要な回路のうち、構造体FFだけで表現できないVerilog記述に関する記述を生成して出力ファイルOUTに出力する(STEP28)。その後、Verilog記述に関する情報を一時バッファtmpから削除する(STEP29)。そして、STEP26に戻って結合対象のAppendNoが存在しなくなるまでSTEP27乃至STEP29の処理を繰り返し、存在しなくなるとゲーテッドクロック化の対象となったフリップフロップのレジスタ名などの情報を論理合成制御ファイルの形式で出力する(STEP30)。次に、サブルーチンの呼び出し元(STEP18)に戻る。
【0036】
図8は、上記図2乃至図7に示したプリプロセッサによるフリップフロップのリセットの同期/非同期指定を変更する場合の入力ファイルと出力ファイルを示している。ここでは、フリップフロップのリセット方式として同期リセット/非同期リセットを指定した場合の、それぞれの変換プログラムA(ProgramA)の出力結果を示す。
【0037】
図8において、“</”と“/>”はマーカー(marker)であり、“</”と“/>”で囲まれた部分の記述が変換対象となる。clk clockは変換後のハードウェア記述におけるクロック信号の名前(ここではclock)を指定するものである。delayは変換後のハードウェア記述におけるシミュレーションのディレイ値(ここでは2)を指定するものである。
【0038】
また、programAは、プリプロセッサ23の変換プログラムAを意味しており、option−SYNCは、上記programAに対して同期リセット方式でフリップフロップを初期化するハードウェア記述を出力することを指定し、option−ASYNCは、上記programAに対して非同期リセット方式でフリップフロップを初期化するハードウェア記述を出力することを指定する。
【0039】
上記のようなプリプロセッサへの入力ファイルに対して、フリップフロップのリセットの同期/非同期指定に応じた変換プログラムAによる処理結果が出力される。
【0040】
このように、プリプロセッサ23により、フリップフロップの同期/非同期指定を自由に変更可能な回路記述ファイルを生成できる。また、フリップフロップのリセットに関して「同期リセット」とした記述と「非同期リセット」とした記述の2つは、変換プログラムAを2回実行すれば得られる。これにより人手で作成した場合に比べて、短期間で「同期リセット」とした記述と「非同期リセット」の2つを得ることが可能である。
【0041】
図9は、ゲーテッドクロック機能をグルーピング指定なしで行った場合(クラスタ結合機能を使わない場合)のプリプロセッサ(変換プログラムA)23の入力ファイルと出力ファイルの例である。また、図10は、上記図9に示した出力ファイルから形成された回路例を示している。ここで、a00,a01はクロック信号を停止(ゲーティング)するための回路、b00,b02はラッチ、b01,b03は論理積回路、c00,c01,c02はフリップフロップ、d00,d01はクラスタを表している。
【0042】
プリプロセッサ23にゲーテッドクロック機能を指示する信号enable gate−clockが入力されると、入力ファイルは変換プログラムAにより処理されて出力ファイルが生成される。
【0043】
図11は、ゲーテッドクロック機能をグルーピング指定して行った場合(クラスタ結合機能を使った場合)のプリプロセッサ(変換プログラムA)の入力ファイルと出力ファイルの例である。また、図12は、上記図11に示した出力ファイルから形成された回路例を示している。プリプロセッサ23には、ゲーテッドクロック機能を指示する信号enable gate−clockとクラスタ結合機能を指示する信号grouping{FF00,FF01}が入力される。クラスタ結合機能は変換プログラムAに対してgrouping{FF00,FF01}などを指定することで機能する。ここで、a00はクロック信号を停止(ゲーティング)するための回路、b00はラッチ、b01は論理積回路、c00,c01,c02はフリップフロップ、d00はクラスタである。
【0044】
このように、フリップフロップの同期/非同期指定だけでなく、ゲーテッドクロックのクラスタ結合も変更可能な回路記述ファイルを生成できる。しかも、低消費電力化のためのゲーテッドクロック化において、より大きなクラスタをクラスタ結合機能により簡単に実現することができるために、クラスタサイズの最適値を求める作業などに要する時間を大幅に短縮できる。
【0045】
上述したように、この発明の実施の形態に係るプリプロセッサ、集積回路の設計システム及び集積回路の設計方法では、フリップフロップのハードウェア記述において、同期リセット付きフリップフロップであるか、非同期リセット付きフリップフロップであるかを特定しない形式で記述する。この際、上記フリップフロップに関する記述は、既存のハードウェア記述言語(第2のハードウェア記述言語)で記述されたファイル(第1の回路記述ファイル)の中に、第1のハードウェア記述言語で記述する。このフリップフロップに関する記述が埋め込まれた回路記述ファイルを変換プログラムA(ProgramA)で処理すると、フリップフロップに関する記述部は既存のハードウェア記述言語に変換されて出力される。このとき変換プログラムAに与える引数により、同期リセット方式のフリップフロップ記述を出力させることができる。同様に、非同期リセット方式のフリップフロップ記述を出力させることもできる。
【0046】
このように、ハードウェア記述言語の変換を変換プログラムAにより自動化することにより、「同期リセット」と「非同期リセット」のそれぞれの方式で記述されたハードウェア記述を簡単に得ることができる。また、例えば「同期リセット」方式の記述側を検証すれば、「非同期リセット」方式の記述の方も検証されたことになるので、2つのハードウェア記述の検証にかかる時間を半分にすることができる、これにより、LSIの開発等において開発期間を短縮することができる。
【0047】
また、フリップフロップのクロックをゲーテッドクロック化する指定を変換プログラムAに対して指定することが可能であり、この場合にはフリップフロップのクロックをゲーティングした記述が生成される。更に、フリップフロップの記述Xおよび記述Yが存在する場合に、記述Xと記述Yのクロックを共通化し、共通化されたクロックに対してゲーテッドクロック化を行うこともできる(クラスタ結合)。
【0048】
上述したように、様々なコンフィギュレーションに従ったRTL記述を容易に得ることが可能となる。
【0049】
従って、上記のような構成並びに設計方法によれば、フリップフロップの同期/非同期指定及びゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルをプリプロセッサ23で生成できるので、開発期間の短縮とコストの低減を図ることが可能となる。しかも、人手による作業ではバグの混入による修正が必要になり、修正のたびに機能検証作業が発生するが、自動化により検証作業が不要となり、この点からも開発期間の短縮やコストの低減が図れる。
【0050】
なお、上記実施の形態では、説明を分かりやすくするために、回路記述ファイル21とプリプロセッサ制御ファイル22が別のファイルの場合を例に取って説明したが、1つのファイルにまとめても良いのは勿論である。
【0051】
以上実施の形態を用いてこの発明の説明を行ったが、この発明は上記実施の形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記実施の形態には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば実施の形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも1つが解決でき、発明の効果の欄で述べられている効果の少なくとも1つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【0052】
【発明の効果】
以上説明したように、この発明によれば、フリップフロップの同期/非同期指定及びゲーテッドクロックのクラスタ結合を変更可能な回路記述ファイルを生成できるプリプロセッサを用いることで、開発期間を短縮し、コストを低減できる集積回路の設計システムとこのシステムによる集積回路の設計方法が得られる。
【図面の簡単な説明】
【図1】 この発明の実施の形態に係るプリプロセッサ及び集積回路の設計システムについて説明するためのもので、システム全体の概略構成を示す機能ブロック図。
【図2】 図1に示したシステムにおけるプリプロセッサの概略的な動作を示すフローチャート。
【図3】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、第1ステージの処理サブルーチンを示すフローチャート。
【図4】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、拡張記述解析サブルーチンを示すフローチャート。
【図5】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、第2ステージの処理サブルーチンを示すフローチャート。
【図6】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、タグBの処理サブルーチンを示すフローチャート。
【図7】 図1に示したシステムにおけるプリプロセッサの動作を示すもので、クラスタ結合サブルーチンを示すフローチャート。
【図8】 図2乃至図7に示したプリプロセッサによるフリップフロップのリセットの同期/非同期指定を変更する場合の入力と出力の関係について説明するための図。
【図9】 図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用しない場合の入力ファイルと出力ファイルとの関係について説明するための図。
【図10】 図1に示した集積回路の設計システムを用い、図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用しないで形成した回路の構成例を示す回路図。
【図11】 図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用した場合の入力ファイルと出力ファイルとの関係について説明するための図。
【図12】 図1に示した回路システムを用い、図2乃至図7に示したプリプロセッサによるクラスタ結合機能を使用して形成した回路の構成例を示す回路図。
【図13】 従来の集積回路の設計システム及び集積回路の設計方法について説明するための機能ブロック図。
【符号の説明】
21…回路記述ファイル(第1の回路記述ファイル)、22…プリプロセッサ制御ファイル、23…プリプロセッサ、24…回路記述ファイル(第2の回路記述ファイル)、25…論理合成プログラム、26…論理合成制御スクリプトファイル、27…論理合成ツール(コンピュータ)、28…論理合成スクリプトファイル、29…ネットリスト、30…配置配線プログラム、31…チップ。
Claims (8)
- ユーザによって記述されたプリプロセッサ制御ファイルに基づいて、ユーザによって記述され、第1のハードウェア記述言語でリセット方式が定まっていない状態のフリップフロップの記述を含む第1の回路記述ファイルの処理を行い、少なくとも前記フリップフロップの記述を第2のハードウェア記述言語に変換して第2の回路記述ファイルとゲーテッドクロック回路用の論理合成制御スクリプトファイルとを生成するように構成されたプリプロセッサと、
前記プリプロセッサで生成された前記第2の回路記述ファイル、前記プリプロセッサで生成された前記論理合成制御スクリプトファイル及び予め用意されているゲーテッドクロック以外の制御を行うための論理合成制御スクリプトファイルを論理合成して、回路を構成する基本単位であるセルを使用した回路記述ファイルに変換することによりネットリストを生成し、且つフリップフロップのゲーテッドクロック化のための情報を生成し、前記ネットリストに基づいて集積回路におけるセルと配線の配置を決定するように構成されたメインプロセッサとを具備し、
前記第1の回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換する際に、前記フリップフロップが同期リセット方式か非同期リセット方式かがユーザによって指定される
ことを特徴とする集積回路の設計システム。 - 前記フリップフロップに関する記述は、1つのフリップフロップ記述に1つのクラスタ番号が付与されることを特徴とする請求項1に記載の集積回路の設計システム。
- 前記第2の回路記述ファイルは、複数のクラスタ番号で示されるフリップフロップの記述が、1つのゲーティングされたクロック信号で駆動されるフリップフロップの記述に変換されたものであることを特徴とする請求項2に記載の集積回路の設計システム。
- ユーザによって記述され、第1のハードウェア記述言語と第2のハードウェア記述言語が混在し、第1のハードウェア記述言語でリセット方式が定まっていない状態のフリップフロップの記述を含む回路記述ファイルと、ユーザによって記述されたプリプロセッサの動作を制御するためのプリプロセッサ制御ファイルとをプリプロセッサに入力し、このプリプロセッサで前記回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換するステップと、
前記プリプロセッサから出力される回路記述ファイルとゲーテッドクロック回路用の論理合成制御スクリプトファイル、及び予め用意されているゲーテッドクロック回路以外の論理合成制御スクリプトファイルをメインプロセッサで論理合成し、このメインプロセッサで回路を構成する基本単位であるセルを使用した回路記述ファイルに変換してネットリストを生成するステップと、
前記ネットリストに基づいて前記セルと配線の配置を決定し、チップの回路設計を行うステップとを具備し、
前記プリプロセッサによって同期/非同期指定とゲーテッドクロックのクラスタ結合が変更される
ことを特徴とする集積回路の設計方法。 - 前記プリプロセッサ制御ファイルは、リセット信号の名前、クロック信号の名前、フリップフロップのリセット方式、ゲーテッドクロック化するか否か、ゲーテッドクロック化する場合に、そのクロックゲーティングの記述をプリプロセッサが生成するか否か、論理合成プログラムの自動ゲーテッドクロック化機能が自動認識できる記述形式で出力するか否か、及びどのクラスタを1つと見なすかに関する情報の少なくともいずれか1つを含むことを特徴とする請求項4に記載の集積回路の設計方法。
- 前記回路記述ファイルにおける第1のハードウェア記述言語で記述された少なくとも一部を第2のハードウェア記述言語に変換するステップは、
前記プリプロセッサ制御ファイルを読み込んで解釈し、この解釈した情報を前記プリプロセッサに格納するステップと、
前記プリプロセッサに格納した情報が拡張記述に関するか否か判定し、拡張記述であったときに拡張記述の解析を行うステップと、
拡張記述でないと判定されたときにタグの判定を行うステップと、
所定のタグであると判定されたときに、クラスタ結合指定の判定を行うステップと、
クラスタ結合指定がないときに、フリップフロップを同期リセットにするか非同期リセットにするかを指定し、同期リセットのフリップフロップに対応する回路記述または非同期リセットのフリップフロップに対応する回路記述を生成するステップと、
クラスタ結合指定があるときに、クラスタ結合に必要な情報を生成するステップと
を備えることを特徴とする請求項4または5に記載の集積回路の設計方法。 - 前記拡張記述の解析を行うステップは、
フリップフロップに関する拡張記述か否かを判定するステップと、
前記判定ステップでフリップフロップに関する拡張記述であると判定されたときに、構造体フリップフロップの各変数へ情報を格納するステップと、
前記構造体フリップフロップの実体へのポインタに対してタグを付加し、一時バッファに格納するステップと
を備えることを特徴とする請求項6に記載の集積回路の設計方法。 - 前記タグの判定を行うステップは、
前記一時バッファからタグ及び格納情報を取得するステップと、
前記タグが所定のタグか否か判定し、所定のタグではないときに前記格納情報をそのまま出力ファイルへ出力するステップと
を備えることを特徴とする請求項6に記載の集積回路の設計方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003096687A JP3923920B2 (ja) | 2003-03-31 | 2003-03-31 | 集積回路の設計システム及び集積回路の設計方法 |
EP03013454A EP1465086A3 (en) | 2003-03-31 | 2003-06-24 | Integrated circuit design system and method using preprocessor which changes hardware description in accordance with configuration |
US10/602,618 US6990641B2 (en) | 2003-03-31 | 2003-06-25 | Integrated circuit design system and method using preprocessor which changes hardware description in accordance with configuration |
TW093108707A TWI279698B (en) | 2003-03-31 | 2004-03-30 | Preprocessor, IC design system and IC design method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003096687A JP3923920B2 (ja) | 2003-03-31 | 2003-03-31 | 集積回路の設計システム及び集積回路の設計方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004303022A JP2004303022A (ja) | 2004-10-28 |
JP3923920B2 true JP3923920B2 (ja) | 2007-06-06 |
Family
ID=32844651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003096687A Expired - Fee Related JP3923920B2 (ja) | 2003-03-31 | 2003-03-31 | 集積回路の設計システム及び集積回路の設計方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6990641B2 (ja) |
EP (1) | EP1465086A3 (ja) |
JP (1) | JP3923920B2 (ja) |
TW (1) | TWI279698B (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2030135A2 (en) * | 2006-05-22 | 2009-03-04 | Coherent Logix Incorporated | Designing an asic based on execution of a software program on a processing system |
US8065640B1 (en) * | 2006-06-02 | 2011-11-22 | Cadence Design Systems, Inc. | Systems and methods for reduced test case generation |
US8127113B1 (en) * | 2006-12-01 | 2012-02-28 | Synopsys, Inc. | Generating hardware accelerators and processor offloads |
JP4955484B2 (ja) * | 2007-08-24 | 2012-06-20 | ルネサスエレクトロニクス株式会社 | 回路設計装置、回路設計方法、及び、回路設計プログラム |
US8880866B2 (en) | 2010-10-15 | 2014-11-04 | Coherent Logix, Incorporated | Method and system for disabling communication paths in a multiprocessor fabric by setting register values to disable the communication paths specified by a configuration |
TW201301135A (zh) * | 2011-06-16 | 2013-01-01 | Hon Hai Prec Ind Co Ltd | 零件資料轉檔系統及方法 |
US8954307B1 (en) * | 2011-10-10 | 2015-02-10 | Cadence Design Systems, Inc. | Chained programming language preprocessors for circuit simulation |
CN102693340B (zh) * | 2012-05-19 | 2014-04-09 | 孙凌宇 | 基于多水平划分法和赋权超图的大规模集成电路划分方法 |
CN103870342B (zh) * | 2014-04-06 | 2016-12-07 | 冷明 | 云计算环境中的基于结点属性函数的任务核值计算方法 |
US9685957B2 (en) * | 2014-04-09 | 2017-06-20 | Altera Corporation | System reset controller replacing individual asynchronous resets |
KR101629141B1 (ko) * | 2015-02-17 | 2016-06-10 | 인하대학교 산학협력단 | 스파이스 넷리스트를 에프피지에이 합성이 가능한 베릴로그 코드로 변환하는 방법 및 시스템 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5987239A (en) * | 1996-12-13 | 1999-11-16 | Lsi Logic Corporation | Computer system and method for building a hardware description language representation of control logic for a complex digital system |
US6836877B1 (en) * | 1998-02-20 | 2004-12-28 | Lsi Logic Corporation | Automatic synthesis script generation for synopsys design compiler |
US6658630B1 (en) * | 2000-11-09 | 2003-12-02 | Lsi Logic Corporation | Method to translate UDPs using gate primitives |
EP1379977A1 (en) * | 2001-04-11 | 2004-01-14 | Mentor Graphics Corporation | Hdl preprocessor |
-
2003
- 2003-03-31 JP JP2003096687A patent/JP3923920B2/ja not_active Expired - Fee Related
- 2003-06-24 EP EP03013454A patent/EP1465086A3/en not_active Withdrawn
- 2003-06-25 US US10/602,618 patent/US6990641B2/en not_active Expired - Fee Related
-
2004
- 2004-03-30 TW TW093108707A patent/TWI279698B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
TW200424888A (en) | 2004-11-16 |
EP1465086A2 (en) | 2004-10-06 |
US6990641B2 (en) | 2006-01-24 |
TWI279698B (en) | 2007-04-21 |
JP2004303022A (ja) | 2004-10-28 |
US20040194038A1 (en) | 2004-09-30 |
EP1465086A3 (en) | 2005-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6477691B1 (en) | Methods and arrangements for automatic synthesis of systems-on-chip | |
US6530073B2 (en) | RTL annotation tool for layout induced netlist changes | |
US5644498A (en) | Timing shell generation through netlist reduction | |
Wingard | MicroNetwork-based integration for SOCs | |
US5933356A (en) | Method and system for creating and verifying structural logic model of electronic design from behavioral description, including generation of logic and timing models | |
JP3860812B2 (ja) | Asicとプログラマブル・ロジックデバイスのコンカレント開発支援プログラム、開発支援方法及び開発支援装置 | |
US8640066B1 (en) | Multi-phase models for timing closure of integrated circuit designs | |
US5541850A (en) | Method and apparatus for forming an integrated circuit including a memory structure | |
US7360180B2 (en) | Computer program product, method, and system for hardware model conversion | |
US8977531B1 (en) | Apparatus and methods for importing hardware design and generating circuit interfaces | |
US10586003B1 (en) | Circuit design using high level synthesis and linked hardware description language libraries | |
JP4492803B2 (ja) | 動作合成装置及びプログラム | |
US7958473B2 (en) | Method and computer program for configuring an integrated circuit design for static timing analysis | |
JP3923920B2 (ja) | 集積回路の設計システム及び集積回路の設計方法 | |
US20080120587A1 (en) | Integrated circuit design system, integrated circuit design program, and integrated circuit design method | |
US6901562B2 (en) | Adaptable circuit blocks for use in multi-block chip design | |
US20040210861A1 (en) | System and method for optimizing exceptions | |
JPH09106407A (ja) | 設計支援装置 | |
Hemani | Charting the EDA roadmap | |
US7389489B1 (en) | Techniques for editing circuit design files to be compatible with a new programmable IC | |
Robertson et al. | Timing verification of dynamically reconfigurable logic for the Xilinx Virtex FPGA series | |
Semba et al. | Study on an RTL conversion method from pipelined synchronous RTL models into asynchronous RTL models | |
Bergamaschi et al. | Coral-automating the design of systems-on-chip using cores | |
Crafton et al. | Automatic Generation of Translators for Packet-Based and Emerging Protocols | |
JP4127720B2 (ja) | Fpga及びasicのネットリストを生成する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061031 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061226 |
|
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: 20070220 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070222 |
|
LAPS | Cancellation because of no payment of annual fees |