Home Ai-One/IPcoreSpec

Ai-One/IPcoreSpec

AiIPcore仕様 for DF

2020.10.07 1.04		3.1.1 クロックゲーティングの説明追加
2020.07.16 1.04         RAM切出し負荷時の図を追加、使用不可FFの説明追加、SpyGlassに関する説明更新
2020.07.15 1.03         クロック・リセット仕様更新
2020.07.02 1.02         8章エラー状態監視機能追加
2020.04.29 1.01		ソフトウエアリセット追加:A.Hasegawa 過去の掲載
2020.04.02 1.00         初版:A.Hasegawa

1.概要

SoCへのIPの組込みおよび組込み後のSoC設計の容易化のため、IPの記述、インターフェイスについてのガイドラインを設ける。SoC設計についてはAIDCで用いている標準の設計フローおよび拠点で整備した標準SoCプラットフォームに起因する制約条件を含む。
SystemC等の高位設計言語を使用したIPについては高位言語合成ツールが出力するRTLまたは、それに変更を加えたRTLのレベルでガイドラインを満たしていることとする。なお、変更についてはプログラム、スクリプトなどのツールによる変更を原則とする。
RTLの記述はSTARC RTL設計ガイドライン(RTLスタイルガイドVerilogHDL版およびSystem VerilogHDL版)を基本とする。
テスト設計に関連するインターフェイスはIEEE1500に準拠する。
IP内で使用するクロックについては基本、SoC全体での同期クロック設計とし、SoCプラットフォームから供給される標準クロックの利用を原則とする。外部インターフェイスに起因する非同期クロックの使用につきましては拠点窓口にご相談のこと。
IPとSOCを接続するバスインターフェイスについてはAMBAのAXI4, AXI Lite, AHB, APBとする。
SoCプラットフォーム搭載のCPUに対する割込みインターフェイス、DMAコントローラに対する転送要求インターフェイスについても当ガイドラインに記載する。

2.IPの記述の基本構成

IPをSoCに接続し、SoCテスト設計フローを適用することを可能とするため各IPは図1に示すように基本となるIPコアの外側にWrapper層を設ける。Wrapper層にはリセット同期回路(rsync_prim)、IP内で使用するすべてのRAMを切り出したモジュールを設ける。MemoryBIST設計フローを適用するためRAMモジュールのIPコアからの切り出しが必要である。しかし、図2に示すように、Wrapper層へのRAMモジュールの切り出し対応が困難な場合は、AIDC拠点と協議のこと。

IP内で使用するフリップフロップ(以下、FF)は非同期リセットFFまたは非同期セットFFとし、FFのリセット信号にはFFのクロック信号と同期したリセット信号を用いる。非同期リセットなしFF、非同期セットなしFFは使用しない。
図3に示すように、Wrapper層で使用するリセット信号同期モジュールは拠点提供のrsync_primを使用する。リセットを生成するSYSCブロックから各IPに供給するリセット信号は正論理信号である。rsync_primのリセット入力は負論理信号であるため、Wrapper層内で反転させて接続する。rsync_primから出力されるリセット信号をIP内に接続する。rsync_primのリセット出力は負論理信号となり、アサート時は非同期、リセット解除はクロックに同期する。

チップ外部とのインターフェイスを持つIPについてはIO信号定義ファイル(xlsxフォーマット)を作成する。バウンダリスキャン、LogicBISTのロジック挿入は拠点設計フローにおいて、IOセル名称に基づいた抽出により自動挿入を行うため特段の処理は不要である。ただし、LPDDR, PCIeのように高速のインターフェイスを実現するためレイアウトデータまで提供するIPについては、自動挿入の対象としないため、インターフェイス信号定義ファイルにおいて、該当するカラムに明示するとともに、IOテストに必要な機能の組込みについてAIDC拠点と協議のこと。

3.クロック回路、リセット回路

3.1 クロック

クロックはPLLにて10MHzから54MHzの外部クロック入力を逓倍し1600MHzまたは1000MHzの基本クロックを生成し、分周器を用いて分周を行い、ユーザクロックを生成する。ユーザクロックを表1に示す。PLLの逓倍率を外部モード設定ピンで設定することで異なるクロック入力に対し約1600MHzまたは1000MHzを生成するが、整数倍の逓倍率でないものについては最大12MHzの誤差が生じる。

チップ内のクロックは、図4に示すように、クロックの最高周波数を生成するためのPLLの系統ごとに分割されている。

