ruby-vpi 8.1.0 → 8.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. data/HISTORY +17 -0
  2. data/bin/generate_test_tpl/bench.v +1 -1
  3. data/bin/generate_test_tpl/runner.rake +3 -1
  4. data/doc/background.organization.html +1 -1
  5. data/doc/index.html +2 -2
  6. data/doc/manual.txt +2 -2
  7. data/doc/src/manual.xml +2 -2
  8. data/doc/usage.tutorial.html +1 -1
  9. data/history.html +27 -0
  10. data/history.part.html +27 -0
  11. data/lib/ruby-vpi/runner.rb +29 -12
  12. data/ref/c/annotated.html +1 -6
  13. data/ref/c/common_8h.html +1 -1
  14. data/ref/c/files.html +1 -3
  15. data/ref/c/functions.html +24 -44
  16. data/ref/c/functions_vars.html +24 -44
  17. data/ref/c/globals.html +5 -211
  18. data/ref/c/globals_0x63.html +32 -49
  19. data/ref/c/globals_0x65.html +3 -10
  20. data/ref/c/globals_0x66.html +3 -20
  21. data/ref/c/globals_0x70.html +19 -26
  22. data/ref/c/globals_0x72.html +4 -15
  23. data/ref/c/globals_0x73.html +13 -199
  24. data/ref/c/globals_0x74.html +2 -9
  25. data/ref/c/globals_0x76.html +415 -426
  26. data/ref/c/globals_0x78.html +3 -10
  27. data/ref/c/globals_defs.html +30 -35
  28. data/ref/c/globals_defs_0x65.html +2 -7
  29. data/ref/c/globals_defs_0x70.html +3 -8
  30. data/ref/c/globals_defs_0x76.html +413 -420
  31. data/ref/c/globals_defs_0x78.html +2 -7
  32. data/ref/c/globals_enum.html +1 -1
  33. data/ref/c/globals_eval.html +1 -1
  34. data/ref/c/globals_func.html +14 -173
  35. data/ref/c/globals_type.html +26 -29
  36. data/ref/c/globals_vars.html +4 -88
  37. data/ref/c/index.html +1 -1
  38. data/ref/c/relay_8cin.html +1 -1
  39. data/ref/c/relay_8hin.html +1 -1
  40. data/ref/c/ruby-vpi_8c.html +1 -1
  41. data/ref/c/structrelay____RubyOptions____def.html +1 -1
  42. data/ref/c/structt__cb__data.html +6 -23
  43. data/ref/c/structt__vpi__delay.html +3 -20
  44. data/ref/c/structt__vpi__error__info.html +3 -71
  45. data/ref/c/structt__vpi__strengthval.html +3 -3
  46. data/ref/c/structt__vpi__systf__data.html +12 -46
  47. data/ref/c/structt__vpi__time.html +3 -3
  48. data/ref/c/structt__vpi__value.html +3 -113
  49. data/ref/c/structt__vpi__vecval.html +3 -3
  50. data/ref/c/structt__vpi__vlog__info.html +3 -54
  51. data/ref/c/swig_8cin.html +2 -2
  52. data/ref/c/swig_8hin.html +1 -1
  53. data/ref/c/verilog_8h.html +1 -1
  54. data/ref/c/vlog_8cin.html +1 -1
  55. data/ref/c/vlog_8hin.html +1 -1
  56. data/ref/c/vpi__user_8h.html +16 -16
  57. data/ref/ruby/classes/ERB.html +5 -5
  58. data/ref/ruby/classes/ERB.src/{M000032.html → M000033.html} +0 -0
  59. data/ref/ruby/classes/FileUtils.html +10 -10
  60. data/ref/ruby/classes/FileUtils.src/M000088.html +5 -5
  61. data/ref/ruby/classes/FileUtils.src/M000089.html +18 -0
  62. data/ref/ruby/classes/Integer.html +68 -68
  63. data/ref/ruby/classes/Integer.src/M000011.html +12 -5
  64. data/ref/ruby/classes/Integer.src/M000012.html +5 -5
  65. data/ref/ruby/classes/Integer.src/M000013.html +5 -5
  66. data/ref/ruby/classes/Integer.src/M000014.html +5 -5
  67. data/ref/ruby/classes/Integer.src/M000015.html +5 -5
  68. data/ref/ruby/classes/Integer.src/M000016.html +18 -0
  69. data/ref/ruby/classes/Integer.src/M000019.html +9 -9
  70. data/ref/ruby/classes/Integer.src/M000020.html +9 -12
  71. data/ref/ruby/classes/Integer.src/M000021.html +12 -18
  72. data/ref/ruby/classes/Integer.src/M000022.html +18 -12
  73. data/ref/ruby/classes/Integer.src/M000023.html +12 -17
  74. data/ref/ruby/classes/Integer.src/M000024.html +30 -0
  75. data/ref/ruby/classes/OutputInfo.html +5 -5
  76. data/ref/ruby/classes/OutputInfo.src/{M000028.html → M000029.html} +0 -0
  77. data/ref/ruby/classes/RDoc.html +5 -5
  78. data/ref/ruby/classes/RDoc.src/{M000091.html → M000092.html} +0 -0
  79. data/ref/ruby/classes/RubyVpi.html +10 -10
  80. data/ref/ruby/classes/RubyVpi.src/M000090.html +37 -7
  81. data/ref/ruby/classes/RubyVpi.src/M000091.html +20 -0
  82. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +45 -45
  83. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000080.html +5 -5
  84. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000081.html +5 -9
  85. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000082.html +9 -31
  86. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000083.html +31 -69
  87. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000084.html +69 -114
  88. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000085.html +114 -13
  89. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000086.html +13 -5
  90. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000087.html +18 -0
  91. data/ref/ruby/classes/String.html +10 -10
  92. data/ref/ruby/classes/String.src/M000031.html +28 -5
  93. data/ref/ruby/classes/String.src/M000032.html +18 -0
  94. data/ref/ruby/classes/Table.html +20 -20
  95. data/ref/ruby/classes/Table.src/M000025.html +25 -5
  96. data/ref/ruby/classes/Table.src/M000026.html +5 -5
  97. data/ref/ruby/classes/Table.src/M000027.html +5 -5
  98. data/ref/ruby/classes/Table.src/M000028.html +18 -0
  99. data/ref/ruby/classes/Template.html +5 -5
  100. data/ref/ruby/classes/Template.src/{M000029.html → M000030.html} +0 -0
  101. data/ref/ruby/classes/VerilogParser/Module/Parameter.html +5 -5
  102. data/ref/ruby/classes/VerilogParser/Module/Parameter.src/{M000009.html → M000010.html} +0 -0
  103. data/ref/ruby/classes/VerilogParser/Module/Port.html +20 -20
  104. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000006.html +8 -5
  105. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000007.html +5 -5
  106. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +5 -5
  107. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000009.html +18 -0
  108. data/ref/ruby/classes/VerilogParser/Module.html +5 -5
  109. data/ref/ruby/classes/VerilogParser/Module.src/{M000004.html → M000005.html} +0 -0
  110. data/ref/ruby/classes/VerilogParser.html +5 -5
  111. data/ref/ruby/classes/VerilogParser.src/{M000003.html → M000004.html} +0 -0
  112. data/ref/ruby/classes/XX/Document.html +45 -45
  113. data/ref/ruby/classes/XX/Document.src/M000071.html +9 -7
  114. data/ref/ruby/classes/XX/Document.src/M000072.html +7 -7
  115. data/ref/ruby/classes/XX/Document.src/M000073.html +7 -7
  116. data/ref/ruby/classes/XX/Document.src/M000074.html +7 -9
  117. data/ref/ruby/classes/XX/Document.src/M000075.html +9 -8
  118. data/ref/ruby/classes/XX/Document.src/M000076.html +8 -8
  119. data/ref/ruby/classes/XX/Document.src/M000077.html +8 -21
  120. data/ref/ruby/classes/XX/Document.src/M000078.html +21 -85
  121. data/ref/ruby/classes/XX/Document.src/M000079.html +98 -0
  122. data/ref/ruby/classes/XX/HTML4/Strict.html +5 -5
  123. data/ref/ruby/classes/XX/HTML4/Strict.src/{M000036.html → M000037.html} +0 -0
  124. data/ref/ruby/classes/XX/HTML4/Transitional.html +5 -5
  125. data/ref/ruby/classes/XX/HTML4/Transitional.src/{M000035.html → M000036.html} +0 -0
  126. data/ref/ruby/classes/XX/HTML4.html +5 -5
  127. data/ref/ruby/classes/XX/HTML4.src/{M000034.html → M000035.html} +0 -0
  128. data/ref/ruby/classes/XX/Markup/ClassMethods.html +40 -40
  129. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000043.html +9 -7
  130. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000044.html +7 -12
  131. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000045.html +12 -7
  132. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000046.html +7 -14
  133. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000047.html +14 -7
  134. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000048.html +7 -14
  135. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000049.html +14 -9
  136. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000050.html +22 -0
  137. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +100 -100
  138. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000051.html +43 -20
  139. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000052.html +20 -18
  140. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000053.html +18 -35
  141. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000054.html +35 -7
  142. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000055.html +7 -18
  143. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000056.html +18 -19
  144. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000057.html +19 -19
  145. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000058.html +19 -15
  146. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000059.html +15 -10
  147. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000060.html +10 -13
  148. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000061.html +13 -7
  149. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000062.html +7 -7
  150. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000063.html +7 -7
  151. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000064.html +7 -7
  152. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000065.html +7 -7
  153. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000066.html +7 -8
  154. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000067.html +8 -7
  155. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000068.html +7 -7
  156. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000069.html +7 -7
  157. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000070.html +20 -0
  158. data/ref/ruby/classes/XX/Markup.html +5 -5
  159. data/ref/ruby/classes/XX/Markup.src/{M000041.html → M000042.html} +0 -0
  160. data/ref/ruby/classes/XX/XHTML/Strict.html +5 -5
  161. data/ref/ruby/classes/XX/XHTML/Strict.src/{M000039.html → M000040.html} +0 -0
  162. data/ref/ruby/classes/XX/XHTML/Transitional.html +5 -5
  163. data/ref/ruby/classes/XX/XHTML/Transitional.src/{M000038.html → M000039.html} +0 -0
  164. data/ref/ruby/classes/XX/XHTML.html +5 -5
  165. data/ref/ruby/classes/XX/XHTML.src/{M000037.html → M000038.html} +0 -0
  166. data/ref/ruby/classes/XX/XML.html +5 -5
  167. data/ref/ruby/classes/XX/XML.src/{M000033.html → M000034.html} +0 -0
  168. data/ref/ruby/classes/XX/XMLish.html +5 -5
  169. data/ref/ruby/classes/XX/XMLish.src/{M000040.html → M000041.html} +0 -0
  170. data/ref/ruby/created.rid +1 -1
  171. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +29 -1
  172. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000002.html +6 -6
  173. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +26 -0
  174. data/ref/ruby/fr_method_index.html +90 -89
  175. data/samp/counter/counter_rspecTest_bench.v +3 -1
  176. data/samp/counter/counter_rspecTest_runner.rake +3 -1
  177. data/samp/counter/counter_unitTest_bench.v +2 -2
  178. data/samp/counter/counter_unitTest_runner.rake +3 -1
  179. data/samp/pipelined_alu/InputGenerator.rb +15 -40
  180. data/samp/pipelined_alu/hw5_unit_test_bench.v +2 -7
  181. data/samp/pipelined_alu/hw5_unit_test_proto.rb +8 -3
  182. data/samp/pipelined_alu/hw5_unit_test_runner.rake +3 -1
  183. data/samp/pipelined_alu/hw5_unit_test_spec.rb +4 -4
  184. metadata +30 -55
  185. data/ref/c/globals_0x62.html +0 -62
  186. data/ref/c/globals_0x67.html +0 -64
  187. data/ref/c/globals_0x69.html +0 -62
  188. data/ref/c/globals_0x6c.html +0 -64
  189. data/ref/c/globals_0x6d.html +0 -62
  190. data/ref/c/globals_0x6e.html +0 -63
  191. data/ref/c/globals_0x75.html +0 -63
  192. data/ref/c/globals_defs_0x6c.html +0 -57
  193. data/ref/c/globals_defs_0x6e.html +0 -56
  194. data/ref/c/globals_defs_0x72.html +0 -57
  195. data/ref/c/globals_defs_0x73.html +0 -164
  196. data/ref/c/globals_defs_0x75.html +0 -56
  197. data/ref/c/globals_func_0x66.html +0 -62
  198. data/ref/c/globals_func_0x67.html +0 -55
  199. data/ref/c/globals_func_0x69.html +0 -53
  200. data/ref/c/globals_func_0x70.html +0 -53
  201. data/ref/c/globals_func_0x72.html +0 -57
  202. data/ref/c/globals_func_0x73.html +0 -114
  203. data/ref/c/globals_func_0x76.html +0 -57
  204. data/ref/c/structswig__cast__info.html +0 -98
  205. data/ref/c/structswig__class.html +0 -115
  206. data/ref/c/structswig__module__info.html +0 -132
  207. data/ref/c/structswig__type__info.html +0 -132
  208. data/ref/c/swig__vpi_8h.html +0 -8739
  209. data/ref/c/swig__wrap_8cin.html +0 -11556
  210. data/ref/c/unions__vpi__value__value.html +0 -166
  211. data/ref/ruby/classes/FileUtils.src/M000087.html +0 -18
  212. data/ref/ruby/classes/Integer.src/M000010.html +0 -25
  213. data/ref/ruby/classes/Integer.src/M000018.html +0 -22
  214. data/ref/ruby/classes/RubyVpi.src/M000089.html +0 -50
  215. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000079.html +0 -18
  216. data/ref/ruby/classes/String.src/M000030.html +0 -41
  217. data/ref/ruby/classes/Table.src/M000024.html +0 -38
  218. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000005.html +0 -21
  219. data/ref/ruby/classes/XX/Document.src/M000070.html +0 -22
  220. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000042.html +0 -22
  221. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000050.html +0 -56
