118
Architecture and Design of an Ecient Router for OASIS 3D Network-on-Chip System s1190130 Yuki Tanaka February 27, 2015

Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Architecture and Design of an Efficient Routerfor OASIS 3D Network-on-Chip System

s1190130Yuki Tanaka

February 27, 2015

Page 2: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

2

Page 3: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Abstract

高性能の 3Dネットワークオンチップ(3D-NoCは)将来の多くのコアシ

ステムのための実行可能なソリューションとなっている。シリコン貫通ビア

(TSV)は、良好な性能と低消費電力をサポートするために 3次元のNoC設

計の顕著な要素である。3D-OASISネットワークオンチップ(3D-ONoC)は、

以前に私たちの研究室で提案された。この論文では、信頼性の高い3D-ONoC

ルータを得るために、TSV接続を統合する。私たちは提案されたルータの接

続の正しさ、タイミング違反のないこと、TSV接続を介してメッセージを伝

達していることが性能評価から分かった。提案されたルータの面積は 51939

μmで、電力は 403μWであり、速度は 490.1MHzである。

3

Page 4: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Contents

1 Introduction 61.1 Background . . . . . . . . . . . . . . . . . . . . . . . . . . . . .61.2 3D-OASIS-Network-on-Chip(3D-ONoC) router architecture . . .81.3 Reserch Motivation . . . . . . . . . . . . . . . . . . . . . . . . .10

2 TSV Design 112.1 TSV verilog-HDL . . . . . . . . . . . . . . . . . . . . . . . . . .122.2 TSV LEF file . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

2.2.1 Making TSV LEF file in Virtuoso tool . . . . . . . . . . .142.2.2 Add information to TSV LEF file . . . . . . . . . . . . .32

2.3 TSV LIB file . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3 TSV implementation 403.1 Implement TSV to router in Verilog HDL . . . . . . . . . . . . .40

3.1.1 Router wtih TSV verilog-HDL . . . . . . . . . . . . . . .403.2 Synthesis with Synopsys Design Compiler . . . . . . . . . . . . .423.3 Input port, Switch allocator, Crossbar macro . . . . . . . . . . . .453.4 Place and Route in Cadence SoC Encounter . . . . . . . . . . . .46

3.4.1 SoC encounter step . . . . . . . . . . . . . . . . . . . . .47

4 Evaluation Results 724.1 Timinig analysis . . . . . . . . . . . . . . . . . . . . . . . . . . .724.2 Timing simulation . . . . . . . . . . . . . . . . . . . . . . . . . .724.3 Hardware design results . . . . . . . . . . . . . . . . . . . . . . .73

5 Conclusion, Future work 78

6 Appendix 816.1 Test Bench File . . . . . . . . . . . . . . . . . . . . . . . . . . .81

6.1.1 rectest . . . . . . . . . . . . . . . . . . . . . . . . . . .816.1.2 RtoRtest . . . . . . . . . . . . . . . . . . . . . . . . . .85

6.2 Script file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .894

Page 5: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.2.1 Synthesis in Design Compiler . . . . . . . . . . . . . . .896.2.2 Place and Route in SoC Encounter . . . . . . . . . . . . .916.2.3 Evaluation Area, Frequency in Design Compiler . . . . .976.2.4 Evaluation Power in Design Compiler . . . . . . . . . . .98

6.3 TSV LEF file . . . . . . . . . . . . . . . . . . . . . . . . . . . .996.4 TSV LIB file . . . . . . . . . . . . . . . . . . . . . . . . . . . .1096.5 routerLAXYZ.v . . . . . . . . . . . . . . . . . . . . . . . . . .113

5

Page 6: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Chapter 1

Introduction

1.1 Background

チップ上の高性能な組み込みシステムは今後のナノスケール技術による

マルチ、メニーコアのアプローチに基づいて行われる。これらは数百の処理

および記憶要素から構成されている。彼らは並列処理の大規模な量を必要と

するアプリケーションを実行する。

Network-on-Chip (NoC) [1]は、シリコン上の相互接続を実現する良い方

法を提供し、主にバスベースのソリューションの限界を緩和する。ディープサ

ブミクロンプロセス技術は、単一のチップ上に複数のソフトウェアのプログ

ラムで制御できるプロセッサと専用のハードウェア構成要素を統合する新た

なアプリケーション固有の組み込みアーキテクチャの実装を可能にした。最

近では、これらのアプリケーション固有のアーキテクチャは、新たな無線通

信、ブロードバンド/分散型のネットワーキング、分散コンピューティング、お

よびマルチメディア、コンピューティングの分野でアプリケーションによって

駆動されている今日の日電子設計上の問題のための重要な設計ソリューショ6

Page 7: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

ンとして浮上している。NoCのバスベースのシステムの問題を解決するため

の魅力的な選択肢になってきている。しかし、将来のアプリケーションはま

すます複雑になっている。よりスケーラブルなアーキテクチャを要求すると、

コア及びメモリ、並びに同じチップ上の異なるコア間の通信の間のすべての

トランザクションのための帯域幅だけでなく、通信を確保する必要がある。

そのため 2D-NoCは将来の大規模システムに対する信頼性が十分でない [2]。

大きな原因の一つは、特に大規模なネットワークサイズでの 2D-NoCの長い

直径である。NoCの直径はとても重要な値である。大規模なネットワークの

直径は、最悪の場合ネットワーク内のルーティング待ち時間に悪影響を招く

からである。そのため、NoCのベースのアーキテクチャを最適化することが

非常に必要となってきている。この問題の解決方法の一つは、3D-Network-

on-Chipに 2D-NoCを拡張することである。3次元集積回路(3D-IC)は、相

互接続のボトルネックを解決するための潜在的な解決策として注目をたくさ

ん受けている。回路は、3D-ICのチップ [3]とノイズの心配がなく、及び混合

技術の実現が可能となった [4]。また、3D-ICは、より高い性能を達成するこ

とができ、配線が短くなることで消費電力は低くなる。3D集積のメリットと

の NoC構造を組み合わせることにより、有望な 3D-の NoCアーキテクチャ

を提供しています。図 1.1は 2D-NoCから 3D-NoCの拡張を示している。

7

Page 8: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 1.1: 8x8 2D-NoCを 4x4x4 3D-NoC に変換

1.2 3D-OASIS-Network-on-Chip(3D-ONoC) routerarchitecture

OASIS NoCは私たちの研究室で提案されている。3D-OASIS-NoC(3D-

ONoC) [1、2、5、6、7, 8, 9]ルータのルータのブロック図は図 1.2に示され

ている。これは、3つの主要なパイプラインステージ (Buffer Writing(BW)、

Routing-calculation/Switch-Arbitration(RC/SA)、Crossbar-Traversal(CT))

によって特徴づけられる。ルータは、全 3D-ONoC設計のバックボーンとみ

なされる。各ルータは、4つのポートが隣接ルータへの接続専用であり、7

つの出力ポート、7つの入力の最大数は、1つのポートが local computation

tile にスイッチを接続するために使用され、残りの 2つのポートが追加さ

れるレイヤ間の通信を確保するために、上部及び下部の層にルータを接続す

る。図 1.2に示すように、ルータには各方向のための7つの input port モ

ジュール、 Switch-Allocator(STALL-GO flow controlおよびMatrix-arbiter

schedulerを含んでいる)に加えて、次の隣接ノードへのフリットの転送する8

Page 9: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

 Crossbarモジュールが含まれています。

Figure 1.2: 3D-ONoCルータのアーキテクチャ

図1.3は、3D-ONoCのフリットフォーマットを示しています。最初のビッ

トは、パケットの終了を知らせる tailを示している。次の7ビットは次のポー

トを示すために専念しています。この7ビットはフリットが次に送信される下

流の隣接ノードの方向を定義するために  Look-Ahead-XYZ ルーティング

アルゴリズム [8]によって定められる。その後、3ビットは、各 xdest、ydest

と zdestのストア先情報に使用されている。最後に、残りの 64ビットは、ペ

イロード (データ)を格納している。 3D-ONoCは、様々なアプリケーション

を対象としているので、ペイロードの大きさを容易にいくつかの特定のアプ

リケーションの要件を考慮するために変更することができる。さらに、この

アーキテクチャは独立した headフリットを提供しないので、すべてのフリッ

トはX、Y、およびZの宛先アドレスを識別し、tailフリットであるか否かを9

Page 10: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

示すために、追加の単一ビットを運ぶ。

Figure 1.3: 3D-ONoCフリットフォーマット

1.3 Reserch Motivation

3D-OASIS-NoCの高性能を達成するために、3Dの相互接続が必要であ

る。しかし、私たちの研究室で提案されているOASIS NOCはまだルータに

3Dの相互接続を実施していない。したがって、私たちの研究の目標は TSV

と 3D-ONoC ルータの統合である。私たちは完全なルータの物理的実装を

行った。また、シノプシスの Design Compilerを使用してハードウェアの複

雑さを評価する。

10

Page 11: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Chapter 2

TSV Design

TSVを作るには 3つのファイルが必要になる。Verilog-HDLファイルは

論理合成時に必要であり、これは論理の機能性と接続を定めている。Library

Exchange Format (LEF)ファイルは配置配線時に必要であり、これには物理形

態、配置図などが定められている。Liberty Timing (LIB) ファイルは配置配

線とタイミングシュミレーションに必要であり、遅延情報などが定められて

いる。なお作業環境は Virtuosoは zxp012、それ以外は zxp035にて行ってい

る。作業環境は

(1)

-Cigwinのダウンロード

(2)

-ターミナルでコマンド setenv DISPLAY localhost:0.0

(3)

-コマンド ssh -X名前@zxp012.u-aizu.ac.jp(virtuosoを使用する場合) -コマン11

Page 12: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

ド ssh -X名前@zxp035.u-aizu.ac.jp(それ以外)

2.1 TSV verilog-HDL

Verilog HDL記述は、シミュレーション、合成、および配置配線の目的の

ために必要とされる。シミュレーションのために、TSVがルータの垂直入

力ポートおよび出力ポートに接続されていることが必要である。これはルー

タからの垂直出力信号は TSVに行くべきであることを意味する。ひいては、

それが入力ポートを有するべきであることを意味する。しかし、シミュレー

ションではこの出力ポートは TSVに読み出す必要がある。だから、TSVは

出力ポートを持つ必要がある。TSVは単純にただの接続である。よって下記

のコードのように1つの要素からデータを受け取り (input)、もう一つの要素

へとデータを送り出す (output)コードを記述する。この時TSVが受け渡しす

る bit数は 1である。Verilog HDLのコードは、配置配線までの垂直接続を表

すことはできない。この問題の解決策は、TSVのため通常の入出力ポートで

ある通常の構成を採用することである。

//TSV.v

module TSV(data_in, data_out);

input data_in;

output data_out;

12

Page 13: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

assign data_out = data_in;

endmodule

2.2 TSV LEF file

Cadence SoC Encounter(配置配線ツール)ではすべてのスタンダードセ

ル、マクロセルのために LEF(Library Exchange Format)ファイルが必要であ

る。LEF file にはセルの物理的特性が記述されている。TSVは標準的なセ

ルではないので、マクロセルとして実装される。TSVの LEF ファイルは

Virtuosoツールと FreePDK3D45[10]を使用して作成する、

プロセスデザイン・キット(PDK)は、チップ設計フローにおいてEDA

ツールとともに使用する、ファウンドリ対応データとスクリプト・ファイル

をまとめたものである。PDKは、主にモデル、シンボル、テクノロジ・ファ

イル、パラメタライズド・セル(P-Cell)、およびルール・ファイルで構成さ

れており、PDKを使用することで設計者はチップ設計を容易に開始すること

ができ、回路図入力からテープアウトまでの設計フローをシームレスに実行

可能となる。FreePDK3D45にはインバータを TSV接続を通して 5層接続し

ている情報がある。図はその中の 2層間を TSVで接続している構造を示し

ている。図から TSVは(簡単にするためにmetal2からmetal9までは省略し

てある)metal層の積層体であることを示している。私達は 1つのルータと

TSVの接続を行う。そのため図のTierA層のみの情報を使ってTSVの構造を13

Page 14: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

抽出する。

Figure 2.1: FreePDK3D45 [10]の積層構造

2.2.1 Making TSV LEF file in Virtuoso tool

FreePDK3D45でのTSVのレイアウトは完了していない。私達は Input,Output

ポートを追加する必要がある。私たちは図 2.1の構造を参考に Inputポートを

Metal1層に、Outputポートを TM 層に追加した。I/Oポートを追加した後、

LEFファイルを抽出する。14

Page 15: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

virtuosoでの LEFファイル抽出の手順

(1)

-コマンド ssh -X名前@zxp012.u-aizu.ac.jpで zxp012へ移動

(2)

-コマンド cp -r /opt/vdec/OpenCellLibrary/FreePDK3D45 .でホームディレク

トリに FreePDK3D45をコピー

(3)

-tcsh(sourceコマンドを使うため)

(4)

-コマンド source /FreePDK3D45/ncsubasekit/cdssetup/setup.csh

(5)

-コマンド virtuosoで Virtuosoを起動

(6)

-ユーザインターフェースの Tools → Library Manager

15

Page 16: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(7)

-Library...LVS testを選択し, Cell...INVS testを右クリック。コピーを選択して

適当な名前をつける。今回は Tanakatestと名前をつけた。

Figure 2.2: LNVStestをコピー

16

Page 17: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(8)

-レイアウトを開く。これはインバータをTSVを通して上の階層に移動させ、

別のインバータに繋ぐということを 5層行っている。ちなみにSHIFTキー+F

でwireや viaの表示・Cntrlキー+Fでwireや viaの非表示。

Figure 2.3:ワイヤーとビアを表示しないレイアウト

17

Page 18: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.4:ワイヤーとビアを表示したレイアウト

18

Page 19: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(9)

-今回使いたいのは一層間の TSVなので、VIA StackA, VIA StackB以外す

べてのレイアウトを削除する。

Figure 2.5: VIA StackAと VIA StackB

19

Page 20: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(10)

-また一層のみしようしたいので、2層目に存在するVIA StackBも削除する。

Figure 2.6: VIA StackA

20

Page 21: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(11)

-Inputピンを作成する。Create→ PINを選択し、設定を inputにする。そし

て適当に layoutにマウスをドラッグしながら作成。具体的な値は適当に作っ

た inputピンを右クリックしてプロパティを選択して入力する。まず入力は

metal1レイヤーなのでmetal1を選択。幅は論文 [11]を参考に設定する。

Figure 2.7:論文 [11]の IOピンサイズと配置

21

Page 22: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.8: inputピンの設定

22

Page 23: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.9: inputピンの設定後

23

Page 24: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(12)

-論文 [11]を参考に inputピンをもう一つ同じようにつくる。

Figure 2.10:二つ目の inputピンの設定後

24

Page 25: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(13)

-outputピンを作成する。Create→PINを選択し、設定を outputにする。そし

て適当に layoutにマウスをドラッグしながら作成。今回はVIA StackBが存

在しないので、論文 [11]の値、配置を参考にせず、TMレイヤー全体に被せ

るように設定した。

Figure 2.11: outputピンの設定

25

Page 26: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.12: outputピンの設定後

26

Page 27: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(14)

-この段階では inputピンはTSVと接続できていない。左のレイヤー表示キー

を操作して、metal1以外全てのレイヤーを非表示にすると、TSVのmetal1と

作成したmetal1が接続できていないことがわかる。よって二つの inputピン

と TSVのmetal1を接続する線を作成する。

Figure 2.13: TSVのmetal1

27

Page 28: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(15)

-Create→SHAPEを選択し、また適当に作成してピンと同じようにプロパティ

を開いて設定する。metal1を選択し、サイズは適当。INVS testの線の値を使

うのが確実。完成したレイアウトをセーブしてレイアウトの画面を閉じる。

Figure 2.14:接続用の線のプロパティ

28

Page 29: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.15: TSVのmetal1と inputピンの接続

29

Page 30: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.16: TSVのレイアウトの完成

30

Page 31: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

(16)

-コンソールのFile→Export→ LEFを選択する。LEF File nameは適当に。今

回は TSV.lefとする。Libraryはコピーをした場所。今回は LVS testとする。

output cellは完成したTSVのレイアウトのある場所。今回はTanakatestとす

る。output viewは layoutを選択。あとはOKを押せば TSVの LEFファイル

が生成される。

Figure 2.17: LEFの生成

31

Page 32: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

