ruby-vpi 8.2.0 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. data/HEADER +0 -19
  2. data/HISTORY +40 -0
  3. data/README +20 -2
  4. data/Rakefile +38 -42
  5. data/bin/generate_test.rb +50 -35
  6. data/bin/generate_test_tpl/bench.rb +3 -3
  7. data/bin/generate_test_tpl/bench.v +1 -1
  8. data/bin/generate_test_tpl/runner.rake +3 -2
  9. data/bin/generate_test_tpl/spec.rb +2 -2
  10. data/doc/background.organization.html +1 -1
  11. data/doc/glossary.html +1 -1
  12. data/doc/index.html +2 -2
  13. data/doc/manual.txt +163 -83
  14. data/doc/problems.html +1 -1
  15. data/doc/problems.ruby.html +1 -1
  16. data/doc/src/manual.xml +132 -49
  17. data/doc/usage.examples.html +1 -1
  18. data/doc/usage.html +1 -1
  19. data/doc/usage.installation.html +2 -2
  20. data/doc/usage.recommendations.html +3 -0
  21. data/doc/usage.requirements.html +1 -1
  22. data/doc/usage.tutorial.html +46 -42
  23. data/ext/extconf.rb +5 -2
  24. data/ext/relay.c +138 -0
  25. data/ext/{relay.hin → relay.h} +7 -7
  26. data/ext/{swig.cin → swig.c} +5 -7
  27. data/ext/{swig.hin → swig.h} +4 -4
  28. data/ext/verilog.h +1 -2
  29. data/ext/vlog.c +86 -0
  30. data/ext/{vlog.hin → vlog.h} +9 -12
  31. data/header.html +0 -31
  32. data/header.part.html +0 -31
  33. data/history.html +72 -31
  34. data/history.part.html +72 -0
  35. data/lib/ruby-vpi.rb +16 -0
  36. data/lib/ruby-vpi/runner.rb +34 -16
  37. data/memo.html +0 -31
  38. data/readme.html +33 -33
  39. data/readme.part.html +34 -3
  40. data/ref/c/annotated.html +1 -1
  41. data/ref/c/common_8h.html +1 -1
  42. data/ref/c/files.html +7 -8
  43. data/ref/c/functions.html +2 -2
  44. data/ref/c/functions_vars.html +2 -2
  45. data/ref/c/globals.html +1 -1
  46. data/ref/c/globals_0x63.html +1 -1
  47. data/ref/c/globals_0x65.html +1 -1
  48. data/ref/c/globals_0x66.html +1 -1
  49. data/ref/c/globals_0x70.html +1 -1
  50. data/ref/c/globals_0x72.html +9 -9
  51. data/ref/c/globals_0x73.html +3 -3
  52. data/ref/c/globals_0x74.html +1 -1
  53. data/ref/c/globals_0x76.html +5 -5
  54. data/ref/c/globals_0x78.html +1 -1
  55. data/ref/c/globals_defs.html +1 -1
  56. data/ref/c/globals_defs_0x65.html +1 -1
  57. data/ref/c/globals_defs_0x70.html +1 -1
  58. data/ref/c/globals_defs_0x76.html +2 -2
  59. data/ref/c/globals_defs_0x78.html +1 -1
  60. data/ref/c/globals_enum.html +1 -1
  61. data/ref/c/globals_eval.html +1 -1
  62. data/ref/c/globals_func.html +11 -11
  63. data/ref/c/globals_type.html +1 -1
  64. data/ref/c/globals_vars.html +5 -5
  65. data/ref/c/index.html +1 -1
  66. data/ref/c/relay_8c.html +214 -0
  67. data/ref/c/{relay_8hin.html → relay_8h.html} +23 -23
  68. data/ref/c/structrelay____RubyOptions____def.html +6 -6
  69. data/ref/c/structt__cb__data.html +1 -1
  70. data/ref/c/structt__vpi__delay.html +1 -1
  71. data/ref/c/structt__vpi__error__info.html +1 -1
  72. data/ref/c/structt__vpi__strengthval.html +1 -1
  73. data/ref/c/structt__vpi__systf__data.html +1 -1
  74. data/ref/c/structt__vpi__time.html +1 -1
  75. data/ref/c/structt__vpi__value.html +1 -1
  76. data/ref/c/structt__vpi__vecval.html +1 -1
  77. data/ref/c/structt__vpi__vlog__info.html +1 -1
  78. data/ref/c/swig_8c.html +80 -0
  79. data/ref/c/{swig_8hin.html → swig_8h.html} +13 -13
  80. data/ref/c/verilog_8h.html +3 -3
  81. data/ref/c/{vlog_8cin.html → vlog_8c.html} +30 -21
  82. data/ref/c/{vlog_8hin.html → vlog_8h.html} +12 -12
  83. data/ref/c/vpi__user_8h.html +1 -1
  84. data/ref/ruby/classes/ERB.html +5 -5
  85. data/ref/ruby/classes/ERB.src/{M000033.html → M000034.html} +0 -0
  86. data/ref/ruby/classes/FileUtils.html +10 -10
  87. data/ref/ruby/classes/FileUtils.src/M000089.html +5 -5
  88. data/ref/ruby/classes/FileUtils.src/M000090.html +18 -0
  89. data/ref/ruby/classes/Integer.html +68 -68
  90. data/ref/ruby/classes/Integer.src/M000012.html +12 -5
  91. data/ref/ruby/classes/Integer.src/M000013.html +5 -5
  92. data/ref/ruby/classes/Integer.src/M000014.html +5 -5
  93. data/ref/ruby/classes/Integer.src/M000015.html +5 -5
  94. data/ref/ruby/classes/Integer.src/M000016.html +5 -5
  95. data/ref/ruby/classes/Integer.src/M000017.html +18 -0
  96. data/ref/ruby/classes/Integer.src/M000020.html +9 -9
  97. data/ref/ruby/classes/Integer.src/M000021.html +9 -12
  98. data/ref/ruby/classes/Integer.src/M000022.html +12 -18
  99. data/ref/ruby/classes/Integer.src/M000023.html +18 -12
  100. data/ref/ruby/classes/Integer.src/M000024.html +12 -17
  101. data/ref/ruby/classes/Integer.src/M000025.html +30 -0
  102. data/ref/ruby/classes/OutputInfo.html +6 -6
  103. data/ref/ruby/classes/OutputInfo.src/{M000029.html → M000030.html} +37 -37
  104. data/ref/ruby/classes/RDoc.html +5 -5
  105. data/ref/ruby/classes/RDoc.src/{M000092.html → M000093.html} +0 -0
  106. data/ref/ruby/classes/RubyVpi.html +16 -10
  107. data/ref/ruby/classes/RubyVpi.src/M000091.html +37 -7
  108. data/ref/ruby/classes/RubyVpi.src/M000092.html +20 -0
  109. data/ref/ruby/classes/RubyVpi/Config.html +148 -0
  110. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +45 -45
  111. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000081.html +5 -5
  112. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000082.html +5 -9
  113. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000083.html +9 -31
  114. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000084.html +31 -69
  115. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000085.html +69 -114
  116. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000086.html +114 -13
  117. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000087.html +13 -5
  118. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000088.html +18 -0
  119. data/ref/ruby/classes/String.html +10 -10
  120. data/ref/ruby/classes/String.src/M000032.html +28 -5
  121. data/ref/ruby/classes/String.src/M000033.html +18 -0
  122. data/ref/ruby/classes/Table.html +20 -20
  123. data/ref/ruby/classes/Table.src/M000026.html +25 -5
  124. data/ref/ruby/classes/Table.src/M000027.html +5 -5
  125. data/ref/ruby/classes/Table.src/M000028.html +5 -5
  126. data/ref/ruby/classes/Table.src/M000029.html +18 -0
  127. data/ref/ruby/classes/Template.html +5 -5
  128. data/ref/ruby/classes/Template.src/{M000030.html → M000031.html} +4 -4
  129. data/ref/ruby/classes/VerilogParser.html +5 -5
  130. data/ref/ruby/classes/VerilogParser.src/{M000004.html → M000005.html} +0 -0
  131. data/ref/ruby/classes/VerilogParser/Module.html +5 -5
  132. data/ref/ruby/classes/VerilogParser/Module.src/{M000005.html → M000006.html} +0 -0
  133. data/ref/ruby/classes/VerilogParser/Module/Parameter.html +5 -5
  134. data/ref/ruby/classes/VerilogParser/Module/Parameter.src/{M000010.html → M000011.html} +0 -0
  135. data/ref/ruby/classes/VerilogParser/Module/Port.html +20 -20
  136. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000007.html +8 -5
  137. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +5 -5
  138. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000009.html +5 -5
  139. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000010.html +18 -0
  140. data/ref/ruby/classes/XX/Document.html +45 -45
  141. data/ref/ruby/classes/XX/Document.src/M000072.html +9 -7
  142. data/ref/ruby/classes/XX/Document.src/M000073.html +7 -7
  143. data/ref/ruby/classes/XX/Document.src/M000074.html +7 -7
  144. data/ref/ruby/classes/XX/Document.src/M000075.html +7 -9
  145. data/ref/ruby/classes/XX/Document.src/M000076.html +9 -8
  146. data/ref/ruby/classes/XX/Document.src/M000077.html +8 -8
  147. data/ref/ruby/classes/XX/Document.src/M000078.html +8 -21
  148. data/ref/ruby/classes/XX/Document.src/M000079.html +21 -85
  149. data/ref/ruby/classes/XX/Document.src/M000080.html +98 -0
  150. data/ref/ruby/classes/XX/HTML4.html +5 -5
  151. data/ref/ruby/classes/XX/HTML4.src/{M000035.html → M000036.html} +0 -0
  152. data/ref/ruby/classes/XX/HTML4/Strict.html +5 -5
  153. data/ref/ruby/classes/XX/HTML4/Strict.src/{M000037.html → M000038.html} +0 -0
  154. data/ref/ruby/classes/XX/HTML4/Transitional.html +5 -5
  155. data/ref/ruby/classes/XX/HTML4/Transitional.src/{M000036.html → M000037.html} +0 -0
  156. data/ref/ruby/classes/XX/Markup.html +5 -5
  157. data/ref/ruby/classes/XX/Markup.src/{M000042.html → M000043.html} +0 -0
  158. data/ref/ruby/classes/XX/Markup/ClassMethods.html +40 -40
  159. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000044.html +9 -7
  160. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000045.html +7 -12
  161. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000046.html +12 -7
  162. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000047.html +7 -14
  163. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000048.html +14 -7
  164. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000049.html +7 -14
  165. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000050.html +14 -9
  166. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000051.html +22 -0
  167. data/ref/ruby/classes/XX/Markup/InstanceMethods.html +100 -100
  168. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000052.html +43 -20
  169. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000053.html +20 -18
  170. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000054.html +18 -35
  171. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000055.html +35 -7
  172. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000056.html +7 -18
  173. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000057.html +18 -19
  174. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000058.html +19 -19
  175. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000059.html +19 -15
  176. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000060.html +15 -10
  177. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000061.html +10 -13
  178. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000062.html +13 -7
  179. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000063.html +7 -7
  180. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000064.html +7 -7
  181. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000065.html +7 -7
  182. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000066.html +7 -7
  183. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000067.html +7 -8
  184. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000068.html +8 -7
  185. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000069.html +7 -7
  186. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000070.html +7 -7
  187. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000071.html +20 -0
  188. data/ref/ruby/classes/XX/XHTML.html +5 -5
  189. data/ref/ruby/classes/XX/XHTML.src/{M000038.html → M000039.html} +0 -0
  190. data/ref/ruby/classes/XX/XHTML/Strict.html +5 -5
  191. data/ref/ruby/classes/XX/XHTML/Strict.src/{M000040.html → M000041.html} +0 -0
  192. data/ref/ruby/classes/XX/XHTML/Transitional.html +5 -5
  193. data/ref/ruby/classes/XX/XHTML/Transitional.src/{M000039.html → M000040.html} +0 -0
  194. data/ref/ruby/classes/XX/XML.html +5 -5
  195. data/ref/ruby/classes/XX/XML.src/{M000034.html → M000035.html} +0 -0
  196. data/ref/ruby/classes/XX/XMLish.html +5 -5
  197. data/ref/ruby/classes/XX/XMLish.src/{M000041.html → M000042.html} +0 -0
  198. data/ref/ruby/created.rid +1 -1
  199. data/ref/ruby/files/bin/generate_test_rb.html +49 -9
  200. data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +5 -16
  201. data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +39 -0
  202. data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
  203. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  204. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  205. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  206. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  207. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  208. data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +1 -1
  209. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  210. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +22 -21
  211. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +11 -13
  212. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000004.html +26 -0
  213. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  214. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
  215. data/ref/ruby/files/lib/ruby-vpi/xx_rb.html +1 -1
  216. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  217. data/ref/ruby/fr_class_index.html +1 -0
  218. data/ref/ruby/fr_method_index.html +93 -92
  219. data/samp/counter/{counter_rspecTest_bench.rb → counter_rspec_bench.rb} +2 -2
  220. data/samp/counter/{counter_rspecTest_bench.v → counter_rspec_bench.v} +3 -3
  221. data/samp/counter/{counter_unitTest_design.rb → counter_rspec_design.rb} +3 -3
  222. data/samp/counter/{counter_rspecTest_proto.rb → counter_rspec_proto.rb} +0 -0
  223. data/samp/counter/{counter_unitTest_runner.rake → counter_rspec_runner.rake} +5 -4
  224. data/samp/counter/{counter_rspecTest_spec.rb → counter_rspec_spec.rb} +0 -0
  225. data/samp/counter/{counter_unitTest_bench.rb → counter_xunit_bench.rb} +2 -2
  226. data/samp/counter/{counter_unitTest_bench.v → counter_xunit_bench.v} +3 -3
  227. data/samp/counter/{counter_rspecTest_design.rb → counter_xunit_design.rb} +3 -3
  228. data/samp/counter/{counter_unitTest_proto.rb → counter_xunit_proto.rb} +0 -0
  229. data/samp/counter/{counter_rspecTest_runner.rake → counter_xunit_runner.rake} +5 -4
  230. data/samp/counter/{counter_unitTest_spec.rb → counter_xunit_spec.rb} +0 -0
  231. data/samp/pipelined_alu/hw5_unit_test_runner.rake +3 -2
  232. metadata +177 -177
  233. data/ext/README +0 -124
  234. data/ext/relay.cin +0 -146
  235. data/ext/ruby-vpi.c +0 -36
  236. data/ext/vlog.cin +0 -92
  237. data/lib/ruby-vpi/synopsys_vcs.tab +0 -2
  238. data/ref/c/relay_8cin.html +0 -204
  239. data/ref/c/ruby-vpi_8c.html +0 -34
  240. data/ref/c/swig_8cin.html +0 -75
  241. data/ref/ruby/classes/FileUtils.src/M000088.html +0 -18
  242. data/ref/ruby/classes/Integer.src/M000011.html +0 -25
  243. data/ref/ruby/classes/Integer.src/M000019.html +0 -22
  244. data/ref/ruby/classes/RubyVpi.src/M000090.html +0 -50
  245. data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000080.html +0 -18
  246. data/ref/ruby/classes/String.src/M000031.html +0 -41
  247. data/ref/ruby/classes/Table.src/M000025.html +0 -38
  248. data/ref/ruby/classes/VerilogParser/Module/Port.src/M000006.html +0 -21
  249. data/ref/ruby/classes/XX/Document.src/M000071.html +0 -22
  250. data/ref/ruby/classes/XX/Markup/ClassMethods.src/M000043.html +0 -22
  251. data/ref/ruby/classes/XX/Markup/InstanceMethods.src/M000051.html +0 -56
  252. data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000002.html +0 -20
