ruby-vpi 17.0.0 → 18.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/LICENSE +8 -6
  2. data/Rakefile +4 -4
  3. data/doc/common.css +6 -9
  4. data/doc/common.inc +3 -3
  5. data/doc/common.tpl +14 -6
  6. data/doc/history.html +152 -44
  7. data/doc/history.inc +55 -3
  8. data/doc/history.yaml +62 -2
  9. data/doc/intro.inc +20 -16
  10. data/doc/manual.doc +23 -9
  11. data/doc/manual.html +232 -200
  12. data/doc/memo.doc +7 -6
  13. data/doc/memo.html +28 -17
  14. data/doc/readme.doc +1 -1
  15. data/doc/readme.html +51 -35
  16. data/doc/rss.xml +96 -70
  17. data/ext/Rakefile +24 -11
  18. data/ext/swig_vpi.h +1 -1
  19. data/ext/swig_wrap.cin +17 -42
  20. data/lib/ruby-vpi/pli.tab +1 -0
  21. data/lib/ruby-vpi/runner.rb +34 -10
  22. data/lib/ruby-vpi/vpi.rb +483 -438
  23. data/ref/c/annotated.html +1 -1
  24. data/ref/c/common_8h.html +1 -1
  25. data/ref/c/files.html +1 -1
  26. data/ref/c/functions.html +1 -1
  27. data/ref/c/functions_vars.html +1 -1
  28. data/ref/c/globals.html +1 -1
  29. data/ref/c/globals_0x63.html +1 -1
  30. data/ref/c/globals_0x65.html +1 -1
  31. data/ref/c/globals_0x66.html +1 -1
  32. data/ref/c/globals_0x6d.html +1 -1
  33. data/ref/c/globals_0x70.html +1 -1
  34. data/ref/c/globals_0x72.html +1 -1
  35. data/ref/c/globals_0x73.html +1 -1
  36. data/ref/c/globals_0x74.html +1 -1
  37. data/ref/c/globals_0x76.html +1 -1
  38. data/ref/c/globals_0x78.html +1 -1
  39. data/ref/c/globals_defs.html +1 -1
  40. data/ref/c/globals_defs_0x65.html +1 -1
  41. data/ref/c/globals_defs_0x70.html +1 -1
  42. data/ref/c/globals_defs_0x76.html +1 -1
  43. data/ref/c/globals_defs_0x78.html +1 -1
  44. data/ref/c/globals_enum.html +1 -1
  45. data/ref/c/globals_eval.html +1 -1
  46. data/ref/c/globals_func.html +1 -1
  47. data/ref/c/globals_type.html +1 -1
  48. data/ref/c/globals_vars.html +1 -1
  49. data/ref/c/index.html +1 -1
  50. data/ref/c/main_8c.html +1 -1
  51. data/ref/c/main_8h.html +1 -1
  52. data/ref/c/relay_8c.html +1 -1
  53. data/ref/c/relay_8h.html +1 -1
  54. data/ref/c/structt__cb__data.html +1 -1
  55. data/ref/c/structt__vpi__delay.html +1 -1
  56. data/ref/c/structt__vpi__error__info.html +1 -1
  57. data/ref/c/structt__vpi__strengthval.html +1 -1
  58. data/ref/c/structt__vpi__systf__data.html +1 -1
  59. data/ref/c/structt__vpi__time.html +1 -1
  60. data/ref/c/structt__vpi__value.html +1 -1
  61. data/ref/c/structt__vpi__vecval.html +1 -1
  62. data/ref/c/structt__vpi__vlog__info.html +1 -1
  63. data/ref/c/verilog_8h.html +1 -1
  64. data/ref/c/vlog_8c.html +1 -1
  65. data/ref/c/vlog_8h.html +1 -1
  66. data/ref/c/vpi__user_8h.html +1 -1
  67. data/ref/ruby/classes/RDoc.html +5 -5
  68. data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
  69. data/ref/ruby/classes/String.html +24 -24
  70. data/ref/ruby/classes/String.src/M000022.html +23 -5
  71. data/ref/ruby/classes/String.src/M000023.html +28 -5
  72. data/ref/ruby/classes/String.src/M000024.html +5 -23
  73. data/ref/ruby/classes/String.src/M000025.html +5 -28
  74. data/ref/ruby/classes/Vpi/Handle.html +94 -49
  75. data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
  76. data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
  77. data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
  78. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
  79. data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
  80. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
  81. data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
  82. data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
  83. data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
  84. data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
  85. data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
  86. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
  87. data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
  88. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
  89. data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
  90. data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
  91. data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
  92. data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
  93. data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
  94. data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
  95. data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
  96. data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
  97. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
  98. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
  99. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
  100. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
  101. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
  102. data/ref/ruby/classes/Vpi.html +0 -7
  103. data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
  104. data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
  105. data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
  106. data/ref/ruby/created.rid +1 -1
  107. data/ref/ruby/files/bin/convert_rb.html +1 -1
  108. data/ref/ruby/files/bin/generate_rb.html +1 -1
  109. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  110. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  111. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  112. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  113. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  114. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  115. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
  116. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  117. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
  118. data/ref/ruby/files/lib/ruby-vpi/util_rb.html +1 -1
  119. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  120. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
  121. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  122. data/ref/ruby/fr_method_index.html +19 -16
  123. data/samp/register_file/register_file.v +1 -1
  124. data/samp/register_file/register_file_spec.rb +9 -5
  125. metadata +42 -38
  126. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000056.html +0 -19