2.2.2 Add information to TSV LEF file

Virtuosoから TSVの LEFファイルを生成した後、この LEFファイルに

自分でさらに情報を追加する必要がある。まずすべてのマクロ記述は独自

の SITEの仕様を持っている。これはデザインの配置部分を定義している。

SITEは technologyと LEFファイルの互換性のため重要である。私たちは

FreePDK4538x2810R NP 162NW 34Oと定義した。CLASSは配置配線時に

通常のマクロとして表示するためにBLOCKクラスを選択する。OBSは lワイ

ヤーをルーティングできないマクロの領域である。TSVはすべてのワイヤー

を積載している構造なので、もし他の接続とぶつかってしまうとショートし

てしまう。よってOBSは TSVの全体を定義する。しかし今回 TMにOutput

を設定しているため、TMのみOBSを定義しない。

//TSV.lef

SITE FreePDK45_38x28_10R_NP_162NW_34O

SYMMETRY y ;

CLASS core ;

SIZE 0.19 BY 1.4 ;

END FreePDK45_38x28_10R_NP_162NW_34O

MACRO TSV

CLASS BLOCK ;

ORIGIN 0 0 ;

FOREIGN TSV 0 0 ;

SIZE 4.06 BY 4.06 ;

SYMMETRY X Y ;

SITE FreePDK45_38x28_10R_NP_162NW_34O ;

PIN data_out

DIRECTION OUTPUT ;

USE SIGNAL ;

PORT

LAYER TM ;

32

Page 33: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

RECT 1.03 1.03 3.03 3.03 ;

END

END data_out

PIN data_in

DIRECTION INPUT ;

USE SIGNAL ;

PORT

LAYER metal1 ;

RECT 3.06 1 4.06 3.06 ;

END

PORT

LAYER metal1 ;

RECT 0 0 4.06 1 ;

END

END data_in

OBS

LAYER metal1 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal2 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal3 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal4 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal5 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal6 ;

33

Page 34: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal7 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal8 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal9 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal10 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER VUP ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

END

PROPERTY lastSavedExtractCounter 1527 ;

PROPERTY FE_CORE_BOX_LL_X 0.0 ;

PROPERTY FE_CORE_BOX_UR_X 4.06 ;

PROPERTY FE_CORE_BOX_LL_Y 0.0 ;

PROPERTY FE_CORE_BOX_UR_Y 4.06 ;

END TSV

34

Page 35: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

2.3 TSV LIB file

TSVの LEFファイルとVirtuoso内のCalibleツール、シノプシスのPrime-

Timeツールを使用することで作成することができると推測される。以下LEFLIB

ファイルの作成手順

(1)

-Virtuosoツールで TSVのレイアウトを読み込む。

(2)

-Virtuoso内のCalibreを用いてRCファイルを抽出する。

(3)

-PrimeTimeにRCファイルを使用して LIB ファイルを生成する。

今回は時間がなかったため、他の論文 [11]の TSVのタイミング情報から

TSVの LIB ファイルを作成した。詳しくは Tanakawork/PandR/TSV.libに記

述している。ここでは重要な記述のみ説明する。図は論文にのっていたタイ

ミング情報である。これはTSVに入った時間から出てくるまでの時間、出て

くるまでの遅延の情報である。この論文に TSVに入る時間と出ていく時間

はほぼ同じ時間であることが書かれている。この情報を

lu_table_template (lut_timing_1 ){

variable_1 : input_net_transition ;

index_1(" 0.002, 0.011, 0.042, 0.102, 0.196, 0.327, 0.5000");

variable_2 : total_output_net_capacitance ;

index_2(" 0.365, 1.897, 3.795, 7.591, 15.182, 30.365, 60.730");

}

rise_transition (lut_timing_1 ){

35

Page 36: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.18: TSVのタイミング情報 [11]

values(\

" 0.00236, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00230, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00235, 0.01127, 0.04268, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00243, 0.01128, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00264, 0.01120, 0.04270, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00277, 0.01130, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00141, 0.01142, 0.04268, 0.10270, 0.19619, 0.32737, 0.50000" \

);

}

fall_transition (lut_timing_1 ){

values(\

" 0.00236, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00230, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00235, 0.01127, 0.04268, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00243, 0.01128, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00264, 0.01120, 0.04270, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00277, 0.01130, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00141, 0.01142, 0.04268, 0.10270, 0.19619, 0.32737, 0.50000" \

);

36

Page 37: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

}

cell_rise (lut_timing_1 ){

values(\

" 0.00007834, 0.00000386, 0.00000287, 0.00000312,//

0.00000302, 0.00000275, 0.00000269", \

" 0.00014041, 0.00000479, 0.00000298, 0.00000350,//

0.00000343, 0.00000313, 0.00000305", \

" 0.00020543, 0.00000928, 0.00000359, 0.00000350, //

0.00000396, 0.00000361, 0.00000352", \

" 0.00029438, -0.00000830, 0.00000402, 0.00000436,//

0.00000495, 0.00000458, 0.00000442", \

" -0.00000817, -0.00001526, 0.00000665, 0.00000606,//

0.00000664, 0.00000652, 0.00000623", \

" -0.00046515, 0.00004328, 0.00001051, 0.00001148,//

0.00000993, 0.00000995, 0.00000988", \

" -0.00024893, -0.00003435, 0.00000152, 0.00001462,//

0.00001684, 0.00001684, 0.00001717" \

);

}

cell_fall (lut_timing_1 ){

values(\

" 0.00007834, 0.00000386, 0.00000287, 0.00000312,//

0.00000302, 0.00000275, 0.00000269", \

" 0.00014041, 0.00000479, 0.00000298, 0.00000350,//

0.00000343, 0.00000313, 0.00000305", \

" 0.00020543, 0.00000928, 0.00000359, 0.00000350,//

0.00000396, 0.00000361, 0.00000352", \

" 0.00029438, -0.00000830, 0.00000402, 0.00000436,//

0.00000495, 0.00000458, 0.00000442", \

" -0.00000817, -0.00001526, 0.00000665, 0.00000606,//

0.00000664, 0.00000652, 0.00000623", \

" -0.00046515, 0.00004328, 0.00001051, 0.00001148,//

0.00000993, 0.00000995, 0.00000988", \

" -0.00024893, -0.00003435, 0.00000152, 0.00001462,//

0.00001684, 0.00001684, 0.00001717" \

);

}

と記述した。次にこの論文で使用したキャパシタンス、抵抗、インダク

タの値を入力する。

これらの図より37

Page 38: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 2.19: TSVのキャパシタンス、抵抗の値 [11]

Figure 2.20: TSVを抵抗とキャパシタンスで表した図 [11]

38

Page 39: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

default_wire_load_capacitance : 21.6;

default_wire_load_resistance : 0.24000;

pin (data_in )

direction : input ;

capacitance : 0.0;

max_transition : 0.5000;

fanout_load : 1.0000;

pin (data_out )

direction : output ;

capacitance : 2.75;

max_transition : 0.5000;

max_capacitance : 60.730;

今回使用した TSVのサイズは 4.06*4.06なので、この値も記述する。

cell (TSV )

area : 16.36;

39

Page 40: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Chapter 3

TSV implementation

3.1 Implement TSV to router in Verilog HDL

3.1.1 Router wtih TSV verilog-HDL

最初にVrilog-HDL で 3D-ONoC routerに TSVの接続を加える。ルータは

routerLAXYZ[8] を用いる。ルータはまずフリットが input portに入り、そこ

で次の行先(local, north, east, south, west, up. down)を決める。そして switch

allocatorにて input port内の 4つのバッファがもうすぐいっぱいになりそうな

場合にこれ以上フリットを送らないよう指示を送信することや、次に送り出

すフリットの順番を決めたりする。その後 crossbarにてデータを送り出す。

詳しくは参照論文に記述してある。この routerLAXYZ を一つのルータとし

て機能するように改良する。まず input portを local, north, east, south, west,

up. downの 7ポート記述する。次に datainと dataoutの 256ビット (38*7)

のうち upと downだけ別の変数を用意する。これは変数をわかりやすくする

ために分けたので、datain、dataoutのままでも構わない。stop signalもまた

データと同じように upと downで分ける。次に TSVとこのルータを接続す40

Page 41: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

る。TSVは縦の接続なので、ルーターの upと downに関わる要素に接続す

る。つまり図のように input portのupとdownの前と crossbarのupとdown

の後ろに接続する。

Figure 3.1: TSV付き 3D-ONoCルータのアーキテクチャ

接続後に TSV内のデータの受け渡しを記述する。今回 TSVの個数は、

tsv up in(上のルータから受け取るデータ)、tsv up out(上のルータへ送り出

すデータ)、tsv down in(下のルータから受け取るデータ)、  tsv down out(下

のルータに送り出すデータ)の 4つそれぞれに 38bitのデータを用いるので

38*4=152個、 さらに stop signalの 1bitもデータ同様に 4つの TSVが存在

するので 1*4=4、つまり合計 156のTSVの記述が必要である。この記述は手

間なので、私はPdata.cを用いて記述した。なおループで記述しても良い。こ

の結果 TSVの記述は下記のコードのようになる。

//router_LAXYZの TSV記述TSV tsv_input_up0(.data_in(tsv_up_in[0]), .data_out(U_data_in[0]));

TSV tsv_input_down0(.data_in(tsv_down_in[0]), .data_out(D_data_in[0]));

TSV tsv_output_up0(.data_in(cbar_data_out[190]), .data_out(tsv_up_out[0]));

TSV tsv_output_down0(.data_in(cbar_data_out[228]), .data_out(tsv_down_out[0]));

                    [2~36省略]TSV tsv_input_up37(.data_in(tsv_up_in[37]), .data_out(U_data_in[37]));

41

Page 42: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

TSV tsv_input_down37(.data_in(tsv_down_in[37]), .data_out(D_data_in[37]));

TSV tsv_output_up37(.data_in(cbar_data_out[227]), .data_out(tsv_up_out[37]));

TSV tsv_output_down37(.data_in(cbar_data_out[265]), //continue

.data_out(tsv_down_out[37]));

//stop_signal

TSV tsv_stop_input_up(.data_in(tsv_stop_up_in), .data_out(U_stop_in));

TSV tsv_stop_input_down(.data_in(tsv_stop_down_in), .data_out(D_stop_in));

TSV tsv_stop_output_up(.data_in(U_stop_out), .data_out(tsv_stop_up_out));

TSV tsv_stop_output_down(.data_in(D_stop_out), .data_out(tsv_stop_down_out));

コードを書き終わった後、このコードが正しいかどうかを検証する。今回はテストベンチ rec testを行う。このテストベンチでは、ランダムフリットが生成され、ルータの 7入力ポートからデータが注入され、7出力ポートから排出される。検証は Tanakawork/Synthesis/verilog srcでコマンドncverilog+access+rw rec test.v routerLAXYZ.v defines.v swalloc.v crossbar.v stopgo.vfifo.v input port.v matrixarb formultistage.v muxout.v route.v TSV.vを実行する。エラーが発生しない場合はコマンドsimvision dump.vcdで simvisionを起動。File Translationが出てきた場合 OK→ Yesを選択。Testの項目にカーソルを合わせて図のようにボタンを押す。その後右上の=の記号を押すコードが正しくない場合は赤い線や黄色い線がある。すべて緑の線かつ、送った

データと受け取ったデータの値が同じ場合に接続が正しいことがわかる。

3.2 Synthesis with Synopsys Design Compiler

第 2のステップでは、ルータとの TSVの両方が含まれた Verilog HDLファイルを合成するためにシノプシスのDesign Compilerを使用する。図に合成されたシステムのファイル階層を示す。シノプシスの Design Compilerは、ネットリストと SDCファイルを生成することができる。この二つのファイルは配置配線段階で必要とされる。これらは、端子接続情報およびタイミング情報を含む。実行は以下の通り

(1)-Tanakawork/Synthesis/verilog srcに全ての verilog-HDLコードをまとめる。(2)-論理合成用にscriptを用意する。scriptの中身についてはTanakawork/Synthesis/script/syn LAXYZ.tclを参照。(3)-Tanakawork/Synthesisにてコマンド  dc shell-xg-t -f script/syn LAXYZ.tcl  でDe-sign Compilerが起動し二つのファイル (routerLAXYZ.vnet, routerLAXYZ.sdc)を生成する。

42

Page 43: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.2: simvisionの説明 1

43

Page 44: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.3: simvisionの説明 2

Figure 3.4:コードが正しいかどうかのテスト

44

Page 45: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.5: VHDLでの 3D-OASISルータの構成

3.3 Input port, Switch allocator, Crossbar macro

補足説明。今回 Input port, Switch allocator, Crossbarのマクロも使用している。これらのマクロは松谷先生のマクロの作り方を参考にして作成した。詳しくは referenceの VLSI-20130618/all slideslastest/12.pdfに記述されているため、簡単な流れのみ説明する。松谷先生の scriptは VLSI-20130618にそれぞれの日付に対応してファイルが作られている。今回のマクロを作成した手順は以下の通り(1)-Tanakawork/R macro/Synthesis/verilog srcに図 3.3のファイルをすべてコピーする。(2)-Tanakawork/R macro/Synthesisでコマンド dc shell-xg-t -f script/syn ip.tcl-Tanakawork/R macro/Synthesisでコマンド dc shell-xg-t -f script/syn alloc.tcl-Tanakawork/R macro/Synthesisでコマンド dc shell-xg-t -f script/syn cbar.tcl(3)-Tanakawork/R macro/P R/output fileに (2)で生成した vnetファイルと sdcファイルをコピー(4)-Tanakawork/R macro/P Rでコマンド velocity -init ./script/par inp.tcl-Tanakawork/R macro/P Rでコマンド velocity -init ./script/par alloc.tcl-Tanakawork/R macro/P Rでコマンド velocity -init ./script/par cbar.tcl(5)-生成されたDEFファイルを zxp012にコピーする。コマンドは scp -r名前@zxp012.u-aizu.ac.jp(6)-コマンド abstractで abstructツールを立ち上げる。(7)-松谷先生の資料を見て実行していき、LEFを生成する(8)zxp035の Tanakawork/PandRに生成した LEFファイル,(2)で生成した sdcファイル

45

Page 46: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

をコピー。

3.4 Place and Route in Cadence SoC Encounter

第 3のステップでは、ルータと TSVを配置配線するために Cadenceの SoC en-counterを使用する。このステップのあと後に、新しいネットリスト、SDF、SPEFファイルを生成することができます。この三つのファイルは配置配線段階の後、システムの物理的特性に関する情報を持っている。これらはシノプシスのDesign Compilerを使用したポストレイアウトシミュレーションを実行するために使用されている。実際の流れは以下の通り(1)-Tanakawork/PandRに Synthesisで作成した routerLAXYZ.vnet, routerLAXYZ.sdcをコピー(2)-TSV.lef, TSV.lib, inputport.lef, inputport.lib, swalloc.lef, swalloc.lib, crossbar.lef,crossbar.lib,を同様に Tanakawork/PandRにコピー(3)-routerLAXYZ.vnetの中身を変更(複数ある同一の処理を消す・名称の修正)。ネットリストファイルには 7つの input port, switch allocator, crossbar, 156の TSVの情報が含まれている。しかし今回は input port, switch allocator, crossbar, TSVを全てマクロを用いるので、ネットリストファイルにはそれぞれ一つだけの情報だけでよい。マクロを用いる場合、一つ以上の情報がネットリストに定義されていると、二重定義のエラーがでたり、マクロが SoC encounter上に表示されないといったことになる。よってネットリストファイルの余分な情報を消す。あと論理合成時に勝手に名称が変更されてしまうので、verilog-HDLにて定めた名称に直しておく。

//修正前module input_port_NOUT7_FIFO_DEPTH4_FIFO_LOG2D2_FIFO_FULL_LVL2_0 ( clk, reset,

data_in, data_out, sw_req, port_req, sw_grant, stop_out, xaddr, yaddr,

zaddr );

//修正後module input_port ( clk, reset,

data_in, data_out, sw_req, port_req, sw_grant, stop_out, xaddr, yaddr,

zaddr );

(4)配置配線用に scriptを用意する。中身はTanakawork/PandR/par tanaka.tclを参照、説明は順を追って下記にて説明する。その後コマンドvelocity -init par tanaka.tclでSoC encounterが起動し、三つのファイル (routerLAXYZ final.vnet, routerLAXYZ final.spef,routerLAXYZ final.sdf)が生成される。

