Verilog HDLによる4ビット優先エンコーダの設計とSynopsys Workshopでの合成

Other

概要

本リポジトリは、優先度を持つ基本的な組合せ回路である「4ビット優先エンコーダ」を対象に、Verilog HDLでの記述とSynopsys Workshop上での合成結果を示す教育向けの資料群です。入力D3からD0のうち、もっとも高位の有効入力を検出して2ビットの出力に変換し、同時に入力があるかどうかを示すvalid信号を出力します。設計の目的は、RTLの書き方、合成ツールによる論理変換(ゲートレベルマッピング)、および合成レポートや波形を通した検証方法を学ぶことにあります。リポジトリ自体はソースコードの全文を含まず、合成ワークフローのスクリーンショットや図が中心です。

GitHub

リポジトリの統計情報

  • スター数: 8
  • フォーク数: 0
  • ウォッチャー数: 8
  • コミット数: 2
  • ファイル数: 5
  • メインの言語: 未指定

主な特徴

  • Verilog HDLで設計された4ビット優先エンコーダの学習リソース。
  • Synopsys Workshopでの合成手順と合成結果(スクリーンショット)を掲載。
  • 入力の有効化を示すvalid信号を含む実用的なインターフェース設計。
  • 教育用途に適した図とドキュメント中心の構成(ソースは画像ファイルで提供)。

技術的なポイント

優先エンコーダは組合せ回路で、複数入力のうち優先順位に従って最上位の有効入力のインデックスを出力する回路です。本設計では4本の入力D3..D0を2ビット(Y1,Y0)に符号化し、任意の入力が存在するかを示すvalidを併せて出力します。典型的な実装は、if-elseチェーンやcase文を用いた常時評価の組合せロジック(always @(*))か、論理式によるassignで記述します。優先度はD3>D2>D1>D0で、例えばD3が1であれば他が1でもYは”11”(=3)を返します。validはD3|D2|D1|D0で実装できます。

合成観点では、優先エンコーダは主にマルチプレクサとAND/ORゲートの組合せにマップされます。Synopsysツールは高位合成を行わないため、RTLのif-else順序が論理に直接影響し、優先性を保つための直列的な条件評価がマルチプレクサ構造として具現化されます。合成結果の注目点は以下です:論理深さ(入力から出力までのゲート段数)、遅延(クリティカルパス)、面積(セル数)、およびファンアウト。組合せ回路は入力の遅延やグリッチ(遷移による短時間のスパイク)を生じる可能性があるため、高速・安定動作を求める場合は出力をフリップフロップで登録してパイプライン化するのが一般的です。さらに、非同期入力や複数の入力が同時に切り替わる条件では、メタステーブルや推移の扱いに注意する必要があります。

本リポジトリは実際のVerilogソースよりも合成結果の証拠(スクリーンショット)を含むため、学習者は実装例を作成して同じツールで合成し、レポート(面積、タイミング、パワー)やゲートレベルネットリスト、波形(シミュレーション/VCD)を比較することを推奨します。追加で有益な作業は、パラメータ化(Nビットに拡張)、ワンホット出力への拡張、テストベンチ作成による網羅的シミュレーション、STA(静的時定解析)レポートの取得、合成制約(SDC)の設定によるクロック/タイミングチューニングです。これらを行うことで教育的価値と実用性が向上します。

プロジェクトの構成

主要なファイルとディレクトリ:

  • 1 WhatsApp Image 2026-01-31 at 10.44.54 AM.jpeg: file
  • 2 WhatsApp Image 2026-01-31 at 10.44.55 AM.jpeg: file
  • 3 WhatsApp Image 2026-01-31 at 10.44.55 AM.jpeg: file
  • 4 WhatsApp Image 2026-01-31 at 10.44.53 AM.jpeg: file
  • README.md: file

(注:実際のVerilogソースやテストベンチはリポジトリに含まれておらず、図やスクリーンショットが中心です。学習用途であればソースコードを自前で作成して合成・検証することをおすすめします。)

まとめ

教育目的の合成ワークフロー資料として短時間で優先エンコーダの実装・合成を学べる良資料。

リポジトリ情報:

READMEの抜粋:

Design-and-Synthesis-of-a-4-Bit-Priority-Encoder-using-Verilog-HDL-in-Synopsys-Workshop

A 4-bit Priority Encoder is a combinational circuit that converts four inputs (D3–D0) into a 2-bit output based on priority. D3 has the highest priority. A valid signal indicates active input. The design is implemented in Verilog HDL and synthesized using Synopsys Workshop. …