デジタル IC 検証のための高頻度インタビュー質問集 - 回答付き (3)

最近、ICの秋採用が話題になっていますが、秋採用に決定的に足りないのは面接の質問です。これが来ますよ~

検証済みの頻度の高い面接の質問を合計 150 件まとめています ~ 回答も含めて (すべての質問は記事の最後で入手できます)
ここに画像の説明を挿入します

Q1. バイナリコード、グレイコード、ワンホットコードの特徴

バイナリ コード: 基本的な機械語、各ビットは 0 または 1 のみであり、毎秒 1 に変換されます;
グレイ コード: 一連の数値のエンコードにおいて、隣接する 2 つのコードに異なる 2 進数が 1 つだけある場合、このエンコーディングはグレイコードと呼ばれ、また最大値と最小値は一桁しか違わないため、「端と端でつながっている」ことになります。
ワンホット コード: 1 ビット有効エンコーディングとも呼ばれるこの方法は、N ビット ステータス レジスタを使用して N 状態をエンコードすることです。各状態には独自の独立したレジスタ ビットがあり、常にそれらのうちの 1 つだけが有効です。

Q2.パック配列とアンパック配列の違い

パック配列の宣言方法: bit [7:0][3:0] パック配列: パック配列が 4 つの 8 ビット数値で構成され、記憶空間が連続していることを意味します; アンパック配列の宣言方法: bit [7:0] ] unpacked_array[3
: 0]: unpacked_array が 4 つの 8 ビット数値で構成され、記憶領域が連続していないことを示します。

Q3. ブロッキング代入とノンブロッキング代入の違い

