ruby-vpi 9.0.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. data/HISTORY +120 -56
  2. data/MEMO +8 -0
  3. data/README +1 -1
  4. data/Rakefile +2 -2
  5. data/bin/generate_test.rb +11 -12
  6. data/bin/generate_test_tpl/bench.rb +2 -2
  7. data/bin/generate_test_tpl/bench.v +1 -4
  8. data/bin/generate_test_tpl/design.rb +6 -20
  9. data/bin/generate_test_tpl/proto.rb +5 -3
  10. data/bin/generate_test_tpl/runner.rake +2 -1
  11. data/bin/generate_test_tpl/spec.rb +5 -12
  12. data/doc/background.organization.html +1 -1
  13. data/doc/background.running-tests.html +1 -1
  14. data/doc/index.html +2 -2
  15. data/doc/manual.txt +276 -223
  16. data/doc/problem.ivl.html +3 -3
  17. data/doc/problems.html +1 -1
  18. data/doc/problems.ruby.html +1 -1
  19. data/doc/problems.vsim.html +1 -1
  20. data/doc/setup.html +3 -0
  21. data/doc/setup.installation.html +9 -0
  22. data/doc/setup.maintenance.html +3 -0
  23. data/doc/setup.reqs.html +3 -0
  24. data/doc/src/manual.xml +232 -195
  25. data/doc/styles/manual.css +8 -0
  26. data/doc/usage.examples.html +1 -1
  27. data/doc/usage.html +1 -1
  28. data/doc/usage.tools.html +7 -1
  29. data/doc/usage.tutorial.html +50 -56
  30. data/history.html +195 -77
  31. data/history.part.html +195 -77
  32. data/lib/ruby-vpi/vpi.rb +13 -1
  33. data/lib/ruby-vpi.rb +18 -7
  34. data/memo.html +19 -0
  35. data/memo.part.html +19 -0
  36. data/readme.html +1 -1
  37. data/readme.part.html +1 -1
  38. data/samp/counter/counter_rspec_bench.rb +2 -2
  39. data/samp/counter/counter_rspec_bench.v +1 -4
  40. data/samp/counter/counter_rspec_design.rb +4 -18
  41. data/samp/counter/counter_rspec_proto.rb +7 -5
  42. data/samp/counter/counter_rspec_runner.rake +2 -1
  43. data/samp/counter/counter_rspec_spec.rb +8 -12
  44. data/samp/counter/counter_xunit_bench.rb +2 -2
  45. data/samp/counter/counter_xunit_bench.v +1 -4
  46. data/samp/counter/counter_xunit_design.rb +4 -18
  47. data/samp/counter/counter_xunit_proto.rb +7 -5
  48. data/samp/counter/counter_xunit_runner.rake +2 -1
  49. data/samp/counter/counter_xunit_spec.rb +8 -14
  50. data/samp/pipelined_alu/hw5_unit_test_bench.rb +3 -3
  51. data/samp/pipelined_alu/hw5_unit_test_bench.v +1 -4
  52. data/samp/pipelined_alu/hw5_unit_test_design.rb +49 -65
  53. data/samp/pipelined_alu/hw5_unit_test_proto.rb +9 -5
  54. data/samp/pipelined_alu/hw5_unit_test_runner.rake +2 -1
  55. data/samp/pipelined_alu/hw5_unit_test_spec.rb +18 -21
  56. metadata +8 -242
  57. data/doc/usage.installation.html +0 -9
  58. data/doc/usage.recommendations.html +0 -3
  59. data/doc/usage.requirements.html +0 -3
  60. data/ref/c/annotated.html +0 -35
  61. data/ref/c/common_8h.html +0 -146
  62. data/ref/c/doxygen.css +0 -358
  63. data/ref/c/doxygen.png +0 -0
  64. data/ref/c/files.html +0 -34
  65. data/ref/c/functions.html +0 -134
  66. data/ref/c/functions_vars.html +0 -134
  67. data/ref/c/globals.html +0 -55
  68. data/ref/c/globals_0x63.html +0 -86
  69. data/ref/c/globals_0x65.html +0 -55
  70. data/ref/c/globals_0x66.html +0 -55
  71. data/ref/c/globals_0x70.html +0 -71
  72. data/ref/c/globals_0x72.html +0 -62
  73. data/ref/c/globals_0x73.html +0 -65
  74. data/ref/c/globals_0x74.html +0 -55
  75. data/ref/c/globals_0x76.html +0 -472
  76. data/ref/c/globals_0x78.html +0 -55
  77. data/ref/c/globals_defs.html +0 -81
  78. data/ref/c/globals_defs_0x65.html +0 -50
  79. data/ref/c/globals_defs_0x70.html +0 -51
  80. data/ref/c/globals_defs_0x76.html +0 -463
  81. data/ref/c/globals_defs_0x78.html +0 -50
  82. data/ref/c/globals_enum.html +0 -39
  83. data/ref/c/globals_eval.html +0 -40
  84. data/ref/c/globals_func.html +0 -49
  85. data/ref/c/globals_type.html +0 -63
  86. data/ref/c/globals_vars.html +0 -42
  87. data/ref/c/index.html +0 -20
  88. data/ref/c/relay_8c.html +0 -214
  89. data/ref/c/relay_8h.html +0 -129
  90. data/ref/c/structrelay____RubyOptions____def.html +0 -67
  91. data/ref/c/structt__cb__data.html +0 -151
  92. data/ref/c/structt__vpi__delay.html +0 -134
  93. data/ref/c/structt__vpi__error__info.html +0 -151
  94. data/ref/c/structt__vpi__strengthval.html +0 -83
  95. data/ref/c/structt__vpi__systf__data.html +0 -151
  96. data/ref/c/structt__vpi__time.html +0 -100
  97. data/ref/c/structt__vpi__value.html +0 -204
  98. data/ref/c/structt__vpi__vecval.html +0 -66
  99. data/ref/c/structt__vpi__vlog__info.html +0 -100
  100. data/ref/c/swig_8c.html +0 -80
  101. data/ref/c/swig_8h.html +0 -83
  102. data/ref/c/tab_b.gif +0 -0
  103. data/ref/c/tab_l.gif +0 -0
  104. data/ref/c/tab_r.gif +0 -0
  105. data/ref/c/tabs.css +0 -102
  106. data/ref/c/verilog_8h.html +0 -117
  107. data/ref/c/vlog_8c.html +0 -168
  108. data/ref/c/vlog_8h.html +0 -128
  109. data/ref/c/vpi__user_8h.html +0 -8739
  110. data/ref/ruby/classes/ERB.html +0 -158
  111. data/ref/ruby/classes/ERB.src/M000034.html +0 -29
  112. data/ref/ruby/classes/FileUtils.html +0 -165
  113. data/ref/ruby/classes/FileUtils.src/M000089.html +0 -18
  114. data/ref/ruby/classes/FileUtils.src/M000090.html +0 -18
  115. data/ref/ruby/classes/Integer.html +0 -398
  116. data/ref/ruby/classes/Integer.src/M000012.html +0 -25
  117. data/ref/ruby/classes/Integer.src/M000013.html +0 -18
  118. data/ref/ruby/classes/Integer.src/M000014.html +0 -18
  119. data/ref/ruby/classes/Integer.src/M000015.html +0 -18
  120. data/ref/ruby/classes/Integer.src/M000016.html +0 -18
  121. data/ref/ruby/classes/Integer.src/M000017.html +0 -18
  122. data/ref/ruby/classes/Integer.src/M000020.html +0 -22
  123. data/ref/ruby/classes/Integer.src/M000021.html +0 -22
  124. data/ref/ruby/classes/Integer.src/M000022.html +0 -25
  125. data/ref/ruby/classes/Integer.src/M000023.html +0 -31
  126. data/ref/ruby/classes/Integer.src/M000024.html +0 -25
  127. data/ref/ruby/classes/Integer.src/M000025.html +0 -30
  128. data/ref/ruby/classes/OutputInfo.html +0 -299
  129. data/ref/ruby/classes/OutputInfo.src/M000030.html +0 -51
  130. data/ref/ruby/classes/RDoc.html +0 -135
  131. data/ref/ruby/classes/RDoc.src/M000093.html +0 -40
  132. data/ref/ruby/classes/RubyVpi/Config.html +0 -148
  133. data/ref/ruby/classes/RubyVpi.html +0 -186
  134. data/ref/ruby/classes/RubyVpi.src/M000091.html +0 -50
  135. data/ref/ruby/classes/RubyVpi.src/M000092.html +0 -20
  136. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +0 -407
  137. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000081.html +0 -18
  138. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000082.html +0 -18
  139. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000083.html +0 -22
  140. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000084.html +0 -44
  141. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000085.html +0 -82
  142. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000086.html +0 -127
  143. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000087.html +0 -26
  144. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000088.html +0 -18
  145. data/ref/ruby/classes/SWIG.html +0 -111
  146. data/ref/ruby/classes/String.html +0 -158
  147. data/ref/ruby/classes/String.src/M000032.html +0 -41
  148. data/ref/ruby/classes/String.src/M000033.html +0 -18
  149. data/ref/ruby/classes/Table.html +0 -191
  150. data/ref/ruby/classes/Table.src/M000026.html +0 -38
  151. data/ref/ruby/classes/Table.src/M000027.html +0 -18
  152. data/ref/ruby/classes/Table.src/M000028.html +0 -18
  153. data/ref/ruby/classes/Table.src/M000029.html +0 -18
  154. data/ref/ruby/classes/Template.html +0 -158
  155. data/ref/ruby/classes/Template.src/M000031.html +0 -18
  156. data/ref/ruby/classes/VerilogParser/Module/Parameter.html +0 -160
  157. data/ref/ruby/classes/VerilogParser/Module/Parameter.src/M000011.html +0 -21
  158. data/ref/ruby/classes/VerilogParser/Module/Port.html +0 -207
  159. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000007.html +0 -21
  160. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +0 -18
  161. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000009.html +0 -18
  162. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000010.html +0 -18
  163. data/ref/ruby/classes/VerilogParser/Module.html +0 -172
  164. data/ref/ruby/classes/VerilogParser/Module.src/M000006.html +0 -29
  165. data/ref/ruby/classes/VerilogParser.html +0 -187
  166. data/ref/ruby/classes/VerilogParser.src/M000005.html +0 -34
  167. data/ref/ruby/classes/XX/Document.html +0 -295
  168. data/ref/ruby/classes/XX/Document.src/M000072.html +0 -22
  169. data/ref/ruby/classes/XX/Document.src/M000073.html +0 -20
  170. data/ref/ruby/classes/XX/Document.src/M000074.html +0 -20
  171. data/ref/ruby/classes/XX/Document.src/M000075.html +0 -20
  172. data/ref/ruby/classes/XX/Document.src/M000076.html +0 -22
  173. data/ref/ruby/classes/XX/Document.src/M000077.html +0 -21
  174. data/ref/ruby/classes/XX/Document.src/M000078.html +0 -21
  175. data/ref/ruby/classes/XX/Document.src/M000079.html +0 -34
  176. data/ref/ruby/classes/XX/Document.src/M000080.html +0 -98
  177. data/ref/ruby/classes/XX/HTML4/Strict.html +0 -138
  178. data/ref/ruby/classes/XX/HTML4/Strict.src/M000038.html +0 -20
  179. data/ref/ruby/classes/XX/HTML4/Transitional.html +0 -138
  180. data/ref/ruby/classes/XX/HTML4/Transitional.src/M000037.html +0 -20
  181. data/ref/ruby/classes/XX/HTML4.html +0 -145
  182. data/ref/ruby/classes/XX/HTML4.src/M000036.html +0 -20
  183. data/ref/ruby/classes/XX/Markup/ClassMethods.html +0 -236
  184. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000044.html +0 -22
  185. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000045.html +0 -20
  186. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000046.html +0 -25
  187. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000047.html +0 -20
  188. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000048.html +0 -27
  189. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000049.html +0 -20
  190. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000050.html +0 -27
  191. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000051.html +0 -22
  192. data/ref/ruby/classes/XX/Markup/Error.html +0 -111
  193. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +0 -474
  194. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000052.html +0 -56
  195. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000053.html +0 -33
  196. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000054.html +0 -31
  197. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000055.html +0 -48
  198. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000056.html +0 -20
  199. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000057.html +0 -31
  200. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000058.html +0 -32
  201. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000059.html +0 -32
  202. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000060.html +0 -28
  203. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000061.html +0 -23
  204. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000062.html +0 -26
  205. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000063.html +0 -20
  206. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000064.html +0 -20
  207. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000065.html +0 -20
  208. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000066.html +0 -20
  209. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000067.html +0 -20
  210. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000068.html +0 -21
  211. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000069.html +0 -20
  212. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000070.html +0 -20
  213. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000071.html +0 -20
  214. data/ref/ruby/classes/XX/Markup.html +0 -160
  215. data/ref/ruby/classes/XX/Markup.src/M000043.html +0 -28
  216. data/ref/ruby/classes/XX/XHTML/Strict.html +0 -138
  217. data/ref/ruby/classes/XX/XHTML/Strict.src/M000041.html +0 -20
  218. data/ref/ruby/classes/XX/XHTML/Transitional.html +0 -138
  219. data/ref/ruby/classes/XX/XHTML/Transitional.src/M000040.html +0 -20
  220. data/ref/ruby/classes/XX/XHTML.html +0 -145
  221. data/ref/ruby/classes/XX/XHTML.src/M000039.html +0 -36
  222. data/ref/ruby/classes/XX/XML.html +0 -138
  223. data/ref/ruby/classes/XX/XML.src/M000035.html +0 -20
  224. data/ref/ruby/classes/XX/XMLish.html +0 -138
  225. data/ref/ruby/classes/XX/XMLish.src/M000042.html +0 -18
  226. data/ref/ruby/classes/XX.html +0 -138
  227. data/ref/ruby/created.rid +0 -1
  228. data/ref/ruby/files/bin/generate_test_rb.html +0 -245
  229. data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +0 -18
  230. data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +0 -39
  231. data/ref/ruby/files/bin/header_to_ruby_rb.html +0 -125
  232. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +0 -108
  233. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +0 -101
  234. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +0 -108
  235. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +0 -111
  236. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +0 -108
  237. data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +0 -115
  238. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +0 -108
  239. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +0 -208
  240. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +0 -24
  241. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000004.html +0 -26
  242. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +0 -107
  243. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +0 -108
  244. data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +0 -148
  245. data/ref/ruby/files/lib/ruby-vpi_rb.html +0 -109
  246. data/ref/ruby/fr_class_index.html +0 -56
  247. data/ref/ruby/fr_file_index.html +0 -40
  248. data/ref/ruby/fr_method_index.html +0 -119
  249. data/ref/ruby/index.html +0 -24
  250. data/ref/ruby/rdoc-style.css +0 -208
