starc rtl設計スタイルガイドによるverilog hdl並列記述の補強

Post on 26-May-2015

1.937 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

並列/並行基礎勉強会2013/3/23 http://connpass.com/event/1630/ @kaizen_nagoya

TRANSCRIPT

STARC RTL 設計スタイルガイドによる Verilog HDL 並列記述の補強小川清 @kazizen_nagoya

日本 OSS 奨励賞 2012 御礼

特定非営利法人 TOPPERS プロジェクト

TOPPERS プロジェクトは OSS の組み込みソフトウエアを開発する産学 官連携のプロジェクトである。 TOPPERS プロジェクトの成果である組み込みシステム向けの各種リアルタイム OS やミドルウエア、開発 支援ツールは、自動車の制御ユニット、ロケットの制御ユニット、工作機械、プリンタ、電子楽器、携帯電話機など多岐にわたって活用されている。

各種勉強会、普及に貢献いただいた方々に感謝 

目次1. 論理演算が論理的にならない

2. Verilog HDL による実演

3. Verilog HDL の特徴

4. RTL 設計スタイルガイド

5. 並列処理に関連する規則など

発表の目標1. 物理現象に目を向けてもらう

2. 論理回路設計に目を向けてもらう

3. RTL 設計スタイルガイドを役立てる

4. SWEST, TOPPERS 開発者会議などの合宿に誘う

目次1. 論理演算が論理的にならない

論理演算は論理的か?Verilog HDL で書くと

2. Verilog HDL による実演

3. Verilog HDL の特徴

4. RTL 設計スタイルガイドの概要

5. 並列処理に関連する規則

論理演算は論理的か?

C = A && B;

A が 0 , 1

B が  1, 0

C は?

論理演算の落とし穴は何?

D = A || B;

A が 0 , 1

B が  1, 0

D は?

Verilog HDL で書くと

assign c= a && b;

assign d=a || b;

assign は配線(結線)

動作する記述(全体)

module rao(in_a, in_b, out_c, out_d);

input in_a, in_b;

output out_c, out_d;

assign out_c=in_a && in_b;

assign out_d=in_a || in_b;

endmodule

試験記述always @(posedge clk_2) begin

in_a = clk_1;

end

always @(negedge clk_2) begin

in_b = ~clk_1;

end

Always 文は常時実行。並列実行。

ここまでの Verilog HDL

assign 文と always 文を使った。

assign 文は結線 ( 代入ではない。相手がレジスタだと代入)。2 つ以上の assign 文は直列に繋がっていない限り並列実行。

always 文は常時実行している。 2 つ以上の always 文は並列実行している。

in_a=clk_1, in_b=~clk なので反対の値になる。

結果を予測してください。C = A && B; D = A || B;

A が 0 , 1 、 B が  1, 0

結果

目次1. 論理演算が論理的にならない

2. Verilog HDL による実演Xilinx ISE Webpack( 無償版 )

論理式が論理的にならない理由

3. Verilog HDL の特徴

4. RTL 設計スタイルガイドの概

5. 並列処理に関連する規則

論理式が論理的にならない理由空間

配線が長いと遅延に差ができる。空間が時間に影響を及ぼす

同時性/時間同時に実行しないと、異なる値になる論理演算がある同時に実行できない理由になにがあるか

遅延立ち上がり処理、立ち下がり処理ジッタ(時間的ゆらぎ)

電圧の変動、 , 周波数の変動、高調波固着・一時的断線・一時的開放熱,振動

目次1. 論理演算が論理的にならない

2. Verilog HDL による実演

3. Verilog HDL の特徴HDL: Hardware Description Language

逐次処理と並列処理危険 (hazard) 対策

4. RTL 設計スタイルガイドの概要

5. 並列処理に関連する規則

HDL(hardware Description Language)

設計自動化 (Design automation)/ ハードウェア記述言語 : IEEE, 振る舞い言語 (Behavioural languages):IEC 国際規格

VHDL:VHSIC Hardware Description Language(VHSIC: Very High Speed Integrated Circuits)

Verilog-HDL

System Verilog

System C(C++ 風の記述)

関連言語の繋がり

Pascal -> Modula-2 細字プログラミング、太字 HDL

   -> Ada   -> VHDL

   ->VerilogHDL-> SystemVerilog

  -> System C

        ->C#

  -> C   ->C++    ->JAVA20130227 (c) kaizen@wh.commufa.jp 1

7

HDL のソフトウェア側面試験台 (test bench) は模擬試験 (simulation) 用で、ハードウェアの論理回路は形成しない

コンピュータ上のソフトウェア

ハードウェア(論理回路)がなくても実験できる

Verilog HDL は C 風の記述ができる。

論理回路で並列処理を形成するところは並列処理をしている。

Verilog の function 文は函数