data/doc/memo.doc CHANGED
@@ -1,19 +1,16 @@
1
1
  <doc_proxy_include common.inc>
2
2
 
3
3
  <% section "Pending tasks" do %>
4
- * add shortcuts for reading & writing VPI delay values
4
+ * add support for multiple Ruby prototypes so that you can do integration testing and ESL stuff
5
5
 
6
- * GHDL simulator supports VPI
7
- ** need way to invoke VPI tasks from VHDL, like @$ruby_init();@
6
+ * add shortcuts for reading & writing VPI delay values
8
7
 
9
- +No need for system tasks/functions. Ruby-VPI uses callbacks now!+
8
+ * add support for GHDL simulator (and thereby VHDL!) because it supports VPI
10
9
 
11
10
  * add instructions for using *ruby-debug* with a graphical debugging tool or IDE like RadRails
12
11
 
13
12
  * write section about code coverage and prototyping in manual
14
13
 
15
- * clean up the teriminology section... unnecessary
16
-
17
14
  * write unit tests for the non-VPI libraries like integer.rb and float.rb
18
15
  <% end %>
19
16
 
@@ -44,6 +41,10 @@
44
41
  * make RCov correctly profile the code and report useful coverage metrics...
45
42
 
46
43
  * add support for VPI callbacks which execute Ruby blocks
44
+
45
+ * write section about code coverage and prototyping in manual
46
+
47
+ * clean up the teriminology section... unnecessary
47
48
  <% end %>
48
49
 
49
50
 
data/doc/memo.html CHANGED
@@ -8,10 +8,16 @@
8
8
  <title>Pending tasks</title>
9
9
  </head>
10
10
  <body>
11
+ <div id="site-links">
12
+ <a href="readme.html">Home</a>
13
+ &middot; <a href="manual.html">Manual</a>
14
+ &middot; <a href="memo.html">Memo</a>
15
+ &middot; <a href="history.html">History</a>
16
+ <hr style="display: none"/>
17
+ </div>
18
+
11
19
  <div id="toc-links">
12
- <a href="#toc:contents">Contents</a> &middot;
13
-
14
- <a href="readme.html" style="color: green; font-size: larger;">Home page</a>
20
+ <a href="#toc:contents">Contents</a>
15
21
  </div>
16
22
 
17
23
  <div id="body"><p>
@@ -19,7 +25,7 @@
19
25
 
20
26
  <div id="Pending_tasks" class="section">
21
27
  <h1 class="title">
22
- <a href="#a-606651978">1</a>
28
+ <a href="#a-607907898">1</a>
23
29
 
24
30
  &nbsp;
25
31
 
@@ -27,32 +33,27 @@
27
33
  </h1>
28
34
 
29
35
  <ul>
30
- <li>add shortcuts for reading &#38; writing VPI delay values</li>
36
+ <li>add support for multiple Ruby prototypes so that you can do integration testing and ESL stuff</li>
31
37
  </ul>
32
38
 
33
39
 
34
40
  <ul>
35
- <li>GHDL simulator supports VPI
36
- <ul>
37
- <li>need way to invoke VPI tasks from VHDL, like <code class="code"><span style="color:#d70; font-weight:bold">$ruby_init</span>();</code>
38
-
39
- <p><ins>No need for system tasks/functions. Ruby-VPI uses callbacks now!</ins></p></li>
40
- </ul></li>
41
+ <li>add shortcuts for reading &#38; writing VPI delay values</li>
41
42
  </ul>
42
43
 
43
44
 
44
45
  <ul>
45
- <li>add instructions for using <strong>ruby-debug</strong> with a graphical debugging tool or IDE like RadRails</li>
46
+ <li>add support for GHDL simulator (and thereby VHDL!) because it supports VPI</li>
46
47
  </ul>
47
48
 
48
49
 
49
50
  <ul>
50
- <li>write section about code coverage and prototyping in manual</li>
51
+ <li>add instructions for using <strong>ruby-debug</strong> with a graphical debugging tool or IDE like RadRails</li>
51
52
  </ul>
52
53
 
53
54
 
54
55
  <ul>
55
- <li>clean up the teriminology section&#8230; unnecessary</li>
56
+ <li>write section about code coverage and prototyping in manual</li>
56
57
  </ul>
57
58
 
58
59
 
@@ -69,7 +70,7 @@
69
70
 
70
71
  <div id="Finished_tasks" class="section">
71
72
  <h1 class="title">
72
- <a href="#a-606657678">2</a>
73
+ <a href="#a-607910698">2</a>
73
74
 
74
75
  &nbsp;
75
76
 
@@ -140,6 +141,16 @@
140
141
  <li>add support for VPI callbacks which execute Ruby blocks</li>
141
142
  </ul>
142
143
 
144
+
145
+ <ul>
146
+ <li>write section about code coverage and prototyping in manual</li>
147
+ </ul>
148
+
149
+
150
+ <ul>
151
+ <li>clean up the teriminology section&#8230; unnecessary</li>
152
+ </ul>
153
+
143
154
  </div>
144
155
  </p>
145
156
 
@@ -149,7 +160,7 @@
149
160
 
150
161
  <div id="Obsolete_tasks" class="section">
151
162
  <h1 class="title">
152
- <a href="#a-606663598">3</a>
163
+ <a href="#a-607913238">3</a>
153
164
 
