• 検索結果がありません。

Design at a higher level

N/A
N/A
Protected

Academic year: 2021

シェア "Design at a higher level"

Copied!
33
0
0

読み込み中.... (全文を見る)

全文

(1)
(2)

目次

• Meropa社 会社概要

• 今日の設計手法

• ビヘイビアとは

• FASTによるデザインフローと特徴

• まとめ

(3)

ミッション

ビヘイビアからの最適な

デザインの生成

(4)

• ‘97設立

• ‘98ベンチャー企業による出資

• 幅広い経験を持つ開発スタッフ(

10名)

– 半数が博士号を取得

– HLS, Mapping, Timing, HDL, GUI, Chip design

– Cadence, Synopsys, Sente, Triquest

– Ericsson, LSI Logic

(5)

設計手法の傾向

5 k 3 0 k 1 0 0 k 5 0 0 k 7 0 ’s 8 0 ’s 9 0 ’s 0 0 ’s g a t e s s c h e m a t i c R T L B L y e a r A p p l i c a b i l i t y o f d e s i g n m e t h o d o l o g i e s g i v e n c o n s t a n t s i z e o f d e s i g n t e a m s a n d s c h e d u l e s

1980年代からのRTLによる設計手法は、現代のデザインでも

適用できるか?

RTLによって複雑なデザインを設計するには、詳細すぎ、かつ

デバッグも困難

(6)

設計手法の傾向

1980年代

1990年代

チップサイズ/ブロックサイズ 30-100K/5-10K 250-750K/50+K 設計資産の再利用性 限定された場合のみ 必須 タイミング/面積/パワー のための設計変更 少 多 RAMの使用 少 多

(7)

今日のRTL設計における問題点

• 設計の初期段階でアーキテクチャが決定付けら

れてしまう

• FSMの設計が複雑かつ困難

• 設計変更が困難

• RTLの機能ブロックに制約が多い

– 合成をターゲットとした場合に表現が詳細すぎる

– 多くのサブブロックを生成する必要がある

(8)

今日のRTL設計における問題点

• タイミング上の問題

– 設計の後工程で問題が発覚することが多い

– クリティカルパス部分の特定が困難

– 更にその部分の高速化が困難

• 最終的なデザイン仕様は再三の設計変更後に決まる

– 何度もRTLをデザインしなおす必要がある

• シミュレーション・

合成にかかる時間が膨大

(9)

FAST™

=

Flexible Architecture Synthesis Technology

Speed

仕様からゲートレベルデザインを高速に生成(RTL設計の2∼5倍)

Predictability

デザイン中の問題点を設計工程の早期に発見

Speed

&

Predictability

(10)

主な特徴

現在の設計環境に適応

シンプルなコーディングスタイル、既存のテストベンチが使用可能

最適なテクノロジマッピングとデータパスの最適化

コントロールロジック・

データパスを高速に最適化

高性能なパフォーマンスを持つデザインを出力(

エリア・

スピード)

大規模なデザインに対して、ダイナミックなタイミング解析が

可能

設計の後工程にタイミングの問題を持ち越さない

(11)

主な特徴

高性能な最適化アルゴリズム

高品質なデザインを短期間で生成

ユーザによる幅広い制約の入力と、パフォーマンス見積り

(12)

FASTによる効果 (

Fast and Predictable

)

• 多機能ブロックを少ない記述量で設計可能

• 高品質なデザインを生成

• ゲート生成までの設計期間短縮

• クリティカルパスの早期発見

• 既存のテストベンチが使用可能

(13)

ビヘイビアとは?

• 機能のみを定義

• I/Oプロトコルを定義

• FSMの定義は不要

• レジスタの定義は不要

• インプリメントに必要な詳細な情報も不要

(14)

記述例

Wait until start_in

if valid(addr)

busy

save 2-1/2 words into memory

else

wrong addr

wait until ready_in

not busy

(15)

RTL

Case (state) s0 : if (valid(addr)) mem1; else ns = s0; s1 : mem2; ns = s2; s2 : if (ready_in&start_in&valid) mem1; ns = s1; else if (!ready_in) ns = s4; else if (ready_in&start&!valid) ns = s3; else ns = s0; s3 : ……... s1 s0 s4 s2 s3

valid/mem1

mem2

!valid/error

ready_in&start_in&valid

!ready_in

!ready_in

ready_in

&start_in

&valid/

mem1

valid/

mem1

(16)

FAST™

forever begin : infin

while (!start_in) `clk //s0

if (valid(addr)) begin

start <= 0;

storage[I] = data[31:0];

storage[I+1] = data[63:32];

I = I + 2;

`clk //s1 `clk //s2

end else begin

error <= 1;

`clk //s3

end

while (!ready_in) ‘clk //s4

start <= 1;

end

s1 s0 s4 s2 s3

valid/mem1

mem2

!valid/error

ready_in&start_in&valid

!ready_in

!ready_in

ready_in

&start_in

&valid/

mem1

valid/

mem1

(17)

ビヘイビア記述の効果?

• RTLに比べて1/10の記述量

• 機能とインターフェースのみを記述

• シンプル、少記述量、解析が容易

• デバッグ、設計変更が容易

• RTLに比べて20倍のシミュレーション速度

Speed

&

Predictability

(18)

FASTデザインフロー

architectures area clockperiod Throughput / latency Alternative FAST Layout Behavioral Verilog latency, area, RAM

throughput, clock logic synthesis Gate-level Verilog RTL Verilog area, clockperiod Gate-level Verilog simulation lbr

(19)

RTL VS ビヘイビア

FASTによるビヘイビア設計

RTLによる設計

機能記述 設計者 設計者 I/Oの動作記述 設計者 設計者 レジスタの定義 自動・タイミングドリブン パフォーマンス見積り

FSM

自動・テクノロジライブラリ毎に実行 推測値に基づく 自動的に生成 設計者による手設計 マイクロ アーキテクチャ 設計者により論理を考慮しながら 自動・設計者のガイドに基づく 設計者による手設計

(20)

ビヘイビアからRTLへの合成

• 従来の、動作記述からのRTL生成の工程を自動化

• 2つのメインステップ:

スケジューリング/アロケーション

• スケジューリング

– 機能をゲートへマッピング

– タイミング解析

– クロックサイクルとクロックピリオドを考慮

– 論理をクロックサイクル毎に割り付け

• アロケーション

– 信号値をレジスタに割り付け

– ハードウェアリソースの共有化

• レジスタ、ファンクション、演算子

– FSMの生成

(21)

Meropa

の優位性

既存ツールの

記述範囲

FASTの記述

範囲

FSM

マルチプレクサ ランダムロジック データパス

既存ツールの

タイミング考

慮範囲

FASTのタイミ

ング考慮範囲

コーディング上の優位性

タイミングに関する優位性

(22)

FASTの特徴

• 少ない制約上でのコーディング

• ツールの制限に基づくコーディング上の制約は

皆無

– 設計者が記述したいスタイルでのコーディングが可能

– 検証時に必要なクロックエッジのみを定義可能

– 唯一の制約は、合成をするにあたってのクロックサイ

クルやクロックピリオドの不足に基づくもののみ

(23)

FASTの特徴

• ソースコード内の全ての論理のタイミングを考慮

– FSM、マルチプレクサ、データパス、ランダムロジック

• インクリメンタルでインタラクティブなタイミング解析

• テクノロジーマッピング

– 高速・

大規模対応

• ワイヤモジュール等の使用が可能

(24)

高精度なタイミング解析

while (!crc(bitsi,compute_crc)) begin : check @(posedge clk or negedge rst);

if (!rsthi) disable always_block; not_rdy <= 1; attempts = attempts + 1; end; if (attempts <= upper_limit) newsynd = crc(bitsi,compute_new_synd); else cumm_failures = cumm_failures + 1; `clk cumm_res <= cumm_failures; + <=

高速なクロックを設定した場合は、マルチ

プレクサの数を最小限にとどめるが、多くの

リソースを使用する必要がある。

7 mux crc 1.5 9

クリティカルパス=10.5ns

クロックサイクルを13nsに 設定した場合 crc +

(25)

エリアとスピードのトレードオフ

while (!crc(bitsi,compute_crc)) begin : check @(posedge clk or negedge rst);

