ruby-vpi 11.0.0 → 11.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (260) hide show
  1. data/HEADER +15 -14
  2. data/HISTORY +36 -1
  3. data/MEMO +17 -14
  4. data/README +2 -19
  5. data/Rakefile +1 -2
  6. data/bin/generate_test.rb +4 -4
  7. data/bin/generate_test_tpl/bench.rb +1 -0
  8. data/bin/generate_test_tpl/bench.v +1 -1
  9. data/bin/header_to_ruby.rb +2 -2
  10. data/doc/background.organization.html +1 -1
  11. data/doc/hacking.html +3 -0
  12. data/doc/hacking.release-packages.html +7 -0
  13. data/doc/index.html +2 -2
  14. data/doc/manual.txt +69 -13
  15. data/doc/problem.ivl.html +3 -3
  16. data/doc/problems.html +1 -1
  17. data/doc/problems.ruby.html +1 -1
  18. data/doc/problems.vsim.html +1 -1
  19. data/doc/setup.installation.html +1 -1
  20. data/doc/src/manual.xml +130 -20
  21. data/doc/usage.examples.html +1 -1
  22. data/doc/usage.tutorial.html +1 -1
  23. data/header.html +15 -14
  24. data/header.part.html +15 -14
  25. data/history.html +88 -15
  26. data/history.part.html +73 -1
  27. data/lib/ruby-vpi.rb +5 -5
  28. data/lib/ruby-vpi/verilog_parser.rb +1 -1
  29. data/lib/ruby-vpi/vpi.rb +184 -169
  30. data/memo.html +44 -38
  31. data/memo.part.html +29 -24
  32. data/readme.html +17 -47
  33. data/readme.part.html +2 -33
  34. data/ref/c/annotated.html +40 -0
  35. data/ref/c/common_8h.html +146 -0
  36. data/ref/c/doxygen.css +358 -0
  37. data/ref/c/doxygen.png +0 -0
  38. data/ref/c/files.html +36 -0
  39. data/ref/c/functions.html +154 -0
  40. data/ref/c/functions_vars.html +154 -0
  41. data/ref/c/globals.html +261 -0
  42. data/ref/c/globals_0x62.html +62 -0
  43. data/ref/c/globals_0x63.html +103 -0
  44. data/ref/c/globals_0x65.html +62 -0
  45. data/ref/c/globals_0x66.html +72 -0
  46. data/ref/c/globals_0x67.html +64 -0
  47. data/ref/c/globals_0x69.html +62 -0
  48. data/ref/c/globals_0x6c.html +64 -0
  49. data/ref/c/globals_0x6d.html +62 -0
  50. data/ref/c/globals_0x6e.html +63 -0
  51. data/ref/c/globals_0x70.html +78 -0
  52. data/ref/c/globals_0x72.html +73 -0
  53. data/ref/c/globals_0x73.html +251 -0
  54. data/ref/c/globals_0x74.html +62 -0
  55. data/ref/c/globals_0x75.html +63 -0
  56. data/ref/c/globals_0x76.html +483 -0
  57. data/ref/c/globals_0x78.html +62 -0
  58. data/ref/c/globals_defs.html +86 -0
  59. data/ref/c/globals_defs_0x65.html +55 -0
  60. data/ref/c/globals_defs_0x6c.html +57 -0
  61. data/ref/c/globals_defs_0x6e.html +56 -0
  62. data/ref/c/globals_defs_0x70.html +56 -0
  63. data/ref/c/globals_defs_0x72.html +57 -0
  64. data/ref/c/globals_defs_0x73.html +164 -0
  65. data/ref/c/globals_defs_0x75.html +56 -0
  66. data/ref/c/globals_defs_0x76.html +470 -0
  67. data/ref/c/globals_defs_0x78.html +55 -0
  68. data/ref/c/globals_enum.html +39 -0
  69. data/ref/c/globals_eval.html +40 -0
  70. data/ref/c/globals_func.html +208 -0
  71. data/ref/c/globals_func_0x66.html +62 -0
  72. data/ref/c/globals_func_0x67.html +55 -0
  73. data/ref/c/globals_func_0x69.html +53 -0
  74. data/ref/c/globals_func_0x70.html +53 -0
  75. data/ref/c/globals_func_0x72.html +57 -0
  76. data/ref/c/globals_func_0x73.html +114 -0
  77. data/ref/c/globals_func_0x76.html +57 -0
  78. data/ref/c/globals_type.html +66 -0
  79. data/ref/c/globals_vars.html +126 -0
  80. data/ref/c/index.html +20 -0
  81. data/ref/c/relay_8c.html +214 -0
  82. data/ref/c/relay_8h.html +129 -0
  83. data/ref/c/structrelay____RubyOptions____def.html +67 -0
  84. data/ref/c/structswig__cast__info.html +98 -0
  85. data/ref/c/structswig__class.html +115 -0
  86. data/ref/c/structswig__module__info.html +132 -0
  87. data/ref/c/structswig__type__info.html +132 -0
  88. data/ref/c/structt__cb__data.html +168 -0
  89. data/ref/c/structt__vpi__delay.html +151 -0
  90. data/ref/c/structt__vpi__error__info.html +219 -0
  91. data/ref/c/structt__vpi__strengthval.html +83 -0
  92. data/ref/c/structt__vpi__systf__data.html +185 -0
  93. data/ref/c/structt__vpi__time.html +100 -0
  94. data/ref/c/structt__vpi__value.html +314 -0
  95. data/ref/c/structt__vpi__vecval.html +66 -0
  96. data/ref/c/structt__vpi__vlog__info.html +151 -0
  97. data/ref/c/swig_8c.html +80 -0
  98. data/ref/c/swig_8h.html +83 -0
  99. data/ref/c/swig__vpi_8h.html +8739 -0
  100. data/ref/c/swig__wrap_8cin.html +11556 -0
  101. data/ref/c/tab_b.gif +0 -0
  102. data/ref/c/tab_l.gif +0 -0
  103. data/ref/c/tab_r.gif +0 -0
  104. data/ref/c/tabs.css +102 -0
  105. data/ref/c/unions__vpi__value__value.html +166 -0
  106. data/ref/c/verilog_8h.html +117 -0
  107. data/ref/c/vlog_8c.html +168 -0
  108. data/ref/c/vlog_8h.html +128 -0
  109. data/ref/c/vpi__user_8h.html +8739 -0
  110. data/ref/ruby/classes/ERB.html +158 -0
  111. data/ref/ruby/classes/ERB.src/M000034.html +29 -0
  112. data/ref/ruby/classes/FileUtils.html +165 -0
  113. data/ref/ruby/classes/FileUtils.src/M000081.html +18 -0
  114. data/ref/ruby/classes/FileUtils.src/M000082.html +18 -0
  115. data/ref/ruby/classes/Integer.html +398 -0
  116. data/ref/ruby/classes/Integer.src/M000012.html +25 -0
  117. data/ref/ruby/classes/Integer.src/M000013.html +18 -0
  118. data/ref/ruby/classes/Integer.src/M000014.html +18 -0
  119. data/ref/ruby/classes/Integer.src/M000015.html +18 -0
  120. data/ref/ruby/classes/Integer.src/M000016.html +18 -0
  121. data/ref/ruby/classes/Integer.src/M000017.html +18 -0
  122. data/ref/ruby/classes/Integer.src/M000020.html +22 -0
  123. data/ref/ruby/classes/Integer.src/M000021.html +22 -0
  124. data/ref/ruby/classes/Integer.src/M000022.html +25 -0
  125. data/ref/ruby/classes/Integer.src/M000023.html +31 -0
  126. data/ref/ruby/classes/Integer.src/M000024.html +25 -0
  127. data/ref/ruby/classes/Integer.src/M000025.html +30 -0
  128. data/ref/ruby/classes/OutputInfo.html +294 -0
  129. data/ref/ruby/classes/OutputInfo.src/M000030.html +50 -0
  130. data/ref/ruby/classes/RDoc.html +135 -0
  131. data/ref/ruby/classes/RDoc.src/M000095.html +40 -0
  132. data/ref/ruby/classes/RubyVpi.html +206 -0
  133. data/ref/ruby/classes/RubyVpi.src/M000083.html +78 -0
  134. data/ref/ruby/classes/RubyVpi.src/M000084.html +20 -0
  135. data/ref/ruby/classes/RubyVpi/Config.html +159 -0
  136. data/ref/ruby/classes/String.html +159 -0
  137. data/ref/ruby/classes/String.src/M000032.html +41 -0
  138. data/ref/ruby/classes/String.src/M000033.html +18 -0
  139. data/ref/ruby/classes/Table.html +191 -0
  140. data/ref/ruby/classes/Table.src/M000026.html +38 -0
  141. data/ref/ruby/classes/Table.src/M000027.html +18 -0
  142. data/ref/ruby/classes/Table.src/M000028.html +18 -0
  143. data/ref/ruby/classes/Table.src/M000029.html +18 -0
  144. data/ref/ruby/classes/Template.html +158 -0
  145. data/ref/ruby/classes/Template.src/M000031.html +18 -0
  146. data/ref/ruby/classes/VerilogParser.html +187 -0
  147. data/ref/ruby/classes/VerilogParser.src/M000005.html +34 -0
  148. data/ref/ruby/classes/VerilogParser/Module.html +172 -0
  149. data/ref/ruby/classes/VerilogParser/Module.src/M000006.html +29 -0
  150. data/ref/ruby/classes/VerilogParser/Module/Parameter.html +160 -0
  151. data/ref/ruby/classes/VerilogParser/Module/Parameter.src/M000011.html +21 -0
  152. data/ref/ruby/classes/VerilogParser/Module/Port.html +207 -0
  153. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000007.html +21 -0
  154. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +18 -0
  155. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000009.html +18 -0
  156. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000010.html +18 -0
  157. data/ref/ruby/classes/Vpi.html +124 -0
  158. data/ref/ruby/classes/Vpi/Handle.html +383 -0
  159. data/ref/ruby/classes/Vpi/Handle.src/M000085.html +18 -0
  160. data/ref/ruby/classes/Vpi/Handle.src/M000086.html +18 -0
  161. data/ref/ruby/classes/Vpi/Handle.src/M000087.html +22 -0
  162. data/ref/ruby/classes/Vpi/Handle.src/M000088.html +44 -0
  163. data/ref/ruby/classes/Vpi/Handle.src/M000089.html +87 -0
  164. data/ref/ruby/classes/Vpi/Handle.src/M000090.html +30 -0
  165. data/ref/ruby/classes/Vpi/Handle.src/M000091.html +24 -0
  166. data/ref/ruby/classes/Vpi/Handle.src/M000093.html +68 -0
  167. data/ref/ruby/classes/Vpi/Handle/Property.html +130 -0
  168. data/ref/ruby/classes/Vpi/Handle/Property.src/M000094.html +80 -0
  169. data/ref/ruby/classes/XX.html +138 -0
  170. data/ref/ruby/classes/XX/Document.html +295 -0
  171. data/ref/ruby/classes/XX/Document.src/M000072.html +22 -0
  172. data/ref/ruby/classes/XX/Document.src/M000073.html +20 -0
  173. data/ref/ruby/classes/XX/Document.src/M000074.html +20 -0
  174. data/ref/ruby/classes/XX/Document.src/M000075.html +20 -0
  175. data/ref/ruby/classes/XX/Document.src/M000076.html +22 -0
  176. data/ref/ruby/classes/XX/Document.src/M000077.html +21 -0
  177. data/ref/ruby/classes/XX/Document.src/M000078.html +21 -0
  178. data/ref/ruby/classes/XX/Document.src/M000079.html +34 -0
  179. data/ref/ruby/classes/XX/Document.src/M000080.html +98 -0
  180. data/ref/ruby/classes/XX/HTML4.html +145 -0
  181. data/ref/ruby/classes/XX/HTML4.src/M000036.html +20 -0
  182. data/ref/ruby/classes/XX/HTML4/Strict.html +138 -0
  183. data/ref/ruby/classes/XX/HTML4/Strict.src/M000038.html +20 -0
  184. data/ref/ruby/classes/XX/HTML4/Transitional.html +138 -0
  185. data/ref/ruby/classes/XX/HTML4/Transitional.src/M000037.html +20 -0
  186. data/ref/ruby/classes/XX/Markup.html +160 -0
  187. data/ref/ruby/classes/XX/Markup.src/M000043.html +28 -0
  188. data/ref/ruby/classes/XX/Markup/ClassMethods.html +236 -0
  189. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000044.html +22 -0
  190. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000045.html +20 -0
  191. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000046.html +25 -0
  192. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000047.html +20 -0
  193. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000048.html +27 -0
  194. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000049.html +20 -0
  195. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000050.html +27 -0
  196. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000051.html +22 -0
  197. data/ref/ruby/classes/XX/Markup/Error.html +111 -0
  198. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +474 -0
  199. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000052.html +56 -0
  200. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000053.html +33 -0
  201. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000054.html +31 -0
  202. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000055.html +48 -0
  203. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000056.html +20 -0
  204. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000057.html +31 -0
  205. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000058.html +32 -0
  206. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000059.html +32 -0
  207. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000060.html +28 -0
  208. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000061.html +23 -0
  209. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000062.html +26 -0
  210. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000063.html +20 -0
  211. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000064.html +20 -0
  212. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000065.html +20 -0
  213. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000066.html +20 -0
  214. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000067.html +20 -0
  215. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000068.html +21 -0
  216. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000069.html +20 -0
  217. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000070.html +20 -0
  218. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000071.html +20 -0
  219. data/ref/ruby/classes/XX/XHTML.html +145 -0
  220. data/ref/ruby/classes/XX/XHTML.src/M000039.html +36 -0
  221. data/ref/ruby/classes/XX/XHTML/Strict.html +138 -0
  222. data/ref/ruby/classes/XX/XHTML/Strict.src/M000041.html +20 -0
  223. data/ref/ruby/classes/XX/XHTML/Transitional.html +138 -0
  224. data/ref/ruby/classes/XX/XHTML/Transitional.src/M000040.html +20 -0
  225. data/ref/ruby/classes/XX/XML.html +138 -0
  226. data/ref/ruby/classes/XX/XML.src/M000035.html +20 -0
  227. data/ref/ruby/classes/XX/XMLish.html +138 -0
  228. data/ref/ruby/classes/XX/XMLish.src/M000042.html +18 -0
  229. data/ref/ruby/created.rid +1 -0
  230. data/ref/ruby/files/bin/generate_test_rb.html +248 -0
  231. data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +18 -0
  232. data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +40 -0
  233. data/ref/ruby/files/bin/header_to_ruby_rb.html +124 -0
  234. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +108 -0
  235. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +101 -0
  236. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +108 -0
  237. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +111 -0
  238. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +108 -0
  239. data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +115 -0
  240. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +108 -0
  241. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +208 -0
  242. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +24 -0
  243. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000004.html +26 -0
  244. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +107 -0
  245. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +108 -0
  246. data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +148 -0
  247. data/ref/ruby/files/lib/ruby-vpi_rb.html +111 -0
  248. data/ref/ruby/fr_class_index.html +57 -0
  249. data/ref/ruby/fr_file_index.html +40 -0
  250. data/ref/ruby/fr_method_index.html +121 -0
  251. data/ref/ruby/index.html +24 -0
  252. data/ref/ruby/rdoc-style.css +208 -0
  253. data/samp/counter/counter_rspec_bench.rb +1 -0
  254. data/samp/counter/counter_rspec_bench.v +1 -1
  255. data/samp/counter/counter_xunit_bench.rb +1 -0
  256. data/samp/counter/counter_xunit_bench.v +1 -1
  257. data/samp/pipelined_alu/hw5_unit_test_bench.rb +1 -0
  258. data/samp/pipelined_alu/hw5_unit_test_bench.v +1 -1
  259. data/samp/pipelined_alu/int_gen.rb +6 -7
  260. metadata +269 -2