154
165
  &nbsp;
155
166
 
@@ -188,7 +199,7 @@
188
199
  <hr style="display: none"/>
189
200
  <div id="toc">
190
201
  <h1 id="toc:contents">Contents</h1>
191
- <ul><li><span class="hide">1 </span><a id="a-606651978" href="#Pending_tasks">Pending tasks</a></li><li><span class="hide">2 </span><a id="a-606657678" href="#Finished_tasks">Finished tasks</a></li><li><span class="hide">3 </span><a id="a-606663598" href="#Obsolete_tasks">Obsolete tasks</a></li></ul>
202
+ <ul><li><span class="hide">1 </span><a id="a-607907898" href="#Pending_tasks">Pending tasks</a></li><li><span class="hide">2 </span><a id="a-607910698" href="#Finished_tasks">Finished tasks</a></li><li><span class="hide">3 </span><a id="a-607913238" href="#Obsolete_tasks">Obsolete tasks</a></li></ul>
192
203
 
193
204
  </div>
194
205
  </body>
data/doc/readme.doc CHANGED
@@ -7,6 +7,6 @@
7
7
  <div style="float: right">Version <%= version %></div>
8
8
  <h1 style="padding-top: 0">Ruby-VPI</h1>
9
9
 
10
- <a href="http://www.ruby-lang.org"><img src="images/ruby/logo-reflection.png" alt="Logo of the Ruby programming language" style="margin: 0; margin-left: 2em; float: right"/></a>
10
+ <a href="http://www.ruby-lang.org"><img src="images/ruby/logo-reflection.png" alt="Logo of the Ruby programming language" style="margin: 0; margin-left: 2em; margin-bottom: 1em; float: right"/></a>
11
11
 
12
12
  <doc_proxy_include intro.inc>
data/doc/readme.html CHANGED
@@ -8,11 +8,19 @@
8
8
  <title>Ruby-VPI: Ruby interface to Verilog VPI</title>
9
9
  </head>
10
10
  <body>
11
+ <div id="site-links">
12
+ <a href="readme.html">Home</a>
13
+ &middot; <a href="manual.html">Manual</a>
14
+ &middot; <a href="memo.html">Memo</a>
15
+ &middot; <a href="history.html">History</a>
16
+ <hr style="display: none"/>
17
+ </div>
18
+
11
19
 
12
- <div id="body"><div style="float: right">Version 17.0.0</div>
20
+ <div id="body"><div style="float: right">Version 18.0.0</div>
13
21
  <h1 style="padding-top: 0">Ruby-VPI</h1>
14
22
 
15
- <p><a href="http://www.ruby-lang.org"><img src="images/ruby/logo-reflection.png" alt="Logo of the Ruby programming language" style="margin: 0; margin-left: 2em; float: right"/></a></p>
23
+ <p><a href="http://www.ruby-lang.org"><img src="images/ruby/logo-reflection.png" alt="Logo of the Ruby programming language" style="margin: 0; margin-left: 2em; margin-bottom: 1em; float: right"/></a></p>
16
24
 
17
25
 
18
26
  <p>Ruby-VPI is a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through the <a href="http://www.ruby-lang.org">Ruby programming language</a>. It lets you:</p>
@@ -34,7 +42,7 @@
34
42
 
35
43
  <div id="resources" class="section">
36
44
  <h1 class="title">
37
- <a href="#a-607522818">1</a>
45
+ <a href="#a-607398468">1</a>
38
46
 
39
47
  &nbsp;
40
48
 
@@ -44,20 +52,22 @@
44
52
 
45
53
  <div id="Records" class="paragraph">
46
54
  <p class="title">Records</p>
47
- <a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon-28x28.png" alt="RSS feed for release notifications" style="float: right"/></a>
48
-
49
-
55
+ <ul>
56
+ <li><a href="history.html#a18.0.0">What&#8217;s new</a>
57
+ &#8211; release notes for version 18.0.0.
50
58
  <ul>
51
- <li><a href="history.html">What&#8217;s new</a>
52
- &#8211; a history of all release notes.</li>
59
+ <li><a href="history.html">History</a>
60
+ &#8211; a record of all release notes.</li>
61
+ <li><a type="application/rss+xml" href="http://ruby-vpi.rubyforge.org/doc/rss.xml"><img src="images/feed-icon-28x28.png" alt="RSS feed for release announcements" style="float: right"/></a> <a href="http://ruby-vpi.rubyforge.org/doc/rss.xml">RSS feed</a>
62
+ &#8211; keep track of new releases at your leisure.</li>
63
+ </ul>
64
+ </li>
53
65
  <li><a href="memo.html">Plans</a>
54
66
  &#8211; pending tasks for future releases.</li>
55
67
  <li><a href="http://ruby-vpi.rubyforge.org/talks/">Talks</a>
56
68
  &#8211; materials from presentations and seminars.</li>
57
69
  <li><a href="http://ruby-vpi.rubyforge.org/papers/">Papers</a>
58
70
  &#8211; research publications.</li>
59
- <li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a>
60
- &#8211; why does Ruby-VPI exist?</li>
61
71
  </ul>
62
72
  </div>
63
73
 
@@ -65,8 +75,10 @@
65
75
  <div id="Documentation" class="paragraph">
66
76
  <p class="title">Documentation</p>
67
77
  <ul>
