ruby-vpi 7.1.0 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. data/HEADER +101 -0
  2. data/HISTORY +57 -37
  3. data/README +1 -1
  4. data/Rakefile +21 -13
  5. data/doc/src/manual.xml +5 -5
  6. data/doc/txt/manual.txt +10 -6
  7. data/doc/xhtml/background.organization.html +1 -1
  8. data/doc/xhtml/index.html +2 -2
  9. data/doc/xhtml/usage.tutorial.html +4 -4
  10. data/header.html +114 -0
  11. data/header.part.html +114 -0
  12. data/history.html +217 -68
  13. data/history.part.html +880 -0
  14. data/lib/ruby-vpi/rcov.rb +62 -0
  15. data/lib/ruby-vpi/rspec.rb +1 -1
  16. data/lib/ruby-vpi/xx.rb +761 -0
  17. data/lib/ruby-vpi.rb +13 -2
  18. data/memo.html +116 -1
  19. data/memo.part.html +86 -0
  20. data/readme.html +116 -1
  21. data/readme.part.html +21 -0
  22. data/ref/c/annotated.html +1 -1
  23. data/ref/c/common_8h.html +1 -1
  24. data/ref/c/files.html +1 -1
  25. data/ref/c/functions.html +1 -1
  26. data/ref/c/functions_vars.html +1 -1
  27. data/ref/c/globals.html +1 -1
  28. data/ref/c/globals_0x63.html +1 -1
  29. data/ref/c/globals_0x65.html +1 -1
  30. data/ref/c/globals_0x66.html +1 -1
  31. data/ref/c/globals_0x70.html +1 -1
  32. data/ref/c/globals_0x72.html +1 -1
  33. data/ref/c/globals_0x73.html +1 -1
  34. data/ref/c/globals_0x74.html +1 -1
  35. data/ref/c/globals_0x76.html +1 -1
  36. data/ref/c/globals_0x78.html +1 -1
  37. data/ref/c/globals_defs.html +1 -1
  38. data/ref/c/globals_defs_0x65.html +1 -1
  39. data/ref/c/globals_defs_0x70.html +1 -1
  40. data/ref/c/globals_defs_0x76.html +1 -1
  41. data/ref/c/globals_defs_0x78.html +1 -1
  42. data/ref/c/globals_enum.html +1 -1
  43. data/ref/c/globals_eval.html +1 -1
  44. data/ref/c/globals_func.html +1 -1
  45. data/ref/c/globals_type.html +1 -1
  46. data/ref/c/globals_vars.html +1 -1
  47. data/ref/c/hierarchy.html +1 -1
  48. data/ref/c/index.html +1 -1
  49. data/ref/c/relay_8cin.html +1 -1
  50. data/ref/c/relay_8hin.html +1 -1
  51. data/ref/c/ruby-vpi_8c.html +1 -1
  52. data/ref/c/structrelay____RubyOptions____def.html +1 -1
  53. data/ref/c/structt__cb__data.html +1 -1
  54. data/ref/c/structt__vpi__delay.html +1 -1
  55. data/ref/c/structt__vpi__error__info.html +1 -1
  56. data/ref/c/structt__vpi__strengthval.html +1 -1
  57. data/ref/c/structt__vpi__systf__data.html +1 -1
  58. data/ref/c/structt__vpi__time.html +1 -1
  59. data/ref/c/structt__vpi__value.html +1 -1
  60. data/ref/c/structt__vpi__vecval.html +1 -1
  61. data/ref/c/structt__vpi__vlog__info.html +1 -1
  62. data/ref/c/swig_8cin.html +1 -1
  63. data/ref/c/swig_8hin.html +1 -1
  64. data/ref/c/verilog_8h.html +1 -1
  65. data/ref/c/vlog_8cin.html +1 -1
  66. data/ref/c/vlog_8hin.html +1 -1
  67. data/ref/c/vpi__user_8h.html +1 -1
  68. data/ref/ruby/classes/ERB.html +5 -5
  69. data/ref/ruby/classes/ERB.src/{M000035.html → M000011.html} +0 -0
  70. data/ref/ruby/classes/FileUtils.html +10 -10
  71. data/ref/ruby/classes/FileUtils.src/{M000048.html → M000065.html} +0 -0
  72. data/ref/ruby/classes/FileUtils.src/{M000049.html → M000066.html} +0 -0
  73. data/ref/ruby/classes/ModuleInfo.html +10 -10
  74. data/ref/ruby/classes/ModuleInfo.src/{M000019.html → M000008.html} +0 -0
  75. data/ref/ruby/classes/ModuleInfo.src/{M000020.html → M000009.html} +0 -0
  76. data/ref/ruby/classes/OutputInfo.html +5 -5
  77. data/ref/ruby/classes/OutputInfo.src/{M000018.html → M000007.html} +0 -0
  78. data/ref/ruby/classes/RDoc.html +5 -5
  79. data/ref/ruby/classes/RDoc.src/{M000051.html → M000069.html} +0 -0
  80. data/ref/ruby/classes/RubyVPI.html +45 -5
  81. data/ref/ruby/classes/RubyVPI.src/M000067.html +50 -0
  82. data/ref/ruby/classes/RubyVPI.src/M000068.html +20 -0
  83. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +35 -35
  84. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000042.html → M000059.html} +0 -0
  85. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000043.html → M000060.html} +0 -0
  86. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000044.html → M000061.html} +0 -0
  87. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000045.html → M000062.html} +1 -1
  88. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000046.html → M000063.html} +0 -0
  89. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000047.html → M000064.html} +1 -1
  90. data/ref/ruby/classes/String.html +5 -5
  91. data/ref/ruby/classes/String.src/{M000034.html → M000012.html} +0 -0
  92. data/ref/ruby/classes/{ResettedCounterValue.html → Table.html} +41 -24
  93. data/ref/ruby/classes/Table.src/M000003.html +38 -0
  94. data/ref/ruby/classes/Table.src/M000004.html +18 -0
  95. data/ref/ruby/classes/Table.src/M000005.html +18 -0
  96. data/ref/ruby/classes/{InputGenerator.src/M000029.html → Table.src/M000006.html} +5 -5
  97. data/ref/ruby/classes/Template.html +5 -5
  98. data/ref/ruby/classes/Template.src/{M000027.html → M000010.html} +0 -0
  99. data/ref/ruby/classes/XX/Document.html +295 -0
  100. data/ref/ruby/classes/XX/Document.src/M000050.html +22 -0
  101. data/ref/ruby/classes/XX/Document.src/M000051.html +20 -0
  102. data/ref/ruby/classes/XX/Document.src/M000052.html +20 -0
  103. data/ref/ruby/classes/XX/Document.src/M000053.html +20 -0
  104. data/ref/ruby/classes/XX/Document.src/M000054.html +22 -0
  105. data/ref/ruby/classes/XX/Document.src/M000055.html +21 -0
  106. data/ref/ruby/classes/XX/Document.src/M000056.html +21 -0
  107. data/ref/ruby/classes/XX/Document.src/M000057.html +34 -0
  108. data/ref/ruby/classes/XX/Document.src/M000058.html +98 -0
  109. data/ref/ruby/{files/bin/generate_test_tpl/spec_rb.html → classes/XX/HTML4/Strict.html} +26 -28
  110. data/ref/ruby/classes/XX/HTML4/Strict.src/M000016.html +20 -0
  111. data/ref/ruby/classes/{CounterProto.html → XX/HTML4/Transitional.html} +19 -45
  112. data/ref/ruby/classes/XX/HTML4/Transitional.src/M000015.html +20 -0
  113. data/ref/ruby/classes/{MaximumCounterValue.html → XX/HTML4.html} +20 -34
  114. data/ref/ruby/classes/XX/HTML4.src/M000014.html +20 -0
  115. data/ref/ruby/classes/XX/Markup/ClassMethods.html +236 -0
  116. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000022.html +22 -0
  117. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000023.html +20 -0
  118. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000024.html +25 -0
  119. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000025.html +20 -0
  120. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000026.html +27 -0
  121. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000027.html +20 -0
  122. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000028.html +27 -0
  123. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000029.html +22 -0
  124. data/ref/ruby/{files/bin/generate_test_tpl/proto_rb.html → classes/XX/Markup/Error.html} +25 -21
  125. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +474 -0
  126. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000030.html +56 -0
  127. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000031.html +33 -0
  128. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000032.html +31 -0
  129. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000033.html +48 -0
  130. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000034.html +20 -0
  131. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000035.html +31 -0
  132. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000036.html +32 -0
  133. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000037.html +32 -0
  134. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000038.html +28 -0
  135. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000039.html +23 -0
  136. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000040.html +26 -0
  137. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000041.html +20 -0
  138. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000042.html +20 -0
  139. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000043.html +20 -0
  140. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000044.html +20 -0
  141. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000045.html +20 -0
  142. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000046.html +21 -0
  143. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000047.html +20 -0
  144. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000048.html +20 -0
  145. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000049.html +20 -0
  146. data/ref/ruby/classes/{TestHw5UnitModel.html → XX/Markup.html} +29 -49
  147. data/ref/ruby/classes/XX/Markup.src/M000021.html +28 -0
  148. data/ref/ruby/{files/samp/counter/counter_rspecTest_spec_rb.html → classes/XX/XHTML/Strict.html} +46 -50
  149. data/ref/ruby/classes/XX/XHTML/Strict.src/M000020.html +20 -0
  150. data/ref/ruby/classes/XX/XHTML/Transitional.html +138 -0
  151. data/ref/ruby/classes/XX/XHTML/Transitional.src/M000019.html +20 -0
  152. data/ref/ruby/classes/XX/XHTML.html +145 -0
  153. data/ref/ruby/classes/XX/XHTML.src/M000018.html +36 -0
  154. data/ref/ruby/classes/XX/XML.html +138 -0
  155. data/ref/ruby/classes/XX/XML.src/M000013.html +20 -0
  156. data/ref/ruby/classes/XX/XMLish.html +138 -0
  157. data/ref/ruby/classes/XX/XMLish.src/M000017.html +18 -0
  158. data/ref/ruby/{files/samp/counter/counter_unitTest_spec_rb.html → classes/XX.html} +39 -36
  159. data/ref/ruby/created.rid +1 -1
  160. data/ref/ruby/files/bin/generate_test_rb.html +6 -6
  161. data/ref/ruby/files/bin/generate_test_rb.src/{M000002.html → M000001.html} +0 -0
  162. data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
  163. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  164. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  165. data/ref/ruby/files/{samp/pipelined_alu/hw5_unit_bench_rb.html → lib/ruby-vpi/rcov_rb.html} +8 -5
  166. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  167. data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +1 -1
  168. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  169. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +6 -6
  170. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/{M000001.html → M000002.html} +0 -0
  171. data/ref/ruby/files/lib/ruby-vpi/vpi_util_rb.html +1 -1
  172. data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +148 -0
  173. data/ref/ruby/files/lib/ruby-vpi_rb.html +2 -1
  174. data/ref/ruby/fr_class_index.html +15 -10
  175. data/ref/ruby/fr_file_index.html +2 -20
  176. data/ref/ruby/fr_method_index.html +69 -51
  177. data/ref/ruby/index.html +1 -1
  178. data/style.css +47 -0
  179. metadata +133 -109
  180. data/ref/ruby/classes/Counter.html +0 -258
  181. data/ref/ruby/classes/Counter.src/M000038.html +0 -20
  182. data/ref/ruby/classes/Counter.src/M000039.html +0 -22
  183. data/ref/ruby/classes/Counter.src/M000040.html +0 -20
  184. data/ref/ruby/classes/Counter.src/M000041.html +0 -22
  185. data/ref/ruby/classes/CounterProto.src/M000005.html +0 -22
  186. data/ref/ruby/classes/CounterProto.src/M000006.html +0 -22
  187. data/ref/ruby/classes/Hw5UnitModel/Operation.html +0 -216
  188. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000012.html +0 -25
  189. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000013.html +0 -33
  190. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000014.html +0 -18
  191. data/ref/ruby/classes/Hw5UnitModel.html +0 -256
  192. data/ref/ruby/classes/Hw5UnitModel.src/M000007.html +0 -24
  193. data/ref/ruby/classes/Hw5UnitModel.src/M000009.html +0 -20
  194. data/ref/ruby/classes/Hw5UnitModel.src/M000010.html +0 -38
  195. data/ref/ruby/classes/Hw5UnitModel.src/M000011.html +0 -22
  196. data/ref/ruby/classes/Hw5_unit.html +0 -196
  197. data/ref/ruby/classes/Hw5_unit.src/M000004.html +0 -27
  198. data/ref/ruby/classes/Hw5_unit_spec.html +0 -237
  199. data/ref/ruby/classes/Hw5_unit_spec.src/M000024.html +0 -21
  200. data/ref/ruby/classes/Hw5_unit_spec.src/M000025.html +0 -21
  201. data/ref/ruby/classes/Hw5_unit_spec.src/M000026.html +0 -67
  202. data/ref/ruby/classes/InputGenerator.html +0 -260
  203. data/ref/ruby/classes/InputGenerator.src/M000028.html +0 -18
  204. data/ref/ruby/classes/InputGenerator.src/M000030.html +0 -19
  205. data/ref/ruby/classes/InputGenerator.src/M000031.html +0 -38
  206. data/ref/ruby/classes/InputGenerator.src/M000032.html +0 -19
  207. data/ref/ruby/classes/InputGenerator.src/M000033.html +0 -19
  208. data/ref/ruby/classes/MaximumCounterValue.src/M000036.html +0 -23
  209. data/ref/ruby/classes/MaximumCounterValue.src/M000037.html +0 -21
  210. data/ref/ruby/classes/ResettedCounterValue.src/M000015.html +0 -19
  211. data/ref/ruby/classes/ResettedCounterValue.src/M000016.html +0 -18
  212. data/ref/ruby/classes/ResettedCounterValue.src/M000017.html +0 -23
  213. data/ref/ruby/classes/RubyVPI.src/M000050.html +0 -39
  214. data/ref/ruby/classes/TestHw5UnitModel.src/M000021.html +0 -19
  215. data/ref/ruby/classes/TestHw5UnitModel.src/M000022.html +0 -19
  216. data/ref/ruby/classes/TestHw5UnitModel.src/M000023.html +0 -64
  217. data/ref/ruby/files/bin/generate_test_tpl/bench_rb.html +0 -115
  218. data/ref/ruby/files/bin/generate_test_tpl/design_rb.html +0 -107
  219. data/ref/ruby/files/bin/generate_test_tpl/spec_rb.src/M000003.html +0 -22
  220. data/ref/ruby/files/ext/extconf_rb.html +0 -108
  221. data/ref/ruby/files/gem_extconf_rb.html +0 -114
  222. data/ref/ruby/files/samp/counter/counter_rspecTest_bench_rb.html +0 -115
  223. data/ref/ruby/files/samp/counter/counter_rspecTest_design_rb.html +0 -107
  224. data/ref/ruby/files/samp/counter/counter_rspecTest_proto_rb.html +0 -107
  225. data/ref/ruby/files/samp/counter/counter_unitTest_bench_rb.html +0 -115
  226. data/ref/ruby/files/samp/counter/counter_unitTest_design_rb.html +0 -107
  227. data/ref/ruby/files/samp/counter/counter_unitTest_proto_rb.html +0 -107
  228. data/ref/ruby/files/samp/pipelined_alu/Hw5UnitModel_rb.html +0 -101
  229. data/ref/ruby/files/samp/pipelined_alu/InputGenerator_rb.html +0 -101
  230. data/ref/ruby/files/samp/pipelined_alu/TestHw5UnitModel_rb.html +0 -111
  231. data/ref/ruby/files/samp/pipelined_alu/hw5_unit_design_rb.html +0 -107
  232. data/ref/ruby/files/samp/pipelined_alu/hw5_unit_spec_rb.html +0 -112