data/HEADER CHANGED
@@ -35,58 +35,59 @@
35
35
  <dt>
36
36
  <span class="term">
37
37
  <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
38
- Project</a>
38
+ Facilities</a>
39
39
  </span>
40
40
  </dt>
41
41
  <dd>
42
42
  <p>
43
- Access project facilities, hosted generously by <a href="http://rubyforge.org" target="_top">
43
+ Access the issue tracker, file downloads, support requests, discussion forums, and more at <a href="http://rubyforge.org" target="_top">
44
44
  RubyForge</a>.
45
45
  </p>
46
46
  </dd>
47
47
 
48
48
  <dt>
49
49
  <span class="term">
50
- <a href="http://rubyforge.org/tracker/?group_id=1339" target="_top">
51
- Tracker</a>
50
+ <a href="http://ruby-vpi.rubyforge.org" target="_top">
51
+ Project</a>
52
52
  </span>
53
53
  </dt>
54
54
  <dd>
55
55
  <p>
56
- Report problems, contribute patches, and more.</p>
56
+ Access more information at the project's home page.
57
+ </p>
57
58
  </dd>
58
59
 
59
60
  <dt>
60
61
  <span class="term">
61
- <a href="http://rubyforge.org/frs/?group_id=1339" target="_top">
62
- Releases</a>
62
+ <a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi" target="_top">
63
+ Sources</a>
63
64
  </span>
