第1章 デジタル信号処理と基本論理 1 |
1-1 デジタル信号処理技術 2 |
1-1-1 デジタル信号処理システム 4 |
1-1-2 センサー 5 |
1-1-3 信号のサンプリング 5 |
1-1-4 A/D変換 6 |
1-1-5 D/A変換 8 |
1-1-6 デジタル信号処理部 10 |
1-1-7 CPU 11 |
1-1-8 クロック生成 12 |
1-1-9 デジタル・システムの構成例 13 |
1-2 デジタル信号 15 |
1-2-1 2進数 15 |
1-2-2 2進数による負の表現 18 |
1-3 基本論理 19 |
1-3-1 否定(NOT) 19 |
1-3-2 論理積(AND) 20 |
1-3-3 論理和(OR) 20 |
1-3-4 排他的論理和(XOR) 21 |
1-4 論理式 22 |
1-4-1 ブール代数 22 |
1-4-2 カルノー図 23 |
1-4-3 組み合わせ論理回路 25 |
1-4-4 順序回路 25 |
1-5 第1章のまとめ 30 |
第2章 CMOSトランジスタと半導体集積回路 31 |
2-1 シリコン半導体 31 |
2-1-1 PN接合ダイオード 33 |
2-2 MOSトランジスタ 34 |
2-2-1 CMOSトランジスタ 36 |
2-2-2 CMOSによる基本論理 39 |
2-2-3 スリーステートとトランスミッション・ゲート 41 |
2-2-4 論理値とストレングス 42 |
2-2-5 CMOSオペアンプ 45 |
2-3 半導体集積回路LSI 46 |
2-3-1 半導体プロセス 47 |
2-3-2 半導体集積回路の分類 48 |
2-3-3 ゲートアレイ 50 |
2-3-4 スタンダードセル 52 |
2-3-5 エンベディッド・アレイ 53 |
2-3-6 FPGA/CPLD 54 |
2-4 メモリ 56 |
2-4-1 DRAM 56 |
2-4-2 SRAM 57 |
2-4-3 ROM 58 |
2-5 LSIのパッケージ 58 |
2-5-1 入出力端子 59 |
2-5-2 ラッチアップ 60 |
2-6 第2章のまとめ 61 |
第3章 設計自動化とHDLの基礎 63 |
3-1 コンピュータによる設計自動化の進展 63 |
3-1-1 レイアウト設計の自動化 66 |
3-1-2 ゲートレベル設計の自動化 68 |
3-1-3 RTL設計の自動化 70 |
3-1-4 設計資産IPの利用 73 |
3-1-5 動作設計の自動化 75 |
3-1-6 設計レベルと合成タスク 77 |
3-2 LSI設計フロー 77 |
3-3 ハードウェア記述言語HDLの基本要素 83 |
3-3-1 Verilog-HDLの背景 84 |
3-3-2 SystemCの背景 85 |
3-3-3 設計記述レベル 85 |
3-3-4 SystemCとVerilog-HDLの位置づけ 89 |
3-4 HDLの基本要素 90 |
3-4-1 モジュール(回路ブロック) 90 |
3-4-2 プロセス 92 |
3-4-3 信号 93 |
3-4-4 変数 97 |
3-5 HDLシミュレータによる検証 98 |
3-5-1 デバッグ機能 98 |
3-6 第3章のまとめ 101 |
第4章 SystemCの基本構文 103 |
4-1 実行手順 103 |
4-2 基本構造 106 |
4-3 SC_MODULE 107 |
4-3-1 コンストラクタ 109 |
4-4 プロセス 110 |
4-4-1 SC_CTHREAD 110 |
4-4-2 SC_THREAD 112 |
4-4-3 SC_METHOD 113 |
4-5 データタイプ 115 |
4-5-1 整数データタイプ 115 |
4-5-2 ビット・データタイプ 116 |
4-5-3 論理データタイプ 116 |
4-5-4 C++整数データタイプ 116 |
4-5-5 配列 117 |
4-5-6 データタイプの変換 118 |
4-5-7 構造タイプ 119 |
4-6 信号と変数 120 |
4-6-1 信号 120 |
4-6-2 変数 121 |
4-7 sc_fifoチャネル 122 |
4-7-1 sc_fifoの基本構造 122 |
4-7-2 sc_fifo_in<> 122 |
4-7-3 sc_fifo_out<> 123 |
4-7-4 sc_fifo<> 124 |
4-8 イベント 125 |
4-8-1 wait()文 125 |
4-8-2 sc_eventとnotify() 126 |
4-9 演算子 127 |
4-9-1 算術演算子 127 |
4-9-2 ビット演算子 128 |
4-9-3 関係演算子 128 |
4-9-4 論理演算子 128 |
4-9-5 シフト演算子 129 |
4-9-6 ビット選択/パート選択 129 |
4-10 ループ文 129 |
4-10-1 for文 130 |
4-10-2 while文 130 |
4-10-3 do~while文 131 |
4-10-4 break文、continue文 131 |
4-11 条件文 132 |
4-11-1 if文 132 |
4-11-2 switch文 132 |
4-11-3 条件演算子 133 |
4-12 関数 134 |
4-12-1 関数のオーバーロード 136 |
4-12-2 関数テンプレート 137 |
4-13 クラス 138 |
4-13-1 オブジェクトの作成 139 |
4-13-2 アクセス指示子 139 |
4-14 演算子のオーバーロード 140 |
4-15 テンプレート・クラス 141 |
4-16 シミュレーション制御構文 144 |
4-16-1 時間単位の指定 145 |
4-16-2 sc_simulation_time()/sc_time_stamp() 145 |
4-16-3 sc_clock 146 |
4-16-4 sc_time 146 |
4-16-5 sc_start/sc_stop 147 |
4-16-6 sc_trace 147 |
4-17 階層構造 148 |
4-17-1 階層接続 148 |
4-17-2 sc_main() 149 |
4-17-3 SC_MODULEからのインスタンス呼び出し 151 |
4-18 第4章のまとめ 152 |
第5章 Verilog-HDLの基本構文 155 |
5-1 字句に関する規約 155 |
5-1-1 識別子 156 |
5-2 コメント 156 |
5-2-1 定数 156 |
5-2-2 文字列 157 |
5-3 モジュール 158 |
5-4 データタイプ 160 |
5-4-1 論理値 160 |
5-4-2 レジスタとネット 160 |
5-4-3 配列 162 |
5-4-4 整数と実数 162 |
5-4-5 パラメータ 163 |
5-5 式 164 |
5-5-1 演算子一覧 164 |
5-5-2 演算子 165 |
5-6 代入文 168 |
5-6-1 継続代入文 169 |
5-6-2 手続き的代入文 169 |
5-7 プロセス 170 |
5-7-1 手続き文 171 |
5-7-2 ブロック文 172 |
5-7-3 ブロックの消去 174 |
5-7-4 if文 175 |
5-7-5 case文 176 |
5-7-6 ループ文 177 |
5-7-7 手続き的タイミング制御 179 |
5-8 階層構造 181 |
5-8-1 モジュールのインスタンス化 182 |
5-8-2 モジュール・パラメータ 183 |
5-9 サブプログラム 184 |
5-9-1 ファンクション 184 |
5-9-2 タスク 185 |
5-10 ゲートレベルのモデル化 186 |
5-10-1 組み込みプリミティブ 187 |
5-11 ユーザ定義プリミティブ 189 |
5-12 組み込みサブプログラムとコンパイル指示子 192 |
5-12-1 組み込みタスクとファンクション 192 |
5-12-2 コンパイル指示子 194 |
5-13 第5章のまとめ 196 |
第6章 基本の記述スタイル 197 |
6-1 組み合わせ回路 197 |
6-1-1 デコーダ 198 |
6-1-2 エンコーダ 201 |
6-1-3 マルチプレクサ 205 |
6-1-4 パリティ 206 |
6-1-5 コンパレータ 208 |
6-1-6 算術演算 210 |
6-2 順序回路記述 22 |
6-2-1 DFF 213 |
6-2-2 ラッチ 216 |
6-2-3 シフトレジスタ 217 |
6-2-4 バイナリ・カウンタ 219 |
6-2-5 BCDカウンタ 221 |
6-2-6 パラレル‐シリアル変換 224 |
6-2-7 状態遷移マシン 226 |
6-3 ROM 232 |
6-3-1 セブンセグメント・ディスプレイ 233 |
6-4 RAM 235 |
6-5 テストベンチ 236 |
6-5-1 テストベンチの構造 236 |
6-5-2 時間と論理値によるテストベクタ 238 |
6-5-3 テストデータの読み込みによるテストベクタ 241 |
6-5-4 プログラム的な記述 251 |
6-6 第6章のまとめ 253 |
第7章 システム設計と動作合成 255 |
7-1 アルゴリズム/仕様設計 256 |
7-1-1 Matlab 256 |
7-1-2 UML 256 |
7-2 SystemC設計フロー 258 |
7-3 SystemC TLM検証 261 |
7-4 動作合成可能なBCA記述の作成 263 |
7-4-1 ハンドシェイキングの付加 264 |
7-4-2 サイクル精度記述 266 |
7-5 動作合成の実行 268 |
7-5-1 スケジューリング 269 |
7-5-2 ループの並列化 270 |
7-5-3 メモリ・マッピング 271 |
7-5-4 リソースの割り付けと共有化 272 |
7-5-5 パイプライン化 273 |
7-5-6 RTL出力処理 273 |
7-5-7 動作IPの使用 274 |
7-6 SystemCの動作記述例 275 |
7-6-1 アルゴリズム記述例 276 |
7-6-2 sc_fifoを用いたTLM検証例 278 |
7-6-3 インターフェイスの検討 286 |
7-6-4 動作合成モデルの作成 288 |
7-6-5 動作合成の実行 292 |
7-7 第7章のまとめ 293 |
第8章 RTL設計と論理合成 295 |
8-1 RTL設計 295 |
8-1-1 記述スタイル・チェック 296 |
8-1-2 プロパティ・チェック 297 |
8-2 RTL構造の検討 299 |
8-3 論理合成 308 |
8-3-1 設計制約条件 308 |
8-3-2 リソースの割り付けと共有化 309 |
8-3-3 レジスタ・インファレンス 310 |
8-3-4 演算順序の最適化 311 |
8-3-5 状態マシン合成 312 |
8-3-6 構造化と平坦化 312 |
8-3-7 冗長論理の削除 313 |
8-3-8 テクノロジ・マッピング 313 |
8-4 タイミング解析 315 |
8-4-1 遅延モデル 315 |
8-4-2 動作環境 318 |
8-4-3 タイミング・チェック 319 |
8-4-4 スタティック解析 vs ダイナミック解析 321 |
8-4-5 タイミング・パス 322 |
8-4-6 仮想配線モデル 325 |
8-4-7 階層構造に対する最適化 327 |
8-5 低消費電力化 328 |
8-5-1 消費電力モデル 329 |
8-5-2 スイッチング情報 331 |
8-5-3 消費電力の低減 333 |
8-6 テスト容易化設計 335 |
8-6-1 故障モデル 336 |
8-6-2 可制御性と可観測性 337 |
8-6-3 故障検出 338 |
8-6-4 スキャン設計 340 |
8-6-5 IPコアのテスト 344 |
8-6-6 Iddqテスト 344 |
8-6-7 BIST 345 |
8-6-8 バウンダリ・スキャン 346 |
8-7 第8章のまとめ 348 |
第9章 ゲートレベル検証とレイアウト設計 349 |
9-1 ゲートレベル検証 349 |
9-1-1 ゲートレベル・シミュレーション 350 |
9-1-2 等価検証 352 |
9-1-3 タイミング解析 353 |
9-2 レイアウト設計 354 |
9-2-1 フロアプランナー 355 |
9-2-2 フォワード・アノテーション 356 |
9-2-3 自動配置配線 357 |
9-2-4 バック・アノテーション 359 |
9-2-5 レイアウト後の再論理最適化 361 |
9-2-6 フィジカル合成 362 |
9-2-7 ECO 363 |
9-2-3 サインオフ検証 363 |
9-3 シグナル・インテグリティ解析とレイアウト検証 364 |
9-3-1 クロストーク解析 364 |
9-3-2 IRドロップ解析 365 |
9-3-3 エレクトロ・マイグレーション解析 365 |
9-3-4 DRC 365 |
9-3-5 LVS 366 |
9-4 製造工程 367 |
9-4-1 歩留まりとチップ単価 367 |
9-4-2 DFM 368 |
9-5 第9章のまとめ 369 |
付録 SystemCのインストール 371 |
A-1 Linuxへのインストール 371 |
A-2 参考文献 374 |
375 |