data/HEADER ADDED
@@ -0,0 +1,101 @@
1
+ <head>
2
+ <link rel="stylesheet" type="text/css" href="style.css" />
3
+ </head>
4
+
5
+ h1{text-align: center}. Welcome to Ruby-VPI
6
+
7
+ Ruby-VPI is a "Ruby interface":http://ruby-lang.org to "Verilog VPI":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945. It lets you create complex Verilog test benches easily and wholly in Ruby.
8
+
9
+ h2. Features
10
+
11
+ * Apply "agile techniques":http://www.martinfowler.com/articles/newMethodology.html to develop hardware.
12
+ ** Rapidly prototype and verify your designs using "BDD(behavior-driven development)":http://behaviour-driven.org/, "TDD(test-driven development)":http://www.agiledata.org/essays/tdd.html, and more.
13
+ ** Consolidate your requirements and verification efforts through executable specifications.
14
+ ** Reuse the _same_ specification to verify both prototype and design.
15
+
16
+ * Utilize Ruby's power and elegance ("Why choose Ruby?":http://www.ruby-doc.org/whyruby).
17
+ ** Built-in support for unlimited length integers, regular expressions, networking, multi-threading, system calls, _ad infinium_!
18
+ ** Easy to use; doesn't get in your way.
19
+ ** Makes programming _fun_ again!
20
+
21
+ * Study, modify, or distribute this is free software, released under the "GNU General Public License":http://www.gnu.org/copyleft/gpl.html, as you see fit.
22
+
23
+
24
+ <div class="variablelist">
25
+ <dl>
26
+
27
+ <dt>
28
+ <span class="term">
29
+ <a href="./doc/usage.tutorial.html" target="_top">Tutorial</a>
30
+ </span>
31
+ </dt>
32
+ <dd>
33
+ <p>Learn how to use Ruby-VPI quickly.</p>
34
+ </dd>
35
+
36
+ <dt>
37
+ <span class="term">
38
+ <a href="./doc/" target="_top">Manual</a>
39
+ </span>
40
+ </dt>
41
+ <dd>
42
+ <p>Complete documentation for users. Start here!</p>
43
+ </dd>
44
+
45
+ <dt>
46
+ <span class="term">
47
+ <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
48
+ Project</a>
49
+ </span>
50
+ </dt>
51
+ <dd>
52
+ <p>
53
+ Access project facilities, hosted generously by <a href="http://rubyforge.org" target="_top">
54
+ RubyForge</a>.
55
+ </p>
56
+ </dd>
57
+ <dt>
58
+ <span class="term">
59
+ <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
60
+ Tracker</a>
61
+ </span>
62
+ </dt>
63
+ <dd>
64
+ <p>
65
+ Report problems, contribute patches, and more.</p>
66
+ </dd>
67
+ <dt>
68
+ <span class="term">
69
+ <a href="http://rubyforge.org/frs/?group_id=1339" target="_top">
70
+ Releases</a>
71
+ </span>
72
+ </dt>
73
+ <dd>
74
+ <p>
75
+ Download the newest releases.</p>
76
+ </dd>
77
+ <dt>
78
+ <span class="term">
79
+ <a href="http://rubyforge.org/scm/?group_id=1339" target="_top">
80
+ Sources</a>
81
+ </span>
82
+ </dt>
83
+ <dd>
84
+ <p>
85
+ Browse or access the source code repository.</p>
86
+ </dd>
87
+ <dt>
88
+ <span class="term">
89
+ <a href="http://rubyforge.org/forum/?group_id=1339" target="_top">
90
+ Forums</a>
91
+ </span>
92
+ </dt>
93
+ <dd>
94
+ <p>
95
+ Ask for help, give feedback, or discuss.</p>
96
+ </dd>
97
+ </dl>
98
+ </div>
99
+ </div>
100
+
101
+
data/HISTORY CHANGED
@@ -5,13 +5,33 @@ This is a record of important changes that have occurred with each release of "R
5
5
  h2. Version numbering system
