(57)【要約】【課題】verilog言語を用いた新しい回路設計方法により、設計の容易化と、信頼性の向上を図る。【解決手段】先ず、仕様条件設定（Ｓ１０）では、回路に対する入力条件１１と出力条件１２を規定する。入力条件１１と出力条件１２は、回路の動作条件を全て管理するステップというカウンタ値を用いる真理値表１０にて示す。次に、仕様回路設計（Ｓ１１）では、仕様条件で定義された真理値表（入出力条件）をそのままverilog言語で記述する。このverilog記述２０では、例えば、Module宣言と入出力ピン宣言部２１、入出力定義部２２、内部レジスタ宣言部２３、及び、回路動作記述部２４の内容が記述される。つまり、真理値表作成からそのまま回路記述にするための設計フォーマットを用いている。その後、verilog言語で記述された入出力条件に沿って動作確認（Ｓ１２）を行い、一通りの動作確認を行うと、回路完成（Ｓ１３）となる。【選択図】図１
2008129916.tif 000002
【特許請求の範囲】
【請求項１】
回路の動作条件を全て管理するカウンタ値を用いる真理値表で検討された動作条件、及びタイムチャート条件が、verilog言語を用いて回路動作記述部分に記述され、
前記記述内容に沿って動作確認を行って回路を完成することを特徴とする回路設計方法。
【請求項２】
前記回路の完成後に、デバック処理を行うことを特徴とする請求項１記載の回路設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計におけるハードウェア記述言語（Hardware Discription Language、以下「ＨＤＬ」という。）の１つであるverilog言語を使った新しい手法による回路設計方法、特に新手法のverilog記述手法に関するものである。
【背景技術】
【０００２】
従来、ＨＤＬを用いた論理回路の設計方法に関する技術としては、例えば、次のような文献等に記載されるものが知られている。
【０００３】
【特許文献１】特開２００２−１１７０８９号公報
【０００４】
一般的に従来の回路設計は、論理集積回路（以下「論理ＩＣ」という。）を用いた回路設計を基本としており、verilog言語が採用されるようになった後の回路設計スタイルもほぼ同様の手法が用いられてきた。従来の設計方法と、verilog言語が用いられるようになってからの設計方法は、変わらない。
【０００５】
図５は、特許文献１等に記載された従来の回路設計方法を示すフローチャートである。
従来の回路設計方法では、例えば、次の（１）〜（５）のような処理を行う。
【０００６】
（１）  仕様条件設定（ステップＳ１）
仕様条件設定では、回路に対する入力条件と出力条件を規定する。内部構造に関してはここでは定義されない。通常は真理値表等を用いて表す。
【０００７】
（２）  機能ブロック分け検討（ステップＳ２）
機能ブロック分け検討では、仕様条件で入力条件が決まると、それを動作させるために効率的な機能分けがされる。例えば、カウンタ部、レジスタ部、条件判定部といった大まかな機能分けがされて細分化される。
【０００８】
（３）  機能毎における詳細回路検討、タイムチャート作成（ステップＳ３−１〜Ｓ３−３）
機能分けされた各機能毎に、更に具体回路化するために作業としてタイムチャート作成、これに合わせた論理回路の検討、設計、及び動作確認（シミュレーション）をそれぞれ行う。
【０００９】
（４）  結合動作確認（ステップＳ４）
機能毎に動作確認された回路を全て統合し、回路全体として動作確認（シミュレーション）を行う。
【００１０】
（５）  完成（ステップＳ５）
一通りの動作確認を行うと回路完成となり、この後は実機上での動作確認等といったデバックに入る。
【００１１】
このような回路設計方法において、仕様条件から機能ブロックへの落とし込みは（ステップＳ１〜Ｓ３−１，Ｓ３−２，Ｓ３−３）、今までの論理ＩＣ（例えば、ＬＳ０４、ＨＣ＊＊）を使用した回路設計方法と全く変わりがない。この回路設計例を図６〜図８に示す。
【００１２】
図６〜図８は、図５において機能ブロックから論理回路、及びタイムチャートの設計例を示す図であり、その内、図６は、図５の機能ブロックを示す回路図、図７は図６中のライトタイミング生成部の具体的な回路を示す図、及び、図８は、図７のタイムチャートを示す図である。
【００１３】
図５の機能ブロック分け検討（ステップＳ２）において、図６に示すように、例えば、アドレス、データラッチ部１、ライトタイミング生成部２、リードタイミング生成部３、及びブロック選択部４といった大まかな機能分けをする。
【００１４】
次に、図５の機能毎における詳細回路検討（ステップＳ３−１〜Ｓ３−３）において、図７に示すように、例えば、ライトタイミング生成部２を具体回路化するための検討を行う。
【００１５】
ライトタイミング生成部２は、例えば、フリップフロップ回路（以下「ＦＦ」という。）５−１〜５−５、及びライトカウンタ６により構成する。この構成において、クロックclkで動作するＦＦ５−１，５−２，５−３によってアドレスＡＤ１、データＤＡ１、及びライトパルスＷＰ１を取り込み、この取り込んだライトパルスＷＰ１から、ライトカウンタ６によって所定のパルス幅のライトパルスＷＰ２を生成する。そして、ライトパルスＷＰ２で動作するＦＦ５−４，５−５によってＦＦ５−１，５−２の出力信号をラッチし、ライトパルスＷＰ２に同期したアドレスＡＤ２、及びデータＤＡ２をＦＦ５−４，５−５から出力するような具体的な回路を検討し、図８に示すようなタイムチャートを作成している。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
しかしながら、従来の回路設計方法では、設計の手間、ドキュメント（文書）量等、非常に複雑なフロー（処理手順）と緻密な計算を必要とする、という課題があった。この課題を以下詳細に説明する。
【００１７】
昨今のＦＰＧＡ（Field Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）等におけるハードウェア量は、一昔前の論理ＩＣを用いていた回路量をはるかに超え、１００万ゲート、２００万ゲート等といった超大規模集積回路（ＶＬＳＩ）を設計しなければならない時代となった。これに伴い回路の開発期間、工数、ドキュメント量等も比例して大幅に増えてきており、更に回路の視覚的な表現（ＡＮＤ、ＯＲ等）からverilog言語（テキスト）に表現が変わったことで、その複雑化がいっそう増し、設計した後の回路はドキュメントと機能図等といった２次媒体的なドキュメントが必要となり、再設計、回路修正といった再度資源を再利用するといった場合においても、その担当者の設計スキル（経験）と、ドキュメントの内容、解読までの時間を大きく必要としていた。場合によっては回路（ソース）だけを修正し、ドキュメントの改版忘れといったヒューマンエラー（人的ミス）的な要素も含まれていた。又、回路結合段階まで行った時点で仕様に変更が加わると、再度フローを見直し、ドキュメントの改版といった手間が発生していた。
【００１８】
つまり、従来の回路設計方法では、手間と時間がかかる割には、回路自体の品質を保つための手段が無いため、バグ（bug）が多く含まれる原因となっていた。
【課題を解決するための手段】
【００１９】
本発明の回路設計方法では、回路の動作条件を全て管理するカウンタ値を用いる真理値表で検討された動作条件、及びタイムチャート条件が、verilog言語を用いて回路動作記述部分に記述され、前記記述内容に沿って動作確認を行って回路を完成するようにしている。
【発明の効果】
【００２０】
本発明の回路設計方法によれば、回路動作条件と回路動作記述とが等しくなるので、具体回路を検討しなくても良く、大幅な設計期間の短縮が図れる、仕様変更に伴う回路修正期間を大幅に短縮できる、ドキュメント量が大幅に減る、回路の解読期間が大幅に短縮化されて設計資産が有効利用し易くなる、といった効果がある。更に、仕様条件から回路完成までの処理を大幅に削減できる。
【発明を実施するための最良の形態】
【００２１】
本発明の回路設計方法は、従来の回路設計手法からverilogへの回路移行に伴い、真理値表作成からそのまま回路記述にするための設計フォーマットを用いている。
【実施例１】
【００２２】
（実施例１の回路設計方法）
図１は、本発明の実施例１を示す回路設計方法のフローチャートである。
本実施例１の回路設計方法では、例えば、次の（１）〜（３）のような処理を行う。
【００２３】
（１）  仕様条件設定（ステップＳ１０）
仕様条件設定では、回路に対する入力条件１１と出力条件１２を規定する。内部構造に関してはここでは定義されない。入力条件１１と出力条件１２は、回路の動作条件を全て管理するステップ（step）というカウンタ値を用いる真理値表１０にて示す。
【００２４】
（２）  仕様回路設計、動作確認（ステップＳ１１，Ｓ１２）
仕様回路設計では、仕様条件で定義された真理値表１０（入出力条件１１，１２）をそのままverilog言語で記述する（ステップＳ１１）。このverilog記述２０は、例えば、コンピュータにより自動的に行うことも可能である。verilog記述２０では、例えば、モジュール（Module）宣言と入出力ピン宣言部２１、入出力定義部２２、内部レジスタ宣言部２３、及び、回路動作記述部２４の内容が記述される。そして、verilog言語で記述された入出力条件２４ａ，２４ｂに沿って、シミュレータ等で動作確認を行い、不具合があれば（ＮＧ）、真理値表の内容を修正する。
【００２５】
（３）  完成（ステップＳ１３）
一通りの動作確認を行い、不具合がなければ（ＯＫ）、回路完成となる。その後は、実機上での動作確認等といったデバック処理を行う。
【００２６】
（verilogの記述例）
新手法におけるverilogの記述例を、図２を参照しつつ説明する。
図２は、図１の新手法における仕様条件の真理値表１０の例を示す図である。
本実施例１の真理値表１０では、回路に対するライト（write）とリード（read）の入出力条件１１，１２が記載されている。step０がライトとリードの通常状態、step１０〜１２がライト状態、step２０〜２１がリード状態である。入出力動作は、論理０（“Ｌ”レベル）でアクティブ状態（即ち、リセット（Rst）、ライト(write)、リード(read)、及び、応答（Ack）は論理０でアクティブ状態）になり、又、クロック（Clk）の立ち上がり時に、アクティブ状態になる。
【００２７】
本実施例１の真理値表１０が従来の真理値表と異なる点は、stepというカウンタ値を用いて回路の動作条件を全て管理し、なお且つ、この例ではライト時、及びリード時の詳細の動作をも同一のカウンタ値で管理している点である。stepが０の時は入力条件を待っており、例ではライトパルス、リードパルスが入ってくるのを待っているが、それの条件が入力されると、回路的なタイムチャートを描くような真理値表１０が記載されていることが特徴である。
【００２８】
例えば、本実施例１の真理値表１０において、入力条件１１のstepがなんでもよく（＊）、入力のRstが０の時には→回路の出力条件１２がリセットされて初期状態になる。
入力条件１１のstepが０の時に、入力のライトパルスが０になると→出力条件１２のstepが１０になり、アドレスとデータが出力され、ライトパルスが０になってライト１状態になり→入力条件１１に戻ってstepが１０になり、Clkの立ち上がりにより→出力条件１２のstepが＋１加算されてライト２状態になり→入力条件１１に戻ってstepが１１になり、Clkの立ち上がりにより→出力条件１２のstepが＋１加算されてライト３状態になり→入力条件１１に戻ってstepが１２になり、Clkの立ち上がりにより→出力条件１２のstepが０になり、ライトパルスが１になってライト動作が終了する。
【００２９】
入力条件１１のstepが０の時に、入力のリードパルスが０になると→出力条件１２のstepが２０になり、アドレスが出力され、リードパルスが０になってリード１状態になり→入力条件１１に戻ってstepが２０になり、Clkの立ち上がりにより→出力条件１２のstepが＋１加算されてリード２状態になり→入力条件１１に戻ってstepが２１になり、Clkの立ち上がりにより→出力条件１２のstepが＋１加算され、リードパルスが１になってリード動作が終了する。
【００３０】
（verilog言語を用いた回路化例）
図２の真理値表１０を元に、verilog言語を用いて回路化した例を図３に示す。
図３は、図２のverilog記述方法を示す図である。この図３のverilog記述２０において、Module宣言と入出力ピン宣言部２１、入出力定義部２２、及び内部レジスタ宣言部２３は、従来のverilog記述と同様の方式で書かれている。
【００３１】
ここで、Module（入出力端子リスト）宣言と入出力ピン宣言部２１において、clkはクロック、rstはリセット、adr,N_adrはアドレス、data,N_dataはデータ、write,N_wrはライト、read,N_rdはリード、ackは応答である。入出力定義部２２において、Input（入力）は８ビット（＝［７：０］）、Output（出力）は８ビット（＝［７：０］）である。内部レジスタ宣言部２３において、Reg（レジスタ）は、８ビット（＝［７：０］）である。
【００３２】
特徴となるのは回路動作記述部２４である。しかしこれにおいても従来のAlways文宣言の中にCase文が定義された一般的な記述方法である。
【００３３】
ここで、Always＠（イベント式）は、イベント式にあるイベント（clkの立ち上がり、又はrstの０）が発生する度に実行されるブロックである。if（条件式）else・・・は、条件判断文であり、例えば、最初（begin）に、N_adrに０を代入（＜＝）し、・・・、stepに０を代入して終了（End）する。他の条件（Else if）としては、step，write，read，ackがあり、アイドル（//idle）、ライト（//write））、及びリード（//read）の場合の左欄（[8'h00][2'b11],[1'bx]・・・）は入力条件２４ａ、右欄（begin  step＜＝０；end・・・）は出力条件２４ｂである。
【００３４】
ところが、本実施例１では、その記述法則が図２で定義された真理値表１０そのものと同様の書き方になっている点が新しい点である。つまり、今までのような具体的な回路を検討し、それを従来の回路様式で記述するのではなく、真理値表１０で検討した動作条件、及びタイムチャート条件がそのまま記述されていることである。
【００３５】
（実施例１の効果）
本実施例１の手法により、以下の（ａ）〜（ｅ）のような効果が期待できる。
【００３６】
（ａ）  仕様条件＝回路記述と同様となることで、具体回路を検討しなくても良く、大幅な設計期間の短縮が図れる。
【００３７】
（ｂ）  仕様条件＝回路記述と同様となることで、仕様変更に伴う回路修正期間を大幅に短縮できる。
【００３８】
（ｃ）  仕様条件＝回路記述と同様になることで、ドキュメント量が大幅に減る。
【００３９】
（ｄ）  仕様条件＝回路記述と同様になることで、回路の解読期間が大幅に短縮化され、設計資産が有効利用し易くなる。
【００４０】
（ｅ）  仕様条件から回路完成までのフローを大幅に削減できる。
【実施例２】
【００４１】
実施例１の回路設計方法は、種々の回路の設計に適用でき、この好適な適用例を図４（ａ）、（ｂ）に示す。
【００４２】
図４（ａ）、（ｂ）は、本発明の実施例２における図１のフォーマットの分類を示すフローチャートであり、同図（ａ）は、パラレルステート形の回路設計例を示すフローチャート、及び、同図（ｂ）は、シリアルステート形の回路設計例を示すフローチャートである。
【００４３】
実施例１の回路設計方法は、図４（ａ）、（ｂ）のようなフォーマットを規定することで、回路としての資産活用としての活用が大幅に向上する。
【００４４】
図４（ａ）のパラレルステート形は、実施例１に示したような回路に向いたフォーマットである。最初の入力条件だけで、分岐条件の集まり（ステップＳ２０）を介して、それぞれの動作Ａ，Ｂ，Ｃ（ステップＳ２１〜Ｓ２３）が規定されているような回路等である。このようなパラレルステート形の回路設計では、単純に入力条件だけで処理（ステップＳ２１〜Ｓ２３）が決まってしまい、この処理（ステップＳ２１〜Ｓ２３）を行った後は最初の状態（ステップＳ２０）に戻るといった比較的単純動作回路に向く。
【００４５】
これに対し、図４（ｂ）のシリアルステート形は、最初の入力条件の入力データを、入力条件１及び動作Ａ（ステップＳ３０，Ｓ３１）、入力条件２及び動作Ｂ（ステップＳ３２，Ｓ３３）、及び、入力条件３及び動作Ｃ（ステップＳ３４，Ｓ３５）というように、次々に加工していく場合のフローである。
【００４６】
このシリアルステート形は、例えば、パケットのような伝送データが入力された場合、レイヤ毎に処理を定義したい場合（ステップＳ３０〜Ｓ３５）の例である。最初はレイヤ２の処理（ステップＳ３０，Ｓ３１）、レイヤ３の処理（ステップＳ３２，Ｓ３３）、及び、レイヤ４の処理（ステップＳ３４，Ｓ３５）といった前段の回路の条件によって次々に処理を行っていくような例である。途中で条件が外れると（例えば、ステップＳ３３）、最初の初期値（ステップＳ３０）に戻るといった動作を規定する等、自由度が高い。場合によっては別の条件分岐を追加し、複雑な回路処理を一連の処理がAlways文１つで全て定義できることから、設計者は仕様を定義するような回路設計が可能となる。
【００４７】
このようにフォーマットを分別することで、回路資産としての再利用がし易くなるという効果がある。
【００４８】
なお、本発明は、図示の実施例に限定されず、例えば、図２の真理値表１０の内容、及び図３のverilog記述２０の内容は、設計対象となる回路に応じて種々の変更が可能である。
【図面の簡単な説明】
【００４９】
【図１】本発明の実施例１を示す回路設計方法のフローチャートである。
【図２】図１の新手法における仕様条件の真理値表の例を示す図である。
【図３】図２のverilog記述方法を示す図である。
【図４】本発明の実施例２における図１のフォーマットの分類を示すフローチャートである。
【図５】従来の回路設計方法を示すフローチャートである。
【図６】図５の機能ブロックを示す回路図である。
【図７】図６中のライトタイミング生成部の具体的な回路を示す図である。
【図８】図７のタイムチャートを示す図である。
【符号の説明】
【００５０】
１０      真理値表
１１      入力条件
１２      出力条件
２０      verilog記述
２１      Module宣言と入出力ピン宣言
２２      入出力定義部
２３      内部レジスタ宣言部
２４      回路動作記述部
Ｓ１０      仕様条件設定
Ｓ１１      仕様回路設計
Ｓ１２      動作確認
Ｓ１３      完成
【図１】
2008129916.tif 000003
【図２】
2008129916.tif 000004
【図３】
2008129916.tif 000005
【図４】
2008129916.tif 000006
【図５】
2008129916.tif 000007
【図６】
2008129916.tif 000008
【図７】
2008129916.tif 000009
【図８】
2008129916.tif 000010