ruby-vpi 16.0.1 → 17.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. data/LICENSE +19 -19
  2. data/README +1 -1
  3. data/Rakefile +35 -32
  4. data/bin/convert.rb +28 -0
  5. data/bin/generate/design.rb +16 -0
  6. data/bin/generate/proto.rb +13 -0
  7. data/bin/generate/runner.rake +33 -0
  8. data/bin/generate/spec.rb +45 -0
  9. data/bin/generate.rb +177 -0
  10. data/bin/ruby-vpi +56 -0
  11. data/doc/Rakefile +20 -4
  12. data/doc/common.css +92 -33
  13. data/doc/common.inc +13 -0
  14. data/doc/common.tpl +42 -28
  15. data/doc/history.doc +11 -11
  16. data/doc/history.html +769 -248
  17. data/doc/history.inc +909 -0
  18. data/doc/history.rb +9 -0
  19. data/doc/history.yaml +69 -0
  20. data/doc/intro.inc +170 -178
  21. data/doc/lib/doc_format.rb +57 -144
  22. data/doc/lib/doc_proxy.rb +504 -88
  23. data/doc/lib/erb_content.rb +8 -8
  24. data/doc/lib/erb_proxy.rb +17 -17
  25. data/doc/manual.doc +626 -777
  26. data/doc/manual.html +1541 -1031
  27. data/doc/memo.doc +38 -36
  28. data/doc/memo.html +64 -28
  29. data/doc/readme.doc +4 -31
  30. data/doc/readme.html +221 -163
  31. data/doc/rss.erb +1 -1
  32. data/doc/rss.xml +73 -1761
  33. data/ext/Rakefile +6 -5
  34. data/ext/main.c +17 -15
  35. data/ext/relay.c +4 -7
  36. data/ext/relay.h +2 -2
  37. data/ext/swig_vpi.h +2 -2
  38. data/ext/swig_vpi.i +1 -2
  39. data/ext/swig_wrap.cin +12 -16
  40. data/ext/vlog.c +5 -5
  41. data/ext/vlog.h +2 -2
  42. data/lib/ruby-vpi/erb.rb +3 -3
  43. data/lib/ruby-vpi/float.rb +2 -2
  44. data/lib/ruby-vpi/rcov.rb +5 -7
  45. data/lib/ruby-vpi/runner.rb +43 -41
  46. data/lib/ruby-vpi/runner_boot_loader.rb +117 -0
  47. data/lib/ruby-vpi/runner_proxy.rb +6 -8
  48. data/lib/ruby-vpi/util.rb +10 -0
  49. data/lib/ruby-vpi/verilog_parser.rb +28 -56
  50. data/lib/ruby-vpi/vpi.rb +168 -123
  51. data/lib/ruby-vpi.rb +22 -143
  52. data/ref/c/annotated.html +1 -1
  53. data/ref/c/common_8h.html +1 -1
  54. data/ref/c/files.html +1 -1
  55. data/ref/c/functions.html +1 -1
  56. data/ref/c/functions_vars.html +1 -1
  57. data/ref/c/globals.html +1 -1
  58. data/ref/c/globals_0x63.html +1 -1
  59. data/ref/c/globals_0x65.html +1 -1
  60. data/ref/c/globals_0x66.html +1 -1
  61. data/ref/c/globals_0x6d.html +1 -1
  62. data/ref/c/globals_0x70.html +1 -1
  63. data/ref/c/globals_0x72.html +1 -1
  64. data/ref/c/globals_0x73.html +1 -1
  65. data/ref/c/globals_0x74.html +1 -1
  66. data/ref/c/globals_0x76.html +1 -1
  67. data/ref/c/globals_0x78.html +1 -1
  68. data/ref/c/globals_defs.html +1 -1
  69. data/ref/c/globals_defs_0x65.html +1 -1
  70. data/ref/c/globals_defs_0x70.html +1 -1
  71. data/ref/c/globals_defs_0x76.html +1 -1
  72. data/ref/c/globals_defs_0x78.html +1 -1
  73. data/ref/c/globals_enum.html +1 -1
  74. data/ref/c/globals_eval.html +1 -1
  75. data/ref/c/globals_func.html +1 -1
  76. data/ref/c/globals_type.html +1 -1
  77. data/ref/c/globals_vars.html +1 -1
  78. data/ref/c/index.html +1 -1
  79. data/ref/c/main_8c.html +1 -1
  80. data/ref/c/main_8h.html +1 -1
  81. data/ref/c/relay_8c.html +1 -1
  82. data/ref/c/relay_8h.html +1 -1
  83. data/ref/c/structt__cb__data.html +1 -1
  84. data/ref/c/structt__vpi__delay.html +1 -1
  85. data/ref/c/structt__vpi__error__info.html +1 -1
  86. data/ref/c/structt__vpi__strengthval.html +1 -1
  87. data/ref/c/structt__vpi__systf__data.html +1 -1
  88. data/ref/c/structt__vpi__time.html +1 -1
  89. data/ref/c/structt__vpi__value.html +1 -1
  90. data/ref/c/structt__vpi__vecval.html +1 -1
  91. data/ref/c/structt__vpi__vlog__info.html +1 -1
  92. data/ref/c/verilog_8h.html +1 -1
  93. data/ref/c/vlog_8c.html +1 -1
  94. data/ref/c/vlog_8h.html +1 -1
  95. data/ref/c/vpi__user_8h.html +1 -1
  96. data/ref/ruby/classes/ERB.html +5 -5
  97. data/ref/ruby/classes/ERB.src/{M000024.html → M000026.html} +0 -0
  98. data/ref/ruby/classes/FileUtils.html +11 -11
  99. data/ref/ruby/classes/FileUtils.src/{M000025.html → M000027.html} +0 -0
  100. data/ref/ruby/classes/FileUtils.src/{M000026.html → M000028.html} +0 -0
  101. data/ref/ruby/classes/Float.html +6 -6
  102. data/ref/ruby/classes/Float.src/{M000020.html → M000021.html} +0 -0
  103. data/ref/ruby/classes/Integer.html +65 -65
  104. data/ref/ruby/classes/Integer.src/M000009.html +12 -5
  105. data/ref/ruby/classes/Integer.src/M000010.html +5 -5
  106. data/ref/ruby/classes/Integer.src/M000011.html +5 -5
  107. data/ref/ruby/classes/Integer.src/M000012.html +5 -5
  108. data/ref/ruby/classes/Integer.src/M000013.html +5 -5
  109. data/ref/ruby/classes/Integer.src/M000014.html +18 -0
  110. data/ref/ruby/classes/Integer.src/M000017.html +12 -18
  111. data/ref/ruby/classes/Integer.src/M000018.html +18 -12
  112. data/ref/ruby/classes/Integer.src/M000019.html +12 -17
  113. data/ref/ruby/classes/Integer.src/M000020.html +30 -0
  114. data/ref/ruby/classes/RDoc.html +5 -5
  115. data/ref/ruby/classes/RDoc.src/{M000053.html → M000058.html} +0 -0
  116. data/ref/ruby/classes/{RubyVpi/Config.html → RubyVPI.html} +20 -6
  117. data/ref/ruby/classes/String.html +34 -15
  118. data/ref/ruby/classes/String.src/M000022.html +5 -28
  119. data/ref/ruby/classes/String.src/M000023.html +5 -5
  120. data/ref/ruby/classes/String.src/{M000021.html → M000024.html} +0 -0
  121. data/ref/ruby/classes/String.src/M000025.html +41 -0
  122. data/ref/ruby/classes/VerilogParser/Module/Port.html +16 -36
  123. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000006.html +10 -5
  124. data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000004.html → M000007.html} +4 -4
  125. data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000005.html → M000008.html} +4 -4
  126. data/ref/ruby/classes/VerilogParser/Module.html +28 -9
  127. data/ref/ruby/classes/VerilogParser/Module.src/M000005.html +29 -0
  128. data/ref/ruby/classes/VerilogParser.html +5 -39
  129. data/ref/ruby/classes/VerilogParser.src/M000004.html +26 -0
  130. data/ref/ruby/classes/Vpi/Handle.html +179 -77
  131. data/ref/ruby/classes/Vpi/Handle.src/M000035.html +18 -0
  132. data/ref/ruby/classes/Vpi/Handle.src/M000036.html +5 -5
  133. data/ref/ruby/classes/Vpi/Handle.src/M000037.html +5 -5
  134. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +5 -5
  135. data/ref/ruby/classes/Vpi/Handle.src/M000039.html +5 -5
  136. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +5 -8
  137. data/ref/ruby/classes/Vpi/Handle.src/M000041.html +5 -8
  138. data/ref/ruby/classes/Vpi/Handle.src/M000042.html +5 -9
  139. data/ref/ruby/classes/Vpi/Handle.src/M000043.html +8 -31
  140. data/ref/ruby/classes/Vpi/Handle.src/M000044.html +8 -74
  141. data/ref/ruby/classes/Vpi/Handle.src/M000045.html +9 -17
  142. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +31 -11
  143. data/ref/ruby/classes/Vpi/Handle.src/M000047.html +86 -0
  144. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +17 -18
  145. data/ref/ruby/classes/Vpi/Handle.src/M000050.html +18 -0
  146. data/ref/ruby/classes/Vpi/Handle.src/M000051.html +24 -0
  147. data/ref/ruby/classes/Vpi/Handle.src/M000053.html +31 -0
  148. data/ref/ruby/classes/Vpi/Handle.src/M000054.html +89 -0
  149. data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
  150. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000050.html → M000055.html} +4 -4
  151. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000051.html → M000056.html} +5 -5
  152. data/ref/ruby/classes/Vpi/S_vpi_value.html +15 -15
  153. data/ref/ruby/classes/Vpi/S_vpi_value.src/{M000035.html → M000032.html} +5 -5
  154. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +5 -5
  155. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +5 -5
  156. data/ref/ruby/classes/Vpi.html +6 -42
  157. data/ref/ruby/classes/Vpi.src/M000029.html +15 -5
  158. data/ref/ruby/classes/Vpi.src/M000030.html +24 -24
  159. data/ref/ruby/classes/Vpi.src/M000031.html +6 -8
  160. data/ref/ruby/created.rid +1 -1
  161. data/ref/ruby/files/bin/{header_to_ruby_rb.html → convert_rb.html} +5 -5
  162. data/ref/ruby/files/bin/{generate_test_rb.html → generate_rb.html} +8 -21
  163. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  164. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  165. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  166. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  167. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  168. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  169. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +197 -0
  170. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000001.html +17 -0
  171. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000002.html +18 -0
  172. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  173. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +6 -19
  174. data/ref/ruby/files/lib/ruby-vpi/util_rb.html +101 -0
  175. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +8 -1
  176. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
  177. data/ref/ruby/files/lib/ruby-vpi_rb.html +2 -14
  178. data/ref/ruby/fr_class_index.html +1 -3
  179. data/ref/ruby/fr_file_index.html +4 -2
  180. data/ref/ruby/fr_method_index.html +56 -51
  181. data/ref/ruby/index.html +1 -1
  182. data/samp/counter/RSpec/Rakefile +1 -0
  183. data/samp/counter/RSpec/counter_design.rb +15 -0
  184. data/samp/counter/RSpec/counter_proto.rb +10 -0
  185. data/samp/counter/RSpec/counter_runner.rake +44 -0
  186. data/samp/counter/RSpec/counter_spec.rb +39 -0
  187. data/samp/counter/Rakefile +1 -1
  188. data/samp/counter/counter.v +7 -7
  189. data/samp/counter/xUnit/Rakefile +1 -0
  190. data/samp/counter/xUnit/counter_bench.rb +95 -0
  191. data/samp/counter/{counter_xunit_bench.v → xUnit/counter_bench.v} +0 -0
  192. data/samp/counter/xUnit/counter_design.rb +15 -0
  193. data/samp/counter/xUnit/counter_proto.rb +10 -0
  194. data/samp/counter/xUnit/counter_runner.rake +44 -0
  195. data/samp/counter/{counter_xunit_spec.rb → xUnit/counter_spec.rb} +9 -9
  196. data/samp/pipelined_alu/Rakefile +1 -1
  197. data/samp/pipelined_alu/TestHw5UnitModel.rb +4 -5
  198. data/samp/pipelined_alu/hw5_unit.v +55 -85
  199. data/samp/pipelined_alu/hw5_unit_design.rb +51 -0
  200. data/samp/pipelined_alu/hw5_unit_proto.rb +4 -0
  201. data/samp/pipelined_alu/hw5_unit_runner.rake +43 -0
  202. data/samp/pipelined_alu/hw5_unit_spec.rb +64 -0
  203. data/samp/register_file/LICENSE +20 -0
  204. data/samp/register_file/README +4 -0
  205. data/samp/register_file/Rakefile +1 -0
  206. data/samp/register_file/register_file.v +18 -0
  207. data/samp/register_file/register_file_design.rb +11 -0
  208. data/samp/register_file/register_file_proto.rb +11 -0
  209. data/samp/register_file/register_file_runner.rake +43 -0
  210. data/samp/register_file/register_file_spec.rb +58 -0
  211. metadata +78 -66
  212. data/bin/generate_test.rb +0 -200
  213. data/bin/generate_test_tpl/bench.rb +0 -89
  214. data/bin/generate_test_tpl/bench.v +0 -26
  215. data/bin/generate_test_tpl/design.rb +0 -11
  216. data/bin/generate_test_tpl/proto.rb +0 -16
  217. data/bin/generate_test_tpl/runner.rake +0 -42
  218. data/bin/generate_test_tpl/spec.rb +0 -37
  219. data/bin/header_to_ruby.rb +0 -27
  220. data/ref/ruby/classes/Integer.src/M000008.html +0 -25
  221. data/ref/ruby/classes/Integer.src/M000016.html +0 -25
  222. data/ref/ruby/classes/RubyVpi.html +0 -199
  223. data/ref/ruby/classes/RubyVpi.src/M000027.html +0 -121
  224. data/ref/ruby/classes/VerilogParser/Module/Parameter.html +0 -160
  225. data/ref/ruby/classes/VerilogParser/Module/Parameter.src/M000007.html +0 -19
  226. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000003.html +0 -21
  227. data/ref/ruby/classes/VerilogParser/Module.src/M000002.html +0 -34
  228. data/ref/ruby/classes/VerilogParser.src/M000001.html +0 -34
  229. data/ref/ruby/classes/Vpi/Handle.src/M000049.html +0 -69
  230. data/ref/ruby/classes/Vpi.src/M000028.html +0 -28
  231. data/ref/ruby/classes/Vpi.src/M000032.html +0 -22
  232. data/samp/counter/counter_rspec_bench.rb +0 -86
  233. data/samp/counter/counter_rspec_bench.v +0 -9
  234. data/samp/counter/counter_rspec_design.rb +0 -8
  235. data/samp/counter/counter_rspec_proto.rb +0 -13
  236. data/samp/counter/counter_rspec_runner.rake +0 -52
  237. data/samp/counter/counter_rspec_spec.rb +0 -39
  238. data/samp/counter/counter_xunit_bench.rb +0 -86
  239. data/samp/counter/counter_xunit_design.rb +0 -8
  240. data/samp/counter/counter_xunit_proto.rb +0 -13
  241. data/samp/counter/counter_xunit_runner.rake +0 -52
  242. data/samp/pipelined_alu/hw5_unit_test_bench.rb +0 -86
  243. data/samp/pipelined_alu/hw5_unit_test_bench.v +0 -14
  244. data/samp/pipelined_alu/hw5_unit_test_design.rb +0 -61
  245. data/samp/pipelined_alu/hw5_unit_test_proto.rb +0 -7
  246. data/samp/pipelined_alu/hw5_unit_test_runner.rake +0 -52
  247. data/samp/pipelined_alu/hw5_unit_test_spec.rb +0 -68
