FPGAやASICの世界でよく聞く言葉に、「ハードマクロ」や「ソフトマクロ」があります。でも、「マクロって何? マクロ定数のマクロ?」「ソフトってソフトウェアのこと?」と、初学者にとってはイメージしづらい用語の一つです。
この記事では、これらの「マクロ」が意味するものを、論理設計・物理設計・開発プロセスの観点からわかりやすく解説します。
目次
「マクロ」とは何か?
ここで言う「マクロ」は、**再利用可能な回路ブロック(モジュール)**を指します。
- 大きめのまとまった機能単位(CPU、RAM、DSPブロック、UARTコアなど)
- 小さなゲートや論理素子の組み合わせではなく、一つの機能として意味を持つ単位
たとえば「RISC-V CPUコア」「AXIバスインターフェース」「JPEGエンコーダ」などは、いずれも「マクロ」と呼ばれます。
ソフトマクロとは?
ソフトマクロ(Soft Macro)は、論理レベルで記述されたモジュールです。
- 通常はHDL(VerilogやVHDL)で提供される
- 論理合成・配置配線・レイアウト生成をユーザー側で行う
- FPGAにもASICにも適用可能
- 柔軟性が高く、移植性がある
特徴:
- 構成やパラメータを設計者が変更できる
- FPGA内のLUTやFFなどに展開される
- デバッグやシミュレーションがしやすい
例:
- MicroBlaze(XilinxのソフトCPU)
- Nios II(Intel FPGA向けのソフトCPU)
- サードパーティ製のHDL IPコア
ハードマクロとは?
ハードマクロ(Hard Macro)は、物理設計まで完了した固定構造の回路ブロックです。
- レイアウト情報(トランジスタ配置、配線)がすでに決まっている
- HDLでの変更はできない(ブラックボックス)
- 特定のプロセスやデバイスに最適化されている
- 高性能・高密度・低消費電力だが、柔軟性は低い
特徴:
- 合成不要。すでに物理的に完成している
- ASICやZynqのようなSoC FPGAでよく使われる
- 利用は簡単だが、再構成性やカスタマイズ性はない
例:
- Zynq-7000のPS部(ARM Cortex-A9)
- PCIe PHY回路(物理層)
- 高速トランシーバやハードウェア暗号モジュール
FPGAでの使い分け:ソフトマクロとハードマクロ
FPGAでは主にソフトマクロが使われますが、SoC型のFPGA(Zynqシリーズなど)ではハードマクロのCPUなども内蔵されています。
比較 | ソフトマクロ | ハードマクロ |
---|---|---|
記述形式 | HDL(柔軟、再構成可能) | レイアウト済み(固定) |
性能 | 中〜高(LUT次第) | 高速・高密度 |
カスタマイズ | 可能 | 原則不可 |
主な用途 | FPGAロジック内の機能追加 | 高性能・汎用部品の埋め込み |
「マクロ」を理解する意味
設計が進むにつれて、個々の回路素子よりも「IP(Intellectual Property)」や「マクロ」という単位で考えることが多くなります。これは、設計を効率化し、再利用性や信頼性を高めるためです。
- 自分で全て作るより、既存のマクロを組み合わせて使う
- ソフトマクロなら柔軟に、ハードマクロなら確実に
- FPGAは両者を活用できる非常に強力な設計プラットフォーム
まとめ
- 「マクロ」とは再利用可能な機能ブロック(論理的・物理的)を指す
- ソフトマクロ:HDL記述、柔軟で再構成可能
- ハードマクロ:物理固定、高速・高密度・構成変更不可
- FPGAでは設計対象によって両者を使い分けることが重要
この用語のニュアンスを理解しておくと、データシートやツールのマニュアルを読んだときにも迷わずに済みます。設計の抽象度を意識しながら、適切なモジュールを選んで設計を進めていきましょう。