64
65
  </dt>
65
66
  <dd>
66
67
  <p>
67
- Download the newest releases.</p>
68
+ Browse or access the source code repository.</p>
68
69
  </dd>
69
70
 
70
71
  <dt>
71
72
  <span class="term">
72
- <a href="http://ruby-vpi.rubyforge.org/src/ruby-vpi" target="_top">
73
- Sources</a>
73
+ <a href="http://ruby-vpi.rubyforge.org/talks" target="_top">
74
+ Talks</a>
74
75
  </span>
75
76
  </dt>
76
77
  <dd>
77
78
  <p>
78
- Browse or access the source code repository.</p>
79
+ Access public presentations about Ruby-VPI.</p>
79
80
  </dd>
80
81
 
81
82
  <dt>
82
83
  <span class="term">
83
- <a href="http://rubyforge.org/forum/?group_id=1339" target="_top">
84
- Forums</a>
84
+ <a href="http://ruby-vpi.rubyforge.org/blog" target="_top">
85
+ News</a>
85
86
  </span>
86
87
  </dt>
87
88
  <dd>
88
89
  <p>
89
- Ask for help, give feedback, or discuss.</p>
90
+ See what the developers are cooking up.</p>
90
91
  </dd>
91
92
 
92
93
  </dl>
data/HISTORY CHANGED
@@ -12,6 +12,41 @@ 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 11.1.0 (2006-11-08)
16
+
17
+ h2. Summary
18
+
19
+ This release fixes a bug in generated benches, improves the "the @Vpi::Handle@ class":./ref/ruby/classes/Vpi/Handle.html, and improves performance by roughly 20%.
20
+
21
+ h2. Acknowledgment
22
+
23
+ Thanks to Matt Fischler for finding the bug in generated benches (see below).
24
+
25
+ h2. Notice
26
+
27
+ * A bug in generated Verilog and Ruby benches, which caused this error <pre>ruby: no such file to load -- ruby-vpi (LoadError)</pre> has been fixed.
28
+ ** Please regenerate your tests to apply this bug fix to your tests.
29
+
30
+ h2. Detail
31
+
32
+ * The class @SWIG::TYPE_p_unsigned_int@ has been aliased as @Vpi::Handle@ for easier access.
33
+
34
+ * @Vpi::Handle#to_s@ and @Vpi::Handle#inspect@ now produce more informative output. For example, what used to appear as <pre>#<SWIG::TYPE_p_unsigned_int:0x2aaab6574fa0></pre> now appears as <pre>#<Vpi::Handle vpiModule fullName=counter_rspec_bench, size=-1, file=counter_rspec_bench.v, lineNo=2></pre> in this release.
35
+ ** You can also provide a list of VPI property/type names or integer constants to those methods to see additional information in the output.
36
+
37
+ * @Vpi::Handle@ now implements all methods from @Enumerable@, such as @map@, @each@, @select@, and so on. However, unlike their counterparts in @Enumerable@, these methods also accept a list of VPI property/type names or integer constants. Thus, you are now able to write @handle.select(:reg, :net) {|h| h.size > 5}@ to obtain a list of child handles to registers and nets whose capacity is greater than 5 bits.
38
+
39
+ * The @Vpi::Handle#[]@, @Vpi::Handle#get_value@, and @Vpi::Handle#put_value@ methods now accept names of VPI types/properties as well as their integer constants. Thus, you are now able to write @handle[:reg, :net]@ to obtain a list of handles to all child registers and nets.
40
+
41
+ * @Vpi::Handle#method_missing@ has been refactored to cache queries. There is now, approximately, 20% improvement in performance.
42
+
43
+ * @Vpi::Handle#method_missing@ has been fixed to accept operations with multiple underscores. For example, before this release, you could not write @handle.find_all_reg {|r| r.name =~ /foo/}@ because the "find_all_reg" method would be interpreted as the operation "find" and the VPI property "all_reg".
44
+
45
+ * The @IntegerGenerator@ class, in the pipelined ALU example, has been fixed so that multiple instances do not interfere with the generation of each other's prime integers.
46
+
47
+ * Due to a bug in the @Rakefile@, the reference documentation was not included in the previous few releases. This has been fixed.
48
+
49
+
15
50
  h1. Version 11.0.0 (2006-11-05)