data/doc/history.rb CHANGED
@@ -11,3 +11,12 @@ require 'yaml'
11
11
  end
12
12
  end
13
13
  end
14
+
15
+ path = File.join(File.dirname(__FILE__), 'history.inc')
16
+ unless File.exist? path
17
+ File.open(path, 'w') do |f|
18
+ @history.each do |entry|
19
+ f << %{<% section "Version #{entry['Version']} (#{entry['Date']})", "#{entry['Version']}" do %>#{entry['Record']}<% end %>}
20
+ end
21
+ end
22
+ end
data/doc/history.yaml CHANGED
@@ -1,3 +1,72 @@
1
+ -
2
+ Version: 17.0.0
3
+
4
+ Date: 2007-07-22
5
+
6
+ Record: |
7
+ This release makes the Ruby-VPI testing framework more lightweight by reducing the number of files and parameters involved.
8
+
9
+
10
+ h2. Caution
11
+
12
+ * The *generate_test.rb* and *convert.rb* executables have been replaced by a single *ruby-vpi* executable to avoid name conflicts with other software. They are now accessed using the <pre>ruby-vpi generate</pre> and <pre>ruby-vpi convert</pre> commands respectively.
13
+
14
+ * The <tt>--name</tt> parameter has been removed from the automated test generator. Similarly, you can no longer insert an arbitrary name in a test's file names (see the "user manual":manual.html#Do_not_rename_generated_files for details).
15
+
16
+ * The @DEBUG@ environment variable, which controls wether the test runner starts the interactive debugger, has been renamed to @DEBUGGER@.
17
+
18
+ * The @SIMULATOR_TARGET@ and @SIMULATOR_INCLUDES@ parameters have been eliminated from test runners. The former is detected automatically. As for the latter, you can specify paths to directories in the @SIMULATOR_SOURCES@ parameter instead.
19
+
20
+ * The <tt>bench.rb</tt> and <tt>bench.v</tt> files of a generated test are (1) no longer generated by the test generator and (2) are now ignored. You must move the functionality provided by these files into <tt>design.rb</tt> and your Verilog module's source file respectively.
21
+
22
+ * The <tt>design.rb</tt> and <tt>proto.rb</tt> files are now loaded into a separate namespace (Ruby module). For example, if the Verilog module under test has the name "counter" and the <tt>design.rb</tt> file defines a class named "Foo", then that class will be accessible as "Counter::Foo".
23
+
24
+ * The global @Vpi::simulate@ method has been replaced by the @cycle!@ method in the <tt>design.rb</tt> file.
25
+
26
+ * The @simulate!@ method in the <tt>proto.rb</tt> file has been renamed to @feign!@ for accuracy.
27
+
28
+ * The @RubyVpi@ module has been renamed to @RubyVPI@.
29
+
30
+ * RSpec >= 1.0.0 is now required by Ruby-VPI.
31
+
32
+ * The "project license":readme.html#intro.license has been further simplified.
33
+
34
+
35
+ h2. Repairs
36
+
37
+ * Restored support for Enumerable methods in @Vpi::Handle@.
38
+
39
+ * The specification now begins to execute at simulation time 0. Previously it began at simulation time 1.
40
+
41
+
42
+ h2. Improvements
43
+
44
+ * The <tt>bench.rb</tt> and <tt>bench.v</tt> files of a generated test have been eliminated!
45
+
46
+ One important benefit is that the Ruby interface to the Verilog module under test is now a direct reference, whereas previously it was an _indirect_ reference (it pointed to the Verilog module defined in <tt>bench.v</tt>, which in turn wrapped around the actual Verilog module under test).
47
+
48
+ As a result, you can now access the internals of the Verilog module under test by simply calling methods on the Ruby interface, as you would naturally expect to be the case.
49
+
50
+ * The "a" accessor, which returns an _array_ of child handles, has been added to "the method naming format":manual.html#tbl:accessors for accessing child handles.
51
+
52
+ * All parameter objects in the Verilog module under test are automatically made available as constants. For example, if the Verilog module under test has the name @counter@ and has a parameter object named @WIDTH@, then you can access the integer value of that parameter using @Counter::WIDTH@.
53
+
54
+ * The automated test generator now tries to automatically detect the clock and reset signal from Verilog module declarations.
55
+
56
+ * The automated test generator now supports Verilog 95 style module declarations.
57
+
58
+ * Exceptions are now raised when you try to write to a read-only VPI property, such as @VpiName@.
59
+
60
+ * Added @high?@, @high!@, @low?@, and @low!@ methods to the @Vpi::Handle@ class.
61
+
62
+ * Revised the user manual by removing unnecessary sections and adding newer material from my master's thesis.
63
+
64
+
65
+ h2. Contributions
66
+
67
+ * Added Jacinto Shy II's "register file example":http://jacintoshy.blogspot.com/2007/05/hacking-verilog-with-ruby-part-2.html to Ruby-VPI. It can be found in <tt>samp/register_file/</tt>.
68
+
69
+
1
70
  -
2
71
  Version: 16.0.1
3
72
 
data/doc/intro.inc CHANGED
@@ -8,191 +8,183 @@ Ruby-VPI is a platform for unit testing, rapid prototyping, and systems integrat
8
8
  Ruby-VPI is "open source software":http://en.wikipedia.org/wiki/Open_source_software released under "this license":#intro.license.
9
9
 
10
10
 
11
- <div id="resources">
11
+ <% section "Resources", "resources" do %>
12
+ <% paragraph "Records" do %>
13
+ <a type="application/rss+xml" href="<%= RSS_URL %>"><img src="images/feed-icon-28x28.png" alt="RSS feed for release notifications" style="float: right"/></a>
14
+
15
+ * "What's new":history.html
16
+ - a history of all release notes.
17
+ * "Plans":memo.html
18
+ - pending tasks for future releases.
19
+ * "Talks":http://ruby-vpi.rubyforge.org/talks/
20
+ - materials from presentations and seminars.
21
+ * "Papers":http://ruby-vpi.rubyforge.org/papers/
22
+ - research publications.
23
+ * "Motivation":http://ruby-vpi.rubyforge.org/papers/masters_thesis.html#tth_sEc5.2
24
+ - why does Ruby-VPI exist?
25
+ <% end %>
26
+
27
+ <% paragraph "Documentation" do %>
28
+ * "User manual":manual.html
29
+ - complete documentation for users. _Start here!_
30
+ ** "Tutorial":manual.html#usage.tutorial
31
+ - learn how to use Ruby-VPI quickly.
32
+ * "Reference":../ref/
33
+ - API documentation for Ruby libraries and C extension.
34
+ <% end %>
35
+
36
+ <% paragraph "Facilities" do %>
37
+ * "Downloads":<%= downloadURL %>
38
+ - obtain release packages
39
+ * "Source code":<%= codeURL %>
40
+ - browse online or obtain with "Darcs":http://darcs.net.
41
+ * "Forums":<%= forumURL %>
42
+ - discuss things and ask questions.
43
+ * "Bugs":<%= trackerURL %>
44
+ - report defects in the software.
45
+ * "Patches":<%= trackerURL %>
46
+ - submit patches to source code.
47
+ * "Requests":<%= trackerURL %>
48
+ - request new features or get support.
49
+ * "Project portal":<%= portalURL %>
50
+ - hosted generously by "RubyForge":http://rubyforge.org.
51
+ <% end %>
52
+ <% end %>
53
+
54
+
55
+ <% section "Features", "intro.features" do %>
56
+ <% paragraph "Portable" do %>
57
+ * Supports the _entire_ "IEEE 1364-2005 Verilog VPI":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945 standard.
58
+ * Works with all <%= xref "intro.reqs", "major Verilog simulators" %> available today.
59
+ * Compiled _just once_ during "installation":manual.html#setup.installation and used forever!
60
+ <% end %>
61
+
62
+ <% paragraph "Agile" do %>
63
+ * Enables "agile practices":http://agilemanifesto.org/ such as
64
+ ** "test-driven":http://www.testdriven.com development
65
+ ** "behavior-driven":http://behaviour-driven.org development
66
+ ** "rapid prototyping":manual.html#usage.tutorial.implement-proto for design exploration
67
+
68
+ * Eliminates unneccesary work:
69
+ ** "Specifications":manual.html#usage.tutorial.specification are readable, portable, and _executable_.
70
+ ** The "automated test generator":manual.html#usage.tools.generate-test helps you accomodate design changes with _minimal_ effort.
71
+ ** There is absolutely _no compiling_!
72
+ <% end %>
73
+
74
+ <% paragraph "Powerful" do %>
75
+ * Inherits the "power and elegance":http://www.ruby-lang.org/en/about/ of Ruby:
76
+ ** Unlimited length integers
77
+ ** Regular expressions
78
+ ** Multi-threading
79
+ ** System calls and I/O
80
+ ** "_ad infinitum_":http://rubyforge.org
81
+
82
+ * Uses "ruby-debug":http://rubyforge.org/projects/ruby-debug/ for "interactive debugging":manual.html#usage.debugger.
83
+ * Uses "rcov":http://eigenclass.org/hiki.rb?rcov for test "coverage analysis and report generation":manual.html#usage.test-runner.env-vars.
84
+ <% end %>
85
+ <% end %>
86
+
87
+
88
+ <% section "Requirements", "intro.reqs" do %>
89
+ The following software is necessary in order to use Ruby-VPI.
90
+
91
+ <% paragraph "Verilog simulator" do %>
92
+ Ruby-VPI is known to work with the following simulators. However, you should be able to use it with any Verilog simulator that supports VPI.
93
+
94
+ * "Synopsys VCS":http://www.synopsys.com/products/simulation/simulation.html
95
+ - any version that supports the <tt>-load</tt> option is acceptable.
96
+ * "Mentor Modelsim":http://www.model.com
97
+ - any version that supports the <tt>-pli</tt> option is acceptable.
98
+ * "Cadence NC-Sim / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/
99
+ - any version that supports the <tt>+loadvpi</tt> option is acceptable.
100
+ * "GPL Cver":http://www.pragmatic-c.com/gpl-cver/
101
+ - version 2.11a or newer is acceptable.
102
+ * "Icarus Verilog":http://www.icarus.com/eda/Verilog/
103
+ - version 0.8 is _mostly_ acceptable -- you *will not* be able to "access child handles through method calls":manual.html#background.org.vpi.util. The reason for this limitation is explained "in the user manual":manual.html#problems.ivl.vpi_handle_by_name.absolute-paths.
104
+ <% end %>
105
+
106
+ <% paragraph "Compilers" do %>
107
+ * "make":http://en.wikipedia.org/wiki/Make
108
+ - any flavor should be acceptable.
109
+ * C compiler
110
+ - the "GNU Compiler Collection (GCC)":http://www.gnu.org/software/gcc/ is preferred, but any C compiler should be acceptable.
111
+ * "Ruby":http://www.ruby-lang.org
112
+ - version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following "these instructions":http://www.rubygarden.org/faq/section/show/3.
113
+ <% end %>
114
+
115
+ <% paragraph "Libraries" do %>
116
+ * "POSIX threads (pthreads)":http://en.wikipedia.org/wiki/Pthreads
117
+ - header and linkable object files, and operating system support for this library are necessary.
118
+ * "RubyGems":http://rubyforge.org/frs/?group_id=126
119
+ - any recent version should be acceptable. You can install RubyGems by following "these instructions":http://www.rubygems.org/read/chapter/3.
120
+ <% end %>
121
+ <% end %>
122
+
123
+
124
+ <% section "Applications", "intro.applications" do %>
125
+ Examples of tasks that can be performed with Ruby-VPI are:
126
+
127
+ * From the second edition of "_The Verilog PLI Handbook_":http://www.sutherland-hdl.com/publications.html:
128
+ ** C language bus-functional models
129
+ ** Reading test vector files
130
+ ** Delay calculation
131
+ ** Custom output displays
132
+ ** Co-simulation
133
+ ** Design debug utilities
134
+ ** Simulation analysis
135
+
136
+ * Adapted from "Pin Hong's":http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/ observations:
137
+ ** Writing hardware models in Ruby
138
+ ** Dumping or processing netlist data from Verilog database
139
+ ** Dumping or processing simulation data
140
+ ** Feeding dynamic simulation stimuli
141
+ ** Back-annotating delay information
142
+ ** Interactive logic simulation
143
+ ** Building a distributed simulation
144
+ <% end %>
145
+
146
+
147
+ <% section "Appetizers", "intro.appetizers" do %>
148
+ Here is a tiny sampling of code to whet your appetite. See "the tutorial":manual.html#usage.tutorial for more samples.
149
+
150
+ * Assign the value 2^2048^ to a register:
151
+
152
+ bq. @your_register.intVal = 2 ** 2048@
12
153
 
13
- h2. Resources
154
+ * Check if all nets in a module are at high impedance:
155
+
156
+ bq. @your_module.all_net? { |net| net.z? }@
157
+
158
+ * See a register's path, width, and location (file & line number):
159
+
160
+ bq. @puts your_register@
14
161
 
15
- p(title). Records
162
+ * Access the first five elements in a memory:
163
+
164
+ bq. @your_memory.memoryWord_a[0..4]@
16
165
 
17
- <a type="application/rss+xml" href="<%= RSS_URL %>"><img src="images/feed-icon-28x28.png" alt="RSS feed for release notifications" style="float: right"/></a>
166
+ * Clear a memory by filling it with zeroes:
18
167
 
19
- * "What's new?":history.html
20
- - a record of all release notes.
21
- * "Plans":memo.html
22
- - pending tasks for future releases.
23
- * "Talks":http://ruby-vpi.rubyforge.org/talks/
24
- - materials from presentations and seminars.
25
- * "Papers":http://ruby-vpi.rubyforge.org/papers/
26
- - research publications.
168
+ bq. @your_memory.each_memoryWord {|w| w.intVal = 0}@
169
+ <% end %>
27
170
 
28
- p(title). Documentation
29
171
 
30
- * "Tutorial":manual.html#usage.tutorial
31
- - learn how to use Ruby-VPI quickly.
32
- * "Manual":manual.html
33
- - complete documentation for users. _Start here!_
34
- * "Reference":../ref/
35
- - API documentation for Ruby libraries and C extension.
172
+ <% section "License", "intro.license" do %>
173
+ <%=h File.read('../LICENSE') %>
174
+ <% end %>
36
175
 
37
- p(title). Facilities
38
176
 
39
- * "Downloads":http://rubyforge.org/frs/?group_id=1339
40
- - obtain release packages.
41
- * "Source code":http://ruby-vpi.rubyforge.org/src/ruby-vpi
42
- - browse online or obtain with "Darcs":http://darcs.net.
43
- * "Forums":http://rubyforge.org/forum/?group_id=1339
44
- - discuss things and ask questions.
45
- * "Bugs":http://rubyforge.org/tracker/?group_id=1339
46
- - report defects in the software.
47
- * "Patches":http://rubyforge.org/tracker/?group_id=1339
48
- - submit patches to source code.
49
- * "Requests":http://rubyforge.org/tracker/?group_id=1339
50
- - request new features or get support.
51
- * "Project portal":http://rubyforge.org/projects/ruby-vpi
52
- - hosted generously by "RubyForge":http://rubyforge.org.
177
+ <% section "Related works", "intro.related-works" do %>
178
+ * "JOVE":http://jove.sourceforge.net is a Java interface to VPI.
179
+ * "Teal":http://teal.sourceforge.net is a C++ interface to VPI.
180
+ * "ScriptEDA":http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/ is a Perl, Python, and Tcl interface to VPI.
181
+ * "RHDL":http://rhdl.rubyforge.org is a hardware description and verification language based on Ruby.
182
+ * "MyHDL":http://myhdl.jandecaluwe.com is a hardware description and verification language based on Python, which features conversion to Verilog and co-simulation.
53
183
 
184
+ <% section "Ye olde PLI", "intro.related-works.pli" do %>
185
+ The following projects utilize the archaic *tf* and *acc* PLI interfaces, which have been officially deprecated in IEEE Std 1364-2005.
54
186
 
55
- </div>
56
-
57
-
58
- h2(#intro.features). Features
59
-
60
- p(title). Portable
61
-
62
- * Supports the _entire_ "IEEE 1364-2005 Verilog VPI":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945 standard.
63
- * Works with all "major Verilog simulators":#intro.reqs available today.
64
- * Compiled _just once_ during "installation":manual.html#setup.installation and used forever!
65
-
66
- p(title). Agile
67
-
68
- * Enables "agile practices":http://agilemanifesto.org/ such as
69
- ** "test-driven":http://www.testdriven.com development
70
- ** "behavior-driven":http://behaviour-driven.org development
71
- ** "rapid prototyping":manual.html#usage.tutorial.implement-proto for design exploration
72
-
73
- * Eliminates unneccesary work:
74
- ** "Specifications":manual.html#usage.tutorial.specification are readable, portable, and _executable_.
75
- ** The "automated test generator":manual.html#usage.tools.generate-test helps you accomodate design changes with _minimal_ effort.
76
- ** There is absolutely _no compiling_!
77
-
78
- p(title). Powerful
79
-
80
- * Inherits the "power and elegance":http://www.ruby-lang.org/en/about/ of Ruby:
81
- ** Unlimited length integers
82
- ** Regular expressions
83
- ** Multi-threading
84
- ** System calls and I/O
85
- ** "_ad infinitum_":http://rubyforge.org
86
-
87
- * Uses "ruby-debug":http://rubyforge.org/projects/ruby-debug/ for "interactive debugging":manual.html#usage.debugger.
88
- * Uses "rcov":http://eigenclass.org/hiki.rb?rcov for test "coverage analysis and report generation":manual.html#usage.test-runner.env-vars.
89
-
90
-
91
- h2(#intro.reqs). Requirements
92
-
93
- The following software is necessary in order to use Ruby-VPI.
94
-
95
- p(title). Verilog simulator
96
-
97
- Ruby-VPI is known to work with the following simulators. However, you should be able to use it with any Verilog simulator that supports VPI.
98
-
99
- * "Synopsys VCS":http://www.synopsys.com/products/simulation/simulation.html
100
- - any version that supports the <tt>-load</tt> option is acceptable.
101
-
102
- * "Mentor Modelsim":http://www.model.com
103
- - any version that supports the <tt>-pli</tt> option is acceptable.
104
-
105
- * "Cadence NC-Sim / NC-Verilog":http://www.cadence.com/products/functional_ver/nc-verilog/
106
- - any version that supports the <tt>+loadvpi</tt> option is acceptable.
107
-
108
- * "GPL Cver":http://www.pragmatic-c.com/gpl-cver/
109
- - version 2.11a or newer is acceptable.
110
-
111
- * "Icarus Verilog":http://www.icarus.com/eda/Verilog/
112
- - version 0.8 is _mostly_ acceptable -- you *will not* be able to "access child handles through method calls":manual.html#background.org.vpi.util. The reason for this limitation is explained "in the user manual":#problems.ivl.vpi_handle_by_name.absolute-paths.
113
-
114
- p(title). Compilers
115
-
116
- * "make":http://en.wikipedia.org/wiki/Make
117
- - any flavor should be acceptable.
118
-
119
- * C compiler
120
- - the "GNU Compiler Collection (GCC)":http://www.gnu.org/software/gcc/ is preferred, but any C compiler should be acceptable.
121
-
122
- * "Ruby":http://www.ruby-lang.org
123
- - version 1.8 or newer, including header and linkable object files for building extensions, is necessary. You can install Ruby by following "these instructions":http://www.rubygarden.org/faq/section/show/3.
124
-
125
- p(title). Libraries
126
-
127
- * "POSIX threads (pthreads)":http://en.wikipedia.org/wiki/Pthreads
128
- - header and linkable object files, and operating system support for this library are necessary.
129
-
130
- * "RubyGems":http://rubyforge.org/frs/?group_id=126
131
- - any recent version should be acceptable. You can install RubyGems by following "these instructions":http://www.rubygems.org/read/chapter/3.
132
-
133
-
134
- h2(#intro.applications). Applications
135
-
136
- Examples of tasks that can be performed with Ruby-VPI are:
137
-
138
- * From the second edition of "_The Verilog PLI Handbook_":http://www.sutherland-hdl.com/publications.html:
139
- ** C language bus-functional models
140
- ** Reading test vector files
141
- ** Delay calculation
142
- ** Custom output displays
143
- ** Co-simulation
144
- ** Design debug utilities
145
- ** Simulation analysis
146
-
147
- * Adapted from "Pin Hong's":http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/ observations:
148
- ** Writing hardware models in Ruby
149
- ** Dumping or processing netlist data from Verilog database
150
- ** Dumping or processing simulation data
151
- ** Feeding dynamic simulation stimuli
152
- ** Back-annotating delay information
153
- ** Interactive logic simulation
154
- ** Building a distributed simulation
155
-
156
-
157
- h2(#intro.appetizers). Appetizers
158
-
159
- Here is a tiny sampling of code to whet your appetite. See "the tutorial":manual.html#usage.tutorial for more samples.
160
-
161
- * Assign the value 2^2048^ to a register:
162
-
163
- bq. @some_register.intVal = 2 ** 2048@
164
-
165
- * Check if all nets in a module are at high impedance:
166
-
167
- bq. @some_module.all_net? { |net| net.z? }@
168
-
169
- * See a register's path, width, and location (file & line number):
170
-
171
- bq. @puts some_register@
172
-
173
- * Simulate fifteen clock cycles:
174
-
175
- bq. @15.times { simulate }@
176
-
177
-
178
- h2(#intro.license). License
179
-
180
- <%= File.read '../LICENSE' %>
181
-
182
-
183
- h2(#intro.related-works). Related works
184
-
185
- * "JOVE":http://jove.sourceforge.net is a Java interface to VPI.
186
- * "Teal":http://teal.sourceforge.net is a C++ interface to VPI.
187
- * "ScriptEDA":http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/ is a Perl, Python, and Tcl interface to VPI.
188
- * "RHDL":http://rhdl.rubyforge.org is a hardware description and verification language based on Ruby.
189
- * "MyHDL":http://myhdl.jandecaluwe.com is a hardware description and verification language based on Python, which features conversion to Verilog and co-simulation.
190
-
191
-
192
- h3(#intro.related-works.pli). Ye olde PLI
193
-
194
- The following projects utilize the archaic *tf* and *acc* PLI interfaces, which have been officially deprecated in IEEE Std 1364-2005.
195
-
196
- * "ScriptSim":http://www.nelsim.com is a Perl, Python, and Tcl/Tk interface to PLI.
197
- * "Verilog::Pli":http://www.veripool.com/verilog-pli.html is a Perl interface to PLI.
198
- * "JPLI":http://www.time-rover.com/jpli/ is a proprietary Java interface to PLI.
187
+ * "ScriptSim":http://www.nelsim.com is a Perl, Python, and Tcl/Tk interface to PLI.
188
+ * "Verilog::Pli":http://www.veripool.com/verilog-pli.html is a Perl interface to PLI.
189
+ <% end %>
190
+ <% end %>