6
6
 
7
7
  We _strictly_ follow the RubyGems project's "rational versioning policy":http://www.rubygems.org/read/chapter/7 since release 6.3.0. To summarize[1] this "major.minor.build" numbering policy,
8
- * an increase in the *major* number indicates that *functionally incompatible* have occurred. Thus, what may have worked in the previous version may not work in the new one.
9
- * an increase in the *minor* number indicates that *functionally compatible* changes have occurred. Thus, what worked in the previous version will work in the new one.
10
- * an increase in the *build* number indicates that the *underlying implementation* has changed. The functionality has not changed and no features have been added. Thus, what worked in the previous version will work in the new one.
8
+ * an increase in the _major_ number indicates that _functionally incompatible_ have occurred. Thus, what may have worked in the previous version may not work in the new one.
9
+ * an increase in the _minor_ number indicates that _functionally compatible_ changes have occurred. Thus, what worked in the previous version will work in the new one.
10
+ * an increase in the _build_ number indicates that the _underlying implementation_ has changed. The functionality has not changed and no features have been added. Thus, what worked in the previous version will work in the new one.
11
11
 
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 7.2.0 (2006-09-15)
16
+
17
+ h2. Summary
18
+
19
+ This release adds initial[1] support for code coverage analysis via the "rcov library":http://eigenclass.org/hiki.rb?rcov.
20
+
21
+ h2. Acknowledgments
22
+
23
+ Thanks to Mauricio Fernandez for helping me use rcov without its runner.
24
+
25
+ h2. Details
26
+
27
+ * Added initial[1] support for code coverage analysis, which can be enabled by setting the @COVERAGE@ environment variable to a non-empty value before running a test.
28
+ ** For example, you can run a test with the GPL Cver simulator while enabling the generation of code coverage reports as follows: @export COVERAGE=1; rake cver@
29
+
30
+ * Coverage reports are generated in text and HTML formats.
31
+
32
+ fn1. Full capabilites of the rcov library, such as its various analysis modes, are not yet utilized.
33
+
34
+
15
35
  h1. Version 7.1.0 (2006-08-29)
