在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

怎樣使用Verilator進行Verilog Lint呢?

OpenFPGA ? 來源:OpenFPGA ? 2023-09-20 09:05 ? 次閱讀

FPGA設計是無情的,所以我們需要利用能獲得的任何軟件進行檢查。Verilator是一個 Verilog 仿真器,還支持 linting:靜態分析設計中的問題。Verilator 不僅可以發現綜合工具可能忽略的問題,而且運行速度也很快。Verilator 也非常適合使用 SDL 進行圖形仿真。

安裝Verilator

Linux

Verilator 在大多數 Linux 發行版存儲庫中都可用,并適用于 Windows 子 Linux 系統上運行。

對于 Debian 和基于 Ubuntu 的發行版,可以使用 apt 安裝 Verilator:

aptupdate
aptinstallverilator

蘋果系統

在 macOS 上,可以通過Homebrew包管理器安裝最新版本的 Verilator :

brewinstallverilator

要為其他平臺(例如 FreeBSD)安裝 Verilator,請參閱官方Verilator 安裝指南。

基本 Linting

對于獨立模塊,linting 本身就很簡單:

verilator--lint-only-Wallfoo.v
--lint-only-告訴Verilator進行lint但不生成任何仿真輸出
-Wall-打開額外的風格檢查

如果一切順利,將不會看到來自 Verilator 的消息。

如果 Verilator 發現潛在問題,它會提供明確的建議,包括如何禁用警告。Verilator 手冊包含可能的警告列表。

讓我們創建一個簡單的“add”模塊,并設置幾個問題,然后對其進行 lint:

