Downloaded and integrated latest wiki documentation from the geda website.
[geda-gaf/whiteaudio.git] / docs / wiki / geda_icarus_anc.html
blob53db1376211a7f437068f14456a06f25b4a6e8e5
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
4 lang="en" dir="ltr">
5 <head>
6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7 <title>geda:icarus_anc</title>
8 <meta name="generator" content="DokuWiki Release rc2007-05-24" />
9 <meta name="robots" content="index,follow" />
10 <meta name="date" content="2007-05-24T22:27:27-0400" />
11 <meta name="keywords" content="geda,icarus_anc" />
12 <link rel="search" type="application/opensearchdescription+xml" href="http://geda.seul.org/wiki/lib/exe/opensearch.php" title="geda Wiki" />
13 <link rel="start" href="http://geda.seul.org/wiki/" />
14 <link rel="contents" href="http://geda.seul.org/wiki/geda:icarus_anc?do=index" title="Index" />
15 <link rel="alternate" type="application/rss+xml" title="Recent Changes" href="http://geda.seul.org/wiki/feed.php" />
16 <link rel="alternate" type="application/rss+xml" title="Current Namespace" href="http://geda.seul.org/wiki/feed.php?mode=list&ns=geda" />
17 <link rel="alternate" type="text/html" title="Plain HTML" href="http://geda.seul.org/wiki/_export/xhtml/geda:icarus_anc" />
18 <link rel="alternate" type="text/plain" title="Wiki Markup" href="http://geda.seul.org/wiki/_export/raw/geda:icarus_anc" />
19 <link rel="stylesheet" media="all" type="text/css" href="lib/exe/css" />
20 <link rel="stylesheet" media="screen" type="text/css" href="lib/exe/001css" />
21 <link rel="stylesheet" media="print" type="text/css" href="lib/exe/002css" />
22 </head>
23 <body>
24 <div class="dokuwiki export">
28 <h1><a name="icarus_attribute_naming_conventions" id="icarus_attribute_naming_conventions">Icarus Attribute Naming Conventions</a></h1>
29 <div class="level1">
30 <pre class="code">ATTRIBUTE NAMING CONVENTIONS
32 Attributes that are specific to Icarus Verilog, and are intended to be
33 of use to programmers, start with the prefix &quot;ivl_&quot;.
35 Attributes with the &quot;_ivl_&quot; prefix are set aside for internal
36 use. They may be generated internally by the compiler. They need not
37 be documented here.
39 ATTRIBUTES TO CONTROL SYNTHESIS
41 The following is a summary of Verilog attributes that Icarus Verilog
42 understands within Verilog source files to control synthesis
43 behavior. This section documents generic synthesis attributes. For
44 target specific attributes, see target specific documentation.
46 These attributes only effect the behavior of the synthesizer. For
47 example, the ivl_combinational will not generate an error message
48 if the Verilog is being compiled for simulation. (It may generate a
49 warning.)
52 * Attributes for &quot;always&quot; and &quot;initial&quot; statements
54 (* ivl_combinational *)
56 This attribute tells the compiler that the statement models
57 combinational logic. If the compiler finds that it cannot make
58 combinational logic out of a marked always statement, it will
59 report an error.
61 This attribute can be used to prevent accidentally inferring
62 latches or flip-flops where the user intended combinational
63 logic.
65 (* ivl_synthesis_on *)
67 This attribute tells the compiler that the marked always statement
68 is synthesizable. The compiler will attempt to synthesize the
69 code in the marked &quot;always&quot; statement. If it cannot in any way
70 synthesize it, then it will report an error.
72 (* ivl_synthesis_off *)
74 If this value is attached to an &quot;always&quot; statement, then the
75 compiler will *not* synthesize the &quot;always&quot; statement. This can be
76 used, for example, to mark embedded test bench code.
79 * Attributes for modules
81 (* ivl_synthesis_cell *)
83 If this value is attached to a module during synthesis, that
84 module will be considered a target architecture primitive, and
85 its interior will not be synthesized further. The module can
86 therefore hold a model for simulation purposes.
89 * Attributes for signals (wire/reg/integer/tri/etc.)
91 (* PAD = &quot;&lt;pad assignment list&gt;&quot; *)
93 If this attribute is attached to a signal that happens to be a
94 root module port, then targets that support it will use the string
95 value as a list of pin assignments for the port/signal. The format
96 is a comma separated list of location tokens, with the format of
97 the token itself defined by the back-end tools in use.
99 * Other Attributes
101 [ none defined yet ]
104 MISC
106 (* _ivl_schedule_push *)
108 If this attribute is attached to a thread object (always or
109 initial statement) then the vvp code generator will generate code
110 that causes the scheduler to push this thread at compile time. The
111 compiler may internally add this attribute to always statements if
112 it detects that it is combinational. This helps resolve time-0
113 races.</pre>
115 </div>
116 </div>
117 </body>
118 </html>