16
36
 
17
37
  h2. Summary
@@ -159,16 +179,16 @@ h2. Summary
159
179
 
160
180
  This release fixes unreadable syntax coloring in the user manual.
161
181
 
182
+ h2. Acknowledgments
183
+
184
+ * Thanks to Todd Nagengast and Matt Fischler for notifying me about unreadable text in the user manual.
185
+
162
186
  h2. Details
163
187
 
164
188
  * Source code comments in the user manual are now readable.
165
189
 
166
190
  * The @README@ and @HISTORY@ files have been converted to "textile":http://www.textism.com/tools/textile/ format.
167
191
 
168
- h2. Acknowledgment
169
-
170
- * Thanks to Todd Nagengast and Matt Fischler for notifying me about unreadable text in the user manual.
171
-
172
192
 
173
193
  h1. Version 5.1.0 (2006-07-29)
174
194
 
@@ -176,6 +196,10 @@ h2. Summary
176
196
 
177
197
  This release adds a tutorial to the user manual, and improves the tools and examples.
178
198
 
199
+ h2. Acknowledgments
200
+
201
+ * Thanks to Phil Tomson for correcting the URL of the RHDL website, in the user manual.
202
+
179
203
  h2. Details
180
204
 
181
205
  h3. User manual
@@ -200,10 +224,6 @@ h3. VPI utility layer
200
224
 