16
51
 
17
52
  h2. Summary
@@ -77,7 +112,7 @@ h3. Automated test generator
77
112
 
78
113
  h3. User manual
79
114
 
80
- * Revised the stylesheet to make disjoint sections readily distinguishable from eachother, through generous spacing and minor coloring.
115
+ * Revised the stylesheet to make disjoint sections readily distinguishable from each other, through generous spacing and minor coloring.
81
116
 
82
117
  * Added tips about @ruby-vpi/runner_proxy@, @rake -T@, and using *kdiff3* with *generate_test.rb*.
83
118
 
data/MEMO CHANGED
@@ -1,16 +1,6 @@
1
- h1. Notes
2
-
3
- * When within Rake, rubygems is automatically available for use. no need to require() it again
4
-
5
-
6
1
  h1. Pending tasks
7
2
 
8
- * interactive console IRB wrapper for spec (just like Breakpoints in Rails)
9
-
10
- * add support for reading & writing vpi_delay values
11
-
12
- * define handled methods in Vpi::method_missing for faster response
13
- ** this has been verified as bottleneck from profiling data
3
+ * add support for reading & writing VPI delay values
14
4
 
15
5
  * GHDL simulator supports VPI
16
6
  ** need way to invoke VPI tasks from VHDL, like @$ruby_init();@
@@ -19,6 +9,10 @@ h1. Pending tasks
19
9
  ** maybe a waveform dump will also help
20
10
  ** this will help in debugging the problem
21
11
 
12
+ * add instructions for using *ruby-debug* with a graphical debugging tool or IDE like RadRails
13
+
14
+ * make RCov correctly profile the code and report useful coverage metrics...
15
+
22
16
 
23
17
  h1. Finished tasks
24
18
 
@@ -41,10 +35,19 @@ h1. Finished tasks
41
35
 
42
36
  * method_missing for Design class
43
37
 
38
+ * define handled methods in Vpi::method_missing for faster response
39
+ ** this has been verified as bottleneck from profiling data
44
40
 
45
- h1. Obsolete tasks
46
41
 
47
- * file bug report for Icarus 0.8 (l0_dcache)
48
- ** try new icarus snapshot
42
+ h1. Obsolete tasks
49
43
 
50
44
  * smarter test generation, which adjusts to user modifications in previously generated output -- just use a smart merging tool like *kdiff3*
45
+
46
+ * interactive console IRB wrapper for spec (just like Breakpoints in Rails)
47
+ ** use the *ruby-debug* library with "*debugger* command for breakpoints":http://www.datanoise.com/articles/category/ruby-debug instead!
48
+
49
+
50
+ h1. Notes
51
+
52
+ * When within Rake, rubygems is automatically available for use. no need to require() it again
53
+
data/README CHANGED
@@ -16,25 +16,8 @@ h2. Features
16
16
  * Study, modify, or distribute this free software in accordance with the "GNU General Public License":http://www.gnu.org/copyleft/gpl.html.
17
17
 
18
18
 
19
- h1. Getting started
20
-
21
- * See the "user manual":./doc to begin using Ruby-VPI.
19
+ h1. Release notes
22
20
 
23
21
  * See the "release history":./history.html to see what is new in this release.
24
22
 
25
- * See API documentation for the "C extension":./ref/c or "Ruby-VPI libraries":./ref/ruby.
26
-
27
- * Visit the "project website":http://ruby-vpi.rubyforge.org for additional resources.
28
-
29
-
30
- h1. Building release packages
31
-
32
- In addition to the "normal requirements":./doc/usage.requirements.html, you need the following software to build release packages:
33
-
34
- * "DocBook-XML":http://www.docbook.org/
35
- ** xsltproc
36
- ** xmlto
37
- * "RedCloth":http://rubyforge.org/projects/redcloth/
38
- * "SWIG":http://www.swig.org/
39
-
40
- Once you have satisfied these requirements, you can run @rake release@ to build the release packages. Also, see the output of @rake -T@ for more build options.
23
+ * See the "project memo":./memo.html for a list of pending tasks.
data/Rakefile CHANGED
@@ -140,7 +140,6 @@ Rake::RDocTask.new 'ref/ruby' do |t|
140
140
  t.title = "#{PROJECT_NAME}: #{PROJECT_SUMMARY}"
141
141
  t.options.concat %w(--charset utf-8 --line-numbers)
142
142
  t.rdoc_files.include '{bin,lib/**}/*.rb'
143
- t.main = 'SWIG::TYPE_p_unsigned_int'
144
143
  end
