(57)【要約】  カスタム集積回路（ＩＣ）内において実装されるモデルまたはコードのための最適数値フォーマット表現を自動的に決定するシステムおよび方法が開示されており、当該システムおよび方法は、モデルまたはコード内のダイナミック・レンジ対スタティック・レンジの比を決定し、かつその比に基づいて浮動小数点または固定小数点数値表現を選択し、あらかじめ決定済みのビット精度算術計算に関連付けされるハードウエア面積およびパワー・コストを含むコスト関数に基づいて最適数値表現フォーマットを決定し、その最適数値表現フォーマットに対してカスタマイズされたプロセッサ・アーキテクチャを自動的に生成し、生成されたプロセッサ・アーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する、ことによってそれを行なう。
2013546059.tif 000002
【特許請求の範囲】
【請求項１】
カスタム集積回路（ＩＣ）内において実装されるモデルまたはコードのための最適数値フォーマット表現を自動的に決定する方法であって、
ａ．  前記モデルまたはコード内のダイナミック・レンジ対スタティック・レンジの比を決定し、かつ前記比に基づいて浮動小数点または固定小数点数値表現を選択し、
ｂ．  あらかじめ決定済みのビット精度算術計算に関連付けされるハードウエア面積コストおよびパワー・コストを含むコスト関数に基づいて最適数値表現フォーマットを決定し、
ｃ．  前記最適数値表現フォーマットに対してカスタマイズされたプロセッサ・アーキテクチャを自動的に生成し、
ｄ．  前記生成されたプロセッサ・アーキテクチャを、半導体製造のために前記カスタム集積回路のコンピュータ可読記述に合成する、
方法。
【請求項２】
最適化コストとして前記数値表現のためのメモリ・ストレージ要件を使用する
請求項１に記載の方法。
【請求項３】
最適化コストとして前記数値表現のためのリアルタイム・パフォーマンスを決定する
請求項１に記載の方法。
【請求項４】
前記数値表現フォーマット内において必要とされるビット数を決定する
請求項１に記載の方法。
【請求項５】
前記ビット数は、任意の数を含む
請求項４に記載の方法。
【請求項６】
前記選択された数値表現フォーマットが入力信号値をノイズ・フロアより下にするか否かを決定する
請求項１に記載の方法。
【請求項７】
コスト関数を使用して前記最適数値表現フォーマットを評価し、前記コスト関数の評価が望ましいコストを超える場合には、システムのコスト要件を満たすべく変数軸に沿って処理が進行する
請求項１に記載の方法。
【請求項８】
望ましいコストを達成するべく前記モデルまたはコードにスケーリング操作を挿入する
請求項１に記載の方法。
【請求項９】
カスタム集積回路（ＩＣ）内において実装されるモデルまたはコードのための最適数値フォーマット表現を自動的に決定するシステムであって、
ａ．  前記モデルまたはコード内のダイナミック・レンジ対スタティック・レンジの比を決定し、かつ前記比に基づいて浮動小数点または固定小数点数値表現を選択し、
ｂ．  あらかじめ決定済みのビット精度算術計算に関連付けされるハードウエア面積およびパワー・コストを含むコスト関数に基づいて前記最適数値表現フォーマットを決定し、
ｃ．  前記最適数値表現フォーマットに対してカスタマイズされたプロセッサ・アーキテクチャを自動的に生成し、
ｄ．  前記生成されたプロセッサ・アーキテクチャを、半導体製造のために前記カスタム集積回路のコンピュータ可読記述に合成する、
ためのコンピュータ可読コードを備えるシステム。
【請求項１０】
１つの最適化コストとして前記数値表現のためのメモリ・ストレージ要件を使用するコード
を備える請求項９に記載のシステム。
【請求項１１】
１つの最適化コストとして前記数値表現のためのリアルタイム・パフォーマンスを決定するコード
を備える請求項９に記載のシステム。
【請求項１２】
前記数値表現フォーマット内において必要とされるビット数を決定するコード
を備える請求項９に記載のシステム。
【請求項１３】
前記ビット数は、任意の数を含む、
請求項１２に記載のシステム。
【請求項１４】
前記選択された数値表現フォーマットが必要とされる信号をノイズ・フロアより下にするか否かを決定するコード
を備える請求項９に記載のシステム。
【請求項１５】
コスト関数を使用して前記最適数値表現フォーマットを評価し、前記コスト関数の評価が望ましいコストを超える場合には、システムのコスト要件を満たすべく変数軸に沿って処理が進行するコード
を備える請求項９に記載のシステム。
【請求項１６】
望ましいコストを達成するべく前記モデルまたはコード内にスケーリング操作を挿入するコード
を備える請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カスタム集積回路（ＩＣ）または特定用途向け集積回路（ＡＳＩＣ）における固定または浮動小数点表現を自動的に選択するための方法に関する。
【背景技術】
【０００２】
電子機器がよりユーザ・フレンドリになるに従って、電子機器に負わされる機能が増大した。たとえば、埋め込みアプリケーションのための典型的なハードウエア・プロダクト開発サイクルにおいては、最初にアルゴリズムの専門家によってアルゴリズム開発が行われる。実装の間においては、技術者がＡＳＩＣソリューションを使用して、またはデジタル信号プロセッサ（ＤＳＰ）コア等のプログラマブル・ソリューションを使用して設計をハードウエアに翻訳する。それが可能であれば、設計者は、ＤＳＰコアをターゲットにするアッセンブリ・コードを、ＤＳＰベンダから提供されるツールを使用して開発する。パフォーマンス／メモリ・フットプリントが非常に重要であることから、ファームウエアの開発には、アルゴリズムを、またターゲットＤＳＰのマイクロアーキテクチャならびにツールも理解している技術者を雇用する必要がある。
【０００３】
固定小数点システムへの浮動小数点アルゴリズムの移植は、プロダクトの開発、特に信号処理アルゴリズムの実装を伴うプロダクトの開発において直面する共通の課題である。残念ながらこの努力は、数値フォーマットを表現するにあたっての技術的なメリットによって決定されるのではなく、プロセッサの利用できる程度または把握される実装のコストによってしばしば決定づけられる。信号処理段階の間に使用される数値フォーマットが良好に選択されることは、システムから期待される利益を実現するために重要である。既製のＤＳＰ上における固定小数点システム実装への浮動小数点システムのモデルの変換においては、多くの研究がなされてきた。一般には、システム設計者がＤＳＰ内においてＡＬＵ幅を選択する柔軟性を有していないと言える。システム設計者は、与えられたもの（または、利用できるもの）を受け入れ、かつ浮動小数点モデルからＤＳＰによってサポートされている数値フォーマット表現へシステムを移植しなければならない。
【０００４】
固定および浮動小数点表現に関連付けされる利点およびトレードオフについては、多くの議論で取り上げられている。所定の信号レンジにわたる固定小数点記数法と浮動小数点記数法の間における相違を図１Ａおよび１Ｂの例に示し、次にそれを説明する。
【０００５】
ここで図１Ａを参照するが、数値フォーマット表現がＮビットに制限されている場合に、システムは、２Ｎ個の可能性のある表現を行なうことができる。入力における信号電力（したがって、振幅）のレンジがｘ  ｄＢにわたって広がっているものとし、また簡単にするために、出力信号の広がり（および、システム内の任意ポイントにおける信号の広がり）が同じｘ  ｄＢにわたるようにシステム全体を通じて一様な利得が存在するものとする。その場合には、このｘ  ｄＢのレンジにわたって２Ｎ個の表現が一様に分布することが可能である。システムのハードウエア・コストは、Ｎを減少させるに従って減少する。しかしながらこれは、より少ないビンおよび、より多くの量子化誤差を招く。典型的な通信システムにおけるこの種の問題に対処する１つの伝統的な方法は、スケーリングを使用することである。入力信号のスタティック・レンジは極めて大きいものとなり得るが、システムの時定数にわたる信号のダイナミック・レンジは、それの端数でしかない。そこで適切なスケーリングを使用することによって、この記数法によって表わされるレンジを、ｘ  ｄＢの小さい端数に限定することが可能である。スケーリングが量子化ノイズに加えて丸めノイズの潜在性を導入することから、従来この演算は、システム設計者によって相応の考慮を伴って行なわれる。
【０００６】
図１Ｂは、同じＮビットが浮動小数点スキームにおいて使用される例示的なケースを示している。ｋビットが冪指数に使用され、ｎ−ｋビットが仮数に（固定小数点の場合に行なわれているように）使用されるとすれば、数値表現を単一の形で表わすことが極めて複雑になる。しかしながら数値表現が適切に選択された場合には、仮数の２＾（ｎ−ｋ）ビットが信号の任意の与えられたダイナミック・レンジをカバーするフォーマットを有することが可能であり、その信号の広がりの中には２＾ｋ個のその種のレンジ・ビンが存在する。たとえば、信号の広がりが８０ｄＢであり、このレンジが安全に８個の１０ｄＢのビンに分割可能である場合であれば、冪指数のために３ビットが必要になり、残りのｎ−３ビットを仮数のために使用することができる。これが図１Ｂに表現されている。
【０００７】
開発の間においては、設計者が、特定の問題を解決するシステム・モデルまたはアルゴリズムを作り上げる。一般に、最初のシステム・モデルは、量子化および丸めノイズ問題を回避するために浮動小数点で表現される。システム・モデルの開発の完了後システム設計者は、モデル、コード、またはアルゴリズムを、固定／浮動小数点特性があらかじめ指定されている特定のアーキテクチャのための実装に変換する。システム設計者が固定小数点実装を考慮するときは、スケーリング・ポイントおよびスケーリング・アルゴリズムがマニュアル定義されなければならない。しばしばこれは、その種の方法の演算コストのハードウエアの正確な知識無しに行なわれる。モデルとは異なる浮動小数点表現が実装のために選択される場合には、システム設計者が、冪指数または仮数のために使用されるビットをコントロールする術が無く、したがって最適に満たないフォーマットを扱わなければならない。
【発明の概要】
【課題を解決するための手段】
【０００８】
１つの態様においては、コンピュータ可読コードまたはモデルによって記述されるカスタム集積回路（ＩＣ）を自動的に生成するシステムおよび方法が開示され、少なくともこのＩＣは、浮動小数点パラメータ、パフォーマンス制約、および入力信号のためのスタティック・レンジならびにダイナミック・レンジを有する。これは、ダイナミック・レンジ対スタティック・レンジの比を決定し、当該比があらかじめ決定済みの値を超過する場合には浮動小数点数値表現を選択し、それ以外であれば固定小数点数値表現を選択し、パフォーマンス制約に基づいて数値表現フォーマットを選択し、選択された数値表現フォーマットに対して固有のカスタマイズがなされたハードウエアを含むプロセッサ・アーキテクチャを自動的に生成し、生成されたプロセッサ・アーキテクチャを、半導体製造のためにカスタム集積回路のコンピュータ可読記述に合成する、ことによって行なわれる。
【０００９】
上記の態様の実装には、次に示す内容のうちの１つまたは複数を含めることができる。方法は、生成されたプロセッサ・アーキテクチャを伴うカスタムＩＣ上においてコンピュータ可読コードを実行することを含む。数値表現フォーマットは、さらに、それぞれの数値表現における数値表現のメモリ・ストレージ要件、ハードウエア面積およびパワー・コスト、リアルタイム・パフォーマンス、またはパフォーマンスの低下の決定を包含する１つまたは複数のＩＣパフォーマンス要件に基づいて選択することが可能である。数値表現フォーマットに必要とされるビット数が決定されるが、そのビット数は、８、１６、２４、３２、６４、１２８、または２Ｎビットといった一般的に使用されているビット数ではなく、奇数のビット数を有することが可能である。プロセスはまた、選択された数値表現フォーマットがノイズ・フロアより下であるか否かのチェックも含む。
【００１０】
好ましい実施態様の利点には、次に示す内容のうちの１つまたは複数を含めることができる。システムは、すべてのコストが考慮に入れられ、かつシステム設計者が評価するべき最良の数値表現およびビット幅の候補を獲得するように評価プロセスを自動化する。方法は、与えられたＨＷ実装の面積、タイミング、およびパワー・コストを迅速かつ自動化された態様で評価することができる。この方法は、コスト計算エンジンとして使用される。プロセスは、設計‐検証‐最適化方法を使用して、与えられた応用のための最良の数値フォーマット表現を見つけ出す。方法は、最適態様でアルゴリズムに基づいてＤＳＰを自動的に合成することを可能にする。これは、システムに、数値フォーマットおよびＡＬＵの幅を非標準とすることが可能になるという新しい柔軟度を与える。システム要件に適合させてそれを選択することが可能である。しかしながらシステム設計者が、別のものではなくこの特定の表現を選ぶことに関連付けされるハードウエア面積、遅延、およびパワー・コストを意識する必要はない。方法は、与えられたシステムのための最適数値フォーマット表現に到達すること、または少なくとも最適システムの設計を可能にするためにシステム設計者のための選択肢のセットを絞り込むことができる。プロセスは、ハードウエア面積、遅延、およびパワーが、アルゴリズム評価段階において可能な限り正確にモデリングされることを可能にする。固定小数点および浮動小数点表現は、全体論的な観点から考察される。数値の精度変更プロセスが自動化される。システムは、システムのパフォーマンスを評価すること、およびノイズ・フロアにおける増加を測定することが可能である。システムは、実行ユニット単独ではなく全体論的な観点からリアルタイム・パフォーマンス制約を考察し、したがって完全なカスタムＩＣの面積、パワー、およびパフォーマンス特性が有意に強化される。
【００１１】
システムの好ましい実施態様のこのほかの利点には、次に示す内容のうちの１つまたは複数を含めることができる。このシステムは、チップ設計の問題を軽減し、それを単純なプロセスにする。これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わりに、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、これまで数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。このシステムは、ハードウエア・チップ・ソリューションが設計される方法におけるパラダイムを完全にシフトするものである。ここで述べている自動システムは、システムへのプライマリ入力が、ロー・レベルのプリミティブではなく、コンピュータ可読コード、モデル、またはアルゴリズム仕様であることから、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエア・チップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。
【図面の簡単な説明】
【００１２】
【図１Ａ】図１Ａは、数値表現の一例を示した説明図である。
【図１Ｂ】図１Ｂは、数値表現の一例を示した説明図である。
【図２Ａ】図２Ａは、自動的な数値表現フォーマット選択を伴うカスタムＩＣを自動的に生成するシステムの動作の一例を示したフローチャートである。
【図２Ｂ】図２Ｂは、自動的な数値表現決定プロセスをより詳細に示したフローチャートである。
【図２Ｃ】図２Ｃは、自動的な精度決定プロセスをより詳細に示したフローチャートである。
【図３】図３は、無線受信機への図２Ａのプロセスの適用例を示した説明図である。
【図４】図４は、カスタムＩＣを自動的に生成する一例のシステムを示したブロック図である。
【発明を実施するための形態】
【００１３】
図２Ａは、自動的な数値表現フォーマット選択を伴うカスタムＩＣを自動的に生成するシステムの動作の一例を示したフローチャートである。このシステムは、入力としてのアルゴリズム的なプロセスまたはコードに基づき、高度に自動化されたツールを使用してカスタム集積回路の自動的な設計および生成を行ない、それには人間の関与が実質的にまったく必要とされない。
【００１４】
図２Ａに戻るが、プロセスは、ＣまたはＭＡＴＬＡＢ（マトラボ）モデル等のハイ・レベル言語において明細に指定されたアルゴリズムを受け取り、分析する（１０）。１つの実施態様においては、最初のバージョンのプロダクトが、浮動小数点数値表現を使用して開発されることを仮定する。これは任意タイプの浮動小数点表現とすることが可能であるが、例示の実施態様は、３２ビットＩＥＥＥの浮動小数点表現を使用することが可能である。プロセスは、次に挙げる事項のうちの１つまたは複数がプロダクトの開発者またはシステム・アーキテクチャ開発者によって識別されることを必要とする。
最適化を必要とする浮動小数点フォーマットにおいて表現されるパラメータ。
システムの実動Ｃコードまたはモデル。
システムのリアルタイム・パフォーマンス制約。
入力信号のスタティック・レンジ。
システムの時定数を通じた同じ信号のダイナミック・レンジ。
丸めおよび量子化に起因するノイズ・フロアにおける受け入れ可能な最大値の増加。
【００１５】
プロセスは、ダイナミック・レンジ対スタティック・レンジの比を決定する（１２）。この比が１に近くなければ、浮動小数点数値表現が好ましい。この比が概略で１であれば、固定小数点表現が好ましい（１４）。次にプロセスは、ヒューリスティックを適用して実際の数値表現フォーマットを決定する（１６）。選択された数値表現フォーマットにおける精度のビット数が決定される（１８）。プロセスは、選択された数値表現フォーマット（固定または浮動小数点フォーマット）および選択されたビット幅を変数に適用し、選択された数値表現フォーマットおよびビット数を処理するカスタム算術論理ユニット（ＡＬＵ）を用いて最良プロセッサ・アーキテクチャを反復的に決定する（２０）。プロセッサ・アーキテクチャのハードウエアを伴うカスタムＩＣが作成される（２２）。プロセスはまた、プロセッサ・アーキテクチャに対して最適化されたカスタムＩＣ上においてアルゴリズムを走らせるファームウエアを自動的に生成する（２４）。その後、カスタムＩＣ上においてファームウエアが実行され、手作業で作り上げられるカスタム・チップ設計プロセスとは対照的に、人間の関与を最小限にしてまたはまったく伴わずにアルゴリズムからカスタム・ハードウエアへの変換が完了する。
【００１６】
その結果は、新しい柔軟度を伴った、すなわち、数値フォーマットおよびＡＬＵ幅を非標準とすることが可能なカスタム・チップ・ソリューションである。数値フォーマットおよびＡＬＵは、システム要件に適合させるべく選択することが可能である。しかしながらシステム設計者は、別のものではなくこの特定の表現を選ぶことに関連付けされるハードウエア面積、遅延、およびパワー・コストを意識していない。
【００１７】
図２Ａのシステムは、チップ設計の課題を軽減し、それを単純なプロセスにする。このシステムは、チップ設計の知識をまったく伴うことなく、アルゴリズム設計者自身が直接ハードウエア・チップを作ることが可能となるように、リスクを取り除き、チップ設計を自動的なプロセスにする。システムへのプライマリ入力は、ＣまたはＭＡＴＬＡＢ（マトラボ）等のよりハイ・レベルの言語で記述されたコンピュータ可読コードまたはアルゴリズム仕様となる。システムは、実行パフォーマンスを最適化して小数点選択およびビット精度から生じるノイズを最小限にする最良小数点数値表現を伴う最良のハードウエア・インストラクション・セットの最適選択を行なうことが可能である。最良数値表現フォーマットおよびビット精度の選択は、ＩＣ上のパフォーマンス制約のセットを前提として最良アーキテクチャを示し、かつ有意のパフォーマンス利点を提供する詳細なシミュレーションを通じてなされる。これとは対照的に、伝統的なアプローチは、設計者が任意の固定小数点アーキテクチャを使用することを強いる。数値表現フォーマットおよびビット精度がアプリケーション・コード／アルゴリズムのために選択されると、人間の関与をまったく伴うことなく、システムによってカスタム集積回路が自動的に生成され、その結果、プロダクト開発時間およびコストが削減される。このカスタムＩＣは、自動的に生成されたソフトウエア開発キット（ＳＤＫ）および自動的に生成されたファームウエアを使用し、コード／アルゴリズムを効率的に走らせることが可能である。
【００１８】
これらの実施態様は、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびコンピュータ可読コードまたはアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わりに、コンピュータ可読コードまたはアルゴリズムが、それの適用のために特に最適化されたプロセッサ上において実装されることが可能となる。好ましい実施態様は、最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。このプロセスは、これまで数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。
【００１９】
図２Ａのプロセスの使用は、ソフトウエア・プログラマブルＤＳＰの開発に適用され、システム内のすべての段階にわたってもっとも良好に働く単一の数値フォーマットを決定することができる。モデルまたはコードが固定ハードウエアをターゲットとする場合には、システム内の多様な段階に対してもっとも良好に働く数値フォーマットに自立的に到達する。
【００２０】
次に、カスタム・ハードウエアを生成する図２Ａの例示的な応用について説明する。図３は、アンテナ（図示せず）から無線信号を受信し、アナログ・フロント・エンド（ＡＦＥ）９２に提供される通信システムの受信機を示している。無線信号は、アナログ・デジタル・コンバータ（ＡＤＣ）９３によって取り込まれ、メモリ９４からのコードを実行するデジタル信号プロセッサ（ＤＳＰ）９５に提供される。ＤＳＰ９５は、カスタム設計ＡＬＵ９６を使用し、図２Ａのプロセスに従って算術演算を実行する。ＤＳＰ９５はまた、ユーザ・インターフェース（ＵＩ）９８からコマンドも受信する。
【００２１】
上記のシステムにおいては、ＡＤＣ９３が常に、ＡＦＥ９２から受信されるもっとも弱い信号でさえ、サンプル中に数ビットの情報を有するように選択される。ＡＤＣ９３の標本サイズは、システムが動作することが期待できる入力ＳＮＲおよびサンプルに対してなされる信号処理において期待される利得によって決定づけられる。上記の使用の場合においては、すべての信号処理がＤＳＰ９５によって行なわれる。信号処理段階の間に使用される数値フォーマットが良好に選択されることは、システムから期待される利益を実現するために不可避である。従来においては、システム設計者が、ＤＳＰ内においてＡＬＵ幅を選択する柔軟性を有していない。システム設計者は、与えられたもの（または、利用できるもの）を受け入れ、かつ浮動小数点モデルからＤＳＰ９５によってサポートされている数値表現にシステムを移植しなければならない。しかしながら図２Ａのプロセスを使用すれば、システムが、システム設計者のために最良の数値表現をおよびＡＬＵ９６内のビット幅を自動的に選択して特定の問題を解決することができる。
【００２２】
プロセスは、ダイナミック・レンジ対スタティック・レンジの比を計算する。それが大きければ、適切な表現が浮動小数点となることがありがちである。この例においては、アンテナから受信される情報は、いくつかのサンプルのスパン内の信号のスタティック・レンジ全体にわたって変化することは起こりそうもない。その種の場合においては、固定小数点表現が、情報が失われないことを確保するために有意のスケーリング・アルゴリズムの実装を必要とすることになる。しかしながら適切に選択された浮動小数点数値フォーマットを用いれば（かつ、ＡＤＣの標本サイズに基づいてビット幅が選択されれば）、スケーリングが排除されるか、またはスケーリングの複雑性が有意に低減されることになる。それに加えて、殆どの通信受信機応用においてはわずかな有効ビットだけが処理のために必要であることから多様な段階を通じて必要とされるビット数がはるかに少なくなり得る。オーバーフローを防止するために固定小数点表現に伴って必要とされる追加のビットは、浮動小数点表現に起因して制限される。
【００２３】
信号のスタティック・レンジと信号のダイナミック・レンジが同一の場合（画像処理において一般的）には、固定小数点表現がより良好に働くことがありがちとなる。固定小数点ハードウエアは、面積においてより小さく、同じビット数について消費するパワーがより少ない。信号のダイナミック・レンジが大きい場合には、処理精度に妥協することなく必要とされるビット数を浮動小数点表現により低減可能となることは起こりそうもない。
【００２４】
図２Ｂは、自動的な数値表現決定プロセスをより詳細に示している。図２Ｂにおいて、入力パラメータが受信される（６０）。決定プロセスが続いて実行される（６２）。浮動小数点または固定小数点フォーマットの自動選択の後、プロセスは、望ましいビット幅を決定する（６４）。ノイズ・フロアが評価され（６６）、ノイズ制約が満たされていない場合には、プロセスが６４にループバックし、必要に応じてビット幅を増加する。（６６）から、プロセスは、システムが満たさなければならない制約または評価基準に照らして最終的な数値表現を評価する（６８）。
【００２５】
最適化コスト関数が使用され、所定のシステムのための好ましい数値フォーマットに関する決定に到達する。このコスト関数は、次に挙げる事項からなる。
浮動小数点表現の使用に起因して節約されると推定されるメモリ・ストレージ。
２つの潜在的実装候補についてのハードウエア面積およびパワー・コストの評価。
それぞれの場合におけるリアルタイム・パフォーマンス条件の評価。
それぞれのフォーマットに起因して推定されるパフォーマンスにおける悪化。
【００２６】
これらのパラメータをコスト関数に対する入力として最適化アルゴリズムが、このシステムのために浮動小数点表現が必要であるか否かについての決定に進む。それが否であれば、アルゴリズムは、固定小数点表現を推奨する。
【００２７】
選択されるフォーマットに関する決定がなされた後は、そのフォーマットにおいて必要とされる正確なビット数の識別が次のステップとなる。
【００２８】
図２Ｃは、自動的な精度決定プロセスをより詳細に示している。最初にプロセスは、入力変数、ビット幅、および望ましい信号対雑音比（ＳＮＲ）を識別する（７２）。次にプロセスは、行なわれることになる算術演算を決定する（７４）。プロセスは、必要とされる精度を決定する（７６）。次にプロセスは、必要とされる精度に関連付けされるコスト関数を評価する（７８）。コスト関数があらかじめ決定済みのスレッショルドより低い場合にはプロセスが終了する。それに代わり、コストが高い場合には、プロセスが１つのシステム変数を変更してループバックし、精度決定プロセスを継続する（７４）。
【００２９】
１つの実施態様においては、精度推定アルゴリズムが、次に挙げる事項を行なうコードを含む。
（１）すべてのシステム・クリティカルな入力およびそれらのビット幅の識別。これは、アルゴリズムへの入力の１つである。
（２）入力ＳＮＲの識別。これもまた、システムへの入力とならなければならない。
（３）システム・モデル記述の静的パースを使用するこれらの変数に対するすべての算術演算のセットの識別。
（４）ＳＮＲにおける低下を最小限にする算術演算のセットの適応に必要となる精度の推定。
（５）コスト関数の評価。
（６）コストがスレッショルドより高い場合における、多様な軸のうちの１つのコストを減少させる軸に沿った進行。コスト関数の結果は、進行するときに沿う軸を示す。１つの例においては、有効ビットの数を減らすスケーリング段階の挿入、より広い内部精度を維持しつつ、より小さい入力および出力精度を維持する算術演算の併合、ＳＮＲの低下の受け入れ、より小さい精度演算を並列に実行してより高い精度結果を達成するシステムの周波数の増加、システム内のいくつかの段階の精度を下げてそのほかを増加するが全体的なコストを下げることをとりわけ含む。
【００３０】
１６、２４、または３２ビット表現に制限している標準ＤＳＰとは異なり、このシステムは、すべての表現フォーマットを評価する。手前のステップで得られた決定は、必要とされるビット数の概略の推定を伴う。それがこの操作でさらに微調整される。この操作を実行するために、次に示すようなコスト関数を再び使用することができる。１つの実装においては、コスト関数が次に挙げる事項のための方法を含む。
与えられたビット精度の算術計算の実装に関連付けされるハードウエア面積およびパワー・コストの評価。
与えられたビット精度の算術計算のためのリアルタイム・パフォーマンス制約の評価。これは、与えられたビット精度の算術計算の実装に伴うハードウエア遅延をアルゴリズムが推定することが可能であることから計算することができる。
この数値フォーマットに起因するシステムのＳＮＲにおける悪化の推定。
システムのパフォーマンスを決定するクリティカルなシステム変数および配列に対して実行される算術演算の数。
【００３１】
最適化アルゴリズムによって定義済みのコスト関数が使用されて可能性のある数値フォーマット表現の候補が評価され、最適表現に到達する。アルゴリズムは、システム・モデル内に定義された精度を伴って開始し、任意の与えられた変数に対して実行される多数の算術演算に関係する情報を使用してその変数のための数値フォーマットの候補に到達する。その後、コストが評価され、そのコストが受け入れ可能であれば、選択されたフォーマットが保存される。それ以外の場合には最良可能軸（推定されたコストから推論される）に沿って進行することによって新しいフォーマットに到達し、プロセスが反復される。次の段落ではこのアルゴリズムを詳細に説明する。
【００３２】
最適化されたビット精度近似が自動的にコード内の変数を表わすために使用されて、多様な使用事例シナリオを通じたシステムのパフォーマンスが推定される。
【００３３】
結果が要件と比較され、さらに表現が最適化される。選択された最終表現が推定されたビット精度から激しく変化する場合には、利用可能な追加情報に基づいてその操作が再考され、最適化プロセスが再び実行される。
【００３４】
上で述べたすべてのステップは、自動化され、実際的な人間の関与を必要としない。しかしながら、段階の開始時および終了時の入力および制約は、アルゴリズムの機能に精通している訓練されたユーザによって提供される必要がある。
図４は、カスタムＩＣを自動的に生成するシステムの一例を示している。図４のシステムは、選択された目標とするアプリケーションに対するプログラマブルハードウエア・ソリューションにおいて、インストラクション・セット圧縮および可変幅エンコーディングを使用する最適インストラクション・セットを伴うアーキテクチャを自動的に生成することをサポートする。目標とするアプリケーションの仕様は、一般に、Ｃ、ＭＡＴＬＡＢ（マトラボ）、ＳｙｓｔｅｍＣ（システムＣ）、フォートラン、エイダ等の高レベル言語またはそのほかのいずれかの言語によるコンピュータ可読コードとして表現されたアルゴリズムを通じてなされる。仕様は、目標とするアプリケーションの記述を含み、またそれには、望ましいコスト、面積、電力、速度、パフォーマンス、およびそのほかのハードウエア・ソリューションの属性といった１つまたは複数の制約も含まれる。
【００３５】
図４においては、ＩＣカスタマがプロダクト仕様１０２を生成する。通常は、所望のプロダクトのすべての主要機能を取り込んだ初期プロダクト仕様が存在する。そのプロダクトから、アルゴリズムの専門家が、そのプロダクトに必要とされるコンピュータ可読コードまたはアルゴリズムを識別する。それらのアルゴリズムのうちのいくつかは、サードパーティから、または標準開発委員会からのＩＰとして利用可能となることがある。それらのうちのいくつかは、製品開発の一部として開発されなければならない。この態様においては、さらにプロダクト仕様１０２が、とりわけＣプログラム等のプログラムまたはＭＡＴＬＡＢ（マトラボ）モデル等の数学モデルとして表現することが可能なコンピュータ可読コードまたはアルゴリズム１０４で詳述される。プロダクト仕様１０２は、また、とりわけコスト、面積、電力、プロセス・タイプ、ライブラリ、およびメモリ・タイプ等の要件１０６も含んでいる。
【００３６】
コンピュータ可読コードまたはアルゴリズム１０４および要件１０６は、自動化されたＩＣジェネレータ１１１に提供される。コードまたはアルゴリズム１０４およびチップ設計に課せられた制約だけに基づいて、ＩＣジェネレータ１１１は、人間の掛かり合いを殆ど、またはまったく伴うことなく、ＧＤＳファイル１１３、ＩＣを走らせるファームウエア１１５、ソフトウエア開発キット（ＳＤＫ）１１６、および／またはテスト・スート１１８を含む出力を自動的に生成する。ＧＤＳファイル１１３およびファームウエア１１５は、カスタム・チップ１２１の製造に使用される。
【００３７】
このシステムは、チップ設計の問題を緩和し、それを単純なプロセスにする。このシステムは、プロダクト開発プロセスの焦点を、ハードウエア実装プロセスからプロダクト仕様およびアルゴリズム設計に戻すようにシフトさせる。特定のハードウエアを選択することに束縛される代わり、アルゴリズムが、その適用のために特に最適化されたプロセッサ上において実装されることが常に可能となる。システムは、この最適化されたプロセッサを自動的に、すべての関連付けされたソフトウエア・ツールおよびファームウエア・アプリケーションとともに生成する。この全体的なプロセスは、現在数年の問題として対処されていた事項を、数日の問題として対処することを可能とする。要約して言えば、このシステムは、プロダクト開発のデジタル・チップ設計部分をブラック・ボックスにする。
【００３８】
１つの実施態様においては、このシステム・プロダクトが、次に示すものを入力として取ることが可能である。
Ｃ／ＭＡＴＬＡＢ（マトラボ）で定義されたコンピュータ可読コードまたはアルゴリズム、
必要とされる周辺機器、
面積目標、
電力目標、
マージン目標（将来的なファームウエア更新のためにどの程度のオーバーヘッドを組み込むべきか、またどの程度複雑性が増加するか）、
プロセスの選択肢、
標準セル・ライブラリの選択肢、
テスト可能性スキャン。
【００３９】
システムの出力は、関連付けされるファームウエアすべてを伴ったデジタル・ハード・マクロとすることができる。このデジタル・ハード・マクロのために最適化されたソフトウエア開発キット（ＳＤＫ）もまた自動的に生成されて、ファームウエアに対する将来的なアップグレードがプロセッサの交換を強いることなく実装されるようにすることが可能である。
【００４０】
このシステムは、任意の選択された目標とするアプリケーションに対して完全かつ最適なハードウエア・ソリューションを自動的に生成する。共通の目標とするアプリケーションは埋め込みアプリケーション空間内にあるが、それらは、必ずしもそれに限定されない。
【００４１】
次に、例として、自動化されたチップ設計システムをサポートするコンピュータについて考察する。コンピュータは、好ましくは、プロセッサ、ランダム・アクセス・メモリ（ＲＡＭ）、プログラム・メモリ（好ましくは、フラッシュＲＯＭ等の書き込み可能な読み出し専用メモリ（ＲＯＭ））、および入力／出力（Ｉ／Ｏ）コントローラをＣＰＵバスによって結合された形で含んでいる。このコンピュータは、ハードディスクおよびＣＰＵバスに結合されるハード・ドライブ・コントローラをオプションとして含むことができる。ハードディスクは、本発明等のアプリケーション・プログラムおよびデータを記憶するために使用することができる。それに代えて、アプリケーション・プログラムをＲＡＭまたはＲＯＭ内に記憶させることができる。Ｉ／Ｏコントローラは、Ｉ／Ｏバスを経由してＩ／Ｏインターフェースに結合される。Ｉ／Ｏインターフェースは、シリアル・リンク、ローカル・エリア・ネットワーク、無線リンク、およびパラレル・リンク等の通信リンクを介してアナログまたはデジタル形式でデータの受信および送信を行なう。オプションとして、表示器、キーボード、およびポインティング・デバイス（マウス）がＩ／Ｏバスに接続されることもある。それに代えて、Ｉ／Ｏインターフェース、表示器、キーボード、およびポインティング・デバイスのために別々の接続（別々のバス）が使用されることもある。プログラマブル処理システムは、あらかじめプログラムすること、または別のソース（たとえば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、または別のコンピュータ）からプログラムをダウンロードすることによってそれをプログラムすること（および再プログラムすること）ができる。
【００４２】
各コンピュータ・プログラムは、目に見える形として、コンピュータによってストレージ媒体またはデバイスが読み出されたときに、ここで説明している手順を実行するべくそのコンピュータの構成および動作のコントロールを行なうために、汎用または専用プログラマブル・コンピュータによって読み出されることが可能なマシン可読ストレージ媒体またはデバイス（たとえば、プログラム・メモリまたは磁気ディスク）内に記憶される。また本発明のシステムは、コンピュータ・プログラムを用いて構成されるコンピュータ可読ストレージ媒体内において具体化されると考えてもよく、それにおいてストレージ媒体は、ここで述べている機能を実行するべく特定の、あらかじめ定義済みの態様でコンピュータを動作させるように構成される。
【００４３】
以上、ここでは、特許法に従うため、および当業者に、新しい原理の適用および必要とされる専用の構成要素の組み立ておよび使用に必要となる情報を提供するために、相当に詳細に本発明を説明してきた。しかしながら、本発明が明確に異なる装置およびデバイスによって実行可能であること、および装置の詳細および動作手順の両方に対する多様な修正が本発明自体の範囲からの逸脱なしに達成可能であることは理解されるものとする。
【図１Ａ】
2013546059.tif 000003
【図１Ｂ】
2013546059.tif 000004
【図２Ａ】
2013546059.tif 000005
【図２Ｂ】
2013546059.tif 000006
【図２Ｃ】
2013546059.tif 000007
【図３】
2013546059.tif 000008
【図４】
2013546059.tif 000009
【国際調査報告】
2013546059.tif 000010
2013546059.tif 000011