ブロッキング代入(逐次処理)とノンブロッキング代入(並列処理)

ブロッキング代入 ノンブロッキング代入

記述例

特徴

代入処理が終わるまで次の処理を止める(blocking, 逐次処理)

右辺の処理を終了してから一斉に代入(並列処理)

用途

組み合わせ回路 順序回路

always@(clk) begin a = b ; c = a ;end

always@(clk) begin a <= b ; c <= a ;end

20130214 (c) watabe kinji, nagoya.kaizen@gmail.com 19

ブロッキング代入とノンブロッキング代入

reg a=1;reg b=2;reg c=0;always@(clk) begin a = b ; c = a ; b = c;end実行後b:2a:2c:2

reg a=1;reg b=2;reg c=0;always@(clk) begin a <= b ; c <= a ; b <= c;end実行後b:0a:2c:1

どちらが生成回路?

生成回路の特徴ブロッキング(順次)代入

順次代入した計算結果の回路を生成

計算途中を保持しない

順次代入だから記憶が沢山いるような気になるかも。

ノンブロッキング(並列)代入

並列代入する計算を保持できる回路を生成

計算途中の値を取り出せる

並列代入だから記憶が節約できるような気になるかも

Verilog HDL における並列処理

1. 複数の assign 文(回路)

2. 複数の always 文

2. 複数の <=(non blocking) 文

3. 複数の initial 文 ( 模擬試験)

危険 (hazard)

Out = (A and B) or (not B and C)

B と NotB が異なる遅延になると

Out = (A and B) or (not B and C) or (A and C)

目次1. 論理演算が論理的にならない

2. Verilog HDL による実演

3. Verilog HDL の特徴

4. RTL 設計スタイルガイド概要2011年版の改訂

5. 並列処理に関連する規則など

(c) kaizen@wh.commufa.jp26

RTL 設計スタイルガイド言語の部分集合を定義し、 HDL の曖昧さを排除 ( 時間的にも)

Verilog-HDL は特に。

ASIC 向けのガイドが基本。Verilog-HDL では , 第二版で FPGA 向けの節を追加。Verilog-HDL の第二版は本では日本語。CSVなど古典的ソフトでの記述。定量的な記述は当時の制約の影響。FPGAの場合の詳細が未整備。

Xilinx, Altera のガイドを参考に対応付けるとよい。

右の 2011 年版から System Verilog の記述を追加。第二版に比べてアサーションベース検証、アサーション記述テクニック、機能カバレッジを追加規則の追加削除を実施

規則を守ることよりも、守らないときの理由が大事(規則を守るよりも価値があることがあるかも)

2011 年版で時間に関する規則の優先度を見直し20130227

(c) kaizen@wh.commufa.jp27

スタイルガイドの章構成1 章 基本設計制約

命名規則 , 設計スタイル , クロック , (非)同期設計 , 階層設計

設計を開始時に考慮する設計制約2 章  RTL 記述テクニック

組合せ回路 , 順序回路の記述スタイ always 文 ,function 文 ,if 文 ,case 文

3 章  RTL 設計手法 分割設計 , 機能ライブラリ , 設計資産のパラメータ化、テス

ト容易化設計、低消費電力設計、設計データの管理4 章 検証のテクニック

テストベンチのパラメータ化、タスクの使用、検証の進め方

20130227

(c) kaizen@wh.commufa.jp28

次頁以降の検討成果記述汎例

<1>,<2>,<3>,<4> が教育順序。

<青文字> RTL 設計スタイルガイドで省略している注記

< @kaizen_nagoya による補足>

<赤茶字>初学者のうちから習慣付けするとよい項目

<橙字>並列、並行に関連する事項

20130227

(c) kaizen@wh.commufa.jp29

  1 章 基本設計制約 ( 静的規則 ) 1.1 命名規則 <1>

<プログラムを書く際に、名前は必ず使うため>( 動的規則 ) <2>

1.2 同期設計1.3 初期リセット1.4 クロック1.5 非同期設計

( 構造設計 ) <4>1.6 階層設計1.7 FPGA

20130227

(c) kaizen@wh.commufa.jp30

2 章  RTL 記述技法 (always 文 )      <2>

  2. 1 組み合わせ回路 2. 2 組み合わせ回路の always 文記述2. 3 FF の推定2. 4 ラッチ記述2. 5 トライステート・バッファ2.6 回路構造を意識した always 文記述

( 制御文と演算 )       <2>

2. 7 if 文記述 2. 8 case 文記述 2. 9 for 文記述 2.10 演算子と代入文の記述 2.11 ステートマシン記述         <3>

(System Verilog編 ) < 2011 年版より>          <4> 2.12 データタイプの拡張 2.13 新しい always 文 2.14 if 文と case 文の拡張 2.15 モジュール、ファンクション宣言と接続 2.16 インターフェース 20130227