data/HISTORY CHANGED
@@ -12,6 +12,23 @@ We _strictly_ follow the RubyGems project's "rational versioning policy":http://
12
12
  fn1. C. Gross, "Explaining Open Source Version Numbers", [Online document], 2005 Nov 28, [cited 2006 Aug 27], Available HTTP: "http://ablog.apress.com/?p=738":http://ablog.apress.com/?p=738
13
13
 
14
14
 
15
+ h1. Version 8.2.0 (2006-10-24)
16
+
17
+ h2. Summary
18
+
19
+ This release simplifies configuration of generated tests.
20
+
21
+ h2. Notice
22
+
23
+ * Generated runners now have a @SIMULATOR_INCLUDES@ array, whose entries specify places where Verilog source files, needed by the Verilog design, reside.
24
+
25
+ h2. Details
26
+
27
+ * Generated Verilog benches now inherit all @`include@ and @`define@ directives from the Verilog design in a simpler manner.
28
+ * A generated test no longer requires its Verilog design to reside in the same directory.
29
+ * The sample tests have been updated accordingly.
30
+
31
+
15
32
  h1. Version 8.1.0 (2006-10-21)
16
33
 
17
34
  h2. Summary
@@ -10,7 +10,7 @@
10
10
  %>
11
11
  /* This is the Verilog side of the bench. */