145
144
 
146
145
 
@@ -187,7 +186,7 @@ task :dist_info => distDocs
187
186
 
188
187
 
189
188
  desc "Prepare for distribution."
190
- task :dist => ['ext', :doc, :dist_info] do |t|
189
+ task :dist => ['ext', 'ref', :doc, :dist_info] do |t|
191
190
  cd 'ext' do
192
191
  sh 'rake swig'
193
192
  end
@@ -4,11 +4,11 @@
4
4
  # * The first input signal in a module's declaration is assumed to be the clocking signal.
5
5
  #
6
6
  # = Progress indicators
7
- # create:: File will be created because it does not exist.
8
- # skip:: File will be skipped because it is already up to date.
9
- # update:: File will be updated because it is out of date. A backup copy will be made before the file is updated. Use a text merging tool (see MERGER) or manually transfer any necessary information from the backup copy to the updated file.
10
- # backup:: A backup copy of a file is being made.
11
7
  # module:: A Verilog module has been identified.
8
+ # backup:: A backup copy of a file is being made.
9
+ # create:: A file is being created because it does not exist.
10
+ # skip:: A file is being skipped because it is already up to date.
11
+ # update:: A file will be updated because it is out of date. A backup copy will be made before the file is updated. Use a text merging tool (see MERGER) or manually transfer any necessary information from the backup copy to the updated file.
12
12
  #
13
13
  # = Environment variables
14
14
  # MERGER:: A command that invokes a text merging tool with two arguments: (1) old file, (2) new file. The tool's output should be written to the new file.
@@ -1,5 +1,6 @@
1
1
  # This file is the Ruby side of the bench.
2
2
 
3
+ require 'ruby-vpi'
3
4
  RubyVpi.init_bench :<%= aOutputInfo.designClassName %>, :<%= aOutputInfo.specFormat %>
4
5
  <% if aOutputInfo.specFormat == :generic %>
5
6
 
@@ -31,7 +31,7 @@ module <%= aOutputInfo.verilogBenchName %>;
31
31
  // connect to the Ruby side of this bench
32
32
  initial begin
33
33
  <%= clockSignal %> = 0;
34
- $ruby_init("ruby", "-w", "-rubygems", "-rruby-vpi", "<%= aOutputInfo.rubyBenchPath %>");
34
+ $ruby_init("ruby", "-w", "-rubygems", <%= aOutputInfo.rubyBenchPath.inspect %>);
35
35
  end
36
36
 
37
37
  always begin
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/ruby -w
2
2
  # Transforms Verilog header files into Ruby.
3
- # * If no input files are specified, then the standard input stream is assumed to be the input.
4
- # * The resulting output is emitted to the standard output stream.
3
+ # * The standard input stream is read if no input files are specified.
4
+ # * Output is written to the standard output stream.
5
5
 
6
6
  =begin
7
7
  Copyright 2006 Suraj N. Kurapati
