JP5014920B2 - 回路設計方法、ならびにその方法により製造される集積回路 - Google Patents

回路設計方法、ならびにその方法により製造される集積回路 Download PDF

Info

Publication number
JP5014920B2
JP5014920B2 JP2007212832A JP2007212832A JP5014920B2 JP 5014920 B2 JP5014920 B2 JP 5014920B2 JP 2007212832 A JP2007212832 A JP 2007212832A JP 2007212832 A JP2007212832 A JP 2007212832A JP 5014920 B2 JP5014920 B2 JP 5014920B2
Authority
JP
Japan
Prior art keywords
circuit
rtl
bit length
program
overflow
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
JP2007212832A
Other languages
English (en)
Other versions
JP2009048367A (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.)
Lapis Semiconductor Co Ltd
Original Assignee
Lapis Semiconductor Co Ltd
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 Lapis Semiconductor Co Ltd filed Critical Lapis Semiconductor Co Ltd
Priority to JP2007212832A priority Critical patent/JP5014920B2/ja
Priority to US12/189,408 priority patent/US20090049417A1/en
Publication of JP2009048367A publication Critical patent/JP2009048367A/ja
Application granted granted Critical
Publication of JP5014920B2 publication Critical patent/JP5014920B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Description

本発明は、デジタル信号処理に用いられる演算器の回路設計方法、ならびにその方法により製造される集積回路に関するものである。
従来から、回路設計方法では、ハードウエア記述言語(HDL:Hardware Description Language)により回路を記述する際に、所定の機能を実現するソフトウエアプログラムに基づいてレジスタ転送レベル(RTL:Register transfer level)で回路を記述する動作合成ツールが用いられている。たとえば動作合成ツールは、PC上で動作するMPEGなどの動画像の圧縮技術を示すプログラムに対して動作合成を実行し、短期間にRTL記述を生成することができる。
動画像圧縮などのデジタル信号処理をソフトウエアプログラムで行う場合、このような動作合成ツールは、8ビット、16ビット、32ビットまたは64ビットなどのバイト単位のデータを取り扱うこととなるが、実際に必要なビット数とは異なるビット数のデータを取り扱うことがある。したがって、このソフトウエアプログラムをそのまま動作合成すると、必要以上に大きなビット幅の演算器が多数生成されることになり、回路規模が大きくなってしまう。
このため、従来の回路設計方法では、個々の演算の入力データレンジをあらかじめ調べて、最小限必要なビットを指定して動作合成を実行していた。
たとえば、従来の回路設計フローでは、まず、所望の回路設計を示すソフトウエアプログラムに基づいて、各演算器のビット長を決定し、さらにそのソフトウエアプログラムおよび決定したビット長に基づいて動作合成を行い、RTL記述回路を生成する。つぎに、生成したRTL記述回路の動作検証を行い、この動作解析結果に基づいて各演算器のビット長を最適化し、再度、ソフトウエアプログラムおよび最適化したビット長に基づいて動作合成を行うことにより、最適化されたRTL記述回路を生成することができる。
また、特許文献1に記載の論理合成用記述変換方法は、HDLによる機能的かつ論理的なレベルでの記述設計に関して、熟練した技術者でなくても容易に高品質な大規模集積回路(LSI:Large Scale Integration)を設計することを課題とするもので、定数と変数との乗算にて記載された部分を加算とシフト演算とで表された記述に置き換え、また、代入文解析部にて、代入文の左辺と右辺とのビット幅を比較し、異なる場合には小さい方のビット幅を広げ、広げた部分に0を代入している。
特開平6-301741号
しかしながら、従来の回路設計方法では、ソフトウエアプログラムをそのまま動作合成しても、冗長な回路が生成されて、回路規模および消費電力を増大させることとなる。このような設計方法により製造される回路の商品化を考慮する場合、回路最小化および低消費電力化を図る必要があり、たとえば演算器入力のデータレンジに応じて演算器出力のビット長を最適に指定して高速動作を図ることがある。
動画像圧縮などのデジタル信号処理では、非常に多くの演算を使用するので、従来の回路設計方法では、すべての演算に対して出力ビット長の調査および最適なビット長の指定をするときに非常に時間がかかる。また、デジタル信号処理のアルゴリズムを熟知していないと誤ったビット長を指定してしまうこともある。さらに、このように非常に多くの演算を使用する回路の検証を行うには膨大な暗間が必要とされる。また、特定の演算がオーバーフローしてしまった場合、その箇所を特定することは困難である。
ここで、オーバーフローとは、数値演算を行なった結果が、扱える数値の最大値を超えること、たとえば桁あふれを意味する。
したがって、従来の回路設計方法では、動作合成ツールを用いることにより短期間で設計を行えるという有利な効果が軽減されてしまう。
本発明は、このような従来技術の欠点を解消し、必要最小限の回路を、各演算器をオーバーフローさせないで設計し、またその回路の動作検証を効率的に行うことができる回路設計方法、ならびにその方法により製造される集積回路を提供することを目的とする。
本発明は上述の課題を解決するために、デジタル信号処理に用いられる演算器の回路設計方法は、所望のデジタル信号処理を示すプログラムを作成するプログラム作成工程と、このプログラムにおける各演算のうち、演算結果のオーバーフロー判定を所望する対象演算に対してディレクティブを付加するディレクティブ付加工程と、各演算の出力ビット長を決定するビット長決定工程と、このプログラムおよびこの出力ビット長に基づいて動作合成を行い、この所望のデジタル信号処理を実現する回路をRTLで記述し、このディレクティブが付加された演算に対してその出力ビット長に関する情報を検出する検出回路を付加して、RTL記述回路を生成するRTL生成工程と、このRTL記述回路の動作検証を行い、その動作検証結果としてこの検出回路の検出結果を得る動作検証工程とを含み、さらに、この方法は、この動作検証工程の後で、この動作検証結果によってこのRTL記述回路を最適化すべきと判断した場合には、再度、このビット長決定工程およびこのRTL生成工程を実行し、とくに、このビット長決定工程は、このRTL生成工程がこのプログラムに関して初めてこのRTL記述回路を生成する場合には、あらかじめ設定された初期値をこの出力ビット長として決定し、2回目以降にこのRTL記述回路を生成する場合には、前回生成したRTL記述回路に関するこの検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする。
また、所望のデジタル信号処理を示すプログラムに基づいてRTL記述回路を生成する回路設計フローによって設計されて、このRTL記述回路を用いて製造される集積回路は、この回路設計フローにおいて、このプログラムにおける各演算のうち、演算結果のオーバーフロー判定を所望する対象演算に対してディレクティブを付加したこのプログラムを使用し、少なくともこのプログラムに基づいて動作合成を行ってこの所望のデジタル信号処理を実現する回路をRTLで記述する際に、このディレクティブが付加された対象演算に対してその出力ビット長に関する情報を検出する検出回路を付加してこのRTL記述回路を生成し、このRTL記述回路を動作検証してその動作検証結果としてこの検出回路の検出結果を得て、この動作検証結果によってこのRTL記述回路を最適化すべきと判断した場合に、この検出結果に基づいて対象演算の出力ビット長を最適化して再度、このRTL記述回路を生成して、各演算の出力ビット長が最適化されるまでこのRTL記述回路の生成を繰り返して最適化されたRTL記述回路を得て、この最適化されたRTL記述回路を用いて製造されることを特徴とする。
さらに、所望のデジタル信号処理を示すプログラムに基づいて動作合成を行ってRTL記述回路を生成する動作合成ツールは、このプログラムにおける各演算のうち、演算結果のオーバーフロー判定を所望する対象演算に対してディレクティブが付加されたこのプログラムを入力し、各演算の出力ビット長を決定するビット長決定手段と、このプログラムおよびこの出力ビット長に基づいて、この所望のデジタル信号処理を実現する回路をRTLで記述し、このディレクティブが付加された対象演算に対して、その出力ビット長に関する情報を検出する検出回路を付加して、このRTL記述回路を生成するRTL生成手段とを含み、さらに、このツールは、このRTL記述回路の動作検証結果を得ると、この動作検証結果によってこのRTL記述回路を最適化すべきと判断した場合には、再度、このビット長決定手段およびこのRTL生成手段を実行し、とくに、このビット長決定手段は、このRTL生成手段がこのプログラムに関して初めてこのRTL記述回路を生成する場合には、あらかじめ設定された初期値をこの出力ビット長として決定し、2回目以降にこのRTL記述回路を生成する場合には、前回生成したRTL記述回路におけるこの検出回路による検出結果をこの動作検証結果として得て、この検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする。
本発明の回路設計方法によれば、所望のデジタル信号処理を示すプログラムを作成する際に、その信号処理の各演算のうちで、オーバーフロー判定が必要な対象演算に対してディレクティブを付加してプログラミングし、このプログラムに基づいてRTL記述回路を生成する際に、ディレクティブが付加された演算に対してオーバーフロー検出回路を付加し、またこのように生成されたRTL記述回路を動作検証してオーバーフロー検出回路の検出結果を得るので、容易にオーバーフローの発生箇所を特定することすることができ、また、オーバーフローの発生の有無を調べることによって、各演算の出力ビット幅が十分であるかを知ることができる。
また、本発明の回路設計方法では、動作検証結果に基づいて再度、RTL記述回路を生成する際に、オーバーフロー検出結果に基づいて対象演算の出力ビット長を最適化することにより、必要最小限の回路を、各演算器をオーバーフローさせないで設計し、またその回路の動作検証を効率的に行うことができる。
さらに、本発明の回路設計方法では、FPGAなどのプログラマブル論理回路にRTL記述回路を書き込んで高速に動作検証することができるので、各演算に必要なデータ幅を知るための検証を効率的に行うことができ、また大量のデータを検証に用いることができる。
また、本発明の回路設計方法では、各演算がオーバーフローしない動作検証結果が得られれば、オーパーフローの検出回路の付加を指示するディレクティブをプログラムから外してRTL記述回路を生成することにより、オーバーフロー検出回路を余分に付加することなく、このRTL記述回路に基づいて集積回路を製造することができる。
次に添付図面を参照して、本発明による回路設計方法の実施例を詳細に説明する。たとえば、本方法によれば、図2に示すように、所望の機能を実現するソフトウエアプログラム12に基づいて、動作合成ツール14がその所望の機能を実現する回路をRTLで記述して、このRTL回路をシミュレーション部16が動作検証し、さらに動作合成ツール14が、その検証結果に基づいて各演算器におけるビット幅を最適化してRTL回路を再度生成する。本発明ではとくに、動作合成ツール14がオーバーフロー検出回路を付加してRTL回路を生成し、シミュレーション部16の動作検証結果としてオーバーフロー情報を得て、動作合成ツール14がこのオーバーフロー情報に基づいて各演算器におけるビット幅を最適化する。なお、本発明の理解に直接関係のない部分は、図示を省略し、冗長な説明を避ける。
このソフトウエアプログラム12は、所定のデジタル信号処理を示すプログラムで、たとえば、PC上で動作するMPEGなどの動画像の圧縮技術に関するプログラムがある。このプログラム12は、たとえば、設計者によりPC上で生成されて、ハードディスクやメモリなどの記憶媒体に記憶され、または取り外し可能な他の記録媒体に記録されてよい。
このプログラム12は、デジタル信号処理に関する多数の演算を含むもので、本発明ではとくに、オーバーフローを判定すべき演算についてディレクティブが付加されて形成される。たとえば、図3に示すように、プログラム12は、オーバーフローを判定すべき演算20について、ディレクティブ22として“// alu_plus_ovf_range n”が記述される。また、プログラム12は、図3では加算のみが記述されているが、これに限定されず、さまざまな種類の演算を含んでよい。
動作合成ツール14は、回路設計を所望するソフトウエアプログラム12に基づいて、RTLでその回路を記述するもので、プログラム12が示すデジタル信号処理に対して動作合成を実行し、RTL回路120を生成する。動作合成ツール14は、たとえばPC上で動作するアプリケーションなどのソフトウエアでよく、生成したRTL記述回路120をPC上の記憶媒体や取り外し可能な他の記録媒体に記録してよい。
この動作合成ツール14は、たとえば、図3に示すようなプログラム12に基づいて、図4に示すようなRTL回路120を生成する。本発明ではとくに、動作合成ツール14は、プログラム12においてディレクティブ22が付加された対象演算20に対して、オーバーフロー検出回路38を付加してRTL回路120を生成する。また、動作合成ツール14は、オーバーフロー検出回路38の検出結果であるオーバーフロー情報140を格納するステータスレジスタ40を付加してRTL回路120を生成してよい。
このようなディレクティブ22に応じたオーバーフロー検出回路38は、対象演算器34の出力データレジスタ36の値に基づいてオーバーフロー発生の有無を検出し、そのオーバーフローの有無を示すオーバーフロー情報140をステータスレジスタ40に格納する。オーバーフロー検出回路38は、たとえば、オーバーフロー範囲138として上位nビットが設定されていれば、出力データレジスタ36の上位nビットを判定してオーバーフローを検出する。
また、ディレクティブ22に応じたステータスレジスタ40は、オーバーフロー検出回路38によるオーバーフロー情報140を保持するもので、対象演算器34を識別する識別番号をも保持する。
また、動作合成ツール14は、シミュレーション部16による動作検証結果122のうち、とくにオーバーフロー情報140に基づいて、対象演算20のビット幅を最適化する。動作合成ツール14は、シミュレーション部16による動作検証がまだされていない場合、すなわち、初回の動作合成の場合には、対象演算20のビット幅として、あらかじめ決められた初期値を設定してよい。
シミュレーション部16は、動作合成ツール14が生成したRTL回路120の動作検証を行うもので、たとえば、RTL記述回路120を検証する回路シミュレータなどのPC上で動作するソフトウエアでよく、動作検証結果をPC上の記憶媒体や取り外し可能な他の記録媒体に記録してよい。
本実施例のシミュレーション部16は、ディレクティブ22に応じて生成されたステータスレジスタ40におけるオーバーフロー情報140を用いて動作検証結果122を決定してよい。
次に、本実施例の回路設計方法において、オーバーフロー検出により演算器の出力ビット長を最適化する動作例を図1のフローチャートを参照しながら説明する。
本実施例では、まず、設計者などのユーザは、回路設計を所望するデジタル信号処理についてソフトウエアプログラム12を作成し(S102)、とくにオーバーフロー検出機能を付加する演算についてあらかじめディレクティブ22を付加しておく(S104)。
たとえば図3に示すように、オーバーフローを判定すべき演算、すなわち対象演算20が“C=A+B”で、その演算結果のオーバーフロー範囲138として上位nビットを指定する場合には、ディレクティブ22として“// alu_plus_ovf_range n”を対象演算20に付加して記述する。図3では、対象演算20に対する入力値AおよびBのビット長の初期値がそれぞれaおよびbであることを示し、出力値Cのビット長の初期値がcであることを示す。
次に、ユーザは、動作合成ツール14でこのソフトウエアプログラム12の動作合成を開始する。
動作合成ツール14では、まず、プログラム12中の各演算について、演算器出力のビット長の最適化が行われるが(S106)、ここでは初回の動作合成で動作検証結果122がないので、各演算器出力にはあらかじめ決められた初期値のビット長が設定される。
また、動作合成ツール14では、ソフトウエアプログラム12に基づいて動作合成を実行し(S108)、プログラム12中の各演算を演算器として、ステップS106で決められたビット長を用いてRTL回路120が生成される(S110)。
たとえば、図3に示すプログラム12に基づくRTL回路120は、図4に示すように、入力値AおよびBが格納される入力データレジスタ30および32、対象演算20の機能を有する演算器34、ならびに出力値Cが格納される出力データレジスタ36を含むように構成される。
とくに、プログラム12中からディレクティブ22を読み取った場合、そのディレクティブ22が付加された対象演算20に対してオーバーフロー検出回路38およびステータスレジスタ40が付加され、たとえば図4に示すように、この対象演算器34の演算結果を保持するレジスタ36に対してオーバーフロー検出回路38およびステータスレジスタ40が接続されてRTL回路120が生成される。
さらに、ユーザは、シミュレーション部16によって、動作合成ツール14で生成されたRTL回路120の動作検証を実行する(S112)。
この動作検証では、RTL回路120においてディレクティブ22に応じて生成されたオーバーフロー検出回路38は、対象演算器34の出力データレジスタ36の値のオーバーフローの有無を検出し、そのオーバーフローの有無を示すオーバーフロー情報140をステータスレジスタ40に格納する。
たとえば、オーバーフロー検出回路38では、オーバーフロー範囲138としてnが設定されていれば、出力データレジスタ36の上位nビットについてオーバーフローを判定する。ここでは、図5に示すように、レジスタ36の最上位ビットをMSBとし、その次のビットをMSB-1とし、また最下位ビットを0とする。
このとき、図6に示すように、レジスタ36の最上位ビットMSBの値が“0”であるとき、すなわちレジスタ36が正の値を示すとき、オーバーフロー検出回路38は、MSB-1ビットからMSB-n+1ビットの値に“1”が含まれている場合には、オーバーフローが発生したと判定し、それ以外の場合にはオーバーフローが発生しないと判定して、それらのオーバーフローの状態をオーバーフロー情報140としてステータスレジスタ40に格納する。
同様にして、レジスタ36の最上位ビットMSBの値が“1”であるとき、すなわち、レジスタ36が負の値を示すとき、オーバーフロー検出回路38は、MSB-1ビットからMSB-n+1ビットの値に“0”が含まれている場合には、オーバーフローが発生したと判定し、それ以外の場合にはオーバーフローが発生しないと判定して、それらのオーバーフローの状態をオーバーフロー情報140としてステータスレジスタ40に格納する。
このようにして、ユーザは、シミュレーション部16によるRTL回路120のオーバーフロー情報140などの動作検証結果122を作成して保有することができる(S114)。
次に、ユーザは、ステップS114で得た動作検証結果122のオーバーフロー情報140がオーバーフローしていることを示す場合、ステップS106に戻って、この検証結果122を用いて、再度、動作合成ツール14でソフトウエアプログラム12の動作合成を行うことができる。
ここで、動作合成ツール14では、各演算器出力のビット長の最適化が行われ(S106)、とくにオーバーフロー情報140に基づいて、オーバーフローしている演算器の出力ビット長を拡張することができる。
たとえば動作合成ツール14は、オーバーフロー情報140がオーバーフロー発生を示す場合、その対象演算器34の出力データレジスタ36のビット長を現在のビット長+1ビットに更新する。
このようにして、ユーザは、オーバーフローのない動作検証結果122を得るまでステップS106〜S114を繰り返すと、この回路設計フローを終了して、その時点で得られたRTL回路120がオーバーフローしない演算器で構成されることとなり、ユーザは最適化されたRTL回路120を得ることができる。さらにユーザは、ソフトウエアプログラム12におけるディレクティブ22を外すことにより、余分なオーバーフロー検出回路を付加することなく最終的な回路を生成することができる。
また、本実施例では、シミュレーション部16は、FPGA(Field Programmable Gate Array)などのプログラマブル論理回路による動作検証を行うものでもよく、この場合、ユーザは、動作合成ツール14で生成したRTL記述回路120をプログラマブル論理回路に書き込む。さらに、ユーザは、この論理回路をシミュレーション装置、たとえばシミュレーション部16を有するPCに接続し、ディレクティブ22に応じたステータスレジスタ40を、この装置のCPUと共通するデータバス、または外部から観測可能な接続線に接続して、ステータスレジスタ40におけるオーバーフロー情報140を取得し、動作合成ツール14におけるRTL回路120の再生成に用いることができる。
また、動作合成ツール14は、ディレクティブ22に応じたステータスレジスタ40から割り込み信号を出力するようにRTL回路120を生成することができ、このとき、ユーザは、このRTL記述回路120をプログラマブル論理回路に書き込んで、ステータスレジスタ40の出力をシミュレーション部16のCPUに接続することにより、ステータスレジスタ40におけるオーバーフロー情報140を取得することができる。
本実施例では、動作合成ツール14は、ディレクティブ22に応じたオーバーフロー検出回路38によるオーバーフロー情報140を用いて対象演算器34のビット幅を最適化しているが、ソフトウエアプログラム12においてディレクティブ22とは無関係に組み込まれたオーバーフロー検出回路、すなわち演算器の一部として記述されたオーバーフロー検出回路のオーバーフロー情報を用いて、その検出回路に対応する演算器のビット幅を最適化してもよい。
また、動作合成ツール14は、ステータスレジスタ40を生成する代わりに、ソフトウエアのデバッグ機能を用いてオーバーフロー情報を得てもよく、この場合、シミュレーションによる動作検証結果としてオーバーフロー情報を標準出力し、その出力を演算器ビット幅最適化に用いることができる。
また、本発明の回路設計方法では、動作合成ツール14がビット幅検出回路を付加してRTL回路を生成し、シミュレーション部16の動作検証結果としてビット幅情報を得て、動作合成ツール14がこのビット幅情報に基づいて各演算器におけるビット幅を最適化することができる。
この方法において、ソフトウエアプログラム12は、ビット幅を判定すべき演算についてディレクティブが付加されて形成される。たとえば、図8に示すように、プログラム12は、ビット幅を判定すべき演算20について、ディレクティブ202として“// alu_plus_detect_range”が記述される。また、プログラム12は、図8では加算のみが記述されているが、これに限定されず、さまざまな種類の演算を含んでよい。
また、動作合成ツール14は、たとえば、図8に示すようなプログラム12に基づいて、図9に示すようなRTL回路210を生成する。この動作合成ツール14は、プログラム12においてディレクティブ202が付加された対象演算20に対して、ビット幅検出回路212を付加してRTL回路210を生成する。また、動作合成ツール14は、ビット幅検出回路212の検出結果であるビット幅情報222を格納するステータスレジスタ214を付加してRTL回路210を生成してよい。
このようなディレクティブ202に応じたビット幅検出回路212は、対象演算器34の出力データレジスタ36の値に基づいて最大ビット幅を検出し、その検出結果であるビット幅情報222に基づいて、対応するステータスレジスタ214を更新する。
ディレクティブ202に応じたステータスレジスタ214は、対象演算器34の出力データレジスタ36のビット長を保持するもので、対象演算器34を識別する識別番号をも保持する。このステータスレジスタ214は、ビット幅検出回路212によるビット幅情報222に応じて値を更新し、たとえば、このビット幅情報222が、レジスタ214に現在保持されている値よりも大きい場合に、ビット幅情報222へと更新する。また、ステータスレジスタ214は、対象演算器34の出力データレジスタ36のビット長の初期値をあらかじめ保持してよい。
また、動作合成ツール14は、シミュレーション部16による動作検証結果122のうちビット幅情報224に基づいて、対象演算20のビット幅を最適化する。動作合成ツール14は、初回の動作合成の場合には、対象演算20のビット幅として、あらかじめ決められた初期値を設定してよい。
また、シミュレーション部16は、ディレクティブに応じて生成されたステータスレジスタ214におけるビット幅情報224を用いて動作検証結果122を決定してよい。
次に、本実施例の回路設計方法において、ビット幅検出により演算器の出力ビット長を最適化する動作例を図7のフローチャートを参照しながら説明する。
本実施例では、まず、ユーザは、上記実施例と同様にして、ステップS252でソフトウエアプログラム12を作成し、とくにビット幅検出機能を付加する演算についてあらかじめディレクティブを付加しておく(S254)。
たとえば図8に示すように、ビット幅を判定すべき演算、すなわち対象演算20が“C=A+B”である場合には、ディレクティブ202として“// alu_plus_detect_range”を対象演算20に付加して記述する。
次に、ユーザは、上記と同様にして、動作合成ツール14によるソフトウエアプログラム12の動作合成を開始し、ステップS256でプログラム12中の各演算器出力のビット長の最適化を行い、ここでは初回の動作合成であるので、各演算器出力には初期値のビット長が設定される。
また、動作合成ツール14では、ステップS258でソフトウエアプログラム12に基づいて動作合成を実行し、ステップS260でプログラム12中の各演算を演算器として、ステップS256で決められたビット長を用いてRTL回路210が生成される。
とくに、プログラム12中からディレクティブ202を読み取った場合、そのディレクティブ202が付加された対象演算20に対してビット幅検出回路212およびステータスレジスタ214が付加され、たとえば図9に示すように、この対象演算器34の演算結果を保持するレジスタに対してビット幅検出回路212およびステータスレジスタ214が接続されてRTL回路210が生成される。
さらに、ユーザは、上記と同様にして、ステップS262において、シミュレーション部16によって、動作合成ツール14で生成されたRTL回路210の動作検証を実行する。
この動作検証では、RTL回路210においてディレクティブ202に応じて生成されたビット幅検出回路212は、対象演算器34の出力データレジスタ214の値が変動する最大ビット幅を検出し、そのビット幅情報222に基づいてステータスレジスタ214を更新する。
たとえば、図10に示すように、レジスタ36の最上位ビットをMSBとし、その次のビットをMSB-1とし、また最下位ビットを0とする。このとき、ビット幅検出回路212では、出力データレジスタ36の使用ビット幅を判定し、図11に示すように、レジスタ36の最上位ビットMSBの値が“0”であるとき、すなわちレジスタ36が正の値を示すとき、ビット幅検出回路212は、MSB-1ビットから0ビットのうち、“1”を示す最上位ビットのビット番号を使用ビット幅として判定して、ビット幅情報222としてステータスレジスタ214に供給する。
同様にして、レジスタ36の最上位ビットMSBの値が“1”であるとき、すなわち、レジスタ36が負の値を示すとき、ビット幅検出回路212は、MSB-1ビットから0ビットのうち、“0”を示す最上位ビットのビット番号を使用ビット幅として判定して、ビット幅情報222としてステータスレジスタ214に供給する。
ステータスレジスタ214では、現在保持している値よりも、ビット幅検出回路3212から供給されたビット幅222が大きい場合に、このビット幅を新たに保持して更新する。
このようにして、ユーザは、シミュレーション部16によるRTL回路210のビット幅情報222などの動作検証結果122を作成して保有することができる(S264)。
次に、ユーザは、ステップS264で得た動作検証結果122について、ステータスレジスタ214のビット幅情報224が更新されている場合、ステップS256に戻って、この検証結果122を用いて、再度、動作合成ツール14でソフトウエアプログラム12の動作合成を行うことができる。
ここで、動作合成ツール14では、各演算器出力のビット長の最適化が行われ(S256)、とくにビット幅情報224に基づいて、対象演算器34の出力ビット長を拡張することができる。
このようにして、ユーザが、ビット幅更新のない動作検証結果122を得るまでステップS256〜S264を繰り返すと、この回路設計フローを終了して、その時点で得られたRTL回路210がオーバーフローしない演算器で構成されることとなり、ユーザは最適化されたRTL回路210を得ることができる。さらにユーザは、ソフトウエアプログラム12におけるディレクティブを外すことにより、余分なビット幅検出回路を付加することなく最終的な回路を生成することができる。
また、動作合成ツール14は、ステータスレジスタ40を生成する代わりに、ソフトウエアのデバッグ機能を用いてビット幅情報を得てもよく、この場合、シミュレーションによる動作検証結果としてビット幅情報を標準出力し、その出力を演算器ビット幅最適化に用いることができる。
このように、本発明の回路設計方法が用いられて設計されたRTL記述回路は、各演算器の出力ビット長が最適化されているので、このRTL記述回路を用いて製造された集積回路は、従来の集積回路によりも大きく回路最小化および低消費電力化がなされている。
本発明に係る回路設計方法の一実施例による動作例を説明するフローチャートである。 図1に示す実施例の設計方法を実現する構成の概要図である。 図1に示す実施例の回路設計方法において、オーバーフロー検出ディレクティブを付加したプログラムの例である。 図1に示す実施例の回路設計方法において、オーバーフロー検出回路が付加されて生成されるRTL記述回路の例である。 図4に示す実施例の出力データレジスタおよびオーバーフロー検出回路の例である。 図5に示す実施例のレジスタ値およびオーバーフロー検出結果の関係を示す図である。 本発明に係る回路設計方法の他の実施例による動作例を説明するフローチャートである。 図7に示す実施例の回路設計方法において、ビット幅検出ディレクティブを付加したプログラムの例である。 図7に示す実施例の回路設計方法において、ビット幅検出回路が付加されて生成されるRTL記述回路の例である。 図9に示す実施例の出力データレジスタおよびビット幅検出回路の例である。 図10に示す実施例のレジスタ値およびビット幅検出結果の関係を示す図である。
符号の説明
10 送信装置
12 ソフトウエアプログラム
14 動作合成ツール
16 シミュレーション部
30、32 入力データレジスタ
34 演算器
36 出力データレジスタ
38 オーバーフロー検出回路
40 ステータスレジスタ