ブロック化代入ステートメント ("=) および非ブロック化代入ステートメント ("<=")
ブロック: 通常、回路内の組み合わせ論理の代入に対応し、等号の右側の結果がすぐに左側に代入されます。側。
ノンブロッキング: 通常、回路内の順序論理割り当てに対応し、等号の右側の結果は左側にすぐには割り当てられません。
always ステートメントでは、ブロッキング代入等号の左側のパラメーターがモジュールの他の操作に参加する場合、そのパラメーターは代入後の結果に従って操作に参加しますが、非ブロック代入の左側のパラメーターはモジュールの他の操作に参加します。 -blocking 代入等号は、代入前の結果に従って操作に引き続き参加します。
ブロッキング代入は Assign ステートメントで使用され、ブロッキング代入は組み合わせ回路で使用され、ノンブロッキング代入は順序回路で使用されます。

Q4. 手続き文と連続代入文の違い

連続代入ステートメントは assign でマークされており、手続き型代入ステートメント
にこのキーワードを含めることはできません。連続代入ステートメントの左側のデータ型はライン ネットワーク データ型である必要があり、手続き型代入ステートメントの割り当てデータ型は次のとおりです。レジスタ型変数であること。

連続代入ステートメントはプロシージャ ブロック (initial または always) に使用できませんが、手続き型代入ステートメントは使用できます。連続代入ステートメントは
主に組み合わせ論理回路をモデル化し、回線とネットワーク データの間の接続を記述するために使用されますが、手続き型代入ステートメントは主に次の用途に使用されます。順序論理回路の動作を説明します。

割り当てられたネットワーク データへの連続代入ステートメントの代入は「連続的」です (つまり、代入式の変更はネットワーク データの値にすぐに反映されます)。一方、手続き型代入ステートメントは、手続き型代入ステートメントが使用される場合にのみ使用できます。代入ステートメントは、ステートメントが実行されたときにのみ代入操作が実行されます。ステートメントが実行された後、代入された変数の値は、代入式の影響を受けなくなります (ここでの 1 回の参照は、最初のブロックで、手続き型の割り当ては順番に 1 回だけ実行され、always ブロックでは、always の条件が満たされるたびに、always ブロック内のステートメントが順番に実行される必要があります。)

Q5.初期と常時の共通点と相違点

always:
always はハードウェアの動作を記述するもので、使用する場合はどのような使い方が順序回路記述でどのような使い方が組み合わせ回路記述なのかに注意する必要があります。

always の @(event...) 依存リストは、ハードウェア信号のトリガー動作をシミュレートするためのものであり、ハードウェアの動作と正しく調整され、常にブロックの記述を処理する必要があります。

したがって、always process ブロックは、ハードウェア順序回路および組み合わせ回路を開く正しい方法を記述するために使用されるため、モジュールまたはインターフェイスでのみ使用できます。

初期化:
名前から、初期化が実行パス内の常にとは明らかに異なることもわかります。つまり、初期化はソフトウェアの実行モードと非常に一致しており、一度だけ実行されます。

いつものように、Initial は実行を遅らせることはできません。つまり、シミュレーションの開始時にすべてが同時に実行され、異なるInitial と Always の間に実行順序はありません。

実行パスの性質から判断すると、Initial はハードウェア設計コード内に存在すべきではなく、それ自体では合成されず、回路の記述には役立ちません。

イニシャルはテストのために生まれました、テストは時間的な習慣、つまりソフトウェア方式に従って完了する必要があるため、イニシャルはこの要件を達成できます。

Verilog 時代では、すべてのテスト ステートメントをイニシャル プロシージャ ブロックに配置できますが、テスト シーケンスの一元管理を容易にするために、関連するすべてのテスト ステートメントを同じイニシャル プロシージャ ブロックに配置することが推奨されます。

初期プロシージャ ブロックは、モジュール、インターフェイス、プログラムで使用できます。プロシージャ ブロックを作成するときは、そのスコープを begin...end で囲むことを忘れないでください。

Q6.FSMにはどのような種類がありますか?違いは何ですか?

ステート マシンを説明する際の重要な点は、ステート マシンのいくつかの要素、つまり状態遷移の実行方法、各状態の出力、状態遷移の条件を明確に記述することです。具体的な記述方法にはさまざまな方法がありますが、最も一般的なのは次の 3 つの記述方法です。
(1) 1 段落: ステートマシン全体を Always モジュールに記述し、状態遷移と入出力を記述します。 (2) 2段階
: 2 つの always モジュールを使用してステート マシンを記述します。always モジュールの 1 つは同期タイミングを使用して状態遷移を記述します。もう 1 つのモジュールは組み合わせロジックを使用して状態遷移条件を決定し、状態遷移を記述します。状態遷移ルール​​と出力 (3)
3 セグメント型: 2 つの Always モジュールの記述方法に基づいて、3 つの Always モジュールが使用され、1 つの Always モジュールは同期タイミングを使用して状態遷移を記述し、もう 1 つの Always モジュールは組み合わせロジックを使用して状態遷移を記述します。状態遷移条件と状態遷移ルール​​を記述するモジュールと、状態を記述するalwaysモジュールで出力(組み合わせ回路または順序回路で出力可能)。

Q7. デジタル回路ではなぜフリップフロップが使われるのですか?

フリップフロップが使用されるのは、フリップフロップがデータと回路ステータスを保存できるためです。フリップフロップはクロックのエッジでトリガされ、クロック同期により回路全体が同期して均一に動作できるようになります。また、組み合わせロジックのみが使用される場合にも使用されます。 、データを保存できないため、結果のデータを後で使用することはできません。

Q8. 非同期リセットと同期リセットの特徴と違い

同期リセット: クロックの立ち上がりエッジでリセット信号が検出されると、リセット動作が実行されます。前提条件はクロック エッジが有効であることです。always@(posedge clk);
利点:
a. シミュレータのシミュレーションに有益;
b. 設計されたシステムを 100% 同期順序回路にすることができ、タイミング解析に有益であり、より高い Fmax を合成できます; c.
クロック有効レベルに達した場合にのみ有効であるため、クロック周波数を超えるリセットグリッチを除去できます。
欠点:
a. システムによって真に認識され、リセット タスクを完了するには、リセット信号の有効期間がクロック サイクルより長くなければなりません。同時に、クロック スキュー、組み合わせ論理パス遅延、リセット遅延などの要因も考慮する必要があります (そのため、クロック有効期間中に十分なリセット幅を確保するために、リセット信号のパルス幅を広げる必要がある場合があります)。ロジック
デバイス ターゲット ライブラリの DFF には非同期リセット ポートしかありません。したがって、同期リセットが使用される場合、シンセサイザはレジスタのデータ入力ポートに組み合わせロジックを挿入します。これにより、FPGA の内部ロジック リソースが 1 つずつ増加します。一方、FPGA の内部ロジック リソースも増加し、対応する組み合わせロジック ゲート遅延が追加されます。

非同期リセット: クロックエッジが到着するかどうかに関係なく、リセット信号が有効である限り、システムはリセットされます。always @ (posedge clk または negedge rst_n);
利点:
a. ターゲット デバイス ライブラリのほとんどの DFF には非同期リセット ポートがあるため、フリップフロップのリセット ポートには追加の組み合わせロジックが必要ないため、リソースが節約されます; b.
デザイン比較的単純;
c. 非同期リセット信号は識別しやすい (クロックの有無にかかわらず、回路はどのような状況でもリセットできます)。
短所:
a. 最大の問題は、それが非同期ロジックに属していることです. 問題は、リセットが有効なときではなく、リセットが解放されるときに発生します. リセットがクロックの有効エッジ近くで解放されると、フリップの出力はフロップがメタステーブル状態になる可能性があり(このとき、clk は rst_n の状態がメタステーブル状態になること、つまり 0 か 1 が不確定であることを検出します)、その結果リセット失敗となります。
b. 誤ったリセット信号はノイズやグリッチによって引き起こされる可能性があります (たとえば、以前のゲーム コンソールがプレイ中に突然リセットされるなど) (注: クロック ポート、クリア ポート、およびセット ポートはグリッチ信号に非常に敏感であり、グリッチが原因で発生する可能性があります)
c. 静的タイミング解析が難しい
d. DFT (テスト用設計) 設計の場合、リセット信号が I/O ピンから直接来ない場合、DFT スキャンおよびテスト中にリセット信号を無効にする必要があるため、追加の同期回路が必要です。

非同期リセットおよび同期リリースの使用を推奨し、リセット信号は Low レベルでアクティブになります。

Q39. 非同期リセットと同期リリースのコード実装

[写真]

Q10. デジタル回路は一般的に 2 種類の回路に分けられますか?

組み合わせ論理回路と順序論理回路に分けられます。
組み合わせ論理回路の論理関数の特徴は、いつでも出力がその時の入力にのみ依存し、回路の元の状態とは何の関係もないことです。
順序論理回路の論理関数の特徴は、いつでも出力がその時の入力信号に依存するだけでなく、回路の元の状態にも依存すること、つまり前の入力にも関係することです。 。

スペースの都合上、IC 検証の面接の質問は 1 つずつ掲載されませんが、面接の質問が必要で、履歴書で注意すべき点を知りたい場合は、まずエンジニアに質問してください (面接の質問はすべて利用可能です)。

ここにエントリがあります: IC 検証面接の質問

おすすめ

転載: blog.csdn.net/coachip/article/details/132585674