@@ -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 either (1) its children or (2) its <span class="acronym">VPI</span> properties.</p><p>The children of a handle are simply the handles that are immediately contained within it in. For example, suppose that you had a Verilog module that contains some registers. The children, of a handle to the module, would be handles to the registers.</p><p>In the event that a child handle has the same name as a <span class="acronym">VPI</span> property, the child is given priority. However, you can always access <span class="acronym">VPI</span> properties explicitly via the <code class="function">get_value</code> and <code class="function">put_value</code> methods.</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="id2488119"></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 either (1) its children or (2) its <span class="acronym">VPI</span> properties.</p><p>The children of a handle are simply the handles that are immediately contained within it in. For example, suppose that you had a Verilog module that contains some registers. The children, of a handle to the module, would be handles to the registers.</p><p>In the event that a child handle has the same name as a <span class="acronym">VPI</span> property, the child is given priority. However, you can always access <span class="acronym">VPI</span> properties explicitly via the <code class="function">get_value</code> and <code class="function">put_value</code> methods.</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/Vpi/Handle/Property.html" target="_top">see the source code</a> of the <code class="code"><code class="constant">Property</code>.<code class="function">resolve</code></code> method for details).</p><div class="table"><a id="id2488103"></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">all_reg?</code> {|<code class="varname">reg</code>| <code class="varname">reg</code>.<code class="function">size</code> == <code class="literal">1</code>}</code></td><td>all?</td><td>_</td><td>vpiReg</td><td> </td><td> </td><td> </td><td rowspan="2">These expressions check if all registers associated with the handle are capable of storing only one bit.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">all_reg?</code> {|<code class="varname">reg</code>| <code class="varname">reg</code>.<code class="function">size</code> == <code class="literal">1</code>}</code></td><td>all?</td><td>_</td><td>reg</td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select_vpiNet</code> {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td>vpiReg</td><td> </td><td> </td><td> </td><td rowspan="5">These expressions return a list of nets whose logic value is “<span class="quote">don't care</span>”.</td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select_net</code> {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</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">select</code>(<code class="constant">VpiNet</code>) {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td> </td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select</code>(<code class="literal">:VpiNet</code>) {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td> </td><td> </td><td> </td><td> </td></tr><tr><td><code class="code"><code class="varname">handle</code>.<code class="function">select</code>(<code class="literal">:net</code>) {|<code class="varname">net</code>| <code class="varname">net</code>.<code class="function">x?</code>}</code></td><td>select</td><td>_</td><td> </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>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
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>Chapter 5. Hacking</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="index.html" title="Ruby-VPI user manual" /><link rel="prev" href="usage.examples.html" title="Examples" /><link rel="next" href="hacking.release-packages.html" title="Building release packages" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Hacking</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"> </th><td width="20%" align="right"> <a accesskey="n" href="hacking.release-packages.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="chapter" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title"><a id="hacking"></a>Chapter 5. Hacking</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="hacking.release-packages.html">Building release packages</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="hacking.release-packages.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Examples </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"> Building release packages</td></tr></table></div></body></html>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
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>Building release packages</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="hacking.html" title="Chapter 5. Hacking" /><link rel="prev" href="hacking.html" title="Chapter 5. Hacking" /><link rel="next" href="problems.html" title="Chapter 6. Known problems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Building release packages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="hacking.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 5. Hacking</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="hacking.release-packages"></a>Building release packages</h2></div></div></div><p>In addition to the "normal requirements":./doc/usage.requirements.html, you need the following software to build release packages:
4
+
5
+ </p><div class="variablelist"><dl><dt><span class="term"><a href="http://www.docbook.org/" target="_top">DocBook-XML</a></span></dt><dd><p></p></dd><dt><span class="term">xsltproc</span></dt><dd><p></p></dd><dt><span class="term">xmlto</span></dt><dd><p></p></dd><dt><span class="term"><a href="http://rubyforge.org/projects/redcloth/" target="_top">RedCloth</a></span></dt><dd><p></p></dd><dt><span class="term"><a href="http://www.swig.org/" target="_top">SWIG</a></span></dt><dd><p></p></dd></dl></div><p>
6
+
7
+ Once you have satisfied these requirements, you can run <span><strong class="command">rake <span class="action">release</span></strong></span> to build the release packages. Also, see the output of <span><strong class="command">rake <code class="option">-T</code></strong></span> for more build options.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="hacking.html"><img src="images/prev.png" alt="Prev" /></a> </td><td width="20%" align="center"><a accesskey="u" href="hacking.html"><img src="images/up.png" alt="Up" /></a></td><td width="40%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Hacking </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"> Chapter 6. Known problems</td></tr></table></div></body></html>
@@ -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. A plain-text version of this manual is also available. Finally, 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="id2472672"></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="id2516403"></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>. A <a href="manual.txt" target="_top">plain-text version of this manual</a> is also available. Finally, 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="setup.html">3. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.reqs.html">Requirements</a></span></dt><dd><dl><dt><span class="section"><a href="setup.reqs.html#setup.reqs.optional">Recommendations</a></span></dt></dl></dd><dt><span class="section"><a href="setup.installation.html">Installation</a></span></dt><dd><dl><dt><span class="section"><a href="setup.installation.html#setup.installation.windows">Installing on Windows</a></span></dt></dl></dd><dt><span class="section"><a href="setup.maintenance.html">Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="usage.html">4. Usage</a></span></dt><dd><dl><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.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><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt></dl></dd><dt><span class="chapter"><a href="problems.html">5. 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.xUnit">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>4.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>4.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in rSpec format</a></dt><dt>4.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in xUnit format</a></dt><dt>4.4. <a href="usage.tutorial.html#fig..counter_rspec_spec.rb">Specification implemented in rSpec format</a></dt><dt>4.5. <a href="usage.tutorial.html#fig..counter_xunit_spec.rb">Specification implemented in xUnit format</a></dt><dt>4.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>4.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in rSpec format</a></dt><dt>4.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in xUnit format</a></dt><dt>4.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>4.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in rSpec format</a></dt><dt>4.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in xUnit 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#id2488119">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>5.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>5.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>5.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. A plain-text version of this manual is also available. Finally, 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="id2472603"></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="id2516394"></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>. A <a href="manual.txt" target="_top">plain-text version of this manual</a> is also available. Finally, 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="setup.html">3. Setup</a></span></dt><dd><dl><dt><span class="section"><a href="setup.reqs.html">Requirements</a></span></dt><dd><dl><dt><span class="section"><a href="setup.reqs.html#setup.reqs.optional">Recommendations</a></span></dt></dl></dd><dt><span class="section"><a href="setup.installation.html">Installation</a></span></dt><dd><dl><dt><span class="section"><a href="setup.installation.html#setup.installation.windows">Installing on Windows</a></span></dt></dl></dd><dt><span class="section"><a href="setup.maintenance.html">Maintenance</a></span></dt></dl></dd><dt><span class="chapter"><a href="usage.html">4. Usage</a></span></dt><dd><dl><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.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><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt></dl></dd><dt><span class="chapter"><a href="hacking.html">5. Hacking</a></span></dt><dd><dl><dt><span class="section"><a href="hacking.release-packages.html">Building release packages</a></span></dt></dl></dd><dt><span class="chapter"><a href="problems.html">6. 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.xUnit">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>4.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>4.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in rSpec format</a></dt><dt>4.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in xUnit format</a></dt><dt>4.4. <a href="usage.tutorial.html#fig..counter_rspec_spec.rb">Specification implemented in rSpec format</a></dt><dt>4.5. <a href="usage.tutorial.html#fig..counter_xunit_spec.rb">Specification implemented in xUnit format</a></dt><dt>4.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>4.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in rSpec format</a></dt><dt>4.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in xUnit format</a></dt><dt>4.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>4.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in rSpec format</a></dt><dt>4.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in xUnit 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#id2488103">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>6.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>6.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>6.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>
@@ -77,7 +77,11 @@ Table of Contents
77
77
 
78
78
  Examples
79
79
 
80
- 5. Known problems
80
+ 5. Hacking
81
+
82
+ Building release packages
83
+
84
+ 6. Known problems
81
85
 
82
86
  Ruby
83
87
 
@@ -135,9 +139,9 @@ List of Tables
135
139
  List of Examples
136
140
 
137
141
  2.1. Accessing a handle's VPI properties
138
- 5.1. Part of a bench which instantiates a Verilog design
139
- 5.2. Bad design with unconnected registers
140
- 5.3. Fixed design with wired registers
142
+ 6.1. Part of a bench which instantiates a Verilog design
143
+ 6.2. Bad design with unconnected registers
144
+ 6.3. Fixed design with wired registers
141
145
 
142
146
  Chapter 1. Introduction
143
147
 
@@ -403,7 +407,7 @@ Accessor
403
407
  This parameter suggests which VPI function should be used to access the VPI
404
408
  property. When this parameter is not specified, the VPI utility layer will
405
409
  attempt to guess the value of this parameter (see the source code of the
406
- SWIG::TYPE_p_unsigned_int#method_missing method for details).
410
+ Property.resolve method for details).
407
411
 
408
412
  Table 2.2. Possible accessors and their implications
409
413
 
@@ -449,6 +453,34 @@ Example 2.1. Accessing a handle's VPI properties
449
453
  │| puts net.fullName} │ │ │ │ │ │ │handle. │
450
454
  │ │ │ │ │ │ │ │ │
451
455
  ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┼────────────┤
456
+ │ │ │ │ │ │ │ │These │
457
+ │handle.all_reg? {|reg│ │ │ │ │ │ │expressions │
458
+ │| reg.size == 1} │all? │_│vpiReg │ │  │  │check if all│
459
+ │ │ │ │ │ │ │ │registers │
460
+ │ │ │ │ │ │ │ │associated │
461
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤with the │
462
+ │ │ │ │ │ │ │ │handle are │
463
+ │handle.all_reg? {|reg│ │ │ │ │ │ │capable of │
464
+ │| reg.size == 1} │all? │_│reg │ │  │  │storing only│
465
+ │ │ │ │ │ │ │ │one bit. │
466
+ │ │ │ │ │ │ │ │ │
467
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┼────────────┤
468
+ │handle.select_vpiNet │select │_│vpiReg │ │  │  │ │
469
+ │{|net| net.x?} │ │ │ │ │ │ │ │
470
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤ │
471
+ │handle.select_net {| │select │_│net │ │  │  │These │
472
+ │net| net.x?} │ │ │ │ │ │ │expressions │
473
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤return a │
474
+ │handle.select(VpiNet)│select │_│  │ │  │  │list of nets│
475
+ │{|net| net.x?} │ │ │ │ │ │ │whose logic │
476
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤value is │
477
+ │handle.select │ │ │ │ │ │ │“don't │
478
+ │(:VpiNet) {|net| │select │_│  │ │  │  │care”. │
479
+ │net.x?} │ │ │ │ │ │ │ │
480
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤ │
481
+ │handle.select(:net) │select │_│  │ │  │  │ │
482
+ │{|net| net.x?} │ │ │ │ │ │ │ │
483
+ ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┼────────────┤
452
484
  │handle.vpiIntVal │  │ │vpiIntVal │ │  │  │ │
453
485
  │ │ │ │ │ │ │ │These │
454
486
  ├─────────────────────┼─────────┼─┼────────────┼─┼────────┼────────┤expressions │
@@ -1195,7 +1227,31 @@ run the command rake to get started.
1195
1227
  Also, some example specifications make use of BDD through the rSpec library.
1196
1228
  See the the section called “Methodology” for a discussion of rSpec.
1197
1229
 
1198
- Chapter 5. Known problems
1230
+ Chapter 5. Hacking
1231
+
1232
+ Table of Contents
1233
+
1234
+ Building release packages
1235
+
1236
+ Building release packages
1237
+
1238
+ In addition to the "normal requirements":./doc/usage.requirements.html, you
1239
+ need the following software to build release packages:
1240
+
1241
+ DocBook-XML
1242
+
1243
+ xsltproc
1244
+
1245
+ xmlto
1246
+
1247
+ RedCloth
1248
+
1249
+ SWIG
1250
+
1251
+ Once you have satisfied these requirements, you can run rake release to build
1252
+ the release packages. Also, see the output of rake -T for more build options.
1253
+
1254
+ Chapter 6. Known problems
1199
1255
 
1200
1256
  Table of Contents
1201
1257
 
@@ -1248,11 +1304,11 @@ function requires an absolute path (including the name of the bench which
1248
1304
  instantiates the design) to a Verilog object. In addition, vpi_handle_by_name
1249
1305
  is unable to retrieve the handle for a module parameter.
1250
1306
 
1251
- For example, consider Example 5.1, “Part of a bench which instantiates a
1307
+ For example, consider Example 6.1, “Part of a bench which instantiates a
1252
1308
  Verilog design”. Here, one needs to specify TestFoo.my_foo.clk instead of
1253
1309
  my_foo.clk in order to access the clk input of the my_foo module instance.
1254
1310
 
1255
- Example 5.1. Part of a bench which instantiates a Verilog design
1311
+ Example 6.1. Part of a bench which instantiates a Verilog design
1256
1312
 
1257
1313
  module TestFoo;
1258
1314
  reg clk_reg;
@@ -1267,17 +1323,17 @@ a parameter to a module instantiation). Otherwise, you will get a nil value as
1267
1323
  the result of vpi_handle_by_name method.
