ruby-vpi 7.1.0 → 7.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. data/HEADER +101 -0
  2. data/HISTORY +57 -37
  3. data/README +1 -1
  4. data/Rakefile +21 -13
  5. data/doc/src/manual.xml +5 -5
  6. data/doc/txt/manual.txt +10 -6
  7. data/doc/xhtml/background.organization.html +1 -1
  8. data/doc/xhtml/index.html +2 -2
  9. data/doc/xhtml/usage.tutorial.html +4 -4
  10. data/header.html +114 -0
  11. data/header.part.html +114 -0
  12. data/history.html +217 -68
  13. data/history.part.html +880 -0
  14. data/lib/ruby-vpi/rcov.rb +62 -0
  15. data/lib/ruby-vpi/rspec.rb +1 -1
  16. data/lib/ruby-vpi/xx.rb +761 -0
  17. data/lib/ruby-vpi.rb +13 -2
  18. data/memo.html +116 -1
  19. data/memo.part.html +86 -0
  20. data/readme.html +116 -1
  21. data/readme.part.html +21 -0
  22. data/ref/c/annotated.html +1 -1
  23. data/ref/c/common_8h.html +1 -1
  24. data/ref/c/files.html +1 -1
  25. data/ref/c/functions.html +1 -1
  26. data/ref/c/functions_vars.html +1 -1
  27. data/ref/c/globals.html +1 -1
  28. data/ref/c/globals_0x63.html +1 -1
  29. data/ref/c/globals_0x65.html +1 -1
  30. data/ref/c/globals_0x66.html +1 -1
  31. data/ref/c/globals_0x70.html +1 -1
  32. data/ref/c/globals_0x72.html +1 -1
  33. data/ref/c/globals_0x73.html +1 -1
  34. data/ref/c/globals_0x74.html +1 -1
  35. data/ref/c/globals_0x76.html +1 -1
  36. data/ref/c/globals_0x78.html +1 -1
  37. data/ref/c/globals_defs.html +1 -1
  38. data/ref/c/globals_defs_0x65.html +1 -1
  39. data/ref/c/globals_defs_0x70.html +1 -1
  40. data/ref/c/globals_defs_0x76.html +1 -1
  41. data/ref/c/globals_defs_0x78.html +1 -1
  42. data/ref/c/globals_enum.html +1 -1
  43. data/ref/c/globals_eval.html +1 -1
  44. data/ref/c/globals_func.html +1 -1
  45. data/ref/c/globals_type.html +1 -1
  46. data/ref/c/globals_vars.html +1 -1
  47. data/ref/c/hierarchy.html +1 -1
  48. data/ref/c/index.html +1 -1
  49. data/ref/c/relay_8cin.html +1 -1
  50. data/ref/c/relay_8hin.html +1 -1
  51. data/ref/c/ruby-vpi_8c.html +1 -1
  52. data/ref/c/structrelay____RubyOptions____def.html +1 -1
  53. data/ref/c/structt__cb__data.html +1 -1
  54. data/ref/c/structt__vpi__delay.html +1 -1
  55. data/ref/c/structt__vpi__error__info.html +1 -1
  56. data/ref/c/structt__vpi__strengthval.html +1 -1
  57. data/ref/c/structt__vpi__systf__data.html +1 -1
  58. data/ref/c/structt__vpi__time.html +1 -1
  59. data/ref/c/structt__vpi__value.html +1 -1
  60. data/ref/c/structt__vpi__vecval.html +1 -1
  61. data/ref/c/structt__vpi__vlog__info.html +1 -1
  62. data/ref/c/swig_8cin.html +1 -1
  63. data/ref/c/swig_8hin.html +1 -1
  64. data/ref/c/verilog_8h.html +1 -1
  65. data/ref/c/vlog_8cin.html +1 -1
  66. data/ref/c/vlog_8hin.html +1 -1
  67. data/ref/c/vpi__user_8h.html +1 -1
  68. data/ref/ruby/classes/ERB.html +5 -5
  69. data/ref/ruby/classes/ERB.src/{M000035.html → M000011.html} +0 -0
  70. data/ref/ruby/classes/FileUtils.html +10 -10
  71. data/ref/ruby/classes/FileUtils.src/{M000048.html → M000065.html} +0 -0
  72. data/ref/ruby/classes/FileUtils.src/{M000049.html → M000066.html} +0 -0
  73. data/ref/ruby/classes/ModuleInfo.html +10 -10
  74. data/ref/ruby/classes/ModuleInfo.src/{M000019.html → M000008.html} +0 -0
  75. data/ref/ruby/classes/ModuleInfo.src/{M000020.html → M000009.html} +0 -0
  76. data/ref/ruby/classes/OutputInfo.html +5 -5
  77. data/ref/ruby/classes/OutputInfo.src/{M000018.html → M000007.html} +0 -0
  78. data/ref/ruby/classes/RDoc.html +5 -5
  79. data/ref/ruby/classes/RDoc.src/{M000051.html → M000069.html} +0 -0
  80. data/ref/ruby/classes/RubyVPI.html +45 -5
  81. data/ref/ruby/classes/RubyVPI.src/M000067.html +50 -0
  82. data/ref/ruby/classes/RubyVPI.src/M000068.html +20 -0
  83. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +35 -35
  84. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000042.html → M000059.html} +0 -0
  85. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000043.html → M000060.html} +0 -0
  86. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000044.html → M000061.html} +0 -0
  87. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000045.html → M000062.html} +1 -1
  88. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000046.html → M000063.html} +0 -0
  89. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/{M000047.html → M000064.html} +1 -1
  90. data/ref/ruby/classes/String.html +5 -5
  91. data/ref/ruby/classes/String.src/{M000034.html → M000012.html} +0 -0
  92. data/ref/ruby/classes/{ResettedCounterValue.html → Table.html} +41 -24
  93. data/ref/ruby/classes/Table.src/M000003.html +38 -0
  94. data/ref/ruby/classes/Table.src/M000004.html +18 -0
  95. data/ref/ruby/classes/Table.src/M000005.html +18 -0
  96. data/ref/ruby/classes/{InputGenerator.src/M000029.html → Table.src/M000006.html} +5 -5
  97. data/ref/ruby/classes/Template.html +5 -5
  98. data/ref/ruby/classes/Template.src/{M000027.html → M000010.html} +0 -0
  99. data/ref/ruby/classes/XX/Document.html +295 -0
  100. data/ref/ruby/classes/XX/Document.src/M000050.html +22 -0
  101. data/ref/ruby/classes/XX/Document.src/M000051.html +20 -0
  102. data/ref/ruby/classes/XX/Document.src/M000052.html +20 -0
  103. data/ref/ruby/classes/XX/Document.src/M000053.html +20 -0
  104. data/ref/ruby/classes/XX/Document.src/M000054.html +22 -0
  105. data/ref/ruby/classes/XX/Document.src/M000055.html +21 -0
  106. data/ref/ruby/classes/XX/Document.src/M000056.html +21 -0
  107. data/ref/ruby/classes/XX/Document.src/M000057.html +34 -0
  108. data/ref/ruby/classes/XX/Document.src/M000058.html +98 -0
  109. data/ref/ruby/{files/bin/generate_test_tpl/spec_rb.html → classes/XX/HTML4/Strict.html} +26 -28
  110. data/ref/ruby/classes/XX/HTML4/Strict.src/M000016.html +20 -0
  111. data/ref/ruby/classes/{CounterProto.html → XX/HTML4/Transitional.html} +19 -45
  112. data/ref/ruby/classes/XX/HTML4/Transitional.src/M000015.html +20 -0
  113. data/ref/ruby/classes/{MaximumCounterValue.html → XX/HTML4.html} +20 -34
  114. data/ref/ruby/classes/XX/HTML4.src/M000014.html +20 -0
  115. data/ref/ruby/classes/XX/Markup/ClassMethods.html +236 -0
  116. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000022.html +22 -0
  117. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000023.html +20 -0
  118. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000024.html +25 -0
  119. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000025.html +20 -0
  120. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000026.html +27 -0
  121. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000027.html +20 -0
  122. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000028.html +27 -0
  123. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000029.html +22 -0
  124. data/ref/ruby/{files/bin/generate_test_tpl/proto_rb.html → classes/XX/Markup/Error.html} +25 -21
  125. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +474 -0
  126. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000030.html +56 -0
  127. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000031.html +33 -0
  128. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000032.html +31 -0
  129. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000033.html +48 -0
  130. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000034.html +20 -0
  131. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000035.html +31 -0
  132. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000036.html +32 -0
  133. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000037.html +32 -0
  134. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000038.html +28 -0
  135. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000039.html +23 -0
  136. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000040.html +26 -0
  137. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000041.html +20 -0
  138. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000042.html +20 -0
  139. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000043.html +20 -0
  140. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000044.html +20 -0
  141. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000045.html +20 -0
  142. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000046.html +21 -0
  143. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000047.html +20 -0
  144. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000048.html +20 -0
  145. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000049.html +20 -0
  146. data/ref/ruby/classes/{TestHw5UnitModel.html → XX/Markup.html} +29 -49
  147. data/ref/ruby/classes/XX/Markup.src/M000021.html +28 -0
  148. data/ref/ruby/{files/samp/counter/counter_rspecTest_spec_rb.html → classes/XX/XHTML/Strict.html} +46 -50
  149. data/ref/ruby/classes/XX/XHTML/Strict.src/M000020.html +20 -0
  150. data/ref/ruby/classes/XX/XHTML/Transitional.html +138 -0
  151. data/ref/ruby/classes/XX/XHTML/Transitional.src/M000019.html +20 -0
  152. data/ref/ruby/classes/XX/XHTML.html +145 -0
  153. data/ref/ruby/classes/XX/XHTML.src/M000018.html +36 -0
  154. data/ref/ruby/classes/XX/XML.html +138 -0
  155. data/ref/ruby/classes/XX/XML.src/M000013.html +20 -0
  156. data/ref/ruby/classes/XX/XMLish.html +138 -0
  157. data/ref/ruby/classes/XX/XMLish.src/M000017.html +18 -0
  158. data/ref/ruby/{files/samp/counter/counter_unitTest_spec_rb.html → classes/XX.html} +39 -36
  159. data/ref/ruby/created.rid +1 -1
  160. data/ref/ruby/files/bin/generate_test_rb.html +6 -6
  161. data/ref/ruby/files/bin/generate_test_rb.src/{M000002.html → M000001.html} +0 -0
  162. data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
  163. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  164. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  165. data/ref/ruby/files/{samp/pipelined_alu/hw5_unit_bench_rb.html → lib/ruby-vpi/rcov_rb.html} +8 -5
  166. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  167. data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +1 -1
  168. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  169. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +6 -6
  170. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/{M000001.html → M000002.html} +0 -0
  171. data/ref/ruby/files/lib/ruby-vpi/vpi_util_rb.html +1 -1
  172. data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +148 -0
  173. data/ref/ruby/files/lib/ruby-vpi_rb.html +2 -1
  174. data/ref/ruby/fr_class_index.html +15 -10
  175. data/ref/ruby/fr_file_index.html +2 -20
  176. data/ref/ruby/fr_method_index.html +69 -51
  177. data/ref/ruby/index.html +1 -1
  178. data/style.css +47 -0
  179. metadata +133 -109
  180. data/ref/ruby/classes/Counter.html +0 -258
  181. data/ref/ruby/classes/Counter.src/M000038.html +0 -20
  182. data/ref/ruby/classes/Counter.src/M000039.html +0 -22
  183. data/ref/ruby/classes/Counter.src/M000040.html +0 -20
  184. data/ref/ruby/classes/Counter.src/M000041.html +0 -22
  185. data/ref/ruby/classes/CounterProto.src/M000005.html +0 -22
  186. data/ref/ruby/classes/CounterProto.src/M000006.html +0 -22
  187. data/ref/ruby/classes/Hw5UnitModel/Operation.html +0 -216
  188. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000012.html +0 -25
  189. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000013.html +0 -33
  190. data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000014.html +0 -18
  191. data/ref/ruby/classes/Hw5UnitModel.html +0 -256
  192. data/ref/ruby/classes/Hw5UnitModel.src/M000007.html +0 -24
  193. data/ref/ruby/classes/Hw5UnitModel.src/M000009.html +0 -20
  194. data/ref/ruby/classes/Hw5UnitModel.src/M000010.html +0 -38
  195. data/ref/ruby/classes/Hw5UnitModel.src/M000011.html +0 -22
  196. data/ref/ruby/classes/Hw5_unit.html +0 -196
  197. data/ref/ruby/classes/Hw5_unit.src/M000004.html +0 -27
  198. data/ref/ruby/classes/Hw5_unit_spec.html +0 -237
  199. data/ref/ruby/classes/Hw5_unit_spec.src/M000024.html +0 -21
  200. data/ref/ruby/classes/Hw5_unit_spec.src/M000025.html +0 -21
  201. data/ref/ruby/classes/Hw5_unit_spec.src/M000026.html +0 -67
  202. data/ref/ruby/classes/InputGenerator.html +0 -260
  203. data/ref/ruby/classes/InputGenerator.src/M000028.html +0 -18
  204. data/ref/ruby/classes/InputGenerator.src/M000030.html +0 -19
  205. data/ref/ruby/classes/InputGenerator.src/M000031.html +0 -38
  206. data/ref/ruby/classes/InputGenerator.src/M000032.html +0 -19
  207. data/ref/ruby/classes/InputGenerator.src/M000033.html +0 -19
  208. data/ref/ruby/classes/MaximumCounterValue.src/M000036.html +0 -23
  209. data/ref/ruby/classes/MaximumCounterValue.src/M000037.html +0 -21
  210. data/ref/ruby/classes/ResettedCounterValue.src/M000015.html +0 -19
  211. data/ref/ruby/classes/ResettedCounterValue.src/M000016.html +0 -18
  212. data/ref/ruby/classes/ResettedCounterValue.src/M000017.html +0 -23
  213. data/ref/ruby/classes/RubyVPI.src/M000050.html +0 -39
  214. data/ref/ruby/classes/TestHw5UnitModel.src/M000021.html +0 -19
  215. data/ref/ruby/classes/TestHw5UnitModel.src/M000022.html +0 -19
  216. data/ref/ruby/classes/TestHw5UnitModel.src/M000023.html +0 -64
  217. data/ref/ruby/files/bin/generate_test_tpl/bench_rb.html +0 -115
  218. data/ref/ruby/files/bin/generate_test_tpl/design_rb.html +0 -107
  219. data/ref/ruby/files/bin/generate_test_tpl/spec_rb.src/M000003.html +0 -22
  220. data/ref/ruby/files/ext/extconf_rb.html +0 -108
  221. data/ref/ruby/files/gem_extconf_rb.html +0 -114
  222. data/ref/ruby/files/samp/counter/counter_rspecTest_bench_rb.html +0 -115
  223. data/ref/ruby/files/samp/counter/counter_rspecTest_design_rb.html +0 -107
  224. data/ref/ruby/files/samp/counter/counter_rspecTest_proto_rb.html +0 -107
  225. data/ref/ruby/files/samp/counter/counter_unitTest_bench_rb.html +0 -115
  226. data/ref/ruby/files/samp/counter/counter_unitTest_design_rb.html +0 -107
  227. data/ref/ruby/files/samp/counter/counter_unitTest_proto_rb.html +0 -107
  228. data/ref/ruby/files/samp/pipelined_alu/Hw5UnitModel_rb.html +0 -101
  229. data/ref/ruby/files/samp/pipelined_alu/InputGenerator_rb.html +0 -101
  230. data/ref/ruby/files/samp/pipelined_alu/TestHw5UnitModel_rb.html +0 -111
  231. data/ref/ruby/files/samp/pipelined_alu/hw5_unit_design_rb.html +0 -107
  232. data/ref/ruby/files/samp/pipelined_alu/hw5_unit_spec_rb.html +0 -112