12
12
 
13
- <%= (aParseInfo.includes + aParseInfo.constants).map {|v| v.decl}.join "\n" %>
13
+ `include "<%= aModuleInfo.name %>.v"
14
14
 
15
15
  module <%= aOutputInfo.verilogBenchName %>;
16
16
 
@@ -3,9 +3,11 @@
3
3
  # These are source files that are to be simulated.
4
4
  SIMULATOR_SOURCES = [
5
5
  '<%= aOutputInfo.verilogBenchPath %>',
6
- '<%= aModuleInfo.name %>.v',
7
6
  ]
8
7
 
8
+ # These are paths to directories which contain dependencies for the sources listed above.
9
+ SIMULATOR_INCLUDES = []
10
+
9
11
  # This specifies the "top module" that is to be simulated.
10
12
  SIMULATOR_TARGET = '<%= aOutputInfo.verilogBenchName %>'
11
13
 
@@ -7,4 +7,4 @@
7
7
  <span class="type">va_list</span> *<code class="varname">p</code> = &amp;<code class="varname">ap</code>;
8
8
  }
9
9
  </pre></li></ul></div><p>
10
- </p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="organization.vpi.util"></a><span class="acronym">VPI</span> utility layer</h4></div></div></div><p>From a user's perspective, the <span class="acronym">VPI</span> utility layer greatly enhances the ability to interact with handles. One simply invokes a handle's methods, which are carefully named in the following manner, to access its <span class="acronym">VPI</span> properties.</p><div class="table"><a id="table..handle-property-accessor-naming-format"></a><p class="title"><b>Table 2.1. Naming format for accessing a handle's <span class="acronym">VPI</span> properties</b></p><table summary="Naming format for accessing a handle's VPI properties" border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td colspan="2">optional</td><td>required</td><td colspan="2">optional</td><td>optional</td></tr></tbody></table></div><div class="variablelist"><dl><dt><span class="term">Operation</span></dt><dd><p>This parameter suggests a method that should be invoked in the context of the Property parameter.</p></dd><dt><span class="term">Property</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> property should be accessed. The first letter of this parameter's value should be lower case, and the <span class="emphasis"><em>vpi</em></span> prefix—common to all <span class="acronym">VPI</span> properties—can be omitted.</p><p>For example, the <span class="acronym">VPI</span> property <span class="emphasis"><em>vpiFullName</em></span> is considered equivalent to <span class="emphasis"><em>fullName</em></span> but not equivalent to either <span class="emphasis"><em>FullName</em></span> or <span class="emphasis"><em>full_name</em></span>.</p></dd><dt><span class="term">Accessor</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> function should be used to access the <span class="acronym">VPI</span> property. When this parameter is not specified, the <span class="acronym">VPI</span> utility layer will attempt to <span class="emphasis"><em>guess</em></span> the value of this parameter (<a href="../../ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html" target="_top">see the source code</a> of the <code class="code"><code class="constant">SWIG</code>::<code class="constant">TYPE_p_unsigned_int</code>#<code class="function">method_missing</code></code> method for details).</p><div class="table"><a id="id2488060"></a><p class="title"><b>Table 2.2. Possible accessors and their implications</b></p><table summary="Possible accessors and their implications" border="1"><colgroup></colgroup><thead><tr><th>Accessor</th><th>Kind of value accessed</th><th><span class="acronym">VPI</span> functions used to access the value</th></tr></thead><tbody><tr><td>d</td><td>delay</td><td><code class="function">vpi_get_delays</code>, <code class="function">vpi_put_delays</code></td></tr><tr><td>l</td><td>logic</td><td><code class="function">vpi_get_value</code>, <code class="function">vpi_put_value</code></td></tr><tr><td>i</td><td>integer</td><td><code class="function">vpi_get</code></td></tr><tr><td>b</td><td>boolean</td><td><code class="function">vpi_get</code></td></tr><tr><td>s</td><td>string</td><td><code class="function">vpi_get_str</code></td></tr><tr><td>h</td><td>handle</td><td><code class="function">vpi_handle</code></td></tr></tbody></table></div></dd><dt><span class="term">Addendum</span></dt><dd><p>When this parameter is a question mark (<span class="emphasis"><em>?</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be queried as a boolean value. This produces the same effect as specifying <span class="emphasis"><em>b</em></span> for the Accessor parameter.</p><p>When this parameter is an equal sign (<span class="emphasis"><em>=</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be written to.</p></dd></dl></div><div class="example"><a id="ex..handle-property-accessor-naming-format"></a><p class="title"><b>Example 2.1. Accessing a handle's <span class="acronym">VPI</span> properties</b></p><div class="informaltable"><table border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th rowspan="2">Ruby expression</th><th colspan="6">Naming format</th><th rowspan="2">Description</th></tr><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_vpiNet</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>vpiNet</td><td> </td><td> </td><td> </td><td rowspan="2">These expressions print the full name of each <code class="constant">vpiNet</code> object associated with the handle.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_net</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>net</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal_l</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td>=</td><td rowspan="4">These expressions assign the number 15 to the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code>_l = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType</code></code></td><td> </td><td> </td><td>vpiType</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the integer value of the handle's <code class="constant">vpiType</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType_i</code></code></td><td> </td><td> </td><td>vpiType</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type</code></code></td><td> </td><td> </td><td>type</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type_i</code></code></td><td> </td><td> </td><td>type</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td> </td><td rowspan="6">These expressions access the boolean value of the handle's <code class="constant">vpiProtected</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected_b</code></code></td><td> </td><td> </td><td>vpiProtected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected?</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected_b</code></code></td><td> </td><td> </td><td>protected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected?</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName</code></code></td><td> </td><td> </td><td>vpiFullName</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the string value of the handle's <code class="constant">vpiFullName</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName_s</code></code></td><td> </td><td> </td><td>vpiFullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName</code></code></td><td> </td><td> </td><td>fullName</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName_s</code></code></td><td> </td><td> </td><td>fullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent</code></code></td><td> </td><td> </td><td>vpiParent</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the handle value of the handle's <code class="constant">vpiParent</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent_h</code></code></td><td> </td><td> </td><td>vpiParent</td><td>_</td><td>h</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent</code></code></td><td> </td><td> </td><td>parent</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent_h</code></code></td><td> </td><td> </td><td>parent</td><td>_</td><td>h</td><td> </td></tr></tbody></table></div></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="background.terminology.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"><a accesskey="u" href="background.html"><img src="images/up.png" alt="Up" /></a></td><td width="40%" align="right"> <a accesskey="n" href="background.running-tests.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Terminology </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home" /></a></td><td width="40%" align="right" valign="top"> Running a test</td></tr></table></div></body></html>
10
+ </p><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="organization.vpi.util"></a><span class="acronym">VPI</span> utility layer</h4></div></div></div><p>From a user's perspective, the <span class="acronym">VPI</span> utility layer greatly enhances the ability to interact with handles. One simply invokes a handle's methods, which are carefully named in the following manner, to access its <span class="acronym">VPI</span> properties.</p><div class="table"><a id="table..handle-property-accessor-naming-format"></a><p class="title"><b>Table 2.1. Naming format for accessing a handle's <span class="acronym">VPI</span> properties</b></p><table summary="Naming format for accessing a handle's VPI properties" border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td colspan="2">optional</td><td>required</td><td colspan="2">optional</td><td>optional</td></tr></tbody></table></div><div class="variablelist"><dl><dt><span class="term">Operation</span></dt><dd><p>This parameter suggests a method that should be invoked in the context of the Property parameter.</p></dd><dt><span class="term">Property</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> property should be accessed. The first letter of this parameter's value should be lower case, and the <span class="emphasis"><em>vpi</em></span> prefix—common to all <span class="acronym">VPI</span> properties—can be omitted.</p><p>For example, the <span class="acronym">VPI</span> property <span class="emphasis"><em>vpiFullName</em></span> is considered equivalent to <span class="emphasis"><em>fullName</em></span> but not equivalent to either <span class="emphasis"><em>FullName</em></span> or <span class="emphasis"><em>full_name</em></span>.</p></dd><dt><span class="term">Accessor</span></dt><dd><p>This parameter suggests which <span class="acronym">VPI</span> function should be used to access the <span class="acronym">VPI</span> property. When this parameter is not specified, the <span class="acronym">VPI</span> utility layer will attempt to <span class="emphasis"><em>guess</em></span> the value of this parameter (<a href="../../ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html" target="_top">see the source code</a> of the <code class="code"><code class="constant">SWIG</code>::<code class="constant">TYPE_p_unsigned_int</code>#<code class="function">method_missing</code></code> method for details).</p><div class="table"><a id="id2488062"></a><p class="title"><b>Table 2.2. Possible accessors and their implications</b></p><table summary="Possible accessors and their implications" border="1"><colgroup></colgroup><thead><tr><th>Accessor</th><th>Kind of value accessed</th><th><span class="acronym">VPI</span> functions used to access the value</th></tr></thead><tbody><tr><td>d</td><td>delay</td><td><code class="function">vpi_get_delays</code>, <code class="function">vpi_put_delays</code></td></tr><tr><td>l</td><td>logic</td><td><code class="function">vpi_get_value</code>, <code class="function">vpi_put_value</code></td></tr><tr><td>i</td><td>integer</td><td><code class="function">vpi_get</code></td></tr><tr><td>b</td><td>boolean</td><td><code class="function">vpi_get</code></td></tr><tr><td>s</td><td>string</td><td><code class="function">vpi_get_str</code></td></tr><tr><td>h</td><td>handle</td><td><code class="function">vpi_handle</code></td></tr></tbody></table></div></dd><dt><span class="term">Addendum</span></dt><dd><p>When this parameter is a question mark (<span class="emphasis"><em>?</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be queried as a boolean value. This produces the same effect as specifying <span class="emphasis"><em>b</em></span> for the Accessor parameter.</p><p>When this parameter is an equal sign (<span class="emphasis"><em>=</em></span>), it suggests that the specified <span class="acronym">VPI</span> property should be written to.</p></dd></dl></div><div class="example"><a id="ex..handle-property-accessor-naming-format"></a><p class="title"><b>Example 2.1. Accessing a handle's <span class="acronym">VPI</span> properties</b></p><div class="informaltable"><table border="1"><colgroup><col /><col /><col /><col /><col /><col /></colgroup><thead><tr><th rowspan="2">Ruby expression</th><th colspan="6">Naming format</th><th rowspan="2">Description</th></tr><tr><th>Operation</th><th>_</th><th>Property</th><th>_</th><th>Accessor</th><th>Addendum</th></tr></thead><tbody><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_vpiNet</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>vpiNet</td><td> </td><td> </td><td> </td><td rowspan="2">These expressions print the full name of each <code class="constant">vpiNet</code> object associated with the handle.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">each_net</code> {|<code class="varname">net</code>| <code class="function">puts</code> <code class="varname">net</code>.<code class="function">fullName</code>}</code></td><td>each</td><td>_</td><td>net</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal_l</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td> </td><td> </td><td>=</td><td rowspan="4">These expressions assign the number 15 to the logic value of the handle's <code class="constant">vpiIntVal</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiIntVal_l</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>vpiIntVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code> = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td> </td><td> </td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">intVal</code>_l = <code class="literal">15</code></code></td><td> </td><td> </td><td>intVal</td><td>_</td><td>l</td><td>=</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType</code></code></td><td> </td><td> </td><td>vpiType</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the integer value of the handle's <code class="constant">vpiType</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiType_i</code></code></td><td> </td><td> </td><td>vpiType</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type</code></code></td><td> </td><td> </td><td>type</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">type_i</code></code></td><td> </td><td> </td><td>type</td><td>_</td><td>i</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td> </td><td rowspan="6">These expressions access the boolean value of the handle's <code class="constant">vpiProtected</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected_b</code></code></td><td> </td><td> </td><td>vpiProtected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiProtected?</code></code></td><td> </td><td> </td><td>vpiProtected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected_b</code></code></td><td> </td><td> </td><td>protected</td><td>_</td><td>b</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">protected?</code></code></td><td> </td><td> </td><td>protected</td><td> </td><td> </td><td>?</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName</code></code></td><td> </td><td> </td><td>vpiFullName</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the string value of the handle's <code class="constant">vpiFullName</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiFullName_s</code></code></td><td> </td><td> </td><td>vpiFullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName</code></code></td><td> </td><td> </td><td>fullName</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">fullName_s</code></code></td><td> </td><td> </td><td>fullName</td><td>_</td><td>s</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent</code></code></td><td> </td><td> </td><td>vpiParent</td><td> </td><td> </td><td> </td><td rowspan="4">These expressions access the handle value of the handle's <code class="constant">vpiParent</code> property.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">vpiParent_h</code></code></td><td> </td><td> </td><td>vpiParent</td><td>_</td><td>h</td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent</code></code></td><td> </td><td> </td><td>parent</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">parent_h</code></code></td><td> </td><td> </td><td>parent</td><td>_</td><td>h</td><td> </td></tr></tbody></table></div></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="background.terminology.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"><a accesskey="u" href="background.html"><img src="images/up.png" alt="Up" /></a></td><td width="40%" align="right"> <a accesskey="n" href="background.running-tests.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Terminology </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home" /></a></td><td width="40%" align="right" valign="top"> Running a test</td></tr></table></div></body></html>
data/doc/index.html CHANGED
@@ -1,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
2
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ruby-VPI user manual</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><meta name="description" content="This manual explains how to use Ruby-VPI. You can find the newest version of this manual at the Ruby-VPI website." /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Ruby-VPI</span> user manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id2472330"></a><span class="application">Ruby-VPI</span> user manual</h1></div><div><p class="copyright">Copyright © 2006 Suraj N. Kurapati</p></div><div><p class="copyright">Copyright © 2005, 2006 <a href="http://tango.freedesktop.org" target="_top">Tango Desktop Project</a> <em><span class="remark">for admonition and navigation graphics released under <a href="images/COPYING" target="_top">this license</a>.</span></em></p></div><div><p class="copyright">Copyright © 1999, 2000, 2001 Norman Walsh <em><span class="remark">for DocBook graphics released under <a href="images/copyright" target="_top">this license</a>.</span></em></p></div><div><div class="legalnotice"><a id="id2516383"></a><p>Permission is granted to copy, distribute and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "<span class="acronym">GNU</span> Free Documentation License".</p></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>This manual explains how to use <span class="application">Ruby-VPI</span>. You can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org" target="_top"><span class="application">Ruby-VPI</span> website</a>.</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.license.html">License</a></span></dt><dt><span class="section"><a href="introduction.manifest.html">Manifest</a></span></dt><dt><span class="section"><a href="introduction.resources.html">Resources</a></span></dt><dt><span class="section"><a href="introduction.related-works.html">Related works</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.related-works.html#introduction.related-works.pli">Ye olde PLI</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="background.html">2. Background</a></span></dt><dd><dl><dt><span class="section"><a href="background.methodology.html">Methodology</a></span></dt><dt><span class="section"><a href="background.terminology.html">Terminology</a></span></dt><dt><span class="section"><a href="background.organization.html">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="background.organization.html#organization.vpi">Interface to <span class="acronym">VPI</span></a></span></dt></dl></dd><dt><span class="section"><a href="background.running-tests.html">Running a test</a></span></dt><dd><dl><dt><span class="section"><a href="background.running-tests.html#background.running-tests.init">Initialization</a></span></dt><dt><span class="section"><a href="background.running-tests.html#background.running-tests.exec">Execution</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="usage.html">3. Usage</a></span></dt><dd><dl><dt><span class="section"><a href="usage.requirements.html">Requirements</a></span></dt><dt><span class="section"><a href="usage.installation.html">Installation and maintenance</a></span></dt><dt><span class="section"><a href="usage.tools.html">Tools</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tools.html#usage.tools.generate-test">Automated test generation</a></span></dt><dt><span class="section"><a href="usage.tools.html#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></span></dt></dl></dd><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt><dt><span class="section"><a href="usage.tutorial.html">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.declare-design">Start with a design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.generate-test">Generate a test</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.specification">Specify your expectations</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-proto">Implement the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-proto">Verify the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-design">Implement the design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-design">Verify the design</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="problems.html">4. Known problems</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html">Ruby</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html#problems.ruby.SystemStackError">SystemStackError</a></span></dt><dt><span class="section"><a href="problems.ruby.html#problems.ruby.TestUnit">test/unit</a></span></dt></dl></dd><dt><span class="section"><a href="problem.ivl.html">Icarus Verilog</a></span></dt><dd><dl><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_handle_by_name">vpi_handle_by_name</a></span></dt><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_reset">Vpi::reset</a></span></dt></dl></dd><dt><span class="section"><a href="problems.vsim.html">Mentor Modelsim</a></span></dt><dd><dl><dt><span class="section"><a href="problems.vsim.html#problems.vsim.ruby_run">ruby_run()</a></span></dt></dl></dd></dl></dd><dt><span class="glossary"><a href="glossary.html">Glossary</a></span></dt><dt><span class="appendix"><a href="gfdl.html">A. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="section"><a href="gfdl-0.html">PREAMBLE</a></span></dt><dt><span class="section"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt><dt><span class="section"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="section"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="section"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="gfdl-addendum.html">ADDENDUM: How to use this License for
4
- your documents</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>2.1. <a href="background.organization.html#fig..organization">Overall organization of a test</a></dt><dt>2.2. <a href="background.organization.html#fig..organization.detail">Detailed organization of a test</a></dt><dt>2.3. <a href="background.running-tests.html#fig..ruby_init">Initialization of a test</a></dt><dt>2.4. <a href="background.running-tests.html#fig..ruby_relay">Execution of a test</a></dt><dt>3.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>3.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in RSpec format</a></dt><dt>3.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in unit test format</a></dt><dt>3.4. <a href="usage.tutorial.html#fig..counter_rspecTest_spec.rb">Specification implemented in RSpec format</a></dt><dt>3.5. <a href="usage.tutorial.html#fig..counter_unitTest_spec.rb">Specification implemented in unit test format</a></dt><dt>3.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>3.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in RSpec format</a></dt><dt>3.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in unit test format</a></dt><dt>3.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>3.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in RSpec format</a></dt><dt>3.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in unit test format</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="background.organization.html#table..handle-property-accessor-naming-format">Naming format for accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>2.2. <a href="background.organization.html#id2488060">Possible accessors and their implications</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="background.organization.html#ex..handle-property-accessor-naming-format">Accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>4.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>4.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>4.3. <a href="problem.ivl.html#ex..TestFoo_fix">Fixed design with wired registers</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
3
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ruby-VPI user manual</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><meta name="description" content="This manual explains how to use Ruby-VPI. You can find the newest version of this manual at the Ruby-VPI website." /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Ruby-VPI</span> user manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id2472310"></a><span class="application">Ruby-VPI</span> user manual</h1></div><div><p class="copyright">Copyright © 2006 Suraj N. Kurapati</p></div><div><p class="copyright">Copyright © 2005, 2006 <a href="http://tango.freedesktop.org" target="_top">Tango Desktop Project</a> <em><span class="remark">for admonition and navigation graphics released under <a href="images/COPYING" target="_top">this license</a>.</span></em></p></div><div><p class="copyright">Copyright © 1999, 2000, 2001 Norman Walsh <em><span class="remark">for DocBook graphics released under <a href="images/copyright" target="_top">this license</a>.</span></em></p></div><div><div class="legalnotice"><a id="id2516382"></a><p>Permission is granted to copy, distribute and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "<span class="acronym">GNU</span> Free Documentation License".</p></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>This manual explains how to use <span class="application">Ruby-VPI</span>. You can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org" target="_top"><span class="application">Ruby-VPI</span> website</a>.</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.license.html">License</a></span></dt><dt><span class="section"><a href="introduction.manifest.html">Manifest</a></span></dt><dt><span class="section"><a href="introduction.resources.html">Resources</a></span></dt><dt><span class="section"><a href="introduction.related-works.html">Related works</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.related-works.html#introduction.related-works.pli">Ye olde PLI</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="background.html">2. Background</a></span></dt><dd><dl><dt><span class="section"><a href="background.methodology.html">Methodology</a></span></dt><dt><span class="section"><a href="background.terminology.html">Terminology</a></span></dt><dt><span class="section"><a href="background.organization.html">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="background.organization.html#organization.vpi">Interface to <span class="acronym">VPI</span></a></span></dt></dl></dd><dt><span class="section"><a href="background.running-tests.html">Running a test</a></span></dt><dd><dl><dt><span class="section"><a href="background.running-tests.html#background.running-tests.init">Initialization</a></span></dt><dt><span class="section"><a href="background.running-tests.html#background.running-tests.exec">Execution</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="usage.html">3. Usage</a></span></dt><dd><dl><dt><span class="section"><a href="usage.requirements.html">Requirements</a></span></dt><dt><span class="section"><a href="usage.installation.html">Installation and maintenance</a></span></dt><dt><span class="section"><a href="usage.tools.html">Tools</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tools.html#usage.tools.generate-test">Automated test generation</a></span></dt><dt><span class="section"><a href="usage.tools.html#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></span></dt></dl></dd><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt><dt><span class="section"><a href="usage.tutorial.html">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.declare-design">Start with a design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.generate-test">Generate a test</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.specification">Specify your expectations</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-proto">Implement the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-proto">Verify the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-design">Implement the design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-design">Verify the design</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="problems.html">4. Known problems</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html">Ruby</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html#problems.ruby.SystemStackError">SystemStackError</a></span></dt><dt><span class="section"><a href="problems.ruby.html#problems.ruby.TestUnit">test/unit</a></span></dt></dl></dd><dt><span class="section"><a href="problem.ivl.html">Icarus Verilog</a></span></dt><dd><dl><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_handle_by_name">vpi_handle_by_name</a></span></dt><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_reset">Vpi::reset</a></span></dt></dl></dd><dt><span class="section"><a href="problems.vsim.html">Mentor Modelsim</a></span></dt><dd><dl><dt><span class="section"><a href="problems.vsim.html#problems.vsim.ruby_run">ruby_run()</a></span></dt></dl></dd></dl></dd><dt><span class="glossary"><a href="glossary.html">Glossary</a></span></dt><dt><span class="appendix"><a href="gfdl.html">A. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="section"><a href="gfdl-0.html">PREAMBLE</a></span></dt><dt><span class="section"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt><dt><span class="section"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="section"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="section"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="gfdl-addendum.html">ADDENDUM: How to use this License for
4
+ your documents</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>2.1. <a href="background.organization.html#fig..organization">Overall organization of a test</a></dt><dt>2.2. <a href="background.organization.html#fig..organization.detail">Detailed organization of a test</a></dt><dt>2.3. <a href="background.running-tests.html#fig..ruby_init">Initialization of a test</a></dt><dt>2.4. <a href="background.running-tests.html#fig..ruby_relay">Execution of a test</a></dt><dt>3.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>3.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in RSpec format</a></dt><dt>3.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in unit test format</a></dt><dt>3.4. <a href="usage.tutorial.html#fig..counter_rspecTest_spec.rb">Specification implemented in RSpec format</a></dt><dt>3.5. <a href="usage.tutorial.html#fig..counter_unitTest_spec.rb">Specification implemented in unit test format</a></dt><dt>3.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>3.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in RSpec format</a></dt><dt>3.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in unit test format</a></dt><dt>3.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>3.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in RSpec format</a></dt><dt>3.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in unit test format</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="background.organization.html#table..handle-property-accessor-naming-format">Naming format for accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>2.2. <a href="background.organization.html#id2488062">Possible accessors and their implications</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="background.organization.html#ex..handle-property-accessor-naming-format">Accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>4.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>4.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>4.3. <a href="problem.ivl.html#ex..TestFoo_fix">Fixed design with wired registers</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
data/doc/manual.txt CHANGED
@@ -685,9 +685,9 @@ Procedure 3.1. Typical way of using Ruby-VPI
685
685
  3. Identify your expectations for the design and implement them in the
686
686
  specification.
687
687
 
688
- 4. Implement the prototype of the design in Ruby.
688
+ 4. (Optional) Implement the prototype of the design in Ruby.
689
689
 
690
- 5. Verify the prototype against the specification.
690
+ 5. (Optional) Verify the prototype against the specification.
691
691
 
692
692
  6. Implement the design in Verilog once the prototype has been verified.
693
693
 
data/doc/src/manual.xml CHANGED
@@ -944,11 +944,11 @@
944
944
  </step>
945
945
 
946
946
  <step>
947
- <para><link linkend="usage.tutorial.implement-proto">Implement the prototype</link> of the design in &r;.</para>
947
+ <para>(Optional) <link linkend="usage.tutorial.implement-proto">Implement the prototype</link> of the design in &r;.</para>
948
948
  </step>
949
949
 
950
950
  <step>
951
- <para><link linkend="usage.tutorial.test-proto">Verify the prototype</link> against the specification.</para>
951
+ <para>(Optional) <link linkend="usage.tutorial.test-proto">Verify the prototype</link> against the specification.</para>
952
952
  </step>
953
953
 
954
954
  <step>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
2
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tutorial</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="usage.html" title="Chapter 3. Usage" /><link rel="prev" href="usage.examples.html" title="Examples" /><link rel="next" href="problems.html" title="Chapter 4. Known problems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tutorial</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 3. Usage</th><td width="20%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="usage.tutorial"></a>Tutorial</h2></div></div></div><div class="procedure"><a id="id2528134"></a><p class="title"><b>Procedure 3.1. Typical way of using <span class="application">Ruby-VPI</span></b></p><ol type="1"><li><p><a href="usage.tutorial.html#usage.tutorial.declare-design" title="Start with a design">Declare the design</a>, which is a Verilog module, using Verilog 2001 syntax.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.generate-test" title="Generate a test">Generate a test</a> for the design using the <a href="usage.tools.html#usage.tools.generate-test" title="Automated test generation">automated test generator</a> tool.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.specification" title="Specify your expectations">Identify your expectations</a> for the design and implement them in the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-proto" title="Implement the prototype">Implement the prototype</a> of the design in Ruby.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-proto" title="Verify the prototype">Verify the prototype</a> against the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-design" title="Implement the design">Implement the design</a> in Verilog once the prototype has been verified.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-design" title="Verify the design">Verify the design</a> against the specification.</p></li></ol></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.declare-design"></a>Start with a design</h3></div></div></div><p>First, we need a <a href="glossary.html#term..design">Design</a> to verify. In this tutorial, <a href="usage.tutorial.html#fig..counter.v_decl" title="Figure 3.1. Declaration of a simple up-counter with synchronous reset">Figure 3.1, “Declaration of a simple up-counter with synchronous reset”</a> will serve as our design. Its interface is composed of the following parts:
3
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tutorial</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="usage.html" title="Chapter 3. Usage" /><link rel="prev" href="usage.examples.html" title="Examples" /><link rel="next" href="problems.html" title="Chapter 4. Known problems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tutorial</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 3. Usage</th><td width="20%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="usage.tutorial"></a>Tutorial</h2></div></div></div><div class="procedure"><a id="id2528133"></a><p class="title"><b>Procedure 3.1. Typical way of using <span class="application">Ruby-VPI</span></b></p><ol type="1"><li><p><a href="usage.tutorial.html#usage.tutorial.declare-design" title="Start with a design">Declare the design</a>, which is a Verilog module, using Verilog 2001 syntax.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.generate-test" title="Generate a test">Generate a test</a> for the design using the <a href="usage.tools.html#usage.tools.generate-test" title="Automated test generation">automated test generator</a> tool.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.specification" title="Specify your expectations">Identify your expectations</a> for the design and implement them in the specification.</p></li><li><p>(Optional) <a href="usage.tutorial.html#usage.tutorial.implement-proto" title="Implement the prototype">Implement the prototype</a> of the design in Ruby.</p></li><li><p>(Optional) <a href="usage.tutorial.html#usage.tutorial.test-proto" title="Verify the prototype">Verify the prototype</a> against the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-design" title="Implement the design">Implement the design</a> in Verilog once the prototype has been verified.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-design" title="Verify the design">Verify the design</a> against the specification.</p></li></ol></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.declare-design"></a>Start with a design</h3></div></div></div><p>First, we need a <a href="glossary.html#term..design">Design</a> to verify. In this tutorial, <a href="usage.tutorial.html#fig..counter.v_decl" title="Figure 3.1. Declaration of a simple up-counter with synchronous reset">Figure 3.1, “Declaration of a simple up-counter with synchronous reset”</a> will serve as our design. Its interface is composed of the following parts:
4
4
  </p><div class="variablelist"><dl><dt><span class="term"><code class="constant">Size</code></span></dt><dd><p>This parameter defines the number of bits used to represent the counter's value.</p></dd><dt><span class="term"><code class="varname">clock</code></span></dt><dd><p>Each positive edge of this signal causes the <code class="varname">count</code> register to increment.</p></dd><dt><span class="term"><code class="varname">reset</code></span></dt><dd><p>Assertion of this signal causes the <code class="varname">count</code> register to become zero.</p></dd><dt><span class="term"><code class="varname">count</code></span></dt><dd><p>This register contains the counter's value.</p></dd></dl></div><p>
5
5
  </p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important: Before we continue…"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png" /></td><th align="left">Before we continue…</th></tr><tr><td align="left" valign="top"><p>Save the source code shown in <a href="usage.tutorial.html#fig..counter.v_decl" title="Figure 3.1. Declaration of a simple up-counter with synchronous reset">Figure 3.1, “Declaration of a simple up-counter with synchronous reset”</a> into a file named <code class="filename">counter.v</code>.</p></td></tr></table></div><div class="figure"><a id="fig..counter.v_decl"></a><p class="title"><b>Figure 3.1. Declaration of a simple up-counter with synchronous reset</b></p><pre class="programlisting">
6
6
  <span class="token">module</span> counter #(<span class="token">parameter</span> <code class="constant">Size</code> = <code class="literal">5</code>) (
data/history.html CHANGED
@@ -144,6 +144,33 @@ We <em>strictly</em> follow the RubyGems project&#8217;s <a href="http://www.rub
144
144
  <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>
145
145
 
146
146
 
147
+ <h1>Version 8.2.0 (2006-10-24)</h1>
148
+
149
+
150
+ <h2>Summary</h2>
151
+
152
+
153
+ <p>This release simplifies configuration of generated tests.</p>
154
+
155
+
156
+ <h2>Notice</h2>
157
+
158
+
159
+ <ul>
160
+ <li>Generated runners now have a <code>SIMULATOR_INCLUDES</code> array, whose entries specify places where Verilog source files, needed by the Verilog design, reside.</li>
161
+ </ul>
162
+
163
+
164
+ <h2>Details</h2>
165
+
166
+
167
+ <ul>
168
+ <li>Generated Verilog benches now inherit all <code>`include</code> and <code>`define</code> directives from the Verilog design in a simpler manner.</li>
169
+ <li>A generated test no longer requires its Verilog design to reside in the same directory.</li>
170
+ <li>The sample tests have been updated accordingly.</li>
171
+ </ul>
172
+
173
+
147
174
  <h1>Version 8.1.0 (2006-10-21)</h1>
148
175
 
149
176
 
data/history.part.html CHANGED
@@ -18,6 +18,33 @@ 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 8.2.0 (2006-10-24)</h1>
22
+
23
+
24
+ <h2>Summary</h2>
25
+
26
+
27
+ <p>This release simplifies configuration of generated tests.</p>
28
+
29
+
30
+ <h2>Notice</h2>
31
+
32
+
33
+ <ul>
34
+ <li>Generated runners now have a <code>SIMULATOR_INCLUDES</code> array, whose entries specify places where Verilog source files, needed by the Verilog design, reside.</li>
35
+ </ul>
36
+
37
+
38
+ <h2>Details</h2>
39
+
40
+
41
+ <ul>
42
+ <li>Generated Verilog benches now inherit all <code>`include</code> and <code>`define</code> directives from the Verilog design in a simpler manner.</li>
43
+ <li>A generated test no longer requires its Verilog design to reside in the same directory.</li>
44
+ <li>The sample tests have been updated accordingly.</li>
45
+ </ul>
46
+
47
+
21
48
  <h1>Version 8.1.0 (2006-10-21)</h1>
22
49
 
23
50
 
@@ -29,16 +29,20 @@
29
29
  =end
30
30
 
31
31
  # check for required variables
32
- raise ArgumentError, "Required variables are undefined." unless
32
+ raise ArgumentError, "All required variables must be defined." unless
33
33
  defined?(SIMULATOR_SOURCES) &&
34
34
  defined?(SIMULATOR_TARGET) &&
35
35
  defined?(SIMULATOR_ARGS)
36
36
 
37
+ SIMULATOR_INCLUDES = [] unless defined? SIMULATOR_INCLUDES
38
+
37
39
 
38
40
  require 'rake/clean'
39
41
  require 'ruby-vpi/rake'
40
42
 
41
43
  OBJECT_PATH = File.join(File.dirname(__FILE__), '..', '..', 'obj')
44
+ VCS_TAB_FILE = File.join(File.dirname(__FILE__), 'synopsys_vcs.tab')
45
+
42
46
 
43
47
  # Returns the path to the Ruby-VPI object file for the given simulator.
44
48
  def object_file_path aSimId, aShared = false
@@ -47,6 +51,19 @@ def object_file_path aSimId, aShared = false
47
51
  path
48
52
  end
49
53
 
54
+ # Returns an array of include-directory options.
55
+ def expand_include_dir_options aSimId, aIncludes = SIMULATOR_INCLUDES
56
+ prefix = case aSimId
57
+ when :ivl
58
+ '-I'
59
+
60
+ else
61
+ '+incdir+'
62
+ end
63
+
64
+ aIncludes.map {|i| prefix + i}
65
+ end
66
+
50
67
 
51
68
  desc "Show a list of available tasks."
52
69
  task :default do
@@ -56,17 +73,17 @@ end
56
73
 
57
74
 
58
75
  desc "Simulate with GPL Cver."
59
- task :cver => SIMULATOR_SOURCES do |t|
60
- sh 'cver', SIMULATOR_ARGS[t.name.to_sym], "+loadvpi=#{object_file_path(t.name.to_sym, true)}:vlog_startup_routines_bootstrap", SIMULATOR_SOURCES
76
+ task :cver do
77
+ sh 'cver', SIMULATOR_ARGS[:cver], "+loadvpi=#{object_file_path(:cver, true)}:vlog_startup_routines_bootstrap", expand_include_dir_options(:cver), SIMULATOR_SOURCES
61
78
  end
62
79
 
63
80
  CLOBBER.include 'verilog.log'
64
81
 
65
82
 
66
83
  desc "Simulate with Icarus Verilog."
67
- task :ivl => SIMULATOR_SOURCES do |t|
68
- cp object_file_path(t.name.to_sym, true), 'ruby-vpi.vpi'
69
- sh 'iverilog', SIMULATOR_ARGS[t.name.to_sym], %w(-y. -mruby-vpi), SIMULATOR_SOURCES
84
+ task :ivl do
85
+ cp object_file_path(:ivl, true), 'ruby-vpi.vpi'
86
+ sh 'iverilog', SIMULATOR_ARGS[:ivl], %w(-y. -mruby-vpi), expand_include_dir_options(:ivl), SIMULATOR_SOURCES
70
87
  sh 'vvp -M. a.out'
71
88
  end
72
89
 
@@ -74,20 +91,20 @@ CLEAN.include 'ruby-vpi.vpi', 'a.out'
74
91
 
75
92
 
76
93
  desc "Simulate with Synopsys VCS."
77
- task :vcs => collect_args(File.join(File.dirname(__FILE__), 'synopsys_vcs.tab'), SIMULATOR_SOURCES) do |t|
94
+ task :vcs => VCS_TAB_FILE do
78
95
  require 'rbconfig'
79
96
 
80
- sh 'vcs', SIMULATOR_ARGS[t.name.to_sym], %w(-R +v2k +vpi -LDFLAGS), File.expand_path(object_file_path(t.name.to_sym)), "-L#{Config::CONFIG['libdir']}", Config::CONFIG['LIBRUBYARG'], %w(-lpthread -P), t.prerequisites[1], SIMULATOR_SOURCES
97
+ sh 'vcs', SIMULATOR_ARGS[:vcs], %w(-R +v2k +vpi -LDFLAGS), File.expand_path(object_file_path(:vcs)), "-L#{Config::CONFIG['libdir']}", Config::CONFIG['LIBRUBYARG'], '-lpthread', '-P', VCS_TAB_FILE, expand_include_dir_options(:vcs), SIMULATOR_SOURCES
81
98
  end
82
99
 
83
100
  CLEAN.include 'csrc', 'simv*'
84
101
 
85
102
 
86
103
  desc "Simulate with Mentor Modelsim."
87
- task :vsim => SIMULATOR_SOURCES do |t|
88
- sh "vlib work"
89
- sh 'vlog', SIMULATOR_ARGS[t.name.to_sym], SIMULATOR_SOURCES
90
- sh 'vsim', '-c', SIMULATOR_TARGET, '-pli', object_file_path(t.name.to_sym, true), '-do', 'run -all'
104
+ task :vsim do
105
+ sh 'vlib work'
106
+ sh 'vlog', SIMULATOR_ARGS[:vsim], expand_include_dir_options(:vsim), SIMULATOR_SOURCES
107
+ sh 'vsim', '-c', SIMULATOR_TARGET, '-pli', object_file_path(:vsim, true), '-do', 'run -all'
91
108
  end
92
109
 
93
110
  CLEAN.include 'work'
data/ref/c/annotated.html CHANGED
@@ -18,11 +18,6 @@
18
18
  </ul></div>
19
19
  <h1>Ruby-VPI Data Structures</h1>Here are the data structures with brief descriptions:<table>
20
20
  <tr><td class="indexkey"><a class="el" href="structrelay____RubyOptions____def.html">relay__RubyOptions__def</a></td><td class="indexvalue"></td></tr>
21
- <tr><td class="indexkey"><a class="el" href="unions__vpi__value__value.html">s_vpi_value_value</a></td><td class="indexvalue"></td></tr>
22
- <tr><td class="indexkey"><a class="el" href="structswig__cast__info.html">swig_cast_info</a></td><td class="indexvalue"></td></tr>
23
- <tr><td class="indexkey"><a class="el" href="structswig__class.html">swig_class</a></td><td class="indexvalue"></td></tr>
24
- <tr><td class="indexkey"><a class="el" href="structswig__module__info.html">swig_module_info</a></td><td class="indexvalue"></td></tr>
25
- <tr><td class="indexkey"><a class="el" href="structswig__type__info.html">swig_type_info</a></td><td class="indexvalue"></td></tr>
26
21
  <tr><td class="indexkey"><a class="el" href="structt__cb__data.html">t_cb_data</a></td><td class="indexvalue"></td></tr>
27
22
  <tr><td class="indexkey"><a class="el" href="structt__vpi__delay.html">t_vpi_delay</a></td><td class="indexvalue"></td></tr>
28
23
  <tr><td class="indexkey"><a class="el" href="structt__vpi__error__info.html">t_vpi_error_info</a></td><td class="indexvalue"></td></tr>
@@ -33,7 +28,7 @@
33
28
  <tr><td class="indexkey"><a class="el" href="structt__vpi__vecval.html">t_vpi_vecval</a></td><td class="indexvalue"></td></tr>
34
29
  <tr><td class="indexkey"><a class="el" href="structt__vpi__vlog__info.html">t_vpi_vlog_info</a></td><td class="indexvalue"></td></tr>
35
30
  </table>
36
- <hr size="1"><address style="align: right;"><small>Generated on Sat Oct 21 14:39:54 2006 for Ruby-VPI by&nbsp;
31
+ <hr size="1"><address style="align: right;"><small>Generated on Tue Oct 24 12:19:09 2006 for Ruby-VPI by&nbsp;
37
32
  <a href="http://www.doxygen.org/index.html">
38
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
39
34
  </body>
data/ref/c/common_8h.html CHANGED
@@ -139,7 +139,7 @@ Pass aroung this value instead of zero and non-zero integers. <dl compact><dt><b
139
139
 
140
140
  </div>
141
141
  </div><p>
142
- <hr size="1"><address style="align: right;"><small>Generated on Sat Oct 21 14:39:54 2006 for Ruby-VPI by&nbsp;
142
+ <hr size="1"><address style="align: right;"><small>Generated on Tue Oct 24 12:19:09 2006 for Ruby-VPI by&nbsp;
143
143
  <a href="http://www.doxygen.org/index.html">
144
144
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
145
145
  </body>
data/ref/c/files.html CHANGED
@@ -23,14 +23,12 @@
23
23
  <tr><td class="indexkey"><a class="el" href="ruby-vpi_8c.html">ruby-vpi.c</a></td><td class="indexvalue">The Ruby-VPI extension, in a nutshell </td></tr>
24
24
  <tr><td class="indexkey"><a class="el" href="swig_8cin.html">swig.cin</a></td><td class="indexvalue"></td></tr>
25
25
  <tr><td class="indexkey"><a class="el" href="swig_8hin.html">swig.hin</a></td><td class="indexvalue">C interface to the SWIG-generated VPI interface </td></tr>
26
- <tr><td class="indexkey"><a class="el" href="swig__vpi_8h.html">swig_vpi.h</a></td><td class="indexvalue"></td></tr>
27
- <tr><td class="indexkey"><a class="el" href="swig__wrap_8cin.html">swig_wrap.cin</a></td><td class="indexvalue"></td></tr>
28
26
  <tr><td class="indexkey"><a class="el" href="verilog_8h.html">verilog.h</a></td><td class="indexvalue">A proxy for all Verilog headers of interest to us </td></tr>
29
27
  <tr><td class="indexkey"><a class="el" href="vlog_8cin.html">vlog.cin</a></td><td class="indexvalue"></td></tr>
30
28
  <tr><td class="indexkey"><a class="el" href="vlog_8hin.html">vlog.hin</a></td><td class="indexvalue">Interface between C and Verilog code </td></tr>
31
29
  <tr><td class="indexkey"><a class="el" href="vpi__user_8h.html">vpi_user.h</a></td><td class="indexvalue"></td></tr>
32
30
  </table>
33
- <hr size="1"><address style="align: right;"><small>Generated on Sat Oct 21 14:39:54 2006 for Ruby-VPI by&nbsp;
31
+ <hr size="1"><address style="align: right;"><small>Generated on Tue Oct 24 12:19:10 2006 for Ruby-VPI by&nbsp;
34
32
  <a href="http://www.doxygen.org/index.html">
35
33
  <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
36
34
  </body>