data/history.part.html CHANGED
@@ -18,6 +18,86 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
18
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
19
 
20
20
 
21
+ <h1>Version 10.0.0 (2006-11-05)</h1>
22
+
23
+
24
+ <h2>Summary</h2>
25
+
26
+
27
+ <p>This release adds the ability to access a handle&#8217;s children and reduces the amount of code produced by the automated test generator.</p>
28
+
29
+
30
+ <h2>Acknowledgment</h2>
31
+
32
+
33
+ <p>Thanks to Matt Fischler for finding the problem of misdirected compilation errors in Verilog benches.</p>
34
+
35
+
36
+ <h2>Notice</h2>
37
+
38
+
39
+ <ul>
40
+ <li>The way in which Ruby-VPI and generated tests interact has changed: the design is now a <span class="caps">VPI</span> handle object and the <code>design.rb</code> and <code>proto.rb</code> files define <a href="http://wiki.rubygarden.org/Ruby/page/show/SingletonTutorial">singleton methods</a> for that object.
41
+ <ul>
42
+ <li>I suggest that you regenerate your existing tests (just run <strong>generate_test.rb</strong> again) whilst employing the service of a text merging tool (see the user manual).</li>
43
+ </ul></li>
44
+ </ul>
45
+
46
+
47
+ <ul>
48
+ <li>You can now access a handle&#8217;s children by simply calling methods on it. In the event that a child handle has the same name as a <span class="caps">VPI</span> property, the child is given priority. However, you can always access <span class="caps">VPI</span> properties explicitly via the <code>get_value</code> and <code>put_value</code> methods.</li>
49
+ </ul>
50
+
51
+
52
+ <ul>
53
+ <li><strong>generate_test.rb</strong> no longer accepts the <code>-s</code> and <code>-u</code> options. Use their longer counterparts <code>--rspec</code> and <code>--xunit</code> instead.</li>
54
+ </ul>
55
+
56
+
57
+ <h2>Detail</h2>
58
+
59
+
60
+ <h3>Automated test generator</h3>
61
+
62
+
63
+ <ul>
64
+ <li>Generated Verilog benches no longer divert compilation errors from Verilog design files. That is, if the Verilog simulator finds compilation errors in a Verilog design file, it will report that the Verilog design file is at fault (instead of reporting that the generated Verilog bench is at fault).</li>
65
+ </ul>
66
+
67
+
68
+ <ul>
69
+ <li>The user is now notified when a backup of an existing file is made.</li>
70
+ </ul>
71
+
72
+
73
+ <ul>
74
+ <li>Generated tests have been greatly simplified to reduce the amount of work for the user.
75
+ <ul>
76
+ <li>The design is now just a handle to the module in the Verilog bench.</li>
77
+ <li><code>include Vpi</code> and <code>@design</code> are no longer generated.</li>
78
+ <li>The tutorial and examples have been updated accordingly.</li>
79
+ </ul></li>
80
+ </ul>
81
+
82
+
83
+ <h3>User manual</h3>
84
+
85
+
86
+ <ul>
87
+ <li>Revised the stylesheet to make disjoint sections readily distinguishable from eachother, through generous spacing and minor coloring.</li>
88
+ </ul>
89
+
90
+
91
+ <ul>
92
+ <li>Added tips about <code>ruby-vpi/runner_proxy</code>, <code>rake -T</code>, and using <strong>kdiff3</strong> with <strong>generate_test.rb</strong>.</li>
93
+ </ul>
94
+
95
+
96
+ <ul>
97
+ <li>Moved installation information into a new &#8220;setup&#8221; chapter.</li>
98
+ </ul>
99
+
100
+
21
101
  <h1>Version 9.0.0 (2006-10-28)</h1>