各IPは原則としてチップ内クロックソースから供給されるそれぞれの動作周波数のクロック入力をIPインターフェイスで受け、IP内で分周回路などでのクロック生成を行わずに、また、複数のクロック信号から1つのクロック信号を選択することなしに、クロック入力をIP内のFFやRAMに直接分配する構造をとる。
図1に示すように、各IPはチップ内クロックソースから供給される同一の動作周波数のクロック入力を、ロジック回路用(CLK*)とRAM用(CLK*_M)に分離してクロック入力ピンとして定義する。さらにRAMのMemoryBIST回路用にBIST用(CLK*_B)のクロック入力ピンのみを作成する。このクロックはMemoryBIST回路実装時に使用する。
テストモードで使用するテスト用のクロックについては物理実装設計工程におけるクロックツリー生成時に分配、調整が行われるため各IPモジュール内でのケアは不要である。

3.1.1 ClockGating

/incoming_AiOne/common/rtl/v02/libs/cgate_prim
v02
`-- libs
    |-- cgate_prim
    |   `-- cgate_prim.v	<==Clock Gating Moduleです。
    `-- rsync_prim
        |-- d_ff.v
        |-- rsync_prim.f
        `-- rsync_prim.v

クロックゲーティングは図5のような構成となる。基本構成では、各IPモジュールに供給するクロックのON/OFFを、SYSCレジスタでソフト制御可能である(デフォルトはクロックON)。さらに細分化したクロックゲーティング制御が必要な場合は、各IPモジュールのWrapper層にクロックゲーティング回路を実装する。
Wrapper層で使用するクロックゲーティングモジュールは、拠点提供のcgate_primを使用し、図6のように実装する。CKEN信号はIPモジュールのレジスタやシーケンサ等で制御し、CKEN=0のときCLKOが停止する。なお、CKEN信号は非同期制御となるため、1クロック単位のリアルタイムな制御には使用できない(最大10クロック程度のずれが発生することを想定して制御を行うこと)。DIRCKMODE信号、SCEN信号はテスト時の制御ができるように、Wrapper層の入力ポートと接続しておく。NRST信号はrsync_primで同期化したリセット信号を接続する。

3.2 リセット

チップ全体の同時リセットのため各クロックに同期したリセット信号を有している。
クロックに同期したリセット信号はIPモジュールの最外部のWrapper層でクロックと同期をとるためのrsync_primを介して、IP内に分配される。
各IPやWatch Dog Timerなどの生成するソフト上制御のリセットについては、チップ全体でのリセット処理が必要なものについては各IPからSYSCブロックにIP生成のリセット信号として入力し、SYSCブロックからチップ全体へリセット信号を伝搬する。リセット信号の最小パルス幅などの制御はSYSCブロック側で行う。

4.DFT

4.1 DFT制御信号

各IPはテストモードを制御するための入力DFT_MODEを有する。これは前述のrsync_primを制御するためである。それ以外のDFT用の入出力信号はDFT設計フローの工程で自動挿入する。

4.2 DFT設計工程のための要件

各IPのRAMモジュールに対してMemoryBIST機能挿入をDFTフローの中で行う。
このため、図1に示すように、RAMモジュールは各IPのWrapper層にまとめて一つのモジュールとする。しかし、図2に示すように、Wrapper層へのRAMモジュールの切り出し対応が困難な場合は、AIDC拠点と協議のこと。
各IPは非同期リセットFF、または非同期セットFFを実装し、非同期リセット・セット両対応のFFは実装しない。また、IP内の非同期リセット信号、または非同期セット信号は、FFのデータ入力ピンには接続しない。さらに、各IP内で生成した信号を非同期リセットFFのリセットピン、または非同期セットFFのセットピンに接続しない。対応が困難な場合は、AIDC拠点と協議のこと。
LogicBIST、Boundary ScanについてはMemoryBIST挿入後にスクリプトで制御用の入出力信号、クロック信号含め自動挿入を実施する。自動挿入可能な回路構成であることを満たすため、各IPはDFT工程前にSpyGlassの実行環境を整え、RTL Power Onの段階ではSpyGlassのlintルールのエラーがないこと、DF以降はSpyGlassのlint/cdc/rdc/dftルールのエラーがないことを確認する。

5.JTAGインターフェイス

IPのデバッグなどの目的でJTAGインターフェイスを使用する場合、各IPのJTAG TAP
はチップ共通のJTAGコントローラからスター接続とする。JTAG標準の5本の信号TMS, TCK, TDI, TDO, TRSTを用いる。

6.CPU割込み