Claims (14)

  1. デジタル信号処理に用いられる演算器の回路設計方法において、該方法は、
    ハードウェア記述言語を用いて所望のデジタル信号処理を実施させるプログラムを記述し、記述したプログラムで回路を設計するコンピュータで該プログラムを作成するプログラム作成工程と、
    前記プログラムを作成するコンピュータで、前記プログラムにおける各演算のうち、演算結果のオーバーフロー判定を所望する対象演算に対してディレクティブを付加するディレクティブ付加工程と、
    前記プログラムを作成するコンピュータで、前記対象演算の出力ビット長を決定するビット長決定工程と、
    前記プログラムおよび前記出力ビット長に基づ動作合成する動作合成機能ブロックで、前記所望のデジタル信号処理を実現する回路をレジスタ転送レベル(RTL:Register transfer level)で記述し、前記ディレクティブが付加された対象演算に対してその出力ビット長に関する情報を検出する検出回路を付加して動作を合成し、RTL記述回路を生成するRTL生成工程と、
    該RTL記述回路の動作検証するシミュレーション機能ブロックで動作の検証を行い、その動作検証結果として前記検出回路の検出結果を得る動作検証工程とを含み、
    さらに、該方法は、前記動作検証工程の後で、前記動作検証結果によって前記RTL記述回路を最適化すべきと判断した場合には、再度、ビット長決定工程および前記RTL生成工程を実行し、
    とくに、前記ビット長決定工程は、前記RTL生成工程が前記プログラムに関して初めて前記RTL記述回路を生成する場合には、あらかじめ設定された初期値を前記出力ビット長として決定し、2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路に関する前記検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  2. 請求項1に記載の回路設計方法において、前記ディレクティブ付加工程は、前記対象演算に対してオーバーフロー検出回路を付加するために、前記ディレクティブとしてオーバーフロー検出ディレクティブを前記プログラムに付加し、
    前記RTL生成工程は、前記対象演算に対して、その出力ビット長のオーバーフロー情報を検出するオーバーフロー検出回路を前記検出回路として付加し、
    前記動作検証工程は、前記オーバーフロー検出回路が検出するオーバーフロー情報を前記検出結果とし、
    前記ビット長決定工程は、前記RTL生成工程が2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路に関する前記オーバーフロー情報に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  3. 請求項2に記載の回路設計方法において、前記ディレクティブ付加工程は、前記オーバーフロー範囲を設定して前記オーバーフロー検出ディレクティブを前記プログラムに付加し、
    前記動作検証工程は、前記オーバーフロー検出回路によって、前記対象演算の演算結果のうち、前記オーバーフロー範囲に相当する上位ビットに基づいて前記演算結果がオーバーフローするか否かを判定して、その判定結果を前記オーバーフロー情報とし、
    該方法は、前記動作検証工程の後で、前記オーバーフロー情報がオーバーフローすることを示す場合には、前記RTL記述回路を最適化すべきと判断し、再度、前記ビット長決定工程および前記RTL生成工程を実行し、それ以外の場合には、該方法を終了することを特徴とする回路設計方法。
  4. 請求項1に記載の回路設計方法において、前記ディレクティブ付加工程は、前記対象演算に対してビット幅検出回路を付加するために、前記ディレクティブとしてビット幅検出ディレクティブを前記プログラムに付加し、
    前記RTL生成工程は、前記対象演算に対して、その出力ビット幅を検出するビット幅検出回路を前記検出回路として付加し、
    前記動作検証工程は、前記ビット幅検出回路が検出するビット幅を前記検出結果とし、
    前記ビット長決定工程は、前記RTL生成工程が2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路に関する前記ビット幅情報に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  5. 請求項4に記載の回路設計方法において、前記動作検証工程は、前記ビット幅検出回路によって、前記対象演算の演算結果の最上位ビットが0の場合、それ以外のビットのうちで1を示す最上位のビット番号を使用ビット幅とし、また前記対象演算の演算結果の最上位ビットが1の場合、それ以外のビットのうちで0を示す最上位のビット番号を使用ビット幅として前記ビット幅情報とし、
    該方法は、前記ビット幅情報が前記対象演算に既に設定されている値よりも大きい場合には、前記RTL記述回路を最適化すべきと判断し、再度、前記ビット長決定工程および前記RTL生成工程を実行し、それ以外の場合には、該方法を終了することを特徴とする回路設計方法。
  6. 請求項1に記載の回路設計方法において、前記RTL生成工程は、前記対象演算に対して付加する前記検出回路の前記検出結果を保持するステータスレジスタを前記検出回路に対して付加し、
    前記動作検証工程は、前記検出結果を前記ステータスレジスタに格納し、
    前記ビット長決定工程は、前記RTL生成工程が2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路に関する前記検出結果を前記ステータスレジスタから得て、該検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  7. 請求項1に記載の回路設計方法において、前記動作検証工程は、デバッグ機能を有して前記検出結果を標準出力し、
    前記ビット長決定工程は、前記RTL生成工程が2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路に関する前記検出結果を前記標準出力から得て、該検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  8. 請求項1に記載の回路設計方法において、前記RTL生成工程は、前記ステータスレジスタから割り込み信号を出力するように前記RTL記述回路を生成し、
    前記動作検証工程は、前記検出結果を前記ステータスレジスタに格納し、
    前記ビット長決定工程は、前記RTL生成工程が2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路に関する前記検出結果を前記ステータスレジスタからの割り込み信号によって得て、該検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  9. 請求項1に記載の回路設計方法において、該方法は、前記RTL生成工程が前記プログラムおける前記ディレクティブとは無関係に第2の検出回路を組み込んでRTL記述回路を生成するときに、前記動作検証工程が第2の検出回路による第2の検出結果を得ると、前記ビット長決定工程は、前記RTL生成工程が2回目以降に前記RTL記述回路を生成する場合には、前記検出結果および第2の検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする回路設計方法。
  10. 請求項1に記載の回路設計方法において、前記動作検証工程は、回路シミュレータによって前記RTL記述回路の動作検証を行うことを特徴とする回路設計方法。
  11. 請求項1に記載の回路設計方法において、前記動作検証工程は、前記RTL記述回路をFPGA(Field Programmable Gate Array)などのプログラマブル論理回路に書き込んで該論理回路の動作検証を行うことを特徴とする回路設計方法。
  12. 請求項1に記載の回路設計方法において、該方法は、前記動作検証結果によって前記RTL記述回路の最適化の必要がないと判断した場合には、前記プログラムから前記ディレクティブを外して、前記ビット長決定工程および前記RTL生成工程を実行し、前記検出回路を外した前記RTL記述回路を生成することを特徴とする回路設計方法。
  13. 所望のデジタル信号処理を示すプログラムに基づいてRTL記述回路を生成する回路設計フローによって設計されて、前記RTL記述回路を用いて製造される集積回路において、該回路は、
    前記回路設計フローにおいて、前記プログラムにおける各演算のうち、演算結果のオーバーフロー判定を所望する対象演算に対してディレクティブを付加した前記プログラムを使用し、少なくとも該プログラムに基づいて動作合成を行って前記所望のデジタル信号処理を実現する回路をRTLで記述する際に、前記ディレクティブが付加された対象演算に対してその出力ビット長に関する情報を検出する検出回路を付加して前記RTL記述回路を生成し、該RTL記述回路を動作検証してその動作検証結果として前記検出回路の検出結果を得て、前記動作検証結果によって前記RTL記述回路を最適化すべきと判断した場合に、前記検出結果に基づいて対象演算の出力ビット長を最適化して再度、前記RTL記述回路を生成して、各演算の出力ビット長が最適化されるまで前記RTL記述回路の生成を繰り返して最適化されたRTL記述回路を得て、
    該最適化されたRTL記述回路を用いて製造されることを特徴とする集積回路。
  14. コンピュータを、所望のデジタル信号処理を示すプログラムに基づいて動作合成を行ってRTL(Register transfer level)記述回路を生成する手段として機能させるための動作合成ツールにおいて、該ツールは、
    前記プログラムにおける各演算のうち、演算結果のオーバーフロー判定を所望する対象演算に対してディレクティブが付加された前記プログラムを入力し、
    各演算の出力ビット長を決定するビット長決定手段と、
    前記プログラムおよび前記出力ビット長に基づいて、前記所望のデジタル信号処理を実現する回路をRTLで記述し、前記ディレクティブが付加された対象演算に対して、その出力ビット長に関する情報を検出する検出回路を付加して、前記RTL記述回路を生成するRTL生成手段とを含み、
    さらに、該ツールは、前記RTL記述回路の動作検証結果を得ると、前記動作検証結果によって前記RTL記述回路を最適化すべきと判断した場合には、再度、前記ビット長決定手段および前記RTL生成手段を実行し、
    とくに、前記ビット長決定手段は、前記RTL生成手段が前記プログラムに関して初めて前記RTL記述回路を生成する場合には、あらかじめ設定された初期値を前記出力ビット長として決定し、2回目以降に前記RTL記述回路を生成する場合には、前回生成したRTL記述回路における前記検出回路による検出結果を前記動作検証結果として得て、前記検出結果に基づいて各演算の出力ビット長を最適化して決定することを特徴とする動作合成ツール。
