[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

31. Editing Verilog and SystemVerilog HDL Source

This mode is used to edit Verilog and SystemVerilog source files. It is automatically invoked for buffers visiting any file ending with one of the following extensions: `.vh?', `.svh?', `.dv'.

The mode provides the following features:

This documentation is only a teaser and does not claim to be complete. Please check out http://www.veripool.org/wiki/verilog-mode/Documentation for further information, FAQ and change history.

The variables controlling indentation/edit style are:

verilog-indent-level
Indentation of Verilog statements with respect to containing block.

verilog-indent-level-module
Absolute indentation of Module level Verilog statements. Set to 0 to get initial and always statements lined up on the left side of your screen.

verilog-indent-level-declaration
Indentation of declarations with respect to containing block. Set to 0 to get them list right under containing block.

verilog-indent-level-behavioral
Indentation of first begin in a task or function block Set to 0 to get such code to lined up underneath the task or function keyword

verilog-indent-level-directive
Indentation of `ifdef/`endif blocks

`verilog-cexp-indent
Indentation of Verilog statements broken across lines i.e.:
 
  if (a)
   begin

verilog-case-indent
Indentation for case statements.

verilog-auto-newline
Non-nil means automatically newline after semicolons and the punctuation mark after an end.

verilog-auto-indent-on-newline
Non-nil means automatically indent line after newline

verilog-tab-always-indent
Non-nil means TAB in Verilog mode should always reindent the current line, regardless of where in the line point is when the TAB command is used.

verilog-indent-begin-after-if
Non-nil means to indent begin statements following a preceding if, else, while, for and repeat statements, if any. otherwise, the begin is lined up with the preceding token. If t, you get:
 
  if (a)
     begin // amount of indent based on `verilog-cexp-indent'

otherwise you get:

 
  if (a)
  begin

verilog-auto-endcomments
Non-nil means a comment /* ... */ is set after the ends which ends cases, tasks, functions and modules. The type and name of the object will be set between the braces.

verilog-minimum-comment-distance
Minimum distance (in lines) between begin and end required before a comment will be inserted. Setting this variable to zero results in every end acquiring a comment; the default avoids too many redundant comments in tight quarters.

verilog-auto-lineup
List of contexts where auto lineup of :'s or ='s should be done.

Turning on Verilog mode calls the value of the variable verilog-mode-hook with no args, if that value is non-nil.

Other useful functions are:

verilog-complete-word
complete word with appropriate possibilities (functions, verilog keywords...)

verilog-comment-region
Put marked area in a comment, fixing nested comments.

verilog-uncomment-region
Uncomment an area commented with verilog-comment-region.

verilog-insert-block
insert begin ... end;

verilog-star-comment
insert /* ... */

verilog-mark-defun
Mark function.

verilog-beg-of-defun
Move to beginning of current function.

verilog-end-of-defun
Move to end of current function.

verilog-label-be
Label matching begin ... end, fork ... join and case ... endcase statements

verilog-sk-always
Insert a always @(AS) begin .. end block

verilog-sk-begin
Insert a begin .. end block

verilog-sk-case
Insert a case block, prompting for details

verilog-sk-else
Insert an else begin .. end block

verilog-sk-for
Insert a for (...) begin .. end block, prompting for details

verilog-sk-generate
Insert a generate .. endgenerate block

verilog-sk-header
Insert a nice header block at the top of file

verilog-sk-initial
Insert an initial begin .. end block

verilog-sk-fork
Insert a fork begin .. end .. join block

verilog-sk-module
Insert a module .. (/*AUTOARG*/);.. endmodule block

verilog-sk-primitive
Insert a primitive .. (.. );.. endprimitive block

verilog-sk-repeat
Insert a repeat (..) begin .. end block

verilog-sk-specify
Insert a specify .. endspecify block

verilog-sk-task
Insert a task .. begin .. end endtask block

verilog-sk-while
Insert a while (...) begin .. end block, prompting for details

verilog-sk-casex
Insert a casex (...) item: begin.. end endcase block, prompting for details

verilog-sk-casez
Insert a casez (...) item: begin.. end endcase block, prompting for details

verilog-sk-if
Insert an if (..) begin .. end block

verilog-sk-else-if
Insert an else if (..) begin .. end block

verilog-sk-comment
Insert a comment block

verilog-sk-assign
Insert an assign .. = ..; statement

verilog-sk-function
Insert a function .. begin .. end endfunction block

verilog-sk-input
Insert an input declaration, prompting for details

verilog-sk-output
Insert an output declaration, prompting for details

verilog-sk-state-machine
Insert a state machine definition, prompting for details!

verilog-sk-inout
Insert an inout declaration, prompting for details

verilog-sk-wire
Insert a wire declaration, prompting for details

verilog-sk-reg
Insert a register declaration, prompting for details"

To configure this package, type:

 
  M-x customize-group RET verilog-mode RET

31.1 About Verilog  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

31.1 About Verilog

Verilog (IEEE 1364) and SystemVerilog (IEEE 1800) HDL are hardware description languages used to design and document electronic systems. In December 2007 IEEE 1364 has been merged into IEEE 1800, paving the way for SystemVerilog as the official successor to Verilog.

SystemVerilog HDL allows designers to design at various levels of abstraction.

For more information, see http://www.systemverilog.org/.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by XEmacs shared group account on December, 19 2009 using texi2html 1.65.