22
102
 
23
103
 
@@ -27,7 +107,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
27
107
  <p>This release improves the automated test generator and adds new content to the user manual.</p>
28
108
 
29
109
 
30
- <h2>Acknowledgments</h2>
110
+ <h2>Acknowledgment</h2>
31
111
 
32
112
 
33
113
  <p>Thanks to Matt Fischler for helping test and debug the installation of Ruby-VPI on Windows.</p>
@@ -41,7 +121,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
41
121
  </ul>
42
122
 
43
123
 
44
- <h2>Details</h2>
124
+ <h2>Detail</h2>
45
125
 
46
126
 
47
127
  <ul>
@@ -93,7 +173,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
93
173
  <p>This release simplifies configuration of generated tests.</p>
94
174
 
95
175
 
96
- <h2>Acknowledgments</h2>
176
+ <h2>Acknowledgment</h2>
97
177
 
98
178
 
99
179
  <p>Thanks to <a href="http://www.soe.ucsc.edu/classes/cmpe126/Fall06/">students in <span class="caps">CMPE</span>-126</a> for their constructive criticism.</p>
@@ -107,7 +187,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
107
187
  </ul>
108
188
 
109
189
 
110
- <h2>Details</h2>
190
+ <h2>Detail</h2>
111
191
 
112
192
 
