VSCode で Verilog 環境を構成するにはどうすればよいですか?コードプロンプト + 自動インスタンス化 + フォーマットプラグインの共有

青灯夜游
リリース: 2022-11-28 20:19:44
転載
4390 人が閲覧しました

VSCodeVerilog 環境を構成するにはどうすればよいですか?次の記事では、VSCode で Verilog をスムーズに記述するための、コード プロンプト、自動インスタンス化、およびフォーマットを実現できる 3 つのプラグインを推奨しています。

VSCode で Verilog 環境を構成するにはどうすればよいですか?コードプロンプト + 自動インスタンス化 + フォーマットプラグインの共有

[推奨学習: vscode チュートリアル プログラミング ビデオ ]

Verilog-HDL/ SystemVerilog/Bluespec SystemVerilog



#実現可能な機能:

    構文の強調表示
  • 自動インスタンス化
  • コード プロンプトとジャンプ
  • 自動補完

プラグイン設定

Verilog HDL/SystemVerilog プラグインのウェルカム ページで説明されているように、Ctags 機能をサポートします:

VSCode で Verilog 環境を構成するにはどうすればよいですか?コードプロンプト + 自動インスタンス化 + フォーマットプラグインの共有

設定手順:

次のようなさまざまなコンパイラを選択できます

:

iverilog

    xvlog(vivado)
  • modelsim
関数表示

Verilog、SV、およびその他の構文の強調表示をサポートします。

shift ctrl p input verilog を使用すると、モジュールを直接自動的にインスタンス化できます。

マウスを信号上に置くと、フローティング ボックスにステートメントが表示されます。 Ctrl キーを押しながら信号名をクリックすると、宣言に自動的にジャンプします。信号にカーソルを置き、右クリックして [定義の表示] を選択します (ショートカット キーは自分でバインドできます)。ここで宣言のコードを展開できます。前後にジャンプすることなく宣言を変更するのに非常に便利です。 。

Verilog_Testbench



##実現可能な機能:

テストベンチを自動的に生成

shift ctrl p を入力してテストベンチを入力すると、tb を直接生成できます。次に、それをターミナルにコピーします。

SystemVerilog と Verilog Formatter

このツールは Google によって開発され、Verilog と System Verilog の両方をサポートします。 ,

効果は非常に優れています
。また、幅広いカスタマイズされた書式設定パラメータもサポートしています。個人的にはverilog形式よりも使いやすいと思います。

#実現可能な機能

ファイルの自動フォーマット#選択したコンテンツの自動フォーマット#カスタムフォーマット

  • #カスタム パラメータ設定テーブル
  • ##verible-verilog-format: 使用法: bazel-bin/verilog/tools/formatter /verible-verilog-format [オプション] []
標準入力からパイプするには、 として '-' を使用します。

common/formatting/basic_format_style_init.cc からのフラグ:
--column_limit (書式設定時に維持するターゲット行の長さ制限。);
デフォルト: 100;
--indentation_spaces (インデントレベルごとに追加されます)この数のスペース。);
デフォルト: 2;
--line_break_penalty (導入された行
Break ごとにソリューションにペナルティが追加されます。);デフォルト: 2;
--over_column_limit_penalty (ペナルティを最小限に抑えるため、これは列制限を超えた場合の
ベースライン ペナルティ値を表します。この制限を超える文字ごとに追加のペナルティ
1 が発生します);デフォルト: 100;
--wrap_spaces (ラップ レベルごとにこの数のスペースが追加されます。これは、オープングループ セクションの後の
最初の要素がラップされる場合に適用されます。それ以外の場合は、
インデント レベルが列に設定されますオープングループ
演算子の位置);デフォルト: 4;


external/com_google_absl/absl/flags/parse.cc からのフラグ:
--flagfile (フラグをロードするファイルのカンマ区切りリスト);デフォルト: ;
--fromenv (環境から設定するフラグのカンマ区切りのリスト [use
'export FLAGS_flag1=value']);デフォルト: ;
--tryfromenv (
環境が存在する場合、その環境から設定を試行するフラグのカンマ区切りのリスト);デフォルト: ;
--undefok (プログラムでその
名前のフラグが定義されていない場合でも、コマンドラインで
指定しても問題ないフラグ名のコンマ区切りのリスト);デフォルト: ;###