JP2007212832A 2007-08-17 2007-08-17 回路設計方法、ならびにその方法により製造される集積回路 Expired - Fee Related JP5014920B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007212832A JP5014920B2 (ja) 2007-08-17 2007-08-17 回路設計方法、ならびにその方法により製造される集積回路
US12/189,408 US20090049417A1 (en) 2007-08-17 2008-08-11 Method of designing a circuit for optimizing output bit length and integrated circuit therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007212832A JP5014920B2 (ja) 2007-08-17 2007-08-17 回路設計方法、ならびにその方法により製造される集積回路

Publications (2)

Publication Number Publication Date
JP2009048367A JP2009048367A (ja) 2009-03-05
JP5014920B2 true JP5014920B2 (ja) 2012-08-29

Family

ID=40363992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007212832A Expired - Fee Related JP5014920B2 (ja) 2007-08-17 2007-08-17 回路設計方法、ならびにその方法により製造される集積回路

Country Status (2)

Country Link
US (1) US20090049417A1 (ja)
JP (1) JP5014920B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150104814A (ko) * 2014-03-06 2015-09-16 삼성전자주식회사 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010160622A (ja) * 2009-01-07 2010-07-22 Toshiba Corp シミュレータ
JP2010204720A (ja) * 2009-02-27 2010-09-16 Nec Corp 回路設計支援システム、回路設計支援方法及びプログラム
WO2012008319A1 (ja) * 2010-07-13 2012-01-19 日本電気株式会社 エミュレータ検証システム、エミュレータ検証方法
US10067744B2 (en) * 2016-12-08 2018-09-04 International Business Machines Corporation Overflow detection for sign-magnitude adders
JP7177000B2 (ja) 2019-05-16 2022-11-22 日立Astemo株式会社 演算装置および演算方法
US11574196B2 (en) 2019-10-08 2023-02-07 International Business Machines Corporation Dynamic management of weight update bit length
JP6731106B1 (ja) * 2019-12-27 2020-07-29 株式会社パルテック 情報処理システム、情報処理装置、情報処理装置の使用方法、ユーザ端末およびそのプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US7222315B2 (en) * 2000-11-28 2007-05-22 Synplicity, Inc. Hardware-based HDL code coverage and design analysis
JP4045802B2 (ja) * 2002-01-08 2008-02-13 ソニー株式会社 プログラム処理装置及びプログラム処理方法、記憶媒体、並びにコンピュータ・プログラム
JP2006058932A (ja) * 2004-08-17 2006-03-02 Matsushita Electric Ind Co Ltd クロック変換方法
JP4492803B2 (ja) * 2005-03-31 2010-06-30 日本電気株式会社 動作合成装置及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150104814A (ko) * 2014-03-06 2015-09-16 삼성전자주식회사 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체
KR102218200B1 (ko) * 2014-03-06 2021-02-23 삼성전자주식회사 스프레드 시트를 이용한 rtl 자동 합성 시스템, 방법 및 기록매체

