Verilogトレーニング


文法編              実践編はこちら  問題編はこちら

1 Verilogとは 
   1.1 Verilogの歴史
   1.2 Verilogの将来
   1.3 System Verilog

2 Verilog文法の基礎
   2.1 基本的約束
   2.2 整数
      2.2.1 2進数の表記
      2.2.2 8進数の表記
      2.2.3 10進数の表記
      2.2.4 16進数の表記
      2.2.5  負の整数の表現
      2.2.6  下線の使用
      2.2.7 Verilog2001での拡張

  2.3 実数
  2.4 文字列
  2.5 識別子、キーワード等の名前
      2.5.1 エスケープ識別子
  2.6 演算子
      2.6.1 算術演算子
      2.6.2 ビット演算子
      2.6.3 リダクション演算
      2.6.4 論理演算子
      2.6.5 関係演算子
      2.6.6 シフト演算子
      2.6.7 連結演算子
      2.6.8 条件演算子
      2.6.9 演算子の優先順位
  2.7 配列とメモリ
      2.7.1 配列のアドレス指定
      2.7.2 多次元配列とメモリー記述
      2.7.3 多ビット信号間の演算

3.データタイプ
  3.1 電気信号の取り得る値
  3.2 Verilogの回路記述の例
  3.3 信号のタイプ
      3.2.1 ネットタイプ
      3.2.2 変数(variable)タイプ
      3.2.3 信号強度
  3.3 入出力信号の宣言
      3.3.1 入力信号、双方向信号の宣言
      3.3.2 出力信号の宣言
      3.3.3 moduleでの宣言の方法
      3.3.4 ネットタイプ、変数タイプの宣言
      3.3.5 パラメーター宣言
4. 信号代入(Assignments)
  4.1 継続的代入(ネット代入)
      4.1.1 宣言による信号代入
      4.1.2 aasign文による代入
  4.2 手続き代入(変数代入)
      4.2.1 変数の宣言で値を代入する方法
5 遅延時間
  5.1 'timescale
  5.2  イベント、遅延
      5.2.1 ネットの遅延
      5.2.2 ゲートの遅延(3つの数値)
      5.2.3 mini:typ:max(3つの状態の遅延)
6 ゲートレベルの記述
  6.1 プリミティブ
      6.1.1、 ゲートタイプ
      6.1.2、ゲート タイプの信号強度
      6.1.3、配列的 宣言
  6.2 ユーザーが定義するプリミティブ(User Define Primitive)
7 ビヘイビアレベルの記述
  7.1 moduleで記述するもの
  7.2 ビヘイビア記述の文法
      7.2.1 ブロッキング代入とノンブロッキング代入
      7.2.2 assignとdeassign
      7.2.3  force と release
      7.2.4 if文
      7.2.5 case文
      7.2.6 ループ文
      7.2.7 タイミング制御
         7.2.7.1 時間遅延(#)
         7.2.7.2 イベント制御(@)
         7.2.7.3 wait文
      7.2.8 begin〜endとfork〜join
      7.2.9 disableによる実行の中断
   7.3  initial文
   7.4 always文
8 サブプログラム
   8.1 task
   8.2 function
9 階層設計
   9.1 module内での信号接続
   9.2 階層間のパラメーターの受渡しかた
      9.2.1 defparam
      9.2.2 module呼出時に値を与える方法
   9.3 階層を越えた信号のアクセス
   9.4 genvarとgenerate
10 ライブラリー
   10.1 ライブラリーマップファイル
   10.2 コンフィグレーション
      10.2.1 designの記述
      10.2.2 コンフィグルールの記述
11 specifyブロック
   11.1 specparam
   11.2 遅延の設定
      11.2.1 単純な設定
      11.2.2 エッジによる遅延設定
      11.2.3 条件による遅延
      11.2.4 パルスの取り扱い
   11.3タイミングチェック
      11.3.1 $setup,$hold
      11.3.2  $setuphold
      11.3.3 $removal
      11.3.4 $recovery
      11.3.5  $recrem
      11.3.6 $skew
      11.3.7 $timeskew
      11.3.8 $fullskew
      11.3.9 $width
      11.3.10 $period
      11.3.11 $nochange
12  システムタスクと関数
   12.1  表示システムタスク
      12.1.1 $display,$write
          12.1.1.1 フォーマットの記述
      12.1.2 $strobe
      12.1.3 $monitor
   12.2 ファイル操作
      12.2.1 ファイルを開く
      12.2.2 ファイルへの書き込み
      12.2.3  データを文字列に変換する
      12.2.3 ファイルからの読みとり
          12.2.3.1 1文字だけ読み込む
          12.2.3.2 1ライン読み込む
          12.2.3.2 フォーマットされたデータを読み込む
          12.2.3.3 バイナリーデータを読み込む
          12.2.3.4  ファイルのポジショニング
          12.2.3.5 出力バッファーをフラッシュする。
          12.2.3.6 エラーステイタス
          12.2.3.7 メモリーにデーターを読み込む
          12.2.3.8  SDFファイルからデータを読み込む
      12.2.4 タイムスケールに関するシステムタスク
          12.2.4.1 タイムスケール情報を出力する
          12.2.4.2 時間のフォーマットを規定します
   12.3 シミュレーションの実行を制御する
   12.4 PLAモデリングの為のシステムタスク(省略)
   12.5 統計解析の為のシステムタスク(省略)
   12.6  シミュレーション時間のシステム関数
   12.7  変換関数
   12.8 乱数発生
13  VCD(Value Change Dump)ファイル
   13.1 VCDファイルの作り方
      13.1.1  ファイル名を指定する
      13.1.2 出力信号を指定します
      13.1.3 出力を制御します
      13.1.4 その他のシステムタスク
      13.1.5 入出力信号のみを出力する
14 コンパイラダイレクティブ