ruby-vpi 11.1.1 → 12.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/generate_test.rb +12 -11
- data/bin/generate_test_tpl/bench.rb +0 -4
- data/bin/generate_test_tpl/bench.v +3 -6
- data/bin/generate_test_tpl/runner.rake +20 -4
- data/bin/generate_test_tpl/spec.rb +5 -7
- data/doc/common.css +110 -95
- data/doc/common.tpl +16 -17
- data/doc/history.html +350 -330
- data/doc/history.yml +49 -0
- data/doc/intro.inc +18 -4
- data/doc/lib/doc_proxy.rb +22 -32
- data/doc/manual.erb +90 -83
- data/doc/manual.html +298 -266
- data/doc/memo.html +31 -10
- data/doc/readme.html +26 -6
- data/ext/relay.c +24 -28
- data/ext/vlog.c +4 -15
- data/lib/ruby-vpi/rspec.rb +1 -1
- data/lib/ruby-vpi/runner.rb +12 -10
- data/lib/ruby-vpi/runner_proxy.rb +17 -6
- data/lib/ruby-vpi/verilog_parser.rb +11 -7
- data/lib/ruby-vpi/vpi.rb +11 -1
- data/lib/ruby-vpi.rb +4 -0
- data/ref/c/annotated.html +2 -2
- 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_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 +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/relay_8c.html +2 -1
- data/ref/c/relay_8h.html +1 -1
- data/ref/c/structrelay____RubyOptions____def.html +8 -2
- 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/swig_8c.html +1 -1
- data/ref/c/swig_8h.html +1 -1
- data/ref/c/verilog_8h.html +1 -1
- data/ref/c/vlog_8c.html +15 -15
- data/ref/c/vlog_8h.html +1 -1
- data/ref/c/vpi__user_8h.html +1 -1
- data/ref/ruby/classes/OutputInfo.html +1 -1
- data/ref/ruby/classes/OutputInfo.src/M000030.html +30 -30
- data/ref/ruby/classes/RDoc.html +5 -5
- data/ref/ruby/classes/RDoc.src/{M000097.html → M000099.html} +0 -0
- data/ref/ruby/classes/RubyVpi.src/M000085.html +43 -39
- data/ref/ruby/classes/String.src/M000033.html +26 -26
- data/ref/ruby/classes/String.src/M000034.html +4 -4
- data/ref/ruby/classes/Template.src/M000032.html +4 -4
- data/ref/ruby/classes/VerilogParser/Module/Parameter.src/M000011.html +5 -5
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000007.html +7 -7
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000008.html +4 -4
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000009.html +4 -4
- data/ref/ruby/classes/VerilogParser/Module/Port.src/M000010.html +4 -4
- data/ref/ruby/classes/VerilogParser/Module.src/M000006.html +15 -11
- data/ref/ruby/classes/Vpi/Handle/Property.html +5 -5
- data/ref/ruby/classes/Vpi/Handle/Property.src/{M000096.html → M000098.html} +61 -61
- data/ref/ruby/classes/Vpi/Handle.html +78 -43
- data/ref/ruby/classes/Vpi/Handle.src/M000088.html +3 -3
- data/ref/ruby/classes/Vpi/Handle.src/M000089.html +4 -8
- data/ref/ruby/classes/Vpi/Handle.src/M000090.html +5 -31
- data/ref/ruby/classes/Vpi/Handle.src/M000091.html +9 -74
- data/ref/ruby/classes/Vpi/Handle.src/M000092.html +31 -17
- data/ref/ruby/classes/Vpi/Handle.src/M000093.html +74 -11
- data/ref/ruby/classes/Vpi/Handle.src/M000094.html +30 -0
- data/ref/ruby/classes/Vpi/Handle.src/M000095.html +11 -55
- data/ref/ruby/classes/Vpi/Handle.src/M000097.html +68 -0
- data/ref/ruby/created.rid +1 -1
- data/ref/ruby/files/bin/generate_test_rb.html +8 -11
- data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +4 -4
- data/ref/ruby/files/bin/generate_test_rb.src/M000002.html +22 -24
- data/ref/ruby/files/bin/header_to_ruby_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +2 -2
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000003.html +10 -10
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.src/M000004.html +12 -12
- data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +1 -1
- data/ref/ruby/files/lib/ruby-vpi_rb.html +2 -1
- data/ref/ruby/fr_method_index.html +20 -18
- data/samp/counter/counter_rspec_bench.v +3 -6
- data/samp/counter/counter_rspec_design.rb +2 -1
- data/samp/counter/counter_rspec_runner.rake +20 -4
- data/samp/counter/counter_rspec_spec.rb +4 -4
- data/samp/counter/counter_xunit_bench.v +3 -6
- data/samp/counter/counter_xunit_design.rb +2 -1
- data/samp/counter/counter_xunit_runner.rake +20 -4
- data/samp/pipelined_alu/hw5_unit_test_bench.v +3 -6
- data/samp/pipelined_alu/hw5_unit_test_runner.rake +20 -4
- metadata +21 -20
- data/doc/manual.rb +0 -5
data/doc/memo.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<title>Pending tasks</title>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
<div id="navigation">
|
|
12
12
|
<p><a href="readme.html"><img src="images/home.png" title="project home" alt="project home" /></a></p>
|
|
13
13
|
|
|
@@ -19,16 +19,37 @@
|
|
|
19
19
|
<li><a href="#anchor3">Notes</a></li>
|
|
20
20
|
</ul>
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
|
|
23
|
+
<h1>Admonitions</h1>
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
<h1>Formals</h1>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
30
51
|
</div>
|
|
31
|
-
|
|
52
|
+
|
|
32
53
|
<h1 id="anchor0">Pending tasks</h1>
|
|
33
54
|
|
|
34
55
|
|
data/doc/readme.html
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<title>Welcome to Ruby-VPI</title>
|
|
8
8
|
</head>
|
|
9
9
|
<body>
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
<div id="navigation">
|
|
12
12
|
|
|
13
13
|
<ul>
|
|
@@ -83,12 +83,15 @@
|
|
|
83
83
|
|
|
84
84
|
|
|
85
85
|
<ul>
|
|
86
|
-
<li>Works with all <a href="manual.html#setup.reqs">major Verilog simulators</a> available today
|
|
86
|
+
<li>Works with all <a href="manual.html#setup.reqs">major Verilog simulators</a> available today.
|
|
87
|
+
<ul>
|
|
88
|
+
<li>Compile <em>once</em> (during <a href="manual.html#setup.installation">installation</a>) and use forever!</li>
|
|
89
|
+
</ul></li>
|
|
87
90
|
</ul>
|
|
88
91
|
|
|
89
92
|
|
|
90
93
|
<ul>
|
|
91
|
-
<li>Enables <a href="http://
|
|
94
|
+
<li>Enables <a href="http://agilemanifesto.org/">agile practices</a> such as
|
|
92
95
|
<ul>
|
|
93
96
|
<li><a href="http://www.testdriven.com">test-driven</a> development</li>
|
|
94
97
|
<li><a href="http://behaviour-driven.org">behavior-driven</a> development</li>
|
|
@@ -113,7 +116,7 @@
|
|
|
113
116
|
<li>Regular expressions</li>
|
|
114
117
|
<li>Multi-threading</li>
|
|
115
118
|
<li>System calls and I/O</li>
|
|
116
|
-
<li><a href="http://rubyforge.org"><em>ad
|
|
119
|
+
<li><a href="http://rubyforge.org"><em>ad infinitum</em></a></li>
|
|
117
120
|
</ul></li>
|
|
118
121
|
</ul>
|
|
119
122
|
|
|
@@ -123,10 +126,27 @@
|
|
|
123
126
|
</ul>
|
|
124
127
|
|
|
125
128
|
|
|
126
|
-
<
|
|
129
|
+
<h3 id="intro.applications">Applications</h3>
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
<p>Here is a modest sampling of tasks, paraphrased from <a href="http://embedded.eecs.berkeley.edu/Alumni/pinhong/scriptEDA/">Pin Hong</a>, that Ruby-VPI can be used to perform.</p>
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
<ul>
|
|
136
|
+
<li>Writing hardware models in Ruby</li>
|
|
137
|
+
<li>Dumping/processing netlist data from Verilog database</li>
|
|
138
|
+
<li>Dumping/processing simulation data</li>
|
|
139
|
+
<li>Feeding dynamic simulation stimuli</li>
|
|
140
|
+
<li>Back-annotating delay information</li>
|
|
141
|
+
<li>Interactive logic simulation</li>
|
|
142
|
+
<li>Building a distributed simulation</li>
|
|
143
|
+
</ul>
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
<h3 id="intro.appetizers">Appetizers</h3>
|
|
127
147
|
|
|
128
148
|
|
|
129
|
-
<p>Here is a modest sampling to whet your appetite.</p>
|
|
149
|
+
<p>Here is a modest sampling of code to whet your appetite.</p>
|
|
130
150
|
|
|
131
151
|
|
|
132
152
|
<ul>
|
data/ext/relay.c
CHANGED
|
@@ -49,6 +49,9 @@ void relay_verilog() {
|
|
|
49
49
|
pthread_mutex_lock(&relay__rubyLock);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
Stores command-line options for the Ruby interpreter.
|
|
54
|
+
*/
|
|
52
55
|
typedef struct {
|
|
53
56
|
PLI_BYTE8** mArgs; /// Array of command-line arguments.
|
|
54
57
|
unsigned int mCount; /// Number of command-line arguments.
|
|
@@ -59,13 +62,12 @@ typedef struct {
|
|
|
59
62
|
@note The structure will be freed *deeply* after use.
|
|
60
63
|
*/
|
|
61
64
|
void* ruby_run_handshake(void* apRubyOptions) {
|
|
62
|
-
// initialize Ruby interpreter
|
|
63
65
|
ruby_init();
|
|
64
66
|
ruby_init_loadpath();
|
|
65
67
|
|
|
66
68
|
swig_init();
|
|
67
69
|
|
|
68
|
-
|
|
70
|
+
// pass command-line arguments to the interpreter
|
|
69
71
|
relay__RubyOptions__def* pRubyOptions = (relay__RubyOptions__def*) apRubyOptions;
|
|
70
72
|
|
|
71
73
|
PLI_BYTE8** argv = pRubyOptions->mArgs;
|
|
@@ -73,7 +75,7 @@ void* ruby_run_handshake(void* apRubyOptions) {
|
|
|
73
75
|
|
|
74
76
|
ruby_options(argc, argv);
|
|
75
77
|
|
|
76
|
-
|
|
78
|
+
// free the memory used by command-line options
|
|
77
79
|
unsigned int i;
|
|
78
80
|
for (i = 0; i < argc; i++) {
|
|
79
81
|
free(argv[i]);
|
|
@@ -82,13 +84,9 @@ void* ruby_run_handshake(void* apRubyOptions) {
|
|
|
82
84
|
free(argv);
|
|
83
85
|
free(pRubyOptions);
|
|
84
86
|
|
|
85
|
-
|
|
86
|
-
// start Ruby interpreter
|
|
87
87
|
ruby_run();
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
// Ruby interpreter is now finished, so clean it up before terminating this thread
|
|
91
88
|
ruby_finalize();
|
|
89
|
+
|
|
92
90
|
return NULL;
|
|
93
91
|
}
|
|
94
92
|
|
|
@@ -100,34 +98,32 @@ void relay_ruby_run() {
|
|
|
100
98
|
pRubyOptions->mCount = 0;
|
|
101
99
|
|
|
102
100
|
// transform the arguments passed to this function by Verilog into command-line arguments for Ruby interpeter
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if (vCall) {
|
|
106
|
-
vpiHandle vCallArgs = vpi_iterate(vpiArgument, vCall);
|
|
107
|
-
|
|
108
|
-
if (vCallArgs) {
|
|
109
|
-
vpiHandle vArg;
|
|
110
|
-
s_vpi_value argVal;
|
|
111
|
-
argVal.format = vpiStringVal;
|
|
101
|
+
vpiHandle vCall = vpi_handle(vpiSysTfCall, NULL);
|
|
112
102
|
|
|
113
|
-
|
|
114
|
-
|
|
103
|
+
if (vCall) {
|
|
104
|
+
vpiHandle vCallArgs = vpi_iterate(vpiArgument, vCall);
|
|
115
105
|
|
|
116
|
-
|
|
106
|
+
if (vCallArgs) {
|
|
107
|
+
vpiHandle vArg;
|
|
108
|
+
s_vpi_value argVal;
|
|
109
|
+
argVal.format = vpiStringVal;
|
|
117
110
|
|
|
111
|
+
while (vArg = vpi_scan(vCallArgs)) {
|
|
112
|
+
pRubyOptions->mCount++;
|
|
118
113
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
114
|
+
// grow the options struct to hold more options
|
|
115
|
+
if (pRubyOptions->mArgs == NULL)
|
|
116
|
+
pRubyOptions->mArgs = malloc(sizeof(PLI_BYTE8*) * pRubyOptions->mCount);
|
|
117
|
+
else
|
|
118
|
+
pRubyOptions->mArgs = realloc(pRubyOptions->mArgs, sizeof(PLI_BYTE8*) * pRubyOptions->mCount);
|
|
123
119
|
|
|
124
|
-
|
|
120
|
+
assert(pRubyOptions->mArgs != NULL);
|
|
125
121
|
|
|
126
|
-
|
|
127
|
-
|
|
122
|
+
vpi_get_value(vArg, &argVal);
|
|
123
|
+
pRubyOptions->mArgs[pRubyOptions->mCount - 1] = strdup(argVal.value.str);
|
|
124
|
+
}
|
|
128
125
|
}
|
|
129
126
|
}
|
|
130
|
-
}
|
|
131
127
|
|
|
132
128
|
pthread_create(&relay__rubyThread, 0, ruby_run_handshake, pRubyOptions);
|
|
133
129
|
return;
|
data/ext/vlog.c
CHANGED
|
@@ -25,25 +25,14 @@
|
|
|
25
25
|
#include <stdlib.h>
|
|
26
26
|
|
|
27
27
|
|
|
28
|
-
verilog_tf_funcSig(vlog_ruby_relay) {
|
|
29
|
-
// transfer control to ruby
|
|
30
|
-
relay_ruby();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// transfer control to verilog
|
|
34
|
-
verilog_tf_funcReturn(0);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
28
|
verilog_tf_funcSig(vlog_ruby_init) {
|
|
38
|
-
// setup control transfer mechanism
|
|
39
29
|
relay_init();
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// start ruby interpreter and transfer control to it
|
|
43
30
|
relay_ruby_run();
|
|
31
|
+
verilog_tf_funcReturn(0);
|
|
32
|
+
}
|
|
44
33
|
|
|
45
|
-
|
|
46
|
-
|
|
34
|
+
verilog_tf_funcSig(vlog_ruby_relay) {
|
|
35
|
+
relay_ruby();
|
|
47
36
|
verilog_tf_funcReturn(0);
|
|
48
37
|
}
|
|
49
38
|
|
data/lib/ruby-vpi/rspec.rb
CHANGED
data/lib/ruby-vpi/runner.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# = Required variables
|
|
4
4
|
# SIMULATOR_SOURCES:: Array of paths to source files needed by the simulator.
|
|
5
5
|
# SIMULATOR_TARGET:: Name of the Verilog module to be simulated.
|
|
6
|
-
#
|
|
6
|
+
# SIMULATOR_ARGUMENTS:: A hash containing keys for each simulator task (same as Rakefile task names) and values containing command-line arguments for each simulator.
|
|
7
7
|
|
|
8
8
|
=begin
|
|
9
9
|
Copyright 2006 Suraj N. Kurapati
|
|
@@ -29,10 +29,12 @@
|
|
|
29
29
|
raise ArgumentError, "All required variables must be defined." unless
|
|
30
30
|
defined?(SIMULATOR_SOURCES) &&
|
|
31
31
|
defined?(SIMULATOR_TARGET) &&
|
|
32
|
-
defined?(
|
|
32
|
+
defined?(SIMULATOR_ARGUMENTS)
|
|
33
33
|
|
|
34
34
|
SIMULATOR_INCLUDES = [] unless defined? SIMULATOR_INCLUDES
|
|
35
35
|
|
|
36
|
+
task :setup
|
|
37
|
+
|
|
36
38
|
# resolve paths to sources by searching include directories
|
|
37
39
|
SIMULATOR_SOURCES.map! do |src|
|
|
38
40
|
unless File.exist? src
|
|
@@ -93,17 +95,17 @@ end
|
|
|
93
95
|
|
|
94
96
|
|
|
95
97
|
desc "Simulate with GPL Cver."
|
|
96
|
-
task :cver do
|
|
97
|
-
sh 'cver',
|
|
98
|
+
task :cver => :setup do
|
|
99
|
+
sh 'cver', SIMULATOR_ARGUMENTS[:cver], "+loadvpi=#{object_file_path(:cver)}:#{BOOTSTAP_FUNC}", expand_include_dir_options(:cver), SIMULATOR_SOURCES
|
|
98
100
|
end
|
|
99
101
|
|
|
100
102
|
CLOBBER.include 'verilog.log'
|
|
101
103
|
|
|
102
104
|
|
|
103
105
|
desc "Simulate with Icarus Verilog."
|
|
104
|
-
task :ivl do
|
|
106
|
+
task :ivl => :setup do
|
|
105
107
|
cp object_file_path(:ivl), 'ruby-vpi.vpi'
|
|
106
|
-
sh 'iverilog',
|
|
108
|
+
sh 'iverilog', SIMULATOR_ARGUMENTS[:ivl], '-mruby-vpi', expand_include_dir_options(:ivl), SIMULATOR_SOURCES
|
|
107
109
|
sh 'vvp -M. a.out'
|
|
108
110
|
end
|
|
109
111
|
|
|
@@ -111,18 +113,18 @@ CLEAN.include 'ruby-vpi.vpi', 'a.out'
|
|
|
111
113
|
|
|
112
114
|
|
|
113
115
|
desc "Simulate with Synopsys VCS."
|
|
114
|
-
task :vcs do
|
|
115
|
-
sh %w(vcs -R +v2k +vpi),
|
|
116
|
+
task :vcs => :setup do
|
|
117
|
+
sh %w(vcs -R +v2k +vpi), SIMULATOR_ARGUMENTS[:vcs], '-load', "#{object_file_path(:vcs)}:#{BOOTSTAP_FUNC}", expand_include_dir_options(:vcs), SIMULATOR_SOURCES
|
|
116
118
|
end
|
|
117
119
|
|
|
118
120
|
CLEAN.include 'csrc', 'simv*'
|
|
119
121
|
|
|
120
122
|
|
|
121
123
|
desc "Simulate with Mentor Modelsim."
|
|
122
|
-
task :vsim do
|
|
124
|
+
task :vsim => :setup do
|
|
123
125
|
sh 'vlib work'
|
|
124
126
|
sh 'vlog', expand_include_dir_options(:vsim), SIMULATOR_SOURCES
|
|
125
|
-
sh 'vsim',
|
|
127
|
+
sh 'vsim', SIMULATOR_ARGUMENTS[:vsim], '-c', SIMULATOR_TARGET, '-pli', object_file_path(:vsim), '-do', 'run -all'
|
|
126
128
|
end
|
|
127
129
|
|
|
128
130
|
CLEAN.include 'work'
|
|
@@ -20,11 +20,22 @@
|
|
|
20
20
|
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
21
21
|
=end
|
|
22
22
|
|
|
23
|
-
#
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
# supress errors about nonexistent tasks
|
|
24
|
+
task :default
|
|
25
|
+
|
|
26
|
+
ARGV.each do |t|
|
|
27
|
+
task t
|
|
26
28
|
end
|
|
27
29
|
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
# invoke each test runner with the command-line args
|
|
31
|
+
at_exit do
|
|
32
|
+
unless ARGV.empty?
|
|
33
|
+
FileList['**/*.rake'].each do |path|
|
|
34
|
+
parent, runner = File.dirname(path), File.basename(path)
|
|
35
|
+
|
|
36
|
+
cd parent do
|
|
37
|
+
sh 'rake', '-f', runner, *ARGV
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -52,13 +52,17 @@ class VerilogParser
|
|
|
52
52
|
def initialize aDecl
|
|
53
53
|
@decl = aDecl.strip
|
|
54
54
|
|
|
55
|
-
@decl =~ %r{module\s+(\w+)\s*(
|
|
56
|
-
@name, paramDecls, portDecls = $1, $
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
@decl =~ %r{module\s+(\w+)\s*(?:\#\((.*?)\))?\s*\((.*?)\)\s*;}m
|
|
56
|
+
@name, paramDecls, portDecls = $1, $2, $3
|
|
57
|
+
|
|
58
|
+
@parameters =
|
|
59
|
+
if paramDecls =~ %r{\bparameter\b(.*)$}
|
|
60
|
+
$1.split(',').map! do |decl|
|
|
61
|
+
Parameter.new decl
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
[]
|
|
65
|
+
end
|
|
62
66
|
|
|
63
67
|
@ports = portDecls.split(',').map! do |decl|
|
|
64
68
|
Port.new decl
|
data/lib/ruby-vpi/vpi.rb
CHANGED
|
@@ -49,16 +49,26 @@ module Vpi
|
|
|
49
49
|
}
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
# Tests if the logic value of this handle is
|
|
52
|
+
# Tests if the logic value of this handle is unknown (x).
|
|
53
53
|
def x?
|
|
54
54
|
self.hexStrVal =~ /x/i
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
+
# Sets the logic value of this handle to unknown (x).
|
|
58
|
+
def x!
|
|
59
|
+
self.hexStrVal = 'x'
|
|
60
|
+
end
|
|
61
|
+
|
|
57
62
|
# Tests if the logic value of this handle is high impedance (z).
|
|
58
63
|
def z?
|
|
59
64
|
self.hexStrVal =~ /z/i
|
|
60
65
|
end
|
|
61
66
|
|
|
67
|
+
# Sets the logic value of this handle to high impedance (z).
|
|
68
|
+
def z!
|
|
69
|
+
self.hexStrVal = 'z'
|
|
70
|
+
end
|
|
71
|
+
|
|
62
72
|
# Reads the value using the given format (integer constant) and returns a +S_vpi_value+ object.
|
|
63
73
|
def get_value_wrapper aFormat
|
|
64
74
|
val = S_vpi_value.new
|
data/lib/ruby-vpi.rb
CHANGED
data/ref/c/annotated.html
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<li><a href="functions.html"><span>Data Fields</span></a></li>
|
|
18
18
|
</ul></div>
|
|
19
19
|
<h1>Ruby-VPI Data Structures</h1>Here are the data structures with brief descriptions:<table>
|
|
20
|
-
<tr><td class="indexkey"><a class="el" href="structrelay____RubyOptions____def.html">relay__RubyOptions__def</a></td><td class="indexvalue"
|
|
20
|
+
<tr><td class="indexkey"><a class="el" href="structrelay____RubyOptions____def.html">relay__RubyOptions__def</a></td><td class="indexvalue">Stores command-line options for the Ruby interpreter </td></tr>
|
|
21
21
|
<tr><td class="indexkey"><a class="el" href="structt__cb__data.html">t_cb_data</a></td><td class="indexvalue"></td></tr>
|
|
22
22
|
<tr><td class="indexkey"><a class="el" href="structt__vpi__delay.html">t_vpi_delay</a></td><td class="indexvalue"></td></tr>
|
|
23
23
|
<tr><td class="indexkey"><a class="el" href="structt__vpi__error__info.html">t_vpi_error_info</a></td><td class="indexvalue"></td></tr>
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
<tr><td class="indexkey"><a class="el" href="structt__vpi__vecval.html">t_vpi_vecval</a></td><td class="indexvalue"></td></tr>
|
|
29
29
|
<tr><td class="indexkey"><a class="el" href="structt__vpi__vlog__info.html">t_vpi_vlog_info</a></td><td class="indexvalue"></td></tr>
|
|
30
30
|
</table>
|
|
31
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
31
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
32
32
|
<a href="http://www.doxygen.org/index.html">
|
|
33
33
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
34
34
|
</body>
|
data/ref/c/common_8h.html
CHANGED
|
@@ -139,7 +139,7 @@ Pass aroung this value instead of zero and non-zero integers. <dl compact><dt><b
|
|
|
139
139
|
|
|
140
140
|
</div>
|
|
141
141
|
</div><p>
|
|
142
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
142
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:44 2006 for Ruby-VPI by
|
|
143
143
|
<a href="http://www.doxygen.org/index.html">
|
|
144
144
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
145
145
|
</body>
|
data/ref/c/files.html
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<tr><td class="indexkey"><a class="el" href="vlog_8h.html">vlog.h</a></td><td class="indexvalue">Interface between C and Verilog code </td></tr>
|
|
28
28
|
<tr><td class="indexkey"><a class="el" href="vpi__user_8h.html">vpi_user.h</a></td><td class="indexvalue"></td></tr>
|
|
29
29
|
</table>
|
|
30
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
30
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
31
31
|
<a href="http://www.doxygen.org/index.html">
|
|
32
32
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
33
33
|
</body>
|
data/ref/c/functions.html
CHANGED
|
@@ -127,7 +127,7 @@ Here is a list of all struct and union fields with links to the structures/union
|
|
|
127
127
|
: <a class="el" href="structt__cb__data.html#5039bb34ac75410ff93cbe44515b3543">t_cb_data</a>, <a class="el" href="structt__vpi__value.html#73c4197b95dc5a8f4e8f0754e776d796">t_vpi_value</a><li>vector
|
|
128
128
|
: <a class="el" href="structt__vpi__value.html#b363de5e581f84f9da4610dade8136df">t_vpi_value</a><li>version
|
|
129
129
|
: <a class="el" href="structt__vpi__vlog__info.html#3ff076199159904aa9869e0fb1476bad">t_vpi_vlog_info</a></ul>
|
|
130
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
130
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
131
131
|
<a href="http://www.doxygen.org/index.html">
|
|
132
132
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
133
133
|
</body>
|
data/ref/c/functions_vars.html
CHANGED
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
: <a class="el" href="structt__cb__data.html#5039bb34ac75410ff93cbe44515b3543">t_cb_data</a>, <a class="el" href="structt__vpi__value.html#73c4197b95dc5a8f4e8f0754e776d796">t_vpi_value</a><li>vector
|
|
128
128
|
: <a class="el" href="structt__vpi__value.html#b363de5e581f84f9da4610dade8136df">t_vpi_value</a><li>version
|
|
129
129
|
: <a class="el" href="structt__vpi__vlog__info.html#3ff076199159904aa9869e0fb1476bad">t_vpi_vlog_info</a></ul>
|
|
130
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
130
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
131
131
|
<a href="http://www.doxygen.org/index.html">
|
|
132
132
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
133
133
|
</body>
|
data/ref/c/globals.html
CHANGED
|
@@ -48,7 +48,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
48
48
|
<h3><a class="anchor" name="index_b">- b -</a></h3><ul>
|
|
49
49
|
<li>bool
|
|
50
50
|
: <a class="el" href="common_8h.html#f6a258d8f3ee5206d682d799316314b1">common.h</a></ul>
|
|
51
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
51
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
52
52
|
<a href="http://www.doxygen.org/index.html">
|
|
53
53
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
54
54
|
</body>
|
data/ref/c/globals_0x63.html
CHANGED
|
@@ -79,7 +79,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
79
79
|
: <a class="el" href="common_8h.html#f30d3fc89fbb3ed2aab2f5904ab76815">common.h</a><li>common_debug
|
|
80
80
|
: <a class="el" href="common_8h.html#fcdad79cb06a5c61737b2f434218dc95">common.h</a><li>common_printf
|
|
81
81
|
: <a class="el" href="common_8h.html#88235e5f8aab82571d68045e9f73fe81">common.h</a></ul>
|
|
82
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
82
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
83
83
|
<a href="http://www.doxygen.org/index.html">
|
|
84
84
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
85
85
|
</body>
|
data/ref/c/globals_0x65.html
CHANGED
|
@@ -48,7 +48,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
48
48
|
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
|
|
49
49
|
<li>EETERN
|
|
50
50
|
: <a class="el" href="vpi__user_8h.html#17207c0c9000e05cf0c7bcde1c10293d">vpi_user.h</a></ul>
|
|
51
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
51
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
52
52
|
<a href="http://www.doxygen.org/index.html">
|
|
53
53
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
54
54
|
</body>
|
data/ref/c/globals_0x66.html
CHANGED
|
@@ -48,7 +48,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
48
48
|
<h3><a class="anchor" name="index_f">- f -</a></h3><ul>
|
|
49
49
|
<li>false
|
|
50
50
|
: <a class="el" href="common_8h.html#f6a258d8f3ee5206d682d799316314b1e9de385ef6fe9bf3360d1038396b884c">common.h</a></ul>
|
|
51
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
51
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
52
52
|
<a href="http://www.doxygen.org/index.html">
|
|
53
53
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
54
54
|
</body>
|
data/ref/c/globals_0x70.html
CHANGED
|
@@ -64,7 +64,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
64
64
|
: <a class="el" href="vpi__user_8h.html#b4fa10713b8dd2588754f7172f9be4e0">vpi_user.h</a><li>PLI_VEXTERN
|
|
65
65
|
: <a class="el" href="vpi__user_8h.html#ad181db3eb3faa5de4d589896dbcb662">vpi_user.h</a><li>PROTO_PARAMS
|
|
66
66
|
: <a class="el" href="vpi__user_8h.html#240fc866a11eedf2a49b6b5afd5d2972">vpi_user.h</a></ul>
|
|
67
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
67
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
68
68
|
<a href="http://www.doxygen.org/index.html">
|
|
69
69
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
70
70
|
</body>
|
data/ref/c/globals_0x72.html
CHANGED
|
@@ -55,7 +55,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
55
55
|
: <a class="el" href="relay_8h.html#746b991056f045f975634a6dad38cae7">relay.h</a>, <a class="el" href="relay_8c.html#746b991056f045f975634a6dad38cae7">relay.c</a><li>relay_verilog()
|
|
56
56
|
: <a class="el" href="relay_8h.html#c1a02ebdb76a321bac689ac9b30f0422">relay.h</a>, <a class="el" href="relay_8c.html#c1a02ebdb76a321bac689ac9b30f0422">relay.c</a><li>ruby_run_handshake()
|
|
57
57
|
: <a class="el" href="relay_8c.html#48de991a596f3c94a9bf19b3bf5a8dfd">relay.c</a></ul>
|
|
58
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
58
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
59
59
|
<a href="http://www.doxygen.org/index.html">
|
|
60
60
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
61
61
|
</body>
|
data/ref/c/globals_0x73.html
CHANGED
|
@@ -58,7 +58,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
58
58
|
: <a class="el" href="vpi__user_8h.html#4d989aa964a0d69d3e1da525725573c8">vpi_user.h</a><li>swig_init()
|
|
59
59
|
: <a class="el" href="swig_8h.html#fb31a3a8e1674c2ca6f32a9772bfb491">swig.h</a>, <a class="el" href="swig_8c.html#fb31a3a8e1674c2ca6f32a9772bfb491">swig.c</a><li>swig_rb_relay_verilog()
|
|
60
60
|
: <a class="el" href="swig_8h.html#8ddc9ef9bf799f418bfe09959e695b0f">swig.h</a>, <a class="el" href="swig_8c.html#8ddc9ef9bf799f418bfe09959e695b0f">swig.c</a></ul>
|
|
61
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
61
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
62
62
|
<a href="http://www.doxygen.org/index.html">
|
|
63
63
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
64
64
|
</body>
|
data/ref/c/globals_0x74.html
CHANGED
|
@@ -48,7 +48,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
48
48
|
<h3><a class="anchor" name="index_t">- t -</a></h3><ul>
|
|
49
49
|
<li>true
|
|
50
50
|
: <a class="el" href="common_8h.html#f6a258d8f3ee5206d682d799316314b108f175a5505a10b9ed657defeb050e4b">common.h</a></ul>
|
|
51
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
51
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
52
52
|
<a href="http://www.doxygen.org/index.html">
|
|
53
53
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
54
54
|
</body>
|
data/ref/c/globals_0x76.html
CHANGED
|
@@ -50,7 +50,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
50
50
|
: <a class="el" href="verilog_8h.html#6e8374d012a82e20b7e93415b95cf33d">verilog.h</a><li>verilog_tf_funcPtr_strict
|
|
51
51
|
: <a class="el" href="verilog_8h.html#858d173d13926845fc1c1248519d7fdc">verilog.h</a><li>verilog_tf_funcReturn
|
|
52
52
|
: <a class="el" href="verilog_8h.html#0895cc43ee6708ed1a7fa8b9829665ba">verilog.h</a><li>verilog_tf_funcSig
|
|
53
|
-
: <a class="el" href="vlog_8h.html#1b39935aef93f96d0dfb959639b00754">vlog.h</a>, <a class="el" href="vlog_8c.html#
|
|
53
|
+
: <a class="el" href="vlog_8h.html#1b39935aef93f96d0dfb959639b00754">vlog.h</a>, <a class="el" href="vlog_8c.html#2e0274a583a8e9f28e0a99003053a354">vlog.c</a>, <a class="el" href="verilog_8h.html#d3ce96438bf5e9101337a49bac4507f7">verilog.h</a><li>vlog_bind_task()
|
|
54
54
|
: <a class="el" href="vlog_8h.html#152829ae9d28417665d4d15a059e096c">vlog.h</a>, <a class="el" href="vlog_8c.html#152829ae9d28417665d4d15a059e096c">vlog.c</a><li>vlog_startup()
|
|
55
55
|
: <a class="el" href="vlog_8c.html#dc9eaadf567421f239b8b647a3ea0eb2">vlog.c</a><li>vlog_startup_routines
|
|
56
56
|
: <a class="el" href="vpi__user_8h.html#c633eb05d7e314a57629aa32ca3a9076">vpi_user.h</a>, <a class="el" href="vlog_8c.html#c1228ec9528d9c9be4de1c8e42cd3835">vlog.c</a><li>vpi0
|
|
@@ -465,7 +465,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
465
465
|
: <a class="el" href="vpi__user_8h.html#0a97a6fa4c5f82c05fc5909aded783e2">vpi_user.h</a><li>vpiXorPrim
|
|
466
466
|
: <a class="el" href="vpi__user_8h.html#803026dd4484367c4b3cb871d28249df">vpi_user.h</a><li>vpiZ
|
|
467
467
|
: <a class="el" href="vpi__user_8h.html#926969d440ea7547404cbac67367fe5f">vpi_user.h</a></ul>
|
|
468
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
468
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
469
469
|
<a href="http://www.doxygen.org/index.html">
|
|
470
470
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
471
471
|
</body>
|
data/ref/c/globals_0x78.html
CHANGED
|
@@ -48,7 +48,7 @@ Here is a list of all functions, variables, defines, enums, and typedefs with li
|
|
|
48
48
|
<h3><a class="anchor" name="index_x">- x -</a></h3><ul>
|
|
49
49
|
<li>XXTERN
|
|
50
50
|
: <a class="el" href="vpi__user_8h.html#d3973263496fbe347baaf726dac775c5">vpi_user.h</a></ul>
|
|
51
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
51
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
52
52
|
<a href="http://www.doxygen.org/index.html">
|
|
53
53
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
54
54
|
</body>
|
data/ref/c/globals_defs.html
CHANGED
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
: <a class="el" href="common_8h.html#f30d3fc89fbb3ed2aab2f5904ab76815">common.h</a><li>common_debug
|
|
75
75
|
: <a class="el" href="common_8h.html#fcdad79cb06a5c61737b2f434218dc95">common.h</a><li>common_printf
|
|
76
76
|
: <a class="el" href="common_8h.html#88235e5f8aab82571d68045e9f73fe81">common.h</a></ul>
|
|
77
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
77
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
78
78
|
<a href="http://www.doxygen.org/index.html">
|
|
79
79
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
80
80
|
</body>
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
<h3><a class="anchor" name="index_e">- e -</a></h3><ul>
|
|
44
44
|
<li>EETERN
|
|
45
45
|
: <a class="el" href="vpi__user_8h.html#17207c0c9000e05cf0c7bcde1c10293d">vpi_user.h</a></ul>
|
|
46
|
-
<hr size="1"><address style="align: right;"><small>Generated on
|
|
46
|
+
<hr size="1"><address style="align: right;"><small>Generated on Thu Dec 7 15:09:45 2006 for Ruby-VPI by
|
|
47
47
|
<a href="http://www.doxygen.org/index.html">
|
|
48
48
|
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address>
|
|
49
49
|
</body>
|