data/ext/README DELETED
@@ -1,124 +0,0 @@
1
- Class|Module Naming Convention
2
- ------------------------------
3
-
4
- FooBar
5
- C module named "FooBar".
6
-
7
- RFooBar
8
- Ruby class or module named "FooBar".
9
-
10
- RFooBar_rb_do_stuff
11
- Ruby function named "do_stuff" which is callable from Ruby like this: "FooBar.new.do_stuff" or "FooBar::do_stuff" or ...
12
-
13
- RFooBar_doStuff
14
- Service function named "doStuff" which is callable from C only.
15
-
16
- RFooBar__someStuff
17
- Something named "someStuff", which is neither a Ruby function nor a service function, that belongs to "FooBar". Think of the two underscores "__" as being two colons "::" in Ruby.
18
-
19
-
20
- Variable Naming Convention
21
- --------------------------
22
-
23
- fooBar
24
- Ordinary variable named "fooBar".
25
-
26
- a?p?(r|v)?FooBar
27
- Variable named "FooBar" which has additional properties denoted by the optional prefixes.
28
-
29
- aFooBar
30
- Function argument named named "FooBar". For example: "int divide(int aDividend, aDivisor);".
31
-
32
- pFooBar
33
- Pointer named "FooBar".
34
-
35
- rFooBar
36
- Ruby object (instance of a Ruby class) named "FooBar".
37
-
38
- vFooBar
39
- Verilog object named "FooBar".
40
-
41
-
42
- Code Formatting Convention
43
- --------------------------
44
-
45
- Indenting
46
- Use a single tab character to indent by one level. If you feel that tab characters occupy too much space or indent too deeply, then configure your text editor to *visually* display tab characters using less space. This is similar to the output produced by the filter "expand -t 2" in UNIX.
47
-
48
- level 1
49
- level 2
50
- level 3
51
- ... and so on ...
52
- level 2
53
- level 1
54
-
55
- Line breaking
56
- Do not break a long line into multiple lines. Let it be as long as it wants and configure your text editor to *visually* wrap long lines and indent them so they are easy to read. This is similar to the output produced by the filter "fmt -cs" in UNIX.
57
-
58
- For example:
59
-
60
- /**
61
- Foo is a fantastic bar which can be seen from atop the majestic peaks of baz. However, let us not forget the beauty of sparkling rubies beneath its rugged, earthy exterior. Yes, this line is very long, and that is the point.
62
- */
63
-
64
- Vertical spacing
65
- Use 1 line comment before the start of a group of related statements if necessary.
66
-
67
- Use 1 line within a group of related statements.
68
-
69
- Use 2 lines to mark the boundary between groups of related statements.
70
-
71
- Use 3 lines to mark the boundary of a completely disjoint block of code, which has its own groups of related statements.
72
-
73
- Braces alignment
74
- Put an open brace on same line as the start of the block statement. For example:
75
-
76
- if(foo) {
77
- doFoo();
78
-
79
- if(bar) {
80
- doBar();
81
- }
82
- }
83
- else {
84
- doRuby();
85
- }
86
-
87
- Delimiting operators
88
- When there are many operators in a single statement, indent the first element beneath the block-starter and put the operator at the start of subsequent elements. For example:
89
-
90
- static unsigned long int
91
- foo
92
- , bar
93
- , baz
94
- ;
95
-
96
- doStuff(
97
- foo
98
- , bar
99
- , baz
100
- );
101
-
102
- if(
103
- foo
104
- && bar
105
- || baz
106
- ) {
107
- doStuff();
108
- }
109
-
110
-
111
- Code Documenting Convention
112
- ---------------------------
113
-
114
- Doxygen
115
- Use Javadoc style (at "@" to start a documenting command) instead of LaTeX style (backslash "\" to start a documenting command) whenever possible. All public functions, variables, etc. must have such comments. For example:
116
-
117
- /**
118
- Writes out a foo and returns a bar.
119
-
120
- @param aFoo The foo to write out.
121
- @return A bar.
122
- */
123
- bar doStuff(foo aFoo);
124
-
data/ext/relay.cin DELETED
@@ -1,146 +0,0 @@
1
- /*
2
- Copyright 2006 Suraj N. Kurapati
3
- Copyright 1999 Kazuhiro HIWADA
4
-
5
- This file is part of Ruby-VPI.
6
-
7
- Ruby-VPI is free software; you can redistribute it and/or
8
- modify it under the terms of the GNU General Public License
9
- as published by the Free Software Foundation; either version 2
10
- of the License, or (at your option) any later version.
11
-
12
- Ruby-VPI is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with Ruby-VPI; if not, write to the Free Software Foundation,
19
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
- */
21
-
22
- #ifndef RELAY_CIN
23
- #define RELAY_CIN
24
-
25
- #include <stdlib.h>
26
- #include <pthread.h>
27
- #include <ruby.h>
28
- #include <assert.h>
29
-
30
- #include "verilog.h"
31
- #include "common.h"
32
-
33
- #include "relay.hin"
34
- #include "swig.hin"
35
-
36
-
37
- static pthread_t relay__rubyThread;
38
- static pthread_mutex_t relay__rubyLock;
39
- static pthread_mutex_t relay__verilogLock;
40
-
41
- static void relay_init() {
42
- pthread_mutex_init(&relay__rubyLock, NULL);
43
- pthread_mutex_lock(&relay__rubyLock);
44
- pthread_mutex_init(&relay__verilogLock, NULL);
45
- pthread_mutex_lock(&relay__verilogLock);
46
- }
47
-
48
- static void relay_ruby() {
49
- pthread_mutex_unlock(&relay__rubyLock);
50
- pthread_mutex_lock(&relay__verilogLock);
51
- }
52
-
53
- static void relay_verilog() {
54
- pthread_mutex_unlock(&relay__verilogLock);
55
- pthread_mutex_lock(&relay__rubyLock);
56
- }
57
-
58
- typedef struct {
59
- PLI_BYTE8** mArgs; /// Array of command-line arguments.
60
- uint mCount; /// Number of command-line arguments.
61
- } relay__RubyOptions__def;
62
-
63
- /**
64
- @param apRubyOptions relay__RubyOptions__def structure which contains command-line options passsed to the Ruby interpreter.
65
- @note The structure will be freed *deeply* after use.
66
- */
67
- static void* ruby_run_handshake(void* apRubyOptions) {
68
- // initialize Ruby interpreter
69
- ruby_init();
70
- ruby_init_loadpath();
71
-
72
- swig_init();
73
-
74
- // pass command-line arguments to the interpreter
75
- relay__RubyOptions__def* pRubyOptions = (relay__RubyOptions__def*) apRubyOptions;
76
-
77
- PLI_BYTE8** argv = pRubyOptions->mArgs;
78
- uint argc = pRubyOptions->mCount;
79
-
80
- ruby_options(argc, argv);
81
-
82
- // free the memory used by command-line options
83
- uint i;
84
- for (i = 0; i < argc; i++) {
85
- free(argv[i]);
86
- }
87
-
88
- free(argv);
89
- free(pRubyOptions);
90
-
91
-
92
- // start Ruby interpreter
93
- ruby_run();
94
-
95
-
96
- // Ruby interpreter is now finished, so clean it up before terminating this thread
97
- ruby_finalize();
98
- return NULL;
99
- }
100
-
101
- static void relay_ruby_run() {
102
- relay__RubyOptions__def* pRubyOptions = malloc(sizeof(relay__RubyOptions__def));
103
-
104
- if (pRubyOptions) {
105
- pRubyOptions->mArgs = NULL;
106
- pRubyOptions->mCount = 0;
107
-
108
- // transform the arguments passed to this function by Verilog into command-line arguments for Ruby interpeter
109
- vpiHandle vCall = vpi_handle(vpiSysTfCall, NULL);
110
-
111
- if (vCall) {
112
- vpiHandle vCallArgs = vpi_iterate(vpiArgument, vCall);
113
-
114
- if (vCallArgs) {
115
- vpiHandle vArg;
116
- s_vpi_value argVal;
117
- argVal.format = vpiStringVal;
118
-
119
- while ((vArg = vpi_scan(vCallArgs)) != NULL) {
120
- vpi_get_value(vArg, &argVal);
121
-
122
- pRubyOptions->mCount++;
123
-
124
-
125
- if (pRubyOptions->mArgs == NULL)
126
- pRubyOptions->mArgs = malloc(sizeof(PLI_BYTE8*) * pRubyOptions->mCount);
127
- else
128
- pRubyOptions->mArgs = realloc(pRubyOptions->mArgs, sizeof(PLI_BYTE8*) * pRubyOptions->mCount);
129
-
130
- assert(pRubyOptions->mArgs != NULL);
131
-
132
-
133
- pRubyOptions->mArgs[pRubyOptions->mCount-1] = strdup(argVal.value.str);
134
- }
135
- }
136
- }
137
-
138
- pthread_create(&relay__rubyThread, 0, ruby_run_handshake, pRubyOptions);
139
- return;
140
- }
141
-
142
- common_printf("error: unable to allocate memory for Ruby's command-line arguments.");
143
- exit(EXIT_FAILURE);
144
- }
145
-
146
- #endif
data/ext/ruby-vpi.c DELETED
@@ -1,36 +0,0 @@
1
- /*
2
- Copyright 2006 Suraj N. Kurapati
3
- Copyright 1999 Kazuhiro HIWADA
4
-
5
- This file is part of Ruby-VPI.
6
-
7
- Ruby-VPI is free software; you can redistribute it and/or
8
- modify it under the terms of the GNU General Public License
9
- as published by the Free Software Foundation; either version 2
10
- of the License, or (at your option) any later version.
11
-
12
- Ruby-VPI is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with Ruby-VPI; if not, write to the Free Software Foundation,
19
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
- */
21
-
22
- /**\file
23
- The Ruby-VPI extension, in a nutshell.
24
- */
25
-
26
- #ifdef __cplusplus
27
- extern "C" {
28
- #endif
29
-
30
- #include "swig.cin"
31
- #include "vlog.cin"
32
- #include "relay.cin"
33
-
34
- #ifdef __cplusplus
35
- }
36
- #endif
data/ext/vlog.cin DELETED
@@ -1,92 +0,0 @@
1
- /*
2
- Copyright 2006 Suraj N. Kurapati
3
- Copyright 1999 Kazuhiro HIWADA
4
-
5
- This file is part of Ruby-VPI.
6
-
7
- Ruby-VPI is free software; you can redistribute it and/or
8
- modify it under the terms of the GNU General Public License
9
- as published by the Free Software Foundation; either version 2
10
- of the License, or (at your option) any later version.
11
-
12
- Ruby-VPI is distributed in the hope that it will be useful,
13
- but WITHOUT ANY WARRANTY; without even the implied warranty of
14
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
- GNU General Public License for more details.
16
-
17
- You should have received a copy of the GNU General Public License
18
- along with Ruby-VPI; if not, write to the Free Software Foundation,
19
- Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20
- */
21
-
22
- #ifndef VLOG_CIN
23
- #define VLOG_CIN
24
-
25
- #include <assert.h>
26
- #include "common.h"
27
- #include "relay.hin"
28
- #include "vlog.hin"
29
-
30
-
31
- verilog_tf_funcSig(vlog_ruby_relay) {
32
- // transfer control to ruby
33
- relay_ruby();
34
-
35
-
36
- // transfer control to verilog
37
- verilog_tf_funcReturn(0);
38
- }
39
-
40
- verilog_tf_funcSig(vlog_ruby_init) {
41
- // setup control transfer mechanism
42
- relay_init();
43
-
44
-
45
- // start ruby interpreter and transfer control to it
46
- relay_ruby_run();
47
-
48
-
49
- // transfer control to verilog
50
- verilog_tf_funcReturn(0);
51
- }
52
-
53
- #ifndef SYNOPSYS_VCS
54
- static void vlog_bind_task(PLI_BYTE8* apTaskName, verilog_tf_funcPtr(apTaskDef)) {
55
- s_vpi_systf_data tf;
56
-
57
- tf.type = vpiSysTask;
58
- tf.sysfunctype = 0;
59
- tf.tfname = apTaskName;
60
- tf.calltf = (verilog_tf_funcPtr_strict())apTaskDef;
61
- tf.compiletf = NULL;
62
- tf.sizetf = NULL;
63
- tf.user_data = NULL;
64
-
65
- vpi_register_systf(&tf);
66
- }
67
-
68
- /**
69
- Binds the default VPI tasks (provided by Ruby-VPI) before the Verilog simulator begins to simulate.
70
- */
71
- static void vlog_startup() {
72
- vlog_bind_task("$ruby_init", vlog_ruby_init);
73
- vlog_bind_task("$ruby_relay", vlog_ruby_relay);
74
- }
75
-
76
- void (*vlog_startup_routines[])() = { vlog_startup, 0 };
77
-
78
- #ifdef PRAGMATIC_CVER
79
- /**
80
- Invokes each routine specified in the vlog_startup_routines array.
81
-
82
- This code was originally taken from GPL Cver 2.11a: Copyright (c) 1991-2005 Pragmatic C Software Corp.
83
- */
84
- void vlog_startup_routines_bootstrap() {
85
- uint i;
86
- for (i = 0; vlog_startup_routines[i] != NULL; i++)
87
- vlog_startup_routines[i]();
88
- }
89
- #endif
90
- #endif
91
-
92
- #endif
@@ -1,2 +0,0 @@
1
- $ruby_init call=vlog_ruby_init acc=wn:*
2
- $ruby_relay call=vlog_ruby_relay acc=wn:*
@@ -1,204 +0,0 @@
1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3
- <title>Ruby-VPI: relay.cin File Reference</title>
4
- <link href="doxygen.css" rel="stylesheet" type="text/css">
5
- <link href="tabs.css" rel="stylesheet" type="text/css">
6
- </head><body>
7
- <!-- Generated by Doxygen 1.4.7 -->
8
- <div class="tabs">
9
- <ul>
10
- <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
11
- <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
12
- <li id="current"><a href="files.html"><span>Files</span></a></li>
13
- </ul></div>
14
- <div class="tabs">
15
- <ul>
16
- <li><a href="files.html"><span>File&nbsp;List</span></a></li>
17
- <li><a href="globals.html"><span>Globals</span></a></li>
18
- </ul></div>
19
- <h1>relay.cin File Reference</h1><code>#include &lt;stdlib.h&gt;</code><br>
20
- <code>#include &lt;pthread.h&gt;</code><br>
21
- <code>#include &lt;ruby.h&gt;</code><br>
22
- <code>#include &lt;assert.h&gt;</code><br>
23
- <code>#include &quot;<a class="el" href="verilog_8h.html">verilog.h</a>&quot;</code><br>
24
- <code>#include &quot;<a class="el" href="common_8h.html">common.h</a>&quot;</code><br>
25
- <code>#include &quot;<a class="el" href="relay_8hin.html">relay.hin</a>&quot;</code><br>
26
- <code>#include &quot;<a class="el" href="swig_8hin.html">swig.hin</a>&quot;</code><br>
27
- <table border="0" cellpadding="0" cellspacing="0">
28
- <tr><td></td></tr>
29
- <tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
30
- <tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structrelay____RubyOptions____def.html">relay__RubyOptions__def</a></td></tr>
31
-
32
- <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
33
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#3200e521b223bc6f09430c60ddebb8be">relay_init</a> ()</td></tr>
34
-
35
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#2780928864223802e61d338188f95a60">relay_ruby</a> ()</td></tr>
36
-
37
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#f7fcb35f079ab7f3f568adf6f7bb9c2f">relay_verilog</a> ()</td></tr>
38
-
39
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#c9322be286809df2b947ef11da69e2fd">ruby_run_handshake</a> (void *apRubyOptions)</td></tr>
40
-
41
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#84bc77ed3fd41c02a85a338390abdc7a">relay_ruby_run</a> ()</td></tr>
42
-
43
- <tr><td colspan="2"><br><h2>Variables</h2></td></tr>
44
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static pthread_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#b7e726577af7e3a6e01b747b741a8112">relay__rubyThread</a></td></tr>
45
-
46
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static pthread_mutex_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#28b9f9f296b0ef144d005c01ac1fe49f">relay__rubyLock</a></td></tr>
47
-
48
- <tr><td class="memItemLeft" nowrap align="right" valign="top">static pthread_mutex_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="relay_8cin.html#16c2cdb7e43e9d99b680843830f8a2f1">relay__verilogLock</a></td></tr>
49
-
50
- </table>
51
- <hr><h2>Function Documentation</h2>
52
- <a class="anchor" name="3200e521b223bc6f09430c60ddebb8be"></a><!-- doxytag: member="relay.cin::relay_init" ref="3200e521b223bc6f09430c60ddebb8be" args="()" -->
53
- <div class="memitem">
54
- <div class="memproto">
55
- <table class="memname">
56
- <tr>
57
- <td class="memname">static void relay_init </td>
58
- <td>(</td>
59
- <td class="paramname"> </td>
60
- <td>&nbsp;)&nbsp;</td>
61
- <td width="100%"><code> [static]</code></td>
62
- </tr>
63
- </table>
64
- </div>
65
- <div class="memdoc">
66
-
67
- <p>
68
-
69
- </div>
70
- </div><p>
71
- <a class="anchor" name="2780928864223802e61d338188f95a60"></a><!-- doxytag: member="relay.cin::relay_ruby" ref="2780928864223802e61d338188f95a60" args="()" -->
72
- <div class="memitem">
73
- <div class="memproto">
74
- <table class="memname">
75
- <tr>
76
- <td class="memname">static void relay_ruby </td>
77
- <td>(</td>
78
- <td class="paramname"> </td>
79
- <td>&nbsp;)&nbsp;</td>
80
- <td width="100%"><code> [static]</code></td>
81
- </tr>
82
- </table>
83
- </div>
84
- <div class="memdoc">
85
-
86
- <p>
87
-
88
- </div>
89
- </div><p>
90
- <a class="anchor" name="84bc77ed3fd41c02a85a338390abdc7a"></a><!-- doxytag: member="relay.cin::relay_ruby_run" ref="84bc77ed3fd41c02a85a338390abdc7a" args="()" -->
91
- <div class="memitem">
92
- <div class="memproto">
93
- <table class="memname">
94
- <tr>
95
- <td class="memname">static void relay_ruby_run </td>
96
- <td>(</td>
97
- <td class="paramname"> </td>
98
- <td>&nbsp;)&nbsp;</td>
99
- <td width="100%"><code> [static]</code></td>
100
- </tr>
101
- </table>
102
- </div>
103
- <div class="memdoc">
104
-
105
- <p>
106
-
107
- </div>
108
- </div><p>
109
- <a class="anchor" name="f7fcb35f079ab7f3f568adf6f7bb9c2f"></a><!-- doxytag: member="relay.cin::relay_verilog" ref="f7fcb35f079ab7f3f568adf6f7bb9c2f" args="()" -->
110
- <div class="memitem">
111
- <div class="memproto">
112
- <table class="memname">
113
- <tr>
114
- <td class="memname">static void relay_verilog </td>
115
- <td>(</td>
116
- <td class="paramname"> </td>
117
- <td>&nbsp;)&nbsp;</td>
118
- <td width="100%"><code> [static]</code></td>
119
- </tr>
120
- </table>
121
- </div>
122
- <div class="memdoc">
123
-
124
- <p>
125
-
126
- </div>
127
- </div><p>
128
- <a class="anchor" name="c9322be286809df2b947ef11da69e2fd"></a><!-- doxytag: member="relay.cin::ruby_run_handshake" ref="c9322be286809df2b947ef11da69e2fd" args="(void *apRubyOptions)" -->
129
- <div class="memitem">
130
- <div class="memproto">
131
- <table class="memname">
132
- <tr>
133
- <td class="memname">static void* ruby_run_handshake </td>
134
- <td>(</td>
135
- <td class="paramtype">void *&nbsp;</td>
136
- <td class="paramname"> <em>apRubyOptions</em> </td>
137
- <td>&nbsp;)&nbsp;</td>
138
- <td width="100%"><code> [static]</code></td>
139
- </tr>
140
- </table>
141
- </div>
142
- <div class="memdoc">
143
-
144
- <p>
145
- <dl compact><dt><b>Parameters:</b></dt><dd>
146
- <table border="0" cellspacing="2" cellpadding="0">
147
- <tr><td valign="top"></td><td valign="top"><em>apRubyOptions</em>&nbsp;</td><td><a class="el" href="structrelay____RubyOptions____def.html">relay__RubyOptions__def</a> structure which contains command-line options passsed to the Ruby interpreter. </td></tr>
148
- </table>
149
- </dl>
150
- <dl compact><dt><b>Note:</b></dt><dd>The structure will be freed *deeply* after use. </dd></dl>
151
-
152
- </div>
153
- </div><p>
154
- <hr><h2>Variable Documentation</h2>
155
- <a class="anchor" name="28b9f9f296b0ef144d005c01ac1fe49f"></a><!-- doxytag: member="relay.cin::relay__rubyLock" ref="28b9f9f296b0ef144d005c01ac1fe49f" args="" -->
156
- <div class="memitem">
157
- <div class="memproto">
158
- <table class="memname">
159
- <tr>
160
- <td class="memname">pthread_mutex_t <a class="el" href="relay_8cin.html#28b9f9f296b0ef144d005c01ac1fe49f">relay__rubyLock</a><code> [static]</code> </td>
161
- </tr>
162
- </table>
163
- </div>
164
- <div class="memdoc">
165
-
166
- <p>
167
-
168
- </div>
169
- </div><p>
170
- <a class="anchor" name="b7e726577af7e3a6e01b747b741a8112"></a><!-- doxytag: member="relay.cin::relay__rubyThread" ref="b7e726577af7e3a6e01b747b741a8112" args="" -->
171
- <div class="memitem">
172
- <div class="memproto">
173
- <table class="memname">
174
- <tr>
175
- <td class="memname">pthread_t <a class="el" href="relay_8cin.html#b7e726577af7e3a6e01b747b741a8112">relay__rubyThread</a><code> [static]</code> </td>
176
- </tr>
177
- </table>
178
- </div>
179
- <div class="memdoc">
180
-
181
- <p>
182
-
183
- </div>
184
- </div><p>
185
- <a class="anchor" name="16c2cdb7e43e9d99b680843830f8a2f1"></a><!-- doxytag: member="relay.cin::relay__verilogLock" ref="16c2cdb7e43e9d99b680843830f8a2f1" args="" -->
186
- <div class="memitem">
187
- <div class="memproto">
188
- <table class="memname">
189
- <tr>
190
- <td class="memname">pthread_mutex_t <a class="el" href="relay_8cin.html#16c2cdb7e43e9d99b680843830f8a2f1">relay__verilogLock</a><code> [static]</code> </td>
191
- </tr>
192
- </table>
193
- </div>
194
- <div class="memdoc">
195
-
196
- <p>
197
-
198
- </div>
199
- </div><p>
200
- <hr size="1"><address style="align: right;"><small>Generated on Tue Oct 24 12:19:09 2006 for Ruby-VPI by&nbsp;
201
- <a href="http://www.doxygen.org/index.html">
202
- <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
203
- </body>
204
- </html>