Also Published As

Publication number Publication date
US20090049417A1 (en) 2009-02-19
JP2009048367A (ja) 2009-03-05

Similar Documents

Publication Publication Date Title
JP5014920B2 (ja) 回路設計方法、ならびにその方法により製造される集積回路
US7464015B2 (en) Method and apparatus for supporting verification, and computer product
US8949757B2 (en) Circuit design and retiming
AU2014203218B2 (en) Memory configuration for inter-processor communication in an MPSoC
US8434036B2 (en) Arithmetic program conversion apparatus, arithmetic program conversion method, and program
JP2006285333A (ja) 動作合成装置及び方法
JP2007004563A (ja) ライブラリ作成装置、ライブラリ作成プログラムおよびライブラリ作成方法
JP2002108958A (ja) 回路設計システム、回路設計方法および回路設計プログラムを格納したコンピュータ読取り可能な記録媒体
US20190034562A1 (en) High-level synthesis device, high-level synthesis method, and computer readable medium
US8843862B2 (en) Method and apparatus for creating and changing logic representations in a logic design using arithmetic flexibility of numeric formats for data
US6895561B2 (en) Power modeling methodology for a pipelined processor
JP6752393B1 (ja) 設計支援システムおよび設計支援プログラム
JP6580288B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP2007316731A (ja) Lsi設計支援装置
US20200410149A1 (en) High-level synthesis apparatus, high-level synthesis method, and computer readable medium
US11775720B2 (en) Integrated circuit development using machine learning-based prediction of power, performance, and area
Ordaz et al. On the HLS Design of Bit-Level Operations and Custom Data Types
US20190147129A1 (en) Method for producing an association list
WO2018163387A1 (ja) 解析装置、解析方法及び解析プログラム
US20030140054A1 (en) Processor composing apparatus, system LSI composing apparatus, processor composing method, system LSI composing method, and program therefor
JP2006202329A (ja) システムlsiの設計方法及びこれを記憶した記録媒体
JP6266183B2 (ja) 回路設計支援装置および回路設計支援プログラム
JP2009223554A (ja) 動作合成装置、動作合成方法、及び、プログラム
US20100175037A1 (en) Method, apparatus, and program for correcting hold error
US8566772B2 (en) Method, computer program and computing system for optimizing an architectural model of a microprocessor

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20081224

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100727

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110302

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120116

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120124

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120326

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

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

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

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees