目次
• Meropa社 会社概要
• 今日の設計手法
• ビヘイビアとは
• FASTによるデザインフローと特徴
• まとめ
ミッション
ビヘイビアからの最適な
デザインの生成
• ‘97設立
• ‘98ベンチャー企業による出資
• 幅広い経験を持つ開発スタッフ(
10名)
– 半数が博士号を取得
– HLS, Mapping, Timing, HDL, GUI, Chip design
– Cadence, Synopsys, Sente, Triquest
– Ericsson, LSI Logic
設計手法の傾向
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 s1980年代からのRTLによる設計手法は、現代のデザインでも
適用できるか?
RTLによって複雑なデザインを設計するには、詳細すぎ、かつ
デバッグも困難
設計手法の傾向
1980年代
1990年代
チップサイズ/ブロックサイズ 30-100K/5-10K 250-750K/50+K 設計資産の再利用性 限定された場合のみ 必須 タイミング/面積/パワー のための設計変更 少 多 RAMの使用 少 多今日のRTL設計における問題点
• 設計の初期段階でアーキテクチャが決定付けら
れてしまう
• FSMの設計が複雑かつ困難
• 設計変更が困難
• RTLの機能ブロックに制約が多い
– 合成をターゲットとした場合に表現が詳細すぎる
– 多くのサブブロックを生成する必要がある
今日のRTL設計における問題点
• タイミング上の問題
– 設計の後工程で問題が発覚することが多い
– クリティカルパス部分の特定が困難
– 更にその部分の高速化が困難
• 最終的なデザイン仕様は再三の設計変更後に決まる
– 何度もRTLをデザインしなおす必要がある
• シミュレーション・
合成にかかる時間が膨大
FAST™
=
Flexible Architecture Synthesis Technology
Speed
仕様からゲートレベルデザインを高速に生成(RTL設計の2∼5倍)
Predictability
デザイン中の問題点を設計工程の早期に発見
Speed
&
Predictability
主な特徴
現在の設計環境に適応
シンプルなコーディングスタイル、既存のテストベンチが使用可能
最適なテクノロジマッピングとデータパスの最適化
コントロールロジック・
データパスを高速に最適化
高性能なパフォーマンスを持つデザインを出力(
エリア・
スピード)
大規模なデザインに対して、ダイナミックなタイミング解析が
可能
設計の後工程にタイミングの問題を持ち越さない
主な特徴
高性能な最適化アルゴリズム
高品質なデザインを短期間で生成
ユーザによる幅広い制約の入力と、パフォーマンス見積り
FASTによる効果 (
Fast and Predictable
)
• 多機能ブロックを少ない記述量で設計可能
• 高品質なデザインを生成
• ゲート生成までの設計期間短縮
• クリティカルパスの早期発見
• 既存のテストベンチが使用可能
ビヘイビアとは?
• 機能のみを定義
• I/Oプロトコルを定義
• FSMの定義は不要
• レジスタの定義は不要
• インプリメントに必要な詳細な情報も不要
記述例
Wait until start_in
if valid(addr)
busy
save 2-1/2 words into memory
else
wrong addr
wait until ready_in
not busy
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 s3valid/mem1
mem2
!valid/error
ready_in&start_in&valid
!ready_in
!ready_in
ready_in
&start_in
&valid/
mem1
valid/
mem1
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 s3valid/mem1
mem2
!valid/error
ready_in&start_in&valid
!ready_in
!ready_in
ready_in
&start_in
&valid/
mem1
valid/
mem1
ビヘイビア記述の効果?
• RTLに比べて1/10の記述量
• 機能とインターフェースのみを記述
• シンプル、少記述量、解析が容易
• デバッグ、設計変更が容易
• RTLに比べて20倍のシミュレーション速度
Speed
&
Predictability
FASTデザインフロー
architectures area clockperiod Throughput / latency Alternative FAST Layout Behavioral Verilog latency, area, RAMthroughput, clock logic synthesis Gate-level Verilog RTL Verilog area, clockperiod Gate-level Verilog simulation lbr
RTL VS ビヘイビア
FASTによるビヘイビア設計
RTLによる設計
機能記述 設計者 設計者 I/Oの動作記述 設計者 設計者 レジスタの定義 自動・タイミングドリブン パフォーマンス見積りFSM
自動・テクノロジライブラリ毎に実行 推測値に基づく 自動的に生成 設計者による手設計 マイクロ アーキテクチャ 設計者により論理を考慮しながら 自動・設計者のガイドに基づく 設計者による手設計ビヘイビアからRTLへの合成
• 従来の、動作記述からのRTL生成の工程を自動化
• 2つのメインステップ:
スケジューリング/アロケーション
• スケジューリング
– 機能をゲートへマッピング
– タイミング解析
– クロックサイクルとクロックピリオドを考慮
– 論理をクロックサイクル毎に割り付け
• アロケーション
– 信号値をレジスタに割り付け
– ハードウェアリソースの共有化
• レジスタ、ファンクション、演算子
– FSMの生成
Meropa
の優位性
既存ツールの
記述範囲
FASTの記述
範囲
FSM
マルチプレクサ ランダムロジック データパス既存ツールの
タイミング考
慮範囲
FASTのタイミ
ング考慮範囲
コーディング上の優位性
タイミングに関する優位性
FASTの特徴
• 少ない制約上でのコーディング
• ツールの制限に基づくコーディング上の制約は
皆無
– 設計者が記述したいスタイルでのコーディングが可能
– 検証時に必要なクロックエッジのみを定義可能
– 唯一の制約は、合成をするにあたってのクロックサイ
クルやクロックピリオドの不足に基づくもののみ
FASTの特徴
• ソースコード内の全ての論理のタイミングを考慮
– FSM、マルチプレクサ、データパス、ランダムロジック
• インクリメンタルでインタラクティブなタイミング解析
• テクノロジーマッピング
– 高速・
大規模対応
• ワイヤモジュール等の使用が可能
高精度なタイミング解析
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 +エリアとスピードのトレードオフ
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に 設定した場合FAST
による設計期間の短縮
• 高速なRTL出力
• クリティカルパスの早期発見
• 迅速な最適化RTLの追求
データパスについて
• 高速なコンポーネントを用意
– adder, alu, multiplier, subtractor
– multiplexers
• 面積とスピードのトレードオフが可能
• 機能のマージが自動的に実行可能
– 演算子を展開 */+ または +/+, +/-...
• 自動的にパイプライン処理したいコンポーネントを指定可能
• コンポーネントのタイミング見積りやインプリメンテーション
はテクノロジーライブラリに依存
• ワイヤロードモデルや動作環境の情報も考慮
テクノロジーマッピング
• 革新的なマッピングエンジン
– クリティカルパス最適化の追求
– 高速に高品質なデザインを生成
– 大規模デザイン対応
• 多機能なスケジューリングエンジン
– 正確なタイミング解析
FASTからの出力コード
• Verilogを出力
• 5種類の出力形態(全てVerilog)
• 1つのビヘイビアコードから下記の形態へ
の出力を選択可能
– スケジュールされたビヘイビア
– 高抽象度RTL
– 構造化RTL(
論理合成用)
– ゲートレベル
• ネットリストレベル
• プリミティブレベル
Speed
&
Predictability
FASTの動作概念
• ユーザー主導によって最適なデザインの
生成(
ユーザーが最適化の項目を指示)
• アーキテクチャを追求するためのユーザー
によるコントロールが可能
– 演算子の連結(
バインディング)
– リソースシェアリングのコントロール
– その他のディレクティブ
Speed
&
Predictability
サンプル
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サイクル コンポーネント
インプリメンテーション
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