Computer IP再利用の為のComputer
Aided
Aided
プロトコル変換器合成に関する研究
DesignDesign
東京大学

藤田研究室

研究の背景
１つのVLSI上に多くの機能を集積

System on a Chipの需要・システム全体を１チップ化するSoCを用いて電子機器を設計することによって、生産コスト低減や機器の小型化が可能。

・全体をいくつかの機能ブロックとその間の通信路として構成する設計が一般的。

設計資産(IP)を用いて設計期間を短縮

IP間のプロトコル互換性が再利用性を左右する・設計規模が増大する中、設計期間短縮のために、過去の設計資産（IntellectualProperty）を再利用。

・異なるプロトコルを用いるIP間は単純に接続するだけでは通信できない。
・プロトコル変換器の設計にかかる期間も無視できない。

プロトコル変換器の自動合成技術が鍵！
本研究の目的と既存手法の問題点
プロトコル変換器の自動合成手法
・ 大きく分けて２つのアプローチが存在する。

ライブラリベース

・ 本研究では、直接合成アプローチを用いる合成手法で*1あるPasseroneらの手法 をベースとする。
・彼らの合成手法は、２つのプロトコルを表すオートマトンの状態を依存関係に違反しないように融合し、変換器のFSMを探索する。
・ この手法を拡張し、扱えるプロトコルの規模を拡大する。
・ Passeroneらの手法では、通信路上を流れるデータの量や順番が合成時に既知であると仮定している。その為、無限に続く通信は探索空間が無限になり、扱うことができない。
・また、計算量がO(MxN)であるため、大規模なプロトコルに適用するのが難しい。

直接合成

Protocol A

Protocol A
仕様

内部表現
ライブラリ

Protocol B

Protocol B
仕様

内部表現

Protocol A
内部表現

・あらかじめライブラリに登録しておいた変換器の記述(の一部)を、必要に応じて組み合わせて目的の機能を持った変換器を合成する。

内部表現
Protocol B
Protocol A

Protocol B

・性能はライブラリの豊富さと質に大きく依存する。
・新たなプロトコルをライブラリに登録する手間が大きい。

・形式的に記述され合成たプロトコルの仕アルゴリズム様から、変換器を合成する。
・仕様からいかにProtocol A
レイテンシの小Protocol B
さい変換器を合成するかが鍵。
・また、ライブラリベースの手法に比べ、扱えるプロトコルの規模が小さい。

*1

R.Passerone, J.A.Rowson, A.Sangoivannni‑Vincentelli,"Automatic Synthesis of Interfaces between Incompatible Protocols", DAC'98.

提案手法によるプロトコル変換器自動合成
我々はPasseroneらの手法をベースに、下図で紹介する３つの要素技術を拡張し、プロトコル変換を行えるプロトコルの規模を拡大した。当研究室ではこの手法を用いて、Single R/W, Burst R/Wシーケンスを扱うOCP⇔AMBA変換器を合成することができる事を確認している。
また、この手法では、シーケンス毎にプロトコル変換器の合成を独立に行う事ができるため、計算量をO(M+N)に留める事ができる。
プロトコルモデル
プロトコル=

シーケンス
Sequence
Sequence
Sequence
Sequence

各シーケンス毎の変換器合成

プロトコルはシーケンスの集合からなる

シーケンス=バーストシーケンスは、オートマトンで表すと、入れ子ループ状になる。その為、左記の手法だけでは扱うことができない。
スーパーステートを導入し、子ループの中身を別に扱うことで扱う。

iii

バーストシーケンスの処理

シーケンスは１つのオートマトンで表される。
そのオートマトンは初期状態から始まり、どのパスを通っても初期状態に戻る。

=iie

探索
アルゴリズムプロトコル全体は下図のように、各シーケンスのオートマトンを初期状態を基点に統合した形で表される。

SSSS
Ai

探索
アルゴリズム

ie

SSC

SS
Be

シーケンス

Super State Ai

