目次

この教材の構成

もふねこのHDL実験ノートでは、Verilog-HDLを使った設計、検証、論理合成を、効率よく学べます。Verilog-HDLの文法体系はとても広範囲です。もふねこのHDL実験ノートでは、回路記述と、検証のためのテストベンチについて解説します。

ユニット

意味

内容

ST

文法実験1~6

回路実験1~8

検証実験1~6

合成実験1~5

Start

Elementary

Circuit

Testbench

Synthesis

HDL設計の手順や用語

Verilog-HDLの基本

回路記述

テストベンチ(シミュレーション用記述)

論理合成

応用実験1~8

基礎実験1~4

Option

Logic

記述上の各種ヒント

論理回路

効果的な学習方法

  • STおよびEユニット
    Verilog-HDLによる回路設計について、一通り解説しています。これらのユニットは時間をおかず一気に学習した方がよいでしょう。
  • C(回路記述)、T(テストベンチ)
    回路設計と検証に必要な記述について詳しく解説しています。本格的に設計するためには必須です。
  • S(論理合成)
    ASIC設計で使われている事実上の業界標準ツールをベースに解説しています。ASIC設計者には必須です。FPGAを中心に設計している方は選択ユニットとしても結構です。
  • O(記述上の各種ヒント)
    ある程度、設計や検証に慣れてきたら参考にすると良いでしょう。いろいろな記述やテクニックや注意点を知ることができます。
  • L(論理回路)
    論理回路の基本事項ですので、必要な部分だけ復習に使うと良いでしょう。

学習ロードマップ

この目次は、上から順番に読むだけでなく、目的に合わせて読み進められるように構成しています。Verilog-HDLは文法だけを覚えても、実際に回路として動かす段階でつまずきやすい分野です。まず全体像をつかみ、短い回路を書き、シミュレーションで確かめ、最後に論理合成で回路規模やタイミングを見る流れで学ぶと理解しやすくなります。

はじめてHDLを学ぶ場合

  1. ST: HDL設計の手順で、RTL設計、RTL検証、論理合成、ゲートレベル検証の流れをつかみます。
  2. 文法実験1文法実験2で、組み合わせ回路と順序回路の基本記述を体験します。
  3. 文法実験3で、書いた回路をシミュレーションし、論理合成まで進める流れを確認します。
  4. 回路実験1から回路実験8へ進み、セレクタ、デコーダ、カウンタ、電子錠などの具体的な回路で練習します。
  5. 検証実験1から検証実験6で、テストベンチと検証の考え方を固めます。

目的別の読み方

  • 論理回路の基礎に不安がある場合は、基礎実験1から基礎実験4を先に確認すると、Verilogの記述が何を表しているか理解しやすくなります。
  • Verilogの文法を短時間で復習したい場合は、文法実験4文法実験5を中心に読み、必要に応じて文法実験6で記述スタイルを整理します。
  • 実装時の落とし穴を避けたい場合は、応用実験2応用実験5合成実験3を重点的に読むと、代入順序、ラッチ生成、合成しやすい書き方を確認できます。
  • 論理合成まで見通したい場合は、合成実験1から合成実験5を読み、制約、レポート、スクリプトによる実行の流れを追うのがおすすめです。

読み進めるときの目安

各ページでは、説明を読むだけでなく、サンプルコードを手元で動かし、波形やログを確認することを想定しています。理解があいまいなときは、先に進みすぎず「入力を変えたら出力がどう変わるか」「リセットやクロックのタイミングで何が起きるか」を小さく試してみてください。

総目次

STユニット

STはじめに

  1. ここで学ぶ内容
  2. HDL設計の手順
  3. RTL設計
  4. RTL検証
  5. 論理合成
  6. ゲートレベル検証
  7. Verilog-HDLの文法体系
  8. 修了判定

Eユニットグループ

E1簡単な組み合わせ回路の記述

  1. ここで学ぶ内容
  2. 加算演算子による加算回路
  3. フルアダーによる加算回路
  4. フルアダーの動作
  5. フルアダーの記述
  6. フルアダーによる加算回路の記述1
  7. フルアダーによる加算回路の記述2
  8. ワンポイント・アドバイス
  9. 修了判定

E2簡単な順序回路の記述

  1. ここで学ぶ内容
  2. バイナリカウンタの動作
  3. バイナリカウンタの記述
  4. ワンポイント・アドバイス
  5. 修了判定

E3シミュレーションと論理合成体験

  1. ここで学ぶ内容
  2. シミュレーションと論理合成
  3. テストベンチ
  4. 加算回路のテストベンチ
  5. シミュレーション時のファイル指定
  6. 加算回路のシミュレーション
  7. クロックの記述
  8. カウンタのテストベンチ
  9. カウンタのシミュレーション
  10. 論理合成の実行
  11. 修了判定