verilog/formatting/format_style_init.cc からのフラグ:
--assignment_statement_alignment (さまざまな割り当てのフォーマット:
{align,flush-left,preserve,infer});デフォルト: infer;
--case_items_alignment (ケース項目のフォーマット:
{align,flush-left,preserve,infer});デフォルト: infer;
--class_member_variable_alignment (クラスメンバー変数のフォーマット:
{align,flush-left,preserve,infer});デフォルト: infer;
--compact_indexing_and_selections (
インデックス付け/ビット選択演算子内でコンパクトなバイナリ式を使用します);デフォルト: true;
--distribution_items_alignment (配布アイテムを揃える:
{align,flush-left,preserve,infer});デフォルト: infer;
--enum_assignment_statement_alignment (列挙型で割り当てをフォーマットする:
{align,flush-left,preserve,infer});デフォルト: infer;
--expand_coverpoints (true の場合、常にカバーポイントを展開します。);デフォルト: false;
--formal_parameters_alignment (形式パラメータ:
{align,flush-left,preserve,infer});デフォルト: infer;
--formal_parameters_indentation (仮パラメータのインデント: {indent,wrap});
デフォルト: Wrap;
--module_net_variable_alignment (ネット/変数宣言のフォーマット:
{align,flush-左、保存、推測});デフォルト: infer;
--named_pa​​rameter_alignment (形式名付き実際のパラメータ:
{align,flush-left,preserve,infer});デフォルト: infer;
--named_pa​​rameter_indentation (名前付きパラメータ割り当てのインデント:
{indent,wrap});デフォルト: Wrap;
--named_port_alignment (名前付きポート接続の形式:
{align,flush-left,preserve,infer});デフォルト: infer;
--named_port_indentation (名前付きポート接続のインデント: {indent,wrap});
デフォルト: Wrap;
--port_declarations_alignment (ポート宣言のフォーマット:
{align,flush-left 、保存、推測});デフォルト: infer;
--port_declarations_indentation (ポート宣言のインデント: {indent,wrap});
デフォルト: Wrap;
--port_declarations_right_align_packed_dimensions (true の場合、アライメントが有効になっているコンテキスト内のパック
ディメンションは右揃え。);
デフォルト: false;
--port_declarations_right_align_unpacked_dimensions (true の場合、配置が有効になっているコンテキスト内の unpacked
ディメンションは右揃えになります。);
デフォルト: false;
--struct_union_members_alignment (構造体/共用体メンバーの形式:
{align,flush-left,preserve,infer});デフォルト: infer;
--try_wrap_long_lines (true の場合、フォーマッタは行の最適化を試みます。
折り返しが必要な場合は折り返しの決定を行い、それ以外の場合は書式設定されないままにします。
これはリスクを軽減するための短期的な対策です。有害です。);デフォルト: false;


verilog/parser/verilog_parser.cc からのフラグ:
--verilog_trace_parser (トレース verilog パーサー);デフォルト: false;


verilog/tools/formatter/verilog_format.cc からのフラグ:
--failsafe_success (true の場合、
入力エラーまたは内部エラーがあった場合でも、常に 0 ステータスで終了します。すべてのエラーでこの条件では、元の
テキストは常に保持されます。これは、
フェールセーフ動作が成功とみなされる必要があるサービスを展開する場合に役立ちます。);デフォルト: true;
--inplace (true の場合、成功した場合に入力ファイルを上書きします。);
デフォルト: false;
--lines (フォーマットする特定の行、1 ベース、カンマ区切り) 、N-M
範囲を含み、N は N-N の略です。デフォルトでは、指定しないままにすると、すべての行が
書式設定可能になります。(反復可能、累積));デフォルト: ;
--max_search_states (行
ラップの最適化中に調査される検索状態の数を制限します。);デフォルト: 100000;
--show_equally_optimal_wrappings (true の場合、複数の最適な
ソリューション (stderr) が見つかったときに出力しますが、通常どおり動作し続けます。);
デフォルト: false;
--show_inter_token_info ( true の場合、show_token_partition_tree とともに、
スペースやブレーク ペナルティなどのトークン間情報が含まれます。);
デフォルト: false;
--show_largest_token_partitions (> 0 の場合、トークンのパーティション分割を出力し、
出力をフォーマットせずに終了します。);デフォルト: 0;
--show_token_partition_tree (true の場合、token
パーティショニング後に診断を出力し、出力をフォーマットせずに終了します。);デフォルト: false;
--stdin_name (「-」を使用して標準入力から読み取る場合、診断目的で代替の
名前が与えられます。それ以外の場合、これは無視されます。);
デフォルト: " ";
--verbose (より冗長になります。);デフォルト: false;
--verify_convergence (true で、
--lines による増分フォーマットではない場合、フォーマットされた出力を再フォーマットしてもそれ以上の変更が生じないこと、つまりフォーマットが収束していることを検証します。);デフォルト: true;

--helpfull を実行してすべてのフラグのリストを取得するか、--help=substring を実行すると、名前、説明、または

に指定された部分文字列が含まれる
フラグのヘルプが表示されます。 path.

ファイル構成

Windows の場合、systemverilogFormatter.veribleBuild は win64 に設定されます

systemverilogFormatter.commandLineArguments は、形式化パラメータを自由に指定でき、次に私が使用するパラメータを使用して、常用コード セグメントの大部分を実現できます。

# と vscode 内置形式化、直接 shift ctrl f でファイルを形式化できます、ctrl k で指定した内容を形式化できます。 ## このソフトウェアも完全に動作しているため、部分的に問題が存在することに注意してください。 そうしないと動作しません。 、または会話法を認識できない場合、形式化は使用されません。ここでは最後のポートを追加します。","就は形式化できません。

詳細VSCode の関連知識、访藮:vscode ベース教程

!

以上がVSCode で Verilog 環境を構成するにはどうすればよいですか?コードプロンプト + 自動インスタンス化 + フォーマットプラグインの共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!