ruby-vpi 15.0.0 → 15.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/doc/common.css +10 -18
- data/doc/common.tpl +28 -15
- data/doc/history.doc +4 -6
- data/doc/history.html +327 -286
- data/doc/history.yml +19 -0
- data/doc/intro.inc +47 -2
- data/doc/lib/doc_proxy.rb +16 -0
- data/doc/lib/erb_proxy.rb +5 -0
- data/doc/manual.doc +35 -26
- data/doc/manual.html +152 -100
- data/doc/memo.doc +16 -10
- data/doc/memo.html +29 -18
- data/doc/print.css +10 -0
- data/doc/readme.doc +2 -43
- data/doc/readme.html +42 -49
- data/doc/rss.xml +37 -0
- data/ext/Rakefile +10 -1
- data/ext/swig_vpi.h +924 -0
- data/ext/swig_vpi.i +2 -3
- data/ext/swig_wrap.cin +20 -37
- data/ref/c/annotated.html +1 -1
- data/ref/c/common_8h.html +1 -1
- data/ref/c/files.html +2 -1
- data/ref/c/functions.html +17 -17
- data/ref/c/functions_vars.html +17 -17
- data/ref/c/globals.html +3 -5
- data/ref/c/globals_0x62.html +1 -1
- data/ref/c/globals_0x63.html +30 -30
- data/ref/c/globals_0x65.html +2 -2
- data/ref/c/globals_0x66.html +1 -1
- data/ref/c/globals_0x67.html +1 -1
- data/ref/c/globals_0x69.html +1 -1
- data/ref/c/globals_0x6c.html +1 -1
- data/ref/c/globals_0x6d.html +1 -1
- data/ref/c/globals_0x6e.html +1 -1
- data/ref/c/globals_0x70.html +18 -18
- data/ref/c/globals_0x72.html +1 -1
- data/ref/c/globals_0x73.html +12 -13
- data/ref/c/globals_0x74.html +1 -1
- data/ref/c/globals_0x75.html +1 -1
- data/ref/c/globals_0x76.html +413 -413
- data/ref/c/globals_0x78.html +2 -2
- data/ref/c/globals_defs.html +30 -30
- data/ref/c/globals_defs_0x65.html +2 -2
- data/ref/c/globals_defs_0x6c.html +1 -1
- data/ref/c/globals_defs_0x6e.html +1 -1
- data/ref/c/globals_defs_0x70.html +3 -3
- data/ref/c/globals_defs_0x72.html +1 -1
- data/ref/c/globals_defs_0x73.html +2 -3
- data/ref/c/globals_defs_0x75.html +1 -1
- data/ref/c/globals_defs_0x76.html +411 -411
- data/ref/c/globals_defs_0x78.html +2 -2
- data/ref/c/globals_enum.html +1 -1
- data/ref/c/globals_eval.html +1 -1
- data/ref/c/globals_func.html +1 -1
- data/ref/c/globals_func_0x66.html +1 -1
- data/ref/c/globals_func_0x67.html +1 -1
- data/ref/c/globals_func_0x69.html +1 -1
- data/ref/c/globals_func_0x6d.html +1 -1
- data/ref/c/globals_func_0x70.html +2 -2
- data/ref/c/globals_func_0x72.html +1 -1
- data/ref/c/globals_func_0x73.html +1 -1
- data/ref/c/globals_func_0x76.html +1 -1
- data/ref/c/globals_type.html +26 -26
- data/ref/c/globals_vars.html +5 -7
- data/ref/c/index.html +1 -1
- data/ref/c/main_8c.html +1 -1
- data/ref/c/main_8h.html +1 -1
- data/ref/c/relay_8c.html +1 -1
- data/ref/c/relay_8h.html +1 -1
- data/ref/c/structswig__cast__info.html +1 -1
- data/ref/c/structswig__class.html +1 -1
- data/ref/c/structswig__module__info.html +1 -1
- data/ref/c/structswig__type__info.html +1 -1
- data/ref/c/structt__cb__data.html +23 -6
- data/ref/c/structt__vpi__delay.html +20 -3
- data/ref/c/structt__vpi__error__info.html +71 -3
- data/ref/c/structt__vpi__strengthval.html +3 -3
- data/ref/c/structt__vpi__systf__data.html +46 -12
- data/ref/c/structt__vpi__time.html +3 -3
- data/ref/c/structt__vpi__value.html +113 -3
- data/ref/c/structt__vpi__vecval.html +3 -3
- data/ref/c/structt__vpi__vlog__info.html +54 -3
- data/ref/c/swig__vpi_8h.html +8739 -0
- data/ref/c/swig__wrap_8cin.html +49 -102
- data/ref/c/unions__vpi__value__value.html +1 -1
- data/ref/c/verilog_8h.html +1 -1
- data/ref/c/vlog_8c.html +1 -1
- data/ref/c/vlog_8h.html +1 -1
- data/ref/c/vpi__user_8h.html +16 -16
- data/ref/ruby/created.rid +1 -1
- metadata +5 -2
data/doc/history.yml
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
-
|
2
|
+
Version: 15.0.1
|
3
|
+
|
4
|
+
Date: 2007-01-15
|
5
|
+
|
6
|
+
Summary: |
|
7
|
+
This release fixes a problem with compilation of the C extension and improves the user documentation's appearance.
|
8
|
+
|
9
|
+
Acknowledgment: |
|
10
|
+
Thanks to Derek Graham for reporting the problem.
|
11
|
+
|
12
|
+
Details: |
|
13
|
+
* Restored the monkey patch, which was removed in release 14.0.0, for the SWIG @va_list@ problem.
|
14
|
+
|
15
|
+
* Made table of contents in-line with the content in user documentation.
|
16
|
+
|
17
|
+
* Added printer-friendly stylesheet for user documentation.
|
18
|
+
|
19
|
+
|
1
20
|
-
|
2
21
|
Version: 15.0.0
|
3
22
|
|
data/doc/intro.inc
CHANGED
@@ -1,7 +1,53 @@
|
|
1
1
|
Ruby-VPI is a "Ruby":http://www.ruby-lang.org interface to "IEEE 1364-2005 Verilog VPI":http://ieeexplore.ieee.org/xpl/standardstoc.jsp?isnumber=33945. It lets you create complex Verilog test benches easily and wholly in Ruby.
|
2
2
|
|
3
3
|
|
4
|
-
|
4
|
+
p(title). Documentation
|
5
|
+
|
6
|
+
* "Tutorial":manual.html#usage.tutorial
|
7
|
+
- learn how to use Ruby-VPI quickly.
|
8
|
+
* "Manual":manual.html
|
9
|
+
- complete documentation for users. _Start here!_
|
10
|
+
* "Reference":../ref/
|
11
|
+
- API documentation for Ruby libraries and C extension.
|
12
|
+
|
13
|
+
|
14
|
+
p(title). Records
|
15
|
+
|
16
|
+
* <a type="application/rss+xml" href="<%= RSS_URL %>">!images/feed-icon.png(RSS feed icon)! RSS feed</a>
|
17
|
+
- keep track of new releases at your leisure.
|
18
|
+
* "Release history":history.html
|
19
|
+
- record of all release notes.
|
20
|
+
* "Memorandum":memo.html
|
21
|
+
- pending tasks for future releases.
|
22
|
+
|
23
|
+
|
24
|
+
p(title). Facilities
|
25
|
+
|
26
|
+
* "Project portal":http://rubyforge.org/projects/ruby-vpi
|
27
|
+
- hosted generously by "RubyForge":http://rubyforge.org.
|
28
|
+
* "Source code":http://ruby-vpi.rubyforge.org/src/ruby-vpi
|
29
|
+
- browse online or obtain through "Darcs":http://abridgegame.org/darcs/.
|
30
|
+
* "Downloads":http://rubyforge.org/frs/?group_id=1339
|
31
|
+
- obtain release packages.
|
32
|
+
* "Bugs":http://rubyforge.org/tracker/?group_id=1339
|
33
|
+
- report defects in the software.
|
34
|
+
* "Patches":http://rubyforge.org/tracker/?group_id=1339
|
35
|
+
- submit patches to source code.
|
36
|
+
* "Requests":http://rubyforge.org/tracker/?group_id=1339
|
37
|
+
- request new features or get support.
|
38
|
+
* "Forums":http://rubyforge.org/forum/?group_id=1339
|
39
|
+
- discuss things and ask questions.
|
40
|
+
|
41
|
+
|
42
|
+
p(title). Outreach
|
43
|
+
|
44
|
+
* "News":http://ruby-vpi.rubyforge.org/news
|
45
|
+
- see what's cooking for the next release.
|
46
|
+
* "Talks":http://ruby-vpi.rubyforge.org/talks
|
47
|
+
- materials from presentations and seminars.
|
48
|
+
|
49
|
+
|
50
|
+
h2(#intro.features). Prominent features
|
5
51
|
|
6
52
|
h3. Portable
|
7
53
|
|
@@ -81,4 +127,3 @@ bq. @puts some_register@
|
|
81
127
|
* Simulate fifteen clock cycles:
|
82
128
|
|
83
129
|
bq. @15.times { simulate }@
|
84
|
-
|
data/doc/lib/doc_proxy.rb
CHANGED
@@ -24,6 +24,7 @@ require 'erb_proxy'
|
|
24
24
|
class DocProxy < ErbProxy
|
25
25
|
Block = Struct.new :anchor, :title, :type
|
26
26
|
Heading = Struct.new :anchor, :title, :depth, :index
|
27
|
+
Index = Struct.new :name, :items
|
27
28
|
@@anchorNum = 0
|
28
29
|
|
29
30
|
CATEGORIES = {
|
@@ -40,6 +41,7 @@ class DocProxy < ErbProxy
|
|
40
41
|
|
41
42
|
@blocks = Hash.new {|h,k| h[k] = []}
|
42
43
|
@headings = []
|
44
|
+
@indexes = Hash.new {|h,k| h[k] = []}
|
43
45
|
|
44
46
|
CATEGORIES[:admonition].each do |type|
|
45
47
|
add_block_handler :admonition, type do |index, title, text|
|
@@ -122,6 +124,20 @@ class DocProxy < ErbProxy
|
|
122
124
|
end
|
123
125
|
end
|
124
126
|
|
127
|
+
# determine index listings
|
128
|
+
DocProxy::CATEGORIES.each_pair do |cat, types|
|
129
|
+
category = cat.to_s.capitalize << 's'
|
130
|
+
|
131
|
+
types.each do |type|
|
132
|
+
items = @blocks[type]
|
133
|
+
|
134
|
+
unless items.empty?
|
135
|
+
name = type.to_s.capitalize << 's'
|
136
|
+
@indexes[category] << Index.new(name, items)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
125
141
|
buffer
|
126
142
|
end
|
127
143
|
|
data/doc/lib/erb_proxy.rb
CHANGED
data/doc/manual.doc
CHANGED
@@ -11,7 +11,7 @@ _Happy reading!_
|
|
11
11
|
|
12
12
|
h2(#terms). Terms
|
13
13
|
|
14
|
-
Copyright (c) 2006 Suraj N. Kurapati.
|
14
|
+
Copyright (c) 2006, 2007 Suraj N. Kurapati.
|
15
15
|
|
16
16
|
Permission is granted to copy, distribute and/or modify this document under the terms of the "GNU Free Documentation License":http://www.gnu.org/copyleft/fdl.html, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the the file named "LICENSE":./LICENSE.
|
17
17
|
|
@@ -20,7 +20,7 @@ The admonition and navigation graphics used in this manual are Copyright (c) 200
|
|
20
20
|
|
21
21
|
h1(#intro). Introduction
|
22
22
|
|
23
|
-
<%=
|
23
|
+
<%= import 'intro.inc' %>
|
24
24
|
|
25
25
|
|
26
26
|
h2(#intro.license). License
|
@@ -56,7 +56,7 @@ Ruby-VPI presents an open-ended interface to VPI. Thus, you can use any methodol
|
|
56
56
|
|
57
57
|
h2(#background.vocab). Terminology
|
58
58
|
|
59
|
-
<% note do %>
|
59
|
+
<% note "Glossary has definitions" do %>
|
60
60
|
Have a look at the "glossary":#glossary for definitions of terms used in this manual.
|
61
61
|
<% end %>
|
62
62
|
|
@@ -213,9 +213,7 @@ h2(#setup.maintenance). Maintenance
|
|
213
213
|
* You can uninstall Ruby-VPI by running the <pre>gem uninstall ruby-vpi</pre> command.
|
214
214
|
* You can upgrade to the latest release of Ruby-VPI by running the <pre>gem update ruby-vpi</pre> command.
|
215
215
|
|
216
|
-
<% note do %>
|
217
216
|
Learn more about using and manipulating RubyGems in "the RubyGems user manual":http://www.rubygems.org.
|
218
|
-
<% end %>
|
219
217
|
|
220
218
|
|
221
219
|
h1(#usage). Usage
|
@@ -223,18 +221,37 @@ h1(#usage). Usage
|
|
223
221
|
|
224
222
|
h2(#usage.vpi). VPI in Ruby
|
225
223
|
|
226
|
-
The _entire_ IEEE Std 1364-2005 VPI interface is available in Ruby, but with
|
224
|
+
The _entire_ IEEE Std 1364-2005 VPI interface is available in Ruby, but with a few minor differences.
|
225
|
+
|
226
|
+
p(title). Capitalize those names!
|
227
|
+
|
228
|
+
The names of all VPI types, structures, and constants become _capitalized_ because Ruby requires that the names of constants begin with a capital letter.
|
227
229
|
|
228
230
|
For example, the @s_vpi_value@ structure becomes the @S_vpi_value@ class in Ruby. Likewise, the @vpiIntVal@ constant becomes the @VpiIntVal@ constant in Ruby.
|
229
231
|
|
230
|
-
|
232
|
+
<% note "No capitalization for VPI functions" do %>
|
233
|
+
Ruby's capitalization rule does _not_ apply to VPI functions--their names remain unchanged in Ruby.
|
234
|
+
<% end %>
|
235
|
+
|
236
|
+
p(title). Use Ruby's @printf@
|
237
|
+
|
238
|
+
The VPI functions @vpi_vprintf@ and @vpi_mcd_vprintf@ are not made accessible to Ruby. However, this isn't a big problem because you can use Ruby's @printf@ method instead.
|
239
|
+
|
240
|
+
The reason for this limitation is that some C compilers have trouble with pointers to the @va_list@ type. For these compilers, the third line of source code shown below causes a "type mismatch" error.
|
241
|
+
|
242
|
+
<code lang="c">
|
243
|
+
#include <stdarg.h>
|
244
|
+
void foo(va_list ap) {
|
245
|
+
va_list *p = ≈
|
246
|
+
}
|
247
|
+
</code>
|
231
248
|
|
232
249
|
|
233
250
|
h3(#usage.vpi.handles). Handles
|
234
251
|
|
235
252
|
A _handle_ is a reference to an object, such as a module, register, wire, and so on, inside the Verilog simulation. In short, handles allow you to inspect and manipulate the design under test and its components.
|
236
253
|
|
237
|
-
<% note do %>
|
254
|
+
<% note "@Vpi::Handle@ heritage" do %>
|
238
255
|
Handles are instances of the @Vpi::Handle@ class (see "reference documentation":../ref/ruby/classes/Vpi/Handle.html for details) in Ruby-VPI.
|
239
256
|
<% end %>
|
240
257
|
|
@@ -297,31 +314,31 @@ To access a handle's properties, invoke the property name, using the following f
|
|
297
314
|
<% end %>
|
298
315
|
|
299
316
|
<% example "Examples of accessing a handle's properties", "ex..properties" do %>
|
300
|
-
|_/2. Ruby expression |_\6.
|
317
|
+
|_/2. Ruby expression |_\6. Method naming format |_/2. Description |
|
301
318
|
||_. Operation |_. _ |_. Property |_. _ |_. Accessor |_. Addendum ||
|
302
|
-
| @handle.vpiIntVal@ | | | vpiIntVal | | | |/4. These expressions access the logic value of the handle's
|
319
|
+
| @handle.vpiIntVal@ | | | vpiIntVal | | | |/4. These expressions access the *logic value* of the handle's @VpiIntVal@ property. |
|
303
320
|
| @handle.vpiIntVal_l@ | | | vpiIntVal | _ | l | |
|
304
321
|
| @handle.intVal@ | | | intVal | | | |
|
305
322
|
| @handle.intVal_l@ | | | intVal | _ | l | |
|
306
|
-
| @handle.vpiIntVal = 15@ | | | vpiIntVal | | | = |/4. These expressions assign the number 15 to the logic value of the handle's
|
323
|
+
| @handle.vpiIntVal = 15@ | | | vpiIntVal | | | = |/4. These expressions assign the number 15 to the *logic value* of the handle's @VpiIntVal@ property. |
|
307
324
|
| @handle.vpiIntVal_l = 15@ | | | vpiIntVal | _ | l | = |
|
308
325
|
| @handle.intVal = 15@ | | | intVal | | | = |
|
309
326
|
| @handle.intVal_l = 15@ | | | intVal | _ | l | = |
|
310
|
-
| @handle.vpiType@ | | | vpiType | | | |/4. These expressions access the integer value of the handle's
|
327
|
+
| @handle.vpiType@ | | | vpiType | | | |/4. These expressions access the *integer value* of the handle's @VpiType@ property. |
|
311
328
|
| @handle.vpiType_i@ | | | vpiType | _ | i | |
|
312
329
|
| @handle.type@ | | | type | | | |
|
313
330
|
| @handle.type_i@ | | | type | _ | i | |
|
314
|
-
| @handle.vpiProtected@ | | | vpiProtected | | | |/6. These expressions access the boolean value of the handle's
|
331
|
+
| @handle.vpiProtected@ | | | vpiProtected | | | |/6. These expressions access the *boolean value* of the handle's @VpiProtected@ property. |
|
315
332
|
| @handle.vpiProtected_b@ | | | vpiProtected | _ | b | |
|
316
333
|
| @handle.vpiProtected?@ | | | vpiProtected | | | ? |
|
317
334
|
| @handle.protected@ | | | protected | | | |
|
318
335
|
| @handle.protected_b@ | | | protected | _ | b | |
|
319
336
|
| @handle.protected?@ | | | protected | | | ? |
|
320
|
-
| @handle.vpiFullName@ | | | vpiFullName | | | |/4. These expressions access the string value of the handle's
|
337
|
+
| @handle.vpiFullName@ | | | vpiFullName | | | |/4. These expressions access the *string value* of the handle's @VpiFullName@ property. |
|
321
338
|
| @handle.vpiFullName_s@ | | | vpiFullName | _ | s | |
|
322
339
|
| @handle.fullName@ | | | fullName | | | |
|
323
340
|
| @handle.fullName_s@ | | | fullName | _ | s | |
|
324
|
-
| @handle.vpiParent@ | | | vpiParent | | | |/4. These expressions access the handle value of the handle's
|
341
|
+
| @handle.vpiParent@ | | | vpiParent | | | |/4. These expressions access the *handle value* of the handle's @VpiParent@ property. |
|
325
342
|
| @handle.vpiParent_h@ | | | vpiParent | _ | h | |
|
326
343
|
| @handle.parent@ | | | parent | | | |
|
327
344
|
| @handle.parent_h@ | | | parent | _ | h | |
|
@@ -369,11 +386,7 @@ cbHandle = vpi_register_cb(cbData) do |data|
|
|
369
386
|
end
|
370
387
|
</code>
|
371
388
|
|
372
|
-
|
373
|
-
<% end %>
|
374
|
-
|
375
|
-
<% figure "Output from <xref#ex..callback>" do %>
|
376
|
-
Shown below is the output from running the "counter_rspec test":#usage.tutorial after appending the code shown in <xref#ex..callback> to the <tt>counter_rspec_spec.rb</tt> file.
|
389
|
+
Shown below is the result of appending this code to the <tt>counter_rspec_spec.rb</tt> file (provided in <xref#usage.examples> and discussed in <xref#usage.tutorial.specification>) and running the "counter_rspec test":#usage.tutorial.
|
377
390
|
|
378
391
|
<pre>
|
379
392
|
$ rake -f counter_rspec_runner.rake cver
|
@@ -474,7 +487,7 @@ h2(#usage.prototyping). Prototyping
|
|
474
487
|
|
475
488
|
Ruby-VPI enables you to rapidly prototype your designs in Ruby without having to do full-scale implementations in Verilog. This lets you explore and evaluate different design choices quickly.
|
476
489
|
|
477
|
-
|
490
|
+
To create a prototype,
|
478
491
|
# "Determine the *interface*":#usage.tutorial.declare-design (Verilog module declaration) of your design.
|
479
492
|
# "Generate a test":#usage.tutorial.generate-test for that interface.
|
480
493
|
# "Implement the prototype":#usage.tutorial.implement-proto in the generated <tt>proto.rb</tt> file.
|
@@ -603,7 +616,7 @@ By converting Verilog header files into Ruby, your "test":#glossary.test can uti
|
|
603
616
|
|
604
617
|
h2(#usage.tutorial). Tutorial
|
605
618
|
|
606
|
-
# "Declare
|
619
|
+
# "Declare a design":#usage.tutorial.declare-design using Verilog 2001 syntax.
|
607
620
|
# "Generate a test":#usage.tutorial.generate-test for the design using the "automated test generator":#usage.tools.generate-test tool.
|
608
621
|
# "Identify your expectations":#usage.tutorial.specification for the design and implement them in the specification.
|
609
622
|
# (Optional) "Implement the prototype":#usage.tutorial.implement-proto of the design in Ruby.
|
@@ -910,10 +923,6 @@ Here the @clk_reg@ register is connected to the @clk_wire@ wire.
|
|
910
923
|
|
911
924
|
h3(#problems.ivl.vpi_reset). Vpi::reset
|
912
925
|
|
913
|
-
<% caution do %>
|
914
|
-
The @vpi_control@ method was removed in release 3.0.0 (2006-04-23). Please use @Vpi::vpi_control(VpiReset)@ instead.
|
915
|
-
<% end %>
|
916
|
-
|
917
926
|
In version 0.8 of Icarus Verilog, the @vpi_control(vpiReset)@ VPI function causes an assertion to fail inside the simulator. As a result, the simulation terminates and a core dump is produced.
|
918
927
|
|
919
928
|
|