if (!rsthi) disable always_block; not_rdy <= 1; attempts = attempts + 1; end; if (attempts <= upper_limit) newsynd = crc(bitsi,compute_new_synd); else cumm_failures = cumm_failures + 1; `clk cumm_res <= cumm_failures; + mux mux mux <= mux crc

低速なクロックの場合は、マルチプレクサを

使用してより多くのリソースシェアリングを行い

エリアの最小化を計る

7 9 1.5

クリティカルパス=17.5ns

クロックサイクルを20nsに 設定した場合

(26)

FAST

による設計期間の短縮

• 高速なRTL出力

• クリティカルパスの早期発見

• 迅速な最適化RTLの追求

(27)

データパスについて

• 高速なコンポーネントを用意

– adder, alu, multiplier, subtractor

– multiplexers

• 面積とスピードのトレードオフが可能

• 機能のマージが自動的に実行可能

– 演算子を展開  */+ または +/+, +/-...

• 自動的にパイプライン処理したいコンポーネントを指定可能

• コンポーネントのタイミング見積りやインプリメンテーション

はテクノロジーライブラリに依存

• ワイヤロードモデルや動作環境の情報も考慮

(28)

テクノロジーマッピング

• 革新的なマッピングエンジン

– クリティカルパス最適化の追求

– 高速に高品質なデザインを生成

– 大規模デザイン対応

• 多機能なスケジューリングエンジン

– 正確なタイミング解析

(29)

FASTからの出力コード

• Verilogを出力

• 5種類の出力形態(全てVerilog)

• 1つのビヘイビアコードから下記の形態へ

の出力を選択可能

– スケジュールされたビヘイビア

– 高抽象度RTL

– 構造化RTL(

論理合成用)

– ゲートレベル

• ネットリストレベル

• プリミティブレベル

Speed

&

Predictability

(30)

FASTの動作概念

• ユーザー主導によって最適なデザインの

生成(

ユーザーが最適化の項目を指示)

• アーキテクチャを追求するためのユーザー

によるコントロールが可能

– 演算子の連結(

バインディング)

– リソースシェアリングのコントロール

– その他のディレクティブ

Speed

&

Predictability

(31)

サンプル

always begin : rst_loop reg [7:0] va, vb, vc, vd; ro <= 0; io <= 0;

`clk

forever begin : inifin va = ai; `clk vb = ai; `clk vc = ai; `clk vd = ai;

for (i-0; i <= ltncy; i=i+1): begin scale ‘clk end //for ro <= va*vc - vb*vd; io <= va*vd + vb*vc; `clk end//infin end//always

0

2*,

1+/-1

1*, 1+, 1 ALU

2

1*,1+/-3

1*,1+/-4

1 ALU

CLKサイクル数

* including script creation

1 2 3 4 250 500 750 面積 CLKサイクル コンポーネント

(32)

インプリメンテーション

always begin : rst_loop reg [7:0] va, vb, vc, vd; reg [5:0] TBL [127:0] ro <= 0; io <= 0; `clk

forever begin : inifin while (!start)

`clk

if (valid_lkp) va1 = TBL[ptr1]; val2 = TBL[ptr2];

incs = val1[8:3] - val2[8:3] if (incs == 1)

for (I=0;I<=7;I=I+1) begin do <= main[val1 + I]; end end else… ... vc; `clk end//infin end//always mem1 mem2 sub1 mem3 0 1 2 3 mem1 mem2 sub1 mem3 0 1 2 3 mem1 sub1 mem3 0 1 2 3

FASTによる3種類のインプリメンテーション結果を自動生成

1 port RAM

2 port RAM

mem2

2 port RAM

combinational out

Speed

&

Predictability

(33)

まとめ

– フレキシブルで簡潔なコーディングスタイル

– クリティカルパス対策に有用な高精度タイミング見積り

機能

– 高速なテクノロジマッピングエンジン

– ユーザーによるパフォーマンス追求型スケジューリン

グ・

アロケーションアルゴリズム

– パフォーマンス重視のFSMを自動生成

– 解読しやすいRTLの生成、論理合成しやすいRTLの

生成

参照

関連したドキュメント