68
- <li><a href="manual.html">User manual</a>
69
- &#8211; complete documentation for users. <em>Start here!</em>
78
+ <li><a href="http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2">Motivation</a>
79
+ &#8211; why was Ruby-VPI developed?</li>
80
+ <li><a href="manual.html">User manual</a>
81
+ &#8211; complete documentation for users.
70
82
  <ul>
71
83
  <li><a href="manual.html#usage.tutorial">Tutorial</a>
72
84
  &#8211; learn how to use Ruby-VPI quickly.</li>
@@ -83,7 +95,7 @@
83
95
  <ul>
84
96
  <li><a href="http://rubyforge.org/frs/?group_id=1339">Downloads</a>
85
97
  &#8211; obtain release packages</li>
86
- <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi">Source code</a>
98
+ <li><a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi/">Source code</a>
87
99
  &#8211; browse online or obtain with <a href="http://darcs.net">Darcs</a>.</li>
88
100
  <li><a href="http://rubyforge.org/forum/?group_id=1339">Forums</a>
89
101
  &#8211; discuss things and ask questions.</li>
@@ -93,7 +105,7 @@
93
105
  &#8211; submit patches to source code.</li>
94
106
  <li><a href="http://rubyforge.org/tracker/?group_id=1339">Requests</a>
95
107
  &#8211; request new features or get support.</li>
96
- <li><a href="http://rubyforge.org/projects/ruby-vpi">Project portal</a>
108
+ <li><a href="http://rubyforge.org/projects/ruby-vpi/">Project portal</a>
97
109
  &#8211; hosted generously by <a href="http://rubyforge.org">RubyForge</a>.</li>
98
110
  </ul>
99
111
  </div>
@@ -108,7 +120,7 @@
108
120
 
109
121
  <div id="intro.features" class="section">
110
122
  <h1 class="title">
111
- <a href="#a-607537108">2</a>
123
+ <a href="#a-607410618">2</a>
112
124
 
113
125
  &nbsp;
114
126
 
@@ -121,7 +133,7 @@
121
133
  <ul>
122
134
  <li>Supports the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE 1364</span>-2005 Verilog VPI</a> standard.</li>
123
135
  <li>Works with all <a href="#intro.reqs">major Verilog simulators</a> available today.</li>
124
- <li>Compiled <em>just once</em> during <a href="manual.html#setup.installation">installation</a> and used forever!</li>
136
+ <li>Compiled <em>just once</em> during <a href="manual.html#setup.inst">installation</a> and used forever!</li>
125
137
  </ul>
126
138
  </div>
127
139
 
@@ -142,7 +154,7 @@
142
154
  <li>Eliminates unneccesary work:
143
155
  <ul>
144
156
  <li><a href="manual.html#usage.tutorial.specification">Specifications</a> are readable, portable, and <em>executable</em>.</li>
145
- <li>The <a href="manual.html#usage.tools.generate-test">automated test generator</a> helps you accomodate design changes with <em>minimal</em> effort.</li>
157
+ <li>The <a href="manual.html#usage.tools.generate">automated test generator</a> helps you accomodate design changes with <em>minimal</em> effort.</li>
146
158
  <li>There is absolutely <em>no compiling</em>!</li>
147
159
  </ul></li>
148
160
  </ul>
@@ -179,7 +191,7 @@
179
191
 
180
192
  <div id="intro.reqs" class="section">
181
193
  <h1 class="title">
182
- <a href="#a-607549738">3</a>
194
+ <a href="#a-607422318">3</a>
183
195
 
184
196
  &nbsp;
185
197
 
@@ -200,12 +212,12 @@
200
212
  &#8211; any version that supports the <tt>-load</tt> option is acceptable.</li>
201
213
  <li><a href="http://www.model.com">Mentor Modelsim</a>
202
214
  &#8211; any version that supports the <tt>-pli</tt> option is acceptable.</li>
203
- <li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim / NC-Verilog</a>
204
- &#8211; any version that supports the <tt>+loadvpi</tt> option is acceptable.</li>
215
+ <li><a href="http://www.cadence.com/products/functional_ver/nc-verilog/">Cadence NC-Sim</a>
216
+ &#8211; any version that supports the <tt>+loadvpi</tt> option is <em>mostly</em> acceptable because you <strong>will not</strong> be able to <a href="manual.html#problem.ncsim.vpiForceFlag">force values onto wires</a>.</li>
205
217
  <li><a href="http://www.pragmatic-c.com/gpl-cver/">GPL Cver</a>
206
218
  &#8211; version 2.11a or newer is acceptable.</li>
207
- <li><a href="http://www.icarus.com/eda/Verilog/">Icarus Verilog</a>
208
- &#8211; version 0.8 is <em>mostly</em> acceptable&#8212;you <strong>will not</strong> be able to <a href="manual.html#background.org.vpi.util">access child handles through method calls</a>. The reason for this limitation is explained <a href="manual.html#problems.ivl.vpi_handle_by_name.absolute-paths">in the user manual</a>.</li>
219
+ <li><a href="http://www.geda.seul.org/tools/icarus/index.html">Icarus Verilog</a>
220
+ &#8211; version 0.8 is <em>mostly</em> acceptable because you <strong>will not</strong> be able to <a href="manual.html#Accessing_a_handle_s_relatives">access child handles through method calls</a>. The reason for this limitation is explained <a href="manual.html#problems.ivl.vpi_handle_by_name.absolute-paths">in the user manual</a>.</li>
209
221
  </ul>
