STARC RTL設計スタイルガイドによるVerilogHDL並列記述の補強小川清@kazizen_nagoya
日本OSS奨励賞2012御礼特定非営利法人TOPPERSプロジェクトTOPPERSプロジェクトはOSSの組み込みソフトウエアを開発する産学 官連携のプロジェクトである。TOPPERSプロジェクトの成果である組み込みシステム向けの各種リアルタイム...
目次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,1Bが 1, 0Cは?
論理演算の落とし穴は何?D= A || B;Aが0,1Bが 1, 0Dは?
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...
試験記述always @(posedge clk_2) beginin_a= clk_1;endalways @(negedge clk_2) beginin_b= ~clk_1;end  Always文は常時実行。並列実行。
ここまでのVerilog HDLassign文とalways文を使った。assign文は結線(代入ではない。相手がレジスタだと代入)。2つ以上のassign文は直列に繋がっていない限り並列実行。always文は常時実行している。2つ以上のalw...
結果
目次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設...
HDL(hardware Description Language)設計自動化(Design automation)/ハードウェア記述言語: IEEE,振る舞い言語(Behaviourallanguages):IEC国際規格   VHDL:VH...
関連言語の繋がりPascal -> Modula-2      細字プログラミング、太  字HDL    ->Ada ->VHDL    ->VerilogHDL->SystemVerilog  -> System C             ...
HDLのソフトウェア側面試験台(test bench)は模擬試験(simulation)用で、ハードウェアの論理回路は形成しないコンピュータ上のソフトウェアハードウェア(論理回路)がなくても実験できるVerilog HDLはC風の記述ができる。...
ブロッキング代入(逐次処理)と    ノンブロッキング代入(並列処理)        ブロッキング代入                  ノンブロッキング代        always@(clk) begin        入         ...
ブロッキング代入とノンブロッキング代        入 reg a=1;             reg a=1; regb=2;              regb=2; regc=0;              regc=0; always...
どちらが生成回路?
生成回路の特徴ブロッキング(順次)代入   ノンブロッキング(並列)               代入順次代入した計算結果の回路を生成           並列代入する計算を保持で               きる回路を生成計算途中を保持しない...
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. 並列処理に関連する規則など
RTL設計スタイルガイド言語の部分集合を定義し、HDLの曖昧さを排除(時間的にも)  Verilog-HDLは特に。ASIC向けのガイドが基本。  Verilog-HDLでは,第二版でFPGA向けの節を追加。  Verilog-HDLの第二版は...
スタイルガイドの章構成   1章 基本設計制約       命名規則,設計スタイル,クロック,(非)同期設計,階層        設計       設計を開始時に考慮する設計制約   2章 RTL記述テクニック       組合せ回路...
次頁以降の検討成果記述汎例<1>,<2>,<3>,<4>が教育順序。<青文字>RTL設計スタイルガイドで省略している注記<@kaizen_nagoyaによる補足><赤茶字>初学者のうちから習慣付けするとよい項目<橙字>並列、並行に関連する事項 ...
1章   基本設計制約(静的規則)1.1 命名規則<1><プログラムを書く際に、名前は必ず使うため>(動的規則)                           <2> 1.2 同期設計 1.3初期リセット 1.4 クロック 1.5 非同期...
2章 RTL記述技法(always文)                           <2> 2. 1 組み合わせ回路 2. 2 組み合わせ回路のalways文記述 2. 3 FFの推定 2. 4 ラッチ記述 2. 5 トライステート・バ...
3章 RTL設計手法(機能ライブラリ)                                           <3>  3.1 機能ライブラリの作成  3.2 機能ライブラリの使用3.3 試験容易化設計(DFT)   <4>3.4...
4章 検証技術         (Verification Techniques )(試験台(test bench)) 4.1 試験台記述                               <2> 4.2 手続記述(Task desc...
目次1. 論理演算が論理的にならない2. Verilog HDLによる実演3. Verilog HDLの特徴4. RTL設計スタイルガイド5. 並列処理に関連する規則など  優先順位  逸脱の手続き
SWEST合宿型の勉強会swest.topper.jp  開催日程:2013年8月22日(木)~23日(金)  開催場所:下呂温泉 水明館(岐阜県下呂市)RTL設計スタイルガイドの役立つ規則の確認  仕事で使いたい(使っている)規則を優先順位付...
優先順位上位10             (c) kaizen@wh.commufa.jp  20130227
RTL1.2同期設計20130227           (c) kaizen@wh.commufa.jp                                              36
RTL1.3 初期化リセット20130227       (c) kaizen@wh.commufa.jp
RTL1.4.3 ゲーティッドクロック         の使用は注意                                                           38Gated clock, clock gating: ...
RTL1.5.1. 非同期クロック間の信号  にはメタ・ステーブルを考慮Meta stable:不安定平衡状態(unstable equilibrium state)。一定期間発振。1か0かに収束。収束時間データ無。  20130227    ...
Meta Stable「RTL設計スタイルガイドVerilog HDL」第二版1-36
RTL2.1.2. function 文によって組み合          わせ回路を定義 20130227        (c) kaizen@wh.commufa.jp
RTL2.1.3 function 文では、引数やビット幅    に対するチェックを入念にする  20130227         (c) kaizen@wh.commufa.jp
RTL2.1.5. 条件演算((A)?B:C)の使用            は1 回まで  20130227       (c) kaizen@wh.commufa.jp   43
逸脱の手続きと事例優先順位付けに基づいて規則を合意し対象外を決める  例:テストベンチでの習慣(逸脱文書は作る)     Tbを名前の最初につける方法     整数は10進数を標準にする場合にDをつけない不足している規則を追加(分野固有の命名規...
逸脱の手続き例20130227        (c) kaizen@wh.commufa.jp
事例20130227        (c) kaizen@wh.commufa.jp
まとめ論理演算が論理的な結果を出すためには努力が必要 同時に起きることがずれたり、順番に起きることが 同時に起きると、結果は不定の場合がある 物理現象に着目しようVerilogHDLなどのHDLで記述して実装して論理回路で並列処理している。ST...
今後の課題状態遷移で設計すれば、C言語でもVerilog HDLでも実装できる。Hazard分析はIECHAZOPなどの手法で洗い出す。自作CPUをHDLで...
MISRA-C 2013ISO/IEC 9899:1999対応空間方向に制約RTS設計スタイルガイドと合わせて勉強すると…
TOPPRERS開発者会議TOPPERS活用アイデア・アプリケーション開発コンテスト オープンソースのキラーアプリを作りたい 会員以外の応募可能 賞金あり http://www.toppers.jp/contest.html10月に静岡県西部で...
Upcoming SlideShare
Loading in …5
×

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

3,105 views

Published on

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

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,105
On SlideShare
0
From Embeds
0
Number of Embeds
109
Actions
Shares
0
Downloads
12
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

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

×