E4基本文法1

  1. ここで学ぶ内容
  2. モジュール構造
  3. ポート宣言
  4. 信号の型
  5. ネット型とレジスタ型の使い分け
  6. パラメータ宣言
  7. 複数ビット信号
  8. assign文
  9. functionとalways
  10. if文とcase文
  11. begin~end
  12. ワンポイント・アドバイス
  13. 修了判定1
  14. 修了判定2

E5基本文法2

  1. ここで学ぶ内容
  2. 論理値と数値表現
  3. 演算子
  4. ビット演算と論理演算
  5. リダクション演算
  6. 条件演算
  7. 連接演算
  8. 演算の優先順位
  9. ワンポイント・アドバイス
  10. 修了判定

E6基本記述スタイル

  1. ここで学ぶ内容
  2. 4つの記述スタイル
  3. assign文による組み合わせ回路
  4. functionによる組み合わせ回路
  5. always文による組み合わせ回路
  6. always文による順序回路―1
  7. always文による順序回路―2
  8. always文による順序回路―3
  9. 下位モジュール接続
  10. ポート接続の注意点
  11. ワンポイント・アドバイス
  12. 修了判定1
  13. 修了判定2

Cユニットグループ

C1ゲート回路とセレクタの記述

  1. ここで学ぶ内容
  2. プリミティブゲートによるゲート回路
  3. 論理式を利用したゲート回路
  4. If文によるセレクタ
  5. case文によるセレクタ
  6. ビット選択によるセレクタ
  7. 条件演算子によるセレクタ
  8. 修了判定1
  9. 修了判定2
  10. 修了判定3
  11. 修了判定4

C2デコーダとエンコーダの記述

  1. ここで学ぶ内容
  2. 等号演算によるデコーダ
  3. if文によるデコーダ
  4. case文によるデコーダ
  5. casex文、casez文によるデコーダ
  6. if文によるエンコーダ
  7. case文によるエンコーダ
  8. 修了判定1
  9. 修了判定2
  10. 修了判定3

C3演算回路の記述

  1. ここで学ぶ内容
  2. 組み合わせ回路によるシフト回路
  3. 乗算回路
  4. 大小比較回路と一致比較回路
  5. 組み合わせ回路で作るROM
  6. 修了判定

C4順序回路の基礎

  1. ここで学ぶ内容
  2. Dフリップフロップの記述
  3. ラッチの記述
  4. 2つの代入
  5. 2つの代入による回路
  6. 非同期リセットと同期リセット
  7. 非同期リセットのメリット/デメリット
  8. ワンポイント・アドバイス
  9. 修了判定

C5フリップフロップの記述

  1. ここで学ぶ内容
  2. フリップフロップの設計方法
  3. HDLによるフリップフロップの記述
  4. Tフリップフロップ
  5. JKフリップフロップ
  6. ワンポイント・アドバイス
  7. 修了判定

C6カウンタとシフトレジスタの記述

  1. ここで学ぶ内容
  2. N進カウンタ
  3. アップダウンカウンタ
  4. 任意のカウント値を持つカウンタ
  5. 分周回路
  6. シリアルパラレル変換回路
  7. レジスタ回路
  8. 修了判定1
  9. 修了判定2

C7ブロック図から回路記述へ

  1. ここで学ぶ内容
  2. 仕様からの回路記述手順
  3. 仕様の理解
  4. 修了判定1
  5. 修了判定2
  6. 修了判定3
  7. 修了判定4
  8. 修了判定5

C8回路記述と動作確認

  1. ここで学ぶ内容
  2. 電子錠について
  3. 電子錠の仕様
  4. 電子錠の回路構成検討
  5. タイミングチャート
  6. 修了判定1
  7. 修了判定2
  8. 修了判定3
  9. 修了判定4
  10. 修了判定5
  11. 修了判定6
  12. 修了判定7

Tユニットグループ

T1テストベンチの基礎

  1. ここで学ぶ内容
  2. 動作確認のためのテスト入力1
  3. 動作確認のためのテスト入力2
  4. 回路規模に応じたテストベンチ
  5. テストベンチの構造
  6. ワンポイント・アドバイス
  7. 修了判定1
  8. 修了判定2

T2テストベンチ向き文法

  1. ここで学ぶ内容
  2. モジュールアイテムとステートメント
  3. プリミティブ・ゲート
  4. 信号強度
  5. データタイプ
  6. タイミング制御
  7. さまざまな遅延
  8. forとwhile
  9. forceとrelease
  10. begin~endとfork~join
  11. 階層アクセス
  12. 修了判定1
  13. 修了判定2
  14. 修了判定3

実験ロググループ

  1. 実験ログ1: Sim/Synthミスマッチを解剖する
  2. 実験ログ2: Latch地獄から脱出した3日間
  3. 実験ログ3: Warning放置で溶かした話 ベスト5