ループエッジを扱う為に、合成の前処理として「終了状態」の挿入を行う。入力のオートマトンに終了状態を追加し、初期状態へ戻るエッジを終了状態へのエッジに張り替える。Passeroneらの合成アルゴリ
ズムの適用後、出力されるFSMには、二つの終了状態の組に相当する状態が存在し、この状態へ入るエッジをFSMの初期状態へ入るように再びエッジを張り替える。

右図に合成したAMBA→OCP変換器のＦＳＭを示す。シーケンス毎に変換器を合成する事により、１回の合成で探索する解空間が小さくなった為、合成にかかった時間は1.32[sec]と短かった。
今後は、仕様書からオートマトン表現に変換する作業の省力化を目指す。

Super State C

探索アルゴリズム

Super State B*M_HW RITE <=0*M_HT RANS <=AH B_IDLE*M_HT RANS <=AH B_IDLE *M_HT RANS <=AH B_IDLE *M_HT RANS <=AH B_IDLE*S _SAck<=0
S _MCmd=>OC P_IDLE
S _MCmd=>OC P_IDLE
S _MCmd=>OC P_IDLE*S _SR es p<=0ID: 0idleidle

S _MCmd=>OC P_IDLE*M_HW RITE <=0*M_HT RANS <=AH B_NO NS EQ*S _SAck<=0*S _SR es p<=0
S _MCmd=>OC P_IDLE
M_H ADDR<=addr*M_HT RANS <=AH B_IDLE*S _SAck<=1*S _SR es p<=1
M_H RE ADY=>1
S _MCmd=>OC P_R D
S _S Data<=data
M_H RDAT A=>data
S _MAddr=>addr

ID: 10AR R eqidle*M_HT RANS <=AH B_IDLE*S _SAck<=1
S _MCmd=>OC P_R D
S _MAddr=>addr*M_HT RANS <=AH B_IDLE*S _S Ack<=0*S _S R es p<=0
M_H RE ADY=>0
S _MCmd=>OC P_IDLE*M_HT RANS <=AH B_IDLE*S _SAck<=1*S _SR es p<=1
S _MCmd=>OC P_R D
S _S Data<=data
S _MAddr=>addr*M_HT RANS <=AH B_IDLE
S _MCmd=>OC P_R D
S _MAddr=>addr*M_HT RANS <=AH B_IDLE
M_H RE ADY=>0
S _MCmd=>OC P_R D
S _MAddr=>addr*M_HT RANS <=AH B_IDLE*S _SAck<=1
M_H RE ADY=>0
S _MCmd=>OC P_R D
S _MAddr=>addr

ID: 21
AR R etO R ead*M_HT RANS <=AH B_IDLE*S _S Ack<=1*S _S R es p<=1S _MCmd=>OC P_IDLE
S _S Data<=data
S _MAddr=>addr*M_HT RANS <=AH B_IDLE*S _S Ack<=0
S _MCmd=>OC P_R D
S _MAddr=>addr*M_HT RANS <=AH B_IDLE*S _S Ack<=0
M_H RE ADY=>0
S _MCmd=>OC P_R D
S _MAddr=>addr*M_HT RANS <=AH B_IDLE*S _S R es p<=0
*S _S Ack<=0
M_H RE ADY=>0*M_HT RANS <=AH B_IDLE*S _SAck<=1*S _SR es p<=1
M_H RE ADY=>1
S _MCmd=>OC P_IDLE
S _S Da ta<=da ta
M_H RDAT A=>da ta
S _MAddr=>addr

ID: 12
AR R eqOR Ac k

*M_HT RANS <=AH B_IDLE*S _SR es p<=1*S _SAck<=0
S _S Da ta<=da ta*M_HT RANS <=AH B_IDLE*S _SR es p<=0
*S _SAck<=0*M_HW RITE <=1*M_HT RANS <=AH B_NO NS EQ*S _S Ack<=1
S _MCmd=>OC P_W R
M_H ADDR<=addr
M_H W DAT A<=da ta
S _MAddr=>addr
S _MDa ta=>da ta*S _SAck<=1*S _SR es p<=1
M_H RE ADY=>1ID:10000
AR R eqidle_S*M_HT RANS <=AH B_IDLE*S _S Ack<=0*S _S R es p<=0
S _MCmd=>OC P_IDLE*M_HT RANS <=AH B_IDLE*S _S R es p<=1
*S _S Ack<=0
M_H RE ADY=>1
S _S Da ta<=da ta
M_H RDAT A=>da ta