46

Page 47: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

3.4.1 SoC encounter step

47

Page 48: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step 1-最初にファイルを読みこむ。Floorplan view(図の右上のアイコンクリック)この時点でマクロは横に並べられている。

Figure 3.6:ファイル読込み後

48

Page 49: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step2-フロアプランを行って後、haloの設定を行う。マクロに haloを追加することによりその領域においてブロックやスタンダード・セルの配置が禁止されマクロ周囲の混雑を下げることができる次にマクロの配置を行う。placeInstanceマクロの名称 x座標  y座標 R0(回転。R90にすればマクロが 90度回転する)のように記述する。補足(TSVの配置に関しては、TSV間の誘導応力、ミーゼス応力の影響を低くするために15umの幅で規則的 [12]に、チップの中央 [13]に配置する。input port, switch allocator,crossbarのマクロに関してはツールの最適化を用いる。方法としては、TSVのみ配置を設定、それ以外は記述しない。ツールの最適化後に LVS,DRCチェックを行い、switch allocator, crossbarの配置場所・violationを確認。crossbar,switch allocatorがviolationを起きない場所、input portの全体と接続のできる場所を特定できるまで配置配線を繰り返す。→ crossbar, switch allocatorの配置を記述し、再び配置配線を行う。input portで violationのおきないマクロを記述していく。→すべての配置後にviolationがまだ残っている場合は手直しをする。ない場合は終了。)

49

Page 50: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.7:マクロの配置後

50

Page 51: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

ここで KOZ(Keep out zone)の設定も行う。記述はcreateObstruct  x1 y1(四角形の左下の座標)  x2 y2(四角形の右上の座標)と記述する。KOZは TSVと Standard cell間の誘導応力の影響を抑えるために必要である。よって TSV全体を覆うように設定する。その大きさは端の TSVと standardcellが最低 2um離れるように設定する。

Figure 3.8: KOZの設定後

51

Page 52: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

また TM(top metal)層は TSVのみが使える層なので、Standard cellが TM層を使えないように設定をしなければならない。記述はcreateRouteBLK -box x1 y1(四角形の左下の座標) x2 y2(四角形の右上の座標) -layer11(TM層はツール内で layer11の位置)とする。この時設定範囲は TSV以外の場所を覆うように設定する。また多少大き目に設定しないとツールがチップの外側でTM層を無理やり使おうとする現象がおきるので大き目に設定することを推奨する。ちなみにここから配線が表示される physicalviewを図として活用する。floorplan viewの 2個右

Figure 3.9: TSV以外 TM層を使えないようにルートブロックを配置

52

Page 53: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step3-電源リングの設定を行う。globalNetConnnect VDD -type pgpin -pin VDD -sinstマクロ名globalNetConnnect VSS -type pgpin -pin VSS -sinstマクロ名でマクロに対して自動で電源を接続するようになる。TSVは電源を使わないので必要ない。add Ringの値に関してはエラーの起きないように設定するようにとしか言えない。私達は scriptに記述してあるように幅 1、スペース 2で行った。

Figure 3.10:電源リングの配置

53

Page 54: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step4-マクロ用の電源の設定を行う。主に変更・記述する値はwidth, spacing, setto setdistance(パワーストライプ間の距離), xleft offset(パワーストライプの配置開始位置)。私達は TSVのマクロに被ることのないように値を調整した結果width=1, spacing=6,set to setdistance=15, xleft offset=8となった。

Figure 3.11:ストライプの配置

54

Page 55: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step5-Standard cell用の電源の配置。

Figure 3.12:スペシャルルートの配置

55

Page 56: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step6-Standard cellの配置。

Figure 3.13:スタンダードセルの配置

56

Page 57: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step7-配置の最適化。

Figure 3.14:配置の最適化

57

Page 58: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step8-クロックの合成

Figure 3.15:クロックの合成

58

Page 59: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step9-再び配置の最適化。

Figure 3.16:配置の最適化 2

59

Page 60: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step10-配線。

Figure 3.17:細かな配線

60

Page 61: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step11-再び配置の最適化。

Figure 3.18:配置の最適化 3

61

Page 62: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step12-violationの確認、フィラーの追加。先に LVSチェックとDRCチェックをすることを推奨する。violation(図のような白いバツ)が発生した場合はこの段階で直してからフィラーを追加する。図のようにある程度少ない violationは手直しを推奨するが、マクロいっぱいに vio-lationが出現する場合は配置で修正するべきである。

Figure 3.19: violationの発生

62

Page 63: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

今回は violationが少ないので手直しをする。まずは図のようにViolation Browserを表示する。

Figure 3.20: Violation Browserの表示

63

Page 64: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Violation Browserの violationをダブルクリックすると encounterの violationの箇所がズームされる。

Figure 3.21: Violationの箇所のズーム

64

Page 65: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Violation Browserの violation typeを見ると spacingで violationが発生していることがわかる。spacingの直し方は、spacingの発生している箇所(配線)を移動させスペースを作ってあげる。その後移動した箇所(配線)をもともと繋いであった場所と繋げることで violationは発生しなくなる。よって図の通りに直していく。

Figure 3.22:配線を左に移動してスペースを作ってあげる

65

Page 66: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.23:スペースを作成後

66

Page 67: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

スペースを作ったあと Violation Browserで接続の violationが発生したことがわかる。これは移動する前の配線にもともと繋がっていた部分が余分な線として検出されているからである。よってこの配線を短くしてあげることで解決する。

Figure 3.24:余分な配線の長さを変える

67

Page 68: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.25:移動した配線に合わせる

68

Page 69: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 3.26:移動した配線もちょうど重なるように配置すると自動的に接続される

69

Page 70: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

violationが全てなくなったら、フィラーを追加

Figure 3.27:フィラーの追加後

70

Page 71: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

step13-LVS(Layout VS. Schematic)チェック。論理合成時のレイアウトと今のデザインの一致性を見る。step12の段階で violationやエラーがない場合大丈夫なはずstep14-DRC(Design Rule Check)チェック。今のデザインに関して規約を守っているかどうかを検証する。step12の段階で violationやエラーがない場合大丈夫なはず

step15-Evaluationで使用するファイル (ネットリスト、SPEF、SDF)の出力。

71

Page 72: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Chapter 4

Evaluation Results

4.1 Timinig analysis

このステップでは、時間分析のために必要な操作を含むスクリプトを実行する。操作は、シノプシスのDesign Compilerを使用する。配置配線後の完全なルータ(TSV付き)のネットリストファイルが使用される。この結果周波数は 490MHzであることがわかった。実行方法は(1) Tanakawork/Post/inputに論理合成後のファイル (routerLAXYZ.sdc)と配置配線後に出力したファイル3つ(routerLAXYZ final.vnet, routerLAXYZ final.spef, routerLAXYZ final.sdf)をコピー。(2) Tanakawork/Post/scriptにstaLAXYZ.tcl を用意。(中身はTanakawork/Post/script/staLAXYZ.tclを参照)(3) Tanakawork/Postでコマンド designvisionで Design Compilerを起動。起動後にFile→ Execute Script→ /Tanakawork/Post/script/l内の staLAXYZ.tcl を選択(4) Tanakawork/Post/reportsに reportarearouterLAXYZ.txt, timing report routerLAXYZ.txtが出力。(5) reportarearouterLAXYZ.txt に areaの値が記述されている。しかしこの areaはTSVを含んでいないため、TSVは自分で設定した値 (KOZの面積)から areaを導く。(6) timing report routerLAXYZ.txt にタイミング情報が書かれている。Frequencyの求め方は data arrival timeの値を用いて 1/(data arrival time*10̂-9)でMHzが求められる。

4.2 Timing simulation

このステップでは、私たちのデザインは、任意の遅延違反がないかどうかを確認する。操作は ncverilogと simvision使用する。私達は作成したルータを評価するためのテストベンチを作成した。このテストベンチでは、ランダムフリットが生成され、ルータの 7入力ポートからデータが注入され、7出力ポートから排出される。実行は Tanakawork/PandRでコマンド

72

Page 73: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

ncverilog+access+r+define+ POSTPR ../RwT syn/verilog src/rec test.v ./routerLAXYZ final.vnet./cells.vを入力後に simvisionを開く。図はこのシュミレーションの結果である。それぞれの入力ポート、出力ポートから排出されるフリットの正しさを確認した。chapter3の[Router with TSV verilog-HDL]と比較しても正しい結果が得られることもわかる。もしもこの時に赤か黄色の箇所がある場合、データがおかしくなっている場合は配置配線でミスをしていることになる。ちなみにこれはベースとなったルータの検証方法を TSV付きルータ用に修正したものである。しかしこのテストベンチはデータの流れがわかりにくい。パワーをベースとなったルータと比べる際に同じ構造のテストベンチを使わなければならないため無理やり使ったといっても過言ではない。よってデータの正しさは私の作ったテストベンチ RtoRtest.vを使用した。これはルータを二つ用意して tsvで接続し、片方のルータに入れたデータをもう片方のデータから出した時に値が同じかどうかを確かめる。結果は図のようになったので、データは正しく送られていることがわかった。

Figure 4.1:ポストレイアウトシミュレーション

4.3 Hardware design results

消費電力を評価する。必要な操作を含むスクリプトを実行する。操作は section4.1と同様にシノプシスのDesign Compilerを使用する。操作は section4.1とほぼ同様である。この評価を実行した後、完全なルータの総消費電力は 403μWであることがわかった。実行方法は(1)-Tanakawork/Post/inputに論理合成後のファイル (routerLAXYZ.sdc)と配置配線後に

73

Page 74: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

出力したファイル3つ(routerLAXYZ final.vnet, routerLAXYZ final.spef, routerLAXYZ final.sdf)をコピー。(2)-section4.2で生成された dump.vcdファイルをTanakawork/Post/inputにコピー。その後Tanakawork/Post/inputでコマンドvcd2saif -input dump.vcd -output routerLAXYZ.saifを実行。(3)-Tanakawork/Post/scriptにpowerLAXYZ.tcl を用意。(中身はTanakawork/Post/script/staLAXYZ.tclを参照)(4)-Tanakawork/Postでコマンド designvisionでDesign Compilerを起動。起動後にFile→ Execute Script→ /Tanakawork/Post/script/l内の powerLAXYZ.tcl を選択(5)-Tanakawork/Post/reportsに power report routerLAXYZ.txt が出力。

表 4.3は、ベースラインと作成されたルータの両方のための面積、電力、および速度の点でハードウェア設計の結果を示す。作成されたルータは TSVを追加したため面積が増加している。面積の増加により消費電力も増加する。面積オーバーヘッドに関連しているので、周波数が減少する。

74

Page 75: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Table 4.1:パラメータの評価Technology Nangate 45nm,FreePDK3D45

Clock 490 MHzVoltage 1.1TSVs 156TSV size 4.06um× 4.06umTSV Pitch 15umKeep-out-Zone 2umflit size 38(payload:21)

Table 4.2:ハードウェアデザインの結果Number of pins 557

Power(uW) 403Chip size 350um× 350umRouter Area(um) 19009(37%)TSV Area(um) 32929(63%)

Table 4.3:ハードウェアデザインの比較の結果system Area(um) Power(uW) Frequency(MHz)

Baseline router 16880 341 645.1Proposed router 51939 403 490

75

Page 76: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 4.2: metalワイヤーを表示した TSV付き 3D-OASISルータデザイン

76

Page 77: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

Figure 4.3: metalワイヤーを表示しないTSV付き 3D-OASISルータデザイン

77

Page 78: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Chapter 5

Conclusion, Future work

この論文では、TSVと統合した 3D-ネットワークオンチップルータのアーキテクチャと設計を提案した。ルータが完全に 3次元集積化の利点を利用することを目的として提案した。私たちはいくつかの TSV接続を作り、設計された 3D OASIS-NOC(3D-ONoC)ルータとそれらを統合する。そして提案された完全なルータアーキテクチャの接続の正しさが証明された。ハードウェアの評価からは提案ルータの面積は 51939μm2、パワーは 403μWであり、速度は 490MHzであることを確認した。今後の課題として、私たちは提案ルータを用いたより大きなネットワークサイズとの評価し、より大きな実際のベンチマークの下で、その動作を観察していく予定である。

78

Page 79: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Bibliography

[1] A. Ben Abdallah, and M. Sowa, Basic Network-on-Chip Interconnection for Fu-ture Gigascale MCSoCs Applications: Communication and Computation Orthog-onalization, In Proceedings of Tunisia-Japan Symposium on Society, Science andTechnology (TJASSST), DEC. 2006.

[2] A Ben Ahmed,”On the Design of a 3D Network-on-Chip for Many-core SoC”, Master thesis, Graduate School of Computers Science and Engineering, theUniversity of Aizu, Feb. 2012.

[3] G. Philip, B. Christopher, and P. Ramm,”Handbook of 3D Integration: Technol-ogy and Applications of 3D Integrated Circuits”, Wiley-VCH, 2008.

[4] X. Dong, X. Wu, G. Sun, Y. Xie, H. Li, and Y. Chen,”Circuit and Microarchitec-ture Evaluation of 3D Stacking Magnetic RAM (MRAM) as a Universal MemoryReplacement”, Proceedings of the 45th annual Design Automation Conference,pp. 554-559, June. 2008

[5] K. Mori, A. Ben Abdallah, K. Kuroda,”Design and Evaluation of a ComplexityEffective Network-on-Chip Architecture on FPGA”, The 19th Intelligent SystemSymposium (FAN 2009), Sep. 2009, pp.318-321.

[6] A. Ben Ahmed, A. Ben Abdallah, K. Kuroda.”Architecture and Design of Effi-cient 3D Network-on-Chip (3D-NoC) for Custom Multicore SoC”, IEEE Proc.of the 5th International Conference on Broadband, Wireless Computing, Commu-nication and Applications (BWCCA-2010), Nov. 2010

[7] A. Ben Ahmed,”On the Design of a 3D Network-on-Chip for Many-core SoC”, Master thesis, Graduate School of Computers Science and Engineering, theUniversity of Aizu, Feb. 2012.

[8] A. Ben Ahmed, A. Ben Abdallah,“ LA-XYZ: Low Latency, High ThroughputLook-Ahead Routing Algorithm for 3D Network-on-Chip (3D-NoC) Architecture”, 2012 IEEE 6th International Symposium on Embedded Multicore SoCs.

79

Page 80: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

[9] Akram Ben Ahmed, A. Ben Abdallah,”Graceful Deadlock-Free Fault-TolerantRouting Algorithm for 3D Network-on-Chip Architectures”,Journal of Paralleland Distributed Computing,74/4 (2014), pp. 2229-2240

[10] NCSU www.eda.ncsu.edu/wiki /FreePDK3D45:Manual, FreePDK3D45 Manual,product version 1.1 edition, July 2011.

[11] M.vasic, ”Physical design of a 3D router: reducing the number of vertical con-nections and enabling asynchronous operation”, 9 May 2014

[12] M.Jung, J.Mitra, D.Pan, S.Lim”TSV Stress-aware Full-Chip Mechanical Relia-bility Analysis and Optimization for 3D IC”.

[13] K.Athikulwongse ”Placement for Fast and Reliable Through-Silicon-Via(TSV)Based 3D-IC layout”,2012

80

Page 81: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

Chapter 6

Appendix

6.1 Test Bench File

6.1.1 rectest//rec_test.v

‘timescale 1ns/1ns

module Test;

reg clk;

reg reset;

//wire list object value of test input and output

wire [37:0] dat_out_local, dat_out_north, dat_out_east, dat_out_south, dat_out_west;

wire [37:0] tsv_up_out, tsv_down_out;

wire [4:0] stop_out;

wire tsv_stop_up_out, tsv_stop_down_out;

//register list object value of test input and output

reg [37:0] dat_in_local, dat_in_north, dat_in_east, dat_in_south, dat_in_west;

reg [37:0] tsv_up_in, tsv_down_in;

//******* payload of input data ******//

reg [20:0] payload_1;

reg [20:0] payload_2;

reg [20:0] payload_3;

reg [20:0] payload_4;

reg [20:0] payload_5;

reg [20:0] payload_6;

reg [20:0] payload_7;

integer i;

integer sent1 ,sent2 ,sent3 ,sent4 ,sent5 ,sent6 ,sent7 ;

integer rec1 ,rec2 , rec3 ,rec4 ,rec5 ,rec6 ,rec7 ;