data/doc/xhtml/index.html CHANGED
@@ -1,4 +1,4 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
2
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ruby-VPI user manual</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><meta name="description" content="This manual explains how to use Ruby-VPI. You can find the newest version of this manual at the Ruby-VPI website." /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Ruby-VPI</span> user manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id2467214"></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="id2511298"></a><p>Permission is granted to copy, distribute and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "<span class="acronym">GNU</span> Free Documentation License".</p></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>This manual explains how to use <span class="application">Ruby-VPI</span>. You can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org" target="_top"><span class="application">Ruby-VPI</span> website</a>.</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.license.html">License</a></span></dt><dt><span class="section"><a href="introduction.manifest.html">Manifest</a></span></dt><dt><span class="section"><a href="introduction.resources.html">Resources</a></span></dt><dt><span class="section"><a href="introduction.related-works.html">Related works</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.related-works.html#introduction.related-works.pli">Ye olde PLI</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="background.html">2. Background</a></span></dt><dd><dl><dt><span class="section"><a href="background.methodology.html">Methodology</a></span></dt><dt><span class="section"><a href="background.terminology.html">Terminology</a></span></dt><dt><span class="section"><a href="background.organization.html">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="background.organization.html#organization.vpi">Interface to <span class="acronym">VPI</span></a></span></dt></dl></dd><dt><span class="section"><a href="background.running-tests.html">Running a test</a></span></dt><dd><dl><dt><span class="section"><a href="background.running-tests.html#background.running-tests.init">Initialization</a></span></dt><dt><span class="section"><a href="background.running-tests.html#background.running-tests.exec">Execution</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="usage.html">3. Usage</a></span></dt><dd><dl><dt><span class="section"><a href="usage.requirements.html">Requirements</a></span></dt><dt><span class="section"><a href="usage.installation.html">Installation and maintenance</a></span></dt><dt><span class="section"><a href="usage.tools.html">Tools</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tools.html#usage.tools.generate-test">Automated test generation</a></span></dt><dt><span class="section"><a href="usage.tools.html#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></span></dt></dl></dd><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt><dt><span class="section"><a href="usage.tutorial.html">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.declare-design">Start with a design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.generate-test">Generate a test</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.specification">Specify your expectations</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-proto">Implement the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-proto">Verify the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-design">Implement the design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-design">Verify the design</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="problems.html">4. Known problems</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html">Ruby</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html#problems.ruby.SystemStackError">SystemStackError</a></span></dt><dt><span class="section"><a href="problems.ruby.html#problems.ruby.TestUnit">test/unit</a></span></dt></dl></dd><dt><span class="section"><a href="problem.ivl.html">Icarus Verilog</a></span></dt><dd><dl><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_handle_by_name">vpi_handle_by_name</a></span></dt><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_reset">Vpi::reset</a></span></dt></dl></dd><dt><span class="section"><a href="problems.vsim.html">Mentor Modelsim</a></span></dt><dd><dl><dt><span class="section"><a href="problems.vsim.html#problems.vsim.ruby_run">ruby_run()</a></span></dt></dl></dd></dl></dd><dt><span class="glossary"><a href="glossary.html">Glossary</a></span></dt><dt><span class="appendix"><a href="gfdl.html">A. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="section"><a href="gfdl-0.html">PREAMBLE</a></span></dt><dt><span class="section"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt><dt><span class="section"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="section"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="section"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="gfdl-addendum.html">ADDENDUM: How to use this License for
4
- your documents</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>2.1. <a href="background.organization.html#fig..organization">Overall organization of a test</a></dt><dt>2.2. <a href="background.organization.html#fig..organization.detail">Detailed organization of a test</a></dt><dt>2.3. <a href="background.running-tests.html#fig..ruby_init">Initialization of a test</a></dt><dt>2.4. <a href="background.running-tests.html#fig..ruby_relay">Execution of a test</a></dt><dt>3.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>3.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in RSpec format</a></dt><dt>3.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in unit test format</a></dt><dt>3.4. <a href="usage.tutorial.html#fig..counter_rspecTest_spec.rb">Specification implemented in RSpec format</a></dt><dt>3.5. <a href="usage.tutorial.html#fig..counter_unitTest_spec.rb">Specification implemented in unit test format</a></dt><dt>3.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>3.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in RSpec format</a></dt><dt>3.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in unit test format</a></dt><dt>3.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>3.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in RSpec format</a></dt><dt>3.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in unit test format</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="background.organization.html#table..handle-property-accessor-naming-format">Naming format for accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>2.2. <a href="background.organization.html#id2482973">Possible accessors and their implications</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="background.organization.html#ex..handle-property-accessor-naming-format">Accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>4.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>4.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>4.3. <a href="problem.ivl.html#ex..TestFoo_fix">Fixed design with wired registers</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
3
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Ruby-VPI user manual</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><meta name="description" content="This manual explains how to use Ruby-VPI. You can find the newest version of this manual at the Ruby-VPI website." /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="application">Ruby-VPI</span> user manual</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="book" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id2467210"></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="id2511299"></a><p>Permission is granted to copy, distribute and/or modify this document under the terms of the <span class="acronym">GNU</span> Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "<span class="acronym">GNU</span> Free Documentation License".</p></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>This manual explains how to use <span class="application">Ruby-VPI</span>. You can find the newest version of this manual at the <a href="http://ruby-vpi.rubyforge.org" target="_top"><span class="application">Ruby-VPI</span> website</a>.</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.license.html">License</a></span></dt><dt><span class="section"><a href="introduction.manifest.html">Manifest</a></span></dt><dt><span class="section"><a href="introduction.resources.html">Resources</a></span></dt><dt><span class="section"><a href="introduction.related-works.html">Related works</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.related-works.html#introduction.related-works.pli">Ye olde PLI</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="background.html">2. Background</a></span></dt><dd><dl><dt><span class="section"><a href="background.methodology.html">Methodology</a></span></dt><dt><span class="section"><a href="background.terminology.html">Terminology</a></span></dt><dt><span class="section"><a href="background.organization.html">Organization</a></span></dt><dd><dl><dt><span class="section"><a href="background.organization.html#organization.vpi">Interface to <span class="acronym">VPI</span></a></span></dt></dl></dd><dt><span class="section"><a href="background.running-tests.html">Running a test</a></span></dt><dd><dl><dt><span class="section"><a href="background.running-tests.html#background.running-tests.init">Initialization</a></span></dt><dt><span class="section"><a href="background.running-tests.html#background.running-tests.exec">Execution</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="usage.html">3. Usage</a></span></dt><dd><dl><dt><span class="section"><a href="usage.requirements.html">Requirements</a></span></dt><dt><span class="section"><a href="usage.installation.html">Installation and maintenance</a></span></dt><dt><span class="section"><a href="usage.tools.html">Tools</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tools.html#usage.tools.generate-test">Automated test generation</a></span></dt><dt><span class="section"><a href="usage.tools.html#usage.tools.verilog-ruby-conv">Verilog to Ruby conversion</a></span></dt></dl></dd><dt><span class="section"><a href="usage.examples.html">Examples</a></span></dt><dt><span class="section"><a href="usage.tutorial.html">Tutorial</a></span></dt><dd><dl><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.declare-design">Start with a design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.generate-test">Generate a test</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.specification">Specify your expectations</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-proto">Implement the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-proto">Verify the prototype</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.implement-design">Implement the design</a></span></dt><dt><span class="section"><a href="usage.tutorial.html#usage.tutorial.test-design">Verify the design</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="problems.html">4. Known problems</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html">Ruby</a></span></dt><dd><dl><dt><span class="section"><a href="problems.ruby.html#problems.ruby.SystemStackError">SystemStackError</a></span></dt><dt><span class="section"><a href="problems.ruby.html#problems.ruby.TestUnit">test/unit</a></span></dt></dl></dd><dt><span class="section"><a href="problem.ivl.html">Icarus Verilog</a></span></dt><dd><dl><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_handle_by_name">vpi_handle_by_name</a></span></dt><dt><span class="section"><a href="problem.ivl.html#problems.ivl.vpi_reset">Vpi::reset</a></span></dt></dl></dd><dt><span class="section"><a href="problems.vsim.html">Mentor Modelsim</a></span></dt><dd><dl><dt><span class="section"><a href="problems.vsim.html#problems.vsim.ruby_run">ruby_run()</a></span></dt></dl></dd></dl></dd><dt><span class="glossary"><a href="glossary.html">Glossary</a></span></dt><dt><span class="appendix"><a href="gfdl.html">A. GNU Free Documentation License</a></span></dt><dd><dl><dt><span class="section"><a href="gfdl-0.html">PREAMBLE</a></span></dt><dt><span class="section"><a href="gfdl-1.html">APPLICABILITY AND DEFINITIONS</a></span></dt><dt><span class="section"><a href="gfdl-2.html">VERBATIM COPYING</a></span></dt><dt><span class="section"><a href="gfdl-3.html">COPYING IN QUANTITY</a></span></dt><dt><span class="section"><a href="gfdl-4.html">MODIFICATIONS</a></span></dt><dt><span class="section"><a href="gfdl-5.html">COMBINING DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-6.html">COLLECTIONS OF DOCUMENTS</a></span></dt><dt><span class="section"><a href="gfdl-7.html">AGGREGATION WITH INDEPENDENT WORKS</a></span></dt><dt><span class="section"><a href="gfdl-8.html">TRANSLATION</a></span></dt><dt><span class="section"><a href="gfdl-9.html">TERMINATION</a></span></dt><dt><span class="section"><a href="gfdl-10.html">FUTURE REVISIONS OF THIS LICENSE</a></span></dt><dt><span class="section"><a href="gfdl-addendum.html">ADDENDUM: How to use this License for
4
+ your documents</a></span></dt></dl></dd></dl></div><div class="list-of-figures"><p><b>List of Figures</b></p><dl><dt>2.1. <a href="background.organization.html#fig..organization">Overall organization of a test</a></dt><dt>2.2. <a href="background.organization.html#fig..organization.detail">Detailed organization of a test</a></dt><dt>2.3. <a href="background.running-tests.html#fig..ruby_init">Initialization of a test</a></dt><dt>2.4. <a href="background.running-tests.html#fig..ruby_relay">Execution of a test</a></dt><dt>3.1. <a href="usage.tutorial.html#fig..counter.v_decl">Declaration of a simple up-counter with synchronous reset</a></dt><dt>3.2. <a href="usage.tutorial.html#fig..generate-test.rspec">Generating a test with specification in RSpec format</a></dt><dt>3.3. <a href="usage.tutorial.html#fig..generate-test.unit-test">Generating a test with specification in unit test format</a></dt><dt>3.4. <a href="usage.tutorial.html#fig..counter_rspecTest_spec.rb">Specification implemented in RSpec format</a></dt><dt>3.5. <a href="usage.tutorial.html#fig..counter_unitTest_spec.rb">Specification implemented in unit test format</a></dt><dt>3.6. <a href="usage.tutorial.html#fig..counter_proto.rb">Ruby prototype of our Verilog design</a></dt><dt>3.7. <a href="usage.tutorial.html#fig..test-proto.rspec">Running a test with specification in RSpec format</a></dt><dt>3.8. <a href="usage.tutorial.html#fig..test-proto.unit-test">Running a test with specification in unit test format</a></dt><dt>3.9. <a href="usage.tutorial.html#fig..counter.v_impl">Implementation of a simple up-counter with synchronous reset</a></dt><dt>3.10. <a href="usage.tutorial.html#fig..test-design.rspec">Running a test with specification in RSpec format</a></dt><dt>3.11. <a href="usage.tutorial.html#fig..test-design.unit-test">Running a test with specification in unit test format</a></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>2.1. <a href="background.organization.html#table..handle-property-accessor-naming-format">Naming format for accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>2.2. <a href="background.organization.html#id2482977">Possible accessors and their implications</a></dt></dl></div><div class="list-of-examples"><p><b>List of Examples</b></p><dl><dt>2.1. <a href="background.organization.html#ex..handle-property-accessor-naming-format">Accessing a handle's <span class="acronym">VPI</span> properties</a></dt><dt>4.1. <a href="problem.ivl.html#ex..TestFoo">Part of a bench which instantiates a Verilog design</a></dt><dt>4.2. <a href="problem.ivl.html#ex..TestFoo_bad">Bad design with unconnected registers</a></dt><dt>4.3. <a href="problem.ivl.html#ex..TestFoo_fix">Fixed design with wired registers</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="introduction.html"><img src="images/next.png" alt="Next" /></a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction</td></tr></table></div></body></html>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
2
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tutorial</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="usage.html" title="Chapter 3. Usage" /><link rel="prev" href="usage.examples.html" title="Examples" /><link rel="next" href="problems.html" title="Chapter 4. Known problems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tutorial</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 3. Usage</th><td width="20%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="usage.tutorial"></a>Tutorial</h2></div></div></div><div class="procedure"><a id="id2523043"></a><p class="title"><b>Procedure 3.1. Typical way of using <span class="application">Ruby-VPI</span></b></p><ol type="1"><li><p><a href="usage.tutorial.html#usage.tutorial.declare-design" title="Start with a design">Declare the design</a>, which is a Verilog module, using Verilog 2001 syntax.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.generate-test" title="Generate a test">Generate a test</a> for the design using the <a href="usage.tools.html#usage.tools.generate-test" title="Automated test generation">automated test generator</a> tool.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.specification" title="Specify your expectations">Identify your expectations</a> for the design and implement them in the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-proto" title="Implement the prototype">Implement the prototype</a> of the design in Ruby.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-proto" title="Verify the prototype">Verify the prototype</a> against the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-design" title="Implement the design">Implement the design</a> in Verilog once the prototype has been verified.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-design" title="Verify the design">Verify the design</a> against the specification.</p></li></ol></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.declare-design"></a>Start with a design</h3></div></div></div><p>First, we need a design to verify. In this tutorial, <a href="usage.tutorial.html#fig..counter.v_decl" title="Figure 3.1. Declaration of a simple up-counter with synchronous reset">Figure 3.1, “Declaration of a simple up-counter with synchronous reset”</a> will serve as our design. Its interface is composed of the following parts:
3
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tutorial</title><link rel="stylesheet" href="styles/manual.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.68.1" /><link rel="start" href="index.html" title="Ruby-VPI user manual" /><link rel="up" href="usage.html" title="Chapter 3. Usage" /><link rel="prev" href="usage.examples.html" title="Examples" /><link rel="next" href="problems.html" title="Chapter 4. Known problems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tutorial</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="usage.examples.html"><img src="images/prev.png" alt="Prev" /></a> </td><th width="60%" align="center">Chapter 3. Usage</th><td width="20%" align="right"> <a accesskey="n" href="problems.html"><img src="images/next.png" alt="Next" /></a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="usage.tutorial"></a>Tutorial</h2></div></div></div><div class="procedure"><a id="id2523047"></a><p class="title"><b>Procedure 3.1. Typical way of using <span class="application">Ruby-VPI</span></b></p><ol type="1"><li><p><a href="usage.tutorial.html#usage.tutorial.declare-design" title="Start with a design">Declare the design</a>, which is a Verilog module, using Verilog 2001 syntax.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.generate-test" title="Generate a test">Generate a test</a> for the design using the <a href="usage.tools.html#usage.tools.generate-test" title="Automated test generation">automated test generator</a> tool.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.specification" title="Specify your expectations">Identify your expectations</a> for the design and implement them in the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-proto" title="Implement the prototype">Implement the prototype</a> of the design in Ruby.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-proto" title="Verify the prototype">Verify the prototype</a> against the specification.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.implement-design" title="Implement the design">Implement the design</a> in Verilog once the prototype has been verified.</p></li><li><p><a href="usage.tutorial.html#usage.tutorial.test-design" title="Verify the design">Verify the design</a> against the specification.</p></li></ol></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.declare-design"></a>Start with a design</h3></div></div></div><p>First, we need a design to verify. In this tutorial, <a href="usage.tutorial.html#fig..counter.v_decl" title="Figure 3.1. Declaration of a simple up-counter with synchronous reset">Figure 3.1, “Declaration of a simple up-counter with synchronous reset”</a> will serve as our design. Its interface is composed of the following parts:
4
4
  </p><div class="variablelist"><dl><dt><span class="term"><code class="constant">Size</code></span></dt><dd><p>This parameter defines the number of bits used to represent the counter's value.</p></dd><dt><span class="term"><code class="varname">clock</code></span></dt><dd><p>Each positive edge of this signal causes the <code class="varname">count</code> register to increment.</p></dd><dt><span class="term"><code class="varname">reset</code></span></dt><dd><p>Assertion of this signal causes the <code class="varname">count</code> register to become zero.</p></dd><dt><span class="term"><code class="varname">count</code></span></dt><dd><p>This register contains the counter's value.</p></dd></dl></div><p>
