第4章 した問題を未然に防ぐことができます. ここでは,ASIC 開発に慣れていない論理設計者が失敗しやす い点を解説する.ASIC 開発は,ユーザ側の論理設計者とベン ●レベル・ラッチを生成させない ダ側のレイアウト設計者の共同作業である.開発期間を短縮し 最近は,RTL(register transfer level)のHDL(hardware たり,後工程でのトラブルを回避したければ,レイアウト設計 への影響を考慮しながら論理設計を行ったほうがよい.また, description language)を利用して論理設計を行います.こ ユーザとベンダの間で円滑なコミュニケーションを維持するこ こでよく起こるトラブルは,論理合成ツールが設計者の意 ともたいせつである. 図しない回路を合成するケースです.こうした例を,簡単 (編集部) な回路で説明します. 図1(a)のようなコンパレータを if 文を用いて記述した 本稿では,ASIC(application specific integrated circuit) 開発時の標準的な作業の中で起こりがちなトラブルの事例 とします.このとき,5∼10行目の記述がなければ,図1 を紹介します.設計の過程でトラブルが頻発したりその対 (b)のようなレベル・ラッチが生成されます.また,8,9 処に手間取ると,納期を守れなかったり,ASICの品質を 行目がない場合も,レベル・ラッチが生成されます. 維持できなかったりと,さまざまな問題が起こります.開 レベル・ラッチには,スルー(through)状態とホールド 発時に起こりうるトラブルを事前に把握しておけば,こう (hold)状態があります.スルー状態のときは信号が通過す process (P , Q) begin if ((P(3 downto 0)) = (Q(3 downto 0))) then LT <= '0'; else if (unsigned((P(3 downto 0))) < unsigned((Q(3 downto 0)))) then LT <= '1'; else LT <= '0'; end if; end if; end process; P3:0 process (p , Q) begin if ((p(3 downto 0)) = (Q(3 downto 0))) then LT <= '0'; end if; end process; レベル・ラッチの 真理値表 P=Q Q3:0 LT 入 力 D G X H H L L L 出 力 Q Q0 H L 状 態 ホールド スルー スルー P3:0 P=Q P<Q (a)正しい記述 Q3:0 D レベル・ Q LT G ラッチ (b)レベル・ラッチが生成される記述 〔図1〕4 ビット・コンパレータの記述(VHDL) (a)は,P=Qのときに‘0’を,P<Qのときに‘1’を,それ以外のときに‘0’を出力する回路である.(b)のように,P=Qのとき以外の記述を忘れると,レベル・ ラッチが生成されてしまう.これは,シミュレーションでは検出できない場合もある. Design Wave Magazine 2003 November 55 4 るだけなので,信号遅延(タイミング)を解析できます.一 Verilog HDLの場合は,以下のような記述になります. 方,ホールド状態のときは信号が分断されてしまい,信号 遅延を解析できないという問題が発生します.このような input[255:0] 端子名 ; 記述を行うと,設計者の意図しない回路が合成されます. こうした問題は論理合成ツールの課題と見ることもでき これらの記述を利用すると,設計者が機能ブロック間の ますが,設計者が事前に注意していれば,避けて通れる問 接続を行うときに,簡単に多数のネットをチップ内にはわ 題です. せることができます.ただし,これらの記述はレイアウト 実は,このレベル・ラッチによる信号の分断が存在する と,後のタイミング解析の工程で,解析対象のパスがつな がっていないとか,パスが見えないといったエラーが発生 します. 設計のときに,配線効率の低下を招くことになるので注意 が必要です. また,特定のブロックや端子に配線が集中するような回路 の場合も配線効率が低下し,レイアウト後のタイミングの収 同様の問題は,ステート・マシンなどを実現する際に用 束が難しくなります.例えば,オンチップ・バスである いる case 文の記述にも存在します.図2(a)に,その例を AMBA( Advanced Microcontroller Bus Architecture) 示します.この記述の中で,図2(b)のように8行目のwhen のリード・データ・バス用マルチプレクサなどの回路につ others ∼の記述を忘れると,レベル・ラッチが生成され いては,図3のようなトーナメント方式を採用するなど, ます. 一つのブロックに対する配線の集中を避けるような回路構 成を検討してください. ●レイアウト時に配線しにくい回路構成は避ける VHDLでは,以下のような方法で256本の信号のバンド ●テスト・パターンはできるだけ短く 数年前の論理検証では,詳細なタイミング(信号遅延)を ル記述を行えます. 考慮したゲート・レベル・モデルによるシミュレーション 端子名 : in std_logic_vector(255 downto 0) (ゲート・レベル・シミュレーション)が行われており,論 理検証に時間がかかりがちでした.当時の設計者は検証期 process (Sel, Q) begin case Sel is when '00' => out <= Q(23 downto 16); when '01' => out <= Q(15 downto 8); when others => out <= Q(7 downto 0); end case; end process; Q23:16 Q15:8 out Q7:0 デ コ ー ダ Sel 00h 01h others (a)正しい記述 〔図2〕 マルチプレクサの記述 (VHDL) (a)は,Sel信号が“00h”のとき に Q23 : 16 が out に,“01h”の ときにQ15:8がoutに,それ以 外のときにQ7:0がoutに出力 される回路である.(b)のよう に,それ以外のときの記述を忘 れると,レベル・ラッチが生成 され,過去のデータがホールド 出力されてしまう. 56 Q23:16 process (Sel, Q) begin case Sel is when '00' => out <= Q(23 downto 16); when '01' => out <= Q(15 downto 8); end case; end process; Design Wave Magazine 2003 November Q15:8 Sel デ コ ー ダ 00h 01h (b)レベル・ラッチが生成される記述 レベル・ ラッチ out
© Copyright 2025 ExpyDoc