//top_module

81

Page 82: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

router_LAXYZ router1 (.clk(clk),

.reset(reset),

.data_in({dat_in_west, dat_in_south, dat_in_east, dat_in_north, dat_in_local}),

.data_out({dat_out_west, dat_out_south, dat_out_east, dat_out_north, dat_out_local}),

.tsv_up_in(tsv_up_in),

.tsv_down_in(tsv_down_in),

.tsv_up_out(tsv_up_out),

.tsv_down_out(tsv_down_out),

.stop_in(7’b0000000),

.stop_out(stop_out),

.tsv_stop_up_in(1’b0),

.tsv_stop_down_in(1’b0),

.tsv_stop_up_out(tsv_stop_up_out),

.tsv_stop_down_out(tsv_stop_down_out),

.xaddr(3’b010),.yaddr(3’b010),.zaddr(3’b010));

//clock generation

always #500 clk = ˜clk;

initial begin

‘ifdef __POST_PR__

$sdf_annotate("input/router_LAXYZ.sdf", Test.router, , "sdf.log", "MAXIMUM");

‘endif

#0

clk = 1;

reset = 1’b1;

payload_1 = 21’h000001; //for 64 bit

payload_2 = 21’h001000; //for 64 bit

payload_3 = 21’h002000; //for 64 bit

payload_4 = 21’h003000; //for 64 bit

payload_5 = 21’h004000; //for 64 bit

payload_6 = 21’h005000; //for 64 bit

payload_7 = 21’h006000; //for 64 bit

i = 0; //for 64 bit

sent1 = 0; //for 64 bit

sent2 = 0; //for 64 bit

sent3 = 0; //for 64 bit

sent4 = 0; //for 64 bit

sent5 = 0; //for 64 bit

sent6 = 0; //for 64 bit

sent7 = 0; //for 64 bit

rec1 = 0; //for 64 bit

rec2 = 0; //for 64 bit

rec3 = 0; //for 64 bit

rec4 = 0; //for 64 bit

rec5 = 0; //for 64 bit

rec6 = 0; //for 64 bit

rec7 = 0; //for 64 bit

dat_in_local = 38’h000000000;

dat_in_north = 38’h000000000;

dat_in_east = 38’h000000000;

dat_in_south = 38’h000000000;

dat_in_west = 38’h000000000;

tsv_up_in = 38’h000000000;

tsv_down_in = 38’h000000000;

82

Page 83: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

#100000

reset = 1’b0;

//*** dist_(x,y) indicates distination address for each router ***//

#100000

$dumpfile("dump.vcd");

$dumpvars(0, Test);

for(i=0;i<100;i=i+1)begin

#10000

//*** local sending to north

if(stop_out[0] == 1)

dat_in_local = 0;

else begin

dat_in_local = {payload_1,9’b010011010,7’b0000010,1’b1};//(0,1)

payload_1 = payload_1 + 1;

sent1 = sent1 + 1;

end

//*** north sending to east

if(stop_out[1] == 1)

dat_in_north = 0;

else begin

dat_in_north = {payload_2,9’b010010011,7’b0000100,1’b1};//(0,1)

payload_2 = payload_2 + 1;

sent2 = sent2 + 1;

end

//*** east sending to south

if(stop_out[2] == 1)

dat_in_east = 0;

else begin

dat_in_east = {payload_3,9’b010001010,7’b0001000,1’b1};//(0,1)

payload_3 = payload_3 + 1;

sent3 = sent3 + 1;

end

//*** south sending to west

if(stop_out[3] == 1)

dat_in_south = 0;

else begin

dat_in_south = {payload_4,9’b010010001,7’b0010000,1’b1};//(0,1)

payload_4 = payload_4 + 1;

sent4 = sent4 + 1;

end

//*** west sending to up

if(stop_out[4] == 1)

dat_in_west = 0;

else begin

dat_in_west = {payload_5,9’b011010010,7’b0100000,1’b1};//(0,1)

payload_5 = payload_5 + 1;

sent5 = sent5 + 1;

end

//*** up sending to down

83

Page 84: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

if(tsv_stop_up_out == 1)

tsv_up_in = 0;

else begin

tsv_up_in = {payload_6,9’b011010010,7’b1000000,1’b1};//(0,1)

payload_6 = payload_6 + 1;

sent6 = sent6 + 1;

end

//*** down sending to local

if(tsv_stop_down_out == 1)

tsv_down_in = 0;

else begin

tsv_down_in = {payload_7,9’b001010010,7’b0000001,1’b1};//(0,1)

payload_7 = payload_7 + 1;

sent7 = sent7 + 1;

end

end//for loop end

#100000

$finish;

end // initial begin

always @(dat_out_local) begin

rec1= rec1+1;

end

always @(dat_out_north) begin

rec2= rec2+1;

end

always @(dat_out_east) begin

rec3= rec3+1;

end

always @(dat_out_south) begin

rec4= rec4+1;

end

always @(dat_out_west) begin

rec5= rec5+1;

end

always @(tsv_up_out) begin

rec6= rec6+1;

end

always @(tsv_down_out) begin

rec7= rec7+1;

end

endmodule // TOP_test

84

Page 85: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.1.2 RtoRtest//RtoRtest.v

‘timescale 1ns/1ns

module Test;

reg clk;

reg reset;

//wire list object value of test input and output

wire [37:0] dat_out_local, dat_out_north, dat_out_east, dat_out_south, dat_out_west;

wire [37:0] tsv_up_out, tsv_down_out;

wire [37:0] dat_out_local2, dat_out_north2, dat_out_east2, dat_out_south2, dat_out_west2;

wire [37:0] tsv_up_out2, tsv_down_out2;

wire stp_in_west, stp_in_south, stp_in_east, stp_in_north, stp_in_local;

wire tsv_stop_down_in, tsv_stop_up_in;

wire stp_in_west2, stp_in_south2, stp_in_east2, stp_in_north2, stp_in_local2;

wire tsv_stop_down_in2, tsv_stop_up_in2;

wire [4:0] stop_out;

wire [4:0] stop_out2;

wire tsv_stop_down_out, tsv_stop_up_out;

wire tsv_stop_down_out2, tsv_stop_up_out2;

//register list object value of test input and output

wire [37:0] dat_in_north, dat_in_east, dat_in_south, dat_in_west;

wire [37:0] tsv_up_in, tsv_down_in;

wire [37:0] dat_in_north2, dat_in_east2, dat_in_south2, dat_in_west2;

wire [37:0] tsv_up_in2, tsv_down_in2;

reg [37:0] dat_in_local, dat_in_local2 ;

//******* payload of input data ******//

reg [20:0] payload_1;

reg [20:0] payload_2;

reg [20:0] payload_3;

reg [20:0] payload_4;

reg [20:0] payload_5;

reg [20:0] payload_6;

reg [20:0] payload_7;

integer i;

integer sent1 ,sent2 ,sent3 ,sent4 ,sent5 ,sent6 ,sent7 ;

integer rec1 ,rec2 , rec3 ,rec4 ,rec5 ,rec6 ,rec7 ;

assign dat_in_north=38’b0;

assign dat_in_east=38’b0;

assign dat_in_south=38’b0;

assign dat_in_west=38’b0;

//assign tsv_up_in=38’b0;

assign tsv_down_in=38’b0;

assign stp_in_north=1’b0;

assign stp_in_east=1’b0;

85

Page 86: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

assign stp_in_south=1’b0;

assign stp_in_west=1’b0;

//assign tsv_stop_up_in=1’b0;

assign tsv_stop_down_in=1’b0;

assign dat_in_north2=38’b0;

assign dat_in_east2=38’b0;

assign dat_in_south2=38’b0;

assign dat_in_west2=38’b0;

assign tsv_up_in2=38’b0;

//assign tsv_down_in2=38’b0;

assign stp_in_north2=1’b0;

assign stp_in_east2=1’b0;

assign stp_in_south2=1’b0;

assign stp_in_west2=1’b0;

assign tsv_stop_up_in2=1’b0;

//assign tsv_stop_down_in2=1’b0;

assign stp_in_local = 1’b0;

assign stp_in_local2 = 1’b0;

//top_module

router_LAXYZ router1 (

.clk(clk),

.reset(reset),

.data_in({dat_in_west, dat_in_south, dat_in_east, dat_in_north, dat_in_local}),

.tsv_up_in(tsv_up_in),

.tsv_down_in(tsv_down_in),

.data_out({dat_out_west, dat_out_south, dat_out_east, dat_out_north, dat_out_local}),

.tsv_up_out(tsv_up_out),

.tsv_down_out(tsv_down_out),

.stop_in({stp_in_west, stp_in_south, stp_in_east, stp_in_north, stp_in_local}),

.tsv_stop_up_in(tsv_stop_up_in),

.tsv_stop_down_in(tsv_stop_down_in),

.stop_out(stop_out),

.tsv_stop_up_out(tsv_stop_up_out),

.tsv_stop_down_out(tsv_stop_down_out),

.xaddr(3’b000),.yaddr(3’b000),.zaddr(3’b000)

);

//connect 1 and 2 router

assign tsv_down_in2 = tsv_up_out;

assign tsv_up_in = tsv_down_out2;

assign tsv_stop_down_in2 = tsv_stop_up_out;

assign tsv_stop_up_in = tsv_stop_down_out2;

router_LAXYZ router2 (

.clk(clk),

.reset(reset),

.data_in({dat_in_west2, dat_in_south2, dat_in_east2, dat_in_north2, dat_in_local2}),

.tsv_up_in(tsv_up_in2),

.tsv_down_in(tsv_down_in2),

.data_out({dat_out_west2, dat_out_south2, dat_out_east2, dat_out_north2, dat_out_local2}),

.tsv_up_out(tsv_up_out2),

.tsv_down_out(tsv_down_out2),

.stop_in({stp_in_west2, stp_in_south2, stp_in_east2, stp_in_north2, stp_in_local2}),

.tsv_stop_up_in(tsv_stop_up_in2),

86

Page 87: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

.tsv_stop_down_in(tsv_stop_down_in2),

.stop_out(stop_out2),

.tsv_stop_up_out(tsv_stop_up_out2),

.tsv_stop_down_out(tsv_stop_down_out2),

.xaddr(3’b000),.yaddr(3’b000),.zaddr(3’b001)

);

//clock generation

always #500 clk = ˜clk;

initial begin

‘ifdef __POST_PR__

$sdf_annotate("input/router_LAXYZ.sdf", Test.router, , "sdf.log", "MAXIMUM");

‘endif

#0

clk = 1;

reset = 1’b1;

payload_1 = 21’hffffff; //for 64 bit

payload_2 = 21’h001000; //for 64 bit

payload_3 = 21’h002000; //for 64 bit

payload_4 = 21’h003000; //for 64 bit

payload_5 = 21’h004000; //for 64 bit

payload_6 = 21’h005000; //for 64 bit

payload_7 = 21’h006000; //for 64 bit

i = 0; //for 64 bit

sent1 = 0; //for 64 bit

sent2 = 0; //for 64 bit

sent3 = 0; //for 64 bit

sent4 = 0; //for 64 bit

sent5 = 0; //for 64 bit

sent6 = 0; //for 64 bit

sent7 = 0; //for 64 bit

rec1 = 0; //for 64 bit

rec2 = 0; //for 64 bit

rec3 = 0; //for 64 bit

rec4 = 0; //for 64 bit

rec5 = 0; //for 64 bit

rec6 = 0; //for 64 bit

rec7 = 0; //for 64 bit

dat_in_local = 38’h000000000;

dat_in_local2 = 38’h000000000;

#100000

reset = 1’b0;

//*** dist_(x,y) indicates distination address for each router ***//

#100000

$dumpfile("dump.vcd");

$dumpvars(0, Test);

for(i=0;i<100;i=i+1)begin

#10000

//*** local sending to north

87

Page 88: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

if(stop_out[0] == 1)

dat_in_local = 0;

else begin

dat_in_local = {payload_1,9’b001000000,7’b0100000,1’b1};//(0,1)

sent1 = sent1 + 1;

end

end//for loop end

#100000

$finish;

end // initial begin

always @(dat_out_local) begin

rec1= rec1+1;

end

always @(dat_out_north) begin

rec2= rec2+1;

end

always @(dat_out_east) begin

rec3= rec3+1;

end

always @(dat_out_south) begin

rec4= rec4+1;

end

always @(dat_out_west) begin

rec5= rec5+1;

end

always @(tsv_up_out) begin

rec6= rec6+1;

end

always @(tsv_down_out) begin

rec7= rec7+1;

end

endmodule // RtoRtest

88

Page 89: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.2 Script file

6.2.1 Synthesis in Design Compiler#

# Your design

#

set base_name "router_LAXYZ"

set clock_name "clk"

set clock_period 10.0

#

# Librariesa

#

set target_library "˜/lib/Front_End/DB/NangateOpenCellLibrary_typical.db"

set synthetic_library "˜/lib/dw_foundation.sldb"

set link_library [concat "*" $target_library $synthetic_library]

set symbol_library "˜/lib/generic.sdb"

define_design_lib WORK -path ./WORK

#

# Read RTL file(s)

#

analyze -format verilog {˜/TSV/Tanaka_work/Synthesis/verilog_src/crossbar.v //continue

˜/TSV/Tanaka_work/Synthesis/verilog_src/defines.v ˜/TSV/Tanaka_work/Synthesis/verilog_src/fifo.v //continue

˜/TSV/Tanaka_work/Synthesis/verilog_src/input_port.v ˜/TSV/Tanaka_work/Synthesis/verilog_src //continue

/matrix_arb_formultistage.v ˜/TSV/Tanaka_work/Synthesis/verilog_src/mux_out.v //continue

˜/TSV/Tanaka_work/Synthesis/verilog_src/route.v ˜/TSV/Tanaka_work/Synthesis/verilog_src/ //continue

router_LAXYZ.v ˜/TSV/Tanaka_work/Synthesis/verilog_src/stop_go.v ˜/TSV/Tanaka_work/Synthesis/ //continue

verilog_src/sw_alloc.v ˜/TSV/Tanaka_work/Synthesis/verilog_src/TSV.v}

elaborate $base_name

current_design $base_name

link

uniquify

#

# Timing

#

create_clock -name $clock_name -period $clock_period [find port $clock_name]

set_clock_uncertainty 0.02 [get_clocks $clock_name]

xsset_input_delay 0.1 -clock clk [remove_from_collection [all_inputs] {clk reset}]

set_output_delay 0.1 -clock clk [all_outputs]

#

# Clock gating

#

# set_clock_gating_style -sequential latch

# insert_clock_gating

#

# Set wire load model

#

# set_wire_load_model -name 5K_hvratio_1_1 -library NangateOpenCellLibrary

#

# Design synthesis

#

compile -map_effort high

compile -incremental_mapping -map_effort high

89

Page 90: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

#

# Design report

#

report_qor > ./reports/Summary_report_${base_name}.txt

report_area -hierarchy > ./reports/report_area_${base_name}.txt

#

# Output

#

write -format verilog -hierarchy -output ${base_name}.vnet

write_sdc ${base_name}.sdc

#write_file -format ddc -hierarchy -output ./checkpoints/${base_name}.ddc

# quit

90

Page 91: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.2.2 Place and Route in SoC Encounter#

# Step 1: Setup (File --> Import Design)

#

setUIVar rda_Input ui_netlist ./router_LAXYZ.vnet

setUIVar rda_Input ui_timingcon_file ./router_LAXYZ.sdc

setUIVar rda_Input ui_topcell router_LAXYZ

setUIVar rda_Input ui_leffile {˜/TSV/Tanaka_work/PandR/TSV.lef ˜ //continue

/TSV/Tanaka_work/PandR/input_port.lef ˜/TSV/Tanaka_work/PandR/sw_alloc.lef //continue

˜/TSV/Tanaka_work/PandR/crossbar.lef ˜/lib/Back_End/

lef/NangateOpenCellLibrary.lef}

setUIVar rda_Input ui_timelib {˜/lib/Front_End/Liberty/CCS/NangateOpenCellLibrary_typical_ccs.lib //continue

˜/TSV/Tanaka_work/PandR/TSV.lib ˜/TSV/Tanaka_work/PandR/input_port.lib //continue

˜/TSV/Tanaka_work/PandR/sw_alloc.lib ˜/TSV/Tanaka_work/PandR/crossbar.lib}

setUIVar rda_Input ui_pwrnet VDD

setUIVar rda_Input ui_gndnet VSS