113
193
  <ul>
@@ -134,7 +214,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
134
214
  </ul>
135
215
 
136
216
 
137
- <h2>Details</h2>
217
+ <h2>Detail</h2>
138
218
 
139
219
 
140
220
  <ul>
@@ -167,7 +247,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
167
247
  </ul>
168
248
 
169
249
 
170
- <h2>Details</h2>
250
+ <h2>Detail</h2>
171
251
 
172
252
 
173
253
  <ul>
@@ -213,13 +293,13 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
213
293
  <ul>
214
294
  <li>Handles now have two new methods:
215
295
  <ul>
216
- <li><code>handle.x?</code>&#8212;checks if the logic value is &#8220;don&#8217;t care&#8221; </li>
217
- <li><code>handle.z?</code>&#8212;checks if the logic value is high impedance</li>
296
+ <li><code>handle.x?</code> checks if the logic value is &#8220;don&#8217;t care&#8221; </li>
297
+ <li><code>handle.z?</code> checks if the logic value is high impedance</li>
218
298
  </ul></li>
219
299
  </ul>
220
300
 
221
301
 
222
- <h2>Details</h2>
302
+ <h2>Detail</h2>
223
303
 
224
304
 
225
305
  <ul>
@@ -249,13 +329,13 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
249
329
  <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>
