vlog-mode --- The verilog code maker

Simplified Chinese Version

What and Why

vlog-mode is a powerful major mode for editing verilog sources in GNU Emacs. (Yes, up to now for GNU Emacs only, because no XEmacs compatibility test is made, though I'm hoping to have it made). It is designed to be a free, open, powerful and fully customizable working environment for those who deal with verilog a lot.

Then why Emacs? Emacs is a powerfull editor available under nearly all OS on all hardwares, esp. on those EDA platforms such as GNU/Linux on x86 or Solaris on Sparc. So the answer is: Emacs is powerful (not "powerful enough" but "cannot be more powerful") and cross-platform (or in geeks' words, Emacs is a platform itself).

Well, then why anothor major mode? verilog-mode is a long-history major mode for verilog, but it's not very open and not good enough for me. So I decided to write a brand-new, more open, more customizable and more powerful one, and then open it to the users' community. Everyone is welcom to make suggestions, send bug reports or feature requests, etc. No single person or organization controls the codes. We will have OUR vlog-mode, not "crazycool's vlog-mode". It belongs to the community, everyone in this community is welcom to make contributions.


  • Verilog 2000 support (optional).
  • Colorful syntax highlight (screenshot), keywords customization.
  • Fully configurable code indentation and alignment.
  • Convenient typing assistants.
  • Module instantiation assistants. (In progress...)
  • Automatic sensitive lists generation.
  • Signal width detection.
  • Configurable signal list in imenu and speedbar (screenshot).
  • Error message capture for various simulators, linters and other tools under compilation mode.
  • Codes folding.
  • Smart skeletons.
  • Jump between block beginning and end (begin/end, fork/join, case/endcase...), also from else to if
  • And many more...


    From 1.6 till now

  • More powerful (yet quite configurable) code alignment support through the use of align.el. (align.el has been included in GNU Emacs since 21.4 release.)
  • Various minor bug fixes.

    From 1.4 to 1.6

  • Verilog 2000 support.
  • ANSI C style port declaration support.
  • Signal list (imenu and speedbar) support.
  • Jumping between block beginning and block end, also from `else' to correspoding `if'.
  • Improved autosense.


  • Port to XEmacs. (helps needed)
  • Make vlog-mode "project based", and convenient speedbar supports. (In progress...)
  • Hierarchical module ports listing and hinting, something like "intellisense" or better.
  • More comprehensive error location of compilation. (helps needed)
  • A "tuner" (something like a wizard) for newbies.
  • Tell me more...

    Sample Configuration Code

    (add-to-list 'load-path "~/site-lisp/vlog-mode")
    (require 'vlog-mode)
    (add-to-list 'auto-mode-alist '("\\.v\\'" . vlog-mode))
    (add-to-list 'auto-mode-alist '("\\.vl\\'" . vlog-mode))
    (setq vlog-mode-highlight-all-uppercase-words t)
    (setq vlog-align-mod-inst-stop-list '(28 52))
    (setq vlog-indent-level-beh                2
          vlog-indent-level-block              0
          vlog-indent-level-block-beh          0
          vlog-indent-level-block-inside       2
          vlog-indent-level-case-inside        4
          vlog-indent-level-case-branch-inside 2
          vlog-indent-level-cond               2
          vlog-indent-level-default            2
          vlog-indent-level-port-list          4)
    (setq vlog-mode-keywordset-docs
          (append vlog-mode-keywordset-docs
                  (list "Note:" "NOTE:" "note:")))
    (setq vlog-skel-header-string "\
    //^File Header -----------------------------------------< Powered By Emacs >--
    // Copyright (C) %<time %Y> %<company>
    // All rights reserved
    // ---------------------------------------------------------------------------
    // $Id$
    // FILE NAME   : %<filename>
    // MODULE NAME : %<modulename>
    // AUTHOR      : %<author>
    // ---------------------------------------------------------------------------
    // [RELEASE HISTORY]                               Last Modified : %<time %Y-%m-%d>
    // 1.0%<align>%<time %y-%m-%d>%<align>%<author>%<align>Original
    // ---------------------------------------------------------------------------
    // %<_>
    // ---------------------------------------------------------------------------
    // [ N o n e ]
    // ---------------------------------------------------------------------------
    // PARAM_NAME   RANGE               DEFAULT         DESCRIPTION
    // ----------   -----               -------         -----------
    // [ N o n e ]
    //$File Header -----------------------------------------< Powered By Emacs >--\n")
    (setq vlog-skel-user-name    "Your name"
          vlog-skel-company-name "GNU")

    Be part of

  • Send email to our mailing list (Recommended): vlog-mode-discuss@lists.sourceforge.net
  • Want to be a project member? Email me.


  • Project page
  • Download
  • Browse CVS
  • Google mail list
  • vlog-mode-discuss mailing list

    Powered by

    Visit SourceForge.net     GNU Emacs

    Last Update: 17 Mar 2007