setUIVar rda_Input ui_cts_cell_list {CLKBUF_X1 CLKBUF_X2 CLKBUF_X3}

commitConfig

win

#

#Step 2: Floorplan (Floorplan --> Specify Floorplan)

#

floorPlan -s 350 350 15 15 15 15

#set halo#

addHaloToBlock 1 1 1 1 ip0

addHaloToBlock 1 1 1 1 ip1

addHaloToBlock 1 1 1 1 ip2

addHaloToBlock 1 1 1 1 ip3

addHaloToBlock 1 1 1 1 ip4

addHaloToBlock 1 1 1 1 ip5

addHaloToBlock 1 1 1 1 ip6

addHaloToBlock 1 1 1 1 sw_allc

addHaloToBlock 1 1 1 1 cbar

#place macro

placeInstance tsv_input_up0 100 100 R0

placeInstance tsv_input_up1 100 115 R0

placeInstance tsv_input_up2 100 130 R0

placeInstance tsv_input_up3 100 145 R0

placeInstance tsv_input_up4 100 160 R0

placeInstance tsv_input_up5 100 175 R0

placeInstance tsv_input_up6 100 190 R0

placeInstance tsv_input_up7 100 205 R0

placeInstance tsv_input_up8 100 220 R0

placeInstance tsv_input_up9 100 235 R0

placeInstance tsv_input_up10 100 250 R0

placeInstance tsv_input_up11 100 265 R0

placeInstance tsv_input_up12 100 280 R0

placeInstance tsv_input_up13 115 100 R0

placeInstance tsv_input_up14 115 115 R0

placeInstance tsv_input_up15 115 130 R0

placeInstance tsv_input_up16 115 145 R0

placeInstance tsv_input_up17 115 160 R0

placeInstance tsv_input_up18 115 175 R0

placeInstance tsv_input_up19 115 190 R0

placeInstance tsv_input_up20 115 205 R0

placeInstance tsv_input_up21 115 220 R0

placeInstance tsv_input_up22 115 235 R0

91

Page 92: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

placeInstance tsv_input_up23 115 250 R0

placeInstance tsv_input_up24 115 265 R0

placeInstance tsv_input_up25 115 280 R0

placeInstance tsv_input_up26 130 100 R0

placeInstance tsv_input_up27 130 115 R0

placeInstance tsv_input_up28 130 130 R0

placeInstance tsv_input_up29 130 145 R0

placeInstance tsv_input_up30 130 160 R0

placeInstance tsv_input_up31 130 175 R0

placeInstance tsv_input_up32 130 190 R0

placeInstance tsv_input_up33 130 205 R0

placeInstance tsv_input_up34 130 220 R0

placeInstance tsv_input_up35 130 235 R0

placeInstance tsv_input_up36 130 250 R0

placeInstance tsv_input_up37 130 265 R0

placeInstance tsv_input_down0 130 280 R0

placeInstance tsv_input_down1 145 100 R0

placeInstance tsv_input_down2 145 115 R0

placeInstance tsv_input_down3 145 130 R0

placeInstance tsv_input_down4 145 145 R0

placeInstance tsv_input_down5 145 160 R0

placeInstance tsv_input_down6 145 175 R0

placeInstance tsv_input_down7 145 190 R0

placeInstance tsv_input_down8 145 205 R0

placeInstance tsv_input_down9 145 220 R0

placeInstance tsv_input_down10 145 235 R0

placeInstance tsv_input_down11 145 250 R0

placeInstance tsv_input_down12 145 265 R0

placeInstance tsv_input_down13 145 280 R0

placeInstance tsv_input_down14 160 100 R0

placeInstance tsv_input_down15 160 115 R0

placeInstance tsv_input_down16 160 130 R0

placeInstance tsv_input_down17 160 145 R0

placeInstance tsv_input_down18 160 160 R0

placeInstance tsv_input_down19 160 175 R0

placeInstance tsv_input_down20 160 190 R0

placeInstance tsv_input_down21 160 205 R0

placeInstance tsv_input_down22 160 220 R0

placeInstance tsv_input_down23 160 235 R0

placeInstance tsv_input_down24 160 250 R0

placeInstance tsv_input_down25 160 265 R0

placeInstance tsv_input_down26 160 280 R0

placeInstance tsv_input_down27 175 100 R0

placeInstance tsv_input_down28 175 115 R0

placeInstance tsv_input_down29 175 130 R0

placeInstance tsv_input_down30 175 145 R0

placeInstance tsv_input_down31 175 160 R0

placeInstance tsv_input_down32 175 175 R0

placeInstance tsv_input_down33 175 190 R0

placeInstance tsv_input_down34 175 205 R0

placeInstance tsv_input_down35 175 220 R0

placeInstance tsv_input_down36 175 235 R0

placeInstance tsv_input_down37 175 250 R0

placeInstance tsv_output_up0 175 265 R0

placeInstance tsv_output_up1 175 280 R0

placeInstance tsv_output_up2 190 100 R0

placeInstance tsv_output_up3 190 115 R0

placeInstance tsv_output_up4 190 130 R0

placeInstance tsv_output_up5 190 145 R0

92

Page 93: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

placeInstance tsv_output_up6 190 160 R0

placeInstance tsv_output_up7 190 175 R0

placeInstance tsv_output_up8 190 190 R0

placeInstance tsv_output_up9 190 205 R0

placeInstance tsv_output_up10 190 220 R0

placeInstance tsv_output_up11 190 235 R0

placeInstance tsv_output_up12 190 250 R0

placeInstance tsv_output_up13 190 265 R0

placeInstance tsv_output_up14 190 280 R0

placeInstance tsv_output_up15 205 100 R0

placeInstance tsv_output_up16 205 115 R0

placeInstance tsv_output_up17 205 130 R0

placeInstance tsv_output_up18 205 145 R0

placeInstance tsv_output_up19 205 160 R0

placeInstance tsv_output_up20 205 175 R0

placeInstance tsv_output_up21 205 190 R0

placeInstance tsv_output_up22 205 205 R0

placeInstance tsv_output_up23 205 220 R0

placeInstance tsv_output_up24 205 235 R0

placeInstance tsv_output_up25 205 250 R0

placeInstance tsv_output_up26 205 265 R0

placeInstance tsv_output_up27 205 280 R0

placeInstance tsv_output_up28 220 100 R0

placeInstance tsv_output_up29 220 115 R0

placeInstance tsv_output_up30 220 130 R0

placeInstance tsv_output_up31 220 145 R0

placeInstance tsv_output_up32 220 160 R0

placeInstance tsv_output_up33 220 175 R0

placeInstance tsv_output_up34 220 190 R0

placeInstance tsv_output_up35 220 205 R0

placeInstance tsv_output_up36 220 220 R0

placeInstance tsv_output_up37 220 235 R0

placeInstance tsv_output_down0 220 250 R0

placeInstance tsv_output_down1 220 265 R0

placeInstance tsv_output_down2 220 280 R0

placeInstance tsv_output_down3 235 100 R0

placeInstance tsv_output_down4 235 115 R0

placeInstance tsv_output_down5 235 130 R0

placeInstance tsv_output_down6 235 145 R0

placeInstance tsv_output_down7 235 160 R0

placeInstance tsv_output_down8 235 175 R0

placeInstance tsv_output_down9 235 190 R0

placeInstance tsv_output_down10 235 205 R0

placeInstance tsv_output_down11 235 220 R0

placeInstance tsv_output_down12 235 235 R0

placeInstance tsv_output_down13 235 250 R0

placeInstance tsv_output_down14 235 265 R0

placeInstance tsv_output_down15 235 280 R0

placeInstance tsv_output_down16 250 100 R0

placeInstance tsv_output_down17 250 115 R0

placeInstance tsv_output_down18 250 130 R0

placeInstance tsv_output_down19 250 145 R0

placeInstance tsv_output_down20 250 160 R0

placeInstance tsv_output_down21 250 175 R0

placeInstance tsv_output_down22 250 190 R0

placeInstance tsv_output_down23 250 205 R0

placeInstance tsv_output_down24 250 220 R0

placeInstance tsv_output_down25 250 235 R0

placeInstance tsv_output_down26 250 250 R0

93

Page 94: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

placeInstance tsv_output_down27 250 265 R0

placeInstance tsv_output_down28 250 280 R0

placeInstance tsv_output_down29 265 100 R0

placeInstance tsv_output_down30 265 115 R0

placeInstance tsv_output_down31 265 130 R0

placeInstance tsv_output_down32 265 145 R0

placeInstance tsv_output_down33 265 160 R0

placeInstance tsv_output_down34 265 175 R0

placeInstance tsv_output_down35 265 190 R0

placeInstance tsv_output_down36 265 205 R0

placeInstance tsv_output_down37 265 220 R0

placeInstance tsv_stop_input_up 265 235 R0

placeInstance tsv_stop_input_down 265 250 R0

placeInstance tsv_stop_output_up 265 265 R0

placeInstance tsv_stop_output_down 265 280 R0

createObstruct 98 98 272 286

createRouteBlk -box -20 -20 400 97.6 -layer 11

createRouteBlk -box -20 97.6 97.8 286.610 -layer 11

createRouteBlk -box 272.1 97.6 400 286.610 -layer 11

createRouteBlk -box -20 286.6 400 400 -layer 11

placeInstance ip0 291.1 133.6 R0

placeInstance ip1 291.1 214.8 R0

placeInstance ip2 27.195 132 R0

placeInstance ip3 28.5 291 R0

placeInstance ip4 156.8 293 R0

placeInstance ip5 27 195 R0

placeInstance ip6 283.8 291.8 R0

placeInstance sw_allc 92 293 R0

placeInstance cbar 235.84 308.610 R0

# Place your hard-macro manually

saveDesign floor.enc

#

# Step 3: Power ring (Power --> Power Planning --> Add Ring)

#

createPGPin VDD -net VDD

createPGPin VSS -net VSS

globalNetConnect VDD -type pgpin -pin VDD -sinst ip0

globalNetConnect VSS -type pgpin -pin VSS -sinst ip0

globalNetConnect VDD -type pgpin -pin VDD -sinst ip1

globalNetConnect VSS -type pgpin -pin VSS -sinst ip1

globalNetConnect VDD -type pgpin -pin VDD -sinst ip2

globalNetConnect VSS -type pgpin -pin VSS -sinst ip2

globalNetConnect VDD -type pgpin -pin VDD -sinst ip3

globalNetConnect VSS -type pgpin -pin VSS -sinst ip3

globalNetConnect VDD -type pgpin -pin VDD -sinst ip4

globalNetConnect VSS -type pgpin -pin VSS -sinst ip4

globalNetConnect VDD -type pgpin -pin VDD -sinst ip5

globalNetConnect VSS -type pgpin -pin VSS -sinst ip5

globalNetConnect VDD -type pgpin -pin VDD -sinst ip6

globalNetConnect VSS -type pgpin -pin VSS -sinst ip6

globalNetConnect VDD -type pgpin -pin VDD -sinst sw_allc

globalNetConnect VSS -type pgpin -pin VSS -sinst sw_allc

globalNetConnect VDD -type pgpin -pin VDD -sinst cbar

globalNetConnect VSS -type pgpin -pin VSS -sinst cbar

94

Page 95: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

addRing -nets {VSS VDD} -type core_rings \

-spacing_top 2 -spacing_bottom 2 -spacing_right 2 -spacing_left 2 \

-width_top 1 -width_bottom 1 -width_right 1 -width_left 1 \

-around core -jog_distance 0.095 -threshold 0.095 \

-layer_top metal10 -layer_bottom metal10 -layer_right metal9 \

-layer_left metal9 \

-stacked_via_top_layer metal10 -stacked_via_bottom_layer metal1

#

# Step 4: Power stripe (Power --> Power Planning --> Add Striple)

#

addStripe -nets {VSS VDD} -layer metal8 -width 1 -spacing 6 \

-block_ring_top_layer_limit metal9 -block_ring_bottom_layer_limit metal7 \

-padcore_ring_top_layer_limit metal9 -padcore_ring_bottom_layer_limit metal7 \

-stacked_via_top_layer metal10 -stacked_via_bottom_layer metal1 \

-set_to_set_distance 15 -xleft_offset 8 -merge_stripes_value 0.095 \

-max_same_layer_jog_length 1.6

#

# Step 5: Power route (Route --> Special Router)

#

sroute -nets {VSS VDD} -layerChangeRange {1 10} \

-connect { blockPin padPin padRing corePin floatingStripe } \

-blockPinTarget { nearestRingStripe nearestTarget } \

-padPinPortConnect { allPort oneGeom } \

-checkAlignedSecondaryPin 1 -blockPin useLef -allowJogging 1 \

-crossoverViaBottomLayer 1 -allowLayerChange 1 -targetViaTopLayer 10 \

-crossoverViaTopLayer 10 -targetViaBottomLayer 1

#

# Step 6: Placement (Place --> Standard Cell)

#

placeDesign -prePlaceOpt

#

# Step 7: Optimization (preCTS) (Optimize --> Optimize Design)

#

optDesign -preCTS

#

# Step 8: Clock tree synthesis (CTS) (Clock --> Cynthesize Clock Tree)

#

addCTSCellList {CLKBUF_X1 CLKBUF_X2 CLKBUF_X3}

clockDesign -genSpecOnly Clock.ctstch

clockDesign -specFile Clock.ctstch -outDir clock_report -fixedInstBeforeCTS

saveDesign cts.enc

#

# Step 9: Clock tree check (Clock --> Display --> Display Clock Tree)

#

#

# Step 9: Optimization (postCTS) (Optimize --> Optimize Design)

#

optDesign -postCTS

optDesign -postCTS -hold

#

# Step 10: Detailed route (Route --> Nano Route --> Route)

95

Page 96: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

#

setNanoRouteMode -quiet -routeWithTimingDriven true

setNanoRouteMode -quiet -routeTopRoutingLayer default

setNanoRouteMode -quiet -routeBottomRoutingLayer default

setNanoRouteMode -quiet -drouteEndIteration default

setNanoRouteMode -quiet -routeWithTimingDriven true

routeDesign -globalDetail

#

# Step 11: Optimization (postRoute) (Optimize --> Optimize Design)

#

optDesign -postRoute

optDesign -postRoute -hold

#saveDesign route.enc

#

# Step 12: Add fillers (Place --> Physical Cells --> Add Filler)

#

addFiller -prefix FILLER -cell FILLCELL_X1 FILLCELL_X2 FILLCELL_X4 \

FILLCELL_X8 FILLCELL_X16 FILLCELL_X32

#

# Step 13: Verification (LVS) (Verify --> Verify Connectivity)

#

verifyConnectivity -type all -error 1000 -warning 50

#

# Step 14: Verification (DRC) (Verify --> Verify Geometry)

#

verifyGeometry

#

# Step 15: Data out (Timing --> Extract RC, Timing --> Write SDF,

# File --> Save --> Netlist)

saveNetlist router_LAXYZ_final.vnet

isExtractRCModeSignoff

rcOut -spef router_LAXYZ_final.spef

delayCal -sdf router_LAXYZ_final.sdf -idealclock

saveDesign final.enc

96

Page 97: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.2.3 Evaluation Area, Frequency in Design Compiler#

# Your design

#

set base_name "router_LAXYZ"

set vnet_file "router_LAXYZ_final.vnet"

set sdc_file "router_LAXYZ.sdc"

set sdf_file "router_LAXYZ_final.sdf"

set spef_file "router_LAXYZ_final.spef"

#

# Libraries

#

set target_library "˜/lib/typical.db"

set synthetic_library "˜/lib/dw_foundation.sldb"

set link_library [concat "*" $target_library $synthetic_library]

set symbol_library "˜/lib/generic.sdb"

define_design_lib WORK -path ./WORK

#

# Read post-layout netlist

#

read_file -format verilog ./input/$vnet_file

current_design $base_name

link

#

# Delay and RC information

#

read_sdc ./input/$sdc_file

read_sdf ./input/$sdf_file

read_parasitics ./input/$spef_file

report_timing > ./reports/timing_report_${base_name}.txt

#report_reference -hier > ./reports/reference_report_${base_name}.txt

report_qor > ./reports/Summary_report_${base_name}.txt

report_area -hierarchy > ./reports/report_area_${base_name}.txt

# quit

97

Page 98: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.2.4 Evaluation Power in Design Compiler#

# Your design

#

set base_name "router_LAXYZ"