5
5
  </p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important: Before we continue…"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png" /></td><th align="left">Before we continue…</th></tr><tr><td align="left" valign="top"><p>Save the source code shown in <a href="usage.tutorial.html#fig..counter.v_decl" title="Figure 3.1. Declaration of a simple up-counter with synchronous reset">Figure 3.1, “Declaration of a simple up-counter with synchronous reset”</a> into a file named <code class="filename">counter.v</code>.</p></td></tr></table></div><div class="figure"><a id="fig..counter.v_decl"></a><p class="title"><b>Figure 3.1. Declaration of a simple up-counter with synchronous reset</b></p><pre class="programlisting">
6
6
  <span class="token">module</span> counter #(<span class="token">parameter</span> <code class="constant">Size</code> = <code class="literal">5</code>) (
@@ -10,7 +10,7 @@
10
10
  );
11
11
  <span class="token">endmodule</span>
12
12
  </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.generate-test"></a>Generate a test</h3></div></div></div><p>Now that we have a design to verify, let us generate a test for it using the automated test generator tool. This tool allows us to implement our specification in either RSpec, unit test, or our very own format. Each format represents a different software development methodology: RSpec represents <a href="glossary.html#term..BDD"><em class="glossterm">BDD</em></a>, unit testing represents <a href="glossary.html#term..TDD"><em class="glossterm">TDD</em></a>, and our own format can represent another methodology.</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png" /></td><th align="left">Note</th></tr><tr><td align="left" valign="top"><p>In this tutorial, we will see how to implement our specification in both RSpec and unit test formats.</p></td></tr></table></div><p>Once we have decided how we want to implement our specification, we can proceed to generate a test for our design. <a href="usage.tutorial.html#fig..generate-test.rspec" title="Figure 3.2. Generating a test with specification in RSpec format">Figure 3.2, “Generating a test with specification in RSpec format”</a> and <a href="usage.tutorial.html#fig..generate-test.unit-test" title="Figure 3.3. Generating a test with specification in unit test format">Figure 3.3, “Generating a test with specification in unit test format”</a> illustrate this process. Here, the test generation tool produces a test composed of the following parts:
13
- </p><div class="variablelist"><dl><dt><span class="term">Runner</span></dt><dd><p>Written in Rake, this file builds and runs the test bench.</p></dd><dt><span class="term">Bench</span></dt><dd><p>Written in Verilog and Ruby, these files define the testing environment.</p></dd><dt><span class="term">Design</span></dt><dd><p>Written in Ruby, this file provides an interface to the design under test.</p></dd><dt><span class="term">Prototype</span></dt><dd><p>Written in Ruby, this file defines a prototype of the design under test.</p></dd><dt><span class="term">Specification</span></dt><dd><p>Written in Ruby, this file verifies the design.</p></dd></dl></div><p>
13
+ </p><div class="variablelist"><dl><dt><span class="term">Runner</span></dt><dd><p>Written in Rake, this file builds and runs the test.</p></dd><dt><span class="term">Bench</span></dt><dd><p>Written in Verilog and Ruby, these files define the testing environment.</p></dd><dt><span class="term">Design</span></dt><dd><p>Written in Ruby, this file provides an interface to the design being verified.</p></dd><dt><span class="term">Prototype</span></dt><dd><p>Written in Ruby, this file defines a prototype of the design being verified.</p></dd><dt><span class="term">Specification</span></dt><dd><p>Written in Ruby, this file verifies the design.</p></dd></dl></div><p>
14
14
  </p><p>The reason for dividing a single test into these parts is mainly to decouple the design from the specification. This allows you to focus on writing the specification while the remainder is automatically generated by the tool. For example, when the interface of a Verilog module changes, you would simply re-run this tool to incorporate those changes into the test without diverting your focus from the specification.</p><div class="figure"><a id="fig..generate-test.rspec"></a><p class="title"><b>Figure 3.2. Generating a test with specification in RSpec format</b></p><pre class="screen">