201
225
  * The value of a handle's boolean VPI property is treated as @false@ if it is zero, because zero is @false@ in the C language.
202
226
 
203
- h2. Acknowledgment
204
-
205
- * Thanks to Phil Tomson for correcting the URL of the RHDL website, in the user manual.
206
-
207
227
 
208
228
  h1. Version 5.0.0 (2006-07-22)
209
229
 
@@ -211,6 +231,10 @@ h2. Summary
211
231
 
212
232
  This release enhances the VPI utility layer and adds new content to the user manual.
213
233
 
234
+ h2. Acknowledgments
235
+
236
+ * Thanks to Jan Decaluwe for correcting the description of MyHDL in the user manual.
237
+
214
238
  h2. Details
215
239
 
216
240
  * SWIG is no longer required for users because its output is included in the release package.
@@ -227,10 +251,6 @@ h2. Details
227
251
  ** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
228
252
  ** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
229
253
 
230
- h2. Acknowledgment
231
-
232
- * Thanks to Jan Decaluwe for correcting the description of MyHDL in the user manual.
233
-
234
254
 
235
255
  h1. Version 4.0.0 (2006-05-25)
236
256
 
@@ -238,6 +258,10 @@ h2. Summary
238
258
 
239
259
  This release adds a comprehensive user manual, upgrades from make to "Rake":http://rake.rubyforge.org, and improves the test generation tool.
240
260
 
261
+ h2. Acknowledgments
262
+
263
+ * Thanks to Jose Renau for solving the problem of strange delays that occurred whenever a design was reset.
264
+
241
265
  h2. Details
242
266
 
243
267
  * A comprehensive user manual, written in DocBook-XML, has been added.
@@ -253,10 +277,6 @@ h2. Details
253
277
  ** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
254
278
  ** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
