色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

怎樣使用Verilator進行Verilog Lint呢?

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

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

安裝Verilator

Linux

Verilator 在大多數(shù) Linux 發(fā)行版存儲庫中都可用,并適用于 Windows 子 Linux 系統(tǒng)上運行。

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

aptupdate
aptinstallverilator

蘋果系統(tǒng)

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

brewinstallverilator

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

基本 Linting

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

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

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

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

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

`default_nettypenone

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

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

進行l(wèi)int檢查

$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,會發(fā)生什么?我們的加法溢出,計算出z值4'b0000。此示例說明了 linting 的局限性之一:它可以查看不同信號的寬度,但無法解釋應用于它們的所有邏輯。

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

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

依賴關系和路徑

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

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

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

黑匣子和空模塊

大多數(shù)設計依賴于沒有源的供應商原語或 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 “不經(jīng)過精心設計就無法檢查,需要整個設計”。我們可以通過為原語創(chuàng)建一個空模塊來解決這個問題。空模塊包含 IO,但不包含任何邏輯。

例如,為 Xilinx 的 BUFG 原語創(chuàng)建了一個空模塊:

moduleBUFG(
inputwirelogicI,
outputlogicO
);

//NULLMODULE

endmodule

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

Linting Waivers

如果需要對較大的設計或使用第三方源的設計消除 linter 警告,那么/* verilator lint_off */注釋可能不行。從 Verilator 4.028 開始,可以創(chuàng)建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參數(shù)以適合自己的設置。top_*.*v捕獲擴展名為 .v 和 .sv 的文件。

總結

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






審核編輯:劉清

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

    關注

    9

    文章

    428

    瀏覽量

    26759
  • 仿真器
    +關注

    關注

    14

    文章

    1020

    瀏覽量

    84200
  • SDL
    SDL
    +關注

    關注

    0

    文章

    18

    瀏覽量

    7500
  • 靜態(tài)分析

    關注

    1

    文章

    42

    瀏覽量

    3938
  • macOS系統(tǒng)

    關注

    0

    文章

    9

    瀏覽量

    1582

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

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

收藏 人收藏

    評論

    相關推薦

    Verilog

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

    怎樣對ADC進行采集

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

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

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

    怎樣對stm32 cubemx進行配置

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

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

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

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

    怎樣使用keil的Event Recorder中間件進行打印?有何缺點?怎樣使用jlink-RTT Viewer組件進行打印?有何缺點?
    發(fā)表于 01-19 06:44

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

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

    怎樣使用DMA進行串口通信

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

    簡單介紹在Windows系統(tǒng)下安裝Verilator的步驟

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

    應用Verilog HDL進行數(shù)字系統(tǒng)設計實例

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

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

    關于PC-lint,以及如何在MDK中添加PC-lint工具
    的頭像 發(fā)表于 03-04 09:31 ?4834次閱讀
     關于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
    的頭像 發(fā)表于 07-27 09:16 ?5565次閱讀
    如何使用Icarus <b class='flag-5'>Verilog</b>+GTKWave來<b class='flag-5'>進行</b><b class='flag-5'>verilog</b>文件的編譯和仿真

    Verilator高性能Verilog HDL模擬器與lint系統(tǒng)

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

    如何在SpyGlass環(huán)境本身中修復這些Lint錯誤

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

    SpyGlass?Lint Turbo結構用戶指南

    電子發(fā)燒友網(wǎng)站提供《SpyGlass?Lint Turbo結構用戶指南.pdf》資料免費下載
    發(fā)表于 12-21 09:48 ?0次下載
    主站蜘蛛池模板: 深夜释放自己在线观看 | 国产AV亚洲国产AV麻豆 | 老湿司午夜爽爽影院榴莲视频 | old老男人野外树林tv | XXX欧美性兽交 | 51xx午夜影视福利 | 国内精品伊人久久久久 | 伊人精品影院一本到综合 | 久久国产乱子伦精品免费M 久久国产露脸老熟女熟69 | 久久精品熟一区二区三区 | 嗯好大好猛皇上好深用力 | 欧美四虎精品二区免费 | 日本亚洲欧洲免费旡码 | 国产精品人妻无码77777 | 热中文热国产热综合 | 公交车轮C关老师 | 97人妻无码AV碰碰视频 | 久久欧洲AV无码精品色午夜麻豆 | 国产成人片视频一区二区青青 | 全黄h全肉短篇禁乱np | 国产精品私人玩物在线观看 | 久久国产欧美日韩精品免费 | 午夜aaaa| 91嫩草国产在线观看免费 | 国产精品人妻无码免费A片导航 | 日本老妇一级特黄aa大片 | 色中色最新地址登陆 | 琪琪伦伦影院理论片 | 小骚妇BBBXXX | 男人J桶女人P视频无遮挡网站 | 亚洲欧美日韩人成 | 国产午夜婷婷精品无码A片 国产午夜视频在永久在线观看 | 娇妻玩4P被三个男人伺候电影 | 国产成人高清精品免费观看 | 国产互换后人妻的疯狂VIDEO | 久久国产视频网 | 女性私密五月天 | 亚洲高清一区二区三区电影 | 亚洲国产精品久久又爽黄A片 | 国产欧美日韩中文视频在线 | 成人国产亚洲欧美成人综合网 |