ruby-vpi 16.0.1 → 17.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 %>