(57)【特許請求の範囲】
【請求項１】
関数の入力オペランドの少なくとも一部分を受け取るよう結合されたテーブルを備え、このテーブルは、複数のエントリを有し、それら複数のエントリの各々は、前記入力オペランドの値のインターバルに対応し、前記複数のエントリの各々は、前記関数の級数展開における第１の項に対応する第１の値と、前記級数展開における第２の項に対応する第２の値とを記憶し、前記テーブルは、前記複数のエントリのうちの選択されたエントリから前記第１の値及び第２の値を出力するように構成され、前記選択されたエントリは、前記入力オペランドに応答して選択され、更に、
前記関数の前記入力オペランドの少なくとも一部分を受け取るよう結合された第２のテーブルを備え、前記第２のテーブルは、前記入力オペランドに応答して丸めファクタを出力するように構成され、前記丸めファクタは、＋１、−１又は０のうちの１つであり、更に、
前記テーブルに結合され、且つ前記第２の値に、前記入力オペランドと前記値のインターバル内の第３の値との間の差を乗算するように構成された乗算器と、
前記テーブル、前記第２のテーブル及び乗算器に結合され、且つ前記第１の値を前記乗算器の結果及び前記丸めファクタに加算するように構成された加算器と、
を備えた回路。
【請求項２】
前記第１の値は、前記第３の値における前記関数の値であり、そして前記第２の値は、前記第３の値における前記関数の第１導関数の値である、請求項１に記載の集積回路。
【請求項３】
前記第３の値は、前記インターバルの中心におけるものである、請求項１に記載の集積回路。
【請求項４】
前記差は、前記差が正である場合には、前記第１の値の複数の最下位ビットである、請求項３に記載の集積回路。
【請求項５】
前記差は、前記差が負である場合には、複数の最下位ビットの１の補数である、請求項４に記載の集積回路。
【請求項６】
前記第３の値は、前記加算器の結果のエラーが前記インターバルの各端に対してほぼ等しいところの値である、請求項１に記載の集積回路。
【請求項７】
前記第２の値は、前記第３の点における前記関数の第１導関数及びその第１導関数の第２の近似を平均化した結果である、請求項１に記載の集積回路。
【請求項８】
前記第２の近似は、前記関数のインターバルの終端点間に線を構成することによりなされる、請求項７に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の分野に関するもので、より特定すれば、集積回路における超越的及びある非直線的関数の具現化に関する。
【背景技術】
【０００２】
「超越的(transcendental)」関数と称される一種の数学関数がある。超越的関数とは、代数演算の限定シーケンスでは表現できない関数である。例えば、指数関数、対数関数、及び三角関数である。
【０００３】
超越的関数は、集積回路において種々の使い方がある。例えば、ピクセルのようなビデオ値の操作には種々の超越的関数がしばしば使用される。例えば、ガンマ／デガンマ演算は、超越的関数を含む。従って、集積回路において超越的関数を具現化することが必要とされる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
超越的関数は、限定代数表現をもたないので、関数をハードウェアで直接具現化することはできない。超越的関数を近似するための１つの技術は、種々の予め選択された点における所与の超越的関数の結果を記憶するルックアップテーブル（ＬＵＴ）を使用するものである。関数に対する入力オペランドに最も近い２つの点がＬＵＴから読み取られ、その２つの点間の直線的補間を使用して、入力オペランドに対する解答が近似される。許容できる精度レベルを得るには、ＬＵＴを非常に大きく作らねばならない。他の非直線的関数も、同様に、許容できる精度レベルを与えるために大きなＬＵＴを要求する（例えば、逆関数１／ｘ、平方根、等）。
【課題を解決するための手段】
【０００５】
一実施形態において、超越的関数又は他の非直線的関数を具現化するハードウェアは、関数の級数展開に基づくものである。例えば、基礎としてテイラー級数展開が使用される。テイラー級数の１つ以上の最初の項が使用され、ハードウェアで具現化される。ある実施形態では、結果の精度を高めるため、テイラー級数展開に対する変更が使用される。
【０００６】
１つの実施形態において、関数オペランドのための種々のビット巾が、所与の具現化への使用に対して受け容れられる。集積回路設計に使用するための級数近似コンポーネントのライブラリを構築する方法であって、受け容れられる具現体を合成しそして結果を精度に対してテストするような方法が提供される。望ましい精度レベルを生じる最小（面積に関して）の具現体がライブラリ要素として選択される。
【０００７】
以下、添付図面を参照して、本発明を詳細に説明する。
【図面の簡単な説明】
【０００８】
【図１】集積回路の一実施形態のブロック図である。
【図２】級数近似コンポーネントを含むブロックの一実施形態のブロック図である。
【図３】テイラー級数展開を示す式である。
【図４】テイラー級数展開の最初の２つの項に基づいて具現化される超越的又は他の非直線的コンポーネントの一実施形態のブロック図である。
【図５】１つの実施形態としてテイラー級数展開のｘ−ａ項の発生を示すブロック図である。
【図６】テイラー級数展開の最初の３つの項に基づいて具現化される超越的又は他の非直線的コンポーネントの一実施形態のブロック図である。
【図７】インターバルの中心点の周りのテイラー級数展開の一実施形態を示す図である。
【図８】インターバルの各境界に等しいエラーを与えるように選択された点の周りのテイラー級数展開の一実施形態を示す図である。
【図９】第１導関数項の直線的補間近似の一実施形態の図である。
【図１０】直線的補間近似の結果をテイラー級数展開と合体させる変更型テイラー級数展開を示す図である。
【図１１】付加的なインターバルを使用する変更型テイラー級数の一実施形態を示す図である。
【図１２】級数の最初の３つの項を使用するテイラー級数展開の一実施形態を示す図である。
【図１３】級数の最初の３つの項に基づく変更型テイラー級数展開の別の実施形態を示す図である。
【図１４】３項テイラー級数に対するＶＦｉｔ近似を示す図である。
【図１５】コンピュータアクセス可能な記憶媒体の一実施形態のブロック図である。
【図１６】超越的関数具現化のライブラリを構築する一実施形態を示すフローチャートである。
【発明を実施するための形態】
【０００９】
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味（即ち、〜の潜在性があるという意味）で使用されるもので、強制の意味（即ち、〜しなければならないという意味）ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
【００１０】
種々のユニット、回路又は他のコンポーネントは、１つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に１つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット／回路／コンポーネントは、そのユニット／回路／コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路、及び／又は動作を具現化するよう実行できるプログラムインストラクションを記憶するメモリを含む。メモリは、スタティック又はダイナミックランダムアクセスメモリのような揮発性メモリ及び／又は光学的又は磁気的ディスク記憶装置、フラッシュメモリ、プログラム可能なリードオンリメモリ、等の不揮発性メモリを含む。同様に、種々のユニット／回路／コンポーネントは、説明の便宜上、１つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。１つ以上のタスクを遂行するように構成されたユニット／回路／コンポーネントを表現する場合に、そのユニット／回路／コンポーネントに関して３５Ｕ.Ｓ.Ｃ.§１１２、第６節の解釈を引用しないことが明確に意図される。
【００１１】
図１は、集積回路１０のブロック図である。ここに示す実施形態において、集積回路１０は、複数のブロック１２Ａ−１２Ｈを備えている。ブロック１２Ｃは、分解図で示されており、種々のコンポーネント１４Ａ−１４Ｃ及び級数近似コンポーネント１６を含む。種々の実施形態では、１つのブロックが２つ以上の級数近似コンポーネント１６を含んでもよく、そして２つ以上のブロックが級数近似コンポーネントを含んでもよい。
【００１２】
ブロック１２Ａ−１２Ｈは、集積回路１０について設計された種々の動作を遂行するように構成される。ブロック１２Ａ−１２Ｈは、集積回路１０の定義に基づき設計を論理的サブ区分へと区画化することで決定される。例えば、集積回路１０は、システムオンチップ（ＳｏＣ）である。ブロック１２Ａ−１２Ｈは、プロセッサ、周辺装置、通信ファブリック回路、メモリコントローラ、等を含む。ブロックは、ハイアラーキーの複数のレベルである（即ち、ブロックは、他のブロックを含んでもよい）。例えば、プロセッサブロックは、フェッチ及びデコード、キャッシュ、インストラクション発行、実行ユニット、等のブロックを含む。ブロックは、他のブロックに加えてコンポーネントを含んでもよいし、又はブロックがハイアラーキーにおいて最低レベルである場合には、コンポーネントのみを含んでもよい。図１には示されていないが、ブロック１２Ａ−１２Ｈは、一般的に、集積回路１０の全ての動作を具現化するように必要に応じて相互接続されてもよい。
【００１３】
ブロックのコンポーネント１４Ａ−１４Ｃは、種々の回路要素である。例えば、コンポーネントは、加算器、乗算器、マルチプレクサ、シフタ、ローテータ、レジスタ、メモリ等のデータフロー回路のインスタンス化である。又、コンポーネント１４Ａ−１４Ｃは、ブロックの登録−転送レベル（ＲＴＬ）記述に書かれる表現に対応する論理回路でもある。一般に、ＲＴＬ記述は、Ｖｅｒｉｌｏｇ又はＶＨＤＬのようなハードウェア設計言語で書かれ、そして登録状態及びその状態での論理的動作に関して論理回路を記述する。登録状態は、クロック型記憶装置（例えば、レジスタ、ラッチ、フリップ−フロップ、等）に記憶される。合成ツールを使用して、ＲＴＬ記述を読み取り、そして集積回路１０における具現化のためにＲＴＬ記述に対応する論理回路を形成する。他のケースでは、カスタム回路が設計者によって開発され、そしてスキマティックキャプチャーツールを経て捕獲される。カスタム回路は、コンポーネント１４Ａ−１４Ｃでもよい。
【００１４】
級数近似コンポーネント１６は、超越的関数又は他の非直線的関数を具現化するコンポーネントである。全ての非直線的関数が級数近似コンポーネントとして具現化されるのではなく、幾つかのそのような関数は、級数近似具現化（例えば、逆関数１／ｘ、平方根、等）から利益が得られる。より詳細には、一実施形態において、超越的／非直線的関数は、超越的／非直線的関数の級数展開から導出される回路により具現化される。この回路は、展開の選択された項から導出され及び／又は級数展開の元の項から変更されてもよい。種々の実施形態について以下に詳細に説明する。以下に述べる幾つかのケースにおいて、一例として超越的関数が使用されるが、一般的に、非直線的関数について級数展開近似が使用されてもよい。他のケースでは、逆関数のような非直線的関数が一例として使用される。従って、級数近似コンポーネントは、一般的に、関数の級数展開表現の項、又は級数展開項から変更された（例えば、エラー減少のために最適化された）項を使用して超越的関数又は非直線的関数を近似するコンポーネントである。近似された関数は、級数近似関数と称される。
【００１５】
コンポーネント１４Ａ−１４Ｃ及び１６は、ブロック１２Ｃの動作を実現するために一緒に結合される。従って、非級数近似コンポーネントが級数近似コンポーネントへの入力を発生してもよいし、その逆でもよい。更に、他のブロックからの入力及び他のブロックへの出力は、超越的及び非級数近似コンポーネントの両方によって発生される。
【００１６】
図２は、一実施形態において具現化されるブロック１２Ｉのより特定の例である。図２の実施形態は、ピクセル値に対してガンマ／デガンマ修正を遂行するガンマ／デガンマ修正ブロックである。ガンマ修正は、人間の視覚特性を補償して、人間が光及び色をどのように知覚するかについてピクセルビットの使用を改善するためにピクセル値に適用される非直線的動作である。ガンマ修正は、典型的にガンマ修正では０と１との間及びデガンマ動作では１より大きい累乗数（一般的に、ギリシャ文字「ガンマ」、ひいては、関数名で表される）で入力ピクセル値を累乗することにより出力ピクセル値を発生する。（ピクセル値が）ゼロの付近のガンマ関数の部分は、若干直線的であり、そしてピクセル値が増加するにつれて益々非直線的となる。
【００１７】
図２の実施形態における級数近似コンポーネントは、ｌｏｇ（ｘ）コンポーネント２０及び２Xコンポーネント２２を含む。ｌｏｇ（ｘ）コンポーネント２０は、ｌｏｇ底２、即ちｌｏｇ2を具現化する。２Xコンポーネント２２は、逆対数コンポーネントとも称される。というのは、２をｘ乗することは、ｘのｌｏｇ2の逆数だからである。しかしながら、他の実施形態では、対数及び逆対数関数の底が一致する限り、任意の底を使用できることに注意されたい。別の底の１つの具現化では、底２対数及び逆対数関数が使用され、ｘの値にｌｏｇ2（底）を乗算して、正しい解答に到達することができる。例えば、ある具現化では、ｅの底が望まれ、ｌｏｇ2（ｅ）項で具現化される。
【００１８】
ここに示す実施形態では、入力ピクセル値は整数であり、そして級数近似コンポーネントは浮動小数点値で動作する。従って、ピクセル値を変換するために固定／浮動変換コンポーネントが含まれる。
【００１９】
上述したように、ピクセル値を累乗数ガンマで累乗することによりガンマ修正が遂行される。ピクセル値の対数をとることにより、「累乗数で累乗する」計算は、乗算となる。従って、ｌｏｇ（ｘ）コンポーネント２０の出力は、乗算コンポーネント２６において、入力ガンマ値で乗算される。オーバーフローを防止するために、その結果を丸めて最大値にクランプする（丸め／クランプコンポーネント２８）。その結果は、２Xコンポーネント２２に与えられる。乗算器２６からの積の逆対数をとることにより、ガンマ値で累乗された入力ピクセルが発生される。その結果が浮動小数点から固定小数点へ変換される（浮動／固定変換コンポーネント３０）。この実施形態では、ガンマ修正ピクセルにオフセット（Ｂ）が追加され、そしてオフセットを追加するために加算コンポーネント３２が設けられる。他の実施形態では、オフセットが追加されず、加算コンポーネント３２が排除される。その結果が丸められてクランプされ（コンポーネント３４）、そしてマルチプレクサコンポーネント３６に与えられる。
【００２０】
２-x及び２X関数は、個別に具現化されることに注意されたい。というのは、関数に対するテイラー級数値が異なるからである。ある実施形態では、２-x関数が具現化され、そして２-xを使用して２Xが具現化される。例えば、２Xは、２1、２x及び２-1の積に数学的に等しい。２X及び２-1の乗算は、２X-1に等しく、これは、指数のａ−１を因数分解することで２-(1-X)として書きこともできる。従って、２Xは、２1に２-(1-X)を乗算したものにも数学的に等しい。１−Ｘをもつ２-X関数を入力として使用し、そして結果に２（２1）を乗算することにより、２X関数が実現される。２で乗算することは、シフトとして具現化される。必要に応じて、２の他の累乗数も使用できる。
【００２１】
この実施形態において、入力ピクセル範囲の一部分が直線的動作によって近似される。直線的経路は、乗算コンポーネント３８及び丸め／クランプコンポーネント４０として示されている。乗算コンポーネント３８は、入力ピクセル値をファクタＭで乗算するように構成され、次いで、丸め／クランプコンポーネント４０により丸め／クランプされる。その結果は、この実施形態では、マルチプレクサコンポーネント３６への他方の入力である。比較コンポーネント４２は、ピクセル値を、直線的経路を使用するためのスレッシュホールドと比較する。このスレッシュホールドは、比較コンポーネント４２への値Ｚ入力として示されている。ピクセル値がＺ以下である場合には、直線的経路は、マルチプレクサコンポーネント３６により選択される。さもなければ、非直線的経路（コンポーネント２０−３４を含む）がマルチプレクサコンポーネント３６を通して選択される。他の実施形態では、直線的経路が具現化されず、むしろ、全関数範囲に対して非直線的経路を使用する。そのような実施形態では、要素３６、３８、４０及び４２が排除される。
【００２２】
上述したように、級数近似コンポーネントのある実施形態は、コンポーネントに対応する級数近似関数の限定等級展開から導出されたハードウェアを使用して具現化される。その限定級数展開は、非代数超越的関数又は非直線的関数を代数へと変換する。限定級数の最初の幾つかの項を具現化することにより、超越的／非直線的関数の適度に高精度の近似が得られる。更に、ある実施形態では、以下に詳細に述べるように、最初の級数展開具現化を変更することにより、級数近似コンポーネントのエラー特性が改善される。
【００２３】
１つの実施形態では、級数近似コンポーネントのための基礎としてテイラー級数展開が使用される。テイラー級数展開の式が図３に示されている。一般的に、テイラー級数展開（又はより簡単に「テイラー級数」）は、予め選択された点（図３の“ａ”）における関数及び無限数のその導関数の値を含む。２つ以上の予め選択された点が使用され、このケースでは、所与の入力値に最も近い予め選択された点が選択され、その所与の入力値に対してその関数及び導関数の値が使用される。所与の予め選択された点が使用されるところの１組の入力値は、「インターバル」と称され、そして所与の予め選択された点は、インターバルに対応すると称される。１つの予め選択された点しか使用されない場合には、インターバルは、ｘの全範囲である。
【００２４】
一般的に、入力ｘに対する関数（図３の“ｆ(ｘ)”）の値は、（“ｆ(ａ)”）における関数の値、(“ｆ’(ａ)”、“ｆ”(ａ)”、等）における各導関数を含む積、及びｘとａとの間の差、の和である。より詳細には、ａにおける各導関数は、導関数の次数に対応する因数で除算される（例えば、第１導関数は、１の因数で除算され、第２導関数は、２の因数で除算され、第３導関数は、３の因数で除算され、等々）。次いで、その結果に、ｘとａとの間の差を導関数の次数の累乗数で累乗したもの（第１導関数については“ｘ−ａ”、第２導関数については“(ｘ−ａ)2”、第３導関数については“(ｘ−ａ)3、等々)を乗算する。
【００２５】
級数近似コンポーネントが浮動小数点オペランドで具現化される場合に、正規数の仮数は、厳密な１と、ほぼ２との間にあることが知られている。仮数範囲の中間付近のどこかでａが選択される場合には、ｘ−ａの範囲は、ほぼ負の０．５ないし正の０．５である。ｘ−ａ項を累乗するところの各付加的な累乗数は、益々小さな数となり、テイラー級数における対応項の作用を減少させることになる。ａの２つ以上の値が仮数範囲にわたり使用されるときには、高次導関数の作用減少が、更に顕著なものとなる。従って、超越的／非直線的関数に対するテイラー級数の浮動小数点実施は、以下の例のように使用される。テイラー級数は、仮数の発生に使用され、指数の発生は、並列に取り扱われる。
【００２６】
図４は、テイラー級数の浮動小数点具現化に基づく級数近似コンポーネント１６の一実施形態を示すブロック図である。図４の実施形態は、テイラー級数の最初の２つの項（ｆ(ａ)及びその第１導関数ｆ’(ａ)）を具現化する。級数近似コンポーネント１６は、指数計算ユニット５０及び仮数計算ユニット５２を含む。指数計算ユニット５０は、入力値の指数部分を受け取るように結合され、そして出力指数を発生するように構成される。出力指数は、出力仮数が正規化を必要とする場合に調整される。
【００２７】
ここに示す実施形態では、仮数計算ユニット５２は、具現化において選択された各ａに対するｆ(ａ)及びｆ’(ａ)値のルックアップテーブル（ＬＵＴ）（参照番号５４）を含む。テーブルにおける予め選択された点（“ａ”）の数は、実施形態ごとに変化する。予め選択された各点は、仮数値のインターバルに関連付けられる。従って、仮数の最上位ビット（ＭＳＢ）は、どのインターバルが入力仮数を含むか定義し、そしてこれらＭＳＢは、ＬＵＴ５４への入力として働く。ＬＵＴ５４は、入力仮数のＭＳＢに応答して選択されたエントリからｆ(ａ)及びｆ’(ａ)の値を出力するように構成される。
【００２８】
ＬＵＴ５４からのｆ(ａ)出力は、加算器５６への入力として結合され、そしてｆ’(ａ)出力は、乗算器５８への入力として結合される。加算器５６及び乗算器５８は、総体的に乗算・加算回路、又は乗算・加算ユニットと称される。乗算器５８の出力は、加算器５６への入力として結合される。乗算器５８は、ＬＵＴ５４からのｆ’(ａ)値、及び入力仮数及びａに基づくｘ−ａ項を受け取るように結合される。
【００２９】
より詳細には、１つの実施形態において、ａがインターバルの中心として選択された場合には、図５に示すように、ｘ−ａが計算される。図５は、ｘ（入力値）の仮数部分と、ｘに対応するａの値（ｘを含むインターバルに対するａの値）を示す。両仮数は、バイナリ点の左側である暗示される１で始まる。更に、両仮数は、インターバルを定義するＭＳＢ仮数ビットの同じ組を有する。これらビットは、図５において、アドレスビットａ６：ａ０として示されている。というのは、これらビットは、ＬＵＴ５４に対するアドレスビットとしても使用されるからである。ＭＳＢは、アドレスビットの後、図５において、ｘの値における符号ビット（“ｓ”）として示されている。この符号ビットは、インターバル符号ビットと称される。ｓビットが１である場合には、ｘの値がａ以上であり、そしてｘ−ａの値が正である。ｓビットがゼロである場合には、ｘの値がａ未満であり、そしてｘ−ａの値が負である。
【００３０】
図５に示すように、ａがインターバルの中心で選択された場合には、ａの最下位ビット（インターバル符号ビットの下）がゼロである。従って、ｘがａより大きい場合のｘ−ａの値は、単にｘの最下位ビットである（例えば、図５においてｄ６：ｄ０）。ｘ−ａの値が負である場合には、ｘ−ａは、ｘの最下位ビットの１の補数である。
【００３１】
図５に基づく実施形態では、補数デルタ回路６０は、ｘ−ａの値を発生するように構成される。ｘ−ａが正である（インターバル符号ビットがａ１である）場合には、補数デルタ回路６０は、ｘの最下位ビットをｘ−ａとして通過するように構成される。ｘ−ａが負の場合には、補数デルタ回路６０は、ｘの最下位ビットの１の補数をｘ−ａとして送信するように構成される。より一般的には、他の実施形態では、補数デルタ回路６０は、ｘからａを減算するよう構成された加算器と置き換えられる。補数デルタ回路６０の出力は、乗算器５８への入力として結合される。
【００３２】
図４の実施形態は、丸めＬＵＴ６２を含むのも任意である。ＬＵＴ５４及び乗算・加算回路５６／５８は、各入力値ｘに対し超越的／非直線的関数の近似を発生する。従って、少なくとも幾つかの結果には若干の不正確さがある。より詳細には、結果は、Institute for Electrical and Electronic Engineers （ＩＥＥＥ）規格７５４及びその後続物のような浮動小数点規格の精度要件を満足できないことがある。ＩＥＥＥ規格は、完全に正確な結果に比して結果が±１／２最下位桁単位（ＵＬＰ）内の精度であることを要求し、そして丸めが「統計学的に公平」である（即ち、丸めのための連結の半分が切り上げられ、そして他の半分が切り下げられる）ことも要求する。１つの実施形態では、級数近似コンポーネント１６は、丸めＬＵＴ６２を含まずに１つのＵＬＰ内の精度である結果を生じさせる。丸めＬＵＴ６２は、統計学的に公平な要求を満足することを含めて、正しい丸めを遂行するようにプログラムされる。
【００３３】
あるケースでは、ＩＥＥＥ規格の精度を満足しない結果が受け容れられる。例えば、級数近似関数がグラフィック動作に使用され、ある程度の不正確さが受け容れられる。というのは、視覚画像は、依然、極めて正確で、目を楽しませるからである。しかしながら、更に正確な結果が望まれる場合は、丸めＬＵＴ６２が含まれる。丸めＬＵＴ６２は、ＩＥＥＥ精度結果を生じない各入力仮数値に対する丸め値を含み、そして結果をＩＥＥＥ精度結果へと丸める丸めファクタを発生する。１つの実施形態では、ＬＵＴ６２は、２つのテーブルを有し、その一方は、１つのＵＬＰだけ低い結果を生じる入力仮数を列挙し、又、その他方は、１つのＵＬＰだけ高い（ＩＥＥＥの正しい結果に比して）結果を生じる入力仮数を列挙する。これらのテーブルは、入力仮数がそのテーブル内に見つかった場合には１を生じ、そしていずれのテーブルも入力仮数を含まない場合には、−１（１つのＵＬＰだけ高い）、＋１（１つのＵＬＰだけ低い）又はデフォールト０を選択するｍｕｘをコントロールするのに出力が使用される。
【００３４】
以下に詳細に述べる１つの実施形態では、級数近似コンポーネント１６のために実行可能なモデルが発生される。この実行可能なモデルは、Ｃ、Ｃ＋＋、等の高レベルプログラミング言語で表現される。この実行可能なモデルは、実行可能なバイナリコードへとコンパイルされ、そしてコンピュータ内のプロセッサにおいて実行される。或いは又、実行可能なモデルは、実行可能なバイナリコード又は低レベルプロセッサインストラクションで表現されてもよい。更に、級数近似コンポーネント１６のＲＴＬ記述は、実行可能なモデルとして模擬されてもよい。実行可能なモデルは、考えられる入力仮数ごとに実行されてもよく、そして結果を±１／２ＵＬＰ内に丸める丸め値が丸めＬＵＴ６２をポピュレートするように記録されてもよい。丸めＬＵＴ６２の出力は、加算器５６への入力として結合され、そして加算器の出力は、ＩＥＥＥの正しい結果である。丸めＬＵＴ６２を含まない実施形態では、加算器５６は、２入力加算器である。
【００３５】
結果が通常の浮動小数点数値とならない（即ち、仮数がバイナリ点の左側で単一のバイナリ１及びバイナリ点の右側で残りの桁とならない）ことが考えられる。仮数を正規化するために正規化回路６４が設けられる。加算器６６は、正規化回路６４により適用されるシフト量を加算することにより、指数計算ユニット５０で発生される指数を調整するように構成される。
【００３６】
仮数の巾は、級数近似関数（又は級数近似関数が１つのコンポーネントである全体的関数）からの結果に望ましい精度レベルを与えるように必要に応じて選択される。例えば、作用を受けている値がピクセルである場合には、望ましい色深度より若干大きな仮数が受け容れられる。一般的に、仮数の巾が広いほど、級数近似関数からの結果が正確な結果に比してより高い精度となる（結果のＬＳＢにエラーが生じるので）。しかしながら、巾の広い仮数は、一般的に、巾の広い乗算器５８及び加算器５６も招くことになる。特に、乗算器５８については、巾の増加は、集積回路１０内に級数近似コンポーネント１６を実現する面積の増加を招く。所与の具現化に対して巾の狭い仮数が使用される場合には、最大エラーを減少するために、より多くのインターバルを定義することが必要になる。より多くのインターバルは、ＬＵＴ５４のサイズを増加するが、巾の狭い仮数は、減少サイズ乗算器５８／加算器５６を招く。従って、級数近似コンポーネント１６の精度目標を満足させる種々の設計上の変化が可能となる。１つの実施形態では、級数近似コンポーネント１６のためのパラメータを自動的に選択する方法が使用される。この方法に関する付加的な詳細を以下に述べる。
【００３７】
図６は、級数近似コンポーネント１６の別の実施形態のブロック図である。図６の実施形態は、（ｆ(ａ)、ｆ’(ａ)及びｆ”(ａ)に対応する）テイラー級数の最初の３つの項を具現化する。図４の実施形態と同様に、図６の実施形態は、正規化のための指数を調整するように、指数計算ユニット５０、仮数計算ユニット５２及び加算器６６を具現化する。仮数計算ユニット５２は、図４の実施形態と同様に結合されたＬＵＴ５４、乗算器５８、加算器５６（２つ又は３つの入力ではなく、３つ又は４つの入力をもつ）、正規化回路６４、補数デルタ回路６０、及び任意の丸めＬＵＴ６２を備えている。
【００３８】
更に、図６の実施形態は、ｆ”(ａ)ＬＵＴ７０、乗算器７２、及び平方回路７４を含む。平方回路７４は、ｘ−ａ項を受け取るように結合され、そしてそれを平方して、乗算器７２への入力として（ｘ−ａ）2項を発生するように構成される。一般的に、平方回路７４は、乗算器である。しかしながら、この乗算器は、乗算器の両オペランドとして同じ値が入力されることが知られているので、乗算器５８及び７２のような完全な汎用乗算器から簡単化することができる。
【００３９】
乗算器７２の他方の入力は、ＬＵＴ７０からのｆ”(ａ)項である。ＬＵＴ５４と同様に、ＬＵＴ７０は、仮数のＭＳＢでインデックスされる。ＬＵＴ７０は、ＬＵＴ５４と同じ数のエントリを有し、必要に応じて、同じテーブルに物理的に含まれてもよい。ＬＵＴ７０の出力は、図３に示すテイラー級数の第３項に一致するように、ｆ”(ａ)項を２の因数（又は簡単に２）で除算したものである。従って、乗算器７２の出力は、テイラー級数の第３項である。
【００４０】
図４及び６に示した級数近似コンポーネント１６の実施形態は、コンポーネント１６の論理的表現であることに注意されたい。図示された実施形態を記述するコンポーネント１６のＲＴＬ説明が作成されそして合成ツールを使用して合成されて、実際の具現化を生じさせる。その合成ツールは、種々の実施形態において、論理的設計のブール等効物を生じさせる。
【００４１】
種々の実施形態において種々の級数近似関数がサポートされる。例えば、ある実施形態では、ｌｏｇ（ｘ）、ａｎｔｉｌｏｇ（ｘ）（又は２X）、１／ｘ、逆平方根、平方根、及び２-x、の１つ以上がサポートされる。他の実施形態では、前記関数及び他の関数のサブセット、或いは前記関数及び他の関数の全てが、必要に応じて、サポートされる。
【００４２】
サポートされる各関数に対し、テイラー級数近似に基づき仮数を計算するためのＬＵＴテーブル５４及び７０が開発される。指数は、指数計算ユニット５０によって直接計算される。例えば、１／ｘの場合、指数は、入力指数−１の負であるが、仮数が厳密に１．０の場合には、指数は、入力指数の負である（即ち、−１のファクタがない）。逆平方根の場合の指数は、入力指数を２で除算したものから１を引いたもの負である（又は仮数が厳密に１．０の場合には−１のファクタがない）。
【００４３】
図７−１４を参照すれば、級数近似コンポーネント１６の種々の実施形態が、テイラー級数から導出される実施形態に対してグラフ形態で示されている。関数１／ｘが一例として使用される。各図において、水平軸は、関数に対するｘ入力の仮数部分であり、そして垂直軸は、ｆ（ｘ）の値である。関数は、実線の曲線８０で示されている。コンポーネント１６からの対応する結果は、各図において、破線で示されている。
【００４４】
図７を参照すれば、級数の最初の２つの項及び仮数の単一インターバルを使用するテイラー級数を描いた図である。この例において、インターバルの中間点（インターバル／２）としてａが選択される。この例では、１つのインターバルが示されているので、ａは、１．５である。破線８２は、この関数に対する２項テイラー級数の結果を示す。この図において明らかなように、エラーは、ａにおいて最小であり（ゼロのエラー）、そしてａからの距離が増加するにつれて増加する。より多くのインターバルを含ませると、エラーが減少する。
【００４５】
この例における最大エラーは、インターバルの終端点で生じる（例えば、１つのインターバルのケースでは、１．０及びほぼ２．０の仮数）。多数の関数の場合に、エラーは、インターバルの一端の方が他端より大きくなり、従って、最大エラーは、インターバルの一端において生じるエラーとなる。関数１／ｘの例では、非変更の２項テイラー級数近似に対する１．０におけるエラーは、ｘ＝１．０において約０．１１１及びｘ＝２．０において約０．０５５６である。しかしながら、インターバルの中心でａを選択すると、補数デルタ回路６０でｘ−ａの発生を簡単に行うことができる。
【００４６】
別の実施形態では、２項テイラー級数に対する最適化は、インターバルの各端におけるエラーを等しく（又は級数近似コンポーネント１６のエラー範囲内でほぼ等しく）するように具現化される。各端にほぼ等しいエラーを与える１つのメカニズムは、ｆ’(ａ)項を、インターバルにわたって関数の平均勾配（即ち、平均第１導関数ｆ’(ａ)）となるように調整することである。関数１／ｘのケースでは、この勾配は、−０．５であり、そしてａは、２の平方根（例えば、約１．４１４）である。インターバルの一端では最大エラーが減少されるが、他端（図７の実施形態では最大エラーをもたなかった）では増加するので、最大エラーサイズが減少される。そのような実施形態が、図８のグラフに、関数１／ｘについて破線８４で示されている。各端の最大エラーは、約０．０８６である。インターバルの中間点でのａの使用を続けるために、ｆ(ａ)は、平均勾配をもつ最適な線上で再評価される。
【００４７】
他の実施形態では、ａを異なる仕方で選択してもよいことに注意されたい。そのような実施形態では、補数デルタ回路６０に代わって全加算器が使用され、ｘ−ａ発生回路のサイズを増加する。
【００４８】
図９は、１つの実施形態による直線的補間近似の使用を示す。直線的補間近似は、級数近似関数のインターバル終端点を線（例えば、図９の線８６）で接続するものとして定義される。従って、１インターバルの例では、終端点ｘ＝１．０及び２．０において最小エラー（ゼロ）が生じ、そして中心付近で最大エラーが生じる。図９の１／ｘの例では、最大エラーがｘ＝２の平方根において生じ、約０．０８６となる。直線的補間近似が具現化される場合には、線８６の勾配がインターバルごとにＬＵＴ５４から出力されるｆ’(ａ)となる。
【００４９】
或いは又、ｆ(ａ)の記憶値を使用して、インターバルに対する勾配ｆ’(ａ)を計算してもよい。そのような実施形態では、各インターバルの端についてｆ(ａ)項が記憶され、そして所与のインターバルについてＬＵＴ５４から２つの連続する項が読み取られる。一実施形態では、ＬＵＴ５４は、第２の読み取りポートをＬＵＴ５４に追加するのを回避するため、偶数部分と奇数部分に分割される。一方のｆ(ａ)項は、偶数部分から読み取られ、その他方は、奇数部分から読み取られる。加算器を使用して、２つのｆ(ａ)項から乗算器５８への勾配（ｆ’(ａ)）項を計算する。ｘ−ａ項は、中心ではなく、インターバルの終端点から（例えば、所与の入力値ｘに近い方の終端点から）計算される。終端点の値のいずれをｆ(ａ)として使用するか選択するために、マルチプレクサが追加される。
【００５０】
図１０は、１／ｘ関数の近似の更に別の実施形態を示す。この実施形態では、２項テイラー級数近似（例えば、図７又は図８に関して上述したいずれかに実施形態）と、図９の直線的補間近似が組み合わされる。図１０の実施形態は、ここでは「中間適合(median fit)」と称される。この中間適合は、テイラー級数近似の１つを直線的補間近似とで平均化することにより発生される。より詳細には、一実施形態において、平均は、幾何学平均である。平均化の結果が図１０において１インターバル例について示されている。複数のインターバルが使用される場合には、それらインターバルが個々に平均化され、インターバルに対するＬＵＴ値を発生する。図１０では、それにより生じる近似が破線８８で示されている。
【００５１】
中間適合の場合、最大エラーは、３つの点で生じるが、先の実施形態の最大エラーより小さい。特に、最大エラーは、終端点及び中間付近に生じる（例えば、図１０に示すように、１／ｘのケースでは、ｘ＝２の平方根において）。この例では、最大エラーが約０．０４３である。
【００５２】
図１１は、４つのインターバルが使用されるときの近似を示す図である。それらインターバルは、図１１において、ｘ＝１．２５、１．５、１．７５及び２．０における垂直の太い点線で境界定めされる。各インターバル内では、図７−１０のどの実施形態が使用されてもよい。従って、各インターバル内の近似を示す４つの破線９０、９２、９４及び９６がある。図１１を図７−１０と比較すると、付加的なインターバルの使用によりエラーが著しく減少されることが明らかである。従って、各インターバルにおける近似の複雑さと、使用するインターバルの数との間でバランスがとられる。
【００５３】
図１２は、一実施形態として単一インターバルを使用する３項テイラー級数近似の一例である。第２導関数項を近似に追加すると、一般的には、ａの両側で近似を「屈曲」する作用が得られ、近似を両側で曲線に接近させる。最初の３つの項に基づく近似が図１２において曲線１１０として示されている。図１２において明らかなように、３項近似のエラーは、終端点において最大となる。
【００５４】
改善された３項テイラー級数近似が発生される。例えば、１つの改善が、図１３に曲線１１２で示されている。この近似は、エラーを、インターバルの終端点においてほぼゼロに減少させる。一実施形態では、図１３の近似は、インターバルにわたる平均勾配をｆ’(ａ)項として使用することを含む（図８の２項最適化と同様に）。ｆ”(ａ)がゼロに等しいと仮定すれば、終端点の１つ（例えば、１．０終端点）においてエラーを計算することができる。次いで、エラーがテイラー級数の第３項に等しくセットされ、ｆ”(ａ)を解いて、改善された３項テイラー級数近似を発生する。１つの実施形態において、ｆ”(ａ)項は、０．６６６６７であり、エラーは、約−０．０１３３６（最小）及び０．００９（最大）に減少される。±０．００７３６の等しい最小及び最大エラーを伴う最適な解が、１／ｘの例に対して試行錯誤で決定される。最適な解は、０．６６４２２のｆ(ａ)、−０．４８５３１のｆ’(ａ)及び０．６８６１２のｆ”(ａ)を含む。
【００５５】
一般化された関数（及び複数のインターバル）に対して最適な３項テイラー級数近似を見出すことは、計算集中的な試行錯誤タスクである。図１２に示す３項テイラー級数を近似する１つの方法は、ここに述べる“Ｖｆｉｔ”（Ｖ適合）を遂行することである。このＶｆｉｔは、２項テイラー級数と同じハードウェアを付加的な加算器と共に使用して、ＬＵＴ５４に記憶されたｆ’(ａ)項及びＬＵＴ５４に記憶されたｆ”(ａ)項から正しいｆ’(ａ)項を発生する。より詳細には、急峻なサブインターバルにおいて、ＬＵＴ５４からのｆ”(ａ)項を使用してＬＵＴ５４からのｆ’(ａ)項をより急峻なものにすると共に、ＬＵＴ５４からのｆ”(ａ)項を使用してＬＵＴ５４からのｆ’(ａ)項をより浅いものにする。Ｖｆｉｔは、図１４に１つの実施形態について示されている。Ｖｆｉｔプロセスにおいて、インターバルは、２つのサブインターバルとして処理され、その一方は、インターバルの１つの終端点で始まって、ａで終了し、その他方は、ａで始まって、インターバルの他方の終端点で終了する。インターバルの中心においてａを選択するＶｆｉｔの簡単な態様が図１４に示されている。中間適合は、１つのサブインターバルにおいて遂行される（例えば、図１４における破線９８）。より詳細には、中間適合は、大きな第２導関数を有するサブインターバルにおいて遂行される。サブインターバルに対する中間適合は、関数曲線８０上にない中心における（ａにおける）終端点で終了する。終端点は、図１４において点１００として示されている。他のサブインターバルでは、擬似中間適合線が構成される（図１４における線１０２）。１つの実施形態において、線１０２は、（１）曲線８０上に点ｆ(ｔ)を見出し、ここで、ｆ(ｔ)は、点１００を通過してインターバル境界へ進む線が曲線８０と正接する点であり、そして（２）ｔにおける曲線８０と線との間の垂直方向距離が、インターバルの終端点における線と曲線８０との間の垂直方向距離に等しいという特性を有する擬似中間適合線を構成することにより、構成される。最終的に、インターバルに対するｆ’(ａ)値は、点１００を通過しそしてインターバルの縁において中間線９８及び擬似中間線１０２から符号及び大きさの両方において等距離にある線の勾配である（例えば、図１４における線１０４）。
【００５６】
ＬＵＴ５４及び７０は、図１４に示す近似に基づいて次のように埋められる。ｆ(ａ)値は、点１００であり、ｆ’(ａ)値は、線１０４の勾配であり、そしてｆ”(ａ)値は、ｆ’(ａ)値に付加されてサブインターバルごとに図１４における線９８及び１０２の勾配を生じさせる正又は負の値である。１つの実施形態において、１／ｘの例の結果は、ｆ(ａ)＝０．６４９８３（ａ＝１．５における）、ｆ’(ａ)＝−０．４８５８３、及びｆ”(ａ)＝０．１８０８４である（急峻なサブインターバルにおいてｆ’(ｘ)＝−０．６６６６７、そして浅いサブインターバルにおいてｆ’(ｘ)＝−０．３０５００となるように）。
【００５７】
別の実施形態では、より最適なＶｆｉｔが使用され、各サブインターバルに対して中間適合線が発生され、そして２本の中間適合線が交差する点としてａが選択される。次いで、その交差点を通過しそしてインターバル縁においてサブインターバルごとに中間線から符号及び大きさの両方が等距離にある線の勾配としてｆ’(ａ)が計算される。一実施形態では、１／ｘの例に対する結果は、ａ＝１．３７２５８、ｆ(ａ)＝０．７１７８３、ｆ’(ａ)＝−０．５４６４２、及びｆ”(ａ)＝０．１８２１４である（従って、急峻なサブインターバルでは、ｆ’(ａ)＝−０．７２８５５であり、そして浅いサブインターバルでは、ｆ’(ａ)＝−０．３６４２８である）。
【００５８】
図１５は、コンピュータアクセス可能な記憶媒体２００の１つの実施形態のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び／又はデータをコンピュータに与えるために使用中にコンピュータによりアクセスできる記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体のような記憶媒体、例えば、ディスク（固定又は取り外し可能）、テープ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、又はＢｌｕ−Ｒａｙを含む。更に、記憶装置は、揮発性又は不揮発性メモリ媒体、例えば、ＲＡＭ（例えば、同期ダイナミックＲＡＭ（ＳＤＲＡＭ）、ＲａｍｂｕｓＤＲＡＭ（ＲＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、等）、ＲＯＭ、又はフラッシュメモリを含む。記憶媒体は、それがインストラクション／データを与えるところのコンピュータ内に物理的に含まれる。或いは又、記憶媒体は、コンピュータに接続されてもよい。例えば、記憶媒体は、ネットワーク取り付け型記憶装置のように、ネットワーク又はワイヤレスリンクを経てコンピュータに接続される。記憶媒体は、ユニバーサルシリアルバス（ＵＳＢ）のような周辺インターフェイスを通して接続されてもよく。
【００５９】
図１５のコンピュータアクセス可能な記憶媒体２００は、合成ツール１２０、級数近似コンポーネントジェネレータ１２２、級数近似コンポーネントＲＴＬ１２４、ブロックＲＴＬ１２６、及び／又は級数近似コンポーネント実行可能モデル１２８、の１つ以上を記憶する。合成ツール１２０は、コンピュータで実行されたときに合成ツールについてここに述べた動作を具現化するインストラクションを含む。１つの実施形態において、合成ツール１２０は、シノプシスインク、カデンスデザインシステムズインク、等から入手できるような商業的に入手できるツールである。同様に、級数近似コンポーネントジェネレータ１２２は、コンピュータで実行されたときに級数近似コンポーネントジェネレータについてここに述べた動作を具現化するインストラクションを含む。級数近似コンポーネントＲＴＬ１２４は、種々の級数近似コンポーネント実施形態のＲＴＬ記述を含む。ブロックＲＴＬ１２６は、級数近似コンポーネント、非級数近似コンポーネント、及び／又は他のブロックをインスタンス生成する種々のブロックのＲＴＬ記述を含む。級数近似コンポーネント実行可能モデル１２８は、級数近似コンポーネントＲＴＬ１２４に対応する実行可能なモデルを含む。キャリア媒体は、コンピュータアクセス可能な記憶媒体、並びに送信媒体、例えば、ワイヤード又はワイヤレス送信を含む。
【００６０】
級数近似関数をハードウェアで効率的に具現化する上で設計者を助けるため、級数近似コンポーネントのライブラリを開発する方法が提供される。合成ツールは、級数近似コンポーネントの基礎的なセルライブラリを使用して、級数近似コンポーネントのＬＵＴ及び乗算・加算回路を合成し（例えば、図４及び６を参照）、効率的なネットリスト具現体を生じさせるよう試みる。しかしながら、合成ツールのバージョンごとに、又、合成ツールの売主ごとに、又、セルライブラリごとにも、著しい変化がある。従って、合成ツールのバージョン又は売主が変化した場合にライブラリを再生成するために、コンポーネントの再合成可能なバージョン（例えば、ＲＴＬ１２４）をもたせるように設計される。即ち、最小で（合成後に生じるコンポーネントによって占有される面積に関して）且つ集積回路１０の精度要件を満足する選択は、合成ツールのバージョン／売主に基づいて異なる。
【００６１】
級数近似コンポーネントジェネレータ１２２は、ユーザによりセットされた入力ガイドライン内で考えられる各具現化に対して級数近似コンポーネントＲＴＬ１２４及び級数近似コンポーネント実行可能モデル１２８を生成するように構成される。図１６は、級数近似コンポーネントジェネレータ１２２の１つの実施形態の動作を示すフローチャートである。ブロックは、理解を容易にするために特定の順序で示されているが、他の順序を使用してもよい。級数近似コンポーネントジェネレータ１２２は、コンピュータで実行したときに、図１６に示す動作をコンピュータで具現化するインストラクションを含む。
【００６２】
級数近似コンポーネントジェネレータ１２２は、級数近似コンポーネントを記述する受け容れられる入力パラメータの範囲を受け取るように構成される（ブロック１３０）。それら入力パラメータは、例えば、受け容れられる仮数巾及び／又はルックアップテーブル深度（インターバル）の範囲を含む。ＬＵＴ出力（ｆ(ａ)、ｆ’(ａ)及びｆ”(ａ)）の巾は、入力パラメータ巾であってもよいし、又はパラメータにより直接変化されてもよい。パラメータは、更に、具現化されるべき超越的／非直線的関数を含む。ある実施形態において、パラメータは、更に、どの級数展開が許されるか（例えば、中間、直線的補間、テイラー、２項、３項、等）を特定する。パラメータは、級数近似コンポーネントジェネレータ１２２に任意の望ましい形態で与えられる。例えば、ユーザは、１つ以上の入力装置を使用してパラメータを直接入力することができる。又、パラメータは、パラメータファイルに記憶されてもよい。ユーザは、方法のカバレージを保証するために、要件を満足しないとユーザが考える具現化を含む範囲を定義するように選択する。即ち、少なくとも幾つかの作用不能のオプションが試みられた場合には、その方法において多数の作用可能な解決策が生成されて分析されるという確信をある程度得ることができる。
【００６３】
級数近似コンポーネントジェネレータ１２２は、指定の範囲内の各考えられる級数近似コンポーネント具現化に対して級数近似コンポーネントＲＴＬを生成する（ブロック１３２）。各具現化は、例えば、それ自身のＲＴＬファイルに記憶される。生成される具現化のセットは、指定の範囲内で徹底的なものである。
【００６４】
級数近似コンポーネントジェネレータ１２２は、合成ツール１２０を呼び出して各具現体を合成する（ブロック１３４）。ある実施形態では、級数近似コンポーネントジェネレータ１２２は、各具現化の実行可能なモデルも生成する（ブロック１３６）。実行可能なモデルは、Ｃ又はＣ＋＋のような高レベルプログラミング言語で表現され、そして実行可能なコードへコンパイルされる。一般的に、実行可能なモデルは、対応する級数近似コンポーネントジェネレータ１２２において記述される回路の動作を模擬し、同じ入力オペランドに対して同じ結果を生じさせる。実行可能なモデルは、例えば、集積回路の他のコンポーネントに対応する実行可能なコードと共に、検証の目的で使用される。１つの実施形態では、実行可能なモデルは、各考えられる入力に対する結果のルックアップテーブルと、入力オペランドに応答するテーブルを読み取るコードとを含む。別の実施形態では、実行可能なコードは、具現化に基づいて結果を計算するコードを含む。
【００６５】
級数近似コンポーネントジェネレータ１２２は、実行可能なモデルを呼び出し、そして各考えられる入力にわたってモデルを運動させる（ブロック１３８）。級数近似コンポーネントジェネレータ１２２は、モデルからの結果を、正しい結果（ＩＥＥＥ精度の結果が望まれるかどうかに基づきＩＥＥＥ精度の結果又は１ＵＬＰ精度内の結果）と比較する。モデルが、正しい結果を発生し（ＲＴＬ具現化に対応する結果に加えて）、そして比較を行う。或いは又、級数近似コンポーネントジェネレータ１２２が、正しい結果を発生し、比較を行ってもよい。任意であるが、丸めＬＵＴ６２が使用されようとしている場合には、級数近似コンポーネントジェネレータ１２２は、どの入力が不正確な結果及び不正確な値を発生したか注目することにより、ＬＵＴ６２を発生する（ブロック１４０）。不正確さを修正するために、値（又は特に不正確さの負）がＬＵＴ６２に記憶される。
【００６６】
各具現化に対して合成及び精度決定が完了すると（ブロック１３６及び１３８が完了すると）、級数近似コンポーネントジェネレータ１２２は、各具現化の合成結果により占有される面積を比較し、そして級数近似コンポーネントの精度要求を満足する最小面積具現化を選択する（ブロック１４２）。合成により与えられるネットリストを配置してルーティングすることにより面積が決定される。或いは又、種々の回路の相対的サイズと共にネットリストにおいてコールされるゲート、カスタム回路及び／又は標準セルから面積が推定されてもよい。選択された具現化が具現化のライブラリに追加され、それが、ブロックでインスタンス生成するためにブロック設計者に使用できるようにされる（ブロック１４４）。
【００６７】
以上の開示が完全に理解されれば、多数の変更や修正が当業者に明らかとなろう。そのような全ての変更や修正は、特許請求の範囲内に包含されるものとする。
【符号の説明】
【００６８】
１０：集積回路
１２Ａ−１２Ｈ：ブロック
１４Ａ−１４Ｃ：コンポーネント
１６：級数近似コンポーネント
２０：ｌｏｇ（ｘ）コンポーネント
２２：２Xコンポーネント
２６：乗算器コンポーネント
２８：丸め／クランプコンポーネント
３０：浮動−固定変換コンポーネント
３２：加算コンポーネント
３４：丸め／クランプコンポーネント
３６：マルチプレクサコンポーネント
３８：乗算器コンポーネント
４０：丸め／クランプコンポーネント
４２：比較器コンポーネント
５０：指数計算ユニット
５２：級数近似コンポーネント
５４：ルックアップテーブル（ＬＵＴ）
５６：加算器
５８：乗算器
６０：補数デルタ回路
６２：丸めＬＵＴ
６４：正規化回路
６６：加算器
７０：ｆ”(ａ)ＬＵＴ
７２：乗算器
７４：方形回路
【図１】
0005666649.tif 000002
【図２】
0005666649.tif 000003
【図３】
0005666649.tif 000004
【図４】
0005666649.tif 000005
【図５】
0005666649.tif 000006
【図６】
0005666649.tif 000007
【図７】
0005666649.tif 000008
【図８】
0005666649.tif 000009
【図９】
0005666649.tif 000010
【図１０】
0005666649.tif 000011
【図１１】
0005666649.tif 000012
【図１２】
0005666649.tif 000013
【図１３】
0005666649.tif 000014
【図１４】
0005666649.tif 000015
【図１５】
0005666649.tif 000016
【図１６】
0005666649.tif 000017