Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >emacs中调用verible lint来检查verilog语法

emacs中调用verible lint来检查verilog语法

作者头像
ExASIC
发布于 2025-03-17 12:48:00
发布于 2025-03-17 12:48:00
10920
代码可运行
举报
文章被收录于专栏:ExASICExASIC
运行总次数:0
代码可运行

介绍emacs中调用verible lint来检查verilog语法方法。

一、安装verible

从 https://github.com/chipsalliance/verible/releases 下载提前编译好的verible二进制文件,解压即可使用。

二进制包包含以下这个小工具,加进PATH环境变量里。这次我们主要关注verible-verilog-lint这个工具。

image.png
image.png

二、配置emacs verilog-mode的compile工具选项

~/.emacs里增加verilog-tool和verilog-linter的设置。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(custom-set-variables '(verilog-tool 'verilog-linter) '(verilog-linter "verible-verilog-lint --rules -no-tabs,-no-trailing-spaces,-explicit-parameter-storage-type"))

如果项目里有makefile或者Makefile,则verilog-mode会优先使用make。这时要么我们把lint script写到makefile里,要么手改一下verilog-mode的代码,如下把第4、5行,注释起来,换成第6行,跳过makefile的检测。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(defun verilog-set-compile-command ()  
  (interactive)  
  (cond   
  ;;((or (file-exists-p "makefile");If there is a makefile, use it   
  ;;     (file-exists-p "Makefile"))   
    (nil    
      (set (make-local-variable 'compile-command) "make "))   
    (t    
      (set (make-local-variable 'compile-command) 
        (if verilog-tool             
          (let ((cmd (symbol-value verilog-tool)))               
            (if (string-match "%s" cmd)                  
              (format cmd (or buffer-file-name ""))                
              (concat cmd " " (or buffer-file-name "")))) ""))))  
  (verilog-modify-compile-command))

三、emacs里进行lint检查

在emacs菜单->Verilog->Compile,或者M-x compile,emacs会自动调出设置的lint工具和参数,按<enter>即可对当前verilog进行Verilog检查。如果有报错,鼠标点击报错,可以自动跳转到代码对应的地方。

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

四、verible的lint规则

我们可以在terminal里,用命令verible-verilog-lint --help_rules all查看一共有哪些rule。如果需要enable或disable rule可以在lint选项里设置,rule前面带+表示enable,带-表示disable。解释一下上面设置的lint参数,表示disable no-tabs、no-trailing-spaces、explicit-parameter-storage-type三条rule。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
verible-verilog-lint --rules -no-tabs,-no-trailing-spaces,-explicit-parameter-storage-type

五、配置其它lint

理论上可以支持任何verilog编译工具,如vcs、xrun等。有兴趣的朋友可以尝试一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ExASIC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
2 条评论
热度
最新
可以,大佬,互粉一下
可以,大佬,互粉一下
111举报
已关注你的号
已关注你的号
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
golang工程通用构建方式
要解决上述的问题,我们需要一个构建脚本/工具来自动化的在开发、持续集成、预发布阶段提供下列功能:
周亮宇
2019/08/19
2.2K0
Emacs setup for Go Development
---- 概述 最近在我个人笔记本搭建Go开发环境,需要开发基于Go的一些业务模块,所以就把Go开发环境的配置记录下来。废话少说,直接上代码,嘿嘿! Emacs 和 GO 安装 由于我个人笔记本电脑是MAC Pro,所以在这里主要基于OSX搭建Go开发环境。个人平时编辑器基本上是Emacs,这篇博客主要是记录我在MAC下设置Emacs支持Go开发环境。 Emacs 安装 由于mac自带的emacs版本比较低,所以建议删除或者更新Emacs,个人喜欢干净利索就把旧的emacs删除掉了。新版本的mac,增加了保
吕海峰
2018/04/03
3.8K0
Emacs setup for Go Development
如何在本地Fabric release-2.2上快速make all成功
前提:国内环境。Fabric项目根目录下执行,切换到release-2.2分支 清理环境make clean-all 修改MakefileALPINE_VER ?= 3.14->ALPINE_V
天地一小儒
2022/12/28
8770
如何在本地Fabric release-2.2上快速make all成功
emacs配置文件3
;;普通设置 (setq inhibit-startup-message t);关闭起动时闪屏 (setq visible-bell t);关闭出错时的提示声 (show-paren-mode t);显示括号匹配 ;(set-default-font "-adobe-courier-medium-r-normal--14-100-100-100-m-90-iso10646-1");;字体设置 (column-number-mode t);显示列号 (setq frame-title-format "%n%F/%b");在窗口的标题栏上显示文件名称 (mouse-avoidance-mode 'animate);光标靠近鼠标指针时,让鼠标指针自动让开 (setq default-frame-alist '((height . 25) (width . 80) (menu-bar-lines . 80) (tool-bar-lines . 80)));设置窗口启动大小 (fset 'yes-or-no-p 'y-or-n-p);以 y/n代表 yes/no (setq-default make-backup-files nil);;不要生成临时文件 (setq x-select-enable-clipboard t);;允许emacs和外部其他程序的粘贴 (setq mouse-yank-at-point t);支持中键粘贴 ;(show-paren-mode 't); 高亮显示匹配括号 ;;自动插入匹配的括号 ;; enable skeleton-pair insert globally (setq skeleton-pair t) (global-set-key (kbd "(") 'skeleton-pair-insert-maybe) (global-set-key (kbd "[") 'skeleton-pair-insert-maybe) (global-set-key (kbd "{") 'skeleton-pair-insert-maybe) ;;热键设置 (global-set-key [f9] 'delete-window);F9 关闭d当前窗口 (global-set-key [f8] 'other-window);F8窗口间跳转 (global-set-key [(f2)] 'ansi-term);F2 切换到shell模式 ;(global-set-key [f3] 'split-window-vertically);F3分割窗口 (global-set-key [f12] 'my-fullscreen);F12 全屏 (global-set-key [(f4)] 'compile);编译 (global-set-key [f5] 'gdb);启动gdb (global-set-key [(f6)] 'gdb-many-windows);启动窗口gdb (global-set-key [f1] 'goto-line);设置M-g为goto-line ;(global-set-key [f7] 'other-frame);跳到其它窗格 (global-set-key [(f3)] 'speedbar);打开speedbar ;;显示行号 (load-file "~/dos/emacs/display-line-number.el") ;;(autoload `display-line-number-mode-on "display-line-number" "display mode" t) (require 'display-line-number) (global-display-line-number-mode t) ;;鼠标滚轮,默认的滚动太快,这里改为3行 (defun up-slightly () (interactive) (scroll-up 3)) (defun down-slightly () (interactive) (scroll-down 3)) (global-set-key [mouse-4] 'down-slightly) (global-set-key [mouse-5] 'up-slightly) ;;代码折 (add-hook 'c-mode-hook 'hs-minor-mode) (add-hook 'c++-mode-hook 'hs-minor-mode)   ;全屏 (defun my-fullscreen ()   (interactive)   (x-send-client-message    nil 0 nil "_NET_WM_STATE" 32    '(
py3study
2020/01/14
7710
Android代码静态检查(lint、Checkstyle、ktlint、Detekt)
在Android项目开发过程中,开发团队往往要花费大量的时间和精力发现并修改代码缺陷。
静默加载
2022/12/27
2K0
Android代码静态检查(lint、Checkstyle、ktlint、Detekt)
Vivado里如何把emacs设为默认编辑器
习惯了用linux下emacs写代码,最近换到了windows下开发fpga,也想用emacs,怎么办呢?原来在Vivado IDE里就可以设置,但也有一些注意事项。
ExASIC
2025/03/06
760
Vivado里如何把emacs设为默认编辑器
介绍几个用emacs写verilog的好用的插件
projectile是以项目为单位进行编辑插件。默认会把git、mercurial hg的根目录当作项目根目录,也可以手动创建一个.projectile的空文件作为项目根路径的标记。这里(https://docs.projectile.mx/projectile/index/html)有详细介绍。
ExASIC
2024/11/23
1200
介绍几个用emacs写verilog的好用的插件
【Docker】Dockerfile 优化工具 hadolint
笔者在《专题三:Dockerfile 相关》及《Dockerfile 指令对 Docker 镜像层数的影响》等文章中已经介绍过 Dockerfile 相关知识及其运用。但是在实际工作中 Dockerfile 肯定不是随便写写就行了,而是推荐遵照最佳实践原则对其进行优化,以期达到减少镜像体积、提升构建效率及容器安全性等目标。
行者Sun
2025/04/01
900
【Docker】Dockerfile 优化工具 hadolint
Golang基于Gitlab CI/CD部署方案
持续集成 (Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
李海彬
2018/12/24
1.5K0
Linux 内核编码风格
像其他大型软件一样,Linux制订了一套编码风格,对代码的格式、风格和布局做出了规定。我写这篇的目的也就是希望大家能够从中借鉴,有利于大家提高编程效率。
用户7678152
2020/08/26
2.8K0
使用 Verilator 进行 Verilog Lint
FPGA设计是无情的,所以我们需要利用能获得的任何软件进行检查。Verilator是一个 Verilog 仿真器,还支持 linting:静态分析设计中的问题。Verilator 不仅可以发现综合工具可能忽略的问题,而且运行速度也很快。Verilator 也非常适合使用 SDL 进行图形仿真。
碎碎思
2023/09/21
6070
使用 Verilator 进行 Verilog Lint
芯片开发最常用的Makefile语法和功能
在软件或者芯片的开发中,一般都会用到Makefile,它是一个文本文件,其中包含有关如何编译和链接程序的指令。Makefile 由 make 工具使用,make 工具是一个自动化构建工具,可以根据 Makefile 中的指令自动执行编译和链接过程。
猫叔Rex
2024/05/03
2210
芯片开发最常用的Makefile语法和功能
Go通关20:代码检查与优化!
代码规范检查,是根据 Go 语言的规范,对代码进行 「静态扫描检查」,这种检查和业务没有关系。 比如程序中定义了个常量,从未使用过,虽然代码运行没有什么影响,但是为了节省内存,我们可以删除它,这种情况可以通过代码规范检查检测出来。
微客鸟窝
2021/08/18
1.2K0
如何通过静态分析提高iOS代码质量
随着项目的扩大,依靠人工codereview来保证项目的质量,越来越不现实,这时就有必要借助于一种自动化的代码审查工具:**程序静态分析**。
会写bug的程序员
2020/05/26
2.2K0
如何通过静态分析提高iOS代码质量
Golang基于Gitlab CI/CD部署方案
持续集成 (Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
李海彬
2018/09/29
2.9K0
Golang基于Gitlab CI/CD部署方案
原 Linux编程基础-emacs简单配置
    最近笔者又回到了Linux~浪了一圈又回来了     不过emacs确实不错,看起来也高大上(哈哈),今天就把我的配置文件贴上吧     要修改.emacs配置文件的话,只需要在emacs界面中按住control+X,松开后再按Control+F, 然后输入路径~/.emacs就好了,使底部命令行显示成这样: Find File: ~/.emacs,按回车就可以了 ;; 指针颜色设置为白色 (set-cursor-color "white") ;; 鼠标颜色设置为白色 (set-mouse-co
不高不富不帅的陈政_
2018/05/18
1.4K0
用 SwiftLint 保持 Swift 风格一致
代码风格可能是一个有争议的话题,并且在开发人员之间引发一些激烈的讨论。使用工具强制执行一套代码风格规则对于避免一些争论,以及确保在整个项目中保持代码风格的一致性非常有帮助。SwiftLint 可以很容易的整合进 Xcode 项目中,以便在编译时将代码风格冲突标记为警告或者错误。
Swift社区
2022/12/12
2.4K0
用 SwiftLint 保持 Swift 风格一致
Verilog/SV代码检查器-Lint 建模规则检查器与 Verilator
Verilator是一个 Verilog 仿真器和 C++ 编译器,它还支持 linting:静态分析设计问题(代码校验工具)。Verilator 不仅可以发现综合工具可能忽略的问题,而且运行速度也很快。Verilator 也非常适合使用 SDL(https://projectf.io/posts/verilog-sim-verilator-sdl/) 进行图形仿真。
碎碎思
2022/03/11
3.6K0
AutoTools: autoconf, automake, libtools
A dataflow diagram for the autoreconf utility
iOSDevLog
2020/11/12
1K0
AutoTools: autoconf, automake, libtools
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍[通俗易懂]
  在讲解各编译器之前,必须先了解一下以下这些文件。这些文件在编译器目录下或者编译生成目标平台的可执行程序时经常见到。此外,还需要注意区分 Windows 平台 和 Linux 平台的文件。
全栈程序员站长
2022/06/28
16.8K0
ARM 之七 主流编译器(armcc、iar、gcc for arm、LLVM(clang))详细介绍[通俗易懂]
相关推荐
golang工程通用构建方式
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验