ID:20000
AR R etidle_S*M_HT RANS <=AH B_IDLE*S _SAck<=1
S _MCmd=>OC P_IDLE
S _MAddr=>addr*M_HT RANS <=AH B_IDLE*S _SAck<=1
M_H RE ADY=>0
S _MCmd=>OC P_IDLE
S _MAddr=>addr

ID: 22
AR R etO R Ac k

*M_HT RANS <=AH B_IDLE*S _SAck<=0*S _SR es p<=0
M_H RE ADY=>1
S _MCmd=>OC P_IDLE
M_H RDAT A=>da ta

ID: 11AR R eqOR ead*M_HT RANS <=AH B_IDLE*S _SAck<=0*S _SR es p<=0
S _MCmd=>OC P_IDLE

ID: 20
AR R etidle*M_HW RITE <=0*M_HT RANS <=AH B_NO NS EQ*S _S Ack<=1
S _MCmd=>OC P_R D
M_H ADDR<=addr
S _MAddr=>addr*M_HW RITE <=0*M_HT RANS <=AH B_NO NS EQ
S _MCmd=>OC P_R D
M_H ADDR<=addr
S _MAddr=>addr*M_HW RITE <=0*M_HT RANS <=AH B_NO NS EQ*S _S Ack<=1*S _S R es p<=1
S _MCmd=>OC P_R D
M_H ADDR<=addr
S _S Da ta<=da ta
S _MAddr=>addr

ID:20012
AW R eqOW Ac k

*S _S R es p<=1
M_H RE ADY=>1

ID:20021
AW R etO W write*S _S Ack<=1
M_H RE ADY=>0

ID:20022
AW R etO W Ac k

ID:20011
AW R eqOW write*M_HT RANS <=AH B_IDLE*S _S R es p<=1

*S _S Ack<=0
M_H RE ADY=>0
S _MAddr=>addr
S _MDa ta=>da ta*S _S R es p<=0
M_H RE ADY=>0*M_HW RITE <=1*M_HT RANS <=AH B_NO NS EQ*S _SAck<=1*S _SR es p<=1S _MCmd=>OC P_W R
M_H ADDR<=addr
M_H W DAT A<=da ta
S _MAddr=>addr
S _MDa ta=>da ta*M_HW RITE <=1*M_HT RANS <=AH B_NO NS EQ
S _MCmd=>OC P_W R
M_H ADDR<=addr
M_H W DAT A<=da ta
S _MAddr=>addr
S _MDa ta=>da ta*M_HT RANS <=AH B_IDLE*S _SAck<=0S _MAddr=>addr
S _MDa ta=>da ta*M_HT RANS <=AH B_IDLE*S _SR es p<=0ID:30000
AW R eqidle_S*M_HT RANS <=AH B_IDLE*S _S Ack<=1*S _S R es p<=1

*M_HT RANS <=AH B_IDLE*S _SAck<=1*M_HW RITE <=0*M_HT RANS <=AH B_IDLE*S _S Ack<=1*S _S R es p<=1
M_H RE ADY=>1
S _MR eqL as t=>1
S _S Da ta<=da ta
M_H RDAT A=>da ta

M_H RE ADY=>1
S _MCmd=>OC P_IDLE*M_HT RANS <=AH B_IDLE
S _MCmd=>OC P_IDLE

ID:40000AW R etidle_S*M_HT RANS <=AH B_IDLE*S _S Ack<=1*S _S R es p<=1
S _MCmd=>OC P_W R
S _MAddr=>addr
S _MDa ta=>da ta*S _S Ack<=1*S _S R es p<=1
M_H RE ADY=>1
S _MCmd=>OC P_W R
S _MAddr=>addr
S _MDa ta=>da ta*M_HW RITE <=0*M_HT RANS <=AH B_IDLE*S _S R es p<=1
M_H RE ADY=>1
S _MR eqL as t=>1
M_H RDAT A=>da ta