set vnet_file "router_LAXYZ_final.vnet"

set sdc_file "router_LAXYZ.sdc"

set sdf_file "router_LAXYZ_final.sdf"

set spef_file "router_LAXYZ_final.spef"

set saif_file "router_LAXYZ.saif"

#

# Libraries

#

set target_library "˜/lib/typical.db"

set synthetic_library "˜/lib/dw_foundation.sldb"

set link_library [concat "*" $target_library $synthetic_library]

set symbol_library "˜/lib/generic.sdb"

define_design_lib WORK -path ./WORK

#

# Read post-layout netlist

#

read_file -format verilog ./input/$vnet_file

current_design $base_name

link

#

# Delay and RC information

#

read_sdc ./input/$sdc_file

read_sdf ./input/$sdf_file

read_parasitics ./input/$spef_file

#

# Read switching activity information

#

reset_switching_activity

read_saif -input ./input/$saif_file -instance Test/router1 -unit ns -scale 1

#report_timing > ./reports/timing_report_${base_name}.txt

#report_reference -hier > ./reports/reference_report_${base_name}.txt

report_power -hier > ./reports/power_report_${base_name}.txt

# quit

98

Page 99: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.3 TSV LEF fileVERSION 5.7 ;

BUSBITCHARS "[]" ;

DIVIDERCHAR "/" ;

PROPERTYDEFINITIONS

MACRO lastSavedExtractCounter INTEGER ;

MACRO FE_CORE_BOX_LL_X REAL ;

MACRO FE_CORE_BOX_UR_X REAL ;

MACRO FE_CORE_BOX_LL_Y REAL ;

MACRO FE_CORE_BOX_UR_Y REAL ;

END PROPERTYDEFINITIONS

UNITS

DATABASE MICRONS 2000 ;

END UNITS

MANUFACTURINGGRID 0.0025 ;

LAYER OVERLAP

TYPE OVERLAP ;

END OVERLAP

LAYER active

TYPE MASTERSLICE ;

END active

LAYER poly

TYPE MASTERSLICE ;

END poly

LAYER contact

TYPE CUT ;

SPACING 0.075 ;

END contact

LAYER metal1

TYPE ROUTING ;

DIRECTION HORIZONTAL ;

PITCH 0.19 0.19 ;

WIDTH 0.065 ;

SPACING 0.065 ;

SPACING 0.065 SAMENET ;

END metal1

LAYER via1

TYPE CUT ;

SPACING 0.075 ;

WIDTH 0.065 ;

END via1

LAYER metal2

TYPE ROUTING ;

DIRECTION VERTICAL ;

PITCH 0.19 0.19 ;

WIDTH 0.07 ;

SPACING 0.075 ;

SPACING 0.07 SAMENET ;

END metal2

LAYER via2

TYPE CUT ;

99

Page 100: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

SPACING 0.085 ;

WIDTH 0.07 ;

END via2

LAYER metal3

TYPE ROUTING ;

DIRECTION HORIZONTAL ;

PITCH 0.19 0.19 ;

WIDTH 0.07 ;

SPACING 0.07 ;

SPACING 0.07 SAMENET ;

END metal3

LAYER via3

TYPE CUT ;

SPACING 0.085 ;

WIDTH 0.07 ;

END via3

LAYER metal4

TYPE ROUTING ;

DIRECTION VERTICAL ;

PITCH 0.285 0.285 ;

WIDTH 0.14 ;

SPACING 0.14 ;

SPACING 0.14 SAMENET ;

END metal4

LAYER via4

TYPE CUT ;

SPACING 0.16 ;

WIDTH 0.14 ;

END via4

LAYER metal5

TYPE ROUTING ;

DIRECTION HORIZONTAL ;

PITCH 0.285 0.285 ;

WIDTH 0.14 ;

SPACING 0.14 ;

SPACING 0.14 SAMENET ;

END metal5

LAYER via5

TYPE CUT ;

SPACING 0.16 ;

WIDTH 0.14 ;

END via5

LAYER metal6

TYPE ROUTING ;

DIRECTION VERTICAL ;

PITCH 0.285 0.285 ;

WIDTH 0.14 ;

SPACING 0.14 ;

SPACING 0.14 SAMENET ;

END metal6

LAYER via6

TYPE CUT ;

SPACING 0.16 ;

WIDTH 0.14 ;

100

Page 101: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

END via6

LAYER metal7

TYPE ROUTING ;

DIRECTION HORIZONTAL ;

PITCH 0.855 0.855 ;

WIDTH 0.4 ;

SPACING 0.44 ;

SPACING 0.44 SAMENET ;

END metal7

LAYER via7

TYPE CUT ;

SPACING 0.44 ;

WIDTH 0.4 ;

END via7

LAYER metal8

TYPE ROUTING ;

DIRECTION VERTICAL ;

PITCH 0.855 0.855 ;

WIDTH 0.4 ;

SPACING 0.44 ;

SPACING 0.44 SAMENET ;

END metal8

LAYER via8

TYPE CUT ;

SPACING 0.44 ;

WIDTH 0.4 ;

END via8

LAYER metal9

TYPE ROUTING ;

DIRECTION HORIZONTAL ;

PITCH 1.71 1.71 ;

WIDTH 0.8 ;

SPACING 0.8 ;

SPACING 0.8 SAMENET ;

END metal9

LAYER via9

TYPE CUT ;

SPACING 0.88 ;

WIDTH 0.8 ;

END via9

LAYER metal10

TYPE ROUTING ;

DIRECTION VERTICAL ;

PITCH 1.71 1.71 ;

WIDTH 0.4 ;

SPACING 0.8 ;

SPACING 0.8 SAMENET ;

END metal10

LAYER VUP

TYPE CUT ;

SPACING 0.88 ;

WIDTH 0.8 ;

END VUP

101

Page 102: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

LAYER TM

TYPE ROUTING ;

DIRECTION HORIZONTAL ;

PITCH 2 2 ;

WIDTH 0.8 ;

SPACING 0.8 ;

SPACING 0.8 SAMENET ;

END TM

VIA M2_M1_via DEFAULT

LAYER metal1 ;

RECT -0.0675 -0.0325 0.0675 0.0325 ;

LAYER via1 ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

LAYER metal2 ;

RECT -0.035 -0.0675 0.035 0.0675 ;

END M2_M1_via

VIA M3_M2_via DEFAULT

LAYER metal2 ;

RECT -0.035 -0.07 0.035 0.07 ;

LAYER via2 ;

RECT -0.035 -0.035 0.035 0.035 ;

LAYER metal3 ;

RECT -0.07 -0.035 0.07 0.035 ;

END M3_M2_via

VIA M4_M3_via DEFAULT

LAYER metal3 ;

RECT -0.07 -0.035 0.07 0.035 ;

LAYER via3 ;

RECT -0.035 -0.035 0.035 0.035 ;

LAYER metal4 ;

RECT -0.07 -0.07 0.07 0.07 ;

END M4_M3_via

VIA M5_M4_via DEFAULT

LAYER metal4 ;

RECT -0.07 -0.07 0.07 0.07 ;

LAYER via4 ;

RECT -0.07 -0.07 0.07 0.07 ;

LAYER metal5 ;

RECT -0.07 -0.07 0.07 0.07 ;

END M5_M4_via

VIA M6_M5_via DEFAULT

LAYER metal5 ;

RECT -0.07 -0.07 0.07 0.07 ;

LAYER via5 ;

RECT -0.07 -0.07 0.07 0.07 ;

LAYER metal6 ;

RECT -0.07 -0.07 0.07 0.07 ;

END M6_M5_via

VIA M7_M6_via DEFAULT

LAYER metal6 ;

RECT -0.07 -0.07 0.07 0.07 ;

LAYER via6 ;

RECT -0.07 -0.07 0.07 0.07 ;

LAYER metal7 ;

RECT -0.2 -0.2 0.2 0.2 ;

END M7_M6_via

102

Page 103: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

VIA M8_M7_via DEFAULT

LAYER metal7 ;

RECT -0.2 -0.2 0.2 0.2 ;

LAYER via7 ;

RECT -0.2 -0.2 0.2 0.2 ;

LAYER metal8 ;

RECT -0.2 -0.2 0.2 0.2 ;

END M8_M7_via

VIA M9_M8_via DEFAULT

LAYER metal8 ;

RECT -0.2 -0.2 0.2 0.2 ;

LAYER via8 ;

RECT -0.2 -0.2 0.2 0.2 ;

LAYER metal9 ;

RECT -0.4 -0.4 0.4 0.4 ;

END M9_M8_via

VIA M10_M9_via DEFAULT

LAYER metal9 ;

RECT -0.4 -0.4 0.4 0.4 ;

LAYER via9 ;

RECT -0.4 -0.4 0.4 0.4 ;

LAYER metal10 ;

RECT -0.4 -0.4 0.4 0.4 ;

END M10_M9_via

VIA TM_M10_via DEFAULT

LAYER metal10 ;

RECT -0.4 -0.4 0.4 0.4 ;

LAYER VUP ;

RECT -0.4 -0.4 0.4 0.4 ;

LAYER TM ;

RECT -0.9975 -1.0 1.0025 1.0 ;

END TM_M10_via

VIA M2_M1_viaB DEFAULT

LAYER metal1 ;

RECT -0.0675 -0.0325 0.0675 0.0325 ;

LAYER via1 ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

LAYER metal2 ;

RECT -0.0675 -0.035 0.0675 0.035 ;

END M2_M1_viaB

VIA M2_M1_viaC DEFAULT

LAYER metal1 ;

RECT -0.0325 -0.0675 0.0325 0.0675 ;

LAYER via1 ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

LAYER metal2 ;

RECT -0.035 -0.0675 0.035 0.0675 ;

END M2_M1_viaC

VIA M3_M2_viaB DEFAULT

LAYER metal2 ;

RECT -0.035 -0.07 0.035 0.07 ;

LAYER via2 ;

RECT -0.035 -0.035 0.035 0.035 ;

LAYER metal3 ;

RECT -0.035 -0.07 0.035 0.07 ;

103

Page 104: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

END M3_M2_viaB

VIA M3_M2_viaC DEFAULT

LAYER metal2 ;

RECT -0.07 -0.035 0.07 0.035 ;

LAYER via2 ;

RECT -0.035 -0.035 0.035 0.035 ;

LAYER metal3 ;

RECT -0.07 -0.035 0.07 0.035 ;

END M3_M2_viaC

VIA M4_M3_viaB DEFAULT

LAYER metal3 ;

RECT -0.035 -0.07 0.035 0.07 ;

LAYER via3 ;

RECT -0.035 -0.035 0.035 0.035 ;

LAYER metal4 ;

RECT -0.07 -0.07 0.07 0.07 ;

END M4_M3_viaB

VIARULE M2_M1 GENERATE

LAYER metal1 ;

ENCLOSURE 0.035 0.035 ;

LAYER metal2 ;

ENCLOSURE 0 0.035 ;

LAYER via1 ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

SPACING 0.14 BY 0.14 ;

END M2_M1

VIARULE M3_M2 GENERATE

LAYER metal2 ;

ENCLOSURE 0 0.035 ;

LAYER metal3 ;

ENCLOSURE 0 0.035 ;

LAYER via2 ;

RECT -0.035 -0.035 0.035 0.035 ;

SPACING 0.155 BY 0.155 ;

END M3_M2

VIARULE M4_M3 GENERATE

LAYER metal3 ;

ENCLOSURE 0 0.035 ;

LAYER metal4 ;

ENCLOSURE 0 0 ;

LAYER via3 ;

RECT -0.035 -0.035 0.035 0.035 ;

SPACING 0.155 BY 0.155 ;

END M4_M3

VIARULE M5_M4 GENERATE

LAYER metal4 ;

ENCLOSURE 0 0 ;

LAYER metal5 ;

ENCLOSURE 0 0 ;

LAYER via4 ;

RECT -0.07 -0.07 0.07 0.07 ;

SPACING 0.3 BY 0.3 ;

END M5_M4

VIARULE M6_M5 GENERATE

LAYER metal5 ;

104

Page 105: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

ENCLOSURE 0 0 ;

LAYER metal6 ;

ENCLOSURE 0 0 ;

LAYER via5 ;

RECT -0.07 -0.07 0.07 0.07 ;

SPACING 0.3 BY 0.3 ;

END M6_M5

VIARULE M7_M6 GENERATE

LAYER metal6 ;

ENCLOSURE 0 0 ;

LAYER metal7 ;

ENCLOSURE 0.13 0.13 ;

LAYER via6 ;

RECT -0.07 -0.07 0.07 0.07 ;

SPACING 0.3 BY 0.3 ;

END M7_M6

VIARULE M8_M7 GENERATE

LAYER metal7 ;

ENCLOSURE 0 0 ;

LAYER metal8 ;

ENCLOSURE 0 0 ;

LAYER via7 ;

RECT -0.2 -0.2 0.2 0.2 ;

SPACING 0.8 BY 0.8 ;

END M8_M7

VIARULE M9_M8 GENERATE

LAYER metal8 ;

ENCLOSURE 0 0 ;

LAYER metal9 ;

ENCLOSURE 0.2 0.2 ;

LAYER via8 ;

RECT -0.2 -0.2 0.2 0.2 ;

SPACING 0.8 BY 0.8 ;

END M9_M8

VIARULE M10_M9 GENERATE

LAYER metal9 ;

ENCLOSURE 0 0 ;

LAYER metal10 ;

ENCLOSURE 0 0 ;

LAYER via9 ;

RECT -0.4 -0.4 0.4 0.4 ;

SPACING 1.6 BY 1.6 ;

END M10_M9

VIARULE M1_POLY GENERATE

LAYER poly ;

ENCLOSURE 0 0 ;

LAYER metal1 ;

ENCLOSURE 0 0.035 ;

LAYER contact ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

SPACING 0.14 BY 0.14 ;

END M1_POLY

VIARULE M1_N GENERATE

LAYER active ;

ENCLOSURE 0.005 0.005 ;

LAYER metal1 ;

105

Page 106: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

ENCLOSURE 0 0.035 ;

LAYER contact ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

SPACING 0.14 BY 0.14 ;

END M1_N

VIARULE M1_P GENERATE

LAYER active ;

ENCLOSURE 0.005 0.005 ;

LAYER metal1 ;

ENCLOSURE 0 0.035 ;

LAYER contact ;

RECT -0.0325 -0.0325 0.0325 0.0325 ;

SPACING 0.14 BY 0.14 ;

END M1_P

VIARULE TM_M10 GENERATE

LAYER metal10 ;

ENCLOSURE 0.6 0.6 ;

LAYER TM ;

ENCLOSURE 0.6 0.6 ;

LAYER VUP ;

RECT -0.4 -0.4 0.4 0.4 ;

SPACING 1.68 BY 1.68 ;

END TM_M10

SITE FreePDK45_38x28_10R_NP_162NW_34O

SYMMETRY y ;

CLASS core ;

SIZE 0.19 BY 1.4 ;

END FreePDK45_38x28_10R_NP_162NW_34O

MACRO TSV

CLASS BLOCK ;

ORIGIN 0 0 ;

FOREIGN TSV 0 0 ;

SIZE 4.06 BY 4.06 ;

SYMMETRY X Y ;

SITE FreePDK45_38x28_10R_NP_162NW_34O ;

PIN data_out

DIRECTION OUTPUT ;

USE SIGNAL ;

PORT

LAYER TM ;

RECT 1.03 1.03 3.03 3.03 ;

END

END data_out

PIN data_in

DIRECTION INPUT ;

USE SIGNAL ;

PORT

LAYER metal1 ;

RECT 3.06 1 4.06 3.06 ;

END

PORT

LAYER metal1 ;

RECT 0 0 4.06 1 ;

END

END data_in

OBS

106

Page 107: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

LAYER metal1 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal2 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal3 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal4 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal5 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal6 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal7 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal8 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal9 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER metal10 ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

LAYER VUP ;

RECT 0 0 4.06 1.0 ;

RECT 0 1.0 1.0 3.06 ;

RECT 3.06 1.0 4.06 4.06 ;

RECT 0 3.06 4.06 4.06 ;

END

PROPERTY lastSavedExtractCounter 1527 ;

PROPERTY FE_CORE_BOX_LL_X 0.0 ;

PROPERTY FE_CORE_BOX_UR_X 4.06 ;

PROPERTY FE_CORE_BOX_LL_Y 0.0 ;

PROPERTY FE_CORE_BOX_UR_Y 4.06 ;