210
222
  </div>
211
223
 
@@ -217,8 +229,10 @@
217
229
  &#8211; any flavor should be acceptable.</li>
218
230
  <li>C compiler
219
231
  &#8211; the <a href="http://www.gnu.org/software/gcc/" title="GCC">GNU Compiler Collection</a> is preferred, but any C compiler should be acceptable.</li>
220
- <li><a href="http://www.ruby-lang.org">Ruby</a>
221
- &#8211; version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following <a href="http://www.rubygarden.org/faq/section/show/3">these instructions</a>.</li>
232
+ <li><a href="http://www.swig.org/download.html">SWIG</a>
233
+ &#8211; version 1.3.29 or newer is necessary.</li>
234
+ <li><a href="http://www.ruby-lang.org/en/downloads/">Ruby</a>
235
+ &#8211; version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following <a href="http://www.ruby-lang.org/en/downloads/">these instructions</a>.</li>
222
236
  </ul>
223
237
  </div>
224
238
 
@@ -243,7 +257,7 @@
243
257
 
244
258
  <div id="intro.applications" class="section">
245
259
  <h1 class="title">
246
- <a href="#a-607552458">4</a>
260
+ <a href="#a-607424848">4</a>
247
261
 
248
262
  &nbsp;
249
263
 
@@ -289,7 +303,7 @@
289
303
 
290
304
  <div id="intro.appetizers" class="section">
291
305
  <h1 class="title">
292
- <a href="#a-607555198">5</a>
306
+ <a href="#a-607427418">5</a>
293
307
 
294
308
  &nbsp;
295
309
 
@@ -357,14 +371,15 @@
357
371
 
358
372
  <div id="intro.license" class="section">
359
373
  <h1 class="title">
360
- <a href="#a-607558088">6</a>
374
+ <a href="#a-607430248">6</a>
361
375
 
362
376
  &nbsp;
363
377
 
364
378
  License
365
379
  </h1>
366
380
 
367
- <p>Copyright 2006 Suraj N. Kurapati &lt;snk@gna.org&gt;</p>
381
+ <p>Copyright 2006 Suraj N. Kurapati &lt;SNK at GNA dot ORG&gt;<br/>
382
+ Copyright 1999 Kazuhiro HIWADA &lt;HIWADA at KUEE dot KYOTO-U dot AC dot JP&gt;<br/></p>
368
383
 
369
384
 
370
385
  <p>Permission is hereby granted, free of charge, to any person obtaining a copy of
@@ -375,13 +390,14 @@ the Software, and to permit persons to whom the Software is furnished to do so,
375
390
  subject to the following conditions:</p>
376
391
 
377
392
 
378
- <p>1. All modified and unmodified copies and substantial portions of the Software
379
- (the &quot;Derivatives&quot;) and their corresponding machine-readable source code (the
380
- &quot;Code&quot;) must include the above copyright notice and this permission notice.</p>
393
+ <p>1. All copies and substantial portions of the Software, whether modified or
394
+ unmodified, (the &quot;Derivatives&quot;) and their corresponding machine-readable
395
+ source code (the &quot;Code&quot;) must include the above copyright notice and this
396
+ permission notice.</p>
381
397
 
382
398
 
383
- <p>2. Upon distribution, the Derivatives must be accompanied either by the Code or,
384
- if the Code is obtainable for no more than the cost of distribution plus a
399
+ <p>2. The Derivatives, upon distribution, must be accompanied by the Code or, if
400
+ the Code is obtainable for no more than the cost of distribution plus a
385
401
  nominal fee, by information on how to obtain the Code.</p>
386
402
 
387
403
 
@@ -401,7 +417,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
401
417
 
402
418
  <div id="intro.related-works" class="section">
403
419
  <h1 class="title">
404
- <a href="#a-607563868">7</a>
420
+ <a href="#a-607435548">7</a>
405
421
 
406
422
  &nbsp;
407
423
 
@@ -422,7 +438,7 @@ IMPLIED, INCLUDING <span class="caps">BUT NOT LIMITED TO THE WARRANTIES OF MERCH
422
438
 
423
439
  <div id="intro.related-works.pli" class="section">
424
440
  <h2 class="title">
425
- <a href="#a-607560688">7.1</a>
441
+ <a href="#a-607432668">7.1</a>
426
442
 
427
443
  &nbsp;
428
444
 
data/doc/rss.xml CHANGED
@@ -4,6 +4,102 @@
4
4
  <title>Ruby-VPI</title>
5
5
  <link>http://ruby-vpi.rubyforge.org</link>
6
6
  <description>Ruby-VPI is a Ruby interface to IEEE 1364-2005 Verilog VPI and a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through Ruby. It lets you create complex Verilog test benches easily and wholly in Ruby.</description>
