VSCode怎麼配置verilog環境?以下這篇文章給大家推薦三個插件,讓VSCode流暢編寫verilog,三個插件可實現程式碼提示 自動例化 格式化。
#可實作功能:
##設定步驟:
下載最新版
ctags,舊版的有些功能不夠齊全;windows可選x64版本;
將ctags.exe的路徑設定到系統環境變數中;
## 可以選擇不同的編譯器
# 包含:xvlog(vivado)
modelsim #功能展示shift ctrl p輸入verilog,可以直接自動範例模組。
滑鼠放在訊號上,就會有聲明顯示在懸浮框中。 Ctrl 左鍵,點選訊號名,自動跳到聲明處。遊標放在訊號處,右鍵選擇查看定義(快捷鍵可自行綁定),可以在此處展開聲明處的程式碼,用於修改聲明十分方便,就不用再來回跳轉了。 Verilog_Testbench
################################################## ###自動產生testbench ################## shift ctrl p輸入testbench,可以直接產生tb。然後在終端複製即可。 ##################SystemVerilog and Verilog Formatter###############這款工具由Google推出,同時支援Verilog和System Verilog ,###效果非常好###,支援自訂的格式化參數也很豐富。個人認為比verilog format好用。 ############可實現功能############### 自動格式化檔案######自動格式化選取內容#### ##自訂格式###############自訂參數設定表################verible-verilog-format: usage: bazel- bin/verilog/tools/formatter/verible-verilog-format [options]
[ ]### To pipe from stdin, use '-' as .## # 來自common/formatting/basic_format_style_init.cc 的標誌:
# 來自external/com_google_absl/absl/flags/parse.cc 的標誌:
--column_limit (格式化時要保持的目標行長度限制。);
預設:100;
--indentation_spaces --縮排等級 增加這麼多空格。);
預設值:2;
--line_break_penalty (針對每個引入的行
中斷新增至解決方案中的懲罰。);預設值:2;
--over_column_limit_penalty (對於懲罰最小化,這表示超出列限制的基準懲罰值。超過此限制的每個字元都會產生 1 的額外懲罰);預設值:100;
--wrap_spaces (每個換行等級新增這麼多空格。這適用於開放群組部分後的
換行時的情況。否則,
群組
運算子的位置。);預設值:4;--flagfile (以逗號分隔的檔案列表,用於從中載入標誌) ;預設值:;
--fromenv (從環境中設定的以逗號分隔的標誌清單 [use
'export FLAGS_flag1=value']);預設值:;
--tryfromenv (嘗試從
環境設定的以逗號分隔的標誌清單(如果存在);預設值:;
--undefok (以逗號分隔的標誌名稱列表,可以在命令列上指定,即使程式沒有使用該名稱定義標誌);預設: ;--verilog_trace_parser (追蹤 verilog 解析器);預設值:假;
來自 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;
--ule_net_variable_alignment (格式網路/變數宣告: ,flush-左、保留、推斷});預設值:infer;
--named_parameter_alignment (命名實際參數的格式:
{align,flush-left,preserve,infer});預設值:infer;
--named_parameter_indentation (縮排命名參數賦值:
{indent,wrap});預設值:wrap;
--named_port_alignment (命名連接埠連線格式:
{align,flush-left,preserve,infer});預設:infer;
--named_port_indentation (縮排命名連接埠連線:{indent,wrap});
預設:wrap;
--port_declarations_alignment (格式連接埠宣告:## --port_declarations_alignment (格式連接埠宣告:## c left ,保留,推斷});預設值:infer;
--port_declarations_indentation (縮排埠宣告:{indent,wrap});
預設值:wrap;
--port_declarations_right_align_packed_dimension## Packed
尺寸為向右對齊。);
預設值: false;
--port_declarations_right_align_unpacked_dimensions (如果為true,則啟用對齊的上下文中的未打包 #
預設值: false;
--struct_union_members_alignment (格式化結構/共同成員:
{align,flush-left,preserve,infer});預設值:infer;
--try_wrap_long_lines (如果為true,則讓格式化程式嘗試在需要換行的地方最佳化行
換行決策,否則不格式化。
這是降低風險的短期措施-的傷害。);預設值: false;
# 來自 verilog/parser/verilog_parser.cc 的標誌:標誌的幫助,這些標誌在名稱或描述中或
來自verilog/tools/formatter/verilog_format.cc 的標誌:
--failsafe_success (如果為true,則始終以0 狀態退出,即使存在
輸入錯誤或內部錯誤。在錯誤中條件下,始終保留原始
文字。這在部署服務時非常有用,其中
故障安全行為應視為成功。);預設值:true;
--inplace (如果為true,則在成功的情況下覆寫輸入檔案。);
預設值:false;
--lines (要格式化的特定行,預設值: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;
命令 --showshowgest --showgest to_part,則列印指令 0Pken_lar牌分區,然後
退出而不格式化輸出。);預設值:0;
--show_token_partition_tree (如果為 true,則在 token
分區後列印診斷訊息,然後退出而不格式化輸出。);預設值: false;
--stdin_name (當使用'-' 從stdin 讀取時,這會給出一個備用
名稱以用於診斷目的。否則將被忽略。);
預設值:“; ";
--verbose(更詳細。);預設值: false;
--verify_convergence (如果為true,且不使用
--lines 進行增量格式化,請驗證重新格式化格式化輸出不會產生進一步的
更改,即格式是收斂的。);預設值:true;
嘗試--helpfull 取得所有標誌的清單或--help=substring 顯示中包含指定的子字串path.
#外掛程式配置
##如果是windows,systemverilogFormatter. veribleBuild設定為win64
systemverilogFormatter.commandLineArguments 可以自訂格式化參數,下面放上我自己用的參數,可以實作大部分常用程式碼段實作對齊。
--indentation_spaces=4 --named_port_alignment=align --ort_declarations_alignment=align --module_net_variable_alignment=align
如何使用?如何格式化?
和vscode內建格式化一樣,直接shift ctrl f就可以格式化文件,ctrl k可以格式化選定的內容。意思是,由於這個外掛也是在完善中,還是有部分問題的。例如else不會換行。例如,存在語法問題
,或是無法辨識語法的時候,刪除會用不了。這裡我將最後一個連接埠加上","就不能刪除了。 更更多關於VSCode的相關知識,請造訪:###vscode基礎教學###!#######以上是VSCode怎麼配置verilog環境?程式碼提示+自動例化+格式化外掛分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!