用語集
220の用語を1〜2文で定義し、きちんと解説しているページへのリンクを添えています。
0–9
- 8b/10bおよび64b/66b符号化(8b/10b and 64b/66b encoding)
- クロックリカバリに十分な遷移を保ちつつ、シリアルストリームのDCバランスを保つラインコードです。8b/10bは各バイトを10ビットに写して25%のオーバーヘッド(PCIe Gen1・2、ギガビットEthernet)、64b/66bは64ビットブロックごとに同期2ビットを加えて3%(10ギガビットEthernet以降)です。
A
- alwaysブロック(always block)
- 感度リスト内の信号が変化するたびに再実行されるVerilogの手続きブロックです。SystemVerilogのalways_ffとalways_combは意図を明示し、ツールに検査させられます。
- Amaranth(Python組み込みHDL)
- 旧称nMigenのPython組み込みハードウェア記述言語で、整った同期設計モデルと内蔵シミュレータを持ちます。任意のツールチェーン向けにVerilogを生成します。
- Avalon(Alteraのオンチップバス)
- Alteraのオンチップバスファミリで、AXI4とAXI4-Streamに対応するメモリマップド版とストリーミング版があります。Platform Designerは両者を自動でブリッジします。
- AXI4-Lite(AXI4の簡易版)
- バーストなし、未完了トランザクション1つに絞った縮小版AXI4で、制御・状態レジスタ向けです。実装が小さく、カスタムIPの通常のスレーブインターフェースで、さらに簡素なArmの代替としてAPBがあります。
- AXI4-Stream(ストリーミングプロトコル)
- data、valid、readyのハンドシェイクに任意のlast、keep、user信号を加えた一対一のストリーミングプロトコルです。アドレスを持たないビデオ、DSP、ネットワークのパイプラインに使われます。
- AXI4(Armのメモリマップドバス)
- 読み出しと書き込みでアドレス、データ、応答のチャネルを分けたArm AMBAのメモリマップドバスで、最大256ビートのバーストに対応します。AMDのIPと現代のSoC設計の大半の基幹です。
- AXIインターコネクト(AXI interconnect)
- AXIマスタとスレーブを結ぶクロスバーまたは共有バスで、途中でアドレスデコードとデータ幅・クロックの変換を行います。AMDもAlteraもグラフィカルなブロック設計からメモリマップとともに生成します。
C
- Chisel(Scala組み込みハードウェア構築言語)
- FIRRTL中間表現を通じてVerilogを生成するBerkeley発のScala組み込みハードウェア構築言語で、現在はLLVM CIRCTプロジェクトがコンパイルします。Rocket、BOOMをはじめ多くのRISC-Vコアがこれで書かれています。
- CICフィルタ(CIC filter)
- 積分器と微分器から作る乗算器不要のデシメータまたはインターポレータで、cascaded integrator-combの略です。高速ADCの直後の標準的な初段です。
- cocotb(Pythonテストベンチフレームワーク)
- コルーチンでVerilogやVHDLのシミュレーションを駆動するPythonフレームワークで、テストベンチはpytest風の構造を持つPythonになります。Icarus、Verilator、GHDL、商用シミュレータで動作します。
- CORDIC(座標回転ディジタル計算機)
- 乗算器なしに正弦、余弦、振幅、位相を計算するシフトと加算の反復アルゴリズムです。1反復あたり約1ビットの精度が得られ、パイプライン化しやすいのが特長です。
- Cシミュレーションとコシミュレーション(C simulation and co-simulation)
- CシミュレーションはHLSソースを通常のソフトウェアとしてテストハーネスで実行し、数秒でアルゴリズムを検証します。コシミュレーションは同じハーネスで生成されたRTLを駆動し、ハードウェアの一致を確認して実際のレイテンシを測ります。
D
- DDR SDRAM(ダブルデータレートSDRAM)
- クロックの両エッジでデータを転送するダイナミックメモリで、DDR3からDDR5までの世代と低消費電力のLPDDR4、LPDDR5があります。コントローラとPHYは一般的なインターフェースの中で最も立ち上げが難しく、シリコン内蔵のハードコントローラには払う価値があります。
- DFX(Dynamic Function eXchange)
- Vivadoにおける部分再構成のAMDの現行名称です。ハブ: FPGAアーキテクチャ
- DPU(deep learning processing unit, AMDのAIオーバーレイ)
- ZynqとVersalデバイス向けの畳み込みネットワーク用のAMDの構成可能なオーバーレイで、Vitis AIコンパイラでプログラムします。他ベンダーも別名で同等品を提供しています。
- DSPスライス(DSP slice)
- 乗算器・加算器・アキュムレータ・プリアダー・パイプラインレジスタを備えたハード演算ブロックです。AMDのDSP48E2は27×18ビット乗算を、Alteraの可変精度ブロックは18×19ビット乗算2つまたは単精度浮動小数点1つを処理します。
E
- ECO(engineering change order, 設計変更指示)
- LUTの式の変更や1本のネットの再配線など、配置配線済み設計への小さな限定的な編集で、完全な再ビルドを伴いません。再実行がタイミングを乱すプロジェクト終盤に使われます。
- eFuse(ワンタイムプログラマブルビット)
- 電流で焼き切る一回限り書き込み可能なビットで、鍵、デバイスID、セキュリティ設定を恒久的に保存します。暗号化ビットストリーム限定の読み込みなどのオプションは、一度設定すると取り消せません。
- Ethernet MAC(メディアアクセス制御層)
- パケットをフレーム化し、CRCの付加と検査、アドレス処理を行うメディアアクセス制御層です。FPGAは10 Gb/sから400 Gb/sのハードMACとギガビット以下のソフトMACを提供し、いずれもPHYが必要です。
F
- F4PGA(オープンFPGAツールチェーン統括プロジェクト)
- 旧称SymbiFlowの統括プロジェクトで、AMD 7シリーズなどのビットストリームを文書化し、Yosys、VPR、nextpnrで扱うことを目指します。Lattice製品に比べ進捗は遅めです。
- FINN(AMDのデータフローアクセラレータ生成フレームワーク)
- 1〜4ビットに強く量子化したネットワークからデータフローアクセラレータを構築するAMDのオープンソースフレームワークです。各層が必要なスループットに合わせたサイズのストリーミングブロックになります。
- FIRフィルタ(FIR filter)
- 有限インパルス応答フィルタで、直近N個の入力サンプルの重み付き和です。常に安定で、対称なら線形位相を持ち、1乗算につき1タップでDSPスライスに直接対応します。
- fmax(最大動作周波数)
- 設計がタイミングを満たす最高のクロック周波数で、最もクリティカルなパスから導かれます。ツールはクロックごとに報告し、速度グレード、電圧、温度で変化します。
- FPGA(field-programmable gate array)
- 製造後にビットストリームをコンフィギュレーションメモリへ読み込むことで、論理・メモリ・配線を設定できるチップです。同じシリコンが、ある週はビデオパイプライン、次の週はネットワークスイッチになり得ます。
G
- generate文(generate)
- ループとパラメータに基づき、エラボレーション時にハードウェアを繰り返しまたは条件付きで生成するHDL構文です。コードを複製せずに同一チャネルの配列を作る手段です。
- GHDL(オープンソースVHDLシミュレータ)
- VHDL-2008に対応するオープンソースのVHDL解析器兼シミュレータで、YosysにVHDLを合成させるプラグインもあります。VHDLユーザーにとって主要な無料の選択肢です。
H
- HDMI(民生向けビデオインターフェース)
- TMDS符号化された画素データを3対の差動ペアとクロックペアで運ぶ民生向けビデオインターフェースです。ホビー向けボードはトランシーバーなしにファブリックI/Oで720pや1080pを出力します。
- hls4ml(機械学習モデルからHLSコードを生成するツール)
- 素粒子物理学コミュニティ発のオープンソースツールで、KerasとPyTorchのモデルを、多くの場合1マイクロ秒未満という極めて低レイテンシな推論向けのHLSコードに変換します。
I
- I/Oバンク(I/O bank)
- 1つの電源電圧とリファレンスを共有するピンのグループで、通常24〜52ピンです。バンク内の全ピンはLVCMOS18やLVDSなどその電圧に適合したI/O規格を使う必要があり、ピン計画の最初の制約になります。
- I/O遅延制約(I/O delay constraint)
- 外部デバイスのクロックに対するタイミングを記述する入力遅延・出力遅延制約で、STAがピンからレジスタまでのパスを検査できるようにします。これがないとインターフェースのタイミングは検証されません。
- I2C(2線式シリアルバス)
- クロックとデータの2線式オープンドレインバスで、100 kHzから3.4 MHzで最大127台をアドレス指定できます。ボード管理、EEPROM、センサ設定に一般的です。
- Icarus Verilog(オープンソースシミュレータ)
- 無料のイベント駆動Verilogシミュレータで、Verilatorより遅いものの、遅延、タイミングチェック、ほとんどのテストベンチ構文を扱えます。趣味や教育プロジェクトで最初に使われるのが普通です。
- IceStorm(iCE40ビットストリーム解析プロジェクト)
- 2015年にLattice iCE40のビットストリーム形式をリバースエンジニアリングし、初の完全にオープンなFPGAフローを可能にしたプロジェクトです。デバイスデータベースとicepack、iceprogツールを提供します。
- IIRフィルタ(IIR filter)
- 過去の出力を帰還させる無限インパルス応答フィルタで、少ない乗算器で急峻な応答を実現します。帰還ループのためパイプライン化が難しく、固定小数点誤差に敏感です。
- IP(intellectual property, 知的財産)
- FPGA用語では、法的な抽象概念ではなくライセンスされる設計ブロックを指します。ベンダーはツールに多くのコアを同梱し、PCIe、ビデオコーデック、メモリコントローラなどのサードパーティIPはプロジェクト単位か個数単位で購入します。
- IPコア(IP core)
- RTLまたは暗号化ネットリストとして提供される、パラメータ、テストベンチ、ドキュメント付きの再利用可能な論理ブロックです。ベンダーはカタログとして提供し、残りはサードパーティが販売します。
J
- JESD204(データコンバータ用シリアルインターフェース規格)
- ADCとDACのサンプルを決定論的レイテンシでトランシーバーレーン上に運ぶ、データコンバータ向けのシリアルインターフェース規格です。JESD204Bが広く普及し、JESD204Cは64b/66b符号化とより高いレーン速度を加えます。
- JTAG(IEEE 1149.1テストポート)
- IEEE 1149.1のテストポートで、4〜5ピンを使ってFPGAの書き込み、状態の読み出し、デバッグコアの操作、バウンダリスキャンを行います。あらゆる開発ボードが、多くはオンボードのUSBアダプタ経由で公開しています。
L
- LiteX(SoC構築用Pythonフレームワーク)
- ソフトCPU、WishboneまたはAXIのインターコネクト、メモリコントローラ、ペリフェラルからSoCを組み立てるPythonフレームワークで、ベンダーをまたぐ数十のボードに対応します。Amaranthの前身であるMigen上に構築されています。
M
- MicroBlaze(AMDのソフトプロセッサ)
- AMDの32ビットソフトプロセッサで、小さなマイクロコントローラからLinuxが動くMMU付きキャッシュパイプラインまで構成できます。RISC-V版のMicroBlaze Vも元のものと並んで提供されています。
- MIPI CSI-2(カメラシリアルインターフェース)
- ほとんどのイメージセンサが使うカメラシリアルインターフェースで、D-PHYまたはC-PHYのレーンを1本あたり数Gb/sで動かします。多くのFPGAは外部ブリッジなしにファブリックI/Oで直接受信できるようになっています。
N
- nextpnr(オープンソース配置配線ツール)
- Yosysのネットリストとデバイスデータベースから配置配線済み設計を生成するオープンソースのプレーサ兼ルータで、パッカーがそれをビットストリームにします。iCE40、ECP5、Nexus、Gowinなどに対応します。
- Nios(Alteraのソフトプロセッサ)
- Alteraのソフトプロセッサファミリです。元のNios IIは独自命令セットを使い、Nios VはRISC-V実装で、新規設計ではこれに置き換わります。
- NRE(non-recurring engineering, 一回限りの開発費)
- 製品開発の一回限りのコストで、1台あたりのコストとは区別されます。FPGAは高めの単価と引き換えにNREがほぼゼロで、ASICはマスクと治工具に何百万もの費用がかかります。
O
- OpenFPGA(FPGAファブリック生成フレームワーク)
- アーキテクチャ記述からカスタムFPGAやeFPGAのファブリック、ビットストリーム形式、CADサポートを生成するフレームワークです。研究や組み込みFPGAコアに使われます。
- openFPGALoader(オープンソース書き込みツール)
- FTDI、DirtyJTAGなどのアダプタを通じて数十種のボードとデバイスにビットストリームを書き込むコマンドラインツールで、オープンなフローでベンダーのプログラマを置き換えます。
P
- Pblock(AMDのフロアプラン領域)
- 一連のセルを制約する矩形のフロアプラン領域のAMDでの名称です。部分再構成では、各再構成可能モジュールを専用のpblockに置く必要があります。
- PCIe(PCI Express)
- FPGAアクセラレータカードをホストCPUにつなぐシリアルバスです。1レーンあたりGen3で8 Gb/s、Gen5で32 Gb/sで、デバイス内のハードブロックがプロトコルを処理します。
- PHY(物理層回路)
- MACのデジタルインターフェースと実際の電気信号または光信号の間を変換する物理層回路です。ギガビットEthernetでは通常、RGMIIかSGMIIでつながる外付けチップです。
- Project Apicula(Gowinビットストリーム文書化プロジェクト)
- Gowinのビットストリームを文書化し、YosysとnextpnrでTangボードに載るGW1NおよびGW2Aファミリを対象にできるようにするプロジェクトです。
- Project Trellis(ECP5ビットストリーム文書化プロジェクト)
- nextpnr-ecp5を可能にするLattice ECP5ビットストリームの文書とツールです。Project OxideはLattice Nexusファミリに対して同じ役割を果たします。
- PSとPL(processing system / programmable logic)
- Zynqデバイスの2つの半分を指すAMDの用語で、プロセッシングシステム(ハードCPU、メモリコントローラ、ペリフェラル)とプログラマブルロジック(ファブリック)です。両者は固定のメモリマップを持つAXIポートで通信します。
Q
- Qフォーマット(Q format)
- 固定小数点形式の表記法で、Q1.15は16ビット語のうち整数部1ビット、小数部15ビットを意味します。すべての信号名に書いておけば、スケーリングのバグの大半を避けられます。
R
- RISC-V(オープンな命令セットアーキテクチャ)
- ライセンス料のないオープンな命令セットアーキテクチャで、新しいソフトプロセッサの既定の選択肢となり、ハードプロセッサでも増えています。1,000 LUTのマイクロコントローラからLinux対応設計まで、数十のオープンコアがあります。
S
- SDC(Synopsys Design Constraints)
- create_clockやset_input_delayなどのコマンドを持つタイミング制約の業界標準形式で、Altera、Lattice、Microchip、オープンソースツールが使います。XDCはそのスーパーセットです。
- SerDes(serialiser/deserialiser, シリアライザ/デシリアライザ)
- 並列データを高速シリアルストリームに変換し、また戻すロジックです。ファブリックI/OのDDR SerDesは1ピンあたり約1.6 Gb/sまで、専用トランシーバーははるかに高速です。
- SpinalHDL(Scalaベースのハードウェア記述言語)
- 強い型付けと豊富なバスライブラリを持つScalaベースのハードウェア記述言語で、VexRiscvとNaxRiscvプロセッサで最もよく知られています。VerilogまたはVHDLを生成します。
- SystemVerilog(Verilogの上位互換言語)
- VerilogのスーパーセットとしてIEEE 1800で定められ、logic型、インターフェース、パッケージ、アサーション、オブジェクト指向のテストベンチ機能を追加します。合成ツールは対応範囲を広げつつあり、シミュレータはほぼ全部をサポートします。
U
- U-Boot(オープンソースのブートローダ)
- Linux対応のSoC FPGAのほぼすべてで使われるオープンソースの第2段ブートローダです。フラッシュ、SDカード、ネットワークからカーネルとデバイスツリーを読み込んで制御を渡します。
- UART(非同期シリアル通信)
- スタートビットとストップビットを持ちクロック線を持たない非同期シリアルリンクで、USBブリッジ経由で115,200ボーが一般的です。多くの人が最初に作るペリフェラルで、ソフトプロセッサの標準的なコンソールです。
- UVM(Universal Verification Methodology)
- IEEE 1800.2として標準化されたSystemVerilogのクラスライブラリで、エージェント、シーケンス、スコアボードから再利用可能な制約付きランダムテストベンチを構築します。小規模FPGAプロジェクトには重く、ASICチームでは標準です。
V
- VCD(value change dump, 波形ファイル形式)
- IEEE 1364で定められたテキスト形式の波形フォーマットで、あらゆるシミュレータが書き出せ、GTKWaveやSurferなどのビューアで読めます。ファイルがすぐ大きくなるため、VerilatorやIcarusではFSTなどの圧縮形式が一般的です。
- Verilator(オープンソースシミュレータ)
- 合成可能なVerilogとSystemVerilogをC++モデルにコンパイルするオープンソースツールで、イベント駆動シミュレータよりはるかに速いサイクルベースのシミュレーションを提供します。遅延や大半のX値はモデル化しません。
- Verilog(ハードウェア記述言語)
- IEEE 1364として標準化されたC風のハードウェア記述言語で、産業界とオープンソースツールで広く使われます。Verilog-2001はあらゆるツールが受け付ける共通の基盤であり続けています。
- VHDL(ハードウェア記述言語)
- IEEE 1076として標準化された強い型付けのハードウェア記述言語で、Ada風の構文を持ちます。欧州、防衛、航空宇宙分野で一般的で、2008年版では非制約レコードなど有用な機能が加わりました。
W
- Wishbone(オープンなバス仕様)
- オープンソースコアやLiteXが好む、オープンでロイヤリティフリーのバス仕様です。AXIより単純で、古典的な単一サイクルハンドシェイクかパイプラインモードを持ちます。
X
- XDC(Xilinx Design Constraints)
- Vivado向けのAMDの制約ファイル形式で、TclとSDCタイミングコマンドに、ピン、I/O規格、配置のための物理コマンドを加えたものです。制約はファイル順に適用されるため、順序が重要です。
Y
- Yocto(組み込みLinuxビルドシステム)
- レシピからカーネル、ブートローダ、ルートファイルシステムを組み立てる、カスタム組み込みLinuxディストリビューション向けのビルドシステムです。AMDのPetaLinuxはそのラッパーで、AlteraとMicrochipはボードサポートレイヤを提供します。
- Yosys(オープンソース合成フレームワーク)
- Verilog(GHDL経由でVHDLも)を読み、iCE40、ECP5、Gowinなどのデバイス向けネットリストやASICフロー向け汎用セルを生成するオープンソースの合成フレームワークです。論理最適化とLUTマッピングにはABCライブラリを呼びます。
ア
- アーキテクチャ(architecture, VHDL)
- VHDLでエンティティを実装する本体で、信号、プロセス、コンポーネントのインスタンスを含みます。名前付きアーキテクチャにより、同じエンティティの動作記述版と構造記述版を並存させられます。
- アイダイアグラム(eye diagram)
- 多数のビット周期を重ね描きし、開いたアイでタイミングと電圧のマージンを示すオシロスコープやトランシーバーの表示です。アイが閉じてくるとビットエラーが近いことを意味します。
- アクセラレータカード(accelerator card)
- 大型FPGAを載せ、多くはDDRやHBMとネットワークポートを備えたPCIeカードで、サーバーに挿してCPUからオフロードした処理を実行します。AMD AlveoとAltera Agilexのカードが代表例です。
- アサーション(assertion)
- 成り立つべき性質を記述した文で、シミュレーション中に検査されるか形式検証ツールで証明されます。SystemVerilog AssertionsとPSLは、要求から4サイクル以内に許可が返るといったシーケンスを表現できます。
イ
- インクリメンタルコンパイル(incremental compile)
- 前回の実行から設計の変更されていない部分の配置配線を再利用し、小さな編集を速くコンパイルしてタイミングを安定させることです。AMDとAlteraはどちらも参照チェックポイントからこれをサポートします。
- インスタンス化(instantiation)
- モジュール、エンティティ、プリミティブの名前付きインスタンスを別の設計単位内に置き、ポートを接続することです。ベンダー固有ブロックに対する推論の代替手段です。
- インターコネクト(interconnect, プログラマブル配線)
- 論理タイル同士をつなぐ配線セグメントとスイッチボックスの格子で、各スイッチはコンフィギュレーションメモリで設定されます。FPGAの遅延と面積の半分以上を占めるのが普通です。
- インターフェース(interface, SystemVerilog)
- AXIバスのような関連信号を1つのポートにまとめ、modportで方向を固定するSystemVerilogの構文です。ポートリストを短くし、接続の一貫性を保ちます。
- インターポーザ(interposer, 2.5D集積)
- 複数のダイの下に置かれ、ダイ間の高密度配線を担うシリコンまたは有機材料の層で、ダイを積層ではなく並べて置きます。AMDのスタックドシリコンインターコネクトが2011年にFPGAへ持ち込み、HBMも同じ方法で接続されます。
エ
- エミュレーション(emulation)
- 設計をシミュレーションする代わりに、通常は大型FPGAのラックなど専用ハードウェアでkHzからMHzの速度で動かすことです。ASICチームはシミュレーションでは何週間もかかるソフトウェアの立ち上げを、シリコン到着前に行うために使います。
- エンティティ(entity)
- VHDLで、設計単位の名前、ポート、ジェネリックを実装と分けて宣言する部分です。1つのエンティティに複数のアーキテクチャを持たせられます。
オ
- オーバーレイ(overlay)
- FPGAに一度だけ読み込み、その後はソフトウェアから駆動する固定のアクセラレータアーキテクチャで、小さな領域特化プロセッサのようなものです。効率を多少犠牲にして、モデルごとの合成を不要にします。
カ
- カバレッジ(coverage)
- テストスイートが設計のどれだけを動かしたかの指標です。コードカバレッジは実行された行や分岐を数え、機能カバレッジはFIFOがフルになるなどユーザー定義のイベントを数えます。
キ
- キャッシュコヒーレンシ(cache coherency)
- プロセッサのキャッシュとファブリックのマスタが同じメモリに触れるとき、両者を一貫させることです。コヒーレントポート(ACP、ACE、CHI)はハードウェアで処理し、非コヒーレントポートではソフトウェアがキャッシュのフラッシュと無効化を行う必要があります。
- キャリーチェーン(carry chain)
- 隣接するLUT間でキャリーを汎用配線を通さずに渡す、専用の加算器ロジックと高速な縦方向配線です。これを使った加算器・カウンタ・比較器はLUTのみの実装より数倍高速に動作します。
グ
- グレイコード(Gray code)
- 連続する値が1ビットだけ異なる2進の順序付けで、クロックドメインをまたぐカウンタは旧値か新値のどちらかにしか読まれません。デュアルクロックFIFOのポインタに使われます。
- グローバルクロックバッファ(BUFG, global clock buffer)
- 信号を専用グローバルクロック網に乗せるAMDのプリミティブで、数十ピコ秒のスキューで全フリップフロップに届きます。デバイスあたりの数は限られ(多くは32個)、本物のクロックと大規模なリセットだけに使います。
ク
- クロックイネーブル(clock enable)
- Lowの間は現在値を保持させるフリップフロップの制御入力で、クロック自体には触れません。設計の一部を他より低速で動かす場合は、派生クロックやゲーテッドクロックではなくこれを使います。
- クロックからQまでの遅延(clock-to-Q delay)
- クロックエッジからフリップフロップの出力が変化するまでの時間で、現行デバイスでは通常数百ピコ秒です。すべてのレジスタ間パスの最初の項になります。
- クロックグループ(clock group)
- 2つのクロックが非同期であると宣言し、STAにその間のパス解析をやめさせる制約です。それらの乗り換えは同期化回路やデュアルクロックFIFOで処理しなければなりません。
- クロックゲーティング(clock gating)
- アイドルの論理へのクロックを止めて動的電力を節約することです。FPGAではクロックイネーブルかBUFGCEなどの専用ゲーテッドクロックバッファを使い、クロック経路にLUTを置いてはいけません。
- クロックスキュー(clock skew)
- 同じクロックエッジが2つのフリップフロップに到着する時刻の差です。正のスキューはセットアップに有利でホールドに不利なため、グローバルクロック網はこれを極小に保つよう作られています。
- クロックドメイン間の乗り換え(CDC, clock domain crossing)
- 非同期クロックのレジスタ間を結ぶあらゆるパスです。各乗り換えには同期化回路、ハンドシェイク、デュアルクロックFIFOのいずれかと、STAに報告させないためのクロックグループ制約が必要です。
ゲ
- ゲートレベル(gate level)
- 合成や実装が生成する、個々のプリミティブとその配線として表現された設計です。ゲートレベルシミュレーションは遅いものの、ツールが意図した動作を保ったかを検証できます。
コ
- コンフィギュレーションメモリ(configuration memory)
- ビットストリームを保持し、デバイス内の全LUT、配線スイッチ、オプションを設定するSRAMセルです。電源投入時は空で、シングルイベントアップセットに弱く、フラッシュ型やアンチヒューズ型FPGAはこれを回避します。
サ
- サイドチャネル(side channel)
- 消費電力、電磁放射、タイミングなどの物理的効果を通じた秘密情報の漏洩です。正しく実装された暗号でも、この経路で鍵を漏らすことがあります。
シ
- シグナルインテグリティ(signal integrity)
- 反射、クロストーク、グラウンドバウンス、損失を制御してボード上のデジタル信号を清浄に保つことです。DDR、LVDS、約100 MHz超のあらゆる信号で重要で、ベンダーはシミュレーション用にIBISモデルを公開しています。
- シストリックアレイ(systolic array)
- 処理要素の格子で、各要素がクロックごとに部分結果を隣へ渡すため、共有メモリなしにデータが流れていきます。FPGAやAIアクセラレータにおける行列乗算の一般的な構造です。
- シリアルペリフェラルインターフェース(SPI, serial peripheral interface)
- クロック、データ入力、データ出力、チップセレクトを持つ同期バスで、フラッシュ、センサ、ADCに最大数十MHzで使われます。ほとんどのFPGAのコンフィギュレーションフラッシュはクアッドSPI版を話します。
- シングルイベントアップセット(SEU, single-event upset)
- 電離粒子によってフリップフロップ、メモリ、コンフィギュレーションセルのビットが反転することです。SRAM FPGAではコンフィギュレーションの反転はスクラブされるまで回路自体を変えてしまい、1粒子で隣接する複数ビットが反転するものはマルチビットアップセット(MBU)です。
- シングルイベント効果(SET, SEL, SEFI)
- 1回の粒子衝突で起きる故障の総称です。シングルイベントトランジェント(SET)は論理の短いパルス、シングルイベントラッチアップ(SEL)は電源再投入が必要な大電流状態、シングルイベント機能割り込み(SEFI)はコンフィギュレーションエンジンなどの制御ブロックを停止させます。
ジ
- ジッタ(jitter)
- 発振器、PLL、電源のノイズによる、クロックエッジ到着時刻のサイクルごとの変動です。使えるクロック周期を縮め、トランシーバーとADCサンプリングで最も問題になります。
ス
- スクラビング(scrubbing)
- コンフィギュレーションメモリを継続的に読み戻し、既知の正しいコピーやCRCと照合して、破損したフレームを書き直すことです。コンフィギュレーション内のアップセットが持続する時間を制限します。
- ストラクチャードASIC(structured ASIC)
- 少数のメタル層でカスタマイズする製造済みのベースウェハで、FPGAの柔軟性とASICの単価の中間の道を提供します。AlteraのeASICが現在の主な例です。
- スラック(slack)
- タイミングパスが要件を満たす余裕で、要求時刻から到着時刻を引いて求めます。正なら合格、負なら不合格で、最もスラックの小さいパスがfmaxを決めます。
- スループットとレイテンシ(throughput versus latency)
- スループットは毎秒完了する仕事量、レイテンシは1件にかかる時間です。バッチ処理はスループットとレイテンシを同時に上げるため、低レイテンシで小バッチの推論ではFPGAがGPUに勝ります。
セ
- セキュアブート(secure boot)
- 不変のROMとeFuse内の鍵から始めて、各ブート段が次段を実行前に検証する連鎖です。ビットストリームを含むどこか1段でも未署名なら破綻します。
- セットアップ時間(setup time)
- クロックエッジの前にフリップフロップのD入力が安定していなければならない期間です。セットアップ違反はデータの到着が遅すぎたことを意味し、対策はパスの高速化かクロックの低速化です。
ソ
- ソフトウェア無線(SDR, software-defined radio)
- 変調、フィルタリング、復調をアナログ回路ではなくプログラマブルロジックやソフトウェアで行い、同相・直交(I/Q)サンプル対を扱うことです。多くのSDRプラットフォームでFPGAはデータコンバータとプロセッサの間に位置します。
- ソフトプロセッサ(soft processor)
- MicroBlaze、Nios V、NEORV32、VexRiscvのように、LUTとBRAMでファブリック上に実装したCPUです。ハードコアより遅いものの、どのデバイスでも使え、数千LUTまで小さく構成できます。
ダ
- ダイレクトメモリアクセス(DMA, direct memory access)
- CPUが1ワードずつコピーせずに、メモリとペリフェラル間でデータを移動するハードウェアエンジンです。SoC FPGAではAXI4-StreamパイプラインとDDRを橋渡しし、ビデオ版(VDMA)はフレーム単位で管理します。
チ
- チップレット(chiplet)
- 1つのパッケージ内で他と組み合わせるよう設計された小さなダイで、ファブリック、トランシーバー、メモリを異なるプロセスで作れます。大型FPGAやアダプティブSoCはチップレットの組み立て品です。
デ
- データフロー(dataflow, HLS)
- 逐次的な関数を、間にFIFOやピンポンバッファを置いて並行に動かし、生産側と消費側を重ねるHLSのプラグマです。ループのパイプライン化に対するタスクレベルの対応物です。
- データフローアーキテクチャ(dataflow architecture)
- ネットワークの各層が専用ハードウェアを持ち、命令フェッチや共有メモリなしにデータが層間を直接流れるアクセラレータです。FINNとhls4mlはこの形式を生成します。
- デシメーションとインターポレーション(decimation and interpolation)
- デシメーションはローパスフィルタでエイリアシングを防いだ上でN個ごとにサンプルを残し、サンプルレートを下げます。インターポレーションはゼロを挿入してイメージをフィルタで除き、レートを上げます。CICとポリフェーズFIRはどちらも効率的に行えます。
- デバイスツリー(device tree)
- どんなハードウェアが存在するかを各ペリフェラルのアドレスと割り込みとともにLinuxカーネルに伝えるデータ構造です。FPGAではファブリックの設計を変えるたびに再生成が必要です。
テ
- テクノロジマッピング(technology mapping)
- 汎用ゲートを対象デバイスの実際のセルに変換する合成工程で、適切なサイズのLUTに論理を詰め、キャリーチェーンやメモリを認識します。YosysはこれをABCライブラリに委ねます。
- テストベンチ(testbench)
- テスト対象の設計をインスタンス化し、刺激を与えて出力を検査する、合成不可のHDLまたはPythonのモジュールです。あらゆる設計はボードに載せる前にこれを持つべきです。
- テスト対象デバイス(DUT, device under test)
- テストベンチが動かす設計インスタンスで、unit under test(UUT)とも呼ばれます。テストコードを含まない素のインスタンスに保てば、同じRTLがそのまま合成に進みます。ハブ: 検証 関連: テストベンチ(testbench)
ト
- トータルドーズ(TID, total ionising dose)
- ミッション全体で吸収する累積放射線量で、kradまたはGyで測り、トランジスタのしきい値を徐々にずらしリーク電流を増やします。シングルイベント効果とは別の問題です。
- トランシーバー(transceiver)
- 独自のPLL、クロック・データリカバリ、等化、符号化を備えたマルチギガビットのハードシリアルブロックで、1レーンあたり数Gb/sから100 Gb/s超で動作します。PCIe、Ethernet、JESD204はすべてこの上に載ります。
ネ
- ネットリスト(netlist)
- 設計を動作ではなく接続されたセルとして表現したもので、合成が生成します。合成後ネットリストは汎用セル、実装後ネットリストは配置配線済みのプリミティブを使います。
ノ
- ノンブロッキング代入(non-blocking assignment)
- Verilogの<=代入で、更新をタイムステップの最後に予約するため、全レジスタがクロックエッジで同時に変化して見えます。クロック同期の代入にはすべてこれを使います。
ハ
- ハードプロセッサ(hard processor)
- AMD Zynq、Altera SoC FPGA、Microchip PolarFire SoCのように、ファブリックの隣にシリコンとして作り込まれたArmまたはRISC-VのCPUです。Alteraはこのブロックをハードプロセッサシステム(HPS)と呼びます。
- ハンドシェイク(handshake)
- 要求を応答が返るまで保持し、その後に取り下げるプロトコルです。低速な複数ビットのクロックドメイン乗り換えや、validとreadyとしてAXI4-Stream内部で使われます。
パ
- パイプライン化(pipelining)
- 長い組み合わせパスをレジスタで区切った段に分割し、レイテンシと引き換えに各段を1クロック周期に収めることです。fmaxを上げる主要な手段で、HLSでは前の反復が終わる前にループの次の反復を開始できます。
- パッケージ(package)
- 設計単位間で共有する型、定数、関数をまとめた名前付きの集合で、VHDLとSystemVerilogの両方にあります。バス幅やレコード型を1か所に置けば全モジュールが一致します。
- パラメータ(parameter, generic)
- Verilogのmodule(parameter)やVHDLのentity(generic)に付くコンパイル時定数で、インスタンス化時に幅、深さ、オプションを決めます。パラメータ化したコードは書き直さず再利用できます。
ビ
- ビットストリーム(bitstream)
- フローの最後に生成され、デバイスを構成するバイナリファイルで、JTAG経由または電源投入時にフラッシュから読み込まれます。中規模デバイスで数十Mbを要し、形式はベンダー固有でほぼ非公開です。
- ビットストリーム暗号化(bitstream encryption)
- 通常AES-256でコンフィギュレーションファイルを暗号化し、eFuseまたはバッテリバックアップRAMに対応する鍵を持つデバイスだけが読み込めるようにすることです。設計をコピーやリバースエンジニアリングから守ります。
- ビット成長(bit growth)
- 結果が入力より幅広くなることです。Nビット同士の加算にはN+1ビット、乗算には2Nビットが必要で、フィルタのアキュムレータは最悪ケースに合わせないとオーバーフローします。
ブ
- ブートローダ(bootloader)
- リセット後に最初に動くソフトウェアで、クロックとメモリを初期化して次段を読み込みます。SoC FPGAはベンダーの第1段ローダ(FSBL)、U-Boot、Linuxの順に連鎖し、ビットストリームはどの段でも読み込めます。
- ブロッキング代入(blocking assignment)
- Verilogの=代入で、手続きブロック内で変数を即座に更新します。組み合わせ論理のalwaysブロックや一時変数に使い、レジスタには決して使いません。
- ブロックRAM(BRAM, block RAM)
- ファブリック内に分散配置された専用メモリタイルで、独立した2ポートと設定可能な幅を持ちます。AMDのブロックは36 kb、AlteraのM20Kは20 kbで、AMDの大容量288 kb UltraRAMは深いバッファに使われます。
フ
- フォールトインジェクション(fault injection, 故障注入)
- クロック、電源電圧、レーザー照射を意図的に乱し、デバイスに検査を飛ばさせたりデータを漏らさせたりする攻撃です。セキュアブートのコードは冗長な検査とグリッチ検出器で対抗します。
- フォルスパス(false path)
- 静的な設定レジスタのように、決して動作しないかタイミングが無関係なパスをSTAに無視させる制約です。多用すると、とくにクロックドメイン間の乗り換えで本物のバグを隠します。
- フリップフロップ(flip-flop)
- クロックエッジでD入力を取り込み、次のエッジまで保持するエッジトリガ型の記憶素子です。現代のファブリックではLUT 1個に1〜2個が対になり、クロックを共有する一群をレジスタと呼びます。
- フローティングライセンスとノードロックライセンス(floating and node-locked licences)
- ノードロックライセンスはネットワークアドレスやドングルで1台のマシンに紐づきます。フローティングライセンスは共有サーバーからチェックアウトした人に配られ、シート数で制限されます。チームやCIファームに向きますが、サーバーに届かないと使えません。ハブ: キャリアと業界 関連: ライセンス(licence)
- フロアプラン(floorplanning)
- 設計の各部分を配置してよい場所を、通常は矩形領域で制約し、関連する論理をまとめたりピンの近くに置いたりすることです。ほとんどの設計には不要ですが、大規模な設計や再構成可能な設計はこれに依存します。
プ
- プラグマ(pragma)
- ループのパイプライン化や配列のメモリ分割など、HLSソースコードがどうハードウェアになるかを制御する指示文です。同じコードでも、これ次第でまったく異なるハードウェアになります。
- プリミティブ(primitive)
- BUFG、LUT6、Alteraのaltsyncramなど、シリコンに直接対応するベンダーライブラリの末端セルです。プリミティブのインスタンス化は移植性と引き換えに細かな制御を与えます。
- プルーニング(pruning, 枝刈り)
- 寄与の小さい重みやチャネル全体を取り除き、より小さいか疎なネットワークにすることです。構造化プルーニングはハードウェアを直接縮小しますが、非構造化プルーニングはゼロをスキップできるハードウェアでしか効果がありません。
- プロセス(process)
- VHDLの手続きブロックで、Verilogのalwaysブロックに相当します。感度リストの信号が変化すると文が順に実行され、rising_edge判定を持つプロセスはレジスタを表します。
ボ
- ボールグリッドアレイ(BGA, ball grid array)
- 最小クラスを除くほぼすべてのFPGAのパッケージ形式で、ダイの下に1.0 mm、0.8 mm、0.5 mmピッチの格子状にはんだボールが並びます。ピッチが細かいほど、内側のボールを引き出すために小さなビアを持つ高価な基板が必要です。
ホ
- ホールド時間(hold time)
- クロックエッジの後にフリップフロップのD入力が安定を保たなければならない期間です。ホールド違反は非常に短いパスや大きなスキューに起因し、クロックを遅くしても直せません。
ポ
- ポリフェーズフィルタ(polyphase filter)
- レート変換の各位相を担当するサブフィルタに分割したフィルタで、捨てられるサンプルに乗算を費やしません。デシメーションやインターポレーションを行うFIRの効率的な形です。
マ
- マルチサイクルパス(multicycle path)
- パスに2クロック周期以上を許す制約で、クロックイネーブルによりデータがNサイクルごとにサンプルされることが保証される場合にのみ有効です。セットアップとホールドの両方の倍率を設定する必要があります。
モ
- モジュール(module)
- Verilogの設計単位で、ポートリストと実装を1つの構文にまとめます。モジュールを互いにインスタンス化して階層を構築します。
ラ
- ライセンス(licence)
- ツールやIPコアをその条件のもとで使う権利です。FPGAツールは小規模デバイス向けの無料版から、1シートあたり年間数千ポンドのサブスクリプションまであります。
リ
- リードタイム(lead time)
- 部品を発注してから受け取るまでの期間で、通常は数週間ですが、2021〜2023年の供給不足では1年を超えました。特定デバイスに設計を固定する前に確認してください。
- リセット同期化回路(reset synchroniser)
- リセットを即座にアサートしつつ、解除はクロックに同期して行う回路で、全フリップフロップが同じサイクルでリセットを抜けます。リセット源が非同期なら必ず必要です。
- リタイミング(retiming)
- 動作を変えずにレジスタを論理をまたいで移動し、パイプラインに沿って遅延を均す合成最適化です。長い組み合わせ論理ブロックの両端に予備のレジスタを置いてあるときに最も効果を発揮します。
- リント(linting)
- 幅の不一致、感度リストの不足、意図しないラッチ、未使用信号など、怪しい構文を探すHDLの静的解析です。lint専用モードのVerilatorとVeribleが無料の選択肢です。
ル
- ループ展開(loop unrolling)
- ループ本体を複製し、複数の反復を並列ハードウェアで実行することです。64回のループを完全展開すると64個のコピーができ、データが並列に届くよう読み出す配列を分割する必要があります。
- ルックアップテーブル(LUT, look-up table)
- FPGAの基本論理素子で、アドレス入力を論理入力とし、格納ビットが真理値表となる小さなメモリです。6入力LUTは64ビットを保持し、6入力の任意のブール関数を実装できます。
レ
- レジスタ転送レベル(RTL, register-transfer level)
- どのレジスタが存在し、その間にどんな論理があるかを、具体的なゲートを選ばずに記述するHDLのスタイルです。合成の入力であり、設計とシミュレーションの大半が行われる抽象度です。
三
- 三重冗長(TMR, triple modular redundancy)
- 回路を3つ複製して出力を多数決するもので、1つのアップセットは多数決で退けられます。面積は3倍以上かかり、効果を出すには帰還ループ内にも投票器が必要です。
丸
- 丸めと切り捨て(rounding and truncation)
- 語を短くするために下位ビットを落とす方法です。切り捨ては単に捨ててバイアスを生み、丸めは先にLSBの半分を加え、収束丸めは加算器1つの代償で残るバイアスも除きます。
任
- 任意精度型(arbitrary precision types)
- ap_int<13>やac_fixed<16,4>のようなC++の型で、32ビットのintではなくハードウェアが必要とする正確なビット幅をHLSコードで使えます。面積とタイミングに不可欠です。
伝
- 伝搬遅延(propagation delay)
- セルの入力の変化が出力に届くまでの時間で、その後の配線も含みます。STAは各パスに沿ってこの遅延を合計し、LUT 1段あたり配線を除いておよそ0.1〜0.3 nsかかります。
位
- 位相同期ループ(PLL, phase-locked loop)
- 入力クロックの整数倍または分数倍のクロックを生成し、位相を揃えるハードブロックです。AMDのMMCMは細かな位相シフトと分数分周が可能な高機能版です。
低
- 低電圧差動信号(LVDS, low-voltage differential signalling)
- 約350 mVの振幅で逆極性を運ぶ一対の配線で、ペアあたり数百Mb/sでノイズ耐性を得ます。シングルエンドのLVCMOSピンと対照的に、カメラ、ディスプレイ、ADCのインターフェースに使われます。
信
- 信頼の起点(root of trust)
- それ以上の証明なしに信頼されるハードウェアで、通常はブートROM、鍵ストア、暗号エンジンからなり、システム内の他のすべての信頼はここから導かれます。
最
- 最悪負スラック(WNS, worst negative slack)
- 設計内の全パスのうち最も負のセットアップスラックです。WNSがゼロ以上ならタイミングは満たされ、それを決めるパスが最初に修正すべきパスです。
分
- 分散RAM(distributed RAM, LUTRAM)
- 対応するスライスのLUT自体から構成する小容量メモリで、通常LUT 1個あたり64ビットです。BRAM 1個では無駄になる浅いレジスタファイルや小さなFIFOに向きます。
制
- 制約(constraints)
- クロック周期、I/Oタイミング、ピン割り当て、例外など、設計の要件をツールに伝える記述です。制約のないパスは検査されないため、制約の欠落は気づきにくい失敗になります。
- 制約付きランダム(constrained random)
- 宣言した制約の範囲内でランダムに刺激を生成し、手書きせずに多くの合法なケースに到達する手法です。何に実際に当たったかはカバレッジが示します。
割
- 割り込み(interrupt)
- 論理からプロセッサへ処理を求める信号で、割り込みコントローラを経てドライバが処理します。SoC FPGAのファブリックからハードプロセッサへは通常数十本の線があります。
動
- 動的電力(dynamic power)
- スイッチングで消費する電力で、容量、電源電圧の2乗、クロック周波数、サイクルごとにトグルするノードの割合に比例します。クロックツリーとトグルの多いデータパスが支配的です。
合
- 合成(synthesis)
- RTLを論理セルのネットリストに変換することで、途中で定数伝搬やステートマシンの再符号化などの最適化を行います。フローの最初の工程で、推論の判断が行われる場所です。
- 合成可能サブセット(synthesisable subset)
- 合成ツールがハードウェアに変換できるHDLの範囲です。ファイルI/O、時間遅延、ほとんどのinitialブロック、オブジェクト指向機能はシミュレーション専用です。
同
- 同期リセット(synchronous reset)
- 他の入力と同様にクロックエッジでサンプルされるリセットで、動作中のクロックが必要ですが解除タイミングの問題はありません。AMDデバイスと本サイトの例ではこれが既定です。
- 同期化回路(synchroniser, シンクロナイザ)
- 受信側ドメインのクロックで駆動する直列の2段以上のフリップフロップで、準安定になった初段が落ち着く時間を与えます。1ビットをクロックドメイン間で渡す標準的な方法です。
固
- 固定小数点演算(fixed-point arithmetic)
- 小数を暗黙の2進小数点を持つ整数として表現し、通常の整数乗算器と加算器で計算することです。FPGAのDSPの標準的な数値形式で、浮動小数点は面積よりレンジが重要な場面に限られます。
差
- 差分電力解析(DPA, differential power analysis)
- 多数の電力波形を推測した鍵ビットと統計的に相関させ、暗号鍵を復元する手法です。ビットストリーム復号器がマスキングと鍵ローリングを使うようになった理由です。
平
- 平均故障間隔(MTBF, mean time between failures)
- 同期化回路において、準安定値が後段の論理へ漏れ出す頻度の期待値です。フリップフロップを1段追加するごとにこの値は桁違いに増え、数時間から何年にもなります。
広
- 広帯域メモリ(HBM, high bandwidth memory)
- インターポーザ上でFPGAの隣に積層したDRAMダイで、数千本の短い接続を通じて毎秒数百GBを供給します。DDRの帯域が足りなくなる大型データセンター向けデバイスに搭載されます。
形
- 形式検証(formal verification)
- シミュレーションによるサンプリングではなく、あらゆる入力に対して設計の性質を数学的に証明することです。SymbiYosysやJasperGoldなどのツールはSATやSMTソルバでアサーションを検査します。
感
- 感度リスト(sensitivity list)
- プロセスやalwaysブロックを起動する信号のリストです。信号が抜けるとシミュレーションと合成の結果が食い違うため、always @*とprocess(all)が存在します。
推
- 推論(inference)
- 明示的なプリミティブなしに、合成ツールが動作記述からハードウェア構造を認識することで、例えばクロック同期読み出しを持つ配列からBRAMを推論します。コードの移植性は保たれますが、ツールごとに期待する記述テンプレートがあります。
放
- 放射線強化(radiation hardened)
- 強化フリップフロップ、プロセスの選択、アンチヒューズ構成などの設計により、アップセットやラッチアップに免疫または耐性を持たせたデバイスです。高価で、通常は商用シリコンより数世代遅れています。
数
- 数値制御発振器(NCO, numerically controlled oscillator)
- クロックごとにチューニングワード分進む位相アキュムレータで、テーブルかCORDICで位相を正弦波に変換します。周波数分解能はクロック速度を2のアキュムレータ幅乗で割った値で、同じブロックはダイレクトデジタルシンセシス(DDS)とも呼ばれます。
有
- 有界モデル検査(bounded model checking)
- リセットからNサイクル分設計を展開し、アサーションに違反する入力列を探索する形式手法です。バグは見つかりますがNを超える範囲での不在は証明できず、そこからはk帰納法が引き継ぎます。
構
- 構成可能論理ブロック(CLB, configurable logic block)
- LUT・フリップフロップ・マルチプレクサ・キャリーロジックをまとめたタイルのAMDでの呼称です。UltraScaleでは1つのCLBに6入力LUT 8個とフリップフロップ16個が入り、旧7シリーズでは各CLBを2つのスライスに分けていました。
温
- 温度グレード(temperature grade)
- 部品が保証される動作範囲で、コマーシャル(ジャンクション温度0〜85 °C)、拡張、産業用(-40〜100 °C)、車載(AEC-Q100)、軍用があります。産業用は高価で、選べる速度グレードが少ないことがあります。
準
- 準安定状態(metastability)
- セットアップまたはホールドの窓の中で入力が変化したときにフリップフロップが陥る状態で、出力が予測できない時間だけ中間レベルに留まります。防ぐことはできず、同期化回路で稀にすることしかできません。
物
- 物理複製困難関数(PUF, physically unclonable function)
- 製造ばらつきからデバイス固有の鍵を導出する回路で、読み出され得る場所に鍵を保存することがありません。MicrochipとAMDのデバイスは他の鍵をラップするために使っています。
特
- 特定用途向け集積回路(ASIC, application-specific integrated circuit)
- 1つの目的のために設計・製造されるチップです。量産ではFPGAより高速で単価も安いものの、NREが高く、リードタイムが長く、テープアウト後にバグを直す手段がありません。
生
- 生産終了(EOL, end of life)
- ベンダーが部品の製造をやめる時点で、最終購入期限とともに発表されます。FPGAファミリは通常15年以上生産されますが、長寿命製品に採用する前にロードマップと寿命を確認してください。
真
- 真性乱数生成器(TRNG, true random number generator)
- リングオシレータのジッタなど物理的ノイズから乱数を得る源で、鍵やノンスに必要です。疑似乱数生成器と違い、シードから再現できません。
積
- 積和演算(MAC, multiply-accumulate)
- a×b+cを1回の演算で計算することで、フィルタと行列演算の中核です。DSPスライスは1クロックに1回実行し、デバイスのピークDSP性能はGMAC/sで示されます。
等
- 等価性検査(equivalence checking)
- RTLと合成後ネットリストのように2つの設計が同一に振る舞うことを形式的に証明することです。合成やECOが変えてはならないものを変えていないことの確認に使います。
- 等化(equalisation, イコライゼーション)
- 送信側のプリエンファシスと受信側の連続時間または判定帰還型イコライザを使い、チャネルの周波数依存損失を補償することです。トランシーバーは両方の調整設定を公開しています。
組
- 組み込みFPGA(eFPGA, embedded FPGA)
- IPとしてライセンスされASICやSoC内部に置かれるプログラマブルファブリックのブロックで、固定チップの一部を製造後に更新できます。Achronix、Flex Logix、QuickLogic、Mentaが提供しています。
総
- 総負スラック(TNS, total negative slack)
- フェイルしている全エンドポイントの負スラックの合計です。WNSが小さいのにTNSが大きい場合、1本の悪いパスではなく、クロック周期の設定が野心的すぎるといった広範な問題を示します。
耐
- 耐タンパ(anti-tamper)
- 電圧・温度モニタ、メッシュセンサ、鍵のゼロ化など、物理攻撃を検知または対処する対策です。バッテリバックアップの鍵は消去できるために存在し、防衛プログラムではこれが要求されます。
- 耐放射線(radiation tolerant)
- 放射線に対して特性評価され、TMRやスクラビングなどの緩和策により生き残ることが期待されるものの、商用プロセスで作られたデバイスです。放射線強化品より安価で高速です。
- 耐量子暗号(PQC, post-quantum cryptography)
- 量子コンピュータに耐えるよう設計されたML-DSA、ML-KEM、LMSなどの署名・鍵交換アルゴリズムです。新しいデバイスはビットストリームとブートの認証にこれらを加えつつあります。
自
- 自己検証テストベンチ(self-checking testbench)
- 出力を期待値と比較し、合否を自ら報告するテストベンチで、誰も波形を読む必要がありません。参照モデルかゴールデンデータが必要で、回帰テストを可能にするものです。
評
- 評価ボード(evaluation board)
- FPGAに電源、コンフィギュレーションフラッシュ、JTAG、各種インターフェースを載せたベンダーまたはパートナー製のボードで、学習や試作向けです。価格は50ポンド未満から数千ポンドまでです。
認
- 認証(authentication)
- ビットストリームやブートイメージが正当な作成者によるものかを、読み込み前にRSAやECDSAの署名またはHMACで検証することです。暗号化は設計を隠し、認証はすり替えを防ぎます。
誤
- 誤り訂正符号(ECC, error-correcting code)
- データとともに保存する追加ビットで、1ビット誤りの訂正と2ビット誤りの検出を可能にします。BRAM、UltraRAM、DDRコントローラのオプションで、インターリーブによりマルチビットアップセットからも守ります。
論
- 論理アレイブロック(LAB, logic array block)
- ローカル配線、クロック、制御信号を共有する10個のALMをまとめたAlteraの単位です。AMDのCLBにおおむね相当します。
速
- 速度グレード(speed grade)
- シリコンの速度選別を示す部品番号の接尾辞で、AMDでは-1(最も遅い)から-3、AlteraではC6からC8などです。速いグレードは高価でタイミングモデルも異なるため、STAを実行する前に設定します。
適
- 適応型論理モジュール(ALM, adaptive logic module)
- Alteraの論理タイルで、8入力の分割可能なLUT、全加算器2個、最大4個のレジスタを備えます。小さな独立関数2つか幅広い関数1つを実装でき、リソースレポートでは半ALMをALUTとして数えます。
部
- 部分再構成(partial reconfiguration)
- 動作中のFPGAの一領域の論理を、残りを動かしたまま新しい部分ビットストリームで置き換えることです。再起動なしにアクセラレータや無線波形を切り替える用途に役立ちます。
配
- 配線(routing)
- 配置済み設計の各接続を、インターコネクト内の物理的な配線セグメントとスイッチに割り当てることです。需要が利用可能なチャネルを超えると失敗し、ツールは混雑(congestion)として報告します。
- 配線後シミュレーション(post-route simulation)
- バックアノテートされた遅延付きで、完全に実装されたネットリストをシミュレーションすることです。遅く、STAがクリーンならほとんど不要ですが、制約の欠落やリセットの問題を捕まえます。
- 配置(placement)
- ネットリストの全セルに物理的な位置を割り当てることで、配線長とタイミングのトレードオフを取ります。配置が悪いと配線では救えません。
- 配置配線(place and route)
- 合成後の実装工程で、ビットストリーム生成に備えた完全に配置配線済みのネットリストを生成します。AMDはインプリメンテーション、Alteraはフィッターと呼びます。
量
- 量子化(quantisation)
- モデルの重みと活性化の数値精度を、通常32ビット浮動小数点から8ビット(INT8)以下の整数へ下げることです。適切にキャリブレーションすれば精度低下はわずかで、メモリと乗算器のコストを大幅に削減します。
開
- 開始間隔(II, initiation interval)
- パイプライン化したループや関数で、連続する反復の開始間のクロックサイクル数です。II=1はクロックごとに新しい入力を受け付けることを意味し、達成を妨げる依存関係やメモリポートはツールが説明します。
電
- 電力見積もり(power estimation)
- リソース使用量、クロック速度、トグル率から設計の消費電力を予測することで、実装前はスプレッドシート型ツール、実装後はシミュレーションベースの解析を使います。初期の見積もりは2倍ずれることがあり、結果がボードの放熱すべき熱設計電力を決めます。
静
- 静的タイミング解析(STA, static timing analysis)
- シミュレーションを実行せず、遅延モデルを使って全レジスタ間パスとI/Oパスをセットアップ・ホールド要件に照らして検査することです。網羅的ですが与えられた制約の質に依存し、出力がタイミングレポートです。
- 静的電力(static power)
- デバイスがアイドル状態で消費する電力で、主にファブリックとコンフィギュレーションメモリのトランジスタリークです。温度とプロセス微細化に伴って急激に増加します。
非
- 非同期FIFO(asynchronous FIFO)
- 書き込みと読み出しで別々のクロックを持つ先入れ先出しバッファで、グレイコード化したポインタを同期化回路経由で比較してフル・エンプティフラグを作ります。複数ビットのデータをクロックドメイン間で安全に移す方法です。
- 非同期リセット(asynchronous reset)
- 専用リセットピンを使い、クロックに関係なくフリップフロップに作用するリセットです。クロックが動いていなくても働きますが、解除を同期させないとレジスタが別々のサイクルでリセットを抜けることがあります。
飽
- 飽和(saturation)
- 結果を巻き戻させる代わりに、表現可能な最大値または最小値に固定することです。比較器1つのコストで、壊滅的なオーバーフローを軽い歪みに変えます。
高
- 高位合成(HLS, high-level synthesis)
- C、C++などの高級言語からRTLを生成することで、プラグマで並列性を制御します。ツールにはVitis HLS、Catapult、オープンソースのBambuがあります。
- 高速フーリエ変換(FFT, fast Fourier transform)
- N個の時間サンプルをN個の周波数ビンに変換する効率的なアルゴリズムです。FPGAコアはパイプライン化したradix-2やradix-4の段でストリーム処理し、OFDMモデムがこれを中心に作られる理由です。