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

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

Info

Publication number
JP5057509B2
JP5057509B2 JP2007077907A JP2007077907A JP5057509B2 JP 5057509 B2 JP5057509 B2 JP 5057509B2 JP 2007077907 A JP2007077907 A JP 2007077907A JP 2007077907 A JP2007077907 A JP 2007077907A JP 5057509 B2 JP5057509 B2 JP 5057509B2
Authority
JP
Japan
Prior art keywords
circuit
signal propagation
scheduling
behavioral synthesis
clock
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
JP2007077907A
Other languages
English (en)
Other versions
JP2008242527A (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 JP2007077907A priority Critical patent/JP5057509B2/ja
Publication of JP2008242527A publication Critical patent/JP2008242527A/ja
Application granted granted Critical
Publication of JP5057509B2 publication Critical patent/JP5057509B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、ディジタル回路の設計において、動作記述から回路をコンピュータ自動合成する動作合成装置および、この動作合成装置を用いた動作合成方法、この動作合成装置または動作合成方法を用いた半導体集積回路の製造方法、この動作合成方法の各ステップをコンピュータに実行させるための動作合成プログラムおよびこの動作合成プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体に関する。
従来より、システムLSIなどの大規模回路を設計する際には、論理回路などのディジタル回路の設計において、回路の動作記述からハードウェア(回路構成)をコンピュータ自動合成する動作合成が行なわれている。この動作合成は高位合成とも呼ばれている。
この動作合成の処理手順を大まかに分類すると、データフローグラフ生成処理と、スケジューリング処理と、アロケーション処理とに分けることができる。
まず、データフローグラフ生成処理では、回路の動作記述からデータフローグラフが生成される。データフローグラフは、CDFG(Control Data Flow Graph)とも呼ばれ、データの流れを枝、演算や通信を節点として、グラフにより表したものである。
次に、スケジューリング処理では、データフローグラフ中の演算や通信をどの実行サイクルで実行するかが決定される。
さらに、アロケーション処理では、演算や通信が演算器や通信器などの回路素子にそれぞれ割り付けられ、また、処理途中のデータを記憶させるためにそのデータがレジスタに割り付けられる。
これらのスケジューリング処理とアロケーション処理との結果に従って、データパスとコントローラを生成することにより、動作記述と同一の動作を行なうハードウェア(回路構成)が自動合成されて動作合成装置(または高位合成装置)の表示画面上に得られる。このハードウェア(回路構成)は、一般に、回路構成を示すレジスタトランスファレベル(RTL;Register Transfer Level)記述として外部に出力される。
回路の動作記述からハードウェアを合成する従来技術の一例が特許文献1に開示されている。この特許文献1に開示されている従来技術は、ハードウェア中で並列動作する複数のスレッド間においてハンドシェイクを行うことなく同期通信可能な回路を、スレッド毎に動作合成することによって生成する方法である。
また、従来技術の他の一例が特許文献2に開示されている。この特許文献2に開示されている従来技術は、スケジューリング処理において、高速でかつ有効な面積の見積もりを行い、レジスタの面積を考慮したスケジューリングを高速に行うことが可能な高位合成方法である。
特開2000−57180号公報 特開2000−348069号公報
一つの回路中に複数種類のクロックが用いられる場合がある。例えば、回路外部とのデータ入出力部と、演算部とにおいて、要求される処理速度が異なる場合などが挙げられる。低い周波数で動作させればよいデータ入出力部を高い周波数で駆動させると、無駄に消費電力が大きくなってしまうからである。
しかしながら、上記従来の動作合成技術によって、周波数や位相が異なる複数のクロックにより駆動される回路を生成した場合には、正しく回路動作させることができないという問題がある。
例えば送信側の記憶素子(例えばフリップフロップ)から出力された信号が、演算器などの回路を経由して受信側の記憶素子(例えばフリップフロップ)に到達する時刻と、その受信側の記憶素子(例えばフリップフロップ)を駆動させるクロックの動作時刻がほぼ同時刻になった場合には、その受信側記憶素子に保持されている値が、”0”とも”1”とも判断できない電位になる。この状態は、一般に、メタステーブルと呼ばれている。このメタステーブル状態になると、受信側の記憶素子内で大電流が流れて回路が破損したり、受信側の記憶素子の後段に設けられた回路によって正しい値を参照することができずに誤動作することがある。このため、論理回路の設計においては、記憶素子のセットアップ時間(記憶素子にデータが到達してからクロックが到達するまでの時間)やホールド時間(クロックが到達してから次のデータが到達するまでの時間)が制約として与えられ、この制約を満たすように設計することによって、メタステーブルが発生しない。
一方、1種類のクロックにより駆動される回路では、送信側記憶素子と受信側記憶素子との間の信号伝播における遅延を固定化することにより、メタステーブルを防ぐことができる。
しかしながら、周波数や位相が異なる複数のクロックにより駆動される回路では、異なるクロックにより駆動される記憶素子間で信号を伝播させる際に、回路の誤動作を防止するための回路が必要になる。これは、送信側記憶素子を駆動するクロックと受信側記憶素子を駆動するクロックの周期が異なると、受信側記憶素子に信号が到着する時間が変化し、セットアップ時間やホールド時間の制約を満たすことができなくなって、メタステーブル状態が生じてしまうからである。
上記従来の動作合成技術では、並列に動作する部分ブロック(スレッド)に回路が分割されて、部分ブロック毎に動作合成が行われる。この場合、全ての部分ブロックにおいて同一のクロックにより回路中の記憶素子が駆動されることが想定されており、複数種類のクロックによる駆動では、異なるクロック領域間での信号伝播を保証したり、信号伝播保証回路における遅延を考慮することができないため、正しくデータを受信することができないという問題を有している。
以下に、同一クロックにより並列動作する従来の動作合成技術について図7〜図12を参照して説明した後に、この問題について図13〜図15を参照して詳細に説明する。
図7(a)および図7(b)は、従来の動作合成技術において、同一クロックにより並列動作を行う回路のコントロールデータフローグラフ(CDGF)の一例を示す図である。
図7(a)および図7(b)において、節点101および節点114は共に加算処理、節点102は配列aryにデータを書く「Warray」演算処理、節点103および節点115は非同期チャネルにデータを送信する「Wachan」演算処理、節点104および105と節点116は同期チャネルにデータを送信する「send」演算処理、節点106と節点109および110は同期チャネルからデータを受信する「receive」演算処理、節点107と節点111は配列からデータを読むためにアドレスを出力する「Rarray_addr」演算処理、節点108と節点112は配列からデータを読む「Rarray_data」演算処理、節点113は非同期チャネルからデータを受信する「Rachan」演算処理を表している。
図7(a)のコントロールデータフローグラフは、その回路の動作記述として、
{ // block 1
ary[a] = b+c;
ach=b+c;
send(ch1,d);
send(ch1,e);
f=receive(ch2);
x=ary[g];

という処理を表している。
上記配列aryは、並列に動作する複数のブロックからアクセスされる共有メモリの一つである。
関数send()は、第1引数で指定された同期チャネルに対して第2引数で指定されたデータを送信する処理を表している。
変数achは非同期チャネル通信を行うための通信路である。非同期チャネル通信は、通信路として非同期チャネルを用いた並列動作間の通信であり、任意のタイミングでデータを読み書き(送信・受信)を行うことができる。
変数ch1とch2は同期チャネル通信を行うための通信路である。同期チャネル通信は、通信路として同期チャネルを用いた並列動作間の通信であり、データの送信側と受信側が共に通信可能な状態になるまで、お互いを待つという処理を含む。
関数receive()は、引数で指定された同期チャネルから受信したデータを返えす処理を表している。
上記動作記述例および図7(a)のコントロールデータフローグラフでは、block1において、
変数bとcの加算結果を、配列aryのa番目の要素に書き込む、
変数dの値を同期チャネルch1に送信し、相手が受信するまで待つ、
変数eの値を同期チャネルch1に送信し、相手が受信するまで待つ、
同期チャネルch2から受信したデータを変数fに代入する、
変数xに配列aryのg番目のデータを代入する、
という処理が表されている。
一方、図7(b)のコントロールデータフローグラフは、その回路の動作記述として、
{ // block 2
i=receive(ch1);
j=receive(ch1);
ach = ary[k]+ach;
send(ch2,m);

という処理を表している。
上記動作記述例および図7(b)のコントロールデータフローグラフでは、block2において、
同期チャネルからch1にデータが送信されるのを待ち、受信したデータを変数iに代入する、
同期チャネルからch1にデータが送信されるのを待ち、受信したデータを変数jに代入する、
非同期チャネルachに、achの値と配列aryのk番目のデータの加算結果を代入する、
同期チャネルch2に変数mの値を送信し、相手が受信するまで待つ、
という処理が表されている。
回路内では、図7(a)に示す処理と、図7(b)に示す処理とが並列に実行されている。
図8(a)および図8(b)はそれぞれ、図7(a)および図7(b)にそれぞれ示すコンロールデータフローグラフにスケジューリング処理を施した結果例を示す図である。
図8(a)では、各演算処理の節点101〜103がステップ1で実行され、節点104がステップ2で実行され、節点105がステップ3で実行され、節点106がステップ4で実行され、節点107がステップ5で実行され、節点108がステップ6で実行されている。
一方、図8(b)では、節点109がステップ1で実行され、節点110がステップ2で実行され、節点111がステップ3で実行され、節点112〜114がステップ4で実行され、節点115がステップ5で実行され、節点116がステップ6で実行されている。
1ステップは、1クロックサイクル以上で実行される。例えば、同期チャネル通信において相手が通信可能な状態になるまで待つときには、次のステップに進まず、2サイクル以上消費される。
配列は、アドレスが出力された次のクロックサイクルにおいてデータが出力されるメモリデバイス(レジスタファイルやRAMまたはROM)を対象として、「Rarray_addr」演算処理や「Rarray_data」演算処理がスケジューリングされた例を示しているが、異なるタイミングで動作するメモリデバイスについても、そのタイミングに応じて「Rarray_addr」演算処理や「Rarray_data」演算処理をスケジューリングすれば対応可能である。
図9は、図8(a)および図8(b)のスケジューリング結果を実行する回路例を模式的に示すブロック図である。
図9において、この回路は、ブロックpe1(301)とブロックpe2(302)とブロックmemory303とを有している。
ブロックpe1(301)は図8(a)のスケジューリング結果を実行する回路である。また、ブロックpe2(302)は図8(b)のスケジューリング結果を実行する回路である。さらに、ブロックmemory303は、ブロックpe1(301)およびブロックpe2(302)から読み書きされる配列aryや非同期チャネルachのデータを記憶する記憶素子を含む回路である。clk304は、回路中の全ての記憶素子を駆動するクロックである。回路構成によっては、ブロックmemory(メモリ)の一つとして同期チャネルでデータを送受信するための回路も含めることがある。
図10(a)は、同期チャネル通信を行う回路について、図8(a)の節点104および105の「send」演算処理と、図8(b)の節点109および110の「receive」演算処理とを行う回路例を示すブロック図であって、図9のブロックpe1(301)とブロックpe2(302)の関連する部分を詳細に示したブロック図である。また、図10(b)は、図10(a)の信号遷移例を示すタイミングチャートである。
図10(a)において、ブロックpe1(301)はコントローラCTRL1(401)を有し、ブロックpe2(302)はコントローラCTRL2(402)を有している。
コントローラCTRL1(401)は、ブロックpe1(301)の処理ステップがステップ2の「send」演算処理のときにポートch1_wtx403に送信要求を表す値’1’を信号出力し、ポートch1_wdata405に値dを出力し、ポートch1_wrx404が受信要求を表す値’1’になるまで、その状態を保持する機能と、ブロックpe1(301)の処理ステップがステップ3の「send」演算処理のときに、ポートch1_wtx403に送信要求を表す値’1’を出力し、ポートch1_wdata405に値eを出力し、ポートch1_wrx404が受信要求を表す値’1’になるまで、その状態を保持する機能と持つ状態マシンである。
一方、コントローラCTRL2(402)は、ブロックpe2(302)の処理ステップがステップ1の「receive」演算処理のときにポートch1_rrx407に受信要求を表す値’1’を出力し、ポートch1_rtx406が送信要求を表す値’1’になるまでその状態を保持する機能と、ブロックpe2(302)の処理ステップがステップ2の「receive」演算処理のときにポートch1_rrx407に受信要求を表す値’1’を出力し、ポートch1_rtx406が送信要求を表す値’1’になるまでその状態を保持する機能を持つ状態マシンである。
上記構成により、図10(b)に示すように、まず、クロックサイクルt1において、コントローラCTRL2が「recieve」演算処理の節点109を実行するため、ポートch1_rrxに’1’が出力される。
次に、クロックサイクルt2において、コントローラCTR1が「send」演算処理の節点104を実行するため、ポートch1_wtx403に’1’が出力され、ポートch1_wdata405に値dが出力されるが、このとき、ch1_wtx403とch1_wrx404が共に’1’なので、このサイクルで「send」演算処理の節点104の実行は終了する。ここで、ch1_rrx407とch1_rtx406が共に’1’になったので、コントローラCTRL2は「receive」演算処理の節点109の実行を終了し、ch1_rdata408の値dを参照する。
その後、クロックステップt3では、コントローラCTRL1(401)が「send」演算処理の節点105を実行するため、ch1_wtx403に’1’が出力され、ch1_wdata405に値eが出力される。また、コントローラCTRL2(402)は「receive」演算処理の節点110を実行するため、ch1_rrx407に’1’が出力される。ここで、ch1_wtx403とch1_wrx404が共に’1’になったので、コントローラCTRL1(401)は「send」演算処理の節点105の実行を終了する。このとき、ch1_rrx407とch1_rtx406が共に’1’になったので、コントローラCTRL2(402)は「receive」演算処理の節点110の実行を終了し、ch1_rdata408の値eを参照する。このように、連続したクロックサイクルにおいて値dと値eをブロックpe1(301)からブロックpe2(302)に転送させることができる。
なお、図8(a)の節点106の「recieve」演算処理と、図8(b)の節点116の「send」演算処理とについても、同様の構成により実現可能である。
図11(a)は、非同期チャネル通信を行う回路について、図8(a)の節点101の加算処理および節点103の「Wachan」演算処理(非同期チャネルにデータ送信)と、図8(b)の節点113〜115の各演算処理(「Rachan」演算処理(非同期チャネルからデータ受信)、加算処理、非同期チャネルにデータ送信)を行う回路例を示すブロック図であり、図9のブロックpe1(301)とブロックpe2(302)とブロックmemory(303)との関連する部分を詳細に示している。また、図11(b)は、図11(a)の信号遷移例を示すタイミングチャートである。
図11(a)において、ブロックpe1(301)はコントローラCTRL1(401)と加算器501を有し、ブロックpe2(302)はコントローラCTRL2(402)と加算器502を有している。
この加算器501は、図8(a)の節点101の加算処理を行い、加算器502は、図8(b)の節点114の加算処理を行うものである。
一方、ブロックmemory303aは、図9のブロックmemory303に相当するもので、非同期チャネルachを用いた通信によりデータの送受信を行う回路であり、セレクタ503と記憶素子(フリップフロップ504)とを有している。ブロックmemory303aは、ブロックpe1(301)またはブロックpe2(302)からの送信を検出して、送信されたデータ(値)を記憶素子504に格納する。
コントローラCTRL1(401)は、図8(a)のサイクル1でach_wen1に’1’を出力し、ach_wdata1に図8(a)の節点101の加算結果を出力する機能を持つ状態マシンである。
また、コントローラCTRL2(402)は、図8(b)のサイクル4でach_rdataを演算器へ入力するための制御信号を生成する機能と、図8(b)のサイクル5でach_wen2を’1’に出力し、ach_wdata2に節点114の加算処理結果を出力する機能を持つ状態マシンである。
上記構成により、例えば、図11(b)に示すように、クロックサイクルt1においてブロックpe1(301)が非同期チャネルachに「b+c」の演算結果を書き込み、クロックサイクルt5においてブロックpe2(302)がachにachの値「b+c」と配列aryから読み出した値の加算結果である「s」を書き込む。
図12(a)は、共通メモリへのアクセスを行う回路について、図8の節点102の「Warray」演算処理(配列にデータを書く)、節点107の「Rarray_addr」演算処理(配列からデータを読むためにアドレスを出力)および節点108の「Rarray_data」演算処理(配列からデータを読出)と、節点111の「Rarray_addr」演算処理および節点112の「Rarray_data」演算処理を行う回路例を示すブロック図であり、図9のブロックpe1(301)とブロックpe2(302)とブロックmemory303の関連する部分を詳細に示している。また、図12(b)は、図12(a)の信号遷移例を示すタイミングチャートである。
図12(a)において、ブロックpe1(301)は、コントローラCTRL1(401)と加算器501とセレクタ601とを有している。このセレクタ601は、ary_addr1に出力するアドレスを選択するものである。
ブロックpe2(302)は、コントローラCTRL2(402)と加算器502とを有している。
ブロックmemory303bは、図9のブロックmemory303に相当するものであり、ブロックpe1(301)とブロックpe2(302)とで共有される配列aryのデータにアクセスする回路であって、回路602とセレクタ603とセレクタ604とセレクタ605と複数の記憶素子606を有している。
また、ブロックmemory303bは、ブロックpe1(301)およびブロックpe2(302)からのアクセス要求に応じて制御信号を生成する。セレクタ603は、配列aryに書き込むデータを選択し、セレクタ604は、配列aryのアドレス情報から記憶素子606の一つを特定する。セレクタ605は、回路602とセレクタ603とセレクタ604とにより生成された制御信号、アドレス情報およびデータを元に記憶素子606へアクセスするための回路である。図12(a)の記憶素子606は、複数のフリップフロップを配置したレジスタ・ファイルを用いて構成された回路例であるが、記憶素子としてRAM(Random Access Memory)により構成することも可能である。
コントローラCTRL1(401)は、図8(a)のサイクル1でary_wen1に’1’を出力し、ary_addr1にアドレスaを出力し、ary_wdata1に図8(a)の節点101の加算結果を出力する機能と、図8(a)のサイクル5でary_ren1に’1’を出力し、ary_addr1にアドレスgを出力する機能と、図8(a)のサイクル6でary_rdataの値を演算器に入力させる制御信号を生成する機能を持つ状態マシンである。
コントローラCTRL2(402)は、図8(b)のサイクル3でary_ren2に’1’を出力し、ach_addr2にアドレスkを出力する機能と、図8(b)のサイクル4でary_rdataの値を演算器に入力させる制御信号を生成する機能を持つ状態マシンである。
上記構成により、例えば、図12(b)に示すように、クロックサイクルt1においてブロックpe1(301)が配列aryのアドレスaをary_addr1に出力し、配列aryへの書き込み信号ary_wen1を出力し、「b+c」の演算結果をary_wdata1に出力して、配列aryへの書き込み処理を行う。
次に、クロックサイクルt3では、ブロックpe2(302)が配列aryのアドレスkをary_addr2に出力し、配列aryへの読出し信号ary_ren2を出力し、さらに、クロックサイクルt4において、ブロックpe2(302)が配列aryのk番目の要素の値を参照して演算処理を行う。
さらに、クロックサイクルt5では、ブロックpe1(301)が配列aryのアドレスgをary_addr1に出力し、配列aryへの読出し信号ary_ren1を出力し、クロックサイクルt6においてブロックpe1(301)が配列aryのg番目の要素の値を参照する。
以上のように、上記従来の動作合成技術では、図9〜図12に示すように、全ての記憶素子が一つのクロックclk304により駆動される回路しか生成することができない。したがって、一つの回路中に複数種類のクロックを用いた回路に、上記従来の動作合成技術を単に適用したとしても、メタステーブルを防ぐための信号伝播保証回路を生成したり、信号伝播保証回路における遅延サイクルに関して考慮したりすることができない。このことを、以下の課題1〜3により詳細に説明する。
(課題1)
図13には、周波数が高いクロックclk_fastと周波数が低いclk_slowとがあり、ブロックpe1(301)がclk_fastにより駆動され、ブロックpe2(302)がclk_slowにより駆動される場合に同期チャネル通信を実現するための回路例を示すブロック図である。なお、ここでは、図10(a)に示した回路に、メタステーブルを防ぐための信号伝播保証回路MS−FF2(701)〜(703)を追加したことを想定した構成である。
図13において、信号伝播保証回路701および702はそれぞれ、clk_slowにより駆動されるフリップフロップが2つ直列に接続されて構成されている。この回路例では、2種類のクロックを用いた場合を示しているが、クロックが3種類以上ある場合には、信号伝播保証回路701および702は、最も周波数が低い(最も遅い)クロックにより駆動される。
一方、信号伝播保証回路703は、読み出しスレッドのクロックにより駆動されるフリップフロップが2つ直列に接続されて構成されている。この回路例では、信号伝播保証回路703に接続されたブロックpe1(301)のクロックclk_fastにより駆動されるフリップフロップが2つ直列に接続されている。
図14は、図13に示す回路によって、図8(a)の節点104および105と、図8(b)の節点109および110との演算処理を行う場合の信号遷移例を示すタイミングチャートである。
図13および図14に示すように、まず、ブロックpe2(302)は、クロックサイクルs1において図8(b)のステップ1の処理(1回目の「receive」(節点109))を行うため、ch1_rrxを’1’にする。このとき、送信側のブロックpe1(301)は、まだ「send」演算処理を実行していないためにch1_wtxは’0’であり、信号hsの値は’0’である。
次に、ブロックpe1(301)は、クロックサイクルt1において、図8(a)のステップ2の処理(1回目の「send」(節点104))を行うため、ch1_wtxを’1’にする。この信号変化は、信号伝播保証回路702を経由して伝播するために図14の矢印Aに示すように遅延し、クロックサイクルs3において信号tx、hsおよびch1_rtxの値が’1’となる。
その後、図10(a)のコントローラCTRL2(402)は、ch1_rrxとch1_rtxが共に’1’になったので、クロックサイクルs3において,図8(b)のステップ1の処理を終了し、ch1_rdataの値dを参照する。クロックサイクルt1で値dでとなったch1_wdataの値は、信号伝播保証回路701を経由して伝播するために、図14の矢印Bに示すように遅延し、クロックサイクルs3においてch1_rdataの値が値dとなる。ブロックpe2(302)は、クロックサイクルs4において図8(b)のステップ2の演算処理(2回目の「receive」(節点110))を実行する。
さらに、クロックサイクルs3において、’1’になった信号hsの値は、信号伝播保証回路703を経由して伝播するために、図14の矢印Cで示すように遅延し、ブロックpe1(301)のクロックサイクルt4においてch1_wrxが’1’になる。ch1_wtxとch1_wrxが共に’1’になったので、図10(a)のコントローラCTRL1(401)は、図8(a)のステップ2の演算処理(1回目の[send](節点104))の演算処理を終了する。ブロックpe1(301)は、クロックサイクルt5において図8(a)のステップ3の演算処理(2回目の「send」(節点105))を実行する。
ブロックpe2は、クロックサイクルs4において、図8(b)のステップ2の演算処理(2回目の「receive」(節点110))を実行するため、ch1_rrxを’1’にする。このとき、ch1_rtxの値が’1’なので、コントローラCTRL2(402)は、図8(b)のステップ2の演算処理(2回目の「receive」(節点110))を終了し、ch1_rdataの値を参照する。このとき、ch1_rdataの値は値dであるが、正しくは、2回目の「receive」(節点110)が終了したときには値eを参照する必要がある。
このように、従来の動作合成技術におけるスケジューリング処理では、一つのクロック領域間の同期チャネル通信と、異なるクロック領域間の同期チャネル通信とが混在していたり、異なる周波数のクロック領域間で連続して同期チャネル通信を実行すると、正しくデータが転送されないという問題が生じる。
(課題2)
図15は、クロックclk1により駆動されるブロックpe1と、クロックclk2により駆動されるブロックpe2との間で非同期チャネルachを介したデータ転送を行う回路例を示す回路図である。
図15において、非同期チャネルachは、クロックclk1とclk2の周波数が異なる場合にクロックを切り替えるためのクロック切替回路として、回路801、AND回路802、OR回路803、回路804およびAND回路805を有しており、記憶素子store806にデータを格納する構造である。
また、非同期チャネルachの出力側には、クロックclk1とクロックclk2の周波数が異なる場合に、信号伝播を保証するための信号伝播保証回路807および808が設けられている。この信号伝播保証回路807は、クロックclk1により駆動されるフリップフロップが2つ直列に接続されて構成されている。また、信号伝播保証回路808は、クロックclk2により駆動されるフリップフロップが2つ直列に接続されて構成されている。
図11(b)のタイミングチャートに示すように、従来の動作合成技術におけるスケジューリング処理では、クロックサイクルt1においてブロックpe1(301)またはブロックpe2(302)が非同期チャネルachに書き込んだ値「b+c」は、次のクロックサイクルt2以降でブロックpe1(301)のach_rdataポートやブロックpe2(302)のach_rdataポートに伝播し、参照することが可能である。しかしながら、複数のクロックにより駆動される回路では、信号伝播保証回路によって信号伝播が2サイクルだけ遅延することになる。したがって、ブロックpe1(301)が値vを書き込んだ次のクロックサイクルにおいてブロックpe1(301)が値を参照した場合、pe1/ach_rdataの値はvではなく、更新される前の値となっているため、従来の動作合成技術におけるスケジューリング処理では正しく動作することができない。
(課題3)
クロックclk1により駆動されるブロックpe1(301)と、クロックclk2により駆動されるブロックpe2(301)とによりアクセスされる配列からデータを読み出す場合に、メモリデバイスが従来と同じタイミングで動作するものであっても、メモリデバイスの出力からブロックのポートまでに遅延サイクルが生じる。よって、「Rarray_addr」の演算処理と「Rarray_data」の演算処理との間に、遅延サイクル分の間隔を開けなければ、正しく回路動作させることができない。
以上のように、従来の動作合成技術に対して、周波数や位相が異なる複数のクロックにより駆動される回路を生成したとしても、正しく回路動作させることができないという問題がある。
本発明は、上記従来の問題を解決するもので、周波数や位相が異なる複数種類のクロックで駆動される回路において、異なるクロック領域間の信号伝播を保証し、正しく動作する回路を生成することができる動作合成装置およびこれを用いた動作合成方法、この動作合成装置または動作合成方法を用いた半導体集積回路の製造方法、この動作合成方法の各ステップをコンピュータに実行させるための動作合成プログラム、この動作合成プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体を提供することを目的とする。
本発明の動作合成装置は、回路の動作記述およびクロック情報から回路構成を示すレジスタトランスファレベル記述を自動生成する動作合成装置において、異なる複数種類のクロックにより駆動される処理回路を合成する際に、該クロック情報から得られる信号伝播保証回路の遅延サイクルを考慮して、各処理がどの実行サイクルで実行するかを決定するスケジューリング手段と、該スケジューリング手段のスケジューリング結果に基づいて、該異なるクロック領域間の信号伝播を保証する信号伝播保証回路を生成する信号伝播保証回路生成手段とを有するものであり、そのことにより上記目的が達成される。
また、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、前記クロックの周波数および位相の少なくとも一方が異なるクロック領域間で信号伝播が行われる場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う。
さらに、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、前記異なるクロック領域間の両クロック間の立ち上がり時間または立ち下がり時間の間隔が一定でない場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う。
さらに、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、回路中のあるブロックと、該ブロックと異なるクロック領域に存在する他のブロックとの間で通信を行う際に、通信が確立されてから次の通信を行うまでに、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う。
さらに、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、複数のクロック領域から読み書きされるメモリがある場合に、回路中のブロックによって該メモリからデータを読み出す際に、該ブロックから制御信号およびアドレス情報が出力されてからそれらのクロック領域間の信号伝播保証回路の遅延サイクル後にデータが読み出されようにスケジューリングを行う。
さらに、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、前記異なるクロック領域間で同期通信を行う「send」演算処理および「receive」演算処理に対して、1つの同期チャネルに連続したステップを割り当てず、両クロックの周波数の比率に応じたステップ数分の時間間隔を開けて実行ステップを割り当てる。
さらに、好ましくは、本発明の動作合成装置において、前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「send」演算処理の1回目が終了してからその2回目を実行開始するまでのステップ数S1が、S1=S/Fのステップ数である。
さらに、好ましくは、本発明の動作合成装置において、前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「receive」演算処理の1回目が終了してその2回目を実行開始するまでのステップ数S2が、S2=3×F/S+1のステップ数である。
さらに、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、前記異なるクロック領域から書き込みが行われる非同期チャネルに書き込みを行う「Wachan」演算処理および読み出しを行う「Rachan」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる。
さらに、好ましくは、本発明の動作合成装置におけるスケジューリング手段は、前記異なるクロック領域から書き込みが行われる配列からデータを読み出すための「Rarray_addr」演算処理および「Rarray_data」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる。
さらに、好ましくは、本発明の動作合成装置における信号伝播保証回路生成手段は、前記信号伝播保証回路として、フリップフロップがN(Nは2以上の整数)段直列に接続された回路を生成する。
さらに、好ましくは、本発明の動作合成装置における信号伝播保証回路生成手段は、前記信号伝播保証回路として、フリップフロップが2段直列に接続されるかまたは、フリップフロップが3段直列に接続された回路を生成する。
さらに、好ましくは、本発明の動作合成装置における信号伝播保証回路生成手段は、前記信号伝播保証回路として、要求される回路面積および処理速度の少なくとも一方に応じて前記信号伝播保証回路を生成する。
さらに、好ましくは、本発明の動作合成装置において、前記クロック情報を解析するクロック情報解析手段と、前記動作記述からコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、該コントロールデータフローグラフに対する前記スケジューリング手段によるスケジューリング後に、該コントロールデータフローグラフの各処理を演算器または通信器にそれぞれ割り当てるアロケーション手段と、前記信号伝播保証回路生成手段を含み、スケジューリング結果およびアロケーション結果を元にデータパスと前記信号伝播保証回路とそれらを制御するコントローラを生成するデータパス・コントローラ生成手段とを更に有する。
さらに、好ましくは、本発明の動作合成装置における信号伝播保証回路は、前記クロックと、前記異なるクロック領域間での伝播信号とを同期化させるための同期化回路である。
本発明の動作合成方法は、回路の動作記述およびクロック情報から回路構成を示すレジスタトランスファレベル記述を自動生成する動作合成方法において、異なる複数種類のクロックにより駆動される処理回路を合成する際に、スケジューリング手段が、該クロック情報から得られる信号伝播保証回路の遅延サイクルを考慮して、各処理がどの実行サイクルで実行するかを決定するスケジューリング工程と、信号伝播保証回路生成手段が、該スケジューリング結果に基づいて、異なるクロック領域間の信号伝播を保証する信号伝播保証回路を生成する信号伝播保証回路生成工程とを有するものであり、そのことにより上記目的が達成される。
また、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、前記クロックの周波数および位相の少なくとも一方が異なるクロック領域間で信号伝播が行われる場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う。
さらに、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、前記異なるクロック領域間の両クロック間の立ち上がり時間または立ち下がり時間の間隔が一定でない場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う。
さらに、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、回路中のあるブロックと、該ブロックと異なるクロック領域に存在する他のブロックとの間で通信を行う際に、通信が確立されてから次の通信を行うまでに、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う。
さらに、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、複数のクロック領域から読み書きされるメモリがある場合に、回路中のブロックによって該メモリからデータを読み出す際に、該ブロックから制御信号およびアドレス情報が出力されてからそれらのクロック領域間の信号伝播保証回路の遅延サイクル後にデータが読み出されようにスケジューリングを行う。
さらに、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、前記異なるクロック領域間で同期通信を行う「send」演算処理および「receive」演算処理に対して、1つの同期チャネルに連続したステップを割り当てず、両クロックの周波数の比率に応じたステップ数分の時間間隔を開けて実行ステップを割り当てる。
さらに、好ましくは、本発明の動作合成方法において、前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「send」演算処理の1回目が終了してからその2回目を実行開始するまでのステップ数S1が、S1=S/Fのステップ数である。
さらに、好ましくは、本発明の動作合成方法において、前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「receive」演算処理の1回目が終了してその2回目を実行開始するまでのステップ数S2が、S2=3×F/S+1のステップ数である。
さらに、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、前記異なるクロック領域から書き込みが行われる非同期チャネルに書き込みを行う「Wachan」演算処理および読み出しを行う「Rachan」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる。
さらに、好ましくは、本発明の動作合成方法におけるスケジューリング工程は、前記異なるクロック領域から書き込みが行われる配列からデータを読み出すための「Rarray_addr」演算処理および「Rarray_data」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる。
さらに、好ましくは、本発明の動作合成方法における信号伝播保証回路生成工程は、前記信号伝播保証回路として、フリップフロップがN(Nは2以上の整数)段直列に接続された回路を生成する。
さらに、好ましくは、本発明の動作合成方法における信号伝播保証回路生成工程は、前記信号伝播保証回路として、フリップフロップが2段直列に接続されるかまたは、フリップフロップが3段直列に接続された回路を生成する。
さらに、好ましくは、本発明の動作合成方法における信号伝播保証回路生成工程は、前記信号伝播保証回路として、要求される回路面積および処理速度の少なくとも一方に応じて前記信号伝播保証回路を生成する。
さらに、好ましくは、本発明の動作合成方法において、クロック情報解析手段が前記クロック情報を解析するクロック情報解析工程と、コントロールデータフローグラフ生成手段が前記動作記述からコントロールデータフローグラフを生成するコントロールデータフローグラフ生成工程と、該コントロールデータフローグラフに対する前記スケジューリング工程によるスケジューリング後に、アロケーション手段が該コントロールデータフローグラフの各処理を演算器または通信器にそれぞれ割り当てるアロケーション工程と、前記信号伝播保証回路生成工程を含み、データパス・コントローラ生成手段が、スケジューリング結果およびアロケーション結果を元にデータパスと前記信号伝播保証回路とそれらを制御するコントローラを生成するデータパス・コントローラ生成工程とを更に有する。
本発明の半導体集積回路の製造方法は、本発明の上記動作合成装置を用いて動作合成した回路情報に基づいてレジストパターンを設計し、この設計情報によりパターニングしたレジストパターンを用いて半導体集積回路を製造するものであり、そのことにより上記目的が達成される。
本発明の動作合成プログラムは、本発明の上記動作合成方法の各工程をコンピュータに実行させるための処理手順が記述されたものであり、そのことにより上記目的が達成される。
本発明の可読記憶媒体は、本発明の上記動作合成プログラムが格納されたコンピュータ読み取り可能なものであり、そのことにより上記目的が達成される。
上記構成により、以下に、本発明の作用について説明する。
本発明にあっては、回路の動作記述から複数のクロックにより駆動される回路のレジスタトランスファレベル記述を自動生成する動作合成装置および動作合成方法において、異なるクロック領域間で信号伝播がある場合に、メタステーブルを防ぐために、クロック領域間の信号伝播を保証する信号伝播保証回路を生成する。これにより、信号伝播が行われるクロック領域間において、両クロック間の立上がり時間、または両クロック間の立ち下がり時間の間隔が一定でない場合に、クロック領域間の信号伝播を保証することができる。また、設計者の要求に応じて、処理速度を向上させることよりも回路占有面積や消費電力を小さくすることを優先した回路や、これとは逆に、回路占有面積や消費電力を小さくすることより処理速度を向上させることを優先した回路などを生成することが可能となる。
信号伝播保証回路には様々な回路構成があるが、例えば受信側回路のクロックにより駆動されるフリップフロップが直列に2つ配置された構成のものを用いることが可能となる。また、3つのフリップフロップが直列に配置された構成のものも用いることが可能となる。このような信号伝播保証回路を追加することにより、信号が送信側記憶素子から受信側記憶素子に到達するまでの遅延が増加し、例えば2つのフリップフロップを挿入する場合には2クロックサイクルの遅延が増え、3つのフリップフロップを挿入する場合には3クロックサイクルの遅延が増える。
そこで、本発明にあっては、信号伝播保証回路における遅延サイクルを考慮してスケジューリングを行う。例えば、信号伝播保証回路として信号を受信する側のクロックにより駆動されるフリップフロップが2つ直列に接続された回路を生成して、遅延サイクルが2クロックサイクルであることを前提としてスケジューリング処理を行うことができる。また、信号伝播保証回路として信号を受信する側のクロックにより駆動されるフリップフロップが3つ直列に接続された回路を生成して、遅延サイクルが3クロックサイクルであることを前提としてスケジューリング処理を行ってもよい。
以上により、本発明によれば、複数のクロックにより動作する回路を合成する動作合成装置および動作合成方法において、複数のクロック領域間の信号伝播を保証し、さらに、クロックと伝播信号とを同期化させるべく、その信号伝播保証回路による遅延を生じせしめて、回路が正しく動作するようにスケジューリングを行うことができる。
以下に、本発明の動作合成装置および動作合成方法の実施形態について、図面を参照しながら詳細に説明する。
図1は、本発明の実施形態に係る動作合成装置の概略構成例を示すブロック図である。
図1において、本実施形態の動作合成装置1は、コンピュータシステムで構成されており、各種入力指令を可能とするキーボードやマウス、画面入力装置などの操作入力部2と、各種入力指令に応じて表示画面上に、初期画面、選択誘導画面および処理結果画面などの各種画像を表示可能とする表示部3と、全体的な制御を行う制御手段としてのCPU4(中央演算処理装置)と、CPU4の起動時にワークメモリとして働く一時記憶手段としてのRAM5と、CPU4を動作させるための動作合成プログラムおよびこれに用いる各種データなどが記録されたコンピュータ読み取り可能な可読記録媒体(記憶手段)としてのROM6と、動作合成処理における各種データを記憶すると共にこれを参照可能とするためのデータベース7とを有している。
CPU4は、操作入力部2からの入力指令の他、ROM6内からRAM5内に読み出された動作合成プログラムおよびこれに用いる各種データに基づいて、異なる複数種類のクロックにより駆動される回路を合成する際に、クロック周期および位相、異なる種類(周期および/または位相)のクロックで動作するクロック領域などのクロック情報を解析するクロック情報解析手段41と、図示しないデータ格納部または外部から、ハードウェアの構造に関する情報は含まず、回路動作のみを記述した回路の動作記述11から、データの流れを枝とし、演算処理または通信処理を各節点としてグラフで表したコントロールデータフローグラフ(CDFG)を生成するCDFG生成手段42と、上記クロック情報を考慮して、CDFG中の各節点の処理をどの実行サイクルで実行するかを決定するスケジューリング手段43と、各処理を回路素子に割り付けると共に処理途中のデータを記憶するためにレジスタに割り付けるアロケーション手段44と、スケジューリング手段43およびアロケーション手段44による各処理結果にしたがって、データパスとそれを制御するコントローラを生成し、演算器およびレジスタの接続を表すネットリストを作成すると共に、上記クロック情報に基づいて信号伝播保証回路(または同期化回路)を追加生成するデータパス・コントローラ生成手段45とを有し、そのデータパス・コントローラ生成結果をRTL記述13として出力可能とされる。なお、この図示しないデータ格納部は、RAM5内にあってもよいし、データベース7内にあってもよいし、これらとは別に設けられていてもよい。
ROM6は、ハードディスク、光ディスク、磁気ディスクおよびICメモリなどの可読記録媒体(記憶手段)で構成されている。この動作合成プログラムおよびこれに用いる各種データは、携帯自在な光ディスク、磁気ディスクおよびICメモリなどからROM6にダウンロードされてもよいし、コンピュータのハードディスクからROM6にダウンロードされてもよいし、無線または有線、インターネットなどを介してROM6にダウンロードされてもよい。後述する図2の動作合成方法をコンピュータに実行させるための処理手順が記述された動作合成プログラムをコンピュータ読み取り可能な可読記憶媒体に格納して、コンピュータ(CPU4)により動作合成するものである。
データベース7は、CPU4による動作合成中に中間データとして生成されるクロック情報、CDFG、スケジューリング結果、アロケーション結果およびデータパス・コントローラ構成情報などの各種データを、その都度格納すると共に、必要に応じてこれらを参照可能としている。なお、データベース7はRAM5と一体で同じ記憶手段として構成されていてもよい。
図2は、図1の動作合成装置の各手段が実行する処理手順を説明するためのフローチャートである。
図2に示すように、クロック情報解析手段41によるクロック情報解析工程(ステップST1)では、まず、クロック情報解析処理として、例えば外部から動作合成装置1に入力されたクロック情報12から、クロックの周波数と、クロックの位相と、複数種類の回路ブロックうちのどの回路ブロックがどのクロック領域に属するかが解析される。クロック周期と位相とクロック領域に属する回路ブロックの情報は、データベース7にリストとして、参照可能に登録される。
次に、CDFG生成手段42によるCDFG生成工程(ステップST2)では、動作合成装置1に入力された動作記述11からCDFGが生成される。生成されたCDFGは、データベース7に節点情報の集合体として、参照可能に登録される。
このCDGFは、節点情報として、節点の番号、演算または通信の種類および枝の接続先の節点番号などを有しており、CDFG中の1節点が1つの節点情報として表され、CDFG全体は節点情報の配列またはリストとして表されている。実際の設計では、大規模な回路の場合、CDFGの節点数は1万個を超えることもあるため、CDFG生成の処理は計算機上で行われる。スケジューリング以降の処理についても同様である。なお、CDFGはデータベース上の数値データであるが、説明を簡便にするため、以降では図7のようなグラフとして表すことにする。
その後、スケジューリング手段43によるスケジューリング工程(ステップST3)では、この信号伝播保証回路における遅延サイクルを考慮して、CDFGの各節点を実行する実行ステップが決定される。また、スケジューリングの制約としては、CDFGの節点の順序関係を保つことや、CDFGの節点間の間隔ステップ数を与えることなどが挙げられる。実行ステップやスケジューリングの制約は、データベース7上の各節点の節点情報に付加されている。
この実行ステップの決定方法は、全てのスケジューリング制約を満たすものであれば、どのようなものでもよいが、異なるクロック領域間の同期チャネル通信を行う「send」演算処理や「receive」演算処理は、一つの同期チャネルに対して連続したステップに割り当てられず、クロックの周波数の比率に応じたステップ数分の間隔を開けた実行ステップに割り当てられる。また、異なるクロック領域から書き込みがある非同期チャネルに対して書き込みを行う「Wachan」演算処理と読み出しを行う「Rachan」演算処理は、信号伝播保証回路の遅延サイクルに応じたステップ数以上の間隔を開けて実行ステップが割り当てられる。さらに、異なるクロック領域から書き込みがある配列からデータを読み出すための「Rarray_addr」演算処理と「Rarray_data」演算処理は、信号伝播保証回路の遅延サイクルに応じたステップ数以上の間隔を開けて実行ステップが割り当てられる。
さらに、アロケーション手段44によるアロケーション工程(ステップST4)では、CDFGの各節点の処理が演算器に割り当てられる。その演算器情報は、データベース7上の各節点の節点情報に付加されている。
この演算器の割当方法は、どのようなものでもよい。ここでは、異なる複数のサイクルで実行される同一の演算処理については、一つの演算器に割り付けられる可能性がある。なお、動作合成方法によっては、アロケーション工程がスケジューリング工程の前に行なわれることもあり得る。
続いて、データパス・コントローラ生成手段45によるデータパス・コントローラ生成工程(ステップST5)では、スケジューリング結果およびアロケーション結果を元に、図13および図15の他、後述する図6のようなデータパスと、信号伝播保証回路と、それを制御するコントローラが生成される。生成されたデータパスと信号伝播保証回路とコントローラの各情報は、演算器、通信器やレジスタの接続を表すネットリストとしてデータベース7に登録される。
即ち、このデータパス・コントローラ生成手段45には、上記クロック情報に基づいて、異なるクロック領域間に、この異なるクロック領域間の信号伝播を保証するための信号伝播保証回路(または同期化回路)を追加生成する信号伝播保証回路生成手段を有している。
信号伝播保証回路生成処理として、異なる複数種類のクロックにより駆動される回路を合成する際に、異なるクロック領域間に、信号伝播保証回路生成手段が、異なるクロック領域間の信号伝播を保証する信号伝播保証回路を生成する。例えば、信号伝播保証回路生成手段は、クロックの周波数および位相の少なくとも一方が異なり、信号伝播が行われるクロック領域間の両クロックの立ち上がり時間または立ち下がり時間の間隔が一定でない場合(例えば両クロックが同時に立ち上がった場合に次の立ち上がりは、一方のクロックがFnsで他方のクロックがSnsの場合、S−Fnsecのズレが生じる)に、これを検出してクロック領域間の信号伝播を保証する信号伝播保証回路を生成することができる。また、信号伝播保証回路生成手段は、要求される占有回路面積および処理速度の少なくとも一方に応じてクロック領域間の信号伝播を保証する信号伝播保証回路を生成することもできる。
このように、本実施形態では、一つの回路中に複数種類のクロックが用いられる場合、例えば回路外部とのデータ入出力部と、演算部とにおいて、要求される処理速度が異なる場合(クロック周波数が異なっている場合)などに、メタステーブルを防ぐために、信号伝播路に、異なるクロック領域間の信号伝播を保証するための信号伝播保証回路(または同期化回路)を追加する方法を用いる。
つまり、本実施形態では、クロック情報および動作記述から、複数種類のクロックにより駆動される回路のレジスタトランスファレベル記述を生成する動作合成装置1により、動作周波数や位相が異なる複数クロックにより駆動される回路について、メタステーブルを防いで正しく動作する回路を生成するように、異なるクロック領域間に、異なるクロック領域間の信号伝播を保証する信号伝播保証回路(または同期化回路)を生成して回路の動作合成を行う。この信号伝播保証回路には様々な回路構成があるが、ここでは、例えば受信側回路のクロックにより駆動されるフリップフロップが直列に2つ配置された構成のものを用いることができる。なお、3つのフリップフロップが直列に配置された構成のものも用いることができる。このような信号伝播保証回路を追加することにより、信号が送信側記憶素子から受信側記憶素子に到達するまでの遅延が増加し、例えば2つのフリップフロップを挿入する場合には2クロックサイクルの遅延が増える。また、例えば3つのフリップフロップを挿入する場合には3クロックサイクルの遅延が増える。要するに、信号伝播保証回路生成手段としては、信号伝播保証回路として、フリップフロップがN(Nは2以上の整数)段直列に接続された回路を生成する。この場合にN個のフリップフロップを直列挿入する場合にはNクロックサイクル分の遅延が増えることになる。
例えば、本実施形態では、信号伝播保証回路における遅延サイクルを考慮してスケジューリング工程(ステップST3)を行う場合に、信号伝播保証回路として信号を受信する側のクロックにより駆動されるフリップフロップが2つ直列に接続された回路を生成して、その遅延サイクルが2クロックサイクルであることを前提としてスケジューリング処理を行っている。なお、信号伝播保証回路として信号を受信する側のクロックにより駆動されるフリップフロップが3つ直列に接続された回路を生成して、その遅延サイクルが3クロックサイクルであることを前提としてスケジューリング処理を行うこともできる。さらに、信号伝播保証回路として信号を受信する側のクロックにより駆動されるフリップフロップがN個直列に接続された回路を生成して、その遅延サイクルがNクロックサイクルであることを前提としてスケジューリング処理を行うこともできる。
以下に、本実施形態の動作合成装置1によって、前述した(課題1)、(課題2)および(課題3)を解決する動作合成方法についてそれぞれ、(解決方法1)、(解決方法2)および(解決方法3)として説明する。
(解決方法1)
図3は、図1のクロック情報例を示す波形図である。また、図4(a)および図4(b)は、コントロールデータフローグラフ例を示す図であり、図4(c)および図4(d)は、図4(a)および図4(b)のスケジューリング例を示す図である。
異なる複数種類(ここでは2種類)のクロックとして、例えば図3に示すような周波数が高いクロックclk_fast(周期Fナノ秒;Fns)と、周波数が低いclk_slow(周期Sナノ秒;Sns)とがある。また、異なるクロック領域(回路ブロック)として、図4(a)に示すようなブロックpe1のCDFGと、図4(b)に示すようなブロックpe2のCDFGとがあって、異なるブロックpe1が周波数の高いクロックclk_fastにより駆動され、異なるブロックpe2が周波数の低いクロックclk_slowにより駆動される場合について考える。
図4(a)に示すCDFGでは、節点104においてデータを同期チャネルch1を介して送るための1回目の「send」演算処理が行われ、次の節点105においてデータを同期チャネルch1を介して送るための2回目の「send」演算処理が行われる。また、図4(b)に示すCDFGでは、節点109においてデータを、同期チャネルch1を介して受け取るための1回目の「receive」演算処理が行われ、次の節点110においてデータを、同期チャネルch1を介して受け取るための2回目の「receive」演算処理が行われる。
ブロックpe1の2回目の同期チャネル通信により正しくデータを送信(send)するためには、図13および図5に示すようにch1_wrxが’0’になった以降のサイクルでch1_wtxを’1’にすればよい。1回目の「send」演算処理が終了してから2回目の「send」演算処理を実行開始するまでのステップ数S1は、例えば以下ようにして求めることができる。
図5は、図4(c)および図4(d)に示すスケジューリング結果を、図13に示す回路により実行したときの信号遷移例を示すタイミングチャートである。
クロックが立ち上がってからフリップフロップの出力信号の変化が他の回路素子に伝播するまでの時間が十分短い場合として、1回目の「send」演算処理が終了してから2回目の「send」演算処理を実行開始するまでのステップ数S1は、
S1=S/Fステップとなる。
よって、スケジューリング手段43によるスケジューリング工程(ステップST3)において、図4(a)の節点104を割り当てる実行ステップをstep_104とし、節点105を割り当てる実行ステップをstep_105とすると、
step_104+S/F≦step_105
というスケジューリング制約が与えられてスケジューリングが行われる。この結果、図4(c)に示すような2ステップ空いたスケジューリング結果が得られる。
次に、ブロックpe2の2回目の同期チャネル通信によるデータ受信(receive)は、信号txの値が’0’になった以降のクロックサイクルで実行すればよい。1回目の「receive」演算処理が終了してから信号txが’0’になるまでのステップ数S2は、例えば以下のようにして求めることができる。
クロックが立ち上がってからフリップフロップの出力信号の変化が他の回路素子に伝播するまでの時間が十分短い場合として、1回目の「receive」演算処理が終了してから信号txが’0’になるまでのステップ数S2は、
S2=3×F/S+1ステップとなる。
よって、スケジューリング手段43によるスケジューリング工程において、図4(b)の節点109を割り当てる実行ステップをstep_109とし、節点110を割り当てる実行ステップをstep_110とすると、
step_109+3×F/S+1≦step_110
というスケジューリング制約が与えられてスケジューリングが行われる。この結果、図4(d)に示すような3ステップ空いたスケジューリング結果が得られる。
図4(c)および図4(d)に示すスケジューリング結果を実行するために、アロケーション工程およびデータパス・コントローラ生成工程により生成される回路例は、例えば図13に示すようなものとなる。
したがって、図5に示すように、clk_slowの立上がりエッジでch1_rtxとch1_rrxが共に’1’のとき、即ちクロックサイクルs4ではch1_rdataが値d、クロックサイクルs8ではch1_rdataが値eとなっており、ブロックpe1からブロックpe2に正しく値が送信されていることが分かる。
(解決方法2)
スケジューリング手段43によるスケジューリング工程(ステップST3)において、異なるクロック領域として、図3に示すクロックclk_fastにより駆動される回路ブロックと、図3に示すクロックclk_slowにより駆動される回路ブロックとからアクセスされる非同期チャネルachがあった場合に、各回路ブロックのCDFGに対してスケジューリング処理が行われる。
ここで、その非同期チャネルachにデータを送信する「Wachan」演算処理の実行ステップをstep_Wachanとし、その非同期チャネルachからデータを受信する「Rachan」演算処理の実行ステップをstep_Rachanとし、信号伝播保証回路の遅延サイクルをSdとすると、
step_Wachan+Sd≦Step_Rachan
というスケジューリング制約が与えられてスケジューリングが行われる。
即ち、スケジューリング手段43は、異なるクロック領域から書き込みが行われる非同期チャネルに書き込みを行う「Wachan」演算処理および読み出しを行う「Rachan」演算処理に対して、信号伝播保証回路の遅延サイクルSdに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる。
この結果、例えば、信号伝播保証回路としてフリップフロップが2段接続された回路を用いる場合、「Wachan」演算処理と「Rachan」演算処理の間隔は2ステップとなる。
このスケジューリング結果を実行するために、データパス・コントローラ生成工程(ステップST5)により生成されるデータパスの構造例は、図15に示すようなものとなる。
(解決方法3)
スケジューリング手段43によるスケジューリング工程(ステップST3)において、異なるクロック領域として、図3に示すクロックclk_fastにより駆動される回路ブロックと、図3に示すclk_slowにより駆動される回路ブロックとからアクセスされる配列aryがあった場合、各回路ブロックのCDFGに対してスケジューリング処理が行われる。
ここで、その配列aryに対して読み出しアドレスを出力する「Rarray_addr」演算処理の実行ステップをstep_Rarray_addrとし、配列aryからデータを読み出す「Rarray_data」演算処理の実行ステップをstep_Rarray_dataとし、信号伝播保証回路の遅延サイクルをSdとすると、
step_Rarray_addr+Sd≦Step_Rarray_data
というスケジューリング制約が与えられてスケジューリングが行われる。
即ち、スケジューリング手段43は、異なるクロック領域から書き込みが行われる配列からデータを読み出すための「Rarray_addr」演算処理および「Rarray_data」演算処理に対して、信号伝播保証回路の遅延サイクルSdに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる。
この結果、例えば、信号伝播保証回路としてフリップフロップが2段接続された回路を用いる場合、「Rarray_addr」演算処理と「Rarray_data」演算処理の間隔は2ステップとなる。
このスケジューリング結果を実行するために、データパス・コントローラ生成工程(図2のステップST5)により生成されるデータパスの構造例は、図15に示す回路にアドレスデコーダやデータを選択するための回路が付加されたものとなる。
図6は、図3に示すクロックclk_fastにより駆動されるブロックpe1によって配列aryにデータを書き込み、図3に示すクロックclk_slowにより駆動されるブロックpe2によって配列aryからデータを読み出すための回路である。
記憶領域store901は、[配列のデータ幅×要素数]個の記憶素子により構成されており、例えばフリップフロップが用いられる。
図6(a)に示す回路においては、読み出しアドレスary_addr2をデコードして指定されたデータを選択するセレクタ902が記憶素子901と信号伝播保証回路903との間に配置されている。
この回路構成では、ブロックpe2のスケジューリングにおいて、異なるクロック領域としての「Rarray_addr」演算処理と「Rarray_data」演算処理との間に2ステップ以上の間隔を開けて割り当てる必要があるが、[配列のデータ幅]個分の信号伝播保証回路903があればよい。例えば、データ幅8bit×16要素の配列の場合、8個の信号伝播保証回路が設けられる。
図6(b)に示す回路では、読み出しアドレスary_addr2をデコードして指定されたデータを選択するセレクタ902が信号伝播保証回路903の後段に配置されている。
この回路構成では、[配列のデータ幅×要素数]個分の信号伝播保証回路903が必要となるが、ブロックpe2のスケジューリングにおいて、異なるクロック領域としての「Rarray_addr」演算処理の次のステップに「Rarray_data」演算処理を割り当てることが可能となる。例えば、データ幅8bit×16要素の配列の場合、128個の信号伝播保証回路が設けられる。
スケジューリング工程(図2のステップST3)とデータパス・コントローラ生成工程(図2のステップST5)において、設計者によって処理速度を速くすることよりも、面積や消費電力を小さくすることが優先される場合には、図6(a)に示す回路が生成され、設計者によって面積や消費電力を小さくすることよりも、処理速度を速くすることが優先される場合には、図6(b)に示す回路が生成されるため、スケジューリング工程では、回路構成に応じたスケジューリングが行われる。
以上により、本実施形態の動作合成装置1によれば、動作周波数や位相が異なる複数種類のクロックにより駆動される回路を合成する際に、要求される回路面積や処理速度に応じてクロック領域間の信号伝播を保証するための信号伝播保証回路を生成するデータパス・コントローラ生成手段45と、その信号伝播保証回路における遅延サイクルを考慮してスケジューリングを行うスケジューリング手段43とを有している。これによって、多相クロック回路において、異なるクロック領域間の信号伝播を保証し、正しく動作する回路を生成することができる。
なお、上記実施形態では、特に説明しなかったが、異なる複数種類のクロックにより駆動される処理回路を合成する際に、クロック情報12から得られる信号伝播保証回路の遅延サイクルを考慮して、各処理がどの実行サイクルで実行するかを決定するスケジューリング手段43と、このスケジューリング手段43のスケジューリング結果に基づいて、異なるクロック領域間に、異なるクロック領域間の信号伝播を保証する信号伝播保証回路を生成する信号伝播保証回路生成手段とを有することにより、異なるクロック領域間の信号伝播を保証し、正しく動作する回路を生成することができる本発明の目的を達成するこができる。
また、上記実施形態では、特に説明しなかったが、本発明の半導体集積回路の製造方法として、本発明の上記動作合成装置1を用いて動作合成した回路情報に基づいてレジストパターンを設計し、この設計情報によりパターニングしたレジストパターンを用いて半導体集積回路を製造することができる。これによって、異なる複数種類のクロックにより正しく動作する処理回路を得ることができる。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
本発明は、ディジタル回路の設計において、動作記述から回路をコンピュータ自動合成する動作合成装置および、この動作合成装置を用いた動作合成方法、この動作合成方法の各ステップをコンピュータに実行させるための動作合成プログラムおよびこの動作合成プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体の分野において、複数種類のクロックにより動作する回路を合成する動作合成装置であって、複数のクロック領域間の信号伝播を保証し、さらに、クロックと伝播信号とを同期化させるべく、その信号伝播保証回路によって遅延を生じせしめて、回路が正しく動作するようにスケジューリングを行うことができる。
本発明の実施形態に係る動作合成装置の概略構成例を示すブロック図である。 図1の動作合成装置における各処理手順を説明するためのフローチャートである。 図1のクロック情報の一例を示す波形図である。 (a)および(b)は、コントロールデータフローグラフ例を示す図であり、(c)および(d)は、(a)および(b)のスケジューリング例を示す図である。 図4(c)および図4(d)に示すスケジューリング結果を、図13に示す回路により実行したときの信号遷移例を示すタイミングチャートである。 (a)および(b)は、異なるクロック領域間の共通メモリへのアクセスを行う回路について、データパスの構成例を示す回路図である。 (a)および(b)は、並列動作する回路のコントロールデータフローグラフ(CDGF)の一例を示す図である。 (a)および(b)は、図7(a)と図7(b)に示すコントロールデータフローグラフについてスケジューリング処理を施した結果を示す図である。 図8(a)と図8(b)のスケジューリング結果を実行する回路例を示すブロック図である。 (a)は、同期チャネル通信を行う回路についてデータパスの構成例を示すブロック図であり、(b)は、その信号遷移例を示すタイミングチャートである。 (a)は、非同期チャネル通信を行う回路についてデータパスの構成例を示すブロック図であり、(b)は、その信号遷移例を示すタイミングチャートである。 (a)は、共通メモリへのアクセスを行う回路についてデータパスの構成例を示すブロック図であり、(b)は、その信号遷移例を示すタイミングチャートである。 異なるクロック領域間で同期チャネル通信を行う回路についてデータパスの構成例を示すブロック図である。 図13の同期チャネル通信を行う回路について信号遷移例を示すタイミングチャートである。 異なるクロック領域間で非同期チャネル通信を行う回路についてデータパスの構成例を示すブロック図である。
符号の説明
1 動作合成装置
2 操作入力部
3 表示部
4 CPU(中央演算処理装置;制御手段)
41 クロック情報解析手段
42 CDFG生成手段
43 スケジューリング手段
44 アロケーション手段
45 データパス・コントローラ生成手段
5 RAM
6 ROM
7 データベース
11 動作記述
12 クロック情報
13 RTL記述
101〜116 節点
301、302 ブロック(回路ブロック)
303、303a、303b ブロックmemory
401、402 コントローラ
403〜408 ポート
501、502 加算器
601、603〜605、902 セレクタ
602 制御信号を生成する回路
606 記憶素子
701〜703、807、808、903 信号伝播保証回路
801〜805 クロックを切り替える回路
806、901 記憶素子(記憶領域)

Claims (32)

  1. 回路の動作記述およびクロック情報から回路構成を示すレジスタトランスファレベル記述を自動生成する動作合成装置において、
    異なる複数種類のクロックにより駆動される処理回路を合成する際に、該クロック情報から得られる信号伝播保証回路の遅延サイクルを考慮して、各処理がどの実行サイクルで実行するかを決定するスケジューリング手段と、該スケジューリング手段のスケジューリング結果に基づいて、該異なるクロック領域間の信号伝播を保証する信号伝播保証回路を生成する信号伝播保証回路生成手段とを有する動作合成装置。
  2. 前記スケジューリング手段は、前記クロックの周波数および位相の少なくとも一方が異なるクロック領域間で信号伝播が行われる場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う請求項1に記載の動作合成装置。
  3. 前記スケジューリング手段は、前記異なるクロック領域間の両クロック間の立ち上がり時間または立ち下がり時間の間隔が一定でない場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う請求項2に記載の動作合成装置。
  4. 前記スケジューリング手段は、回路中のあるブロックと、該ブロックと異なるクロック領域に存在する他のブロックとの間で通信を行う際に、通信が確立されてから次の通信を行うまでに、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行う請求項1に記載の動作合成装置。
  5. 前記スケジューリング手段は、複数のクロック領域から読み書きされるメモリがある場合に、回路中のブロックによって該メモリからデータを読み出す際に、該ブロックから制御信号およびアドレス情報が出力されてからそれらのクロック領域間の信号伝播保証回路の遅延サイクル後にデータが読み出されようにスケジューリングを行う請求項1に記載の動作合成装置。
  6. 前記スケジューリング手段は、前記異なるクロック領域間で同期通信を行う「send」演算処理および「receive」演算処理に対して、1つの同期チャネルに連続したステップを割り当てず、両クロックの周波数の比率に応じたステップ数分の時間間隔を開けて実行ステップを割り当てる請求項1または4に記載の動作合成装置。
  7. 前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「send」演算処理の1回目が終了してからその2回目を実行開始するまでのステップ数S1が、S/F以上の最小整数である請求項6に記載の動作合成装置。
  8. 前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「receive」演算処理の1回目が終了してその2回目を実行開始するまでのステップ数S2が、3×F/S+1以上の最小整数である請求項6に記載の動作合成装置。
  9. 前記スケジューリング手段は、前記異なるクロック領域から書き込みが行われる非同期チャネルに書き込みを行う「Wachan」演算処理および読み出しを行う「Rachan」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる請求項1に記載の動作合成装置。
  10. 前記スケジューリング手段は、前記異なるクロック領域から書き込みが行われる配列からデータを読み出すための「Rarray_addr」演算処理および「Rarray_data」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てる請求項1または5に記載の動作合成装置。
  11. 前記信号伝播保証回路生成手段は、前記信号伝播保証回路として、フリップフロップがN(Nは2以上の整数)段直列に接続された回路を生成する請求項1に記載の動作合成装置。
  12. 前記信号伝播保証回路生成手段は、前記信号伝播保証回路として、フリップフロップが2段直列に接続されるかまたは、フリップフロップが3段直列に接続された回路を生成する請求項1または11に記載の動作合成装置。
  13. 前記信号伝播保証回路生成手段は、前記信号伝播保証回路として、要求される回路面積および処理速度の少なくとも一方に応じて前記信号伝播保証回路を生成する請求項1に記載の動作合成装置。
  14. 前記クロック情報を解析するクロック情報解析手段と、
    前記動作記述からコントロールデータフローグラフを生成するコントロールデータフローグラフ生成手段と、
    該コントロールデータフローグラフに対する前記スケジューリング手段によるスケジューリング後に、該コントロールデータフローグラフの各処理を演算器または通信器にそれぞれ割り当てるアロケーション手段と、
    前記信号伝播保証回路生成手段を含み、スケジューリング結果およびアロケーション結果を元にデータパスと前記信号伝播保証回路とそれらを制御するコントローラを生成するデータパス・コントローラ生成手段とを更に有する請求項1に記載の動作合成装置。
  15. 前記信号伝播保証回路は、前記クロックと、前記異なるクロック領域間での伝播信号とを同期化させるための同期化回路である請求項1〜5および9〜14のいずれかに記載の動作合成装置。
  16. 回路の動作記述およびクロック情報から回路構成を示すレジスタトランスファレベル記述を自動生成する動作合成方法において、
    異なる複数種類のクロックにより駆動される処理回路を合成する際に、スケジューリング手段が、記憶手段に格納されている該クロック情報を参照し、参照された該クロック情報から得られる信号伝播保証回路の遅延サイクルを考慮して、各処理がどの実行サイクルで実行するかを決定して決定結果であるスケジューリング結果を該記憶手段に格納するスケジューリング工程と、信号伝播保証回路生成手段が、該記憶手段に格納されている該スケジューリング結果を参照し、参照された該スケジューリング結果に基づいて、異なるクロック領域間の信号伝播を保証する信号伝播保証回路を生成して該記憶手段に格納する信号伝播保証回路生成工程とを有する動作合成方法。
  17. 前記スケジューリング工程は、前記スケジューリング手段が、前記クロックの周波数および位相の少なくとも一方が異なるクロック領域間で信号伝播が行われる場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行うことを含む請求項16に記載の動作合成方法。
  18. 前記スケジューリング工程は、前記スケジューリング手段が、前記異なるクロック領域間の両クロック間の立ち上がり時間または立ち下がり時間の間隔が一定でない場合に、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行うことを含む請求項17に記載の動作合成方法。
  19. 前記スケジューリング工程は、前記スケジューリング手段が、回路中のあるブロックと、該ブロックと異なるクロック領域に存在する他のブロックとの間で通信を行う際に、通信が確立されてから次の通信を行うまでに、前記信号伝播保証回路の遅延サイクルに応じた時間間隔を開けてスケジューリングを行うことを含む請求項16に記載の動作合成方法。
  20. 前記スケジューリング工程は、前記スケジューリング手段が、複数のクロック領域から読み書きされるメモリがある場合に、回路中のブロックによって該メモリからデータを読み出す際に、該ブロックから制御信号およびアドレス情報が出力されてからそれらのクロック領域間の信号伝播保証回路の遅延サイクル後にデータが読み出されようにスケジューリングを行うことを含む請求項16に記載の動作合成方法。
  21. 前記スケジューリング工程は、前記スケジューリング手段が、前記異なるクロック領域間で同期通信を行う「send」演算処理および「receive」演算処理に対して、1つの同期チャネルに連続したステップを割り当てず、両クロックの周波数の比率に応じたステップ数分の時間間隔を開けて実行ステップを割り当てることを含む請求項16または19に記載の動作合成方法。
  22. 前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「send」演算処理の1回目が終了してからその2回目を実行開始するまでのステップ数S1が、S/F以上の最小整数である請求項21に記載の動作合成方法。
  23. 前記異なる複数種類のクロックの一つの周期がSnsecで、該クロックの他の一つの周期がFnsecの場合(F<S)に、前記時間間隔として、前記「receive」演算処理の1回目が終了してその2回目を実行開始するまでのステップ数S2が、3×F/S+1以上の最小整数である請求項21に記載の動作合成方法。
  24. 前記スケジューリング工程は、前記スケジューリング手段が、前記異なるクロック領域から書き込みが行われる非同期チャネルに書き込みを行う「Wachan」演算処理および読み出しを行う「Rachan」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てることを含む請求項16に記載の動作合成方法。
  25. 前記スケジューリング工程は、前記スケジューリング手段が、前記異なるクロック領域から書き込みが行われる配列からデータを読み出すための「Rarray_addr」演算処理および「Rarray_data」演算処理に対して、前記信号伝播保証回路の遅延サイクルに応じたステップ数以上の時間間隔を開けて実行ステップを割り当てることを含む請求項16または20に記載の動作合成方法。
  26. 前記信号伝播保証回路生成工程は、前記信号伝播保証回路生成手段が、前記信号伝播保証回路として、フリップフロップがN(Nは2以上の整数)段直列に接続された回路を生成することを含む請求項16に記載の動作合成方法。
  27. 前記信号伝播保証回路生成工程は、前記信号伝播保証回路生成手段が、前記信号伝播保証回路として、フリップフロップが2段直列に接続されるかまたは、フリップフロップが3段直列に接続された回路を生成することを含む請求項1または26に記載の動作合成方法。
  28. 前記信号伝播保証回路生成工程は、前記信号伝播保証回路生成手段が、前記信号伝播保証回路として、要求される回路面積および処理速度の少なくとも一方に応じて前記信号伝播保証回路を生成することを含む請求項16に記載の動作合成方法。
  29. クロック情報解析手段が前記クロック情報を解析して解析結果を前記記憶手段に格納するクロック情報解析工程と、
    コントロールデータフローグラフ生成手段が前記動作記述からコントロールデータフローグラフを生成し、生成した前記コントロールデータフローグラフを該記憶手段に格納するコントロールデータフローグラフ生成工程と、
    該記憶手段に格納された該コントロールデータフローグラフを参照し、参照された該コントロールデータフローグラフに対する前記スケジューリング工程によるスケジューリング後に、アロケーション手段が該コントロールデータフローグラフの各処理を演算器または通信器にそれぞれ割り当ててアロケーション結果を該記憶手段に格納するアロケーション工程と、
    前記信号伝播保証回路生成工程を含み、データパス・コントローラ生成手段が、該記憶手段に格納された前記スケジューリング結果および該アロケーション結果を参照し、参照された該スケジューリング結果および該アロケーション結果を元にデータパスと前記信号伝播保証回路とそれらを制御するコントローラを生成して該記憶手段に格納するデータパス・コントローラ生成工程とを更に有する請求項16に記載の動作合成方法。
  30. 請求項1〜15のいずれかに記載の動作合成装置を用いて動作合成した回路情報に基づいてレジストパターンを設計し、この設計情報によりパターニングしたレジストパターンを用いて半導体集積回路を製造する半導体集積回路の製造方法。
  31. 請求項16〜29のいずれかに記載の動作合成方法の各工程をコンピュータに実行させるための処理手順が記述された動作合成プログラム。
  32. 請求項31に記載の動作合成プログラムが格納されたコンピュータ読み取り可能な可読記憶媒体。
JP2007077907A 2007-03-23 2007-03-23 動作合成装置、動作合成方法、半導体集積回路の製造方法、動作合成プログラムおよび可読記憶媒体 Expired - Fee Related JP5057509B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007077907A JP5057509B2 (ja) 2007-03-23 2007-03-23 動作合成装置、動作合成方法、半導体集積回路の製造方法、動作合成プログラムおよび可読記憶媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007077907A JP5057509B2 (ja) 2007-03-23 2007-03-23 動作合成装置、動作合成方法、半導体集積回路の製造方法、動作合成プログラムおよび可読記憶媒体

Publications (2)

Publication Number Publication Date
JP2008242527A JP2008242527A (ja) 2008-10-09
JP5057509B2 true JP5057509B2 (ja) 2012-10-24

Family

ID=39913846

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007077907A Expired - Fee Related JP5057509B2 (ja) 2007-03-23 2007-03-23 動作合成装置、動作合成方法、半導体集積回路の製造方法、動作合成プログラムおよび可読記憶媒体

Country Status (1)

Country Link
JP (1) JP5057509B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5451318B2 (ja) 2009-10-29 2014-03-26 ラピスセミコンダクタ株式会社 伝送装置、信号送信装置、信号受信装置及び伝送方法、信号送信方法、信号受信方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11120212A (ja) * 1997-10-09 1999-04-30 Oki Electric Ind Co Ltd 回路設計方法及び装置並びにそのプログラムを記録した記録媒体
JP3716967B2 (ja) * 1999-07-29 2005-11-16 シャープ株式会社 高位合成装置および高位合成方法並びにそれに用いられる記録媒体
JP2004265435A (ja) * 2004-04-12 2004-09-24 Matsushita Electric Ind Co Ltd 半導体集積回路装置の設計方法

Also Published As

Publication number Publication date
JP2008242527A (ja) 2008-10-09

Similar Documents

Publication Publication Date Title
JP4007483B2 (ja) 高位合成装置および高位合成方法
EP1267287B1 (en) High-level synthesis apparatus and method, method for producing logic circuit using the high-level synthesis method, and recording medium
US8181130B1 (en) Method for jitter reduction by shifting current consumption
US20090271747A1 (en) Logic circuit designing device, logic circuit designing method and logic circuit designing program for asynchronous logic circuit
Liang et al. Hi-ClockFlow: Multi-clock dataflow automation and throughput optimization in high-level synthesis
JP5057509B2 (ja) 動作合成装置、動作合成方法、半導体集積回路の製造方法、動作合成プログラムおよび可読記憶媒体
JP2008204177A (ja) 遅延調整回路を有するアレイ型プロセッサ
CN112906338A (zh) 对物理分区结构进行时钟设计的方法、系统、介质和程序
US7676685B2 (en) Method for improving the data transfer in semi synchronous clock domains integrated circuits at any possible m/n clock ratio
JP2006154996A (ja) 半導体集積回路の設計方法、半導体集積回路および半導体集積回路の設計プログラム
US6505340B2 (en) Circuit synthesis method
JP3716967B2 (ja) 高位合成装置および高位合成方法並びにそれに用いられる記録媒体
US6532584B1 (en) Circuit synthesis method
JPH10133768A (ja) クロックシステム、半導体装置、半導体装置のテスト方法、及びcad装置
EP3173895A1 (en) Clock tree implementation method, system-on-chip and computer storage medium
Saito et al. Scheduling methods for asynchronous circuits with bundled-data implementations based on the approximation of start times
Carloni et al. A framework for modeling the distributed deployment of synchronous designs
JP4743427B2 (ja) 回路動作検証方法
JP2000057180A (ja) 高位合成装置、高位合成方法および高位合成プログラムを記録した媒体
JP6761182B2 (ja) 情報処理装置、情報処理方法及びプログラム
Saito et al. Ilp-based scheduling for asynchronous circuits in bundled-data implementation
JP4817688B2 (ja) 半導体集積回路装置
Konishi et al. A control circuit synthesis method for asynchronous circuits in bundled-data implementation
JP6317603B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
Bag Zeki Energy-Aware Coarse Grained Reconfigurable Architectures Using Dynamically Reconfigurable Isolation Cells

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110912

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120410

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120423

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: 20120727

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120727

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

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