ruby-vpi 7.1.0 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. data/HEADER +101 -0
  2. data/HISTORY +57 -37
  3. data/README +1 -1
  4. data/Rakefile +21 -13
  5. data/doc/src/manual.xml +5 -5
  6. data/doc/txt/manual.txt +10 -6
  7. data/doc/xhtml/background.organization.html +1 -1
  8. data/doc/xhtml/index.html +2 -2
  9. data/doc/xhtml/usage.tutorial.html +4 -4
  10. data/header.html +114 -0
  11. data/header.part.html +114 -0
  12. data/history.html +217 -68
  13. data/history.part.html +880 -0
  14. data/lib/ruby-vpi/rcov.rb +62 -0
  15. data/lib/ruby-vpi/rspec.rb +1 -1
  16. data/lib/ruby-vpi/xx.rb +761 -0
  17. data/lib/ruby-vpi.rb +13 -2
  18. data/memo.html +116 -1
  19. data/memo.part.html +86 -0
  20. data/readme.html +116 -1
  21. data/readme.part.html +21 -0
  22. data/ref/c/annotated.html +1 -1
  23. data/ref/c/common_8h.html +1 -1
  24. data/ref/c/files.html +1 -1
  25. data/ref/c/functions.html +1 -1
  26. data/ref/c/functions_vars.html +1 -1
  27. data/ref/c/globals.html +1 -1
  28. data/ref/c/globals_0x63.html +1 -1
  29. data/ref/c/globals_0x65.html +1 -1
  30. data/ref/c/globals_0x66.html +1 -1
  31. data/ref/c/globals_0x70.html +1 -1
  32. data/ref/c/globals_0x72.html +1 -1
  33. data/ref/c/globals_0x73.html +1 -1
  34. data/ref/c/globals_0x74.html +1 -1
  35. data/ref/c/globals_0x76.html +1 -1
  36. data/ref/c/globals_0x78.html +1 -1
  37. data/ref/c/globals_defs.html +1 -1
  38. data/ref/c/globals_defs_0x65.html +1 -1
  39. data/ref/c/globals_defs_0x70.html +1 -1
  40. data/ref/c/globals_defs_0x76.html +1 -1
  41. data/ref/c/globals_defs_0x78.html +1 -1
  42. data/ref/c/globals_enum.html +1 -1
  43. data/ref/c/globals_eval.html +1 -1
  44. data/ref/c/globals_func.html +1 -1
  45. data/ref/c/globals_type.html +1 -1
  46. data/ref/c/globals_vars.html +1 -1
  47. data/ref/c/hierarchy.html +1 -1
  48. data/ref/c/index.html +1 -1
  49. data/ref/c/relay_8cin.html +1 -1
  50. data/ref/c/relay_8hin.html +1 -1
  51. data/ref/c/ruby-vpi_8c.html +1 -1
  52. data/ref/c/structrelay____RubyOptions____def.html +1 -1
  53. data/ref/c/structt__cb__data.html +1 -1
  54. data/ref/c/structt__vpi__delay.html +1 -1
  55. data/ref/c/structt__vpi__error__info.html +1 -1
  56. data/ref/c/structt__vpi__strengthval.html +1 -1
  57. data/ref/c/structt__vpi__systf__data.html +1 -1
  58. data/ref/c/structt__vpi__time.html +1 -1
  59. data/ref/c/structt__vpi__value.html +1 -1
  60. data/ref/c/structt__vpi__vecval.html +1 -1
  61. data/ref/c/structt__vpi__vlog__info.html +1 -1
  62. data/ref/c/swig_8cin.html +1 -1
  63. data/ref/c/swig_8hin.html +1 -1
  64. data/ref/c/verilog_8h.html +1 -1
  65. data/ref/c/vlog_8cin.html +1 -1
  66. data/ref/c/vlog_8hin.html +1 -1
  67. data/ref/c/vpi__user_8h.html +1 -1
  68. data/ref/ruby/classes/ERB.html +5 -5
  69. data/ref/ruby/classes/ERB.src/{M000035.html → M000011.html} +0 -0
  70. data/ref/ruby/classes/FileUtils.html +10 -10
  71. data/ref/ruby/classes/FileUtils.src/{M000048.html → M000065.html} +0 -0
  72. data/ref/ruby/classes/FileUtils.src/{M000049.html → M000066.html} +0 -0
  73. data/ref/ruby/classes/ModuleInfo.html +10 -10
  74. data/ref/ruby/classes/ModuleInfo.src/{M000019.html → M000008.html} +0 -0
  75. data/ref/ruby/classes/ModuleInfo.src/{M000020.html → M000009.html} +0 -0
  76. data/ref/ruby/classes/OutputInfo.html +5 -5
  77. data/ref/ruby/classes/OutputInfo.src/{M000018.html → M000007.html} +0 -0
  78. data/ref/ruby/classes/RDoc.html +5 -5
  79. data/ref/ruby/classes/RDoc.src/{M000051.html → M000069.html} +0 -0
  80. data/ref/ruby/classes/RubyVPI.html +45 -5
  81. data/ref/ruby/classes/RubyVPI.src/M000067.html +50 -0
  82. data/ref/ruby/classes/RubyVPI.src/M000068.html +20 -0
  83. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +35 -35
  84. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000042.html → M000059.html} +0 -0
  85. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000043.html → M000060.html} +0 -0
  86. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000044.html → M000061.html} +0 -0
  87. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000045.html → M000062.html} +1 -1
  88. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000046.html → M000063.html} +0 -0
  89. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000047.html → M000064.html} +1 -1
  90. data/ref/ruby/classes/String.html +5 -5
  91. data/ref/ruby/classes/String.src/{M000034.html → M000012.html} +0 -0
  92. data/ref/ruby/classes/{ResettedCounterValue.html → Table.html} +41 -24
  93. data/ref/ruby/classes/Table.src/M000003.html +38 -0
  94. data/ref/ruby/classes/Table.src/M000004.html +18 -0
  95. data/ref/ruby/classes/Table.src/M000005.html +18 -0
  96. data/ref/ruby/classes/{InputGenerator.src/M000029.html → Table.src/M000006.html} +5 -5
  97. data/ref/ruby/classes/Template.html +5 -5
  98. data/ref/ruby/classes/Template.src/{M000027.html → M000010.html} +0 -0
  99. data/ref/ruby/classes/XX/Document.html +295 -0
  100. data/ref/ruby/classes/XX/Document.src/M000050.html +22 -0
  101. data/ref/ruby/classes/XX/Document.src/M000051.html +20 -0
  102. data/ref/ruby/classes/XX/Document.src/M000052.html +20 -0
  103. data/ref/ruby/classes/XX/Document.src/M000053.html +20 -0
  104. data/ref/ruby/classes/XX/Document.src/M000054.html +22 -0
  105. data/ref/ruby/classes/XX/Document.src/M000055.html +21 -0
  106. data/ref/ruby/classes/XX/Document.src/M000056.html +21 -0
  107. data/ref/ruby/classes/XX/Document.src/M000057.html +34 -0
  108. data/ref/ruby/classes/XX/Document.src/M000058.html +98 -0
  109. data/ref/ruby/{files/bin/generate_test_tpl/spec_rb.html → classes/XX/HTML4/Strict.html} +26 -28
  110. data/ref/ruby/classes/XX/HTML4/Strict.src/M000016.html +20 -0
  111. data/ref/ruby/classes/{CounterProto.html → XX/HTML4/Transitional.html} +19 -45
  112. data/ref/ruby/classes/XX/HTML4/Transitional.src/M000015.html +20 -0
  113. data/ref/ruby/classes/{MaximumCounterValue.html → XX/HTML4.html} +20 -34
  114. data/ref/ruby/classes/XX/HTML4.src/M000014.html +20 -0
  115. data/ref/ruby/classes/XX/Markup/ClassMethods.html +236 -0
  116. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000022.html +22 -0
  117. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000023.html +20 -0
  118. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000024.html +25 -0
  119. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000025.html +20 -0
  120. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000026.html +27 -0
  121. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000027.html +20 -0
  122. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000028.html +27 -0
  123. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000029.html +22 -0
  124. data/ref/ruby/{files/bin/generate_test_tpl/proto_rb.html → classes/XX/Markup/Error.html} +25 -21
  125. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +474 -0
  126. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000030.html +56 -0
  127. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000031.html +33 -0
  128. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000032.html +31 -0
  129. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000033.html +48 -0
  130. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000034.html +20 -0
  131. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000035.html +31 -0
  132. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000036.html +32 -0
  133. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000037.html +32 -0
  134. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000038.html +28 -0
  135. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000039.html +23 -0
  136. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000040.html +26 -0
  137. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000041.html +20 -0
  138. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000042.html +20 -0
  139. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000043.html +20 -0
  140. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000044.html +20 -0
  141. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000045.html +20 -0
  142. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000046.html +21 -0
  143. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000047.html +20 -0
  144. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000048.html +20 -0
  145. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000049.html +20 -0
  146. data/ref/ruby/classes/{TestHw5UnitModel.html → XX/Markup.html} +29 -49
  147. data/ref/ruby/classes/XX/Markup.src/M000021.html +28 -0
  148. data/ref/ruby/{files/samp/counter/counter_rspecTest_spec_rb.html → classes/XX/XHTML/Strict.html} +46 -50
  149. data/ref/ruby/classes/XX/XHTML/Strict.src/M000020.html +20 -0
  150. data/ref/ruby/classes/XX/XHTML/Transitional.html +138 -0
  151. data/ref/ruby/classes/XX/XHTML/Transitional.src/M000019.html +20 -0
  152. data/ref/ruby/classes/XX/XHTML.html +145 -0
  153. data/ref/ruby/classes/XX/XHTML.src/M000018.html +36 -0
  154. data/ref/ruby/classes/XX/XML.html +138 -0
  155. data/ref/ruby/classes/XX/XML.src/M000013.html +20 -0
  156. data/ref/ruby/classes/XX/XMLish.html +138 -0
  157. data/ref/ruby/classes/XX/XMLish.src/M000017.html +18 -0
  158. data/ref/ruby/{files/samp/counter/counter_unitTest_spec_rb.html → classes/XX.html} +39 -36
  159. data/ref/ruby/created.rid +1 -1
  160. data/ref/ruby/files/bin/generate_test_rb.html +6 -6
  161. data/ref/ruby/files/bin/generate_test_rb.src/{M000002.html → M000001.html} +0 -0
  162. data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
  163. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  164. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  165. data/ref/ruby/files/{samp/pipelined_alu/hw5_unit_bench_rb.html → lib/ruby-vpi/rcov_rb.html} +8 -5
  166. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  167. data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +1 -1
  168. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  169. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +6 -6
  170. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/{M000001.html → M000002.html} +0 -0
  171. data/ref/ruby/files/lib/ruby-vpi/vpi_util_rb.html +1 -1
  172. data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +148 -0
  173. data/ref/ruby/files/lib/ruby-vpi_rb.html +2 -1
  174. data/ref/ruby/fr_class_index.html +15 -10
  175. data/ref/ruby/fr_file_index.html +2 -20
  176. data/ref/ruby/fr_method_index.html +69 -51
  177. data/ref/ruby/index.html +1 -1
  178. data/style.css +47 -0
  179. metadata +133 -109
  180. data/ref/ruby/classes/Counter.html +0 -258
  181. data/ref/ruby/classes/Counter.src/M000038.html +0 -20
  182. data/ref/ruby/classes/Counter.src/M000039.html +0 -22
  183. data/ref/ruby/classes/Counter.src/M000040.html +0 -20
  184. data/ref/ruby/classes/Counter.src/M000041.html +0 -22
  185. data/ref/ruby/classes/CounterProto.src/M000005.html +0 -22
  186. data/ref/ruby/classes/CounterProto.src/M000006.html +0 -22
  187. data/ref/ruby/classes/Hw5UnitModel/Operation.html +0 -216
  188. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000012.html +0 -25
  189. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000013.html +0 -33
  190. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000014.html +0 -18
  191. data/ref/ruby/classes/Hw5UnitModel.html +0 -256
  192. data/ref/ruby/classes/Hw5UnitModel.src/M000007.html +0 -24
  193. data/ref/ruby/classes/Hw5UnitModel.src/M000009.html +0 -20
  194. data/ref/ruby/classes/Hw5UnitModel.src/M000010.html +0 -38
  195. data/ref/ruby/classes/Hw5UnitModel.src/M000011.html +0 -22
  196. data/ref/ruby/classes/Hw5_unit.html +0 -196
  197. data/ref/ruby/classes/Hw5_unit.src/M000004.html +0 -27
  198. data/ref/ruby/classes/Hw5_unit_spec.html +0 -237
  199. data/ref/ruby/classes/Hw5_unit_spec.src/M000024.html +0 -21
  200. data/ref/ruby/classes/Hw5_unit_spec.src/M000025.html +0 -21
  201. data/ref/ruby/classes/Hw5_unit_spec.src/M000026.html +0 -67
  202. data/ref/ruby/classes/InputGenerator.html +0 -260
  203. data/ref/ruby/classes/InputGenerator.src/M000028.html +0 -18
  204. data/ref/ruby/classes/InputGenerator.src/M000030.html +0 -19
  205. data/ref/ruby/classes/InputGenerator.src/M000031.html +0 -38
  206. data/ref/ruby/classes/InputGenerator.src/M000032.html +0 -19
  207. data/ref/ruby/classes/InputGenerator.src/M000033.html +0 -19
  208. data/ref/ruby/classes/MaximumCounterValue.src/M000036.html +0 -23
  209. data/ref/ruby/classes/MaximumCounterValue.src/M000037.html +0 -21
  210. data/ref/ruby/classes/ResettedCounterValue.src/M000015.html +0 -19
  211. data/ref/ruby/classes/ResettedCounterValue.src/M000016.html +0 -18
  212. data/ref/ruby/classes/ResettedCounterValue.src/M000017.html +0 -23
  213. data/ref/ruby/classes/RubyVPI.src/M000050.html +0 -39
  214. data/ref/ruby/classes/TestHw5UnitModel.src/M000021.html +0 -19
  215. data/ref/ruby/classes/TestHw5UnitModel.src/M000022.html +0 -19
  216. data/ref/ruby/classes/TestHw5UnitModel.src/M000023.html +0 -64
  217. data/ref/ruby/files/bin/generate_test_tpl/bench_rb.html +0 -115
  218. data/ref/ruby/files/bin/generate_test_tpl/design_rb.html +0 -107
  219. data/ref/ruby/files/bin/generate_test_tpl/spec_rb.src/M000003.html +0 -22
  220. data/ref/ruby/files/ext/extconf_rb.html +0 -108
  221. data/ref/ruby/files/gem_extconf_rb.html +0 -114
  222. data/ref/ruby/files/samp/counter/counter_rspecTest_bench_rb.html +0 -115
  223. data/ref/ruby/files/samp/counter/counter_rspecTest_design_rb.html +0 -107
  224. data/ref/ruby/files/samp/counter/counter_rspecTest_proto_rb.html +0 -107
  225. data/ref/ruby/files/samp/counter/counter_unitTest_bench_rb.html +0 -115
  226. data/ref/ruby/files/samp/counter/counter_unitTest_design_rb.html +0 -107
  227. data/ref/ruby/files/samp/counter/counter_unitTest_proto_rb.html +0 -107
  228. data/ref/ruby/files/samp/pipelined_alu/Hw5UnitModel_rb.html +0 -101
  229. data/ref/ruby/files/samp/pipelined_alu/InputGenerator_rb.html +0 -101
  230. data/ref/ruby/files/samp/pipelined_alu/TestHw5UnitModel_rb.html +0 -111
  231. data/ref/ruby/files/samp/pipelined_alu/hw5_unit_design_rb.html +0 -107
  232. data/ref/ruby/files/samp/pipelined_alu/hw5_unit_spec_rb.html +0 -112