ID: 40012
ABR sO BR s

*M_HW RITE <=0*M_HT RANS <=AH B_S E Q*S _SR es p<=1
M_H RE ADY=>1
S _MCmd=>OC P_R D
S _MR eqL as t=>0
M_H ADDR<=addr
S _S Da ta<=da ta
M_H RDAT A=>da ta
S _MAddr=>addr

ID: 40013
ABR sO BR Ac k

*M_HW RITE <=0*M_HT RANS <=AH B_NO NS EQ
S _MCmd=>OC P_R D
S _MBurs tR eq=>1
M_H ADDR<=addr
S _MAddr=>addr*M_HW RITE <=0*M_HT RANS <=AH B_S E Q*M_HW RITE <=0*S _SAck<=1*M_HW RITE <=0*M_HT RANS <=AH B_S E Q *S _SR es p<=1*M_HT RANS <=AH B_S E Q*S _SAck<=0
M_H RE ADY=>1*S _S Ack<=0*S _SR es p<=0S _MCmd=>OC P_R D*S _S R es p<=0
M_H RE ADY=>1
S _MR eqL as t=>0
M_H RE ADY=>0
M_H ADDR<=addr
M_H ADDR<=addr
M_H ADDR<=addr
M_H RDAT A=>da ta
S _S Da ta<=da ta
M_H RDAT A=>da ta
S _MAddr=>addr*M_HW RITE <=0*M_HT RANS <=AH B_S E Q*S _S Ack<=1*S _S R es p<=0M_H RE ADY=>0
M_H ADDR<=addr*M_HW RITE <=0*M_HT RANS <=AH B_SE Q*S _S R es p<=0
M_H RE ADY=>0
M_H ADDR<=addr*M_HW RITE <=1*M_HT RANS <=AH B_IDLE*S _S Ack<=1*S _S R es p<=1
M_H RE ADY=>1
S _MR eqL as t=>1
M_H W DAT A<=da ta*M_HW RITE <=1*M_HT RANS <=AH B_IDLE*S _S R es p<=1
M_H RE ADY=>1
S _MR eqL as t=>1
M_H W DAT A<=da ta*M_HW RITE <=1*M_HT RANS <=AH B_NO NS EQ
S _MCmd=>OC P_W R
S _MBurs tR eq=>1
M_H ADDR<=addr
S _MAddr=>addr
S _MDa ta=>da ta

ID:40025
ABW sO BW s

*M_HW RITE <=1*M_HT RANS <=AH B_SE Q*S _S R es p<=1
M_H RE ADY=>1
S _MCmd=>OC P_W R
S _MR eqL as t=>0
M_H ADDR<=addr
M_H W DAT A<=da ta
S _MDa ta=>da ta
S _MAddr=>addr

ID:40026
ABW sO BW Ac k

*M_HW RITE <=1*M_HT RANS <=AH B_SE Q*M_HW RITE <=1*S _SAck<=1*M_HW RITE <=1*M_HT RANS <=AH B_S E Q *S _SR es p<=1*M_HT RANS <=AH B_S E Q*S _SAck<=0
M_H RE ADY=>1*S _S Ack<=0*S _SR es p<=0
S _MCmd=>OC P_W R*S _S R es p<=0
M_H RE ADY=>1
S _MR eqL as t=>0
M_H RE ADY=>0
M_H ADDR<=addr
M_H ADDR<=addr
M_H ADDR<=addr
M_H W DAT A<=da ta
M_H W DAT A<=da ta
M_H W DAT A<=da ta
S _MDa ta=>da ta
S _MAddr=>addr*M_HW RITE <=1*M_HT RANS <=AH B_SE Q*S _S Ack<=1*S _S R es p<=0
M_H RE ADY=>0
M_H ADDR<=addr
M_H W DAT A<=da ta*M_HW RITE <=1*M_HT RANS <=AH B_SE Q*S _SR es p<=0
M_H RE ADY=>0
M_H ADDR<=addr
M_H W DAT A<=da ta