starc rtl設計スタイルガイドによるverilog hdl並列記述の補強
DESCRIPTION
並列/並行基礎勉強会2013/3/23 http://connpass.com/event/1630/ @kaizen_nagoyaTRANSCRIPT
![Page 1: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/1.jpg)
STARC RTL 設計スタイルガイドによる Verilog HDL 並列記述の補強小川清 @kazizen_nagoya
![Page 2: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/2.jpg)
日本 OSS 奨励賞 2012 御礼
特定非営利法人 TOPPERS プロジェクト
TOPPERS プロジェクトは OSS の組み込みソフトウエアを開発する産学 官連携のプロジェクトである。 TOPPERS プロジェクトの成果である組み込みシステム向けの各種リアルタイム OS やミドルウエア、開発 支援ツールは、自動車の制御ユニット、ロケットの制御ユニット、工作機械、プリンタ、電子楽器、携帯電話機など多岐にわたって活用されている。
各種勉強会、普及に貢献いただいた方々に感謝
![Page 3: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/3.jpg)
目次1. 論理演算が論理的にならない
2. Verilog HDL による実演
3. Verilog HDL の特徴
4. RTL 設計スタイルガイド
5. 並列処理に関連する規則など
![Page 4: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/4.jpg)
発表の目標1. 物理現象に目を向けてもらう
2. 論理回路設計に目を向けてもらう
3. RTL 設計スタイルガイドを役立てる
4. SWEST, TOPPERS 開発者会議などの合宿に誘う
![Page 5: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/5.jpg)
目次1. 論理演算が論理的にならない
論理演算は論理的か?Verilog HDL で書くと
2. Verilog HDL による実演
3. Verilog HDL の特徴
4. RTL 設計スタイルガイドの概要
5. 並列処理に関連する規則
![Page 6: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/6.jpg)
論理演算は論理的か?
C = A && B;
A が 0 , 1
B が 1, 0
C は?
![Page 7: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/7.jpg)
論理演算の落とし穴は何?
D = A || B;
A が 0 , 1
B が 1, 0
D は?
![Page 8: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/8.jpg)
Verilog HDL で書くと
assign c= a && b;
assign d=a || b;
assign は配線(結線)
![Page 9: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/9.jpg)
動作する記述(全体)
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
![Page 10: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/10.jpg)
試験記述always @(posedge clk_2) begin
in_a = clk_1;
end
always @(negedge clk_2) begin
in_b = ~clk_1;
end
Always 文は常時実行。並列実行。
![Page 11: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/11.jpg)
ここまでの 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
![Page 12: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/12.jpg)
結果
![Page 13: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/13.jpg)
目次1. 論理演算が論理的にならない
2. Verilog HDL による実演Xilinx ISE Webpack( 無償版 )
論理式が論理的にならない理由
3. Verilog HDL の特徴
4. RTL 設計スタイルガイドの概
5. 並列処理に関連する規則
![Page 14: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/14.jpg)
論理式が論理的にならない理由空間
配線が長いと遅延に差ができる。空間が時間に影響を及ぼす
同時性/時間同時に実行しないと、異なる値になる論理演算がある同時に実行できない理由になにがあるか
遅延立ち上がり処理、立ち下がり処理ジッタ(時間的ゆらぎ)
電圧の変動、 , 周波数の変動、高調波固着・一時的断線・一時的開放熱,振動
![Page 15: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/15.jpg)
目次1. 論理演算が論理的にならない
2. Verilog HDL による実演
3. Verilog HDL の特徴HDL: Hardware Description Language
逐次処理と並列処理危険 (hazard) 対策
4. RTL 設計スタイルガイドの概要
5. 並列処理に関連する規則
![Page 16: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/16.jpg)
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++ 風の記述)
![Page 17: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/17.jpg)
関連言語の繋がり
Pascal -> Modula-2 細字プログラミング、太字 HDL
-> Ada -> VHDL
->VerilogHDL-> SystemVerilog
-> System C
->C#
-> C ->C++ ->JAVA20130227 (c) [email protected] 1
7
![Page 18: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/18.jpg)
HDL のソフトウェア側面試験台 (test bench) は模擬試験 (simulation) 用で、ハードウェアの論理回路は形成しない
コンピュータ上のソフトウェア
ハードウェア(論理回路)がなくても実験できる
Verilog HDL は C 風の記述ができる。
論理回路で並列処理を形成するところは並列処理をしている。
Verilog の function 文は函数
![Page 19: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/19.jpg)
ブロッキング代入(逐次処理)とノンブロッキング代入(並列処理)
ブロッキング代入 ノンブロッキング代入
記述例
特徴
代入処理が終わるまで次の処理を止める(blocking, 逐次処理)
右辺の処理を終了してから一斉に代入(並列処理)
用途
組み合わせ回路 順序回路
always@(clk) begin a = b ; c = a ;end
always@(clk) begin a <= b ; c <= a ;end
20130214 (c) watabe kinji, [email protected] 19
![Page 20: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/20.jpg)
ブロッキング代入とノンブロッキング代入
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
![Page 21: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/21.jpg)
どちらが生成回路?
![Page 22: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/22.jpg)
生成回路の特徴ブロッキング(順次)代入
順次代入した計算結果の回路を生成
計算途中を保持しない
順次代入だから記憶が沢山いるような気になるかも。
ノンブロッキング(並列)代入
並列代入する計算を保持できる回路を生成
計算途中の値を取り出せる
並列代入だから記憶が節約できるような気になるかも
![Page 23: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/23.jpg)
Verilog HDL における並列処理
1. 複数の assign 文(回路)
2. 複数の always 文
2. 複数の <=(non blocking) 文
3. 複数の initial 文 ( 模擬試験)
![Page 24: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/24.jpg)
危険 (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)
![Page 25: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/25.jpg)
目次1. 論理演算が論理的にならない
2. Verilog HDL による実演
3. Verilog HDL の特徴
4. RTL 設計スタイルガイド概要2011年版の改訂
5. 並列処理に関連する規則など
![Page 26: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/26.jpg)
RTL 設計スタイルガイド言語の部分集合を定義し、 HDL の曖昧さを排除 ( 時間的にも)
Verilog-HDL は特に。
ASIC 向けのガイドが基本。Verilog-HDL では , 第二版で FPGA 向けの節を追加。Verilog-HDL の第二版は本では日本語。CSVなど古典的ソフトでの記述。定量的な記述は当時の制約の影響。FPGAの場合の詳細が未整備。
Xilinx, Altera のガイドを参考に対応付けるとよい。
右の 2011 年版から System Verilog の記述を追加。第二版に比べてアサーションベース検証、アサーション記述テクニック、機能カバレッジを追加規則の追加削除を実施
規則を守ることよりも、守らないときの理由が大事(規則を守るよりも価値があることがあるかも)
2011 年版で時間に関する規則の優先度を見直し20130227
![Page 27: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/27.jpg)
スタイルガイドの章構成1 章 基本設計制約
命名規則 , 設計スタイル , クロック , (非)同期設計 , 階層設計
設計を開始時に考慮する設計制約2 章 RTL 記述テクニック
組合せ回路 , 順序回路の記述スタイ always 文 ,function 文 ,if 文 ,case 文
3 章 RTL 設計手法 分割設計 , 機能ライブラリ , 設計資産のパラメータ化、テス
ト容易化設計、低消費電力設計、設計データの管理4 章 検証のテクニック
テストベンチのパラメータ化、タスクの使用、検証の進め方
20130227
![Page 28: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/28.jpg)
次頁以降の検討成果記述汎例
<1>,<2>,<3>,<4> が教育順序。
<青文字> RTL 設計スタイルガイドで省略している注記
< @kaizen_nagoya による補足>
<赤茶字>初学者のうちから習慣付けするとよい項目
<橙字>並列、並行に関連する事項
20130227
![Page 29: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/29.jpg)
1 章 基本設計制約 ( 静的規則 ) 1.1 命名規則 <1>
<プログラムを書く際に、名前は必ず使うため>( 動的規則 ) <2>
1.2 同期設計1.3 初期リセット1.4 クロック1.5 非同期設計
( 構造設計 ) <4>1.6 階層設計1.7 FPGA
20130227
![Page 30: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/30.jpg)
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
![Page 31: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/31.jpg)
3 章 RTL 設計手法( 機能ライブラリ ) <3>
3.1 機能ライブラリの作成 3.2 機能ライブラリの使用
3.3 試験容易化設計 (DFT) <4>
3.4 低消費電力設計 <3>
3.5 ソースコード , 設計データの管理 <1>
<ソースコードを必ず扱うため>20130227
![Page 32: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/32.jpg)
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
![Page 33: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/33.jpg)
目次1. 論理演算が論理的にならない
2. Verilog HDL による実演
3. Verilog HDL の特徴
4. RTL 設計スタイルガイド
5. 並列処理に関連する規則など優先順位逸脱の手続き
![Page 34: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/34.jpg)
SWEST
合宿型の勉強会 swest.topper.jp開催日程: 2013年 8月 22 日 (木 )~23 日 (金 )
開催場所:下呂温泉 水明館(岐阜県下呂市)
RTL 設計スタイルガイドの役立つ規則の確認仕事で使いたい(使っている)規則を優先順位付け全体の意見を整理
![Page 38: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/38.jpg)
RTL1.4.3 ゲーティッドクロックの使用は注意
(c) [email protected] 38Gated clock, clock gating: 時計開閉。省電力のために時間信号を開閉する。FPGA は組込みの省電力機構を用いるとよい
![Page 39: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/39.jpg)
RTL1.5.1. 非同期クロック間の信号にはメタ・ステーブルを考慮
(c) [email protected] 39Meta stable:不安定平衡状態 (unstable equilibrium state) 。一定期間発振。 1 か 0 かに収束。収束時間データ無。
![Page 40: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/40.jpg)
Meta Stable
「 RTL 設計スタイルガイド Verilog HDL」第二版 1-36
![Page 44: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/44.jpg)
逸脱の手続きと事例
20130227 44
優先順位付けに基づいて規則を合意し対象外を決める
例:テストベンチでの習慣(逸脱文書は作る)Tb を名前の最初につける方法整数は 10 進数を標準にする場合に D をつけない
不足している規則を追加(分野固有の命名規則など)
できれば HAZOP など設計審査を経る
対象外にする方法は 3つ規則そのものを考慮せず検査もしない共通の逸脱文書を作るが、検査をして資料は残す共通の逸脱文書にはないが、必要な逸脱なので個別の文書化をする
![Page 47: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/47.jpg)
まとめ論理演算が論理的な結果を出すためには努力が必要
同時に起きることがずれたり、順番に起きることが同時に起きると、結果は不定の場合がある物理現象に着目しよう
VerilogHDL などの HDL で記述して実装して論理回路で並列処理している。
STARC RTL 設計スタイルガイドは並列処理など時間に起因する不具合を回避するのに役立つ
SWEST, TOPPERS 開発者会議で続きを
![Page 48: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/48.jpg)
今後の課題状態遷移で設計すれば、C言語でも Verilog HDLでも実装できる。
Hazard分析は IEC HAZOP などの手法で洗い出す。
自作 CPU を HDL で ...
![Page 49: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/49.jpg)
MISRA-C 2013
ISO/IEC 9899:1999 対応
空間方向に制約
RTS 設計スタイルガイドと合わせて勉強すると…
![Page 50: STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強](https://reader033.vdocuments.mx/reader033/viewer/2022061606/55642f8ad8b42ace308b45f1/html5/thumbnails/50.jpg)
TOPPRERS 開発者会議TOPPERS 活用アイデア・アプリケーション開発コンテストオープンソースのキラーアプリを作りたい会員以外の応募可能賞金ありhttp://www.toppers.jp/contest.html
10月に静岡県西部で開催予定OS の並列・並行はこの合宿で