250
330
 
251
331
 
252
- <h2>Acknowledgments</h2>
332
+ <h2>Acknowledgment</h2>
253
333
 
254
334
 
255
335
  <p>Thanks to Mauricio Fernandez for helping me use rcov without its runner.</p>
256
336
 
257
337
 
258
- <h2>Details</h2>
338
+ <h2>Detail</h2>
259
339
 
260
340
 
261
341
  <ul>
@@ -283,7 +363,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
283
363
  <p>This release simplifies running of multiple tests, restores compatibility with Synopsys <span class="caps">VCS</span>, and better integrates with RubyGems.</p>
284
364
 
285
365
 
286
- <h2>Details</h2>
366
+ <h2>Detail</h2>
287
367
 
288
368
 
289
369
  <ul>
@@ -320,7 +400,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
320
400
  <p>This release distributes Ruby-VPI as a gem, improves portability of generated tests, and fixes a bug.</p>
321
401
 
322
402
 
323
- <h2>Details</h2>
403
+ <h2>Notice</h2>
324
404
 
325
405
 
326
406
  <ul>
@@ -328,11 +408,6 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
328
408
  </ul>
329
409
 
330
410
 
331
- <ul>
332
- <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>
333
- </ul>
334
-
335
-
336
411
  <ul>
337
412
  <li>The test generator&#8217;s templates and the examples have been updated as follows:
338
413
  <ul>
@@ -352,6 +427,14 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
352
427
  </ul>
353
428
 
354
429
 
430
+ <h2>Detail</h2>
431
+
432
+
433
+ <ul>
434
+ <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>
435
+ </ul>
436
+
437
+
355
438
  <ul>
356
439
  <li>The tools in <code>bin/</code> become available in your system&#8217;s <code>bin/</code> directory when the gem is installed.
357
440
  <ul>
@@ -384,20 +467,27 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
384
467
  <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>
385
468
 
386
469
 
387
- <h2>Details</h2>
470
+ <h2>Notice</h2>
388
471
 
389
472
 
390
473
  <ul>
391
- <li>The <span class="caps">GPL</span> Cver simulator is now supported.</li>
474
+ <li>Ruby-VPI now only needs to be built once.
475
+ <ul>
476
+ <li>You can run tests with different Verilog simulators without having to re-compile Ruby-VPI.</li>
477
+ </ul></li>
392
478
  </ul>
393
479
 
394
480
 
481
+ <h2>Detail</h2>
482
+
483
+
395
484
  <ul>
396
- <li>Ruby-VPI now only needs to be built once.
485
+ <li>The <span class="caps">GPL</span> Cver simulator is now supported.</li>
486
+ </ul>
487
+
488
+
397
489
  <ul>
398
- <li>You can run tests with different Verilog simulators without having to re-compile Ruby-VPI.</li>
399
- <li>Release packages are now available in both source and binary form.</li>
400
- </ul></li>
490
+ <li>Release packages are now available in both source and binary form.</li>
401
491
  </ul>