各IPからメインのCPUへの割込み信号は各割込みにつき1本の割込み<IP名>_INT_xx信号によって要求される。xxは各IPからの割込みが複数ある場合に互いに識別するためにつける名称である。割込み信号は正論理信号である。各割込みは16レベルの割込みレベルのいずれかをアサインされ、専用の割込み処理プログラムアドレスを有する。レベル、プログラムアドレスともにプログラム可能である。各割込み信号はCPUの割込み制御のプログラミングによってレベルもしくはパルス割込みとして処理される。
各IPからの割込み信号はCPU内部でCLKH同期2サイクルのシンクロナイザーを用い、同期化して入力する。各IPから非同期信号で入力可能だがCPUで検出するためにはCLKHで2サイクル期間以上信号の保持が必要である。
詳細な定義はSynopsys IPのDWC_ARC_HS_ProcessorのProgramer’s Reference Manualの4.3 Interruptsを参照のこと。

7.DMACトリガ

IP内のメモリとLPDDRとの間のデータ転送にSoCチップのDMACを使用することが可能である。DMA転送はハードウエアトリガを用いる方式と、メモリーメモリ間のデータ転送として完全ソフトウエア制御とする方式が考えられる。
ハードウエアトリガを用いる方式においてはDMAコントローラと各IPの間のDMA転送トリガ信号ハンドシェークについてはSynopsys IP DesignWareのDW_DMAC_AXIのデータブック2.10 Handshaking Interfaceの章を参照のこと。各IPとDMACとの間のHandshake信号はDMACへの入力信号については<IP名>_DMAC_(<オプション名>_)<ハンドシェーク信号名>とし、DMACからの出力信号についてはDMAC_<IP名>_(<オプション名>_)<ハンドシェーク信号名>とする。IPが複数のDMA要求を有する場合には<オプション名>を指定するが、1つの場合は指定しない。
制御側ロジックを簡単にするため、フローコントロールなどを用いず、DMA転送長はDMAC側にソフトウエアで設定するものとし、DMA_REQとDMA_ACKのハンドシェークを基本とする。

8.エラー状態監視機能

各IPのエラー状態をERCブロックで監視することが可能である。
監視するエラーステータス情報は<IP名>_ERC_xx信号で各IPから出力する。xxは各IPからのエラーステータス情報が複数ある場合に互いに識別するためにつける名称である。
エラーステータス情報の出力信号仕様は正論理のレベル信号のみを受け付ける。エラー検出通知はERCブロックで全てのエラーステータス信号入力の論理和をとり、エラー検知割り込み< ERC_INTC_INT_P>としてCPUに通知する。
エラーステータスの詳細はERCブロックのレジスタ空間にアクセスすることで確認する。

過去の掲載

過去の掲載AiIPcore仕様forRTL

2020.04.02:ver-1.00         初版:A.Hasegawa
2020.04.29:ver-1.01         ソフトウエアリセット追加:A.Hasegawa

概要

SoCへのIPの組込みおよび組込み後のSoC設計の容易化のため、IPの記述、インターフェイスについてのガイドラインを設ける。SoC設計についてはAIDCで用いている標準の設計フローおよび拠点で整備した標準SoCプラットフォームに起因する制約条件を含む。
SystemC等の高位設計言語を使用したIPについては高位言語合成ツールが出力するRTLまたは、それに変更を加えたRTLのレベルでガイドラインを満たしていることとする。なお、変更についてはプログラム、スクリプトなどのツールによる変更を原則とする。
RTLの記述はSTARC RTL設計ガイドライン(RTLスタイルガイドVerilogHDL版およびSystem VerilogHDL版)を基本とする。
テスト設計に関連するインターフェイスはIEEE1500に準拠する。
IP内で使用するクロックについては基本、SoC全体での同期クロック設計とし、SoCプラットフォーム(SoCPF)から供給される標準クロックの利用を原則とする。外部インターフェイスに起因する非同期クロックの使用については拠点窓口に相談のこと。
IPとSOCを接続するバスインターフェイスについてはAMBAのAXI4, AXI Lite, AHB, APBとする。
SoCPF搭載のCPUに対する割込みインターフェイス、DMAコントローラに対する転送要求インターフェイスについても当ガイドラインに記載する。

Ai-IPxの記述の基本構成

IPをSoCに接続し、SoCテスト設計フローを適用することを可能とするため各IPは図1、図2に示すように基本となるIPコアの外側にWrapper層を設ける。Wrapper層にはリセット同期回路、IP内で使用するすべてのRAMを設ける。MBIST設計フローを適用するためRAMモジュールのIPコアからの切り出しが必要である。

IP内で使用するフリップフロップはは非同期リセットフリップフロップとし、フリップフロップのリセット信号にはフリップフロップのクロック信号と同期したリセット信号を用いる。
Wrapper層で使用するリセット信号同期モジュールは拠点提供のrsync_primを使用のこと。

