ruby-vpi 18.0.2 → 19.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +15 -19
- data/bin/generate/proto.rb +15 -10
- data/bin/ruby-vpi +2 -0
- data/doc/README +3 -5
- data/doc/Rakefile +3 -3
- data/doc/common.css +24 -136
- data/doc/common.tpl +48 -37
- data/doc/figures/figures.dia +19 -19
- data/doc/figures/ruby_relay.png +0 -0
- data/doc/history.html +252 -67
- data/doc/history.inc +98 -1
- data/doc/history.yaml +105 -0
- data/doc/intro.inc +43 -32
- data/doc/lib/doc_format.rb +19 -13
- data/doc/lib/doc_proxy.rb +7 -7
- data/doc/manual.doc +156 -117
- data/doc/manual.html +601 -560
- data/doc/memo.html +29 -25
- data/doc/print.css +63 -4
- data/doc/readme.doc +4 -6
- data/doc/readme.html +129 -111
- data/doc/rss.xml +168 -7
- data/doc/screen.css +146 -0
- data/doc/spacing.css +57 -0
- data/{samp → examples}/counter/RSpec/Rakefile +0 -0
- data/{samp → examples}/counter/RSpec/counter_design.rb +0 -0
- data/examples/counter/RSpec/counter_proto.rb +9 -0
- data/{samp → examples}/counter/RSpec/counter_runner.rake +0 -0
- data/{samp → examples}/counter/RSpec/counter_spec.rb +0 -0
- data/{samp → examples}/counter/Rakefile +0 -0
- data/{samp → examples}/counter/counter.v +0 -0
- data/{samp → examples}/counter/xUnit/Rakefile +0 -0
- data/{samp → examples}/counter/xUnit/counter_bench.rb +0 -0
- data/{samp → examples}/counter/xUnit/counter_bench.v +0 -0
- data/{samp → examples}/counter/xUnit/counter_design.rb +0 -0
- data/examples/counter/xUnit/counter_proto.rb +9 -0
- data/{samp → examples}/counter/xUnit/counter_runner.rake +0 -0
- data/{samp → examples}/counter/xUnit/counter_spec.rb +0 -0
- data/{samp → examples}/pipelined_alu/Hw5UnitModel.rb +0 -0
- data/{samp → examples}/pipelined_alu/README +0 -0
- data/{samp → examples}/pipelined_alu/Rakefile +0 -0
- data/{samp → examples}/pipelined_alu/TestHw5UnitModel.rb +0 -0
- data/{samp → examples}/pipelined_alu/hw5_unit.v +0 -0
- data/{samp → examples}/pipelined_alu/hw5_unit_design.rb +0 -7
- data/examples/pipelined_alu/hw5_unit_proto.rb +2 -0
- data/{samp → examples}/pipelined_alu/hw5_unit_runner.rake +0 -0
- data/{samp → examples}/pipelined_alu/hw5_unit_spec.rb +0 -0
- data/{samp → examples}/pipelined_alu/int_gen.rb +0 -0
- data/{samp → examples}/register_file/LICENSE +0 -0
- data/{samp → examples}/register_file/README +0 -0
- data/{samp → examples}/register_file/Rakefile +0 -0
- data/{samp → examples}/register_file/register_file.v +0 -0
- data/{samp → examples}/register_file/register_file_design.rb +0 -0
- data/examples/register_file/register_file_proto.rb +11 -0
- data/{samp → examples}/register_file/register_file_runner.rake +0 -0
- data/{samp → examples}/register_file/register_file_spec.rb +0 -0
- data/ext/main.c +5 -5
- data/ext/swig_vpi.i +6 -2
- data/lib/ruby-vpi/core/callback.rb +142 -0
- data/lib/ruby-vpi/core/edge.rb +128 -0
- data/lib/ruby-vpi/core/handle.rb +421 -0
- data/lib/ruby-vpi/core/scheduler.rb +244 -0
- data/lib/ruby-vpi/core/struct.rb +123 -0
- data/lib/ruby-vpi/core.rb +41 -0
- data/lib/ruby-vpi/rcov.rb +25 -12
- data/lib/ruby-vpi/runner.rb +30 -26
- data/lib/ruby-vpi/runner_boot_loader.rb +67 -37
- data/lib/ruby-vpi.rb +2 -2
- data/ref/c/annotated.html +1 -1
- data/ref/c/common_8h.html +1 -1
- data/ref/c/files.html +1 -1
- data/ref/c/functions.html +1 -1
- data/ref/c/functions_vars.html +1 -1
- data/ref/c/globals.html +1 -1
- data/ref/c/globals_0x63.html +1 -1
- data/ref/c/globals_0x65.html +1 -1
- data/ref/c/globals_0x66.html +1 -1
- data/ref/c/globals_0x6d.html +1 -1
- data/ref/c/globals_0x70.html +1 -1
- data/ref/c/globals_0x72.html +1 -1
- data/ref/c/globals_0x73.html +1 -1
- data/ref/c/globals_0x74.html +1 -1
- data/ref/c/globals_0x76.html +1 -1
- data/ref/c/globals_0x78.html +1 -1
- data/ref/c/globals_defs.html +1 -1
- data/ref/c/globals_defs_0x65.html +1 -1
- data/ref/c/globals_defs_0x70.html +1 -1
- data/ref/c/globals_defs_0x76.html +1 -1
- data/ref/c/globals_defs_0x78.html +1 -1
- 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_type.html +1 -1
- data/ref/c/globals_vars.html +1 -1
- 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/structt__cb__data.html +1 -1
- data/ref/c/structt__vpi__delay.html +1 -1
- data/ref/c/structt__vpi__error__info.html +1 -1
- data/ref/c/structt__vpi__strengthval.html +1 -1
- data/ref/c/structt__vpi__systf__data.html +1 -1
- data/ref/c/structt__vpi__time.html +1 -1
- data/ref/c/structt__vpi__value.html +1 -1
- data/ref/c/structt__vpi__vecval.html +1 -1
- data/ref/c/structt__vpi__vlog__info.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 +1 -1
- data/ref/ruby/classes/ERB.html +7 -5
- data/ref/ruby/classes/ERB.src/{M000026.html → M000024.html} +0 -0
- data/ref/ruby/classes/FileUtils.html +11 -11
- data/ref/ruby/classes/FileUtils.src/{M000027.html → M000025.html} +0 -0
- data/ref/ruby/classes/FileUtils.src/{M000028.html → M000026.html} +0 -0
- data/ref/ruby/classes/Float.html +8 -6
- data/ref/ruby/classes/Float.src/{M000021.html → M000019.html} +0 -0
- data/ref/ruby/classes/Integer.html +67 -65
- data/ref/ruby/classes/Integer.src/M000007.html +25 -0
- data/ref/ruby/classes/Integer.src/{M000014.html → M000008.html} +5 -5
- data/ref/ruby/classes/Integer.src/M000009.html +5 -12
- data/ref/ruby/classes/Integer.src/M000010.html +5 -5
- data/ref/ruby/classes/Integer.src/M000011.html +5 -5
- data/ref/ruby/classes/Integer.src/M000012.html +5 -5
- data/ref/ruby/classes/Integer.src/M000015.html +25 -0
- data/ref/ruby/classes/Integer.src/M000016.html +31 -0
- data/ref/ruby/classes/Integer.src/M000017.html +12 -12
- data/ref/ruby/classes/Integer.src/M000018.html +17 -18
- data/ref/ruby/classes/Object.html +126 -0
- data/ref/ruby/classes/RDoc.html +5 -5
- data/ref/ruby/classes/RDoc.src/{M000061.html → M000081.html} +0 -0
- data/ref/ruby/classes/RubyVPI.html +50 -9
- data/ref/ruby/classes/String.html +22 -20
- data/ref/ruby/classes/String.src/M000020.html +36 -0
- data/ref/ruby/classes/String.src/M000021.html +41 -0
- data/ref/ruby/classes/String.src/M000022.html +5 -23
- data/ref/ruby/classes/String.src/M000023.html +5 -28
- data/ref/ruby/classes/{Vpi → VPI}/Handle.html +442 -140
- data/ref/ruby/classes/{Vpi/Handle.src/M000042.html → VPI/Handle.src/M000037.html} +4 -4
- data/ref/ruby/classes/VPI/Handle.src/M000038.html +21 -0
- data/ref/ruby/classes/VPI/Handle.src/M000039.html +18 -0
- data/ref/ruby/classes/{Vpi/Handle.src/M000036.html → VPI/Handle.src/M000040.html} +5 -5
- data/ref/ruby/classes/VPI/Handle.src/M000045.html +18 -0
- data/ref/ruby/classes/{Vpi/Handle.src/M000038.html → VPI/Handle.src/M000046.html} +5 -5
- data/ref/ruby/classes/VPI/Handle.src/M000057.html +18 -0
- data/ref/ruby/classes/{Vpi/Handle.src/M000040.html → VPI/Handle.src/M000058.html} +5 -5
- data/ref/ruby/classes/VPI/Handle.src/M000061.html +18 -0
- data/ref/ruby/classes/VPI/Handle.src/M000062.html +18 -0
- data/ref/ruby/classes/{Vpi/Handle.src/M000054.html → VPI/Handle.src/M000065.html} +11 -11
- data/ref/ruby/classes/VPI/Handle.src/M000067.html +21 -0
- data/ref/ruby/classes/VPI/Handle.src/M000068.html +28 -0
- data/ref/ruby/classes/VPI/Handle.src/M000069.html +50 -0
- data/ref/ruby/classes/{Vpi/Handle.src/M000048.html → VPI/Handle.src/M000070.html} +6 -6
- data/ref/ruby/classes/{Vpi/Handle.src/M000049.html → VPI/Handle.src/M000071.html} +6 -6
- data/ref/ruby/classes/{Vpi/Handle.src/M000050.html → VPI/Handle.src/M000072.html} +5 -5
- data/ref/ruby/classes/{Vpi/Handle.src/M000051.html → VPI/Handle.src/M000073.html} +17 -17
- data/ref/ruby/classes/VPI/Handle.src/M000075.html +18 -0
- data/ref/ruby/classes/VPI/Handle.src/M000076.html +40 -0
- data/ref/ruby/classes/{Vpi/Handle.src/M000056.html → VPI/Handle.src/M000077.html} +18 -18
- data/ref/ruby/classes/{Vpi → VPI}/S_vpi_time.html +22 -20
- data/ref/ruby/classes/VPI/S_vpi_time.src/M000078.html +18 -0
- data/ref/ruby/classes/VPI/S_vpi_time.src/M000079.html +19 -0
- data/ref/ruby/classes/{Vpi → VPI}/S_vpi_value.html +37 -23
- data/ref/ruby/classes/VPI/S_vpi_value.src/M000034.html +35 -0
- data/ref/ruby/classes/VPI/S_vpi_value.src/M000035.html +42 -0
- data/ref/ruby/classes/VPI/S_vpi_value.src/M000036.html +42 -0
- data/ref/ruby/classes/{Vpi.html → VPI.html} +129 -34
- data/ref/ruby/classes/VPI.src/M000027.html +19 -0
- data/ref/ruby/classes/VPI.src/M000028.html +18 -0
- data/ref/ruby/classes/VPI.src/M000029.html +19 -0
- data/ref/ruby/classes/VPI.src/M000031.html +25 -0
- data/ref/ruby/classes/VPI.src/M000032.html +26 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.html +17 -15
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000004.html +23 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/{M000007.html → M000005.html} +0 -0
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000006.html +5 -10
- data/ref/ruby/classes/VerilogParser/Module.html +7 -5
- data/ref/ruby/classes/VerilogParser/Module.src/{M000005.html → M000003.html} +0 -0
- data/ref/ruby/classes/VerilogParser.html +7 -5
- data/ref/ruby/classes/VerilogParser.src/{M000004.html → M000002.html} +0 -0
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/generate_rb.html +2 -2
- data/ref/ruby/files/lib/ruby-vpi/{vpi_rb.html → core/callback_rb.html} +7 -8
- data/ref/ruby/files/lib/ruby-vpi/core/edge_rb.html +114 -0
- data/ref/ruby/files/lib/ruby-vpi/core/handle_rb.html +107 -0
- data/ref/ruby/files/lib/ruby-vpi/core/scheduler_rb.html +114 -0
- data/ref/ruby/files/lib/ruby-vpi/core/struct_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/core_rb.html +121 -0
- data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +5 -41
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000001.html +3 -3
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
- data/ref/ruby/fr_class_index.html +5 -4
- data/ref/ruby/fr_file_index.html +6 -1
- data/ref/ruby/fr_method_index.html +80 -60
- metadata +126 -103
- data/ext/swig_vpi.h +0 -924
- data/ext/swig_wrap.cin +0 -7083
- data/lib/ruby-vpi/vpi.rb +0 -651
- data/ref/ruby/classes/Integer.src/M000013.html +0 -18
- data/ref/ruby/classes/Integer.src/M000019.html +0 -25
- data/ref/ruby/classes/Integer.src/M000020.html +0 -30
- data/ref/ruby/classes/String.src/M000024.html +0 -18
- data/ref/ruby/classes/String.src/M000025.html +0 -18
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +0 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000035.html +0 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000037.html +0 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000039.html +0 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000041.html +0 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000043.html +0 -21
- data/ref/ruby/classes/Vpi/Handle.src/M000044.html +0 -21
- data/ref/ruby/classes/Vpi/Handle.src/M000045.html +0 -22
- data/ref/ruby/classes/Vpi/Handle.src/M000046.html +0 -50
- data/ref/ruby/classes/Vpi/Handle.src/M000047.html +0 -91
- data/ref/ruby/classes/Vpi/Handle.src/M000053.html +0 -18
- data/ref/ruby/classes/Vpi/Handle.src/M000057.html +0 -40
- data/ref/ruby/classes/Vpi/S_vpi_time.src/M000058.html +0 -18
- data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +0 -19
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +0 -18
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +0 -18
- data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +0 -18
- data/ref/ruby/classes/Vpi.src/M000029.html +0 -28
- data/ref/ruby/classes/Vpi.src/M000030.html +0 -39
- data/ref/ruby/classes/Vpi.src/M000031.html +0 -20
- data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.src/M000002.html +0 -18
- data/samp/counter/RSpec/counter_proto.rb +0 -10
- data/samp/counter/xUnit/counter_proto.rb +0 -10
- data/samp/pipelined_alu/hw5_unit_proto.rb +0 -4
- data/samp/register_file/register_file_proto.rb +0 -11
data/doc/rss.xml
CHANGED
@@ -5,21 +5,182 @@
|
|
5
5
|
<link>http://ruby-vpi.rubyforge.org</link>
|
6
6
|
<description>Ruby-VPI is a Ruby interface to IEEE 1364-2005 Verilog VPI and a platform for unit testing, rapid prototyping, and systems integration of Verilog modules through Ruby. It lets you create complex Verilog test benches easily and wholly in Ruby.</description>
|
7
7
|
<item>
|
8
|
-
<title>Version
|
9
|
-
<link>http://ruby-vpi.rubyforge.org/doc/history.html#
|
10
|
-
<guid>http://ruby-vpi.rubyforge.org/doc/history.html#
|
11
|
-
<description><h1 id="
|
8
|
+
<title>Version 19.0.0 released</title>
|
9
|
+
<link>http://ruby-vpi.rubyforge.org/doc/history.html#a19.0.0</link>
|
10
|
+
<guid>http://ruby-vpi.rubyforge.org/doc/history.html#a19.0.0</guid>
|
11
|
+
<description><h1 id="19.0.0">Version 19.0.0 (2007-08-27)</h1>
|
12
12
|
|
13
|
-
<p>This release
|
13
|
+
<p>This release restores support for Cadence NC-Sim, breaks support for Mentor Modelsim, adds support for concurrent processes which simplify implementing Ruby prototypess, and offers numerous other improvements.</p>
|
14
|
+
|
15
|
+
|
16
|
+
<p><strong>Mentor Modelsim users, take note</strong>: this release does not work very well with Mentor Modelsim, so do not upgrade until compatibility is restored in a future release. In the mean time, consider using this release with another simulator, such as <a href="http://www.pragmatic-c.com/gpl-cver/">GPL Cver</a>.</p>
|
17
|
+
|
18
|
+
|
19
|
+
<h2>Thanks</h2>
|
20
|
+
|
21
|
+
|
22
|
+
<ul>
|
23
|
+
<li>Calvin Wong <a href="http://rubyforge.org/pipermail/ruby-vpi-discuss/2007-August/000046.html">requested the concurrent processes feature</a>, helped test it, and provided useful feedback.</li>
|
24
|
+
</ul>
|
25
|
+
|
26
|
+
|
27
|
+
<h2>Caution</h2>
|
28
|
+
|
29
|
+
|
30
|
+
<ul>
|
31
|
+
<li>Prototypes no longer have a <code class="code">feign!</code> method. Instead, they emulate the behavior of the real Verilog DUT using the new <a href="manual.html#usage.concurrency">concurrency model</a>.</li>
|
32
|
+
</ul>
|
33
|
+
|
34
|
+
|
35
|
+
<ul>
|
36
|
+
<li>All &#8220;initial&#8221; blocks in Verilog code are now evaluated <em>before</em> the specification begins executing. This allows you to set the initial value of registers in Verilog before the specification interacts with them.</li>
|
37
|
+
</ul>
|
38
|
+
|
39
|
+
|
40
|
+
<ul>
|
41
|
+
<li>The <code class="code"><span style="color:#036; font-weight:bold">Vpi</span></code> module has been renamed to <code class="code"><span style="color:#036; font-weight:bold">VPI</span></code> for consistency with the project name.</li>
|
42
|
+
</ul>
|
43
|
+
|
44
|
+
|
45
|
+
<ul>
|
46
|
+
<li>The <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::simulation_time</code> method has been renamed to <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::current_time</code>.</li>
|
47
|
+
</ul>
|
48
|
+
|
49
|
+
|
50
|
+
<ul>
|
51
|
+
<li>The <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.value_forced?</code> method has been renamed to <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.force?</code></li>
|
52
|
+
</ul>
|
53
|
+
|
54
|
+
|
55
|
+
<ul>
|
56
|
+
<li>The <tt>samp/</tt> directory has been renamed to <tt>examples/</tt>.</li>
|
57
|
+
</ul>
|
58
|
+
|
59
|
+
|
60
|
+
<ul>
|
61
|
+
<li>Code coverage analysis results are now produced only in plain-text format.</li>
|
62
|
+
</ul>
|
14
63
|
|
15
64
|
|
16
65
|
<h2>Repairs</h2>
|
17
66
|
|
18
67
|
|
19
68
|
<ul>
|
20
|
-
<li>
|
69
|
+
<li>You can now access VPI constants using their original uncapitalized names. For example, you can now write &#8220;vpiIntVal&#8221; instead of having to write &#8220;VpiIntVal&#8221;. However, note that the capitalized names are still supported, so you are not required to change your code.</li>
|
70
|
+
</ul>
|
71
|
+
|
72
|
+
|
73
|
+
<ul>
|
74
|
+
<li>Value change / edge detection for VPI handles was previously incorrect: if you called the <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span>.posedge?</code> function twice in the same time step, it would give you two different answers.</li>
|
75
|
+
</ul>
|
76
|
+
|
77
|
+
|
78
|
+
<ul>
|
79
|
+
<li>The problem of not being able to write values to nets in Cadence NC-Sim has been fixed.</li>
|
80
|
+
</ul>
|
81
|
+
|
82
|
+
|
83
|
+
<h2>Additions</h2>
|
84
|
+
|
85
|
+
|
86
|
+
<ul>
|
87
|
+
<li>Added support for <a href="manual.html#usage.concurrency">concurrent processes</a>, which make Ruby prototypes appear more like Verilog code and also give the ability to write parallel tests.</li>
|
88
|
+
</ul>
|
89
|
+
|
90
|
+
|
91
|
+
<ul>
|
92
|
+
<li>Added support for performance profiling using the <a href="http://ruby-prof.rubyforge.org">ruby-prof</a> project. The profiler can be enabled by setting the <code class="code"><span style="color:#036; font-weight:bold">PROFILER</span></code> environment variable to &#8220;1&#8221; before running a Ruby-VPI test.</li>
|
93
|
+
</ul>
|
94
|
+
|
95
|
+
|
96
|
+
<ul>
|
97
|
+
<li>Added new method aliases to <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span></code> for value detection. The complete list of aliases is now:
|
98
|
+
<ul>
|
99
|
+
<li>Tests if the logic value of this handle is unknown (x).
|
100
|
+
<ul>
|
101
|
+
<li>x?</li>
|
102
|
+
<li>unknown?</li>
|
103
|
+
<li>dont_care?</li>
|
104
|
+
</ul>
|
105
|
+
</li>
|
106
|
+
<li>Sets the logic value of this handle to unknown (x).
|
107
|
+
<ul>
|
108
|
+
<li>x!</li>
|
109
|
+
<li>unknown!</li>
|
110
|
+
<li>dont_care!</li>
|
111
|
+
</ul>
|
112
|
+
</li>
|
113
|
+
<li>Tests if the logic value of this handle is high impedance (z).
|
114
|
+
<ul>
|
115
|
+
<li>z?</li>
|
116
|
+
<li>hi_z?</li>
|
117
|
+
<li>high_z?</li>
|
118
|
+
<li>high_impedance?</li>
|
119
|
+
<li>tri_state?</li>
|
120
|
+
<li>floating?</li>
|
121
|
+
</ul>
|
122
|
+
</li>
|
123
|
+
<li>Sets the logic value of this handle to high impedance (z).
|
124
|
+
<ul>
|
125
|
+
<li>z!</li>
|
126
|
+
<li>hi_z!</li>
|
127
|
+
<li>high_z!</li>
|
128
|
+
<li>high_impedance!</li>
|
129
|
+
<li>tri_state!</li>
|
130
|
+
<li>floating!</li>
|
131
|
+
</ul>
|
132
|
+
</li>
|
133
|
+
<li>Tests if the logic value of this handle is at &#8220;logic high&#8221; level.
|
134
|
+
<ul>
|
135
|
+
<li>high?</li>
|
136
|
+
<li>one?</li>
|
137
|
+
</ul>
|
138
|
+
</li>
|
139
|
+
<li>Sets the logic value of this handle to &#8220;logic high&#8221; level.
|
140
|
+
<ul>
|
141
|
+
<li>high!</li>
|
142
|
+
<li>one!</li>
|
143
|
+
</ul>
|
144
|
+
</li>
|
145
|
+
<li>Tests if the logic value of this handle is at &#8220;logic low&#8221; level.
|
146
|
+
<ul>
|
147
|
+
<li>low?</li>
|
148
|
+
<li>zero?</li>
|
149
|
+
</ul>
|
150
|
+
</li>
|
151
|
+
<li>Sets the logic value of this handle to &#8220;logic low&#8221; level.
|
152
|
+
<ul>
|
153
|
+
<li>low!</li>
|
154
|
+
<li>zero!</li>
|
155
|
+
</ul></li>
|
156
|
+
</ul></li>
|
157
|
+
</ul>
|
158
|
+
|
159
|
+
|
160
|
+
<ul>
|
161
|
+
<li>Added new methods to <code class="code"><span style="color:#036; font-weight:bold">VPI</span>::<span style="color:#036; font-weight:bold">Handle</span></code> for value change / edge detection:
|
162
|
+
<ul>
|
163
|
+
<li>edge? &#8211; detects positive and negative edges</li>
|
164
|
+
<li>change? &#8211; detects any kind of value change</li>
|
165
|
+
<li>change_00? &#8211; detects a value change from 0 to 0</li>
|
166
|
+
<li>change_01? &#8211; detects a value change from 0 to 1</li>
|
167
|
+
<li>change_0x? &#8211; detects a value change from 0 to unknown</li>
|
168
|
+
<li>change_0z? &#8211; detects a value change from 0 to high-Z</li>
|
169
|
+
<li>change_10? &#8211; detects a value change from 1 to 0</li>
|
170
|
+
<li>change_11? &#8211; detects a value change from 1 to 1</li>
|
171
|
+
<li>change_1x? &#8211; detects a value change from 1 to unknown</li>
|
172
|
+
<li>change_1z? &#8211; detects a value change from 1 to high-Z</li>
|
173
|
+
<li>change_x0? &#8211; detects a value change from unknown to 0</li>
|
174
|
+
<li>change_x1? &#8211; detects a value change from unknown to 1</li>
|
175
|
+
<li>change_xx? &#8211; detects a value change from unknown to unknown</li>
|
176
|
+
<li>change_xz? &#8211; detects a value change from unknown to high-Z</li>
|
177
|
+
<li>change_z0? &#8211; detects a value change from high-Z to 0</li>
|
178
|
+
<li>change_z1? &#8211; detects a value change from high-Z to 1</li>
|
179
|
+
<li>change_zx? &#8211; detects a value change from high-Z to unknown</li>
|
180
|
+
<li>change_zz? &#8211; detects a value change from high-Z to high-Z</li>
|
181
|
+
</ul></li>
|
21
182
|
</ul></description>
|
22
|
-
<pubDate>
|
183
|
+
<pubDate>Mon, 27 Aug 2007 00:00:00 PDT</pubDate>
|
23
184
|
</item>
|
24
185
|
</channel>
|
25
186
|
</rss>
|
data/doc/screen.css
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
@import 'common.css';
|
2
|
+
|
3
|
+
body {
|
4
|
+
margin: 0;
|
5
|
+
background-color: snow;
|
6
|
+
}
|
7
|
+
|
8
|
+
#body {
|
9
|
+
max-width: 37em;
|
10
|
+
width: expression("37em"); /* for IE */
|
11
|
+
|
12
|
+
background-color: white;
|
13
|
+
border-right: thick solid salmon;
|
14
|
+
padding: 1em;
|
15
|
+
}
|
16
|
+
|
17
|
+
|
18
|
+
/* headings */
|
19
|
+
|
20
|
+
h1, h2, h3, h4, h5, h6, th, .title {
|
21
|
+
font-family: serif;
|
22
|
+
}
|
23
|
+
|
24
|
+
h1, h2, h3, h4, h5, h6 {
|
25
|
+
font-weight: lighter;
|
26
|
+
padding-bottom: 2px;
|
27
|
+
border-bottom: 3px solid cornflowerblue;
|
28
|
+
}
|
29
|
+
|
30
|
+
h1 a,
|
31
|
+
h2 a,
|
32
|
+
h3 a,
|
33
|
+
h4 a,
|
34
|
+
h5 a,
|
35
|
+
h6 a {
|
36
|
+
text-decoration: none;
|
37
|
+
}
|
38
|
+
|
39
|
+
|
40
|
+
/* table of contents */
|
41
|
+
|
42
|
+
#menu {
|
43
|
+
top: 1em;
|
44
|
+
left: 41em;
|
45
|
+
position: absolute;
|
46
|
+
|
47
|
+
position: expression("static"); /* for IE */
|
48
|
+
float: expression("right"); /* for IE */
|
49
|
+
}
|
50
|
+
|
51
|
+
#menu h1 {
|
52
|
+
padding-top: 0;
|
53
|
+
}
|
54
|
+
|
55
|
+
#menu ul,
|
56
|
+
#menu ol {
|
57
|
+
padding-bottom: 1em;
|
58
|
+
}
|
59
|
+
|
60
|
+
#menu li {
|
61
|
+
margin-left: -1em;
|
62
|
+
}
|
63
|
+
|
64
|
+
#toc-contents {
|
65
|
+
padding-top: 1em;
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
/* latex */
|
70
|
+
|
71
|
+
.front_cover h1,
|
72
|
+
.front_cover h2,
|
73
|
+
.front_cover h3,
|
74
|
+
.front_cover h4,
|
75
|
+
.front_cover h5,
|
76
|
+
.front_cover h6 {
|
77
|
+
border: none;
|
78
|
+
text-align: center;
|
79
|
+
}
|
80
|
+
|
81
|
+
.part > .title,
|
82
|
+
.chapter > .title {
|
83
|
+
border: none;
|
84
|
+
}
|
85
|
+
|
86
|
+
.part > .title {
|
87
|
+
border-bottom: thick solid salmon;
|
88
|
+
}
|
89
|
+
|
90
|
+
.paragraph > .title,
|
91
|
+
.admonition .title {
|
92
|
+
font-family: serif;
|
93
|
+
font-size: larger;
|
94
|
+
}
|
95
|
+
|
96
|
+
|
97
|
+
/* admonitions */
|
98
|
+
|
99
|
+
.admonition {
|
100
|
+
border: thin solid seagreen;
|
101
|
+
background-color: honeydew;
|
102
|
+
}
|
103
|
+
|
104
|
+
|
105
|
+
/* source code */
|
106
|
+
|
107
|
+
pre {
|
108
|
+
overflow: auto;
|
109
|
+
}
|
110
|
+
|
111
|
+
code {
|
112
|
+
padding: 0.125em;
|
113
|
+
padding-left: 0.25em;
|
114
|
+
padding-right: 0.25em;
|
115
|
+
}
|
116
|
+
|
117
|
+
|
118
|
+
/* emphasis */
|
119
|
+
|
120
|
+
body {
|
121
|
+
font-family: sans-serif;
|
122
|
+
}
|
123
|
+
|
124
|
+
em, blockquote {
|
125
|
+
font-family: serif;
|
126
|
+
}
|
127
|
+
|
128
|
+
blockquote {
|
129
|
+
border: thin solid salmon;
|
130
|
+
border-left-width: thick;
|
131
|
+
padding-left: 1em;
|
132
|
+
background: snow;
|
133
|
+
}
|
134
|
+
|
135
|
+
hr {
|
136
|
+
background-color: red;
|
137
|
+
border: none;
|
138
|
+
}
|
139
|
+
|
140
|
+
big {
|
141
|
+
font-size: larger;
|
142
|
+
}
|
143
|
+
|
144
|
+
a:hover {
|
145
|
+
color: red;
|
146
|
+
}
|
data/doc/spacing.css
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
h1, h2, h3, h4, h5, h6 {
|
2
|
+
padding-top: 2em;
|
3
|
+
}
|
4
|
+
|
5
|
+
|
6
|
+
/* latex */
|
7
|
+
|
8
|
+
.front_cover > .title {
|
9
|
+
padding-top: 0;
|
10
|
+
}
|
11
|
+
|
12
|
+
.front_cover > .author {
|
13
|
+
padding-top: 2em;
|
14
|
+
}
|
15
|
+
|
16
|
+
.front_cover > .date {
|
17
|
+
padding-top: 1em;
|
18
|
+
}
|
19
|
+
|
20
|
+
.part,
|
21
|
+
.chapter {
|
22
|
+
padding-top: 3em;
|
23
|
+
}
|
24
|
+
|
25
|
+
.part > .title,
|
26
|
+
.chapter > .title {
|
27
|
+
padding-bottom: 1em;
|
28
|
+
}
|
29
|
+
|
30
|
+
.paragraph > .title {
|
31
|
+
padding-top: 1em;
|
32
|
+
}
|
33
|
+
|
34
|
+
|
35
|
+
/* admonitions */
|
36
|
+
|
37
|
+
.admonition {
|
38
|
+
padding: 1em;
|
39
|
+
margin-top: 1em;
|
40
|
+
margin-bottom: 1em;
|
41
|
+
min-height: 150px;
|
42
|
+
}
|
43
|
+
|
44
|
+
|
45
|
+
/* source code */
|
46
|
+
|
47
|
+
pre {
|
48
|
+
padding: 1em;
|
49
|
+
}
|
50
|
+
|
51
|
+
|
52
|
+
/* formal blocks */
|
53
|
+
|
54
|
+
.formal {
|
55
|
+
padding-top: 1em;
|
56
|
+
padding-bottom: 1em;
|
57
|
+
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
always do
|
2
|
+
wait until rdReg.change? or wtReg.change? or rw.change? or enable.change?
|
3
|
+
|
4
|
+
if rw.low?
|
5
|
+
targetReg = register.memoryWord_a[rdReg.intVal]
|
6
|
+
outBus.intVal = targetReg.intVal
|
7
|
+
elsif enable.high?
|
8
|
+
targetReg = register.memoryWord_a[wtReg.intVal]
|
9
|
+
targetReg.intVal = inBus.intVal
|
10
|
+
end
|
11
|
+
end
|
File without changes
|
File without changes
|
data/ext/main.c
CHANGED
@@ -19,14 +19,14 @@ void main_init() {
|
|
19
19
|
ruby_init_loadpath();
|
20
20
|
|
21
21
|
// load the VPI interface for Ruby
|
22
|
-
|
23
|
-
rb_define_module_function(
|
24
|
-
rb_define_module_function(
|
22
|
+
Init_VPI();
|
23
|
+
rb_define_module_function(mVPI, "__extension__relay_verilog", main_relay_verilog, 0);
|
24
|
+
rb_define_module_function(mVPI, "__extension__relay_ruby_reason", main_relay_ruby_reason, 0);
|
25
25
|
|
26
26
|
// some compilers have trouble with pointers to the va_list
|
27
27
|
// type. See ext/Rakefile and the user manual for details
|
28
|
-
rb_define_alias(
|
29
|
-
rb_define_alias(
|
28
|
+
rb_define_alias(mVPI, "vpi_vprintf", "vpi_printf");
|
29
|
+
rb_define_alias(mVPI, "vpi_mcd_vprintf", "vpi_mcd_printf");
|
30
30
|
|
31
31
|
|
32
32
|
char* bootLoader = getenv("RUBYVPI_BOOT_LOADER");
|
data/ext/swig_vpi.i
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
%module
|
1
|
+
%module VPI
|
2
2
|
|
3
3
|
/* Parse the header file to generate wrappers */
|
4
4
|
%{
|
@@ -6,7 +6,11 @@
|
|
6
6
|
%}
|
7
7
|
%include "swig_vpi.h"
|
8
8
|
|
9
|
-
/*
|
9
|
+
/* Allows us set the VPI callback handler in Ruby:
|
10
|
+
|
11
|
+
data = S_cb_data.new
|
12
|
+
data.cb_rtn = VPI::Vlog_relay_ruby
|
13
|
+
*/
|
10
14
|
%{
|
11
15
|
#include "vlog.h"
|
12
16
|
%}
|