vlog-mode --- The verilog code maker

English Version

简介

vlog-mode 是什么?

vlog-mode 是一个 GNU Emacs 扩展(目前还不支持 XEmacs) ,为编辑 verilog 代码提 供方便。vlog-mode 提供的不仅仅是语法加亮,还提供基于代码分析的各种功能,比如自 动缩进(indentation)、自动对齐(aligning)和敏感表自动生成(autosense)。 vlog-mode 是符合 GPL 协议的自由软件,其目标是为那些需要处理大量 verilog 代码的 用户提供一个开放的、智能的、强大的和全面可定制的工作环境。

为什么要用 Emacs?

Emacs 是一个非常强大的编辑器,并且可以运行在几乎任何平台上。主流的 EDA 平台(比 如运行于 x86 平台上的 GNU/Linux 和运行于 sparc 平台上的 Solaris)上都有稳定可靠 的 Emacs 可用。所以“强大”和“跨平台”是选择 Emacs 的主要原因。

不是已经有一个 verilog-mode 了么?

verilog-mode 是一个被广 泛使用的扩展,但是它似乎不够开放,并且对我来说不够强大,于是我决定从头开始重新 写一个好用的扩展,并将其开放。我希望 vlog-mode 能够成为所有使用 Emacs 处理 verilog 代码的用户的共同项目。我们欢迎任何意见、建议、批评和抱怨;当然,也欢迎 贡献。

功能特点

  • 支持 Verilog 2000(可配置)。
  • 语法高亮(截图);自定义关键字。
  • 可配置的代码缩进(截图)和对齐(截图)。
  • 智能检测和代码输入辅助。
  • 自动模块实例化。
  • 敏感表自动生成。
  • 信号宽度检测。
  • 可定制的模块内信号列表显示(imenu 和 speedbar)(截图)。
  • 针对不同编译器、仿真器、语法检查器的错误定位。
  • 代码折叠。
  • 智能模板(例如快速插入一个新 always 块)。
  • 代码块(begin/end, fork/join, case/endcase...)头尾跳转,else 到 if 跳转。
  • 还有更多……

    版本历史

    从 1.6 到现在

  • 更加强大的代码对齐功能(基于 GNU Emacs 自带的 align.el)
  • Bug fixes.

    从 1.4 到 1.6

  • Verilog 2000 支持。
  • ANSI C 风格的端口列表支持。
  • 信号列表显示(imenu 和 speedbar)
  • 代码块(begin/end, fork/join, case/endcase...)头尾跳转,else 到 if 跳转。
  • 改进了敏感表自动生成。

    计划

  • 移植到 XEmacs。(需要你的帮助)
  • 实现“项目”的概念以及一些基于项目的功能。(开发中)
  • 模块和信号自动补全。
  • 更全面的的错误定位。(需要你的帮助)
  • 傻瓜化的配置向导。
  • 告诉我你的好主意……。

    参考配置代码

    (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))
    
    (vlog-mode-enable-v2k)
    
    (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:")))
    (vlog-mode-make-keywords)
    
    (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>
    // VERSION  DATE        AUTHOR      DESCRIPTION
    // 1.0%<align>%<time %y-%m-%d>%<align>%<author>%<align>Original
    // ---------------------------------------------------------------------------
    // [DESCRIPTION]
    // %<_>
    // ---------------------------------------------------------------------------
    // [SUBMODULE LIST]
    // [ N o n e ]
    // ---------------------------------------------------------------------------
    // [PARAMETERS]
    // 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")

    参与进来

  • Google 邮件列表
  • 给我发电子邮件或者发帖到 Sourceforge 邮件列表: vlog-mode-discuss@lists.sourceforge.net
  • 欢迎加入开发者行列

    链接

  • 项目主页
  • 下载
  • 浏览 CVS
  • Google 邮件列表


    Powered by

    访问 SourceForge.net     GNU Emacs

    最后更新时间: 2007-03-17