ディジタル 回 路 設 計 の 基 礎 京 都 大 学 情 報 学 研 究 科 小 林 和 淑 kobayasi@i.kyoto-u.ac.jp
内 容 単 相 クロック 完 全 同 期 回 路 構 成 要 素 Dフリップフロップ 同 期 回 路 の 性 能 ハードウエア 設 計 手 法 論 理 設 計 手 法 の 歴 史 ハードウエア 記 述 言 語 RTL 設 計 LSIの 設 計 フロー セルベース 設 計 とゲートアレイ PLDとFPGA 2
単 相 クロック 完 全 同 期 回 路
同 期 回 路 とは? 時 間 方 向 を 同 期 パルス(クロック)により 量 子 化 (ディジタル 化 )した 回 路 クロックにより クロックとの 間 のタイミングを 考 慮 するだけでよくなる クロックがないと すべての 信 号 の 時 間 関 係 を 考 慮 し て 設 計 を 行 わなければならない クロックは 通 常 記 憶 素 子 (フリップフロップ)に 入 力 される クロックが 入 力 される 毎 に FFの 値 が 変 わる 4
同 期 回 路 の 構 成 要 素 RST フリップフロップ(FF)からなる 記 憶 素 子 RST RST D FFA Q D FFB Q CLK CLK 組 み 合 わせ 論 理 回 路 A B RST 入 出 力 ピン D FFC CLK Q CLK 5
単 相 クロック 完 全 同 期 回 路 記 憶 素 子 はフリップフロップ(FF)のみである 外 部 から 単 一 のクロックが 与 えられる このクロックの 立 ち 上 がりもしくは 立 ち 下 がりエッ ジのどちらか 一 方 にすべてのFFが 同 期 して 動 作 する 通 常 の 同 期 設 計 では 立 ち 上 がりエッジに 同 期 するFFと 立 ち 下 がりエッジに 同 期 するFFが 混 在 してはならない 非 同 期 リセットは 通 常 電 源 投 入 時 のみ 使 用 す る 6
基 本 論 理 ゲート NOT AND OR XOR MIL A Y A B Y A B Y A B Y A 0 1 0 0 1 1 0 0 1 1 0 0 1 1 B - - 0 1 0 1 0 1 0 1 0 1 0 1 Y 1 0 0 0 0 1 0 1 1 1 0 1 1 0 Verilog-HDL Y=~A Y=A&B Y=A B Y=A^B 2 進 数 の 各 種 演 算 を 実 行 するための 基 本 演 算 複 合 演 算 を 実 現 する 複 合 ゲート ANDNOR 等 7
組 み 合 わせ 論 理 回 路 の 例 全 加 算 器 A B C S C+ 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 A B C S C+ Ë 回 路 図 ² ² ² 真 理 値 表 と 論 理 式 8
LSI 中 のCMOS 基 本 論 理 ゲート CMOS 論 理 ゲートは 負 論 理 (NOT, NAND, NOR)が 基 本 A B Y A Y VDD + = A Y VDD B B Y A Y A B C+ A S C 9
Dフリップフロップ リセット CLK 入 力 出 力 D クロック Q 入 力 の 変 化 がクロックの 立 下 り または 立 ち 上 が りにより 出 力 に 伝 わる 通 常 リセットはクロックとは 非 同 期 10
CMOS 論 理 ゲートを 用 いたD-FF 面 積 が 大 きくなるので LSI 中 では 使 用 されない SET RST Q CLK Q D 11
Dフリップフロップの 回 路 構 造 集 積 回 路 中 のD-FFは, マスターとスレーブの2 個 のD-Latchを 接 続 した 構 造 をしている CLKN master CLKP slave D Q CLKP CLKP CLKN CLKN CLKN CLKP CLKN CLKP CLK ポジティブエッジトリガ 型 Dフリップフロップの 一 例 (リセットなし) 12
Dフリップフロップの 回 路 構 造 ( 続 き) RST CLKN master CLKP slave D Q CLKP CLKP CLKN CLKN CLKN CLKP CLK CLKN CLKP D-FF 非 同 期 リセットつき 13
Dフリップフロップの 動 作 D Q CK CK D master マスター 動 作 時 (CLK=0) slave Q CK CK master スレーブ 動 作 時 (CLK=1) slave 14
セットアップとホールド 時 間 t setup t hold セットアップ ホールド 時 間 を 守 らないと 誤 動 作 (ハザード)を 起 こす 場 合 がある 先 ほどの 回 路 構 造 からセットアップ 時 間 ホール ド 時 間 がどの 部 分 の 遅 延 に 依 存 するか 考 えてみ よう 15
DFFによる 遅 延 素 子 RST RST RST RST RST IN D D-FF Q D D-FF Q D D-FF Q D D-FF Q OUT CLK CLK CLK CLK CLK D-FFを4 個 つなげば 4クロック 遅 れる 遅 延 素 子 に CLK IN OUT 遅 延 させるだけでは 何 もできない 記 憶 を 行 わなければならない 16
イネーブルつきDFF (DFFE) DFFE RST RST D selector D DFF CLK Q Q ENABLE CLK ENABLE=1のとき Dの 入 力 を 取 り 込 む ENABLE=0のときは Qを 保 存 値 の 記 憶 に 使 う 17
同 期 回 路 の 性 能 FFA FF FFC FFB FF 間 の 遅 延 を 削 減 すれば 性 能 (クロック 周 波 数 )があげられ る クリティカルパス: 最 大 遅 延 パス FFへのクロック 供 給 をしっかり 行 い クロックのずれ(スキュー)を なくすことが 大 事 クロックツリー 等 18
クロックの 両 エッジ 設 計 者 の 陥 る 誘 惑 クロックの 両 エッジを 使 うと 1クロックで 倍 の 仕 事 がで きる 両 エッジを 使 うのは 誤 動 作 の 温 床 周 波 数 は 変 わらないが デューティー 比 は 簡 単 に 変 わ る 両 エッジを 使 うなら クロック 周 波 数 を 倍 にせよ デューティー 比 をコントロールできれば 使 用 することも 可 19
クロックのデューティー 比 入 力 デューティー 比 50:50 3 段 目 デューティー 比 48.8:51.2 両 エッジを 使 うと さらに 余 分 なイン バータが 入 り クロックの 位 相 がず れる 入 力 1 段 目 2 段 目 3 段 目 20
ハードウエア 設 計 手 法
ハードウエア 設 計 手 法 の 歴 史 50 代 : 頭 で 考 えて 紙 に 書 き TTLで 実 装 40 代 : 回 路 図 をCADで 描 いて LSIで 実 装 30 代 : HDLより 論 理 合 成 20 代 : さらに 高 級 な 言 語 (C, C++ 等 )より 直 接 回 路 を 合 成 (システムレベル 記 述 言 語 ) 回 路 規 模 (ゲート 数 ) ここを 説 明 ゲート 数 に 比 例 して 回 路 設 計 の 抽 象 度 がどんどんあがって いる 22
回 路 設 計 のつぼ 回 路 設 計 技 術 の 向 上 が 目 覚 しいが 動 作 から 自 動 的 に 最 適 な 回 路 を 作 る 技 術 はまだまだ 人 間 による 最 適 な 回 路 構 造 の 設 計 が 重 要 3つの 力 動 作 から 回 路 をおこす 想 像 力 よりコンパクトで 高 速 な 回 路 を 考 える 技 術 力 さまざまなツールを 使 いこなす 応 用 力» CADツール 間 のフィルタ 記 述 (perl, awk, sed 等 )» WindowのボタンをクリックしているだけではよいLSIはできない 23
HDLの 目 的 目 的 とする 回 路 の 機 能 を 人 間 のわかりやすいよ うにテキストで 記 述 して,その 記 述 から 自 動 的 に 回 路 記 述 を 生 成 する HDL 記 述 回 路 高 級 言 語 回 路 論 理 合 成 高 位 合 成 24
動 作 記 述 とRTL 記 述 動 作 記 述 回 路 の 動 作 を 記 述 する クロックがない ソフトウエアとほぼ 同 じ RTL(Register Transfer Level) 記 述 レジスタ( 記 憶 素 子 FF) 間 の 接 続 関 係 を 表 現 したも の そのまま 論 理 合 成 に 使 える 事 が 多 い 25
HDLの 種 類 Verilog-HDLとVHDL Verilog-HDL: Cadence 社 の 論 理 シミュレータ 用 言 語 から 派 生 VHDL: 回 路 仕 様 を 書 くことを 目 的 に 標 準 化 どちらも 論 理 合 成 を 目 的 として 開 発 した 言 語 ではない 記 述 できるが 合 成 できない シミュレーションできるが 合 成 できない 合 成 して も 正 しく 動 作 しない 26
Verilog-HDLとVHDL(Cont.) Verilog-HDL: 抽 象 度 が 低 い 回 路 的 電 気 系 向 き VHDL: 抽 象 度 が 高 い プログラム 的 情 報 系 向 き S0, S1, S2の 状 態 へのマッピング `define S0 2'b00; `define S1 2'b01; `define S2 2'b10; type state is (S0,S1,S2); 割 り 当 ては 合 成 任 せ ビット 数 と 割 り 当 てを 明 示 27
Verilog-HDLによる 論 理 素 子 A B A B Y Y assign Y=A&B; assign Y=A B; D RST DFF CLK Q always @(posedge CLK or negedge RST) if(!rst) Q<=0; else Q<=D; 28
HDLを 使 うメリット 抽 象 度 をあげられる HDL HDL A B FPGA A B FPGA A B 29
HDLを 書 くための 準 備 回 路 中 のフリップフロップ,レジスタ 等 の 記 憶 素 子 の 構 成 を 決 める それらフリップフロップ,レジスタをどのように 接 続 するかを 考 え,ブロック 図 を 書 く レジスタ 間 に 存 在 する 組 み 合 わせ 回 路 の 詳 細 は 考 え る 必 要 はない レジスタの 動 作 を 記 述 する (RTL 設 計 ) どのような 回 路 を 意 図 するか?が 重 要 ブロック 図 を 書 いて 意 図 した 以 外 のFF, レジスタが 入 るのを 防 ぐ 30
HDL 設 計 の 例 (カウンター) 記 述 A module counter(out,clk); input CLK; output [3:0] out; DFF DFF0(q0,d0,CLK); DFF DFF DFF1(q1,d1,CLK);... assign d0=q0&~q1...; 組 み 合 わせ assign d1=...; 論 理 回 路 endmodule ただ 単 に 回 路 図 をテキスト で 書 いただけ 記 述 B module counter(out,clk); input [3:0] in; input CLK; output [3:0] out; reg [3:0] out; always @(posedge CLK) out<=out+1; endmodule レジスタ(フリップフロップ) の 動 作 を 記 述 する 31
RTL 設 計 の 例 例 題 : 自 動 販 売 機 の 入 金 額 と 商 品 購 入 額 よりお 釣 りを 計 算 する 動 作 入 力 : 入 金 額 (1 回 のみ) 購 入 商 品 代 金 ( 複 数 ) 出 力 : お 釣 り 32
自 動 販 売 機 お 釣 り 計 算 CLK e_in 10 in[9:0] e_item 10 item[9:0] 入 金 後 商 品 のボタンを 押 せば その 金 額 が 送 られてくる 入 金 があったときと 商 品 のボタンを 押 したときには それに 同 期 したパルスが 入 力 される 33
RTL 設 計 使 用 するレジスタを 決 める レジスタ 間 の 接 続 を 決 める レジスタに 書 き 込 む 条 件 を 決 める 使 用 するレジスタ inmoney[9:0] 入 金 額 itmoney[9:0] 商 品 代 金 change[9:0] お 釣 り 入 金 額 in 商 品 代 金 item e_in EN inmoney itmoney????? change お 釣 り change Changeに 書 き 込 む 条 件? 34 EN e_item
RTL 設 計 の 最 適 化 入 金 額 商 品 代 金 は 覚 えておかなくてよい 制 御 が 簡 単 なように RTLを 変 更 する 使 用 するレジスタ change[9:0] お 釣 り e_inが1ならin, e_itemが1な ら 減 算 結 果 を 書 き 込 む in item change change Verilog-HDL 記 述 module vend(change,e_in,e_it,in,item,clk); output [9:0] change; input e_in,e_it,clk; input [9:0] in,item; reg [9:0] change; always @(posedge CLK) if(e_in) change<=in; else if(e_it) change<=change-item; endmodule 35
最 適 なRTLを 設 計 するには 経 験 と 勘 が 必 要 豊 富 な 設 計 経 験 共 有 できるものは 共 有 する(リソースシェアリング) ただし 共 有 するとかえって 悪 くなる 場 合 もある どのような 回 路 が 合 成 される(た)かを 考 える RTL 記 述 がどのような 回 路 になるか? たとえば HDLのif 記 述 の 多 階 層 化 if() if() if(). クリティカルパスがどん どん 長 くなる 36
LSIの 設 計 フロー
LSIの 設 計 フロー( 設 計 側 ) nand2 A B (LVS) C HDL module nand_g(c,a,b); input A,B; output C; assign C=~(A&B); endmodule module nand_g(c,a,b); input A,B;output C; nand2 I0(C,A,B); endmodule n 1 A B (LVS) nand2 C HDL module nand_g(c,a,b); input A,B; output C; assign C=~(A&B); endmodule module nand_g(c,a,b); input A,B;output C; nand2 I0(C,A,B); endmodule LSI 1 LSI 38
LSIの 設 計 フロー( 製 造 側 ) nand2 A B (LVS) C HDL module nand_g(c,a,b); input A,B; output C; assign C=~(A&B); endmodule module nand_g(c,a,b); input A,B;output C; nand2 I0(C,A,B); endmodule レイアウトとマスクは1 対 1 対 応 ではない n 1 n 1 LSI 1 LSI 1 LSI LSI 39
LSIの 設 計 フロー(Cont.) 論 理 設 計 : ネットリスト 回 路 図 エントリ HDL 記 述 からの 論 理 合 成 レイアウト 設 計 : レイアウトパタン フルカスタム: 全 部 手 で 書 く セミカスタム: ある 程 度 自 動 化 マスク 設 計 : マスクパタン レイアウトパタンからマスクを 作 成 LSIの 製 造 クリーンルームにて 原 理 は 印 刷 と 同 じ 40
セルベース 設 計 とゲートアレイ(GA) フルカスタム(レイアウトを 手 で 描 く)では 時 間 と 費 用 がかかりすぎる!! ただし 性 能 は 圧 倒 的 によくなる セルベース 設 計 (スタンダードセル) あらかじめ 基 本 論 理 ゲートのパタンを 用 意 し それを 規 則 的 に 並 べる ゲートアレイ(GA) 基 本 論 理 ゲートの 下 地 を 作 っておき 配 線 のみ 変 更 設 計 期 間 製 造 期 間 の 短 縮 マスク 代 が 安 くなる 41
スタンダードセルレイアウト 例 チップ 全 体 のレイアウト PAD 領 域 VDEC CMOS1.2um 2.3mm 角 Core 領 域 42
スタンダードセルレイアウト 例 レイアウトの 一 部 論 理 ゲート FF 等 のライブラリセルをアレイ 上 に 並 べてから 配 線 を 行 う 43
PLDとFPGA
プログラマブルロジックデバイス(PLD) 設 計 者 が 自 由 にその 機 能 を 変 更 できるLSIの 総 称 ( 広 義 ) MPD: マスクプログラマブル 製 造 時 に 変 更 FPD: フィールドプログラマブル その 場 で 変 更 小 規 模 PLDの 種 類 PLA: Programmable Logic Array» AND-OR アレイ PAL: Programmable Array Logic»ORアレイが 固 定» 派 生 品 として GAL, PLD( 狭 義 ) 45
PLDの 構 造 OR OR PAL OR AND AND DFF PLA, PAL GAL, PLD 46
PALのプログラム 例 AB+AC A B C 47
FPGA (Field Programmable Gate Array) フィールドプログラマブルな 大 規 模 集 積 回 路 ようは 大 規 模 なPLD 論 理 ゲートとフリップフロップをアレイ 上 に 敷 き 詰 めて その 間 の 結 線 を 自 由 に 変 更 ただし 論 理 ゲートそのものが 内 蔵 されているとは 限 ら ない コンフィグレーションデータを 書 き 込 むことにより 機 能 が 変 化 する MPGA: Mask Programmable Gate Array 一 般 的 にGA 48
FPGAの 構 造 組 み 替 え 可 能 な 論 理 ブロック 論 理 ブロック 間 を 接 続 する 組 み 替 え 可 能 な 配 線 49
FPGAのプログラム 記 憶 方 式 FPGAの 現 在 の 構 成 (コンフィグレーション)を 覚 えておく 方 法 SRAM 等 の 揮 発 性 メモリに 書 き 込 む. もっともポピュラー 特 別 なプロセスを 必 要 としない EPROM, EEPROM 等 の 不 揮 発 性 メモリに 書 き 込 む. 電 圧 をかけて, アンチヒューズを 短 絡 させる. 50
プログラム 方 式 BL WL SRAM ロジックと 同 じプロセスで 製 造 できる 冗 長 度 が 大 きい BL To Switch Floating Gate EPROM,EEPROM 特 殊 なプロセスを 要 求 冗 長 度 は 小 さい >100G 51 IN A B A B open Anti-fuse 小 さくて 高 速 Apply 16V between A and B 書 き 込 みは 一 度 だけ OUT
FPGAの 特 性 分 類 ËÊ Å ÈÊÇÅ 書 き 込 み 回 数 に 制 限 のあるものが 多 い 52
XILINX XCシリーズの 構 造 A CLB CLB CLB B C (LUT) (SRAM) FF CLB CLB CLB CLB CLB CLB D CLB CLB CLB CLB CLB: Configurable Logic Block 53
LUT(Look-up Table) SRAM 型 FPGAの 可 変 論 理 を 実 現 する A, B, C, Dの4ビット 入 力 をワー ド 線 とした1ビットのSRAM SRAMの 中 身 を 書 き 換 えるこ とで 任 意 の 論 理 を 実 現 (A B)&(C D)に 対 するLUT ¼ ¼ ¼ ¼ ¼ ¼ ¼ ½ ¼ ¼ ¼ ½ ¼ ¼ ¼ ¼ ½ ½ ¼ ¼ ½ ¼ ¼ ¼ ¼ ½ ¼ ½ ½ ¼ ½ ½ ¼ ½ ¼ ½ ½ ½ ½ ¼ ¼ ¼ ¼ ¼ ½ ¼ ¼ ½ ½ ½ ½ ¼ ½ ¼ ½ ½ ¼ ½ ½ ½ ½ ½ ¼ ¼ ¼ ½ ½ ¼ ½ ½ ½ ½ ½ ¼ ½ 00/8/7,11 VLSI 設 計 夏 の 学 校 ディジタル 回 路 ½ ½ ½ ½ ½ 設 計 の 基 礎 54
スイッチマトリックス SRAM 型 FPGAの 可 変 配 線 を 実 現 任 意 の 接 続 が 可 能 55
ALTERA FLEXの 構 造 (LE) A B C D LAB (LAB LE ) LUT FF (LE) LAB (LAB) ( 1) 56
FPGAの 設 計 法 A B nand2 C HDL module nand_g(c,a,b); input A,B; output C; assign C=~(A&B); endmodule 通 常 のLSIと 同 じ 設 計 手 法 を 取 る LUTを 直 接 設 計 するわけで はない FPGAの 配 置 配 線 は 各 FPGAベンダー 配 布 のツー ルにより 行 う module nand_g(c,a,b); input A,B;output C; nand2 I0(C,A,B); endmodule LE LSI CAD FPGA FPGA 57
CAD FPGAベンダのツール È ÓÑÔ Ð Ö ÁÁ ËÝÒÓÔ Ý Ô ØÖÙÑ Ü ÑÔÐ Ö ËÝÒÔÐ Ý ËÝÒÔÐ ØÝ ËÝÒÓÔ Ý Î ÛÐÓ µ ÏÓÖ Î Û ÇÆ È Å ÔÐÙ ÁÁ ÉÙ ÖØÙ ÄÌ Ê ÐÐ Ò ÁÄÁÆ ÌÓÔ Ø Ð FPGA Compiler IIはVDECのライセンスで 利 用 可 能 各 社 FPGAの 無 償 ツールあり 大 学 向 けのプログラムも あり See http://www.ベンダ 名.com/ 58
まとめ 記 述 レベルがどんどん 抽 象 化 していっても RTL はしばらく 生 き 残 る 回 路 の 動 作 から 最 適 なRTLを 導 き 出 す 能 力 を 養 うことが 肝 要 組 み 合 わせ 回 路 の 最 適 化 は 計 算 機 に 任 せれ ばよいが 記 述 からどのような 回 路 が 合 成 され ているかは 見 ておく 59
参 考 資 料 ディジタル 集 積 回 路 の 設 計 と 試 作 VDEC 監 修 浅 田 邦 博 編 ( 培 風 館 ) ISBN4-563-03547-5 / 定 価 3000 円 著 者 : 越 智 裕 之 ( 広 島 市 立 大 学 ) 池 田 誠 ( 東 京 大 学 ) 小 林 和 淑 ( 京 都 大 学 ) 本 資 料 http://www-lab13.kuee.kyoto-u.ac.jp/~kobayasi/refresh にてPDFで 公 開 予 定 琵 琶 湖 WSポスターセッションの 投 稿 を!! 賞 金 10 万 円 締 切 8 月 31 日 60