`default_nettypenone

moduleadd(
inputwireclk,
inputwire[3:0]x,
inputwire[3:0]y,
outputregz,
outputregc
);

always@(posedgeclk)begin
z<=?x?+?y;
????end
endmodule

進行lint檢查

$verilator--lint-only-Walladd.v
%Warning-WIDTH:add.v11:OperatorASSIGNDLYexpects1bitsontheAssignRHS,butAssignRHS'sADDgenerates4bits.
:...Ininstanceadd
12|z<=?x?+?y;
??????|???????????^~
????????????????...?Use?"/*?verilator?lint_off?WIDTH?*/"?and?lint_on?around?source?to?disable?this?message.
%Warning-UNDRIVEN:?add.v16:?Signal?is?not?driven:?'c'
?????????????????????????????:?...?In?instance?add
????8?|?????output?reg?c
??????|????????????????^
%Error:?Exiting?due?to?2?warning(s)

第一個問題是寬度:x和y是 4 位寬,但z沒有明確的寬度,因此只有 1 位寬。

我們可以通過這樣做來忽略寬度警告:

always@(posedgeclk)begin
/*verilatorlint_offWIDTH*/
z<=?x?+?y;
????????/*?verilator?lint_on?WIDTH?*/
????end

這僅僅是隱藏了問題,卻沒有采取任何措施。

相反,我們可以通過將z的寬度設置為 4 來修復該問題:

outputreg[3:0]z,

雖然這消除了 Verilator 警告,但可能無法完全解決問題。

例如,如果x和y都是4'b1000,會發生什么?我們的加法溢出,計算出z值4'b0000。此示例說明了 linting 的局限性之一:它可以查看不同信號的寬度,但無法解釋應用于它們的所有邏輯。

因此,除了固定z的寬度外,我們還可以將其用作c進位信號,這也解決了“信號未驅動”警告:

always@(posedgeclk)begin
{c,z}<=?x?+?y;
????end

依賴關系和路徑

如果一個模塊依賴于另一個模塊會發生什么?Verilator 將在當前路徑中搜索匹配的模塊。如果想向模塊搜索路徑添加其他目錄,我們可以使用-I. 例如,如果top.v依賴于../maths目錄中的模塊:

verilator--lint-only-Wall-I../mathstop.v

可以使用多個-I參數來包含多個目錄。

黑匣子和空模塊

大多數設計依賴于沒有源的供應商原語或 IP 核,例如使用 PLL 生成時鐘。當嘗試對引用供應商原語的模塊進行 lint 處理時,將收到如下錯誤:

%Error:clock_pix.sv5:Cannotfindfilecontainingmodule:'MMCME2_BASE'
29|MMCME2_BASE#(
|^~~~~~~~~~~
%Error:clock_pix.sv5:Thismaybebecausethere'snosearchpathspecifiedwith-I.
29|MMCME2_BASE#(
|^~~~~~~~~~~
...Lookedin:
MMCME2_BASE
MMCME2_BASE.v
MMCME2_BASE.sv
obj_dir/MMCME2_BASE
obj_dir/MMCME2_BASE.v
obj_dir/MMCME2_BASE.sv

第一個想法可能是找到一種排除MMCME2_BASElint 的方法。唉,Verilog “不經過精心設計就無法檢查,需要整個設計”。我們可以通過為原語創建一個空模塊來解決這個問題??漳K包含 IO,但不包含任何邏輯。

例如,為 Xilinx 的 BUFG 原語創建了一個空模塊:

moduleBUFG(
inputwirelogicI,
outputlogicO
);

//NULLMODULE

endmodule

創建空模塊有點乏味,但可以檢查整個設計。要使用 null 模塊,請確保它位于 Verilator 的搜索路徑中(請參閱上一節)。

Linting Waivers

如果需要對較大的設計或使用第三方源的設計消除 linter 警告,那么/* verilator lint_off */注釋可能不行。從 Verilator 4.028 開始,可以創建Waivers來處理警告,而無需觸及源代碼。要了解更多信息,請參閱 Stefan Wallentowitz 的帖子Verilator Waivers(https://wallento.cs.hm.edu/post/20200612-verilator-waivers/)。

Linting Shell Script

如果有許多頂級模塊和/或包含目錄,可以使用 Makefile 或簡單的 shell 腳本自動檢查。

以下 shell 腳本 lint 與該腳本位于同一目錄中的所有頂級模塊:

#!/bin/sh

DIR=`dirname$0`

echo"##Lintingtopmodulesin${DIR}"
forfin${DIR}/top_*.*v;do
echo"##Checking${f}";
verilator--lint-only-Wall-I${DIR}-I${DIR}/../common$f;
done

可以調整-I參數以適合自己的設置。top_*.*v捕獲擴展名為 .v 和 .sv 的文件。

總結

今天關于Verilator 進行 Verilog Lint介紹就這樣,這是一個功能強大的工具,希望有興趣的可以嘗試一下~






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA設計
    +關注

    關注

    9

    文章

    428

    瀏覽量

    26632
  • 仿真器
    +關注

    關注

    14

    文章

    1019

    瀏覽量

    83941
  • SDL
    SDL
    +關注

    關注

    0

    文章

    18

    瀏覽量

    7434
  • 靜態分析
    +關注

    關注

    1

    文章

    41

    瀏覽量

    3909
  • macOS系統
    +關注

    關注

    0

    文章

    9

    瀏覽量

    1565

原文標題:使用 Verilator 進行 Verilog Lint

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Verilog

    各位大神們,我是剛開始學Verilog的菜鳥,最近寫testbench總是出錯,還請大家能告訴我寫測試模塊到底是有個怎樣的規則,比如下面這個四位全加器代碼的testbench該以怎樣
    發表于 10-18 14:59

    怎樣對ADC進行采集

    怎樣去計算ADC的轉換時間?怎樣對ADC進行采集?怎樣去計算ADC采集的值?
    發表于 10-20 06:21

    怎樣對光敏電阻進行ADC的采集

    怎樣去使用光敏電阻?怎樣對光敏電阻進行ADC的采集?ADC采集的數據是如何控制小燈的明暗變化的?
    發表于 10-25 07:48

    怎樣對stm32 cubemx進行配置

    怎樣對stm32 cubemx進行配置?如何利用Proteus對stm32 cubem進行仿真?
    發表于 10-28 06:14

    怎樣對STM32的啟動文件進行解析

    如何用匯編語言去編寫STM32的啟動文件?怎樣對STM32的啟動文件進行解析?
    發表于 11-26 07:32

    怎樣使用keil的Event Recorder中間件進行打印

    怎樣使用keil的Event Recorder中間件進行打印?有何缺點?怎樣使用jlink-RTT Viewer組件進行打?。坑泻稳秉c?
    發表于 01-19 06:44

    怎樣對LORA的通信距離進行測試

    怎樣對LORA的通信距離進行測試?其測試結果怎樣?
    發表于 02-21 06:41

    怎樣使用DMA進行串口通信

    串口通信的原理是什么?串口通信有哪幾種方式?怎樣使用DMA進行串口通信
    發表于 02-24 07:49

    簡單介紹在Windows系統下安裝Verilator的步驟

    眾所周知,SpinalHDL仿真目前仿真器首推Verilator,無論是在Mac還是Linux下安裝都很輕松,唯獨在Windows下安裝是一件令人頭疼的事情,由于個人很少在Windows下進行開發
    發表于 07-05 15:06

    應用Verilog HDL進行數字系統設計實例

    本內容介紹了應用Verilog HDL進行數字系統設計實例
    發表于 09-27 16:30 ?88次下載
    應用<b class='flag-5'>Verilog</b> HDL<b class='flag-5'>進行</b>數字系統設計實例

    關于PC-lint,以及如何在MDK中添加PC-lint工具

    關于PC-lint,以及如何在MDK中添加PC-lint工具
    的頭像 發表于 03-04 09:31 ?4651次閱讀
     關于PC-<b class='flag-5'>lint</b>,以及如何在MDK中添加PC-<b class='flag-5'>lint</b>工具

    如何使用Icarus Verilog+GTKWave來進行verilog文件的編譯和仿真

    本文將介紹如何使用Icarus Verilog+GTKWave來進行verilog文件的編譯和仿真。 Icarus Verilog Icarus V
    的頭像 發表于 07-27 09:16 ?5484次閱讀
    如何使用Icarus <b class='flag-5'>Verilog</b>+GTKWave來<b class='flag-5'>進行</b><b class='flag-5'>verilog</b>文件的編譯和仿真

    Verilator高性能Verilog HDL模擬器與lint系統

    verilator.zip
    發表于 04-14 11:11 ?1次下載
    <b class='flag-5'>Verilator</b>高性能<b class='flag-5'>Verilog</b> HDL模擬器與<b class='flag-5'>lint</b>系統

    如何在SpyGlass環境本身中修復這些Lint錯誤

    我們將分析 lint目標運行期間產生的違規行為。我們可以使用 SpyGlass GUI 中的各種調試工具來了解違規
    的頭像 發表于 08-14 10:08 ?3522次閱讀
    如何在SpyGlass環境本身中修復這些<b class='flag-5'>Lint</b>錯誤<b class='flag-5'>呢</b>?

    SpyGlass?Lint Turbo結構用戶指南

    電子發燒友網站提供《SpyGlass?Lint Turbo結構用戶指南.pdf》資料免費下載
    發表于 12-21 09:48 ?0次下載
    主站蜘蛛池模板: 91av视频免费在线观看 | 国产亚洲新品一区二区 | 国产码一区二区三区 | 狠狠躁夜夜躁人人爽天天段 | 免费一级欧美片片线观看 | 激情在线网站 | 日本免费黄色录像 | 国产美女精品久久久久中文 | 四虎三级 | 亚洲黄色网址大全 | 诱人的老师bd高清日本在线观看 | 中国性猛交xxxx乱大交 | 日本三级黄色 | 天天干夜啪 | 国产va免费精品高清在线 | 最猛91大神ben与女教师 | 国产在线欧美精品卡通动漫 | 特黄aaaaaa久久片 | 欧美一区二区在线观看视频 | 精品免费视在线观看 | 毛片毛多 | 国片一级 免费看 | 天天做日日爱 | 啪啪网站色大全免费 | 国产美女主播一级成人毛片 | 亚洲第一免费网站 | 国产国拍亚洲精品mv在线观看 | 亚洲成a人片在线观看88 | 性色在线视频精品 | 亚洲免费在线观看 | 九九热免费观看 | 天天做天天摸天天爽天天爱 | 乱高h辣黄文np公交车 | 日本三级在线视频 | 日本三级最新中文字幕电影 | 羞羞答答91麻豆网站入口 | 婷婷网五月天天综合天天爱 | 手机在线精品视频 | 欧美性free免费 | 狠狠干福利视频 | 亚洲国产精品第一区二区 |