(c) kaizen@wh.commufa.jp31

3 章 RTL 設計手法( 機能ライブラリ ) <3>

3.1 機能ライブラリの作成 3.2 機能ライブラリの使用

3.3 試験容易化設計 (DFT) <4>

3.4 低消費電力設計 <3>

3.5 ソースコード , 設計データの管理 <1>

<ソースコードを必ず扱うため>20130227

(c) kaizen@wh.commufa.jp32

4 章 検証技術(Verification Techniques )

(試験台 (test bench)) 4.1 試験台記述 <2>

4.2 手続記述 (Task description) <3>

4.3 検証の進め方 (Verification process ) <3>

4.4 仮説 (assertion based) 検証 <3>

4.5 仮説 (assertion) 記述テクニック (Ssystem Verilog Only) <4>

4.6 機能網羅 (coverage) <4>

4.7 ゲート水準模擬試験 (simulation) <4>

4.8 静的 (static)刻時 (timing)解析 <3> 20130227

目次1. 論理演算が論理的にならない

2. Verilog HDL による実演

3. Verilog HDL の特徴

4. RTL 設計スタイルガイド

5. 並列処理に関連する規則など優先順位逸脱の手続き

SWEST

合宿型の勉強会 swest.topper.jp開催日程: 2013年 8月 22 日 (木 )~23 日 (金 )

開催場所:下呂温泉 水明館(岐阜県下呂市)

RTL 設計スタイルガイドの役立つ規則の確認仕事で使いたい(使っている)規則を優先順位付け全体の意見を整理

(c) kaizen@wh.commufa.jp

優先順位上位 10

20130227 35

RTL1.2 同期設計

(c) kaizen@wh.commufa.jp20130227 36

(c) kaizen@wh.commufa.jp

RTL1.3  初期化リセット

20130227 37

RTL1.4.3  ゲーティッドクロックの使用は注意

(c) kaizen@wh.commufa.jp20130227 38Gated clock, clock gating: 時計開閉。省電力のために時間信号を開閉する。FPGA は組込みの省電力機構を用いるとよい

RTL1.5.1. 非同期クロック間の信号にはメタ・ステーブルを考慮

(c) kaizen@wh.commufa.jp20130227 39Meta stable:不安定平衡状態 (unstable equilibrium state) 。一定期間発振。 1 か 0 かに収束。収束時間データ無。

Meta Stable

「 RTL 設計スタイルガイド Verilog HDL」第二版 1-36

RTL2.1.2. function 文によって組み合わせ回路を定義

(c) kaizen@wh.commufa.jp20130227 41

RTL2.1.3 function 文では、引数やビット幅に対するチェックを入念にする

(c) kaizen@wh.commufa.jp20130227 42

RTL2.1.5. 条件演算( (A)?B:C )の使用は 1 回まで

(c) kaizen@wh.commufa.jp20130227 43

(c) kaizen@wh.commufa.jp

逸脱の手続きと事例

20130227 44

優先順位付けに基づいて規則を合意し対象外を決める

例:テストベンチでの習慣(逸脱文書は作る)Tb を名前の最初につける方法整数は 10 進数を標準にする場合に D をつけない

不足している規則を追加(分野固有の命名規則など)

できれば HAZOP など設計審査を経る

対象外にする方法は 3つ規則そのものを考慮せず検査もしない共通の逸脱文書を作るが、検査をして資料は残す共通の逸脱文書にはないが、必要な逸脱なので個別の文書化をする

(c) kaizen@wh.commufa.jp

逸脱の手続き例

20130227 45

(c) kaizen@wh.commufa.jp

事例

20130227 46

まとめ論理演算が論理的な結果を出すためには努力が必要

同時に起きることがずれたり、順番に起きることが同時に起きると、結果は不定の場合がある物理現象に着目しよう

VerilogHDL などの HDL で記述して実装して論理回路で並列処理している。

STARC RTL 設計スタイルガイドは並列処理など時間に起因する不具合を回避するのに役立つ

SWEST, TOPPERS 開発者会議で続きを

今後の課題状態遷移で設計すれば、C言語でも Verilog HDLでも実装できる。

Hazard分析は IEC HAZOP などの手法で洗い出す。

自作 CPU を HDL で ...

MISRA-C 2013

ISO/IEC 9899:1999 対応

空間方向に制約

RTS 設計スタイルガイドと合わせて勉強すると…

TOPPRERS 開発者会議TOPPERS 活用アイデア・アプリケーション開発コンテストオープンソースのキラーアプリを作りたい会員以外の応募可能賞金ありhttp://www.toppers.jp/contest.html

10月に静岡県西部で開催予定OS の並列・並行はこの合宿で

top related