チップ外部とのインターフェイスを持つIPについてはIO信号定義ファイル(xlsxフォーマット)を作成する。バウンダリスキャン、LBISTのロジック挿入は拠点設計フローにおいて、IOセル名称に基づいた抽出により自動挿入を行うため特段の処理は不要である。ただし、LPDDR, PCIeのように高速のインターフェイスを実現するためレイアウトデータまで提供するIPについては、自動挿入の対象としないため、インターフェイス信号定義ファイルにおいて、該当するカラムに明示するとともに、IOテストに必要な機能の組込みについてAIDC拠点と協議のこと。

クロック

クロックはPLLにて10MHzから54MHzの外部クロック入力を逓倍し1600MHzの基本クロックを生成し、これを分周器を用いて分周しユーザクロックを生成する。ユーザクロックを下記に示す。PLLの逓倍率を外部モード設定ピンを用いて設定することで異なるクロック入力に対し約1600MHzを生成するが、整数倍の逓倍率でないものについては最大11MHzの誤差が生じる。

チップ内のクロックは、クロックの最高周波数を生成するためのPLLの系統ごとに分割されている。
各IPは原則としてチップ内クロックソースから供給されるそれぞれの動作周波数のクロック入力をIPインターフェイスで受けそれをIP内に直接分配する構造をとる。
スキャンテストなどに使用するテスト用のクロックについては物理実装設計工程におけるクロックツリー生成時に分配、調整が行われるため各IPモジュール内でのケアは不要である。

リセット

チップ全体の同時リセットのため各クロックに同期したリセット信号を有している。
クロックに同期したリセット信号は、IPモジュールの最外部のラッパ層でクロックと同期をとるためのプリミティブモジュールを介して、IP内に分配される。
各IPやWatch Dog Timerなどの生成するソフト上制御のリセットについては、チップ全体でのリセット処理が必要なものについては各IPからSYSCにIP生成のリセット信号として入力し、SYSCからチップ全体へリセット信号を伝搬する。リセット信号の最小パルス幅などの制御はSYSC側で行う。

DFT制御信号

各IPはテストモードを制御するための入力DFT_MODEを有する。これはリセット同期回路を制御するためである。それ以外のDFT用の入出力信号はDFT設計フローの工程で自動挿入する。

DFT設計工程のための要件

各IPのRAMモジュールに対してMBIST機能挿入をDFTフローの中で行う。
このため、RAMモジュールは各IPのWrapper層にまとめて一つのモジュールとする。
LogicBIST, Boundary ScanについてはMBIST挿入後にスクリプトで制御用の入出力信号、クロック信号含め自動挿入を実施する。自動挿入の工程にはSpyGlass-DFTをツールとして使用するため各IPはDFT工程前にSpyGlassの実行環境を整えSpyGlass-lintが実行可能なことを確認する。

JTAGインターフェイス

IPのデバッグなどの目的でJTAGインターフェイスを使用する場合、各IPのJTAG TAPはチップ共通のJTAGコントローラからスター接続とする。JTAG標準の5本の信号TMS, TCK, TDI, TDO, TRSTを用いる。

CPU割込み

各IPからメインのCPUへの割込み信号は各割込みにつき1本の割込み<IP名>_INT_xx信号によって要求される。
xxは各IPからの割込みが複数ある場合に互いに識別するためにつける名称である。割込み信号は正論理信号である。
各割込みは16レベルの割込みレベルのいずれかをアサインされ、専用の割込み処理プログラムアドレスを有する。レベル、プログラムアドレスともにプログラム可能である。
各割込み信号はCPUの割込み制御のプログラミングによってレベルもしくはパルス割込みとして処理される。
詳細な定義はSynopsys IPのDWC_ARC_HS_ProcessorのProgramer’s Reference Manualの4.3 Interruptsを参照のこと。

DMACトリガ

IP内のメモリとLPDDRとの間のデータ転送にSoCチップのDMACを使用することが可能である。
DMA転送はハードウエアトリガを用いる方式と、メモリーメモリ間のデータ転送として完全ソフトウエア制御とする方式が考えられる。
ハードウエアトリガを用いる方式においてはDMAコントローラと各IPの間のDMA転送トリガ信号ハンドシェークについてはSynopsys IP DesignWareのDW_DMAC_AXIのデータブック2.10 Handshaking Interfaceの章を参照のこと。
各IPとDMACとの間のHandshake信号はDMACへの入力信号については

<IP名>_DMAC_(<オプション名>_)<ハンドシェーク信号名>とする。

DMACからの出力信号については

DMAC_<IP名>_(<オプション名>_)<ハンドシェーク信号名>とする。

IPが複数のDMA要求を有する場合には<オプション名>を指定するが、1つの場合は指定しない。
制御側ロジックを簡単にするため、フローコントロールなどを用いず、DMA転送長はDMAC側にソフトウエアで設定するものとし、DMA_REQとDMA_ACKのハンドシェークを基本とする。

AIチップ設計拠点 Confidential Document