1268
1324
 
1269
1325
  For example, suppose you wanted to access the clk_reg register, from the bench
1270
- shown in Example 5.2, “Bad design with unconnected registers”. If you execute
1326
+ shown in Example 6.2, “Bad design with unconnected registers”. If you execute
1271
1327
  the statement clk_reg = vpi_handle_by_name("TestFoo.clk_reg", nil) in a
1272
1328
  specification, then you will discover that the vpi_handle_by_name method
1273
1329
  returns nil instead of a handle to the clk_reg register.
1274
1330
 
1275
1331
  The solution is to change the design such that it appears like the one shown in
1276
- Example 5.3, “Fixed design with wired registers” where the register is
1277
- connected to a wire, or Example 5.1, “Part of a bench which instantiates a
1332
+ Example 6.3, “Fixed design with wired registers” where the register is
1333
+ connected to a wire, or Example 6.1, “Part of a bench which instantiates a
1278
1334
  Verilog design” where the register is connected to a module instantiation.
1279
1335
 
1280
- Example 5.2. Bad design with unconnected registers
1336
+ Example 6.2. Bad design with unconnected registers
1281
1337
 
1282
1338
  Here the clk_reg register is not connected to anything.
1283
1339
 
@@ -1285,7 +1341,7 @@ module TestFoo;
1285
1341
  reg clk_reg;
1286
1342
  endmodule
1287
1343
 
1288
- Example 5.3. Fixed design with wired registers
1344
+ Example 6.3. Fixed design with wired registers
1289
1345
 
1290
1346
  Here the clk_reg register is connected to the clk_wire wire.
1291
1347
 
@@ -1,15 +1,15 @@
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>Icarus Verilog</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="problems.html" title="Chapter 5. Known problems" /><link rel="prev" href="problems.ruby.html" title="Ruby" /><link rel="next" href="problems.vsim.html" title="Mentor Modelsim" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Icarus Verilog</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="problems.ruby.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 5. Known problems</th><td width="20%" align="right"> <a accesskey="n" href="problems.vsim.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="problem.ivl"></a>Icarus Verilog</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="problems.ivl.vpi_handle_by_name"></a>vpi_handle_by_name</h3></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.absolute-paths"></a>Give full paths to Verilog objects</h4></div></div></div><p>In version 0.8 and snapshot 20061009 of Icarus Verilog, the <code class="function">vpi_handle_by_name</code> function requires an <span class="emphasis"><em>absolute</em></span> path (including the name of the bench which instantiates the design) to a Verilog object. In addition, <code class="function">vpi_handle_by_name</code> is unable to retrieve the handle for a module parameter.</p><p>For example, consider <a href="problem.ivl.html#ex..TestFoo" title="Example 5.1. Part of a bench which instantiates a Verilog design">Example 5.1, “Part of a bench which instantiates a Verilog design”</a>. Here, one needs to specify <code class="code">TestFoo.my_foo.clk</code> instead of <code class="code">my_foo.clk</code> in order to access the <code class="varname">clk</code> input of the <code class="varname">my_foo</code> module instance.</p><div class="example"><a id="ex..TestFoo"></a><p class="title"><b>Example 5.1. Part of a bench which instantiates a Verilog design</b></p><pre class="programlisting">
3
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Icarus Verilog</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="problems.html" title="Chapter 6. Known problems" /><link rel="prev" href="problems.ruby.html" title="Ruby" /><link rel="next" href="problems.vsim.html" title="Mentor Modelsim" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Icarus Verilog</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="problems.ruby.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 6. Known problems</th><td width="20%" align="right"> <a accesskey="n" href="problems.vsim.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="problem.ivl"></a>Icarus Verilog</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="problems.ivl.vpi_handle_by_name"></a>vpi_handle_by_name</h3></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.absolute-paths"></a>Give full paths to Verilog objects</h4></div></div></div><p>In version 0.8 and snapshot 20061009 of Icarus Verilog, the <code class="function">vpi_handle_by_name</code> function requires an <span class="emphasis"><em>absolute</em></span> path (including the name of the bench which instantiates the design) to a Verilog object. In addition, <code class="function">vpi_handle_by_name</code> is unable to retrieve the handle for a module parameter.</p><p>For example, consider <a href="problem.ivl.html#ex..TestFoo" title="Example 6.1. Part of a bench which instantiates a Verilog design">Example 6.1, “Part of a bench which instantiates a Verilog design”</a>. Here, one needs to specify <code class="code">TestFoo.my_foo.clk</code> instead of <code class="code">my_foo.clk</code> in order to access the <code class="varname">clk</code> input of the <code class="varname">my_foo</code> module instance.</p><div class="example"><a id="ex..TestFoo"></a><p class="title"><b>Example 6.1. Part of a bench which instantiates a Verilog design</b></p><pre class="programlisting">
4
4
  <span class="token">module</span> TestFoo;