15
15
  <code class="prompt">$</code> <strong class="userinput"><code><span><strong class="command">generate_test.rb <em class="replaceable"><code>counter.v</code></em> <code class="option">--rspec</code> <code class="option">--name</code> <em class="replaceable"><code>rspecTest</code></em></strong></span></code></strong>
16
16
  <code class="computeroutput">Using name `rspecTest' for generated test.
@@ -135,7 +135,7 @@ Parsed module: counter
135
135
  <span class="token">end</span>
136
136
  <span class="token">end</span>
137
137
  <span class="token">end</span>
138
- </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.test-proto"></a>Verify the prototype</h3></div></div></div><p>Now that we have implemented our prototype, we are ready to verify it against our specification by running the test. <a href="usage.tutorial.html#fig..test-proto.rspec" title="Figure 3.7. Running a test with specification in RSpec format">Figure 3.7, “Running a test with specification in RSpec format”</a> and <a href="usage.tutorial.html#fig..test-proto.unit-test" title="Figure 3.8. Running a test with specification in unit test format">Figure 3.8, “Running a test with specification in unit test format”</a> illustrate this process.</p><p>Here, the <code class="varname">PROTO</code> environment variable is set—any value is fine—before running the test in order to replace the design with the prototype in the simulation. Otherwise, our design will be verified—instead of our prototype—against our specification. Furthermore, the manner in which the <code class="varname">PROTO</code> environment variable is set in these figures follows the syntax of the <span class="application"><span class="acronym">GNU</span> <span class="acronym">BASH</span></span> shell. If you use a different shell, you may have to use different syntax, or a different command altogether, in order to set this variable. Finally, the Icarus Verilog simulator, denoted by <em class="replaceable"><code>ivl</code></em>, is used to simulate our design.</p><div class="figure"><a id="fig..test-proto.rspec"></a><p class="title"><b>Figure 3.7. Running a test with specification in RSpec format</b></p><pre class="screen">
138
+ </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.test-proto"></a>Verify the prototype</h3></div></div></div><p>Now that we have implemented our prototype, we are ready to verify it against our specification by running the test. <a href="usage.tutorial.html#fig..test-proto.rspec" title="Figure 3.7. Running a test with specification in RSpec format">Figure 3.7, “Running a test with specification in RSpec format”</a> and <a href="usage.tutorial.html#fig..test-proto.unit-test" title="Figure 3.8. Running a test with specification in unit test format">Figure 3.8, “Running a test with specification in unit test format”</a> illustrate this process.</p><p>Here, the <code class="varname">PROTO</code> environment variable is set—any value is fine—before running the test in order to replace the design with the prototype in the simulation. Otherwise, instead of our prototype, our design will be verified against our specification. Furthermore, the manner in which the <code class="varname">PROTO</code> environment variable is set in these figures follows the syntax of the <span class="application"><span class="acronym">GNU</span> <span class="acronym">BASH</span></span> shell. If you use a different shell, you may have to use different syntax, or a different command altogether, in order to set this variable. Finally, the Icarus Verilog simulator, denoted by <em class="replaceable"><code>ivl</code></em>, is used to simulate our design.</p><div class="figure"><a id="fig..test-proto.rspec"></a><p class="title"><b>Figure 3.7. Running a test with specification in RSpec format</b></p><pre class="screen">
139
139
  <code class="prompt">$</code> <strong class="userinput"><code><span><strong class="command">export <em class="replaceable"><code>PROTO=1</code></em></strong></span></code></strong>
140
140
  <code class="prompt">$</code> <strong class="userinput"><code><span><strong class="command">rake <code class="option">-f</code> <em class="replaceable"><code>counter_rspecTest_runner.rake</code></em> <em class="replaceable"><code>ivl</code></em></strong></span></code></strong>
141
141
  <code class="computeroutput">counter_rspecTest: verifying prototype instead of design
@@ -161,7 +161,7 @@ Started
161
161
  Finished in 0.040668 seconds.
162
162
 
163
163
  3 tests, 35 assertions, 0 failures, 0 errors</code>
164
- </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.implement-design"></a>Implement the design</h3></div></div></div><p>Now that we have implemented and verified our prototype, we are ready to implement our design. This is often quite simple because we translate <span class="emphasis"><em>existing</em></span> code from Ruby into Verilog. <a href="usage.tutorial.html#fig..counter.v_impl" title="Figure 3.9. Implementation of a simple up-counter with synchronous reset">Figure 3.9, “Implementation of a simple up-counter with synchronous reset”</a> illustrates the result of this process.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important: Before we continue…"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png" /></td><th align="left">Before we continue…</th></tr><tr><td align="left" valign="top"><p>Replace the contents of the file named <code class="filename">counter.v</code> with the source code shown in <a href="usage.tutorial.html#fig..counter.v_impl" title="Figure 3.9. Implementation of a simple up-counter with synchronous reset">Figure 3.9, “Implementation of a simple up-counter with synchronous reset”</a>.</p></td></tr></table></div><div class="figure"><a id="fig..counter.v_impl"></a><p class="title"><b>Figure 3.9. Implementation of a simple up-counter with synchronous reset</b></p><pre class="programlisting">
164
+ </pre></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="usage.tutorial.implement-design"></a>Implement the design</h3></div></div></div><p>Now that we have implemented and verified our prototype, we are ready to implement our design. This is often quite simple because we translate <span class="emphasis"><em>existing</em></span> code from Ruby (our prototype) into Verilog (our design). <a href="usage.tutorial.html#fig..counter.v_impl" title="Figure 3.9. Implementation of a simple up-counter with synchronous reset">Figure 3.9, “Implementation of a simple up-counter with synchronous reset”</a> illustrates the result of this process. Once again, note the striking similarities between the implementations of our prototype and our design.</p><div class="important" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Important: Before we continue…"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="images/important.png" /></td><th align="left">Before we continue…</th></tr><tr><td align="left" valign="top"><p>Replace the contents of the file named <code class="filename">counter.v</code> with the source code shown in <a href="usage.tutorial.html#fig..counter.v_impl" title="Figure 3.9. Implementation of a simple up-counter with synchronous reset">Figure 3.9, “Implementation of a simple up-counter with synchronous reset”</a>.</p></td></tr></table></div><div class="figure"><a id="fig..counter.v_impl"></a><p class="title"><b>Figure 3.9. Implementation of a simple up-counter with synchronous reset</b></p><pre class="programlisting">
165
165
  <span class="token">module</span> counter #(<span class="token">parameter</span> <code class="constant">Size</code> = <code class="literal">5</code>) (
166
166
  <span class="token">input</span> <code class="varname">clock</code>,
167
167
  <span class="token">input</span> <code class="varname">reset</code>,
data/header.html ADDED
@@ -0,0 +1,114 @@
1
+ <head>
2
+ <link rel="stylesheet" type="text/css" href="style.css" />
3
+ </head>
4
+
5
+ <h1 style="text-align: center;">Welcome to Ruby-VPI</h1>
6
+
7
+
8
+ <p>Ruby-VPI is a <a href="http://ruby-lang.org">Ruby interface</a> to <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945">Verilog <span class="caps">VPI</span></a>. It lets you create complex Verilog test benches easily and wholly in Ruby.</p>
9
+
10
+
11
+ <h2>Features</h2>
12
+
13
+
14
+ <ul>
15
+ <li>Apply <a href="http://www.martinfowler.com/articles/newMethodology.html">agile techniques</a> to develop hardware.
16
+ <ul>
17
+ <li>Rapidly prototype and verify your designs using <a href="http://behaviour-driven.org/" title="behavior-driven development"><span class="caps">BDD</span></a>, <a href="http://www.agiledata.org/essays/tdd.html" title="test-driven development"><span class="caps">TDD</span></a>, and more.</li>
18
+ <li>Consolidate your requirements and verification efforts through executable specifications.</li>
19
+ <li>Reuse the <em>same</em> specification to verify both prototype and design.</li>
20
+ </ul></li>
21
+ </ul>
22
+
23
+
24
+ <ul>
25
+ <li>Utilize Ruby&#8217;s power and elegance (<a href="http://www.ruby-doc.org/whyruby">Why choose Ruby?</a>).
26
+ <ul>
27
+ <li>Built-in support for unlimited length integers, regular expressions, networking, multi-threading, system calls, <em>ad infinium</em>!</li>
28
+ <li>Easy to use; doesn&#8217;t get in your way.</li>
29
+ <li>Makes programming <em>fun</em> again!</li>
30
+ </ul></li>
31
+ </ul>
32
+
33
+
34
+ <ul>
35
+ <li>Study, modify, or distribute this is free software, released under the <a href="http://www.gnu.org/copyleft/gpl.html"><span class="caps">GNU</span> General Public License</a>, as you see fit.</li>
36
+ </ul>
37
+
38
+
39
+ <div class="variablelist">
40
+ <dl>
41
+
42
+ <dt>
43
+ <span class="term">
44
+ <a href="./doc/usage.tutorial.html" target="_top">Tutorial</a>
45
+ </span>
46
+ </dt>
47
+ <dd>
48
+ <p>Learn how to use Ruby-VPI quickly.</p>
49
+ </dd>
50
+
51
+ <dt>
52
+ <span class="term">
53
+ <a href="./doc/" target="_top">Manual</a>
54
+ </span>
55
+ </dt>
56
+ <dd>
57
+ <p>Complete documentation for users. Start here!</p>
58
+ </dd>
59
+
60
+ <dt>
61
+ <span class="term">
62
+ <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
63
+ Project</a>
64
+ </span>
65
+ </dt>
66
+ <dd>
67
+ <p>
68
+ Access project facilities, hosted generously by <a href="http://rubyforge.org" target="_top">
69
+ RubyForge</a>.
70
+ </p>
71
+ </dd>
72
+ <dt>
73
+ <span class="term">
74
+ <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
75
+ Tracker</a>
76
+ </span>
77
+ </dt>
78
+ <dd>
79
+ <p>
80
+ Report problems, contribute patches, and more.</p>
81
+ </dd>
82
+ <dt>
83
+ <span class="term">
84
+ <a href="http://rubyforge.org/frs/?group_id=1339" target="_top">
85
+ Releases</a>
86
+ </span>
87
+ </dt>
88
+ <dd>
89
+ <p>
90
+ Download the newest releases.</p>
91
+ </dd>
92
+ <dt>
93
+ <span class="term">
94
+ <a href="http://rubyforge.org/scm/?group_id=1339" target="_top">
95
+ Sources</a>
96
+ </span>
97
+ </dt>
98
+ <dd>
99
+ <p>
100
+ Browse or access the source code repository.</p>
101
+ </dd>
102
+ <dt>
103
+ <span class="term">
104
+ <a href="http://rubyforge.org/forum/?group_id=1339" target="_top">
105
+ Forums</a>
106
+ </span>
107
+ </dt>
108
+ <dd>
109
+ <p>
110
+ Ask for help, give feedback, or discuss.</p>
111
+ </dd>
112
+ </dl>
113
+ </div>
114
+ </div>
data/header.part.html ADDED
@@ -0,0 +1,114 @@
1
+ <head>
2
+ <link rel="stylesheet" type="text/css" href="style.css" />
3
+ </head>
4
+
5
+ <h1 style="text-align: center;">Welcome to Ruby-VPI</h1>
6
+
7
+
8
+ <p>Ruby-VPI is a <a href="http://ruby-lang.org">Ruby interface</a> to <a href="http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945">Verilog <span class="caps">VPI</span></a>. It lets you create complex Verilog test benches easily and wholly in Ruby.</p>
9
+
10
+
11
+ <h2>Features</h2>
12
+
13
+
14
+ <ul>
15
+ <li>Apply <a href="http://www.martinfowler.com/articles/newMethodology.html">agile techniques</a> to develop hardware.
16
+ <ul>
17
+ <li>Rapidly prototype and verify your designs using <a href="http://behaviour-driven.org/" title="behavior-driven development"><span class="caps">BDD</span></a>, <a href="http://www.agiledata.org/essays/tdd.html" title="test-driven development"><span class="caps">TDD</span></a>, and more.</li>
18
+ <li>Consolidate your requirements and verification efforts through executable specifications.</li>
19
+ <li>Reuse the <em>same</em> specification to verify both prototype and design.</li>
20
+ </ul></li>
21
+ </ul>
22
+
23
+
24
+ <ul>
25
+ <li>Utilize Ruby&#8217;s power and elegance (<a href="http://www.ruby-doc.org/whyruby">Why choose Ruby?</a>).
26
+ <ul>
27
+ <li>Built-in support for unlimited length integers, regular expressions, networking, multi-threading, system calls, <em>ad infinium</em>!</li>
28
+ <li>Easy to use; doesn&#8217;t get in your way.</li>
29
+ <li>Makes programming <em>fun</em> again!</li>
30
+ </ul></li>
31
+ </ul>
32
+
33
+
34
+ <ul>
35
+ <li>Study, modify, or distribute this is free software, released under the <a href="http://www.gnu.org/copyleft/gpl.html"><span class="caps">GNU</span> General Public License</a>, as you see fit.</li>
36
+ </ul>
37
+
38
+
39
+ <div class="variablelist">
40
+ <dl>
41
+
42
+ <dt>
43
+ <span class="term">
44
+ <a href="./doc/usage.tutorial.html" target="_top">Tutorial</a>
45
+ </span>
46
+ </dt>
47
+ <dd>
48
+ <p>Learn how to use Ruby-VPI quickly.</p>
49
+ </dd>
50
+
51
+ <dt>
52
+ <span class="term">
53
+ <a href="./doc/" target="_top">Manual</a>
54
+ </span>
55
+ </dt>
56
+ <dd>
57
+ <p>Complete documentation for users. Start here!</p>
58
+ </dd>
59
+
60
+ <dt>
61
+ <span class="term">
62
+ <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
63
+ Project</a>
64
+ </span>
65
+ </dt>
66
+ <dd>
67
+ <p>
68
+ Access project facilities, hosted generously by <a href="http://rubyforge.org" target="_top">
69
+ RubyForge</a>.
70
+ </p>
71
+ </dd>
72
+ <dt>
73
+ <span class="term">
74
+ <a href="http://rubyforge.org/projects/ruby-vpi" target="_top">
75
+ Tracker</a>
76
+ </span>
77
+ </dt>
78
+ <dd>
79
+ <p>
80
+ Report problems, contribute patches, and more.</p>
81
+ </dd>
82
+ <dt>
83
+ <span class="term">
84
+ <a href="http://rubyforge.org/frs/?group_id=1339" target="_top">
85
+ Releases</a>
86
+ </span>
87
+ </dt>
88
+ <dd>
89
+ <p>
90
+ Download the newest releases.</p>
91
+ </dd>
92
+ <dt>
93
+ <span class="term">
94
+ <a href="http://rubyforge.org/scm/?group_id=1339" target="_top">
95
+ Sources</a>
96
+ </span>
97
+ </dt>
98
+ <dd>
99
+ <p>
100
+ Browse or access the source code repository.</p>
101
+ </dd>
102
+ <dt>
103
+ <span class="term">
104
+ <a href="http://rubyforge.org/forum/?group_id=1339" target="_top">
105
+ Forums</a>
106
+ </span>
107
+ </dt>
108
+ <dd>
109
+ <p>
110
+ Ask for help, give feedback, or discuss.</p>
111
+ </dd>
112
+ </dl>
113
+ </div>
114
+ </div>