data/history.part.html ADDED
@@ -0,0 +1,880 @@
1
+ <h1>Release history</h1>
2
+
3
+
4
+ <p>This is a record of important changes that have occurred with each release of <a href="http://ruby-vpi.rubyforge.org">Ruby-VPI</a>.</p>
5
+
6
+
7
+ <h2>Version numbering system</h2>
8
+
9
+
10
+ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rubygems.org/read/chapter/7">rational versioning policy</a> since release 6.3.0. To summarize<sup><a href="#fn1">1</a></sup> this &#8220;major.minor.build&#8221; numbering policy,
11
+ <ul>
12
+ <li>an increase in the <em>major</em> number indicates that <em>functionally incompatible</em> have occurred. Thus, what may have worked in the previous version may not work in the new one.</li>
13
+ <li>an increase in the <em>minor</em> number indicates that <em>functionally compatible</em> changes have occurred. Thus, what worked in the previous version will work in the new one.</li>
14
+ <li>an increase in the <em>build</em> number indicates that the <em>underlying implementation</em> has changed. The functionality has not changed and no features have been added. Thus, what worked in the previous version will work in the new one.</li>
15
+ </ul>
16
+
17
+
18
+ <p id="fn1"><sup>1</sup> C. Gross, &#8220;Explaining Open Source Version Numbers&#8221;, [Online document], 2005 Nov 28, [cited 2006 Aug 27], Available <span class="caps">HTTP</span>: <a href="http://ablog.apress.com/?p=738">http://ablog.apress.com/?p=738</a></p>
19
+
20
+
21
+ <h1>Version 7.2.0 (2006-09-15)</h1>
22
+
23
+
24
+ <h2>Summary</h2>
25
+
26
+
27
+ <p>This release adds initial<sup><a href="#fn1">1</a></sup> support for code coverage analysis via the <a href="http://eigenclass.org/hiki.rb?rcov">rcov library</a>.</p>
28
+
29
+
30
+ <h2>Acknowledgments</h2>
31
+
32
+
33
+ <p>Thanks to Mauricio Fernandez for helping me use rcov without its runner.</p>
34
+
35
+
36
+ <h2>Details</h2>
37
+
38
+
39
+ <ul>
40
+ <li>Added initial<sup><a href="#fn1">1</a></sup> support for code coverage analysis, which can be enabled by setting the <code>COVERAGE</code> environment variable to a non-empty value before running a test.
41
+ <ul>
42
+ <li>For example, you can run a test with the <span class="caps">GPL</span> Cver simulator while enabling the generation of code coverage reports as follows: <code>export COVERAGE=1; rake cver</code></li>
43
+ </ul></li>
44
+ </ul>
45
+
46
+
47
+ <ul>
48
+ <li>Coverage reports are generated in text and <span class="caps">HTML</span> formats.</li>
49
+ </ul>
50
+
51
+
52
+ <p id="fn1"><sup>1</sup> Full capabilites of the rcov library, such as its various analysis modes, are not yet utilized.</p>
53
+
54
+
55
+ <h1>Version 7.1.0 (2006-08-29)</h1>
56
+
57
+
58
+ <h2>Summary</h2>
59
+
60
+
61
+ <p>This release simplifies running of multiple tests, restores compatibility with Synopsys <span class="caps">VCS</span>, and better integrates with RubyGems.</p>
62
+
63
+
64
+ <h2>Details</h2>
65
+
66
+
67
+ <ul>
68
+ <li>Added <code>lib/ruby-vpi/runner_proxy</code> library which, when embedded into a Rakefile, runs all generated tests in the working directory with any specified arguments. For example, have a look at the <code>samp/counter/Rakefile</code> file.</li>
69
+ </ul>
70
+
71
+
72
+ <ul>
73
+ <li>Fixed a bug that prevented one from running tests with Synopsys <span class="caps">VCS</span>.</li>
74
+ </ul>
75
+
76
+
77
+ <ul>
78
+ <li>Ruby-VPI documentation is now available through RubyGems&#8217; <a href="http://docs.rubygems.org/read/chapter/2#page10"><code>gem_server</code> web interface</a>.</li>
79
+ </ul>
80
+
81
+
82
+ <ul>
83
+ <li>The user manual now discusses how to determine the location of a Ruby-VPI installation.</li>
84
+ </ul>
85
+
86
+
87
+ <ul>
88
+ <li>The <code>tpl/</code> directory has been removed.</li>
89
+ </ul>
90
+
91
+
92
+ <h1>Version 7.0.0 (2006-08-29)</h1>
93
+
94
+
95
+ <h2>Summary</h2>
96
+
97
+
98
+ <p>This release distributes Ruby-VPI as a gem, improves portability of generated tests, and fixes a bug.</p>
99
+
100
+
101
+ <h2>Details</h2>
102
+
103
+
104
+ <ul>
105
+ <li><code>put_value()</code> now accomodates register value overflows when verifying the value it has written.</li>
106
+ </ul>
107
+
108
+
109
+ <ul>
110
+ <li>Ruby-VPI is now distributed only as a <a href="http://www.rubygems.org">source gem</a>. You can decompress the gem without installing it onto your system by running the command <code>gem install -i output_directory ruby-vpi-7.0.0.gem</code>. In addition, you can still obtain the source code directly from the Subversion repository.</li>
111
+ </ul>
112
+
113
+
114
+ <ul>
115
+ <li>The test generator&#8217;s templates and the examples have been updated as follows:
116
+ <ul>
117
+ <li>Test runners no longer have to specify the path to Ruby-VPI installation directory. Instead, they simply <code>require 'ruby-vpi/runner'</code>. Thus, you can run your tests on any machine with Ruby-VPI without having to know where it is installed.</li>
118
+ <li>Ruby benches now invoke <code>RubyVPI.init_bench</code> instead of <code>require 'bench'; setup_bench</code> to become initialized.</li>
119
+ </ul></li>
120
+ </ul>
121
+
122
+
123
+ <ul>
124
+ <li>All Ruby libraries in the <code>lib/</code> directory have been moved into <code>lib/ruby-vpi/</code> to prevent load-path clashes with other gems. You should access these libraries by prefixing their path with &#8220;ruby-vpi&#8221;. For example, <code>require 'vpi_util'</code> should now be written as <code>require 'ruby-vpi/vpi_util'</code>.</li>
125
+ </ul>
126
+
127
+
128
+ <ul>
129
+ <li>The <code>src/</code> directory has been renamed to <code>ext/</code> to follow RubyGems convention.</li>
130
+ </ul>
131
+
132
+
133
+ <ul>
134
+ <li>The tools in <code>bin/</code> become available in your system&#8217;s <code>bin/</code> directory when the gem is installed.
135
+ <ul>
136
+ <li>Usage and help information has been added to the <code>header_to_ruby.rb</code> tool.</li>
137
+ </ul></li>
138
+ </ul>
139
+
140
+
141
+ <ul>
142
+ <li>Incorrect spelling of <span class="caps">GPL</span> Cver (v should be uncapitalized) has been fixed.</li>
143
+ </ul>
144
+
145
+
146
+ <ul>
147
+ <li>Incorrect link to <span class="caps">GPL</span> Cver website has been fixed.</li>
148
+ </ul>
149
+
150
+
151
+ <ul>
152
+ <li>The user manual has been updated according to all of the above changes.</li>
153
+ </ul>
154
+
155
+
156
+ <h1>Version 6.3.0 (2006-08-27)</h1>
157
+
158
+
159
+ <h2>Summary</h2>
160
+
161
+
162
+ <p>This release adds support for the <span class="caps">GPL</span> Cver simulator, provides both binary and source packages, and explicitly defines the version numbering system.</p>
163
+
164
+
165
+ <h2>Details</h2>
166
+
167
+
168
+ <ul>
169
+ <li>The <span class="caps">GPL</span> Cver simulator is now supported.</li>
170
+ </ul>
171
+
172
+
173
+ <ul>
174
+ <li>Ruby-VPI now only needs to be built once.
175
+ <ul>
176
+ <li>You can run tests with different Verilog simulators without having to re-compile Ruby-VPI.</li>
177
+ <li>Release packages are now available in both source and binary form.</li>
178
+ </ul></li>
179
+ </ul>
180
+
181
+
182
+ <ul>
183
+ <li>The RSpec based specifications for the counter example now use the <code>should_equal</code> instead of the <code>should_be</code> assertion, because the latter ensures strict equivalence. For instance, it will fail when a Fixnum is compared to a Bignum.</li>
184
+ </ul>
185
+
186
+
187
+ <ul>
188
+ <li>We now follow the RubyGems project&#8217;s <a href="http://www.rubygems.org/read/chapter/7">rational versioning policy</a>. The version numbers of previous releases have been revised accordingly:
189
+ <table>
190
+ <tr>
191
+ <th>Release date </th>
192
+ <th>Original version number </th>
193
+ <th>New version number </th>
194
+ </tr>
195
+ <tr>
196
+ <td> 1999-10-31 </td>
197
+ <td> 0.0 </td>
198
+ <td> 0.0.0 </td>
199
+ </tr>
200
+ <tr>
201
+ <td> 2006-02-26 </td>
202
+ <td> 0.1 </td>
203
+ <td> 1.0.0 </td>
204
+ </tr>
205
+ <tr>
206
+ <td> 2006-04-17 </td>
207
+ <td> 0.2 </td>
208
+ <td> 2.0.0 </td>
209
+ </tr>
210
+ <tr>
211
+ <td> 2006-04-23 </td>
212
+ <td> 0.3 </td>
213
+ <td> 3.0.0 </td>
214
+ </tr>
215
+ <tr>
216
+ <td> 2006-04-28 </td>
217
+ <td> 0.4 </td>
218
+ <td> 3.1.0 </td>
219
+ </tr>
220
+ <tr>
221
+ <td> 2006-05-13 </td>
222
+ <td> 0.5 </td>
223
+ <td> 3.2.0 </td>
224
+ </tr>
225
+ <tr>
226
+ <td> 2006-05-25 </td>
227
+ <td> 0.6 </td>
228
+ <td> 4.0.0 </td>
229
+ </tr>
230
+ <tr>
231
+ <td> 2006-07-22 </td>
232
+ <td> 0.7 </td>
233
+ <td> 5.0.0 </td>
234
+ </tr>
235
+ <tr>
236
+ <td> 2006-07-29 </td>
237
+ <td> 0.8 </td>
238
+ <td> 5.1.0 </td>
239
+ </tr>
240
+ <tr>
241
+ <td> 2006-08-04 </td>
242
+ <td> 0.8.1 </td>
243
+ <td> 5.1.1 </td>
244
+ </tr>
245
+ <tr>
246
+ <td> 2006-08-07 </td>
247
+ <td> 0.9 </td>
248
+ <td> 6.0.0 </td>
249
+ </tr>
250
+ <tr>
251
+ <td> 2006-08-09 </td>
252
+ <td> 0.9.1 </td>
253
+ <td> 6.1.0 </td>
254
+ </tr>
255
+ <tr>
256
+ <td> 2006-08-26 </td>
257
+ <td> 0.9.2 </td>
258
+ <td> 6.2.0 </td>
259
+ </tr>
260
+ </table></li>
261
+ </ul>
262
+
263
+
264
+ <h1>Version 6.2.0 (2006-08-26)</h1>
265
+
266
+
267
+ <h2>Summary</h2>
268
+
269
+
270
+ <p>This release beautifies generated tests, adds checks to find signal width bugs, and includes a new tool.</p>
271
+
272
+
273
+ <h2>Details</h2>
274
+
275
+
276
+ <ul>
277
+ <li>The test generator now uses <span class="caps">ERB</span> templates which ensures nice indentation of generated output.</li>
278
+ </ul>
279
+
280
+
281
+ <ul>
282
+ <li>The test generator now decouples Ruby-VPI paths from Verilog benches via the <span class="caps">RUBYLIB</span> environment variable.</li>
283
+ </ul>
284
+
285
+
286
+ <ul>
287
+ <li>A tool which converts Verilog headers into Ruby has been added.</li>
288
+ </ul>
289
+
290
+
291
+ <ul>
292
+ <li><code>put_value()</code> now returns the value it puts. Therefore, it is easier to chain together a series of assignments: <code>foo.intVal = bar.intVal = baz.intVal = 10</code></li>
293
+ </ul>
294
+
295
+
296
+ <ul>
297
+ <li><code>put_value()</code> now verifies that the value it puts was written correctly. This helps to find bugs regarding invalid assumptions about the number of bits supported by a signal.</li>
298
+ </ul>
299
+
300
+
301
+ <ul>
302
+ <li>The source code is now indented with two spaces instead of one tab character.</li>
303
+ </ul>
304
+
305
+
306
+ <h1>Version 6.1.0 (2006-08-09)</h1>
307
+
308
+
309
+ <h2>Summary</h2>
310
+
311
+
312
+ <p>This release simplifies generated tests and fixes a bug.</p>
313
+
314
+
315
+ <h2>Details</h2>
316
+
317
+
318
+ <ul>
319
+ <li>The test generator now produces simpler Ruby benches and specifications.
320
+ <ul>
321
+ <li>A template used by generated specifications has been added.</li>
322
+ <li>The counter example and tutorial have also been simplified accordingly.</li>
323
+ </ul></li>
324
+ </ul>
325
+
326
+
327
+ <ul>
328
+ <li>Boolean <span class="caps">VPI</span> property values are now correctly converted into Ruby truth values.</li>
329
+ </ul>
330
+
331
+
332
+ <h1>Version 6.0.0 (2006-08-07)</h1>
333
+
334
+
335
+ <h2>Summary</h2>
336
+
337
+
338
+ <p>This release adds support and documentation for rapid prototyping of Verilog designs in Ruby.</p>
339
+
340
+
341
+ <h2>Details</h2>
342
+
343
+
344
+ <ul>
345
+ <li>Support for prototyping designs in Ruby, before they are implemented in Verilog, has been added.
346
+ <ul>
347
+ <li>The <em>same</em> specification can be used to verify both prototype <em>and</em> design! :-)</li>
348
+ <li>The tutorial in the user manual has been updated to discuss prototyping.
349
+ <ul>
350
+ <li>Prototypes have been added to the counter example.</li>
351
+ </ul></li>
352
+ </ul></li>
353
+ </ul>
354
+
355
+
356
+ <ul>
357
+ <li>The directory structure has been reorganized as follows:
358
+ <ul>
359
+ <li><code>ext</code> &rarr; <code>src</code></li>
360
+ <li><code>tools</code> &rarr; <code>bin</code></li>
361
+ <li><code>examples</code> &rarr; <code>samp</code></li>
362
+ </ul></li>
363
+ </ul>
364
+
365
+
366
+ <ul>
367
+ <li>All template files have been moved into the <code>tpl</code> directory.</li>
368
+ </ul>
369
+
370
+
371
+ <ul>
372
+ <li>The user manual has been revised for consistency.</li>
373
+ </ul>
374
+
375
+
376
+ <h1>Version 5.1.1 (2006-08-04)</h1>
377
+
378
+
379
+ <h2>Summary</h2>
380
+
381
+
382
+ <p>This release fixes unreadable syntax coloring in the user manual.</p>
383
+
384
+
385
+ <h2>Acknowledgments</h2>
386
+
387
+
388
+ <ul>
389
+ <li>Thanks to Todd Nagengast and Matt Fischler for notifying me about unreadable text in the user manual.</li>
390
+ </ul>
391
+
392
+
393
+ <h2>Details</h2>
394
+
395
+
396
+ <ul>
397
+ <li>Source code comments in the user manual are now readable.</li>
398
+ </ul>
399
+
400
+
401
+ <ul>
402
+ <li>The <code>README</code> and <code>HISTORY</code> files have been converted to <a href="http://www.textism.com/tools/textile/">textile</a> format.</li>
403
+ </ul>
404
+
405
+
406
+ <h1>Version 5.1.0 (2006-07-29)</h1>
407
+
408
+
409
+ <h2>Summary</h2>
410
+
411
+
412
+ <p>This release adds a tutorial to the user manual, and improves the tools and examples.</p>
413
+
414
+
415
+ <h2>Acknowledgments</h2>
416
+
417
+
418
+ <ul>
419
+ <li>Thanks to Phil Tomson for correcting the <span class="caps">URL</span> of the <span class="caps">RHDL</span> website, in the user manual.</li>
420
+ </ul>
421
+
422
+
423
+ <h2>Details</h2>
424
+
425
+
426
+ <h3>User manual</h3>
427
+
428
+
429
+ <ul>
430
+ <li>A tutorial, based on the counter example, has been added to the user manual.</li>
431
+ </ul>
432
+
433
+
434
+ <ul>
435
+ <li>The user manual&#8217;s appearance has been dramatically improved with syntax coloring for source code, and <a href="http://tango.freedesktop.org">graphics for admonitions and navigation</a>.</li>
436
+ </ul>
437
+
438
+
439
+ <h3>Examples</h3>
440
+
441
+
442
+ <ul>
443
+ <li>A specification, expressed in unit test format, has been added to the counter example.</li>
444
+ </ul>
445
+
446
+
447
+ <ul>
448
+ <li>The <code>--name</code> and <code>-n</code> options, which lets you specify an identifier for a generated test, have been added to the <code>generate_test.rb</code> tool.</li>
449
+ </ul>
450
+
451
+
452
+ <ul>
453
+ <li>Running <code>rake clobber</code> in an example directory no longer destroys documentation in the Ruby-VPI directory.</li>
454
+ </ul>
455
+
456
+
457
+ <ul>
458
+ <li>The examples&#8217; Rakefiles now invoke all tests present in the directory via the <code>launcher_template.rake</code> template.</li>
459
+ </ul>
460
+
461
+
462
+ <ul>
463
+ <li>The Rake template for test runners (generated by <code>tools/generate_test.rb</code>) has moved from <code>examples/template.rake</code> to <code>examples/runner_template.rake</code>.</li>
464
+ </ul>
465
+
466
+
467
+ <h3><span class="caps">VPI</span> utility layer</h3>
468
+
469
+
470
+ <ul>
471
+ <li>The value of a handle&#8217;s boolean <span class="caps">VPI</span> property is treated as <code>false</code> if it is zero, because zero is <code>false</code> in the C language.</li>
472
+ </ul>
473
+
474
+
475
+ <h1>Version 5.0.0 (2006-07-22)</h1>
476
+
477
+
478
+ <h2>Summary</h2>
479
+
480
+
481
+ <p>This release enhances the <span class="caps">VPI</span> utility layer and adds new content to the user manual.</p>
482
+
483
+
484
+ <h2>Acknowledgments</h2>
485
+
486
+
487
+ <ul>
488
+ <li>Thanks to Jan Decaluwe for correcting the description of MyHDL in the user manual.</li>
489
+ </ul>
490
+
491
+
492
+ <h2>Details</h2>
493
+
494
+
495
+ <ul>
496
+ <li><span class="caps">SWIG</span> is no longer required for users because its output is included in the release package.</li>
497
+ </ul>
498
+
499
+
500
+ <ul>
501
+ <li>The <span class="caps">VPI</span> utility layer provides access to <span class="caps">VPI</span> properties of handles in a <a href="http://ruby-vpi.rubyforge.org/doc/background.organization.html#organization.vpi">simpler, more powerful way</a>.</li>
502
+ </ul>
503
+
504
+
505
+ <ul>
506
+ <li>All <span class="caps">VPI</span> properties, except delay values, are now accessible from a handle.</li>
507
+ </ul>
508
+
509
+
510
+ <ul>
511
+ <li>The <code>handle.value</code> and <code>handle.value=</code> methods have been removed.</li>
512
+ </ul>
513
+
514
+
515
+ <ul>
516
+ <li>The user manual has been revised and new content in the organization and usage sections has been added.</li>
517
+ </ul>
518
+
519
+
520
+ <ul>
521
+ <li>This release was tested and developed using:
522
+ <ul>
523
+ <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
524
+ <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li>
525
+ </ul></li>
526
+ </ul>
527
+
528
+
529
+ <h1>Version 4.0.0 (2006-05-25)</h1>
530
+
531
+
532
+ <h2>Summary</h2>
533
+
534
+
535
+ <p>This release adds a comprehensive user manual, upgrades from make to <a href="http://rake.rubyforge.org">Rake</a>, and improves the test generation tool.</p>
536
+
537
+
538
+ <h2>Acknowledgments</h2>
539
+
540
+
541
+ <ul>
542
+ <li>Thanks to Jose Renau for solving the problem of strange delays that occurred whenever a design was reset.</li>
543
+ </ul>
544
+
545
+
546
+ <h2>Details</h2>
547
+
548
+
549
+ <ul>
550
+ <li>A comprehensive user manual, written in DocBook-XML, has been added.</li>
551
+ </ul>
552
+
553
+
554
+ <ul>
555
+ <li>Rake has replaced the role of <strong>make</strong>. All makefiles have been converted accordingly.</li>
556
+ </ul>
557
+
558
+
559
+ <ul>
560
+ <li>The test generation tool now generates multiple files (runner, bench, design, spec) and makes backups of existing files. See its help information for details.</li>
561
+ </ul>
562
+
563
+
564
+ <ul>
565
+ <li>Support for RSpec 0.5.4 has been added.
566
+ <ul>
567
+ <li>The counter example now makes use of RSpec.</li>
568
+ </ul></li>
569
+ </ul>
570
+
571
+
572
+ <ul>
573
+ <li>This release was tested and developed using:
574
+ <ul>
575
+ <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
576
+ <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li>
577
+ </ul></li>
578
+ </ul>
579
+
580
+
581
+ <h1>Version 3.2.0 (2006-05-13)</h1>
582
+
583
+
584
+ <h2>Summary</h2>
585
+
586
+
587
+ <p>This release adds a tool which generates test benches, and adds support for <a href="http://behaviour-driven.org">Behavior Driven Development</a> via the <a href="http://rspec.rubyforge.org">RSpec</a> library.</p>
588
+
589
+
590
+ <h2>Acknowledgments</h2>
591
+
592
+
593
+ <ul>
594
+ <li>Thanks to Scott L Holmes for helping me <a href="http://article.gmane.org/gmane.comp.lang.ruby.general/150087">use the RSpec library without its runner</a> program.</li>
595
+ </ul>
596
+
597
+
598
+ <h2>Details</h2>
599
+
600
+
601
+ <ul>
602
+ <li>A tool, which generates most of a Ruby-VPI test bench from a Verilog 2001 module declaration, has been added.</li>
603
+ </ul>
604
+
605
+
606
+ <ul>
607
+ <li>Ability to use RSpec in a test bench has been added.</li>
608
+ </ul>
609
+
610
+
611
+ <ul>
612
+ <li>Ability to specify arbitrary command-line arguments to Verilog simulators has been added in the examples&#8217; makefile template.</li>
613
+ </ul>
614
+
615
+
616
+ <ul>
617
+ <li>This release was tested and developed using:
618
+ <ul>
619
+ <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
620
+ <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li>
621
+ </ul></li>
622
+ </ul>
623
+
624
+
625
+ <h1>Version 3.1.0 (2006-04-28)</h1>
626
+
627
+
628
+ <h2>Summary</h2>
629
+
630
+
631
+ <p>This release adds simple ways of reading and writing values to <span class="caps">VPI</span> handles, adds documentation for the <span class="caps">VPI</span> utility layer, and fixes the pipelined <span class="caps">ALU</span> example.</p>
632
+
633
+
634
+ <h2>Details</h2>
635
+
636
+
637
+ <ul>
638
+ <li>Simple, consistent ways of reading and writing values to handles have been added to the <span class="caps">VPI</span> utility layer. These ways are described in the <code>SWIG::TYPE_p_unsigned_int</code> class&#8217; documentation.</li>
639
+ </ul>
640
+
641
+
642
+ <ul>
643
+ <li>The makefiles now use the <strong>rbconfig</strong> library to determine the default compiler and linker flags for Ruby.</li>
644
+ </ul>
645
+
646
+
647
+ <ul>
648
+ <li>A race condition in the pipelined <span class="caps">ALU</span> example has been fixed. This example should now run successfully in all Verilog simulators.</li>
649
+ </ul>
650
+
651
+
652
+ <ul>
653
+ <li>The project wiki has been abandoned in favor of RDoc.</li>
654
+ </ul>
655
+
656
+
657
+ <ul>
658
+ <li>The project website is now generated by RDoc.</li>
659
+ </ul>
660
+
661
+
662
+ <ul>
663
+ <li>This release was tested and developed using:
664
+ <ul>
665
+ <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
666
+ <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li>
667
+ </ul></li>
668
+ </ul>
669
+
670
+
671
+ <h1>Version 3.0.0 (2006-04-23)</h1>
672
+
673
+
674
+ <h2>Summary</h2>
675
+
676
+
677
+ <p>This release adds support for the <em>entire</em> <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945"><span class="caps">IEEE</span> Std. 1364-2005</a> VPI interface, and updates the examples into unit tests.</p>
678
+
679
+
680
+ <h2>Acknowledgments</h2>
681
+
682
+
683
+ <ul>
684
+ <li>Thanks to the <a href="http://www.swig.org/guilty.html"><span class="caps">SWIG</span> developers</a> for making this project <em>much</em> easier! ;-)</li>
685
+ </ul>
686
+
687
+
688
+ <h2>Details</h2>
689
+
690
+
691
+ <ul>
692
+ <li>The Ruby interface to <span class="caps">VPI</span> is now generated by <a href="http://www.swig.org"><span class="caps">SWIG</span></a>.
693
+ <ul>
694
+ <li>The main <code>VPI</code> module has been renamed to <code>Vpi</code>.</li>
695
+ <li>The <code>VPI::Handle</code> class has been removed.</li>
696
+ <li>The <code>VPI::stop</code>, <code>VPI::finish</code>, and <code>VPI::reset</code> methods have been removed.</li>
697
+ </ul></li>
698
+ </ul>
699
+
700
+
701
+ <ul>
702
+ <li>The <a href="http://www.boydtechinc.com/ptf/archive/ptf_2005/0737.html"><em>final ballot</em> version</a> of the <code>vpi_user.h</code> header file is now packaged along with and used by Ruby-VPI.</li>
703
+ </ul>
704
+
705
+
706
+ <ul>
707
+ <li>The <span class="caps">VPI</span> module, its sub-classes, and its functionality have been replaced by the <span class="caps">VPI</span> utility layer (see <code>src/vpi_util.rb</code>).</li>
708
+ </ul>
709
+
710
+
711
+ <ul>
712
+ <li>The examples now make use of the <strong>test/unit</strong> unit testing framework.</li>
713
+ </ul>
714
+
715
+
716
+ <ul>
717
+ <li>The makefiles for the examples have been simplified through the use of a common template.
718
+ <ul>
719
+ <li>The <strong>vsim</strong> target for Mentor Modelsim has been renamed to <strong>msim</strong>.</li>
720
+ </ul></li>
721
+ </ul>
722
+
723
+
724
+ <ul>
725
+ <li>This release was tested and developed using:
726
+ <ul>
727
+ <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
728
+ <li>Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li>
729
+ </ul></li>
730
+ </ul>
731
+
732
+
733
+ <h1>Version 2.0.0 (2006-04-17)</h1>
734
+
735
+
736
+ <h2>Summary</h2>
737
+
738
+
739
+ <p>This release fixes major bugs, adds support for Mentor Modelsim, and removes the <code>$ruby_task</code> callback.</p>
740
+
741
+
742
+ <h2>Acknowledgments</h2>
743
+
744
+
745
+ <ul>
746
+ <li>Thanks to Nobu Nakada for explaining the <a href="http://article.gmane.org/gmane.comp.lang.ruby.general/146653">cross-thread violation on rb_gc()</a> error.</li>
747
+ </ul>
748
+
749
+
750
+ <h2>Details</h2>
751
+
752
+
753
+ <ul>
754
+ <li>The <strong>cross-thread violation on rb_gc()</strong> error has been fixed.
755
+ <ul>
756
+ <li>The <strong>stack level too deep (SystemStackError)</strong> error has been fixed.</li>
757
+ <li>The <strong>test/unit</strong> library can be used in Ruby test bench.</li>
758
+ <li>Mentor Modelsim Verilog simulator works with Ruby-VPI.</li>
759
+ </ul></li>
760
+ </ul>
761
+
762
+
763
+ <ul>
764
+ <li>Removed <code>$ruby_task</code> callback and ability to dynamically register system tasks from Ruby because inter-process communication is complicated at present.</li>
765
+ </ul>
766
+
767
+
768
+ <ul>
769
+ <li>Added piplelined <span class="caps">ALU</span> example.</li>
770
+ </ul>
771
+
772
+
773
+ <ul>
774
+ <li>This release was tested and developed using:
775
+ <ul>
776
+ <li>Ruby 1.8.4 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
777
+ <li>Ruby 1.8.4 and Modelsim 6.1d on x86_64 <span class="caps">GNU</span>/Linux</li>
778
+ <li>Ruby 1.8.4 and Synopsys <span class="caps">VCS</span>-MX X-2005.06-SP1 on <span class="caps">SPARC4</span> SunOS 5.10</li>
779
+ </ul></li>
780
+ </ul>
781
+
782
+
783
+ <h1>Version 1.0.0 (2006-02-26)</h1>
784
+
785
+
786
+ <h2>Summary</h2>
787
+
788
+
789
+ This release adds enough Verilog <span class="caps">VPI</span> functionality to make Ruby-VPI usable for simple test benches:
790
+ <ul>
791
+ <li>access Verilog objects through <span class="caps">VPI</span> handles</li>
792
+ <li>read and change <span class="caps">VPI</span> handle values</li>
793
+ <li>stop, finish, restart the simulation</li>
794
+ </ul>
795
+
796
+
797
+ <h2>Acknowledgments</h2>
798
+
799
+
800
+ <ul>
801
+ <li>Thanks to Jose Renau for helping me debug how Synopsys <span class="caps">VCS</span> works with Verilog <span class="caps">VPI</span>. The problem was that <span class="caps">VCS</span> required calltf signatures to be <code>void (*)(void)</code>, whereas the Verilog standard defines a calltf signature as <code>PLI_INT32 (*)(PLI_BYTE8*)</code>.</li>
802
+ </ul>
803
+
804
+
805
+ <ul>
806
+ <li>Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for <a href="http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662">helping me discover</a> why the <code>SystemStackError</code> was happening.</li>
807
+ </ul>
808
+
809
+
810
+ <h2>Details</h2>
811
+
812
+
813
+ <ul>
814
+ <li>Implemented some Verilog <span class="caps">VPI</span> functionality:
815
+ <ul>
816
+ <li><code>VPI::handle_by_name(string, VPI::Handle)</code> &rarr; <code>VPI::Handle</code></li>
817
+ <li><code>VPI::handle_by_name(string)</code> &rarr; <code>VPI::Handle</code></li>
818
+ <li><code>VPI::Handle#put_value(integer)</code></li>
819
+ <li><code>VPI::Handle#value = integer</code></li>
820
+ <li><code>VPI::Handle#get_value</code> &rarr; <code>integer</code></li>
821
+ <li><code>VPI::Handle#value</code> &rarr; <code>integer</code></li>
822
+ <li><code>VPI::stop</code></li>
823
+ <li><code>VPI::finish</code></li>
824
+ <li><code>VPI::reset</code></li>
825
+ </ul></li>
826
+ </ul>
827
+
828
+
829
+ <ul>
830
+ <li>Implemented some additional functionality:
831
+ <ul>
832
+ <li><code>VPI::register_task(string, &#38;proc)</code></li>
833
+ </ul></li>
834
+ </ul>
835
+
836
+
837
+ <ul>
838
+ <li>Added ability to pass arbitrary command-line arguments to the Ruby interpreter (using <code>$ruby_init</code>). Now you can invoke any Ruby script you want, instead of <code>pli_init.rb</code>.</li>
839
+ </ul>
840
+
841
+
842
+ <ul>
843
+ <li>Added ability to dynamically register system tasks from Ruby, using <code>VPI::register_task("task name")</code>, and call them from Verilog, using <code>$ruby_task("task name")</code>.</li>
844
+ </ul>
845
+
846
+
847
+ <ul>
848
+ <li>Added <code>VPI::Handle</code> class which encapsulates a <code>vpiHandle</code> VPI object.</li>
849
+ </ul>
850
+
851
+
852
+ <ul>
853
+ <li>This release was tested and developed using:
854
+ <ul>
855
+ <li>Ruby 1.8.2 and Icarus Verilog 0.8 on i686 <span class="caps">GNU</span>/Linux</li>
856
+ <li>Ruby 1.8.4, Synopsys <span class="caps">VCS X</span>-2005.06, and Mentor Modelsim 6.1b on i686 <span class="caps">GNU</span>/Linux</li>
857
+ </ul></li>
858
+ </ul>
859
+
860
+
861
+ <h1>Version 0.0.0 (1999-10-31)</h1>
862
+
863
+
864
+ <h2>Summary</h2>
865
+
866
+
867
+ <p>This is Kazuhiro <span class="caps">HIWADA</span>&#8217;s initial testing release of Ruby-VPI. See its <a href="http://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-list/18193">original announcement</a> and <a href="http://easter.kuee.kyoto-u.ac.jp/~hiwada/ruby/memo/src/ruby-vpi-test.tgz">source code</a>.</p>
868
+
869
+
870
+ <h2>Details</h2>
871
+
872
+
873
+ <ul>
874
+ <li>Added ability to relay control from Verilog test bench to Ruby (using <code>$ruby_callback</code>) and vice versa (using <code>PLI::relay_verilog</code>).</li>
875
+ </ul>
876
+
877
+
878
+ <ul>
879
+ <li>Tested and developed using Ruby 1.4 and Verilog-XL from Cadence systems, on a <span class="caps">SPARC</span> machine running Solaris 2.6.</li>
880
+ </ul>