107

Page 108: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

END TSV

END LIBRARY

108

Page 109: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.4 TSV LIB filelibrary (TSV ){

delay_model : table_lookup;

date : "Thu Dec 4 10:31:26 2014" ;

revision : "0.0" ;

bus_naming_style : "%s[%d]" ;

capacitive_load_unit ( 1.0000,pf);

comment : "Generated By Encounter v10.10-p003_1 ((32bit) 12/09/2010 19:05 (Linux 2.6)) Using do_extract_model -blackbox_2d -force TSV.lib" ;

current_unit : "1mA" ;

pulling_resistance_unit : "1kohm" ;

time_unit : "1ns" ;

voltage_unit : "1V" ;

leakage_power_unit : "1nW" ;

input_threshold_pct_fall : 50.0000;

input_threshold_pct_rise : 50.0000;

output_threshold_pct_fall : 50.0000;

output_threshold_pct_rise : 50.0000;

slew_lower_threshold_pct_fall : 30.0000;

slew_lower_threshold_pct_rise : 30.0000;

slew_upper_threshold_pct_fall : 70.0000;

slew_upper_threshold_pct_rise : 70.0000;

slew_derate_from_library : 1.0000;

operating_conditions (slow ){

process : 1.0000;

temperature : 125.0000;

voltage : 0.9500;

tree_type : "balanced_tree" ;

}

default_operating_conditions : "slow" ;

nom_process : 1.0000;

nom_temperature : 125.0000;

nom_voltage : 0.9500;

default_fanout_load : 0.0000;

default_inout_pin_cap : 0.0000;

default_input_pin_cap : 0.0000;

default_output_pin_cap : 0.0000;

default_wire_load_area : 0.0000;

default_wire_load_capacitance : 21.6;

default_wire_load_resistance : 0.24000;

lu_table_template (lut_timing_1 ){

variable_1 : input_net_transition ;

index_1(" 0.002, 0.011, 0.042, 0.102, 0.196, 0.327, 0.5000");

variable_2 : total_output_net_capacitance ;

index_2(" 0.365, 1.897, 3.795, 7.591, 15.182, 30.365, 60.730");

}

cell (TSV ) {

area : 16.36;

dont_touch : true ;

dont_use : true ;

timing_model_type : extracted ;

interface_timing : true ;

pin (data_in ) {

direction : input ;

capacitance : 0.0;

max_transition : 0.5000;

fanout_load : 1.0000;

}

pin (data_out ) {

109

Page 110: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

direction : output ;

capacitance : 2.75;

max_transition : 0.5000;

max_capacitance : 60.730;

timing() {

timing_type : combinational ;

timing_sense : positive_unate ;

rise_transition (lut_timing_1 ){

values(\

" 0.00236, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00230, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00235, 0.01127, 0.04268, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00243, 0.01128, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00264, 0.01120, 0.04270, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00277, 0.01130, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00141, 0.01142, 0.04268, 0.10270, 0.19619, 0.32737, 0.50000" \

);

}

fall_transition (lut_timing_1 ){

values(\

" 0.00236, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00230, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00235, 0.01127, 0.04268, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00243, 0.01128, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00264, 0.01120, 0.04270, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00277, 0.01130, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00141, 0.01142, 0.04268, 0.10270, 0.19619, 0.32737, 0.50000" \

);

}

cell_rise (lut_timing_1 ){

values(\

" 0.00007834, 0.00000386, 0.00000287, 0.00000312, 0.00000302, 0.00000275, 0.00000269", \

" 0.00014041, 0.00000479, 0.00000298, 0.00000350, 0.00000343, 0.00000313, 0.00000305", \

" 0.00020543, 0.00000928, 0.00000359, 0.00000350, 0.00000396, 0.00000361, 0.00000352", \

" 0.00029438, -0.00000830, 0.00000402, 0.00000436, 0.00000495, 0.00000458, 0.00000442", \

" -0.00000817, -0.00001526, 0.00000665, 0.00000606, 0.00000664, 0.00000652, 0.00000623", \

" -0.00046515, 0.00004328, 0.00001051, 0.00001148, 0.00000993, 0.00000995, 0.00000988", \

" -0.00024893, -0.00003435, 0.00000152, 0.00001462, 0.00001684, 0.00001684, 0.00001717" \

);

}

cell_fall (lut_timing_1 ){

values(\

" 0.00007834, 0.00000386, 0.00000287, 0.00000312, 0.00000302, 0.00000275, 0.00000269", \

" 0.00014041, 0.00000479, 0.00000298, 0.00000350, 0.00000343, 0.00000313, 0.00000305", \

" 0.00020543, 0.00000928, 0.00000359, 0.00000350, 0.00000396, 0.00000361, 0.00000352", \

" 0.00029438, -0.00000830, 0.00000402, 0.00000436, 0.00000495, 0.00000458, 0.00000442", \

" -0.00000817, -0.00001526, 0.00000665, 0.00000606, 0.00000664, 0.00000652, 0.00000623", \

" -0.00046515, 0.00004328, 0.00001051, 0.00001148, 0.00000993, 0.00000995, 0.00000988", \

" -0.00024893, -0.00003435, 0.00000152, 0.00001462, 0.00001684, 0.00001684, 0.00001717" \

);

}

related_pin :" data_in ";

}

}

}

}

library (TSV ){

delay_model : table_lookup;

110

Page 111: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

date : "Thu Dec 4 10:31:26 2014" ;

revision : "0.0" ;

bus_naming_style : "%s[%d]" ;

capacitive_load_unit ( 1.0000,pf);

comment : "Generated By Encounter v10.10-p003_1 ((32bit) 12/09/2010 19:05 (Linux 2.6)) Using do_extract_model -blackbox_2d -force TSV.lib" ;

current_unit : "1mA" ;

pulling_resistance_unit : "1kohm" ;

time_unit : "1ns" ;

voltage_unit : "1V" ;

leakage_power_unit : "1nW" ;

input_threshold_pct_fall : 50.0000;

input_threshold_pct_rise : 50.0000;

output_threshold_pct_fall : 50.0000;

output_threshold_pct_rise : 50.0000;

slew_lower_threshold_pct_fall : 30.0000;

slew_lower_threshold_pct_rise : 30.0000;

slew_upper_threshold_pct_fall : 70.0000;

slew_upper_threshold_pct_rise : 70.0000;

slew_derate_from_library : 1.0000;

operating_conditions (slow ){

process : 1.0000;

temperature : 125.0000;

voltage : 0.9500;

tree_type : "balanced_tree" ;

}

default_operating_conditions : "slow" ;

nom_process : 1.0000;

nom_temperature : 125.0000;

nom_voltage : 0.9500;

default_fanout_load : 0.0000;

default_inout_pin_cap : 0.0000;

default_input_pin_cap : 0.0000;

default_output_pin_cap : 0.0000;

default_wire_load_area : 0.0000;

default_wire_load_capacitance : 21.6;

default_wire_load_resistance : 0.24000;

lu_table_template (lut_timing_1 ){

variable_1 : input_net_transition ;

index_1(" 0.002, 0.011, 0.042, 0.102, 0.196, 0.327, 0.5000");

variable_2 : total_output_net_capacitance ;

index_2(" 0.365, 1.897, 3.795, 7.591, 15.182, 30.365, 60.730");

}

cell (TSV ) {

area : 16.36;

dont_touch : true ;

dont_use : true ;

timing_model_type : extracted ;

interface_timing : true ;

pin (data_in ) {

direction : input ;

capacitance : 0.0;

max_transition : 0.5000;

fanout_load : 1.0000;

}

pin (data_out ) {

direction : output ;

capacitance : 2.75;

max_transition : 0.5000;

max_capacitance : 60.730;

111

Page 112: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

timing() {

timing_type : combinational ;

timing_sense : positive_unate ;

rise_transition (lut_timing_1 ){

values(\

" 0.00236, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00230, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00235, 0.01127, 0.04268, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00243, 0.01128, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00264, 0.01120, 0.04270, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00277, 0.01130, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00141, 0.01142, 0.04268, 0.10270, 0.19619, 0.32737, 0.50000" \

);

}

fall_transition (lut_timing_1 ){

values(\

" 0.00236, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00230, 0.01126, 0.04268, 0.10270, 0.19619, 0.32737, 0.49999", \

" 0.00235, 0.01127, 0.04268, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00243, 0.01128, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00264, 0.01120, 0.04270, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00277, 0.01130, 0.04269, 0.10269, 0.19619, 0.32737, 0.49999", \

" 0.00141, 0.01142, 0.04268, 0.10270, 0.19619, 0.32737, 0.50000" \

);

}

cell_rise (lut_timing_1 ){

values(\

" 0.00007834, 0.00000386, 0.00000287, 0.00000312, 0.00000302, 0.00000275, 0.00000269", \

" 0.00014041, 0.00000479, 0.00000298, 0.00000350, 0.00000343, 0.00000313, 0.00000305", \

" 0.00020543, 0.00000928, 0.00000359, 0.00000350, 0.00000396, 0.00000361, 0.00000352", \

" 0.00029438, -0.00000830, 0.00000402, 0.00000436, 0.00000495, 0.00000458, 0.00000442", \

" -0.00000817, -0.00001526, 0.00000665, 0.00000606, 0.00000664, 0.00000652, 0.00000623", \

" -0.00046515, 0.00004328, 0.00001051, 0.00001148, 0.00000993, 0.00000995, 0.00000988", \

" -0.00024893, -0.00003435, 0.00000152, 0.00001462, 0.00001684, 0.00001684, 0.00001717" \

);

}

cell_fall (lut_timing_1 ){

values(\

" 0.00007834, 0.00000386, 0.00000287, 0.00000312, 0.00000302, 0.00000275, 0.00000269", \

" 0.00014041, 0.00000479, 0.00000298, 0.00000350, 0.00000343, 0.00000313, 0.00000305", \

" 0.00020543, 0.00000928, 0.00000359, 0.00000350, 0.00000396, 0.00000361, 0.00000352", \

" 0.00029438, -0.00000830, 0.00000402, 0.00000436, 0.00000495, 0.00000458, 0.00000442", \

" -0.00000817, -0.00001526, 0.00000665, 0.00000606, 0.00000664, 0.00000652, 0.00000623", \

" -0.00046515, 0.00004328, 0.00001051, 0.00001148, 0.00000993, 0.00000995, 0.00000988", \

" -0.00024893, -0.00003435, 0.00000152, 0.00001462, 0.00001684, 0.00001684, 0.00001717" \

);

}

related_pin :" data_in ";

}

}

}

}

112

Page 113: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

6.5 router LAXYZ.vmodule router_LAXYZ (clk, reset,

data_in, data_out, tsv_up_in, tsv_down_in, tsv_up_out, tsv_down_out,

stop_in, stop_out, tsv_stop_up_in, tsv_stop_down_in, tsv_stop_up_out, tsv_stop_down_out,

xaddr, yaddr, zaddr);

parameter NOUT = 7;

parameter FIFO_DEPTH = 4; //DEPTH must be 2ˆLOG2D

parameter FIFO_LOG2D = 2;

parameter FIFO_FULL_LVL = 2;

input clk, reset;

input [189:0] data_in;

input [2:0] xaddr, yaddr, zaddr;

input [37:0] tsv_up_in, tsv_down_in;

input [4:0] stop_in;

input tsv_stop_up_in, tsv_stop_down_in;

output [189:0] data_out;

output [37:0] tsv_up_out, tsv_down_out;

output [4:0] stop_out;

output tsv_stop_up_out, tsv_stop_down_out;

wire [265:0] cbar_data_in;

wire [265:0] cbar_data_out;

wire [6:0] sw_req, sw_grant;

wire [6:0] data_sent, tail_sent;

wire [48:0] port_req, sw_cntrl;

wire [37:0] U_data_in;

wire [37:0] D_data_in;

wire [6:0] alloc_stop_in;

wire U_stop_in, D_stop_in, U_stop_out, D_stop_out;

input_port #(7, 4, 2, 2) ip0(.clk(clk), .reset(reset),

.data_in(data_in[37:0]),

.data_out(cbar_data_in[37:0]),

.sw_req(sw_req[0]), .port_req(port_req[6:0]),

.sw_grant(sw_grant[0]), .stop_out(stop_out[0]),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

input_port #(7, 4, 2, 2) ip1(.clk(clk), .reset(reset),

.data_in(data_in[75:38]),

.data_out(cbar_data_in[75:38]),

.sw_req(sw_req[1]), .port_req(port_req[13:7]),

.sw_grant(sw_grant[1]), .stop_out(stop_out[1]),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

input_port #(7, 4, 2, 2) ip2(.clk(clk), .reset(reset),

.data_in(data_in[113:76]),

.data_out(cbar_data_in[113:76]),

.sw_req(sw_req[2]), .port_req(port_req[20:14]),

.sw_grant(sw_grant[2]), .stop_out(stop_out[2]),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

input_port #(7, 4, 2, 2) ip3(.clk(clk), .reset(reset),

113

Page 114: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

.data_in(data_in[151:114]),

.data_out(cbar_data_in[151:114]),

.sw_req(sw_req[3]), .port_req(port_req[27:21]),

.sw_grant(sw_grant[3]), .stop_out(stop_out[3]),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

input_port #(7, 4, 2, 2) ip4(.clk(clk), .reset(reset),

.data_in(data_in[189:152]),

.data_out(cbar_data_in[189:152]),

.sw_req(sw_req[4]), .port_req(port_req[34:28]),

.sw_grant(sw_grant[4]), .stop_out(stop_out[4]),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

input_port #(7, 4, 2, 2) ip5(.clk(clk), .reset(reset),

.data_in(U_data_in[37:0]),

.data_out(cbar_data_in[227:190]),

.sw_req(sw_req[5]), .port_req(port_req[41:35]),

.sw_grant(sw_grant[5]), .stop_out(U_stop_out),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

input_port #(7, 4, 2, 2) ip6(.clk(clk), .reset(reset),

.data_in(D_data_in[37:0]),

.data_out(cbar_data_in[265:228]),

.sw_req(sw_req[6]), .port_req(port_req[48:42]),

.sw_grant(sw_grant[6]), .stop_out(D_stop_out),

.xaddr(xaddr), .yaddr(yaddr), .zaddr(zaddr));

//data

TSV tsv_input_up0(.data_in(tsv_up_in[0]), .data_out(U_data_in[0]));

TSV tsv_input_down0(.data_in(tsv_down_in[0]), .data_out(D_data_in[0]));

TSV tsv_output_up0(.data_in(cbar_data_out[190]), .data_out(tsv_up_out[0]));

TSV tsv_output_down0(.data_in(cbar_data_out[228]), .data_out(tsv_down_out[0]));

TSV tsv_input_up1(.data_in(tsv_up_in[1]), .data_out(U_data_in[1]));

TSV tsv_input_down1(.data_in(tsv_down_in[1]), .data_out(D_data_in[1]));

TSV tsv_output_up1(.data_in(cbar_data_out[191]), .data_out(tsv_up_out[1]));

TSV tsv_output_down1(.data_in(cbar_data_out[229]), .data_out(tsv_down_out[1]));

TSV tsv_input_up2(.data_in(tsv_up_in[2]), .data_out(U_data_in[2]));

TSV tsv_input_down2(.data_in(tsv_down_in[2]), .data_out(D_data_in[2]));

TSV tsv_output_up2(.data_in(cbar_data_out[192]), .data_out(tsv_up_out[2]));

TSV tsv_output_down2(.data_in(cbar_data_out[230]), .data_out(tsv_down_out[2]));

TSV tsv_input_up3(.data_in(tsv_up_in[3]), .data_out(U_data_in[3]));

TSV tsv_input_down3(.data_in(tsv_down_in[3]), .data_out(D_data_in[3]));

TSV tsv_output_up3(.data_in(cbar_data_out[193]), .data_out(tsv_up_out[3]));

TSV tsv_output_down3(.data_in(cbar_data_out[231]), .data_out(tsv_down_out[3]));

TSV tsv_input_up4(.data_in(tsv_up_in[4]), .data_out(U_data_in[4]));

TSV tsv_input_down4(.data_in(tsv_down_in[4]), .data_out(D_data_in[4]));

TSV tsv_output_up4(.data_in(cbar_data_out[194]), .data_out(tsv_up_out[4]));

TSV tsv_output_down4(.data_in(cbar_data_out[232]), .data_out(tsv_down_out[4]));

