xref: /Universal-ctags/man/ctags-lang-verilog.7.rst.in (revision 5cf55d341cd3e824c1b4f45dea6edd880ff35efb)
1f5f44050SHiroo HAYASHI.. _ctags_lang-verilog(7):
2f5f44050SHiroo HAYASHI
3f5f44050SHiroo HAYASHI======================================================================
4f5f44050SHiroo HAYASHIctags-lang-verilog
5f5f44050SHiroo HAYASHI======================================================================
6112f4791SHiroo HAYASHI--------------------------------------------------------------------
7112f4791SHiroo HAYASHIThe man page about SystemVerilog/Verilog parser for Universal Ctags
8112f4791SHiroo HAYASHI--------------------------------------------------------------------
9f5f44050SHiroo HAYASHI
10f5f44050SHiroo HAYASHI:Version: @VERSION@
11dccba5efSHiroo HAYASHI:Manual group: Universal Ctags
12f5f44050SHiroo HAYASHI:Manual section: 7
13f5f44050SHiroo HAYASHI
14f5f44050SHiroo HAYASHISYNOPSIS
15f5f44050SHiroo HAYASHI--------
16f5f44050SHiroo HAYASHI|	**@CTAGS_NAME_EXECUTABLE@** ... [--kinds-systemverilog=+Q] [--fields-SystemVerilog=+{parameter}] ...
17112f4791SHiroo HAYASHI|	**@CTAGS_NAME_EXECUTABLE@** ... [--fields-Verilog=+{parameter}] ...
18f5f44050SHiroo HAYASHI
19f5f44050SHiroo HAYASHI    +---------------+---------------+-------------------+
20f5f44050SHiroo HAYASHI    | Language      | Language ID   | File Mapping      |
21f5f44050SHiroo HAYASHI    +===============+===============+===================+
22f5f44050SHiroo HAYASHI    | SystemVerilog | SystemVerilog | .sv, .svh, svi    |
23f5f44050SHiroo HAYASHI    +---------------+---------------+-------------------+
24112f4791SHiroo HAYASHI    | Verilog       | Verilog       | .v                |
25112f4791SHiroo HAYASHI    +---------------+---------------+-------------------+
26f5f44050SHiroo HAYASHI
27f5f44050SHiroo HAYASHIDESCRIPTION
28f5f44050SHiroo HAYASHI-----------
29112f4791SHiroo HAYASHIThis man page describes about the SystemVerilog/Verilog parser for Universal Ctags.
30112f4791SHiroo HAYASHISystemVerilog parser supports IEEE Std 1800-2017 keywords.
31112f4791SHiroo HAYASHIVerilog parser supports IEEE Std 1364-2005 keywords.
32f5f44050SHiroo HAYASHI
33112f4791SHiroo HAYASHISupported Kinds
34112f4791SHiroo HAYASHI~~~~~~~~~~~~~~~
35112f4791SHiroo HAYASHI
36112f4791SHiroo HAYASHI.. code-block:: console
37112f4791SHiroo HAYASHI
38112f4791SHiroo HAYASHI	$ ctags --list-kinds-full=SystemVerilog
39112f4791SHiroo HAYASHI	#LETTER NAME       ENABLED REFONLY NROLES MASTER DESCRIPTION
40112f4791SHiroo HAYASHI	A       assert     yes     no      0      NONE   assertions (assert, assume, cover, restrict)
41112f4791SHiroo HAYASHI	C       class      yes     no      0      NONE   classes
42112f4791SHiroo HAYASHI	E       enum       yes     no      0      NONE   enumerators
43112f4791SHiroo HAYASHI	H       checker    yes     no      0      NONE   checkers
44112f4791SHiroo HAYASHI	I       interface  yes     no      0      NONE   interfaces
45112f4791SHiroo HAYASHI	K       package    yes     no      0      NONE   packages
46112f4791SHiroo HAYASHI	L       clocking   yes     no      0      NONE   clocking
47112f4791SHiroo HAYASHI	M       modport    yes     no      0      NONE   modports
48112f4791SHiroo HAYASHI	N       nettype    yes     no      0      NONE   nettype declarations
49112f4791SHiroo HAYASHI	O       constraint yes     no      0      NONE   constraints
50112f4791SHiroo HAYASHI	P       program    yes     no      0      NONE   programs
51112f4791SHiroo HAYASHI	Q       prototype  no      no      0      NONE   prototypes (extern, pure)
52112f4791SHiroo HAYASHI	R       property   yes     no      0      NONE   properties
53112f4791SHiroo HAYASHI	S       struct     yes     no      0      NONE   structs and unions
54112f4791SHiroo HAYASHI	T       typedef    yes     no      0      NONE   type declarations
55112f4791SHiroo HAYASHI	V       covergroup yes     no      0      NONE   covergroups
56112f4791SHiroo HAYASHI	b       block      yes     no      0      NONE   blocks (begin, fork)
57112f4791SHiroo HAYASHI	c       constant   yes     no      0      NONE   constants (define, parameter, specparam, enum values)
58112f4791SHiroo HAYASHI	e       event      yes     no      0      NONE   events
59112f4791SHiroo HAYASHI	f       function   yes     no      0      NONE   functions
60112f4791SHiroo HAYASHI	i       instance   yes     no      0      NONE   instances of module or interface
61112f4791SHiroo HAYASHI	l       ifclass    yes     no      0      NONE   interface class
62112f4791SHiroo HAYASHI	m       module     yes     no      0      NONE   modules
63112f4791SHiroo HAYASHI	n       net        yes     no      0      NONE   net data types
64112f4791SHiroo HAYASHI	p       port       yes     no      0      NONE   ports
65112f4791SHiroo HAYASHI	q       sequence   yes     no      0      NONE   sequences
66112f4791SHiroo HAYASHI	r       register   yes     no      0      NONE   variable data types
67112f4791SHiroo HAYASHI	t       task       yes     no      0      NONE   tasks
68112f4791SHiroo HAYASHI	w       member     yes     no      0      NONE   struct and union members
69112f4791SHiroo HAYASHI
70112f4791SHiroo HAYASHINote that ``prototype`` (``Q``) is disabled by default.
71112f4791SHiroo HAYASHI
72112f4791SHiroo HAYASHI.. code-block:: console
73112f4791SHiroo HAYASHI
74112f4791SHiroo HAYASHI	$ ctags --list-kinds-full=Verilog
75112f4791SHiroo HAYASHI	#LETTER NAME     ENABLED REFONLY NROLES MASTER DESCRIPTION
76112f4791SHiroo HAYASHI	b       block    yes     no      0      NONE   blocks (begin, fork)
77112f4791SHiroo HAYASHI	c       constant yes     no      0      NONE   constants (define, parameter, specparam)
78112f4791SHiroo HAYASHI	e       event    yes     no      0      NONE   events
79112f4791SHiroo HAYASHI	f       function yes     no      0      NONE   functions
80112f4791SHiroo HAYASHI	i       instance yes     no      0      NONE   instances of module
81112f4791SHiroo HAYASHI	m       module   yes     no      0      NONE   modules
82112f4791SHiroo HAYASHI	n       net      yes     no      0      NONE   net data types
83112f4791SHiroo HAYASHI	p       port     yes     no      0      NONE   ports
84112f4791SHiroo HAYASHI	r       register yes     no      0      NONE   variable data types
85112f4791SHiroo HAYASHI	t       task     yes     no      0      NONE   tasks
86112f4791SHiroo HAYASHI
87112f4791SHiroo HAYASHISupported Language Specific Fields
88112f4791SHiroo HAYASHI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89112f4791SHiroo HAYASHI
90112f4791SHiroo HAYASHI.. code-block:: console
91112f4791SHiroo HAYASHI
92112f4791SHiroo HAYASHI	$ ctags --list-fields=Verilog
93112f4791SHiroo HAYASHI	#LETTER NAME      ENABLED LANGUAGE JSTYPE FIXED DESCRIPTION
94112f4791SHiroo HAYASHI	-       parameter no      Verilog  --b    no    parameter whose value can be overridden.
95112f4791SHiroo HAYASHI	$ ctags --list-fields=SystemVerilog
96112f4791SHiroo HAYASHI	#LETTER NAME      ENABLED LANGUAGE      JSTYPE FIXED DESCRIPTION
97112f4791SHiroo HAYASHI	-       parameter no      SystemVerilog --b    no    parameter whose value can be overridden.
98f5f44050SHiroo HAYASHI
99f5f44050SHiroo HAYASHI``parameter`` field
100112f4791SHiroo HAYASHI....................
101f5f44050SHiroo HAYASHI
102112f4791SHiroo HAYASHIIf the field ``parameter`` is enabled, a field ``parameter:`` is added on a parameter whose
103f5f44050SHiroo HAYASHIvalue can be overridden on an instantiated module, interface, or program.
104112f4791SHiroo HAYASHIThis is useful for a editor plugin or extension to enable auto-instantiation of modules with
105f5f44050SHiroo HAYASHIparameters which can be overridden.
106f5f44050SHiroo HAYASHI
107f5f44050SHiroo HAYASHI.. code-block:: console
108f5f44050SHiroo HAYASHI
109f5f44050SHiroo HAYASHI    $ ctags ... --fields-Verilog=+{parameter} ...
110f5f44050SHiroo HAYASHI    $ ctags ... --fields-SystemVerilog=+{parameter} ...
111f5f44050SHiroo HAYASHI
112112f4791SHiroo HAYASHIOn the following source code fields ``parameter:`` are added on
113112f4791SHiroo HAYASHIparameters ``P*``, not on ones ``L*``.  Note that ``L4`` and ``L6`` is declared by
114112f4791SHiroo HAYASHI``parameter`` statement, but fields ``parameter:`` are not added,
115f5f44050SHiroo HAYASHIbecause they cannot be overridden.
116f5f44050SHiroo HAYASHI
117f5f44050SHiroo HAYASHI"input.sv"
118f5f44050SHiroo HAYASHI
119f5f44050SHiroo HAYASHI.. code-block:: systemverilog
120f5f44050SHiroo HAYASHI
121f5f44050SHiroo HAYASHI	// compilation unit scope
122f5f44050SHiroo HAYASHI	parameter L1 = "synonym for the localparam";
123f5f44050SHiroo HAYASHI
124f5f44050SHiroo HAYASHI	module with_parameter_port_list #(
125f5f44050SHiroo HAYASHI		P1,
126f5f44050SHiroo HAYASHI		localparam L2 = P1+1,
127f5f44050SHiroo HAYASHI		parameter P2)
128f5f44050SHiroo HAYASHI		( /*port list...*/ );
129f5f44050SHiroo HAYASHI		parameter  L3 = "synonym for the localparam";
130f5f44050SHiroo HAYASHI		localparam L4 = "localparam";
131f5f44050SHiroo HAYASHI		// ...
132f5f44050SHiroo HAYASHI	endmodule
133f5f44050SHiroo HAYASHI
134f5f44050SHiroo HAYASHI	module with_empty_parameter_port_list #()
135f5f44050SHiroo HAYASHI		( /*port list...*/ );
136f5f44050SHiroo HAYASHI		parameter  L5 = "synonym for the localparam";
137f5f44050SHiroo HAYASHI		localparam L6 = "localparam";
138f5f44050SHiroo HAYASHI		// ...
139f5f44050SHiroo HAYASHI	endmodule
140f5f44050SHiroo HAYASHI
141f5f44050SHiroo HAYASHI	module no_parameter_port_list
142f5f44050SHiroo HAYASHI		( /*port list...*/ );
143f5f44050SHiroo HAYASHI		parameter  P3 = "parameter";
144f5f44050SHiroo HAYASHI		localparam L7 = "localparam";
145f5f44050SHiroo HAYASHI		// ...
146f5f44050SHiroo HAYASHI	endmodule
147f5f44050SHiroo HAYASHI
148112f4791SHiroo HAYASHI.. code-block:: console
149f5f44050SHiroo HAYASHI
150112f4791SHiroo HAYASHI	$ ctags -uo - --fields-SystemVerilog=+{parameter} input.sv
151b9d4dee7SMasatake YAMATO	L1	input.sv	/^parameter L1 = "synonym for the localparam";$/;"	c	parameter:
152b9d4dee7SMasatake YAMATO	with_parameter_port_list	input.sv	/^module with_parameter_port_list #($/;"	m
153b9d4dee7SMasatake YAMATO	P1	input.sv	/^	P1,$/;"	c	module:with_parameter_port_list	parameter:
154b9d4dee7SMasatake YAMATO	L2	input.sv	/^	localparam L2 = P1+1,$/;"	c	module:with_parameter_port_list
155b9d4dee7SMasatake YAMATO	P2	input.sv	/^	parameter P2)$/;"	c	module:with_parameter_port_list	parameter:
156b9d4dee7SMasatake YAMATO	L3	input.sv	/^	parameter  L3 = "synonym for the localparam";$/;"	c	module:with_parameter_port_list
157b9d4dee7SMasatake YAMATO	L4	input.sv	/^	localparam L4 = "localparam";$/;"	c	module:with_parameter_port_list
158b9d4dee7SMasatake YAMATO	with_empty_parameter_port_list	input.sv	/^module with_empty_parameter_port_list #()$/;"	m
159b9d4dee7SMasatake YAMATO	L5	input.sv	/^	parameter  L5 = "synonym for the localparam";$/;"	c	module:with_empty_parameter_port_list
160b9d4dee7SMasatake YAMATO	L6	input.sv	/^	localparam L6 = "localparam";$/;"	c	module:with_empty_parameter_port_list
161b9d4dee7SMasatake YAMATO	no_parameter_port_list	input.sv	/^module no_parameter_port_list$/;"	m
162b9d4dee7SMasatake YAMATO	P3	input.sv	/^	parameter  P3 = "parameter";$/;"	c	module:no_parameter_port_list	parameter:
163b9d4dee7SMasatake YAMATO	L7	input.sv	/^	localparam L7 = "localparam";$/;"	c	module:no_parameter_port_list
164f5f44050SHiroo HAYASHI
165112f4791SHiroo HAYASHITIPS
166112f4791SHiroo HAYASHI~~~~
167112f4791SHiroo HAYASHI
168112f4791SHiroo HAYASHIIf you want to map files ``*.v`` to SystemVerilog, add
169112f4791SHiroo HAYASHI``--langmap=SystemVerilog:.v`` option.
170112f4791SHiroo HAYASHI
171112f4791SHiroo HAYASHIKNOWN ISSUES
172f5f44050SHiroo HAYASHI---------------------------------------------------------------------
173f5f44050SHiroo HAYASHI
174112f4791SHiroo HAYASHISee https://github.com/universal-ctags/ctags/issues/2674 for more information.
175f5f44050SHiroo HAYASHI
176f5f44050SHiroo HAYASHISEE ALSO
177f5f44050SHiroo HAYASHI--------
178112f4791SHiroo HAYASHI
179112f4791SHiroo HAYASHI- ctags(1)
180112f4791SHiroo HAYASHI- ctags-client-tools(7)
181112f4791SHiroo HAYASHI- Language Reference Manuals (LRM)
182*5cf55d34SHiroo HAYASHI   - IEEE Standard for SystemVerilog — Unified Hardware Design, Specification, and
183112f4791SHiroo HAYASHI     Verification Language, IEEE Std 1800-2017,
184112f4791SHiroo HAYASHI     https://ieeexplore.ieee.org/document/8299595
185112f4791SHiroo HAYASHI   - IEEE Standard for Verilog Hardware Description Language, IEEE Std 1364-2005,
186112f4791SHiroo HAYASHI     https://ieeexplore.ieee.org/document/1620780
187