402
492
 
403
493
 
@@ -492,31 +582,34 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
492
582
  <p>This release beautifies generated tests, adds checks to find signal width bugs, and includes a new tool.</p>
493
583
 
494
584
 
495
- <h2>Details</h2>
585
+ <h2>Notice</h2>
496
586
 
497
587
 
498
588
  <ul>
499
- <li>The test generator now uses <span class="caps">ERB</span> templates which ensures nice indentation of generated output.</li>
589
+ <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>
500
590
  </ul>
501
591
 
502
592
 
503
593
  <ul>
504
- <li>The test generator now decouples Ruby-VPI paths from Verilog benches via the <span class="caps">RUBYLIB</span> environment variable.</li>
594
+ <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>
505
595
  </ul>
506
596
 
507
597
 
598
+ <h2>Detail</h2>
599
+
600
+
508
601
  <ul>
509
- <li>A tool which converts Verilog headers into Ruby has been added.</li>
602
+ <li>The test generator now uses <span class="caps">ERB</span> templates which ensures nice indentation of generated output.</li>
510
603
  </ul>
511
604
 
512
605
 
513
606
  <ul>
514
- <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>
607
+ <li>The test generator now decouples Ruby-VPI paths from Verilog benches via the <span class="caps">RUBYLIB</span> environment variable.</li>
515
608
  </ul>
516
609
 
517
610
 
518
611
  <ul>
519
- <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>
612
+ <li>A tool which converts Verilog headers into Ruby has been added.</li>
520
613
  </ul>
521
614
 
522
615
 
@@ -534,7 +627,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
534
627
  <p>This release simplifies generated tests and fixes a bug.</p>
535
628
 
536
629
 
537
- <h2>Details</h2>
630
+ <h2>Detail</h2>
538
631
 
539
632
 
540
633
  <ul>
@@ -560,19 +653,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
560
653
  <p>This release adds support and documentation for rapid prototyping of Verilog designs in Ruby.</p>
561
654
 
562
655
 
563
- <h2>Details</h2>
564
-
565
-
566
- <ul>
567
- <li>Support for prototyping designs in Ruby, before they are implemented in Verilog, has been added.
568
- <ul>
569
- <li>The <em>same</em> specification can be used to verify both prototype <em>and</em> design! :-)</li>
570
- <li>The tutorial in the user manual has been updated to discuss prototyping.
571
- <ul>
572
- <li>Prototypes have been added to the counter example.</li>
573
- </ul></li>
574
- </ul></li>
575
- </ul>
656
+ <h2>Notice</h2>
576
657
 
577
658
 
578
659
  <ul>
@@ -590,6 +671,21 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
590
671
  </ul>
591
672
 
592
673
 
674
+ <h2>Detail</h2>
675
+
676
+
677
+ <ul>
678
+ <li>Support for prototyping designs in Ruby, before they are implemented in Verilog, has been added.
679
+ <ul>
680
+ <li>The <em>same</em> specification can be used to verify both prototype <em>and</em> design! :-)</li>
681
+ <li>The tutorial in the user manual has been updated to discuss prototyping.
682
+ <ul>
683
+ <li>Prototypes have been added to the counter example.</li>
684
+ </ul></li>
685
+ </ul></li>
686
+ </ul>
687
+
688
+
593
689
  <ul>
594
690
  <li>The user manual has been revised for consistency.</li>
595
691
  </ul>
@@ -604,7 +700,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
604
700
  <p>This release fixes unreadable syntax coloring in the user manual.</p>
605
701
 
606
702
 
607
- <h2>Acknowledgments</h2>
703
+ <h2>Acknowledgment</h2>
608
704
 
609
705
 
610
706
  <ul>
@@ -612,7 +708,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
612
708
  </ul>
613
709
 
614
710
 
615
- <h2>Details</h2>
711
+ <h2>Detail</h2>
616
712
 
617
713
 
618
714
  <ul>
@@ -634,7 +730,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
634
730
  <p>This release adds a tutorial to the user manual, and improves the tools and examples.</p>
635
731
 
636
732
 
637
- <h2>Acknowledgments</h2>
733
+ <h2>Acknowledgment</h2>
638
734
 
639
735
 
640
736
  <ul>
@@ -642,7 +738,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
642
738
  </ul>
643
739
 
644
740
 
645
- <h2>Details</h2>
741
+ <h2>Detail</h2>
646
742
 
647
743
 
648
744
  <h3>User manual</h3>
@@ -703,7 +799,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
703
799
  <p>This release enhances the <span class="caps">VPI</span> utility layer and adds new content to the user manual.</p>
704
800
 
705
801
 
706
- <h2>Acknowledgments</h2>
802
+ <h2>Acknowledgment</h2>
707
803
 
708
804
 
709
805
  <ul>
@@ -711,7 +807,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
711
807
  </ul>
712
808
 
713
809
 