255
279
 
256
- h2. Acknowledgment
257
-
258
- * Thanks to Jose Renau for solving the problem of strange delays that occurred whenever a design was reset.
259
-
260
280
 
261
281
  h1. Version 3.2.0 (2006-05-13)
262
282
 
@@ -264,6 +284,10 @@ h2. Summary
264
284
 
265
285
  This release adds a tool which generates test benches, and adds support for "Behavior Driven Development":http://behaviour-driven.org via the "RSpec":http://rspec.rubyforge.org library.
266
286
 
287
+ h2. Acknowledgments
288
+
289
+ * Thanks to Scott L Holmes for helping me "use the RSpec library without its runner":http://article.gmane.org/gmane.comp.lang.ruby.general/150087 program.
290
+
267
291
  h2. Details
268
292
 
269
293
  * A tool, which generates most of a Ruby-VPI test bench from a Verilog 2001 module declaration, has been added.
@@ -276,10 +300,6 @@ h2. Details
276
300
  ** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
277
301
  ** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
278
302
 
279
- h2. Acknowledgment
280
-
281
- * Thanks to Scott L Holmes for helping me "use the RSpec library without its runner":http://article.gmane.org/gmane.comp.lang.ruby.general/150087 program.
282
-
283
303
 
284
304
  h1. Version 3.1.0 (2006-04-28)
285
305
 
@@ -310,6 +330,10 @@ h2. Summary
310
330
 
311
331
  This release adds support for the _entire_ "IEEE Std. 1364-2005":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945 VPI interface, and updates the examples into unit tests.
312
332
 
333
+ h2. Acknowledgments
334
+
335
+ * Thanks to the "SWIG developers":http://www.swig.org/guilty.html for making this project _much_ easier! ;-)
336
+
313
337
  h2. Details
314
338
 
315
339
  * The Ruby interface to VPI is now generated by "SWIG":http://www.swig.org.
@@ -330,10 +354,6 @@ h2. Details
330
354
  ** Ruby 1.8.4 and Icarus Verilog 0.8 on i686 GNU/Linux
331
355
  ** Ruby 1.8.4 and Mentor Modelsim 6.1d on x86_64 GNU/Linux
332
356
 
333
- h2. Acknowledgment
334
-
335
- * Thanks to the "SWIG developers":http://www.swig.org/guilty.html for making this project _much_ easier! ;-)
336
-
337
357
 
338
358
  h1. Version 2.0.0 (2006-04-17)
339
359
 
@@ -341,6 +361,10 @@ h2. Summary
341
361
 
342
362
  This release fixes major bugs, adds support for Mentor Modelsim, and removes the @$ruby_task@ callback.
343
363
 
364
+ h2. Acknowledgments
365
+
366
+ * Thanks to Nobu Nakada for explaining the "cross-thread violation on rb_gc()":http://article.gmane.org/gmane.comp.lang.ruby.general/146653 error.
367
+
344
368
  h2. Details
345
369
 
346
370
  * The *cross-thread violation on rb_gc()* error has been fixed.
@@ -357,10 +381,6 @@ h2. Details
357
381
  ** Ruby 1.8.4 and Modelsim 6.1d on x86_64 GNU/Linux
358
382
  ** Ruby 1.8.4 and Synopsys VCS-MX X-2005.06-SP1 on SPARC4 SunOS 5.10
359
383
 
360
- h2. Acknowledgment
361
-
362
- * Thanks to Nobu Nakada for explaining the "cross-thread violation on rb_gc()":http://article.gmane.org/gmane.comp.lang.ruby.general/146653 error.
363
-
364
384
 
365
385
  h1. Version 1.0.0 (2006-02-26)
366
386
 
@@ -371,6 +391,12 @@ This release adds enough Verilog VPI functionality to make Ruby-VPI usable for s
371
391
  * read and change VPI handle values
372
392
  * stop, finish, restart the simulation
373
393
 
394
+ h2. Acknowledgments
395
+
396
+ * Thanks to Jose Renau for helping me debug how Synopsys VCS works with Verilog VPI. The problem was that VCS required calltf signatures to be @void (*)(void)@, whereas the Verilog standard defines a calltf signature as @PLI_INT32 (*)(PLI_BYTE8*)@.
397
+
398
+ * Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for "helping me discover":http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662 why the @SystemStackError@ was happening.
399
+
374
400
  h2. Details
375
401
 
376
402
  * Implemented some Verilog VPI functionality:
@@ -397,12 +423,6 @@ h2. Details
397
423
  ** Ruby 1.8.2 and Icarus Verilog 0.8 on i686 GNU/Linux
398
424
  ** Ruby 1.8.4, Synopsys VCS X-2005.06, and Mentor Modelsim 6.1b on i686 GNU/Linux
399
425
 
400
- h2. Acknowledgment
401
-
402
- * Thanks to Jose Renau for helping me debug how Synopsys VCS works with Verilog VPI. The problem was that VCS required calltf signatures to be @void (*)(void)@, whereas the Verilog standard defines a calltf signature as @PLI_INT32 (*)(PLI_BYTE8*)@.
403
-
404
- * Thanks to Ross Bamford, Eric Hodel, and Yukihiro Matsumoto for "helping me discover":http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/180662 why the @SystemStackError@ was happening.
405
-
406
426
 
