半導体・LSI設計の技術面接でよく問われる質問
ハードウェア・半導体の技術面接でよく問われる基本を、トピックごとに8問ずつ集めました。答えは開いて確かめられ、問題を押すと詳しい解説のページに移ります。まとめて解きたいときは、各トピックの「通して解く」から始めてください。
論理回路と計算機算術
- 2入力NANDゲートの出力が0になるのはどのときか。
答えを見る
2つの入力がともに1のとき
NANDはANDの否定で、出力が0になるのは入力がすべて1のときだけ、それ以外は1です。NANDだけでNOT・AND・ORを作れる「万能ゲート」で、CMOSでは4個のトランジスタで作れ、ANDより少ない素子で済みます(ANDはNANDにインバータを付けた6個)。そのため標準セルの論理合成ではNANDやNORを基本に回路を組み、NANDフラッシュの名前もセルの直列接続がNANDの構造に似ていることに由来します。
- 8ビットのうち下位4ビットを小数部とする固定小数点(符号なし)で、ビット列 0011 1000 が表す値はいくらか。
答えを見る
3.5
上位4ビットの0011が整数部で3、下位4ビットの1000が小数部で、1ビット目の重みが2⁻¹ = 0.5なので0.5を表します。合わせて3 + 0.5 = 3.5です。言いかえると、ビット列を整数として読んだ56を、小数部の4ビット分の2⁴ = 16で割った値になります(56 ÷ 16 = 3.5)。56は小数点を無視して整数として読んだ値、3.8は2進数の1000を10進数の「.8」と読み違えた値です。
- ド・モルガンの定理によれば、NOT(A AND B) と等しい論理式はどれか。
答えを見る
(NOT A) OR (NOT B)
ド・モルガンの定理は NOT(A AND B) = (NOT A) OR (NOT B)、NOT(A OR B) = (NOT A) AND (NOT B) で、否定をかっこの中に分配するとANDとORが入れ替わります。言葉にすると「両方とも真ではない」=「少なくとも一方が偽」です。回路図では、NANDを「入力に丸の付いたOR」と描き換えられ、負論理の信号を扱うときやNANDだけで回路を組むときに使います。
- IEEE 754の浮動小数点数を構成する3つの部分の組み合わせとして正しいものはどれか。
答えを見る
符号、指数部、仮数
浮動小数点数は、値を「(−1)^符号 × 1.仮数 × 2^指数」の形で表し、正か負かを表す符号ビット、2の何乗かを表す指数部、有効数字を表す仮数の3つの部分で記録します。指数で小数点の位置を動かせるので、非常に小さな数から大きな数までを同じビット数で表せます。整数部と小数部に分けるのは固定小数点の考え方で、パリティは誤りの検出のためのビットです。
- D型フリップフロップの動作として正しいものはどれか。
答えを見る
クロックのエッジでD入力の値を取り込み、次のエッジまで保持する
D型フリップフロップは、クロックの立ち上がり(または立ち下がり)のエッジでD入力の値を取り込み、次のエッジまで保持します。エッジの瞬間だけを見るため、その間に入力が変化しても出力は変わりません。CPUのレジスタやパイプラインの段の区切り、カウンタなど順序回路の基本で、内部は2つのラッチを主従(マスター・スレーブ)につないだ構造です。正しく取り込むにはセットアップ時間とホールド時間を守る必要があります。
- IEEE 754の倍精度(64ビット)の浮動小数点数で、指数部と仮数のビット数の組み合わせとして正しいものはどれか。
答えを見る
指数部11ビット、仮数52ビット
倍精度(FP64)は、符号1ビット、指数部11ビット、仮数52ビットで合計64ビットです。指数のバイアスは1023で、およそ10⁻³⁰⁸〜10³⁰⁸の範囲を表せ、先頭の1を含めた53ビットの精度は10進数でおよそ15〜16桁にあたります。単精度より指数部も仮数も広げてあり、科学技術計算で標準的に使われます。指数部8ビットは単精度の幅のまま仮数だけを広げた組み合わせで、規格の形式ではありません。
- 2入力XOR(排他的論理和)ゲートの出力が1になるのはどのときか。
答えを見る
2つの入力が異なるとき
XORは2つの入力が異なるとき1、同じとき0を出力します。式では A⊕B = A・¬B + ¬A・B です。「一方の入力が1なら他方を反転、0ならそのまま通す」と見ることもでき、制御付きインバータとして使えます。半加算器の和、比較回路(一致検出はXNOR)、パリティの計算、暗号のストリーム暗号やCRCの計算など、用途が広いゲートです。
- IEEE 754の正規化数で、仮数の先頭の1を記録しない(隠れビット)ことの効果として正しいものはどれか。
答えを見る
同じビット数で精度が1ビット分増える
2進数で正規化すると、0以外の数は必ず「1.xxx × 2^指数」の形になり、先頭は常に1です。決まっている1をわざわざ記録する必要はないので省き、その分のビットを小数部に使います。そのため単精度では仮数の記録が23ビットでも、精度は24ビットになります。ただし指数部がすべて0の非正規化数では先頭を0とみなします。負の数は符号ビットで表し、丸め誤差がなくなるわけでもありません。
CMOSとMOSFET
- ゲート絶縁膜の材料と面積を変えずに膜厚だけを薄くすると、単位面積あたりのゲート容量はどうなるか。
答えを見る
大きくなる
ゲート容量は平行平板コンデンサとみなせ、単位面積あたり Cox = ε/t です。膜厚を薄くすると容量が大きくなり、同じゲート電圧でチャネルに誘起される電荷が増え、駆動電流が増えて短チャネル効果も抑えられます。ただしSiO2を約1.2 nmまで薄くした時点でトンネル電流によるゲートリークが限界に達し、物理的に厚くできるHfO2系のHigh-k材料が、インテルでは45 nm世代(2007年)から、多くのメーカーでは28〜32 nm世代から使われています。
- GAA(ゲートオールアラウンド)型トランジスタの説明として正しいものはどれか。
答えを見る
ナノシートなどのチャネルの全周をゲートが囲む
GAA型は、厚さ数nmの薄いシート状(ナノシート)や細線状のチャネルを数枚積み重ね、その全周をゲートで囲む構造です。4方向から制御するためFinFETよりさらにゲートの支配力が強く、より短いゲート長まで短チャネル効果を抑えられます。Samsungが3 nm世代(2022年)、TSMCが2 nm世代、Intelが18A世代で採用し、FinFETの次の標準構造になっています。
- 同じ寸法のnMOSとpMOSでは、一般にnMOSの方が駆動電流が大きい。その主な理由はどれか。
答えを見る
チャネルを流れる電子の移動度が、正孔の移動度より大きいから
nMOSでは電子、pMOSでは正孔がチャネルを流れ、シリコンの反転層では電子の移動度が正孔の約2〜3倍あるため、同じ寸法ならnMOSのほうが大きな電流を流せます。CMOSではpMOSのゲート幅を広くしてバランスをとります。先端プロセスではSiGeの圧縮ひずみでpMOSの移動度を高め、FinFETでは正孔が流れやすい(110)面がフィンの側壁になることもあって、差はかなり縮まっています。
- MOSFETの短チャネル効果として当てはまるものはどれか。
答えを見る
ゲート長を短くするとしきい値電圧が低下し、オフ時のリーク電流が増える
ゲート長が短くなると、ソースとドレインの空乏層が相対的に大きくなり、チャネルの電荷の一部をゲートではなくソース・ドレインが支配するようになります。その結果、しきい値電圧の低下(ロールオフ)、ドレイン電圧によるしきい値の低下(DIBL)、サブスレッショルド係数の悪化、オフ時のリーク電流の増加などが起こります。製造ばらつきでゲート長が少し変わるだけで特性が大きく変わる点も問題です。
- nチャネルMOSFETで、ソースに対して基板(ボディ)に負の電圧をかける(基板バイアスをかける)と、しきい値電圧はどうなるか。
答えを見る
上昇する
ソースと基板の間に逆バイアスを加えるとゲート下の空乏層が広がり、空乏層の電荷が増えるため、それを打ち消すためにより大きなゲート電圧が必要になります。そのためしきい値電圧が上がります(基板バイアス効果、ボディ効果)。直列につないだトランジスタの上側ではソース電位が上がるため、この効果でVthが上がり遅くなります。逆にこの性質を使い、基板電圧でVthを調整してリークを減らす手法もあります。
- ゲート絶縁膜にHigh-k(高誘電率)材料を使う主な理由はどれか。
答えを見る
誘電率が高い材料を使えば、物理的な膜厚を厚くしてトンネル電流を抑えながら、大きなゲート容量を得られるため
SiO2を約1.2 nmより薄くすると、トンネル電流によるゲートリークが膜厚0.1 nmごとに数倍ずつ急増します。比誘電率が約20〜25のハフニウム系酸化物を使うと、同じゲート容量のまま物理的な膜厚を数倍にでき、リークを数桁抑えられます。High-k膜はポリシリコンゲートとの界面でしきい値が固定されやすい(フェルミレベルピニング)ため、メタルゲートと組み合わせ、45 nm世代(2007年)から使われています。
- デプレッション型MOSFETの特徴として正しいものはどれか。
答えを見る
ゲート電圧が0 Vでもチャネルが存在し、電流が流れる
デプレッション型はチャネルがあらかじめできており、ゲート電圧が0 Vでも電流が流れる(ノーマリーオン)MOSFETです。nチャネルなら負のゲート電圧でチャネルを消して電流を止めます。初期のNMOS論理では負荷素子として使われました。電源が落ちても導通するため安全面で注意が必要で、GaNのHEMTも本来はノーマリーオンのため、ノーマリーオフ化する構造の工夫が行われています。
- トランジスタのチャネルにひずみ(応力)を加える技術の主な目的はどれか。
答えを見る
キャリアの移動度を高め、駆動電流を増やす
シリコン結晶にひずみを加えるとバンド構造が変わり、キャリアの有効質量や散乱が減って移動度が向上します。nMOSには電流方向の引っ張りひずみ、pMOSには圧縮ひずみが有効で、pMOSではソース・ドレインにSiGeを埋め込み、nMOSでは引っ張り応力をもつ窒化膜で覆う方法などが使われます。90 nm世代(2003年頃)から導入され、微細化と並ぶ性能向上の柱になりました。
タイミング解析とCDC
- クロック周期 2.0 ns の同期回路で、送り側フリップフロップのクロック→出力遅延が 0.2 ns、組み合わせ回路の遅延が 1.4 ns、受け側フリップフロップのセットアップ時間が 0.1 ns である。クロックスキューを0とすると、セットアップのスラックはいくらか。
答えを見る
0.3 ns
セットアップのスラックは「要求時刻 − 到着時刻」で求めます。データの到着時刻は 0.2 + 1.4 = 1.6 ns、要求時刻は次のクロックエッジからセットアップ時間を引いた 2.0 − 0.1 = 1.9 ns なので、スラックは 1.9 − 1.6 = 0.3 ns です。正の値なので制約を満たしています。0.4 ns はセットアップ時間を引き忘れた値、0.5 ns はセットアップ時間を逆に足してしまった値です。スラックが負になると違反です。
- フリップフロップ間の経路で、クロック→出力遅延が 0.15 ns、組み合わせ回路の最大遅延が 2.2 ns、セットアップ時間が 0.15 ns である。スキューとクロックの不確かさを無視すると、この経路で動作できる最大のクロック周波数はいくらか。
答えを見る
400 MHz
最小のクロック周期は、クロック→出力遅延、組み合わせ回路の遅延、セットアップ時間の合計です。0.15 + 2.2 + 0.15 = 2.5 ns なので、最大周波数は 1 ÷ 2.5 ns = 400 MHz になります。約 425 MHz はセットアップ時間を入れ忘れた 2.35 ns から、約 455 MHz は組み合わせ回路の遅延 2.2 ns だけから計算した値です。チップ全体の最大周波数は、このような経路のうち最も厳しいクリティカルパスで決まります。
- STAのレポートに出てくるWNSとTNSの説明として正しいものはどれか。
答えを見る
WNSは最も悪いスラックの値、TNSは負のスラックを合計した値である
WNS(Worst Negative Slack)は、すべての経路の中で最も悪いスラックで、周波数をどこまで上げられるかの目安になります。TNS(Total Negative Slack)は、違反している経路の終点ごとの負のスラックを合計した値です。例えば −0.1 ns の終点が3つあれば、WNSは −0.1 ns、TNSは −0.3 ns です。WNSの絶対値が小さくてもTNSの絶対値が大きければ、多くの経路を直す必要があります。違反の本数は別の指標で示され、WNSとTNSはセットアップとホールドのそれぞれについて求めます。
- クロック周期 1.0 ns、クロック→出力遅延 0.1 ns、組み合わせ回路の遅延 0.85 ns、セットアップ時間 0.08 ns の経路がある。受け側フリップフロップのクロックが送り側より 0.05 ns 遅れて届くとき、セットアップのスラックはいくらか。
答えを見る
+0.02 ns
受け側のクロックが遅れて届く(正のスキュー)と、データを取り込むエッジが後ろにずれるので、セットアップに使える時間が増えます。要求時刻は 1.0 + 0.05 − 0.08 = 0.97 ns、到着時刻は 0.1 + 0.85 = 0.95 ns なので、スラックは +0.02 ns です。−0.03 ns はスキューを無視した値、−0.08 ns はスキューの向きを逆に(受け側が早く届くとして)扱った値です。同じスキューはホールドには不利に働く点に注意が必要です。
- 受け側フリップフロップのクロックが送り側より遅れて届く(正のスキュー)ときの、セットアップとホールドへの影響として正しいものはどれか。
答えを見る
セットアップは余裕が増え、ホールドは厳しくなる
セットアップは次のエッジでの取り込みなので、受け側のエッジが遅れるほどデータの到着を待てます。一方ホールドは、同じエッジで送り出された新しいデータが前のデータを上書きしないかを見るチェックなので、受け側のエッジが遅れるほど、新しいデータが早く着きすぎる危険が増えます。例えばスキューが +0.1 ns なら、セットアップのスラックは 0.1 ns 増え、ホールドのスラックは 0.1 ns 減ります。負のスキューでは逆になります。
- 送り側のクロック→出力遅延が最小 0.08 ns、組み合わせ回路の最小遅延が 0.02 ns、受け側のホールド時間が 0.05 ns である。受け側のクロックが送り側より 0.1 ns 遅れて届くとき、ホールドのスラックはいくらか。
答えを見る
−0.05 ns(違反)
ホールドのスラックは「到着時刻 − 要求時刻」で、データが早く着きすぎないかを見ます。データの最小到着時刻は 0.08 + 0.02 = 0.10 ns、要求時刻は受け側のクロックの到着 0.1 ns にホールド時間 0.05 ns を足した 0.15 ns なので、スラックは 0.10 − 0.15 = −0.05 ns で違反です。+0.05 ns はスキューを無視した値、+0.15 ns はスキューを有利な向きに足してしまった値です。シフトレジスタのように間の論理が少ない経路で起きやすい違反です。
- 同じクロックの立ち上がりエッジで送り出しと取り込みを行う通常の経路で、ホールド違反(スラック −0.03 ns)が見つかった。クロック周波数を半分に下げたときの、この違反の扱いとして正しいものはどれか。
答えを見る
ホールドのチェックはクロック周期に関係しないので、違反は残る
ホールドのチェックは、同じクロックエッジで送り出された新しいデータが、受け側で前のデータを壊さないかを見るもので、このような経路では式にクロック周期が入りません。そのため周波数を下げても −0.03 ns のスラックは変わらず、悪化もしません。一方セットアップは周期に依存するので、周波数を下げれば救えます。製造後に見つかったホールド違反は、周波数の調整では直せない致命的な不良になりやすいため、設計段階で確実に修正しておくことが重要です。
- ホールド違反を直すために、データ経路に遅延用のバッファを挿入する。このときに確認すべきこととして最も重要なものはどれか。
答えを見る
追加した遅延によって、同じ経路のセットアップのスラックが不足しないこと
ホールド違反はデータが早く着きすぎることなので、データ経路に遅延を足して到着を遅らせます。ただし足した遅延はセットアップの到着時刻も遅らせます。ホールドは速いコーナーで 0.05 ns 改善するバッファが、遅いコーナーでは 0.1 ns 以上の遅延になることもあるので、セットアップに余裕がある範囲で入れる必要があります。受け側のクロックにも同じ遅延を入れると改善分が打ち消され、駆動力を上げて遅延を減らすのは目的と逆です。
HDLと検証
- VerilogなどのHDLで書いた記述と、C言語などのソフトウェアのプログラムとの大きな違いとして正しいものはどれか。
答えを見る
HDLの記述は、同時に並行して動く回路を表している
HDLは見た目がプログラムに似ていますが、書いた内容は論理合成によってゲートやフリップフロップの回路になります。回路の各部分は常に同時に動いているので、複数のassign文やalwaysブロックは書いた順番に関係なく並行して働きます。ソフトウェアのように「この処理が終わったら次」と考えると、思った回路にならないので、どんな回路ができるかを想像しながら書くことが大切です。
- Verilogでmoduleを使う目的として正しいものはどれか。
答えを見る
入力と出力の端子(ポート)を持つ回路の部品を定義し、ほかのmoduleの中で使えるようにする
moduleは、入力と出力のポートを持つ回路のまとまりを定義する単位で、加算器やカウンタ、CPU全体などを表します。定義したmoduleは、別のmoduleの中で部品として何度でも使え(インスタンス化)、ポートを配線でつないで大きな回路を組み立てます。基板の上に部品を並べて配線するのと同じように、回路を階層的に作れます。
- Verilogのwire型とreg型の違いとして正しいものはどれか。
答えを見る
wireはassign文などでつながれる配線を表し、regはalwaysブロックの中で値を代入する信号を表すが、regが必ずフリップフロップになるわけではない
Verilogでは、assign文やmoduleの出力で駆動される信号はwire、alwaysブロックの中で代入される信号はregと宣言する決まりです。regは「レジスタ」の略に見えますが、always @(*)の中で代入すれば組み合わせ回路になり、フリップフロップにはなりません。フリップフロップになるかどうかは、クロックのエッジで値を更新する書き方かどうかで決まります。SystemVerilogでは両方をlogic型で書けます。
- Verilogのノンブロッキング代入(<=)の動作として正しいものはどれか。
答えを見る
同じタイミングのすべての右辺を先に評価し、その後でまとめて左辺を更新する
ノンブロッキング代入では、クロックのエッジで、すべての<=の右辺をまず古い値のまま評価し、そのあとで一斉に左辺を書き換えます。これは、同じクロックで動く多数のフリップフロップが、エッジの直前の値を同時に取り込む実際の回路と同じ動きです。そのため、クロックで動く順序回路の記述にはノンブロッキング代入を使うのが原則です。
- Verilogで代入の種類を使い分けるときの一般的なガイドラインとして正しいものはどれか。
答えを見る
クロックで動く順序回路にはノンブロッキング代入(<=)、組み合わせ回路のalwaysにはブロッキング代入(=)を使う
順序回路をノンブロッキング代入で書くと、すべてのフリップフロップが同時に値を取り込む回路の動きと一致し、記述の順番や、ほかのalwaysブロックとの実行の順番に結果が左右されません。組み合わせ回路では、上から順に途中の値を計算していく書き方が自然なので、ブロッキング代入を使います。1つのalwaysブロックの中で両方を混ぜないことも大切です。
- Verilogで「always @(*)」と書く意味として正しいものはどれか。
答えを見る
ブロックの中で読んでいる信号のどれかが変わるたびに実行される、組み合わせ回路を表す
alwaysの後の@( )の中はセンシティビティリストと呼ばれ、どの信号が変わったときにブロックを実行するかを指定します。「*」と書くと、ブロックの中で読んでいるすべての信号が自動で並んだことになり、組み合わせ回路を正しく表せます。手で並べると書き漏れが起きやすいので、組み合わせ回路には「@(*)」やSystemVerilogのalways_combを使うのが安全です。
- 組み合わせ回路のalwaysブロックで、意図しないラッチを防ぐためによく使われる書き方はどれか。
答えを見る
ブロックの先頭で、出力のすべての信号にデフォルトの値を代入してから条件分岐を書く
ブロックの先頭で「y = 0; valid = 0;」のように出力にデフォルトの値を入れておけば、後の条件分岐でどの経路を通っても、少なくともデフォルトの値が代入されているので、値を保つ必要がなくなりラッチはできません。条件の多い状態機械の出力の記述などで特に役に立ちます。SystemVerilogのalways_combを使うと、ラッチができたときにツールが警告を出してくれます。
- 次のVerilogの記述のうち、論理合成で回路にならず無視されるもの(シミュレーション用の記述)はどれか。
答えを見る
#10 のような遅延の指定
「#10」は、シミュレーションの中で時間を10単位進めることを表しますが、論理合成は遅延を作ることができないので無視します。回路の実際の遅延は、使うゲートや配線で決まります。ほかにも、$displayのような表示の命令や、ファイルの読み書きなど、テストベンチ用の記述は回路になりません。合成するRTLの中にこうした記述を混ぜると、シミュレーションと実機の動きが違う原因になります。
CPUとメモリ階層
- キャッシュメモリを設ける主な目的として正しいものはどれか。
答えを見る
よく使うデータをCPUの近くに置き、主記憶との速度差を緩和するため
CPUが1クロック(0.2〜0.3 ns)で処理する間に、DRAMへのアクセスには数十〜100 ns、つまり数百クロックかかります。そこでよく使うデータや命令を高速なSRAMのキャッシュに置き、待ち時間を減らします。同じデータを近いうちにまた使う時間的局所性と、近くのアドレスを続けて使う空間的局所性を利用しており、L1で数クロック、L3でも数十クロックでアクセスできます。
- 時間的局所性の例として最も適切なものはどれか。
答えを見る
ループの中で同じ合計用の変数を何度も更新する
時間的局所性は、一度使ったデータを近いうちにまた使う性質で、ループ内で繰り返し読み書きする変数が典型例です。こうしたデータはキャッシュやレジスタに残っている間に再利用されるため、アクセスが速くなります。配列を先頭から順に読むのは、近くのアドレスを続けて使う空間的局所性の例で、時間的局所性とは別の性質です。ランダムに1回だけ読むアクセスには、どちらの局所性もほとんどありません。
- ノイマン型コンピュータの特徴として正しいものはどれか。
答えを見る
プログラム(命令)とデータを同じ主記憶に格納し、命令を順に読み出して実行する
ノイマン型(プログラム内蔵方式)では、命令とデータを同じ主記憶に置き、CPUが命令を順に読み出して実行します。プログラムをデータとして書き換えられる柔軟さが強みで、現在のコンピュータの基本です。一方、命令とデータが同じ経路を取り合うことが速度の制約になり、これをノイマン・ボトルネックと呼びます。そのため多くのCPUはL1キャッシュを命令用とデータ用に分けています(ハーバード型の考え方)。
- アドレスが32ビット、容量32 KB、ラインサイズ64バイトのダイレクトマップ方式のキャッシュで、タグは何ビットになるか。
答えを見る
17ビット
ラインサイズ64バイト = 2⁶ なのでオフセットは6ビットです。ライン数は 32 KB ÷ 64 B = 32768 ÷ 64 = 512 = 2⁹ で、ダイレクトマップではライン数がそのままセット数なのでインデックスは9ビットです。残りがタグで、32 − 9 − 6 = 17ビットになります。19ビットは4ウェイのセットアソシアティブにしてインデックスが2ビット減ったときの値で、ダイレクトマップには当てはまりません。
- 1つのチップに複数のプロセッサコアを搭載する(マルチコア化する)主な目的はどれか。
答えを見る
並列処理によって、消費電力あたりの処理性能を高める
動的電力は電圧の2乗と周波数に比例するため、2000年代半ばにクロック周波数を上げ続けると発熱が限界(約100 W級)に達しました。そこで同じ電力で複数のコアを並べ、処理を分担して性能を高める方向に進みました。周波数を少し下げてコアを2つにすると、電力あたりの性能は大きく向上します。ただし性能を引き出すには、ソフトウェア側で処理を並列に分割する必要があります。
- フルアソシアティブ方式のキャッシュで、アドレスのうちインデックス(セットを選ぶ部分)に使うビット数はどれか。
答えを見る
0ビット
フルアソシアティブ方式では、どのデータもキャッシュ内のどの場所にでも置けるため、セットは全体で1つしかありません。セットを選ぶ必要がないのでインデックスは0ビットで、アドレスはオフセットとタグだけに分かれ、アクセスのたびにすべてのラインのタグと比べます。そのため比較器が多く必要で、大きなキャッシュには向かず、TLBなどの小さな構造に使われます。ラインサイズで決まるのはオフセットのビット数で、インデックスではありません。
- RISC(縮小命令セットコンピュータ)の特徴として正しいものはどれか。
答えを見る
命令を単純で数の少ないものに絞り、パイプライン処理をしやすくする
RISCは、命令を単純で長さのそろったものに絞り、演算はレジスタどうしで行い、メモリとのやりとりはロード・ストア命令に限る設計思想です。命令ごとの処理時間がそろうためパイプラインに適し、ARMやRISC-Vが代表例です。複雑な命令をもつCISC(x86など)も、現在は内部で命令を単純なμOPに分解して実行しており、両者の差は縮まっています。
- L1キャッシュのヒット時間が1 ns、ミス率が5%、L2キャッシュのヒット時間が10 ns、L2のローカルミス率が20%、主記憶のアクセス時間が100 nsのとき、平均メモリアクセス時間はいくらか。
答えを見る
2.5 ns
L1のミスペナルティは、L2の平均アクセス時間 10 + 0.2 × 100 = 30 nsです。よって平均メモリアクセス時間は 1 + 0.05 × 30 = 1 + 1.5 = 2.5 nsになります。2.0 nsはL2のヒット時間10 nsを足し忘れ、1 + 0.05 × (0.2 × 100)とした値です。6.0 nsは主記憶の100 nsにL1のミス率を直接掛けて足した値で、L2の効果を無視しています。
メモリ(DRAM・SRAM・フラッシュ)
- DRAMで定期的なリフレッシュ動作が必要になる理由として正しいものはどれか。
答えを見る
キャパシタに蓄えた電荷がリーク電流によって徐々に失われるため
キャパシタの電荷は、セルトランジスタのサブスレッショルドリークや接合リークで少しずつ失われます。データが判定できなくなる前に読み出して書き直すのがリフレッシュで、DDR4までの規格では64 ms以内、DDR5では32 ms以内に全行を一巡します。リフレッシュ中はそのバンクにアクセスできず、電力も消費するため、容量が増えるほど負担が大きくなります。書き込み回数の上限はフラッシュメモリの特徴です。
- 一般的な6トランジスタ型SRAMセルの構成として正しいものはどれか。
答えを見る
交差接続した2つのインバータと、2つのアクセストランジスタ
6T SRAMセルは、2つのインバータを互いの出力が相手の入力になるように接続したラッチ(4個)と、ビット線との接続を制御するアクセストランジスタ2個で構成されます。正帰還で状態を保つため、電源が入っている間はリフレッシュ不要です。セル面積は約120〜150F²とDRAMの20倍前後ですが、ロジックと同じ工程で作れて高速なため、CPUのキャッシュの主役です。
- DRAMの読み出し動作の特徴として正しいものはどれか。
答えを見る
読み出しでセルの電荷が変化するため、センスアンプで増幅したあとセルに書き戻す
セルのキャパシタをビット線につなぐと、電荷がビット線の大きな寄生容量と分け合われて元の状態が壊れます(破壊読み出し)。そのためセンスアンプで数十〜百数十mVの差を増幅して0/1を判定すると同時に、増幅した電圧でセルに書き戻します。この書き戻しが実質的にリフレッシュと同じ働きをするため、リフレッシュは行を活性化して閉じる動作で行われます。
- フラッシュメモリで、1つのメモリセルに3ビットの情報を記憶する方式を何と呼ぶか。
答えを見る
TLC
1セルあたりのビット数により、SLC(1ビット)、MLC(2)、TLC(3)、QLC(4)と呼びます。TLCでは8つのしきい値電圧の状態を区別し、同じセル数でSLCの3倍の容量になります。ビット数が多いほど低コストですが、状態の間隔が狭くなるため、書き換え回数、速度、データ保持の面で不利です。現在の一般的なSSDはTLCが主流で、大容量向けにQLCも増えています。
- DRAMのセルで、キャパシタの容量を確保するために使われてきた立体構造の組み合わせとして正しいものはどれか。
答えを見る
トレンチ型とスタック型
セルを小さくしても約10 fF前後の容量を確保するため、DRAMはキャパシタを立体化してきました。基板に深い溝を掘るトレンチ型と、トランジスタの上に背の高い円筒を積むスタック型があり、現在はスタック型が主流です。先端品のキャパシタは直径数十nmに対して高さ1 µmを超え、縦横比は数十にもなり、倒れないよう支えの膜で補強されています。フローティングゲートや電荷トラップはフラッシュの構造です。
- フラッシュメモリのデータの書き込み・消去の原理として正しいものはどれか。
答えを見る
フローティングゲートや電荷トラップ層に電子を出し入れし、トランジスタのしきい値電圧を変える
フラッシュのセルは、ゲートの下に電子を蓄えるフローティングゲート(または電荷トラップ層)をもつトランジスタです。高電圧でトンネル電流などにより電子を出し入れすると、しきい値電圧が変わり、その違いで0と1を区別します。電子は厚さ数nmの絶縁膜に囲まれているため、電源を切っても10年程度保持できます。読み出しでは、ある電圧をゲートにかけて電流が流れるかどうかを見ます。
- DRAMの性質として正しいものはどれか。
答えを見る
電源を切るとデータが失われる揮発性メモリである
DRAMは電荷で情報を記憶し、電源を切ると電荷が保持されずデータが失われる揮発性メモリです。電源が入っていてもリフレッシュが必要な点が、同じ揮発性のSRAMとの違いです。ただし電源を切った直後に冷却すると数秒〜数分データが残ることがあり、それを悪用してメモリ内の暗号鍵を読み出す「コールドブート攻撃」が知られています。不揮発性なのはフラッシュメモリなどです。
- 3D NAND型フラッシュメモリの説明として正しいものはどれか。
答えを見る
メモリセルを垂直方向に多数積層して大容量化したもの
平面での微細化が15 nm前後で限界に近づいたため、NANDではセルを縦方向に積み重ねる3D NANDが2013年頃から量産され、主流になりました。導電層と絶縁層を交互に積んだ厚い膜に、深い円筒状の穴(チャネルホール)を一括で開けて、穴の壁にセルを作ります。セルを無理に縮めずに容量を増やせ、干渉も減らせます。1セル3ビットはTLCで、3D NANDと組み合わせて使われます。
設計フローとEDA
- 一般的なデジタルLSIの設計フローの順序として正しいものはどれか。
答えを見る
仕様設計 → RTL設計 → 論理合成 → 配置配線
まず仕様設計で機能や性能を決め、VerilogやVHDLなどのハードウェア記述言語でRTL設計を行います。次に論理合成でゲートレベルのネットリストに変換し、配置配線でチップ上のレイアウトをつくります。各段階で検証を行い、最後にマスクデータとして出力します。抽象度の高い記述から具体的な形へ順に落としていく流れなので、ほかの順序は成り立ちません。先端品では仕様決定からテープアウトまで1〜2年かかることもあります。
- 論理合成の説明として正しいものはどれか。
答えを見る
RTLの記述を、セルライブラリのゲートで構成したネットリストに変換する工程
論理合成は、RTLで書かれた回路の動作記述を、セルライブラリにある論理ゲートやフリップフロップの接続情報(ネットリスト)に変換する工程です。タイミング・面積・消費電力の制約を与えると、ツールが論理式を簡単にし、適切な駆動力のセルを選んで制約を満たすように最適化します。セルを並べて配線するのは配置配線、ウエハに転写するのはリソグラフィです。
- 静的タイミング解析(STA)の説明として正しいものはどれか。
答えを見る
テストパターンを使わずに回路の各パスの遅延を計算し、タイミング制約を満たすか検証する
STAは、回路のすべての信号経路(パス)について、セルや配線の遅延を積み上げて計算し、セットアップ時間やホールド時間などのタイミング制約を満たしているかを網羅的に調べる手法です。テストパターンが不要で、パターンでは見落とす経路も漏れなく確認できるため、大規模LSIのタイミング検証の中心になっています。ただし論理の正しさは確かめないため、機能の検証はシミュレーションなどで別に行います。
- RTL設計で主に使われるハードウェア記述言語はどれか。
答えを見る
Verilog HDLやVHDL
RTL設計では、Verilog HDL(およびその拡張のSystemVerilog)やVHDLといったハードウェア記述言語で、クロックごとにレジスタの間をデータがどう流れるかを記述します。ソフトウェアの言語と違い、記述した処理は回路として同時並行に動きます。HTMLはWebページの記述言語、SQLはデータベースの問い合わせ言語で、回路は記述できません。
- レイアウト検証におけるDRC(デザインルールチェック)の説明として正しいものはどれか。
答えを見る
レイアウトが、最小線幅や間隔などの製造上のルールを満たしているかを検証する
DRCは、レイアウトの図形が、最小の線幅・間隔・重なり・密度など、製造工程から決まるデザインルールに違反していないかを調べる検証です。先端プロセスではルールが数千に及び、ツールで自動的に確認します。回路図とレイアウトの接続の一致を確認するのはLVS(Layout Versus Schematic)、論理機能の確認はシミュレーションです。DRCとLVSはマスクデータを出す前に必ず行います。
- 論理合成の前後で回路の論理が変わっていないことを、シミュレーションを使わずに数学的に確認する手法はどれか。
答えを見る
形式的等価性検証(フォーマル検証)
形式的等価性検証は、2つの回路が同じ論理関数を実現しているかを、数学的な手法で網羅的に確かめる検証です。テストパターンを用意する必要がなく、すべての入力の組み合わせについて等価性を保証できるため、論理合成や配置配線、ECOの前後の確認に使われます。シミュレーションで全組み合わせを試すのは、入力が数十ビットあるだけで現実的に不可能です。DRCは図形の規則の検査です。
- スタンダードセル方式の設計の説明として正しいものはどれか。
答えを見る
あらかじめ設計・検証されたゲートなどのセルを並べて配線し、回路をつくる
スタンダードセル方式では、NANDやフリップフロップなどの基本回路を、高さをそろえたセルとしてあらかじめ設計・検証しておき、論理合成と配置配線のツールでそれらを行のように並べて接続します。高さがそろっているため電源配線を共有でき、自動化しやすくなります。大規模なデジタルLSIの多くがこの方式です。すべてを人手で設計するのはフルカスタム、製造後に書き換えるのはFPGAです。
- FPGAの特徴として正しいものはどれか。
答えを見る
製造後に、ユーザーが論理回路の構成を書き換えられる
FPGAは、小さな真理値表(LUT)をもつ論理ブロックと配線のつなぎ方を、製造後に設定データで書き換えられるデバイスです。ASICのように製造に時間とマスク費用がかからないため、試作、少量生産、機能の更新が必要な機器で使われます。一方、書き換えのための回路が余分に必要なため、同じ回路ならASICの方が高速・低消費電力・小面積です。アナログ専用のデバイスではありません。
テストとDFT
- ウエハテスト(プローブテスト)の説明として正しいものはどれか。
答えを見る
ダイシング前に、ウエハ上の各チップにプローブを当てて電気的特性を検査する
ウエハテストでは、プローバがウエハを動かしてプローブカードの針をチップの電極パッドに当て、テスタで電気的な特性や機能を検査します。不良チップをこの段階で見つければ、パッケージの材料費や組立の手間をむだにせずに済みます。不良は後の工程で見つかるほど損失が大きくなるためです。封止後の検査は最終テスト、長期間使って故障率を調べるのは信頼性試験です。
- バーンインの目的として正しいものはどれか。
答えを見る
高温・高電圧などのストレスを加えて、初期故障を起こす製品を出荷前に取り除く
バーンインは、125 ℃前後の高温と定格より高い電圧のもとで製品を数時間〜数十時間動作させ、潜在的な欠陥をもつ製品を早く故障させて取り除くスクリーニングです。バスタブ曲線の初期故障期を出荷前に済ませておくことが目的で、車載やサーバー向けなど高い信頼性が必要な製品で行います。外観検査や膜厚の測定とは目的が違います。
- テスト容易化設計(DFT)の一つであるスキャン設計の説明として正しいものはどれか。
答えを見る
回路内のフリップフロップをシフトレジスタ状につなぎ、内部状態の設定と観測を容易にする
スキャン設計では、各フリップフロップの入力に切り替えのセレクタを付け、テストのときはそれらを数珠つなぎ(スキャンチェーン)にして、外部から任意の値をシフトで設定し、内部の値をシフトで読み出せるようにします。順序回路のテストが組み合わせ回路のテストに置き換わるため、ATPGで高い故障検出率のパターンを自動生成できます。顕微鏡での走査や電圧の掃引とは別物です。
- 半導体のDCテスト(直流特性試験)で主に確認する項目はどれか。
答えを見る
入出力端子のリーク電流や電圧レベル、消費電流
DCテストでは、入出力端子のリーク電流、出力電圧のHとLのレベル、入力のしきい値、待機時や動作時の消費電流など、直流的な電気特性が規格を満たすかを測ります。最初に、各端子の保護ダイオードに電流を流して針の接触や断線・短絡を確かめるコンタクトテストを行うのが一般的です。論理機能はファンクションテスト、外観は外観検査で確認します。
- BIST(組み込み自己テスト)の説明として正しいものはどれか。
答えを見る
テスト用の回路をチップ内に組み込み、チップ自身でテストを行う
BISTは、テストパターンの生成回路と結果の判定回路をチップに内蔵し、チップ自身でテストを実行する仕組みです。メモリ用のMBISTはマーチテストなどのパターンを高速に発生させ、論理回路用のLBISTは擬似乱数のパターンを使います。高価なテスタへの依存とテスト時間を減らせるほか、車載用では電源を入れるたびに出荷後も自己診断できる利点があります。
- プローブカードの説明として正しいものはどれか。
答えを見る
ウエハ上のチップの電極に針を接触させ、テスタと電気的に接続する治具
プローブカードは、チップの電極パッドの配置に合わせて多数の針を並べた、品種ごとの専用治具です。プローバがカメラでウエハの位置を合わせ、チャックを上げて針とパッドを接触させ、テスタとチップを電気的につなぎます。針の方式には、斜めの針の片持ち梁型、垂直型、MEMS技術でつくる型があります。封止用の金型や搬送容器とは別物です。
- 論理回路のテストで使われる縮退故障(スタックアット故障)モデルの説明として正しいものはどれか。
答えを見る
信号線の値が0または1に固定されてしまう故障
縮退故障モデルでは、回路内のある信号線が常に0(0縮退)または常に1(1縮退)に固定される故障を想定し、信号線がn本なら2n個の故障を考えます。単純ながら短絡や断線など多くの物理的な欠陥を代表でき、ATPGや故障検出率の評価の基本になっています。信号が遅くなる故障は遅延故障モデルで扱い、温度上昇は故障モデルではありません。
- テストパターンの故障検出率(フォールトカバレッジ)の定義として正しいものはどれか。
答えを見る
想定した故障のうち、そのテストで検出できる故障の割合
故障検出率は、モデル化した全故障のうち、テストパターンで検出できる故障の割合です。見逃される不良の割合は、歩留まりY・故障検出率Tを使ってDL=1−Y^(1−T)と見積もられ、Y=0.5・T=99%でも約0.7%(約7000 DPPM)になります。そのため車載用などでは99%を大きく超える値が求められます。出荷品の不良率や歩留まりそのものとは別の指標です。
アナログ回路
- 理想オペアンプの特性として正しい組み合わせはどれか。
答えを見る
入力インピーダンス:無限大、出力インピーダンス:0
理想オペアンプは、入力インピーダンスが無限大(入力端子に電流が流れない)、出力インピーダンスが0(負荷によらず出力電圧が決まる)、開ループ利得が無限大として扱います。この仮定から、負帰還回路では2つの入力端子の電圧が等しくなる「仮想短絡」が成り立ち、回路の利得が抵抗の比だけで決まります。実物の開ループ利得は10⁵〜10⁶程度で、周波数とともに下がります。
- 抵抗R = 1 kΩとコンデンサC = 1 µFで構成したRCローパスフィルタのカットオフ周波数に最も近いものはどれか。
答えを見る
約160 Hz
RCフィルタのカットオフ周波数は fc = 1/(2πRC) で、RC = 1×10³ × 1×10⁻⁶ = 1 ms なので fc ≈ 159 Hz(約160 Hz)です。この周波数で出力は −3 dB(約0.707倍)、位相は45°遅れ、それより上では周波数が10倍になるごとに −20 dB で減衰します。1次では減衰が緩やかなため、急峻に切りたいときはオペアンプを使った2次以上のアクティブフィルタを使います。
- 理想オペアンプを使った非反転増幅回路で、入力側の抵抗R1 = 10 kΩ、帰還抵抗R2 = 90 kΩのとき、電圧利得はいくらか。
答えを見る
+10倍
非反転増幅回路の利得は 1 + R2/R1 で、1 + 90/10 = 10倍、出力は入力と同相です。入力が非反転入力に直接入るため入力インピーダンスが非常に高く、信号源に負担をかけないのが利点です。利得は1倍未満にはできません(R2 = 0でボルテージフォロワ)。反転増幅回路の −R2/R1(ここでは−9倍)と混同しないようにしましょう。
- オペアンプを使ったボルテージフォロワの説明として正しいものはどれか。
答えを見る
電圧利得が1で、入力インピーダンスが高く出力インピーダンスが低いため、バッファとして使う
ボルテージフォロワは出力を反転入力に直接つないだ非反転増幅回路(利得1)で、出力が入力と同じ電圧になります。入力インピーダンスが非常に高く出力インピーダンスが低いため、内部抵抗の大きいセンサーや分圧回路の信号を、値を変えずに後段や負荷へ渡すバッファに使われます。負帰還が最も深い構成なので、オペアンプによっては位相余裕が不足して発振しやすく、データシートで「ユニティゲイン安定」を確認します。
- 増幅回路に負帰還をかけたときの効果として正しいものはどれか。
答えを見る
利得は小さくなるが、利得の安定性の向上や周波数帯域の拡大、ひずみの低減が得られる
負帰還をかけると、出力の一部を入力から差し引くため利得は小さくなります。その代わり、閉ループ利得が約 1/β(帰還率の逆数)となって素子のばらつきや温度に左右されにくくなり、帯域が広がり、ひずみや出力インピーダンスも(1 + ループ利得)分の1に減ります。オペアンプ回路はこの性質を前提にしています。ただし位相が大きく回る周波数で正帰還になると発振するため、位相余裕の確保が必要です。
- 差動増幅回路のCMRR(同相信号除去比)が大きいことの意味として正しいものはどれか。
答えを見る
両入力に同じように加わる雑音(同相信号)を除去する能力が高い
差動増幅回路は2つの入力の差を増幅し、両方に同じように加わる成分(同相信号)は増幅しないのが理想です。CMRRは差動利得と同相利得の比で、一般的なオペアンプで80〜120 dB程度です。大きいほど、長い配線に乗る誘導ノイズや電源の揺れなどの同相雑音に強くなります。ただしCMRRは周波数が上がると低下し、外付け抵抗の不一致でも悪化するため、精度が必要な場合は計装アンプを使います。
- 電圧利得が100倍の増幅回路の利得をデシベルで表すといくらか。
答えを見る
40 dB
電圧利得のデシベル表示は 20 log₁₀(利得) で、20 × log₁₀100 = 40 dB です。10倍で20 dB、2倍で約6 dB、√2倍で約3 dBと覚えておくと便利です。電力は電圧の2乗に比例するため10 log₁₀を使い、電力100倍が20 dBです。dBを使うと、多段の増幅器の利得を掛け算ではなく足し算で計算でき、広い範囲の値を扱いやすくなります。
- オペアンプの反転増幅回路で、帰還抵抗をコンデンサに置き換えた回路は何と呼ばれるか。
答えを見る
積分回路
入力に抵抗R、帰還にコンデンサCを使うと、入力電流 Vin/R がCを充電するため、出力は Vout = −(1/RC)∫Vin dt と入力の時間積分に比例します。周波数特性では周波数が10倍になるごとに利得が20 dB下がるローパス型です。直流ではオペアンプのオフセットも積分されて出力が振り切れるため、実用ではCに並列に大きな抵抗を入れます。波形整形、フィルタ、二重積分型ADC、PIDの積分項に使われます。