714
- <h2>Details</h2>
810
+ <h2>Notice</h2>
715
811
 
716
812
 
717
813
  <ul>
@@ -720,17 +816,20 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
720
816
 
721
817
 
722
818
  <ul>
723
- <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>
819
+ <li>The <code>handle.value</code> and <code>handle.value=</code> methods have been removed.</li>
724
820
  </ul>
725
821
 
726
822
 
823
+ <h2>Detail</h2>
824
+
825
+
727
826
  <ul>
728
- <li>All <span class="caps">VPI</span> properties, except delay values, are now accessible from a handle.</li>
827
+ <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>
729
828
  </ul>
730
829
 
731
830
 
732
831
  <ul>
733
- <li>The <code>handle.value</code> and <code>handle.value=</code> methods have been removed.</li>
832
+ <li>All <span class="caps">VPI</span> properties, except delay values, are now accessible from a handle.</li>
734
833
  </ul>
735
834
 
736
835
 
@@ -757,7 +856,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
757
856
  <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>
758
857
 
759
858
 
760
- <h2>Acknowledgments</h2>
859
+ <h2>Acknowledgment</h2>
761
860
 
762
861
 
763
862
  <ul>
@@ -765,21 +864,24 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
765
864
  </ul>
766
865
 
767
866
 
768
- <h2>Details</h2>
867
+ <h2>Notice</h2>
769
868
 
770
869
 
771
870
  <ul>
772
- <li>A comprehensive user manual, written in DocBook-XML, has been added.</li>
871
+ <li>Rake has replaced the role of <strong>make</strong>. All makefiles have been converted accordingly.</li>
773
872
  </ul>
774
873
 
775
874
 
776
875
  <ul>
777
- <li>Rake has replaced the role of <strong>make</strong>. All makefiles have been converted accordingly.</li>
876
+ <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>
778
877
  </ul>
779
878
 
780
879
 
880
+ <h2>Detail</h2>
881
+
882
+
781
883
  <ul>
782
- <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>
884
+ <li>A comprehensive user manual, written in DocBook-XML, has been added.</li>
783
885
  </ul>
784
886
 
785
887
 
@@ -809,7 +911,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
809
911
  <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>
810
912
 
811
913
 
812
- <h2>Acknowledgments</h2>
914
+ <h2>Acknowledgment</h2>
813
915
 
814
916
 
815
917
  <ul>
@@ -817,7 +919,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
817
919
  </ul>
818
920
 
819
921
 
820
- <h2>Details</h2>
922
+ <h2>Detail</h2>
821
923
 
822
924
 
823
925
  <ul>
@@ -853,7 +955,15 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
853
955
  <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>
854
956
 
855
957
 
856
- <h2>Details</h2>
958
+ <h2>Notice</h2>
959
+
960
+
961
+ <ul>
962
+ <li>The <strong>msim</strong> Makefile target for Mentor Modelsim has been renamed back to <strong>vsim</strong>.</li>
963
+ </ul>
964
+
965
+
966
+ <h2>Detail</h2>
857
967
 
858
968
 
859
969
  <ul>
@@ -899,7 +1009,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
899
1009
  <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>
900
1010
 
901
1011
 
902
- <h2>Acknowledgments</h2>
1012
+ <h2>Acknowledgment</h2>
903
1013
 
904
1014
 
905
1015
  <ul>
@@ -907,7 +1017,15 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
907
1017
  </ul>
908
1018
 
909
1019
 
910
- <h2>Details</h2>
1020
+ <h2>Notice</h2>
1021
+
1022
+
1023
+ <ul>
1024
+ <li>The <strong>vsim</strong> Makefile target for Mentor Modelsim has been renamed to <strong>msim</strong>.</li>
1025
+ </ul>
1026
+
1027
+
1028
+ <h2>Detail</h2>
911
1029
 
912
1030
 
913
1031
  <ul>
@@ -936,10 +1054,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
936
1054
 
937
1055
 
938
1056
  <ul>
939
- <li>The makefiles for the examples have been simplified through the use of a common template.
940
- <ul>
941
- <li>The <strong>vsim</strong> target for Mentor Modelsim has been renamed to <strong>msim</strong>.</li>
942
- </ul></li>
1057
+ <li>The makefiles for the examples have been simplified through the use of a common template.</li>
943
1058
  </ul>
944
1059
 
945
1060
 
@@ -961,7 +1076,7 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
961
1076
  <p>This release fixes major bugs, adds support for Mentor Modelsim, and removes the <code>$ruby_task</code> callback.</p>
962
1077
 
963
1078
 
964
- <h2>Acknowledgments</h2>
1079
+ <h2>Acknowledgment</h2>
965
1080
 
966
1081
 
967
1082
  <ul>
@@ -969,7 +1084,15 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
969
1084
  </ul>
970
1085
 
971
1086
 