TSV tsv_input_up5(.data_in(tsv_up_in[5]), .data_out(U_data_in[5]));

TSV tsv_input_down5(.data_in(tsv_down_in[5]), .data_out(D_data_in[5]));

TSV tsv_output_up5(.data_in(cbar_data_out[195]), .data_out(tsv_up_out[5]));

TSV tsv_output_down5(.data_in(cbar_data_out[233]), .data_out(tsv_down_out[5]));

TSV tsv_input_up6(.data_in(tsv_up_in[6]), .data_out(U_data_in[6]));

TSV tsv_input_down6(.data_in(tsv_down_in[6]), .data_out(D_data_in[6]));

TSV tsv_output_up6(.data_in(cbar_data_out[196]), .data_out(tsv_up_out[6]));

TSV tsv_output_down6(.data_in(cbar_data_out[234]), .data_out(tsv_down_out[6]));

114

Page 115: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

TSV tsv_input_up7(.data_in(tsv_up_in[7]), .data_out(U_data_in[7]));

TSV tsv_input_down7(.data_in(tsv_down_in[7]), .data_out(D_data_in[7]));

TSV tsv_output_up7(.data_in(cbar_data_out[197]), .data_out(tsv_up_out[7]));

TSV tsv_output_down7(.data_in(cbar_data_out[235]), .data_out(tsv_down_out[7]));

TSV tsv_input_up8(.data_in(tsv_up_in[8]), .data_out(U_data_in[8]));

TSV tsv_input_down8(.data_in(tsv_down_in[8]), .data_out(D_data_in[8]));

TSV tsv_output_up8(.data_in(cbar_data_out[198]), .data_out(tsv_up_out[8]));

TSV tsv_output_down8(.data_in(cbar_data_out[236]), .data_out(tsv_down_out[8]));

TSV tsv_input_up9(.data_in(tsv_up_in[9]), .data_out(U_data_in[9]));

TSV tsv_input_down9(.data_in(tsv_down_in[9]), .data_out(D_data_in[9]));

TSV tsv_output_up9(.data_in(cbar_data_out[199]), .data_out(tsv_up_out[9]));

TSV tsv_output_down9(.data_in(cbar_data_out[237]), .data_out(tsv_down_out[9]));

TSV tsv_input_up10(.data_in(tsv_up_in[10]), .data_out(U_data_in[10]));

TSV tsv_input_down10(.data_in(tsv_down_in[10]), .data_out(D_data_in[10]));

TSV tsv_output_up10(.data_in(cbar_data_out[200]), .data_out(tsv_up_out[10]));

TSV tsv_output_down10(.data_in(cbar_data_out[238]), .data_out(tsv_down_out[10]));

TSV tsv_input_up11(.data_in(tsv_up_in[11]), .data_out(U_data_in[11]));

TSV tsv_input_down11(.data_in(tsv_down_in[11]), .data_out(D_data_in[11]));

TSV tsv_output_up11(.data_in(cbar_data_out[201]), .data_out(tsv_up_out[11]));

TSV tsv_output_down11(.data_in(cbar_data_out[239]), .data_out(tsv_down_out[11]));

TSV tsv_input_up12(.data_in(tsv_up_in[12]), .data_out(U_data_in[12]));

TSV tsv_input_down12(.data_in(tsv_down_in[12]), .data_out(D_data_in[12]));

TSV tsv_output_up12(.data_in(cbar_data_out[202]), .data_out(tsv_up_out[12]));

TSV tsv_output_down12(.data_in(cbar_data_out[240]), .data_out(tsv_down_out[12]));

TSV tsv_input_up13(.data_in(tsv_up_in[13]), .data_out(U_data_in[13]));

TSV tsv_input_down13(.data_in(tsv_down_in[13]), .data_out(D_data_in[13]));

TSV tsv_output_up13(.data_in(cbar_data_out[203]), .data_out(tsv_up_out[13]));

TSV tsv_output_down13(.data_in(cbar_data_out[241]), .data_out(tsv_down_out[13]));

TSV tsv_input_up14(.data_in(tsv_up_in[14]), .data_out(U_data_in[14]));

TSV tsv_input_down14(.data_in(tsv_down_in[14]), .data_out(D_data_in[14]));

TSV tsv_output_up14(.data_in(cbar_data_out[204]), .data_out(tsv_up_out[14]));

TSV tsv_output_down14(.data_in(cbar_data_out[242]), .data_out(tsv_down_out[14]));

TSV tsv_input_up15(.data_in(tsv_up_in[15]), .data_out(U_data_in[15]));

TSV tsv_input_down15(.data_in(tsv_down_in[15]), .data_out(D_data_in[15]));

TSV tsv_output_up15(.data_in(cbar_data_out[205]), .data_out(tsv_up_out[15]));

TSV tsv_output_down15(.data_in(cbar_data_out[243]), .data_out(tsv_down_out[15]));

TSV tsv_input_up16(.data_in(tsv_up_in[16]), .data_out(U_data_in[16]));

TSV tsv_input_down16(.data_in(tsv_down_in[16]), .data_out(D_data_in[16]));

TSV tsv_output_up16(.data_in(cbar_data_out[206]), .data_out(tsv_up_out[16]));

TSV tsv_output_down16(.data_in(cbar_data_out[244]), .data_out(tsv_down_out[16]));

TSV tsv_input_up17(.data_in(tsv_up_in[17]), .data_out(U_data_in[17]));

TSV tsv_input_down17(.data_in(tsv_down_in[17]), .data_out(D_data_in[17]));

TSV tsv_output_up17(.data_in(cbar_data_out[207]), .data_out(tsv_up_out[17]));

TSV tsv_output_down17(.data_in(cbar_data_out[245]), .data_out(tsv_down_out[17]));

TSV tsv_input_up18(.data_in(tsv_up_in[18]), .data_out(U_data_in[18]));

TSV tsv_input_down18(.data_in(tsv_down_in[18]), .data_out(D_data_in[18]));

TSV tsv_output_up18(.data_in(cbar_data_out[208]), .data_out(tsv_up_out[18]));

TSV tsv_output_down18(.data_in(cbar_data_out[246]), .data_out(tsv_down_out[18]));

TSV tsv_input_up19(.data_in(tsv_up_in[19]), .data_out(U_data_in[19]));

115

Page 116: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

TSV tsv_input_down19(.data_in(tsv_down_in[19]), .data_out(D_data_in[19]));

TSV tsv_output_up19(.data_in(cbar_data_out[209]), .data_out(tsv_up_out[19]));

TSV tsv_output_down19(.data_in(cbar_data_out[247]), .data_out(tsv_down_out[19]));

TSV tsv_input_up20(.data_in(tsv_up_in[20]), .data_out(U_data_in[20]));

TSV tsv_input_down20(.data_in(tsv_down_in[20]), .data_out(D_data_in[20]));

TSV tsv_output_up20(.data_in(cbar_data_out[210]), .data_out(tsv_up_out[20]));

TSV tsv_output_down20(.data_in(cbar_data_out[248]), .data_out(tsv_down_out[20]));

TSV tsv_input_up21(.data_in(tsv_up_in[21]), .data_out(U_data_in[21]));

TSV tsv_input_down21(.data_in(tsv_down_in[21]), .data_out(D_data_in[21]));

TSV tsv_output_up21(.data_in(cbar_data_out[211]), .data_out(tsv_up_out[21]));

TSV tsv_output_down21(.data_in(cbar_data_out[249]), .data_out(tsv_down_out[21]));

TSV tsv_input_up22(.data_in(tsv_up_in[22]), .data_out(U_data_in[22]));

TSV tsv_input_down22(.data_in(tsv_down_in[22]), .data_out(D_data_in[22]));

TSV tsv_output_up22(.data_in(cbar_data_out[212]), .data_out(tsv_up_out[22]));

TSV tsv_output_down22(.data_in(cbar_data_out[250]), .data_out(tsv_down_out[22]));

TSV tsv_input_up23(.data_in(tsv_up_in[23]), .data_out(U_data_in[23]));

TSV tsv_input_down23(.data_in(tsv_down_in[23]), .data_out(D_data_in[23]));

TSV tsv_output_up23(.data_in(cbar_data_out[213]), .data_out(tsv_up_out[23]));

TSV tsv_output_down23(.data_in(cbar_data_out[251]), .data_out(tsv_down_out[23]));

TSV tsv_input_up24(.data_in(tsv_up_in[24]), .data_out(U_data_in[24]));

TSV tsv_input_down24(.data_in(tsv_down_in[24]), .data_out(D_data_in[24]));

TSV tsv_output_up24(.data_in(cbar_data_out[214]), .data_out(tsv_up_out[24]));

TSV tsv_output_down24(.data_in(cbar_data_out[252]), .data_out(tsv_down_out[24]));

TSV tsv_input_up25(.data_in(tsv_up_in[25]), .data_out(U_data_in[25]));

TSV tsv_input_down25(.data_in(tsv_down_in[25]), .data_out(D_data_in[25]));

TSV tsv_output_up25(.data_in(cbar_data_out[215]), .data_out(tsv_up_out[25]));

TSV tsv_output_down25(.data_in(cbar_data_out[253]), .data_out(tsv_down_out[25]));

TSV tsv_input_up26(.data_in(tsv_up_in[26]), .data_out(U_data_in[26]));

TSV tsv_input_down26(.data_in(tsv_down_in[26]), .data_out(D_data_in[26]));

TSV tsv_output_up26(.data_in(cbar_data_out[216]), .data_out(tsv_up_out[26]));

TSV tsv_output_down26(.data_in(cbar_data_out[254]), .data_out(tsv_down_out[26]));

TSV tsv_input_up27(.data_in(tsv_up_in[27]), .data_out(U_data_in[27]));

TSV tsv_input_down27(.data_in(tsv_down_in[27]), .data_out(D_data_in[27]));

TSV tsv_output_up27(.data_in(cbar_data_out[217]), .data_out(tsv_up_out[27]));

TSV tsv_output_down27(.data_in(cbar_data_out[255]), .data_out(tsv_down_out[27]));

TSV tsv_input_up28(.data_in(tsv_up_in[28]), .data_out(U_data_in[28]));

TSV tsv_input_down28(.data_in(tsv_down_in[28]), .data_out(D_data_in[28]));

TSV tsv_output_up28(.data_in(cbar_data_out[218]), .data_out(tsv_up_out[28]));

TSV tsv_output_down28(.data_in(cbar_data_out[256]), .data_out(tsv_down_out[28]));

TSV tsv_input_up29(.data_in(tsv_up_in[29]), .data_out(U_data_in[29]));

TSV tsv_input_down29(.data_in(tsv_down_in[29]), .data_out(D_data_in[29]));

TSV tsv_output_up29(.data_in(cbar_data_out[219]), .data_out(tsv_up_out[29]));

TSV tsv_output_down29(.data_in(cbar_data_out[257]), .data_out(tsv_down_out[29]));

TSV tsv_input_up30(.data_in(tsv_up_in[30]), .data_out(U_data_in[30]));

TSV tsv_input_down30(.data_in(tsv_down_in[30]), .data_out(D_data_in[30]));

TSV tsv_output_up30(.data_in(cbar_data_out[220]), .data_out(tsv_up_out[30]));

TSV tsv_output_down30(.data_in(cbar_data_out[258]), .data_out(tsv_down_out[30]));

TSV tsv_input_up31(.data_in(tsv_up_in[31]), .data_out(U_data_in[31]));

TSV tsv_input_down31(.data_in(tsv_down_in[31]), .data_out(D_data_in[31]));

TSV tsv_output_up31(.data_in(cbar_data_out[221]), .data_out(tsv_up_out[31]));

116

Page 117: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

TSV tsv_output_down31(.data_in(cbar_data_out[259]), .data_out(tsv_down_out[31]));

TSV tsv_input_up32(.data_in(tsv_up_in[32]), .data_out(U_data_in[32]));

TSV tsv_input_down32(.data_in(tsv_down_in[32]), .data_out(D_data_in[32]));

TSV tsv_output_up32(.data_in(cbar_data_out[222]), .data_out(tsv_up_out[32]));

TSV tsv_output_down32(.data_in(cbar_data_out[260]), .data_out(tsv_down_out[32]));

TSV tsv_input_up33(.data_in(tsv_up_in[33]), .data_out(U_data_in[33]));

TSV tsv_input_down33(.data_in(tsv_down_in[33]), .data_out(D_data_in[33]));

TSV tsv_output_up33(.data_in(cbar_data_out[223]), .data_out(tsv_up_out[33]));

TSV tsv_output_down33(.data_in(cbar_data_out[261]), .data_out(tsv_down_out[33]));

TSV tsv_input_up34(.data_in(tsv_up_in[34]), .data_out(U_data_in[34]));

TSV tsv_input_down34(.data_in(tsv_down_in[34]), .data_out(D_data_in[34]));

TSV tsv_output_up34(.data_in(cbar_data_out[224]), .data_out(tsv_up_out[34]));

TSV tsv_output_down34(.data_in(cbar_data_out[262]), .data_out(tsv_down_out[34]));

TSV tsv_input_up35(.data_in(tsv_up_in[35]), .data_out(U_data_in[35]));

TSV tsv_input_down35(.data_in(tsv_down_in[35]), .data_out(D_data_in[35]));

TSV tsv_output_up35(.data_in(cbar_data_out[225]), .data_out(tsv_up_out[35]));

TSV tsv_output_down35(.data_in(cbar_data_out[263]), .data_out(tsv_down_out[35]));

TSV tsv_input_up36(.data_in(tsv_up_in[36]), .data_out(U_data_in[36]));

TSV tsv_input_down36(.data_in(tsv_down_in[36]), .data_out(D_data_in[36]));

TSV tsv_output_up36(.data_in(cbar_data_out[226]), .data_out(tsv_up_out[36]));

TSV tsv_output_down36(.data_in(cbar_data_out[264]), .data_out(tsv_down_out[36]));

TSV tsv_input_up37(.data_in(tsv_up_in[37]), .data_out(U_data_in[37]));

TSV tsv_input_down37(.data_in(tsv_down_in[37]), .data_out(D_data_in[37]));

TSV tsv_output_up37(.data_in(cbar_data_out[227]), .data_out(tsv_up_out[37]));

TSV tsv_output_down37(.data_in(cbar_data_out[265]), .data_out(tsv_down_out[37]));

//stop_signal

TSV tsv_stop_input_up(.data_in(tsv_stop_up_in), .data_out(U_stop_in));

TSV tsv_stop_input_down(.data_in(tsv_stop_down_in), .data_out(D_stop_in));

TSV tsv_stop_output_up(.data_in(U_stop_out), .data_out(tsv_stop_up_out));

TSV tsv_stop_output_down(.data_in(D_stop_out), .data_out(tsv_stop_down_out));

assign data_out = cbar_data_out[189:0];

//data

assign data_sent[0] = |data_out[7:1];

assign tail_sent[0] = data_out[0];

assign data_sent[1] = |data_out[45:39];

assign tail_sent[1] = data_out[38];

assign data_sent[2] = |data_out[83:77];

assign tail_sent[2] = data_out[76];

assign data_sent[3] = |data_out[121:115];

assign tail_sent[3] = data_out[114];

assign data_sent[4] = |data_out[159:153];

assign tail_sent[4] = data_out[152];

//TSV

assign data_sent[5] = |tsv_up_out[7:1];

assign tail_sent[5] = tsv_up_out[0];

assign data_sent[6] = |tsv_down_out[7:1];

assign tail_sent[6] = tsv_down_out[0];

assign alloc_stop_in = {D_stop_in, U_stop_in, stop_in};

117

Page 118: Architecture and Design of an ... - web-ext.u-aizu.ac.jpweb-ext.u-aizu.ac.jp/~benab/publications/treport/YukiTanaka-TR2015.pdf · scheduler を含んでいる)に加えて、次の隣接ノードへのフリットの転送する

February 27, 2015 Parallel Architecture Group Yuki Tanaka TR2011

sw_alloc #(7) sw_allc(.clk(clk), .reset(reset),

.sw_req(sw_req), .stop_in(alloc_stop_in), .data_sent(data_sent), .tail_sent(tail_sent),

.port_req(port_req), .grant_out(sw_grant), .sw_cntrl(sw_cntrl));

crossbar #(7, 7, 38) cbar(.clk(clk), .reset(reset),

.cntrl(sw_cntrl),

.data_in(cbar_data_in),

.data_out(cbar_data_out));

endmodule // router

118