上流のCPUの命令セットアーキテクチャレベルでのライセンスもある。ARMは設計フローの中で、異なるIPのライセンスモデルを併存させている。Synthesis)と自動レイアウトによって、設計を実際のチップに落とし込むまでが自動化/半自動化されているのが一般的だ。Synthesizable)コアと呼ばれる。Language:ハードウェア記述言語)で記述されたCPUコアが、最終的にチップのマスクデータに自動または半自動で変換される。HDLは、言ってみればハードウェア業界のC言語的な位置にある。そのほかにもいくつかのマイナー言語や内製言語、ビヘイビアレベルの記述言語がある。Language)」と呼ばれるIntel独自の内製HDLを使っており、HDLレベルから業界標準とは異なっていた。i7(Nehalem:ネハーレン)から「SystemVerilog」に切り替えた。Level:レジスタ転送レベル)」データとなる。HDLが言語の種類で、RTLが回路記述の抽象化のレベルで、HDLによってRTLのレベルのコードを書くという意味だ。レジスタとその間の論理機能として、抽象化されて記述されているためRTLと呼ばれる。Synthesis)を行なうことで、実際のハードウェアに対応したゲートレベルの回路設計データに変換される。ソフトウェアに例えると、HDLが高級プログラミング言語で、RTLコードがソースコード、論理合成がコンパイルとなる。RTLコードは可読性がいいため、読めば回路の構成が分かる点もプログラミング言語のソースコードと似ている。実際に、RTLソースコードと呼ばれることも多い。同様に論理合成もコンパイルと呼ばれることが多い。RTLの論理レベル設計のさらに上流に、ビヘイビアレベルのアーキテクチャ設計があり、そちらも記述言語が開発されている。LSI設計とソフトウェアのアナロジー(PDF版はこちら)自動配置配線とカスタムの配置配線RTLからは論理合成によって、より下位のレベルの回路設計データ「ネットリスト(Net-List)」が自動生成される。Level)記述の論理回路図だ。実際のトランジスタには、まだ対応していないが、IPはよりブラックボックスとなる。ソフトウェアに例えると、ネットリストは中間言語のようなものだ。ネットリストは、さらに物理的な配置配線を自動的に生成するツール群に渡され、トランジスタレベルのデータに変換される。自動レイアウトツールによる配置配線のフィティングの結果、最終的なダイ上でのレイアウトのオブジェクトファイルが生成される。実際には、ここまではワンパスではなく、複数のコンパイルツールによる段階を経る。最近では論理合成とネットリストからの配置配線を統合的に行なうフローもある。レイアウトデータからは、さらにマスクパターンが作成され、Fabで製造ができるようになる。ソフトウェアに例えると、レイアウトやマスクパターンが、バイナリコードに当たる。ちなみに、CPUコアの設計では、自動的な配置配線を行なわずに、手作業で配線設計を行なう場合もある。Area:性能、電力、ダイ面積)の最適化を行なう。IntelやAMD、IBMなどが高性能CPUの設計で採っている手法だ。この手法の場合、PPAは上がるが、設計は特定のプロセスに依存するようになり、設計に期間と労力が必要となる。利点(PDF版はこちら)現在は完全合成可能コアをRTLからコンパイルする段階でも、ツールによってPPAの高度な最適化が行なわれるようになっている。カスタムの設計手法と自動化した合成の2つは、まだ併存している。設計フローとIPライセンスの関係プロセッサコアをライセンスする場合は、RTLからマスクまでの間の設計フローの中で、どこかの段階のデータをライセンシに渡すことになる。どの段階のIPを渡すかによって、同じIPライセンスでも、内容が大きく異なる。カスタムマクロやセミカスタムマクロを含むコアでは、ライセンス形態も制約される。合成可能なIPを他社にライセンスする場合には、設計フローの各段階のデータで渡すことができる。Core)」と呼ばれるが、単にRTLとだけ呼ばれる場合も多い。ソフトマクロは、ライセンスを受けたチップ設計企業がカスタマイズを行なうことも原理的には可能だ。実際にカスタマイズできるかどうかは、ライセンスの条件による。ARMの場合は、RTLでライセンスするCPUコアについては、キャッシュの有無を始めとしてさまざまなカスタマイズ項目を設けており、その枠内なら顧客が自由にカスタマイズできる。設計フローとIPライセンス(PDF版はこちら)RTLから論理合成したネットリストをライセンスする場合もある。IP企業の中には可読性の高いRTLを渡すのを嫌う企業がある。RTLのライセンスはソースコードを渡すことと同じだと考えれば、嫌う理由も分かる。Core)」と呼ばれる場合もあり、広義のハードマクロに含む場合もある。IP)」といった呼び方をする。特定のファウンダリの特定のプロセスに最適化されたIPとなり、性能/電力/エリア(PPA)に最適化されているため、性能や電力効率が高い。その反面、完全にブラックボックスで、カスタマイズはできない。RTLライセンスでも推奨するフロアプランニングを示している場合もある。nmプロセスでのハードマクロの例。ARMは性能の最適化と電力の最適化の2種類のハードマクロを用意しているかつては、IPコアはハードマクロやネットリストが一般的だった。EDAツールによる論理合成を使った設計が一般的になってからは、ソフトマクロが浸透した。現在の流れは、ソフトマクロが浸透したものの、性能と電力への最適化が重要となったためPPAの効率のいいハードマクロのようなソリューションへと振り戻しが来ているところだ。時代がやや揺り戻しているような雰囲気だが、以前のハードマクロ一辺倒だった時代とはかなり異なっている。カスタムマクロを多く含むコアの場合は、ライセンスする場合はハードマクロが基本となる。IntelのPC向けCPUコアをライセンスしようとしたら、ハードマクロで提供することになると推測される。その場合、IntelのFabからほかのFabへと移すためには、Intel自身が物理設計を行なわなければならない。カスタムマクロを含むコアを、RTLでライセンスしたり、FPGA合成可能なRTLにしてライセンスするような特殊なケースもある。Intelは実際、初代Atom(Bonnell:ボンネル)コアなどのRTLを、FPGA合成可能に書き換えている。多岐に渡るARMのCortex-AライセンスARMの場合は、通常はRTLでIPライセンスしている。Cortex-Aファミリに関しては、特定のファウンダリの特定のプロセスに合わせたハードマクロも用意している。Pack)」も提供している。ARMのCortex-AファミリのIPライセンスには、大きく分けて(1)RTL、(2)RTL+POP、(3)ハードマクロの3種類がある。ちなみに、ARMも下位のCortex-Mの場合は、POPやハードマクロはほぼ提供していない。XV」で公開されたCortex-A15のハードマクロ「Seahawk」のフロアプランハードマクロが最もPPA最適化されており性能が高いが、プロセスに依存する。RTLベースの場合はプロセスへの依存がないが、全く最適化しない状態では性能が低い。RTLからチップベンダーが物理設計の最適化を行なうことでハードマクロのPPAに近付けることができる。ARMの場合、RTLライセンスでPOPを使った場合があり、PPA最適化はRTLから合成しただけの場合とハードマクロの中間になる。40Gプロセスでの各ライセンスによる動作周波数の例。右の2つがハードマクロ、左端がRTL、右から2つ目はPOPとなっている。ARMのPOPソリューション選択としては、カスタマイズが必要なく、ともかく短い設計期間で高いPPAのコアが欲しいという顧客はハードマクロを、自由度が欲しいが、高効率のPPA最適化も手間をかけずに行ないたい場合はPOPソリューションを、PPA最適化を含めて自前(またはEDAベンダーの協力)で実現する場合はRTLを、ということになる。ARMの場合は、さらに命令セットアーキテクチャのライセンスであるアーキテクチャルライセンスもCortex-Aについては行なっている。アーキテクチャルライセンスでは、ARMのライセンシーは命令セットさえ互換なら、自由に自分のニーズに合ったCPUコアを設計することができる。Qualcommの「Snapdragon」や、NVIDIAの「Denver」などは、アーキテクチャルライセンスでゼロからCPUコアを開発している。ARMのIPでは実現できない機能や性能を実現したい場合はアーキテクチャルライセンスとなる。ARMのCortex-Aファミリーライセンスの概念図(PDF版はこちら)ただし、ARMの場合はアーキテクチャルライセンスとIPライセンスを組み合わせることはできない。改変によって発生する潜在的な問題が発生するのを防ぐためでもあり、2系統のライセンスは区別されており、RTLソフトコアはARMの許可する範囲でしかカスタマイズできないという。アーキテクチャルライセンスを持つQualcommは、自社コアを開発する一方で、Cortex-A5やCortex-A7はそのまま使っている。ARMの各ライセンス形態は多岐に渡っており、顧客は自社のニーズに合わせたライセンスを選ぶことが可能だ。この柔軟性がARMの強味となっている。