972
- <h2>Details</h2>
1087
+ <h2>Notice</h2>
1088
+
1089
+
1090
+ <ul>
1091
+ <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>
1092
+ </ul>
1093
+
1094
+
1095
+ <h2>Detail</h2>
973
1096
 
974
1097
 
975
1098
  <ul>
@@ -982,11 +1105,6 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
982
1105
  </ul>
983
1106
 
984
1107
 
985
- <ul>
986
- <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>
987
- </ul>
988
-
989
-
990
1108
  <ul>
991
1109
  <li>Added piplelined <span class="caps">ALU</span> example.</li>
992
1110
  </ul>
@@ -1016,7 +1134,7 @@ This release adds enough Verilog <span class="caps">VPI</span> functionality to
1016
1134
  </ul>
1017
1135
 
1018
1136
 
1019
- <h2>Acknowledgments</h2>
1137
+ <h2>Acknowledgment</h2>
1020
1138
 
1021
1139
 
1022
1140
  <ul>
@@ -1029,7 +1147,7 @@ This release adds enough Verilog <span class="caps">VPI</span> functionality to
1029
1147
  </ul>
1030
1148
 
1031
1149
 
1032
- <h2>Details</h2>
1150
+ <h2>Detail</h2>
1033
1151
 
1034
1152
 
1035
1153
  <ul>
@@ -1089,7 +1207,7 @@ This release adds enough Verilog <span class="caps">VPI</span> functionality to
1089
1207
  <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>
1090
1208
 
1091
1209
 
1092
- <h2>Details</h2>
1210
+ <h2>Detail</h2>
1093
1211
 
1094
1212
 
1095
1213
  <ul>
data/lib/ruby-vpi/vpi.rb CHANGED
@@ -185,10 +185,22 @@ module SWIG
185
185
  QUERY_REGEXP = %r{\?$}
186
186
  PREFIX_REGEXP = %r{^(.*?)_}
187
187
 
188
- # Enables read and write access to VPI properties of this handle.
188
+ # Enables access to (1) child handles and (2) VPI properties of this handle. In the case that a child handle has the same name as a VPI property, the child handle will be accessed instead of the VPI property. However, you can still access the VPI property via #get_value and #put_value.
189
189
  def method_missing aMsg, *aArgs, &aBlockArg
190
190
  methName = aMsg.to_s
191
191
 
192
+ # give access to a child handle if possible
193
+ if child = vpi_handle_by_name(methName, self)
194
+ # cache the child for future accesses, in order to cut down number of calls to method_missing
195
+ (class << self; self; end).class_eval do
196
+ define_method aMsg do
197
+ child
198
+ end
199
+ end
200
+
201
+ return child
202
+ end
203
+
192
204
  # determine if property is being written
193
205
  if isAssign = methName =~ ASSIGN_REGEXP
194
206
  methName.sub! ASSIGN_REGEXP, ''
data/lib/ruby-vpi.rb CHANGED
@@ -21,9 +21,16 @@
21
21
  # Provides configuration information of the Ruby-VPI project.
22
22
  module RubyVpi
23
23
  # Initializes the current bench using the given parameters.
24
- def RubyVpi.init_bench aTestPrefix, aProtoClassId
25
- require 'ruby-vpi/vpi'
26
- Vpi::relay_verilog # service the $ruby_init() callback
24
+ def RubyVpi.init_bench aTestPrefix, aDesignClassId
25
+ # set up the VPI utility layer
26
+ require 'ruby-vpi/vpi'
27
+
28
+ Object.class_eval do
29
+ include Vpi
30
+ end
31
+
32
+ # service the $ruby_init() callback
33
+ relay_verilog
27
34
 
28
35
  # set up code coverage analysis
29
36
  unless (ENV['COVERAGE'] || '').empty?
@@ -38,20 +45,24 @@ module RubyVpi
38
45
  end
39
46
 
40
47
  # load the design under test
48
+ unless design = vpi_handle_by_name("#{aTestPrefix}_bench", nil)
49
+ raise "Verilog bench for test #{aTestPrefix.inspect} is inaccessible."
50
+ end
51
+
52
+ Kernel.const_set(aDesignClassId, design)
41
53
  require "#{aTestPrefix}_design.rb"
42
54
 
55
+ # load the design's prototype
43
56
  unless (ENV['PROTOTYPE'] || '').empty?
44
57
  require "#{aTestPrefix}_proto.rb"
45
58
 
46
- proto = Kernel.const_get(aProtoClassId).new
47
-
48
59
  Vpi.class_eval do
49
60
  define_method :relay_verilog do
50
- proto.simulate!
61
+ design.simulate!
51
62
  end
52
63
  end
53
64
 
54
- puts "#{aTestPrefix}: verifying prototype instead of design"
65
+ puts "#{Config::PROJECT_NAME}: prototype has been enabled for test #{aTestPrefix.inspect}"
55
66
  end
56
67
 
57
68
  require "#{aTestPrefix}_spec.rb"