7
+ <item>
8
+ <title>Version 18.0.0 released</title>
9
+ <link>http://ruby-vpi.rubyforge.org/doc/history.html#a18.0.0</link>
10
+ <guid>http://ruby-vpi.rubyforge.org/doc/history.html#a18.0.0</guid>
11
+ <description>&lt;h1 id=&quot;18.0.0&quot;&gt;Version 18.0.0 (2007-07-31)&lt;/h1&gt;
12
+
13
+ &lt;p&gt;This release restores support for Synopsys VCS and Cadence NC-Sim, improves portability and performance, and enhances the VPI abstraction layer.&lt;/p&gt;
14
+
15
+
16
+ &lt;h2&gt;Thanks&lt;/h2&gt;
17
+
18
+
19
+ &lt;ul&gt;
20
+ &lt;li&gt;Calvin Wong discovered &lt;a href=&quot;http://rubyforge.org/forum/message.php?msg_id=25691&quot;&gt;how to bypass the following error&lt;/a&gt; emitted by Synopsys VCS when loading the Ruby-VPI shared object file.
21
+
22
+ &lt;pre&gt;
23
+ Could not open library specified in -load option obj/vcs
24
+ obj/vcs: undefined symbol: vpi_put_data
25
+ &lt;/pre&gt;&lt;/li&gt;
26
+ &lt;/ul&gt;
27
+
28
+
29
+ &lt;h2&gt;Caution&lt;/h2&gt;
30
+
31
+
32
+ &lt;ul&gt;
33
+ &lt;li&gt;&lt;a href=&quot;http://www.swig.org/&quot;&gt;SWIG&lt;/a&gt; is now required in order to compile and install Ruby-VPI.&lt;/li&gt;
34
+ &lt;/ul&gt;
35
+
36
+
37
+ &lt;ul&gt;
38
+ &lt;li&gt;&lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.put_value&lt;/code&gt; no longer checks whether the value written matches the value read back after writing because that only works when there is no VPI delay associated with the write.&lt;/li&gt;
39
+ &lt;/ul&gt;
40
+
41
+
42
+ &lt;ul&gt;
43
+ &lt;li&gt;When &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.put_value&lt;/code&gt; is used to write a value to a wire (VpiNet), it now &lt;em&gt;forces&lt;/em&gt; the value. This is done to ensure portability:
44
+
45
+ &lt;p&gt;Synopsys VCS and Cadence NC-Sim forget the value written to a wire during the next simulation time step, whereas Mentor Modelsim and GPL Cver remember the value (thereby treating wires as registers).&lt;/p&gt;
46
+
47
+
48
+ &lt;p&gt;Note that you have to release a forced value (using &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.release_value&lt;/code&gt;) on a wire after writing to the wire if you want the design under test have the ability to update the value of the wire later on:&lt;/p&gt;
49
+
50
+
51
+ &lt;pre class=&quot;code&quot;&gt;
52
+ your_wire.intVal = &lt;span style=&quot;color:#00D; font-weight:bold&quot;&gt;15&lt;/span&gt;
53
+ your_wire.release_value
54
+ advance_time &lt;span style=&quot;color:#888&quot;&gt;# let the Verilog DUT modify your_wire&lt;/span&gt;
55
+ &lt;/pre&gt;
56
+
57
+
58
+ &lt;p&gt;In addition, you can check if a wire has a forced value using the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.value_forced?&lt;/code&gt; method.&lt;/p&gt;&lt;/li&gt;
59
+ &lt;/ul&gt;
60
+
61
+
62
+ &lt;ul&gt;
63
+ &lt;li&gt;If the format is not specified, &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.get_value&lt;/code&gt; now assumes that you want to read the value in VpiIntVal format (because this is the most common case).&lt;/li&gt;
64
+ &lt;/ul&gt;
65
+
66
+
67
+ &lt;ul&gt;
68
+ &lt;li&gt;The definition of &amp;#8220;Derivatives&amp;#8221; has been reworded for clarity in the &lt;a href=&quot;readme.html#intro.license&quot;&gt;project license&lt;/a&gt;.&lt;/li&gt;
69
+ &lt;/ul&gt;
70
+
71
+
72
+ &lt;h2&gt;Repairs&lt;/h2&gt;
73
+
74
+
75
+ &lt;ul&gt;
76
+ &lt;li&gt;Synopsys VCS and Cadence NC-Sim simulators now correctly load Ruby-VPI. Also, the 64-bit versions of these simulators are now supported.&lt;/li&gt;
77
+ &lt;/ul&gt;
78
+
79
+
80
+ &lt;h2&gt;Improvements&lt;/h2&gt;
81
+
82
+
83
+ &lt;ul&gt;
84
+ &lt;li&gt;Added &amp;#8220;force_value&amp;#8221;, &amp;#8220;release_value&amp;#8221;, and &amp;#8220;value_forced?&amp;#8221; methods to the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;&lt;/code&gt; class.&lt;/li&gt;
85
+ &lt;/ul&gt;
86
+
87
+
88
+ &lt;ul&gt;
89
+ &lt;li&gt;&lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.put_value&lt;/code&gt; now tries to automatically detect the format of the value to be written. As a result, you can now write &lt;code class=&quot;code&quot;&gt;your_handle.put_value &lt;span style=&quot;color:#00D; font-weight:bold&quot;&gt;35&lt;/span&gt;&lt;/code&gt; in lieu of writing &lt;code class=&quot;code&quot;&gt;your_handle.intVal = &lt;span style=&quot;color:#00D; font-weight:bold&quot;&gt;35&lt;/span&gt;&lt;/code&gt;.&lt;/li&gt;
90
+ &lt;/ul&gt;
91
+
92
+
93
+ &lt;ul&gt;
94
+ &lt;li&gt;&lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.inspect&lt;/code&gt; now shows the hexStrVal of the handle (because it is a common case to want to see a handle&amp;#8217;s logic value along with its other information).&lt;/li&gt;
95
+ &lt;/ul&gt;
96
+
97
+
98
+ &lt;ul&gt;
99
+ &lt;li&gt;Added method caching (memoizing) for VPI property accesses on handles.&lt;/li&gt;
100
+ &lt;/ul&gt;</description>
101
+ <pubDate>Tue, 31 Jul 2007 00:00:00 PDT</pubDate>
102
+ </item>
7
103
  <item>
8
104
  <title>Version 17.0.0 released</title>
9
105
  <link>http://ruby-vpi.rubyforge.org/doc/history.html#a17.0.0</link>
@@ -165,75 +261,5 @@
165
261
  &lt;/ul&gt;</description>
166
262
  <pubDate>Sun, 27 May 2007 00:00:00 PDT</pubDate>
167
263
  </item>
168
- <item>
169
- <title>Version 16.0.0 released</title>
170
- <link>http://ruby-vpi.rubyforge.org/doc/history.html#a16.0.0</link>
171
- <guid>http://ruby-vpi.rubyforge.org/doc/history.html#a16.0.0</guid>
172
- <description>&lt;h1 id=&quot;16.0.0&quot;&gt;Version 16.0.0 (2007-05-02)&lt;/h1&gt;
173
-
174
- &lt;p&gt;This release adds support for the &lt;a href=&quot;http://www.cadence.com/products/functional_ver/nc-verilog/&quot;&gt;Cadence NC-Sim / NC-Verilog&lt;/a&gt; simulator, improves the project website and documentation, simplifies interaction with VPI, and comes with a more permissive license.&lt;/p&gt;
175
-
176
-
177
- &lt;h2&gt;Caution&lt;/h2&gt;
178
-
179
-
180
- &lt;ul&gt;
181
- &lt;li&gt;The &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Integer&lt;/span&gt;.ensure_min&lt;/code&gt; and &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Integer&lt;/span&gt;.ensure_max&lt;/code&gt; methods have been removed from the &lt;tt&gt;ruby-vpi/integer.rb&lt;/tt&gt; library because Ruby already has idioms for these operations: &lt;pre&gt;
182
- &amp;gt;&amp;gt; 5.ensure_min 10
183
- =&amp;gt; 10
184
- &amp;gt;&amp;gt; [5, 10].max
185
- =&amp;gt; 10
186
-
187
- &amp;gt;&amp;gt; 5.ensure_max 10
188
- =&amp;gt; 5
189
- &amp;gt;&amp;gt; [5, 10].min
190
- =&amp;gt; 5
191
- &lt;/pre&gt;&lt;/li&gt;
192
- &lt;/ul&gt;
193
-
194
-
195
- &lt;ul&gt;
196
- &lt;li&gt;Ruby-VPI is now developed under a &lt;a href=&quot;readme.html#intro.license&quot;&gt;more permissive license&lt;/a&gt; that better reflects my ethical beliefs than &lt;a href=&quot;http://www.gnu.org/copyleft/gpl.html&quot;&gt;the previous license&lt;/a&gt;.&lt;/li&gt;
197
- &lt;/ul&gt;
198
-
199
-
200
- &lt;h2&gt;New features&lt;/h2&gt;
201
-
202
-
203
- &lt;ul&gt;
204
- &lt;li&gt;The &lt;a href=&quot;http://www.cadence.com/products/functional_ver/nc-verilog/&quot;&gt;Cadence NC-Sim / NC-Verilog&lt;/a&gt; (ncsim) simulator is now supported.&lt;/li&gt;
205
- &lt;/ul&gt;
206
-
207
-
208
- &lt;ul&gt;
209
- &lt;li&gt;VPI structures (whose names begin with &amp;#8220;S_&amp;#8221;) now allow initialization of their members through their constructor, in the style of Ruby on Rails. For example, the expression &lt;code class=&quot;code&quot;&gt;time = &lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;S_vpi_time&lt;/span&gt;.new &lt;span style=&quot;color:#A60&quot;&gt;:type&lt;/span&gt; =&amp;gt; &lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;VpiSuppressTime&lt;/span&gt;&lt;/code&gt; is equivalent to: &lt;pre class=&quot;code&quot;&gt;
210
- time = &lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;S_vpi_time&lt;/span&gt;.new
211
- time.type = &lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;VpiSuppressTime&lt;/span&gt;
212
- &lt;/pre&gt;&lt;/li&gt;
213
- &lt;/ul&gt;
214
-
215
-
216
- &lt;ul&gt;
217
- &lt;li&gt;Added the &lt;code class=&quot;code&quot;&gt;&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Vpi&lt;/span&gt;::&lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Handle&lt;/span&gt;.cbValueChange&lt;/code&gt; method which simplifies the registration of a value-change callback for a particular VPI handle. For instance, the user manual&amp;#8217;s &lt;a href=&quot;manual.html#ex..callback&quot;&gt;example of setting up a value-change callback&lt;/a&gt; can now be written as follows: &lt;pre class=&quot;code&quot;&gt;
218
- &lt;span style=&quot;color:#036; font-weight:bold&quot;&gt;Counter&lt;/span&gt;.count.cbValueChange &lt;span style=&quot;color:#080; font-weight:bold&quot;&gt;do&lt;/span&gt; |s_cb_data|
219
- puts &lt;span style=&quot;background-color:#fff0f0&quot;&gt;&lt;span style=&quot;color:#710&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#D20&quot;&gt;hello from callback! time=&lt;/span&gt;&lt;span style=&quot;background: #eee&quot;&gt;&lt;span style=&quot;font-weight: bold; color: #888&quot;&gt;#{&lt;/span&gt;s_cb_data.time.to_i&lt;span style=&quot;font-weight: bold; color: #888&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color:#D20&quot;&gt; count=&lt;/span&gt;&lt;span style=&quot;background: #eee&quot;&gt;&lt;span style=&quot;font-weight: bold; color: #888&quot;&gt;#{&lt;/span&gt;s_cb_data.obj.intVal&lt;span style=&quot;font-weight: bold; color: #888&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color:#710&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;
220
- &lt;span style=&quot;color:#080; font-weight:bold&quot;&gt;end&lt;/span&gt;
221
- &lt;/pre&gt;&lt;/li&gt;
222
- &lt;/ul&gt;
223
-
224
-
225
- &lt;h2&gt;Details&lt;/h2&gt;
226
-
227
-
228
- &lt;ul&gt;
229
- &lt;li&gt;Revised the project website according to the &lt;a href=&quot;http://producingoss.com&quot;&gt;Producing OSS&lt;/a&gt; guidelines.&lt;/li&gt;
230
- &lt;/ul&gt;
231
-
232
-
233
- &lt;ul&gt;
234
- &lt;li&gt;Added instructions for checking out source code and generating documentation.&lt;/li&gt;
235
- &lt;/ul&gt;</description>
236
- <pubDate>Wed, 02 May 2007 00:00:00 PDT</pubDate>
237
- </item>
238
264
  </channel>
239
265
  </rss>
data/ext/Rakefile CHANGED
@@ -1,8 +1,9 @@
1
1
  # Build file for the native C extension.
2
2
  #
3
3
  # = Environment variables
4
- # CFLAGS:: Arguments to the compiler.
5
- # LDFLAGS:: Arguments to the linker.
4
+ # CFLAGS:: Arguments to the compiler.
5
+ # LDFLAGS:: Arguments to the linker.
6
+ # SIMULATOR:: ID of the simulator.
6
7
  #--
7
8
  # Copyright 2006 Suraj N. Kurapati
8
9
  # See the file named LICENSE for details.
@@ -23,29 +24,41 @@ file 'Makefile' => [:swig, 'extconf.rb'] do |t|
23
24
  ruby t.prerequisites[1], "--with-cflags=#{ENV['CFLAGS']}", "--with-ldflags=#{ENV['LDFLAGS']}"
24
25
  end
25
26
 
26
- CLEAN.include 'Makefile', 'mkmf.log', '*.o', '*.' + Config::CONFIG['DLEXT']
27
+ CLEAN.include 'Makefile', 'mkmf.log', '*.o', "*.#{Config::CONFIG['DLEXT']}"
27
28
 
28
29
 
29
30
  desc 'Generate Ruby wrapper for VPI.'
30
31
  task :swig => 'swig_wrap.cin'
31
32
 
32
33
  file 'swig_wrap.cin' => 'swig_vpi.i' do |t|
33
- sh %w{swig -ruby -o}, t.name, t.prerequisites[0]
34
+ sh %w[swig -Werror -w801 -ruby -o], t.name, t.prerequisites[0]
34
35
  end
35
36
 
36
37
  file 'swig_vpi.i' => 'swig_vpi.h'
37
38
 
38
- # avoid compilation errors due to va_list, which is used
39
- # in the SWIG-generated wrapper for VPI vprintf functions
39
+ # create a custom version of the standard vpi_user.h file to
40
+ # accomodate quirks in C compilers and Verilog simulators
40
41
  file 'swig_vpi.h' => 'vpi_user.h' do |t|
41
42
  src, dst = t.prerequisites[0], t.name
42
43
 
43
44
  File.open(dst, 'w') do |f|
44
- f << File.read(src).gsub(/\bva_list\b/, 'void*')
45
+ input = File.read(src)
46
+
47
+ # this is only relevant for the C language VPI interface
48
+ input.gsub! %r{^.*vlog_startup_routines.*$}, ''
49
+
50
+ # avoid compilation errors due to va_list, which is used
51
+ # in the SWIG-generated wrapper for VPI vprintf functions
52
+ input.gsub! %r{\bva_list\b}, 'void*'
53
+
54
+ # VCS does not load the Ruby-VPI shared object file if it contains
55
+ # references to the vpi_put_data and vpi_get_data symbols
56
+ if ENV['SIMULATOR'] == 'vcs'
57
+ input.gsub! %r{^.*vpi_(get|put)_data[^;]+;}, ''
58
+ end
59
+
60
+ f << input
45
61
  end
46
62
  end
47
63
 
48
- # NOTE: since SWIG is not a requirement for users,
49
- # we should not clobber these generated files
50
- #
51
- #CLOBBER.include 'swig_wrap.cin', 'swig_vpi.h'
64
+ CLEAN.include 'swig_wrap.cin', 'swig_vpi.h'
data/ext/swig_vpi.h CHANGED
@@ -894,7 +894,7 @@ XXTERN vpiHandle vpi_handle_by_multi_index PROTO_PARAMS((vpiHandle obj,
894
894
 
895
895
  /****************************** GLOBAL VARIABLES ******************************/
896
896
 
897
- PLI_VEXTERN PLI_DLLESPEC void (*vlog_startup_routines[])();
897
+
898
898
 
899
899
  /* array of function pointers, last pointer should be null */
900
900