407
427
  h1. Version 0.0.0 (1999-10-31)
408
428
 
data/README CHANGED
@@ -1,4 +1,4 @@
1
- h1. Welcome to Ruby-VPI
1
+ h1. Getting started
2
2
 
3
3
  * See the "user manual":./doc/xhtml to begin using Ruby-VPI.
4
4
 
data/Rakefile CHANGED
@@ -153,9 +153,9 @@ desc 'Generate reference for Ruby.'
153
153
  Rake::RDocTask.new 'ref/ruby' do |t|
154
154
  t.rdoc_dir = t.name
155
155
  t.title = "#{PROJECT_NAME}: #{PROJECT_SUMMARY}"
156
- t.options.concat %w(--charset utf-8 --tab-width 2 --line-numbers)
157
-
158
- t.rdoc_files.include '**/*.rb'
156
+ t.options.concat %w(--charset utf-8 --line-numbers)
157
+ t.rdoc_files.include '{bin,lib/**}/*.rb'
158
+ t.main = 'SWIG::TYPE_p_unsigned_int'
159
159
  end
160
160
 
161
161
 
@@ -181,16 +181,23 @@ end
181
181
  # distribution
182
182
  #
183
183
 
184
- distDocs = ['HISTORY', 'README', 'MEMO'].map do |src|
184
+ DIST_INFO_HEADER = 'HEADER'
185
+
186
+ distDocs = [DIST_INFO_HEADER, 'README', 'HISTORY', 'MEMO'].map do |src|
185
187
  dst = src.downcase << '.html'
188
+ dstPartial = src.downcase << '.part.html'
186
189
 
187
- file dst => src do |t|
188
- sh "redcloth < #{t.prerequisites[0]} > #{t.name}"
190
+ file dst => [DIST_INFO_HEADER, src] do
191
+ sh "redcloth #{DIST_INFO_HEADER unless src == DIST_INFO_HEADER} #{src} > #{dst}"
189
192
  end
190
193
 
191
- CLOBBER.include dst
192
- dst
193
- end
194
+ file dstPartial => src do
195
+ sh "redcloth < #{src} > #{dstPartial}"
196
+ end
197
+
198
+ CLOBBER.include dst, dstPartial
199
+ [dst, dstPartial]
200
+ end.flatten
194
201
 
195
202
  desc "Prepare distribution information."
196
203
  task :dist_info => distDocs
@@ -208,7 +215,7 @@ desc 'Publish documentation to website.'
208
215
  task :web => [:web_dist, :web_ref, :web_doc]
209
216
 
210
217
  desc "Publish distribution info."
211
- task :web_dist => distDocs do |t|
218
+ task :web_dist => ['style.css', *distDocs] do |t|
212
219
  upload_without_svn PROJECT_SSH_URL, *t.prerequisites
213
220
  end
214
221
 
@@ -256,6 +263,7 @@ task :pkg => ['HISTORY', 'gem_extconf.rb'] do |t|
256
263
 
257
264
  s.add_dependency 'rspec', '>= 0.5.4'
258
265
  s.add_dependency 'rake', '>= 0.7.0'
266
+ s.add_dependency 'rcov', '>= 0.7.0'
259
267
 
260
268
  s.requirements << "POSIX threads library"
261
269
  s.requirements << "C language compiler"
@@ -297,10 +305,10 @@ end
297
305
  #
298
306
 
299
307
  desc "Ensure that examples work with $SIMULATOR"
300
- task :test => FileList['samp/*/'] do |t|
301
- t.prerequisites.each do |s|
308
+ task :test => :build do
309
+ FileList['samp/*/'].each do |s|
302
310
  cd s do
303
- sh 'rake', ENV['SIMULATOR'] || 'ivl'
311
+ sh 'rake', ENV['SIMULATOR'] || 'cver'
304
312
  end
305
313
  end
306
314
  end
data/doc/src/manual.xml CHANGED
@@ -1014,7 +1014,7 @@
1014
1014
  <varlistentry>
1015
1015
  <term>Runner</term>
1016
1016
  <listitem>
1017
- <para>Written in Rake, this file builds and runs the test bench.</para>
1017
+ <para>Written in Rake, this file builds and runs the test.</para>
1018
1018
  </listitem>
1019
1019
  </varlistentry>
1020
1020
  <varlistentry>
@@ -1026,13 +1026,13 @@
1026
1026
  <varlistentry>
1027
1027
  <term>Design</term>
1028
1028
  <listitem>
1029
- <para>Written in Ruby, this file provides an interface to the design under test.</para>
1029
+ <para>Written in Ruby, this file provides an interface to the design being verified.</para>
1030
1030
  </listitem>
1031
1031
  </varlistentry>
1032
1032
  <varlistentry>
1033
1033
  <term>Prototype</term>
1034
1034
  <listitem>