5
5
  <span class="type">reg</span> <code class="varname">clk_reg</code>;
6
6
  Foo <code class="varname">my_foo</code>(<em class="parameter"><code>.clk</code></em>(<code class="varname">clk_reg</code>));
7
7
  <span class="token">endmodule</span>
8
- </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.connect-registers"></a>Registers must be connected</h4></div></div></div><p>In version 0.8 of Icarus Verilog, if you want to access a register in a design, then it must be connected to something (either assigned to a wire or passed as a parameter to a module instantiation). Otherwise, you will get a <code class="literal">nil</code> value as the result of <code class="function">vpi_handle_by_name</code> method.</p><p>For example, suppose you wanted to access the <code class="varname">clk_reg</code> register, from the bench shown in <a href="problem.ivl.html#ex..TestFoo_bad" title="Example 5.2. Bad design with unconnected registers">Example 5.2, “Bad design with unconnected registers”</a>. If you execute the statement <code class="code"><code class="varname">clk_reg</code> = <code class="function">vpi_handle_by_name</code>(<em class="parameter"><code><code class="literal">"TestFoo.clk_reg"</code></code></em>, <em class="parameter"><code><code class="literal">nil</code></code></em>)</code> in a specification, then you will discover that the <code class="function">vpi_handle_by_name</code> method returns <code class="literal">nil</code> instead of a handle to the <code class="varname">clk_reg</code> register.</p><p>The solution is to change the design such that it appears like the one shown in <a href="problem.ivl.html#ex..TestFoo_fix" title="Example 5.3. Fixed design with wired registers">Example 5.3, “Fixed design with wired registers”</a> where the register is connected to a wire, or <a href="problem.ivl.html#ex..TestFoo" title="Example 5.1. Part of a bench which instantiates a Verilog design">Example 5.1, “Part of a bench which instantiates a Verilog design”</a> where the register is connected to a module instantiation.</p><div class="example"><a id="ex..TestFoo_bad"></a><p class="title"><b>Example 5.2. Bad design with unconnected registers</b></p><p>Here the <code class="varname">clk_reg</code> register is not connected to anything.</p><pre class="programlisting">
8
+ </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h4 class="title"><a id="problems.ivl.vpi_handle_by_name.connect-registers"></a>Registers must be connected</h4></div></div></div><p>In version 0.8 of Icarus Verilog, if you want to access a register in a design, then it must be connected to something (either assigned to a wire or passed as a parameter to a module instantiation). Otherwise, you will get a <code class="literal">nil</code> value as the result of <code class="function">vpi_handle_by_name</code> method.</p><p>For example, suppose you wanted to access the <code class="varname">clk_reg</code> register, from the bench shown in <a href="problem.ivl.html#ex..TestFoo_bad" title="Example 6.2. Bad design with unconnected registers">Example 6.2, “Bad design with unconnected registers”</a>. If you execute the statement <code class="code"><code class="varname">clk_reg</code> = <code class="function">vpi_handle_by_name</code>(<em class="parameter"><code><code class="literal">"TestFoo.clk_reg"</code></code></em>, <em class="parameter"><code><code class="literal">nil</code></code></em>)</code> in a specification, then you will discover that the <code class="function">vpi_handle_by_name</code> method returns <code class="literal">nil</code> instead of a handle to the <code class="varname">clk_reg</code> register.</p><p>The solution is to change the design such that it appears like the one shown in <a href="problem.ivl.html#ex..TestFoo_fix" title="Example 6.3. Fixed design with wired registers">Example 6.3, “Fixed design with wired registers”</a> where the register is connected to a wire, or <a href="problem.ivl.html#ex..TestFoo" title="Example 6.1. Part of a bench which instantiates a Verilog design">Example 6.1, “Part of a bench which instantiates a Verilog design”</a> where the register is connected to a module instantiation.</p><div class="example"><a id="ex..TestFoo_bad"></a><p class="title"><b>Example 6.2. Bad design with unconnected registers</b></p><p>Here the <code class="varname">clk_reg</code> register is not connected to anything.</p><pre class="programlisting">
9
9
  <span class="token">module</span> TestFoo;
10
10
  <span class="type">reg</span> <code class="varname">clk_reg</code>;
11
11
  <span class="token">endmodule</span>
12
- </pre></div><div class="example"><a id="ex..TestFoo_fix"></a><p class="title"><b>Example 5.3. Fixed design with wired registers</b></p><p>Here the <code class="varname">clk_reg</code> register is connected to the <code class="varname">clk_wire</code> wire.</p><pre class="programlisting">
12
+ </pre></div><div class="example"><a id="ex..TestFoo_fix"></a><p class="title"><b>Example 6.3. Fixed design with wired registers</b></p><p>Here the <code class="varname">clk_reg</code> register is connected to the <code class="varname">clk_wire</code> wire.</p><pre class="programlisting">
13
13
  <span class="token">module</span> TestFoo;
14
14
  <span class="type">reg</span> <code class="varname">clk_reg</code>;
15
15
  <span class="type">wire</span> <code class="varname">clk_wire</code>;