1035
- <para>Written in Ruby, this file defines a prototype of the design under test.</para>
1035
+ <para>Written in Ruby, this file defines a prototype of the design being verified.</para>
1036
1036
  </listitem>
1037
1037
  </varlistentry>
1038
1038
  <varlistentry>
@@ -1248,7 +1248,7 @@ Parsed module: counter
1248
1248
  <title>Verify the prototype</title>
1249
1249
  <para>Now that we have implemented our prototype, we are ready to verify it against our specification by running the test. <xref linkend="fig..test-proto.rspec"/> and <xref linkend="fig..test-proto.unit-test"/> illustrate this process.</para>
1250
1250
 
1251
- <para>Here, the <varname>PROTO</varname> environment variable is set&mdash;any value is fine&mdash;before running the test in order to replace the design with the prototype in the simulation. Otherwise, our design will be verified&mdash;instead of our prototype&mdash;against our specification. Furthermore, the manner in which the <varname>PROTO</varname> environment variable is set in these figures follows the syntax of the &bash; shell. If you use a different shell, you may have to use different syntax, or a different command altogether, in order to set this variable. Finally, the Icarus &v; simulator, denoted by <replaceable>ivl</replaceable>, is used to simulate our design.</para>
1251
+ <para>Here, the <varname>PROTO</varname> environment variable is set&mdash;any value is fine&mdash;before running the test in order to replace the design with the prototype in the simulation. Otherwise, instead of our prototype, our design will be verified against our specification. Furthermore, the manner in which the <varname>PROTO</varname> environment variable is set in these figures follows the syntax of the &bash; shell. If you use a different shell, you may have to use different syntax, or a different command altogether, in order to set this variable. Finally, the Icarus &v; simulator, denoted by <replaceable>ivl</replaceable>, is used to simulate our design.</para>
1252
1252
 
1253
1253
  <figure id="fig..test-proto.rspec">
1254
1254
  <title>Running a test with specification in &rspec; format</title>
@@ -1290,7 +1290,7 @@ Finished in 0.040668 seconds.
1290
1290
  <section id="usage.tutorial.implement-design">
1291
1291
  <title>Implement the design</title>
1292
1292
 
1293
- <para>Now that we have implemented and verified our prototype, we are ready to implement our design. This is often quite simple because we translate <emphasis>existing</emphasis> code from &r; into &v;. <xref linkend="fig..counter.v_impl"/> illustrates the result of this process.</para>
1293
+ <para>Now that we have implemented and verified our prototype, we are ready to implement our design. This is often quite simple because we translate <emphasis>existing</emphasis> code from &r; (our prototype) into &v; (our design). <xref linkend="fig..counter.v_impl"/> illustrates the result of this process. Once again, note the striking similarities between the implementations of our prototype and our design.</para>
1294
1294
 
1295
1295
  <important>
1296
1296
  <title>Before we continue&hellip;</title>
data/doc/txt/manual.txt CHANGED
@@ -751,7 +751,7 @@ generation tool produces a test composed of the following parts:
751
751
 
752
752
  Runner
753
753
 
754
- Written in Rake, this file builds and runs the test bench.
754
+ Written in Rake, this file builds and runs the test.
755
755
 
756
756
  Bench
757
757
 
@@ -759,11 +759,13 @@ Bench
759
759
 
760
760
  Design
761
761
 
762
- Written in Ruby, this file provides an interface to the design under test.
762
+ Written in Ruby, this file provides an interface to the design being
763
+ verified.
763
764
 
764
765
  Prototype
765
766
 
766
- Written in Ruby, this file defines a prototype of the design under test.
767
+ Written in Ruby, this file defines a prototype of the design being
768
+ verified.
767
769
 
768
770
  Specification
769
771
 
@@ -964,7 +966,7 @@ specification in unit test format” illustrate this process.
964
966
 
965
967
  Here, the PROTO environment variable is set—any value is fine—before running
966
968
  the test in order to replace the design with the prototype in the simulation.
967
- Otherwise, our design will be verified—instead of our prototype—against our
969
+ Otherwise, instead of our prototype, our design will be verified against our
968
970
  specification. Furthermore, the manner in which the PROTO environment variable
969
971
  is set in these figures follows the syntax of the GNU BASH shell. If you use a
970
972
  different shell, you may have to use different syntax, or a different command
@@ -1005,8 +1007,10 @@ Implement the design
1005
1007
 
1006
1008
  Now that we have implemented and verified our prototype, we are ready to
1007
1009
  implement our design. This is often quite simple because we translate existing
1008
- code from Ruby into Verilog. Figure 3.9, “Implementation of a simple up-counter
1009
- with synchronous reset” illustrates the result of this process.
1010
+ code from Ruby (our prototype) into Verilog (our design). Figure 3.9,
1011
+ “Implementation of a simple up-counter with synchronous reset” illustrates the
1012
+ result of this process. Once again, note the striking similarities between the
1013
+ implementations of our prototype and our design.
1010
1014
 
1011
1015
  [Important] Before we continue…
1012
1016
  Replace the contents of the file named counter.v with the source
@@ -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="id2482973"></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="id2482977"></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>