ruby-vpi 7.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/HISTORY +398 -0
- data/LICENSE +340 -0
- data/MEMO +38 -0
- data/README +9 -0
- data/Rakefile +271 -0
- data/bin/generate_test.rb +258 -0
- data/bin/generate_test_tpl/bench.rb +31 -0
- data/bin/generate_test_tpl/bench.v +54 -0
- data/bin/generate_test_tpl/design.rb +26 -0
- data/bin/generate_test_tpl/proto.rb +8 -0
- data/bin/generate_test_tpl/runner.rake +28 -0
- data/bin/generate_test_tpl/spec.rb +46 -0
- data/bin/header_to_ruby.rb +70 -0
- data/doc/Rakefile +55 -0
- data/doc/src/LICENSE +397 -0
- data/doc/src/figures/organization.png +0 -0
- data/doc/src/figures/organization_detailed.png +0 -0
- data/doc/src/figures/ruby_init.png +0 -0
- data/doc/src/figures/ruby_relay.png +0 -0
- data/doc/src/figures.dia +0 -0
- data/doc/src/images/COPYING +67 -0
- data/doc/src/images/ChangeLog +27 -0
- data/doc/src/images/blank.png +0 -0
- data/doc/src/images/callouts/1.png +0 -0
- data/doc/src/images/callouts/10.png +0 -0
- data/doc/src/images/callouts/11.png +0 -0
- data/doc/src/images/callouts/12.png +0 -0
- data/doc/src/images/callouts/13.png +0 -0
- data/doc/src/images/callouts/14.png +0 -0
- data/doc/src/images/callouts/15.png +0 -0
- data/doc/src/images/callouts/2.png +0 -0
- data/doc/src/images/callouts/3.png +0 -0
- data/doc/src/images/callouts/4.png +0 -0
- data/doc/src/images/callouts/5.png +0 -0
- data/doc/src/images/callouts/6.png +0 -0
- data/doc/src/images/callouts/7.png +0 -0
- data/doc/src/images/callouts/8.png +0 -0
- data/doc/src/images/callouts/9.png +0 -0
- data/doc/src/images/callouts/ChangeLog +15 -0
- data/doc/src/images/caution.png +0 -0
- data/doc/src/images/caution.svg +290 -0
- data/doc/src/images/copyright +55 -0
- data/doc/src/images/draft.png +0 -0
- data/doc/src/images/home.png +0 -0
- data/doc/src/images/home.svg +386 -0
- data/doc/src/images/important.png +0 -0
- data/doc/src/images/important.svg +163 -0
- data/doc/src/images/next.png +0 -0
- data/doc/src/images/next.svg +191 -0
- data/doc/src/images/note.png +0 -0
- data/doc/src/images/note.svg +483 -0
- data/doc/src/images/prev.png +0 -0
- data/doc/src/images/prev.svg +852 -0
- data/doc/src/images/tip.png +0 -0
- data/doc/src/images/tip.svg +1145 -0
- data/doc/src/images/toc-blank.png +0 -0
- data/doc/src/images/toc-minus.png +0 -0
- data/doc/src/images/toc-plus.png +0 -0
- data/doc/src/images/up.png +0 -0
- data/doc/src/images/up.svg +195 -0
- data/doc/src/images/warning.png +0 -0
- data/doc/src/images/warning.svg +334 -0
- data/doc/src/license.xml +446 -0
- data/doc/src/manual.xml +1582 -0
- data/doc/src/manual.xsl +23 -0
- data/doc/src/shared.dtd +63 -0
- data/doc/src/styles/manual.css +87 -0
- data/doc/txt/manual.txt +1657 -0
- data/doc/xhtml/background.html +3 -0
- data/doc/xhtml/background.methodology.html +3 -0
- data/doc/xhtml/background.organization.html +10 -0
- data/doc/xhtml/background.running-tests.html +3 -0
- data/doc/xhtml/background.terminology.html +3 -0
- data/doc/xhtml/figures/organization.png +0 -0
- data/doc/xhtml/figures/organization_detailed.png +0 -0
- data/doc/xhtml/figures/ruby_init.png +0 -0
- data/doc/xhtml/figures/ruby_relay.png +0 -0
- data/doc/xhtml/gfdl-0.html +18 -0
- data/doc/xhtml/gfdl-1.html +70 -0
- data/doc/xhtml/gfdl-10.html +15 -0
- data/doc/xhtml/gfdl-2.html +13 -0
- data/doc/xhtml/gfdl-3.html +31 -0
- data/doc/xhtml/gfdl-4.html +75 -0
- data/doc/xhtml/gfdl-5.html +20 -0
- data/doc/xhtml/gfdl-6.html +12 -0
- data/doc/xhtml/gfdl-7.html +16 -0
- data/doc/xhtml/gfdl-8.html +17 -0
- data/doc/xhtml/gfdl-9.html +9 -0
- data/doc/xhtml/gfdl-addendum.html +25 -0
- data/doc/xhtml/gfdl.html +11 -0
- data/doc/xhtml/glossary.html +3 -0
- data/doc/xhtml/images/COPYING +67 -0
- data/doc/xhtml/images/ChangeLog +27 -0
- data/doc/xhtml/images/blank.png +0 -0
- data/doc/xhtml/images/callouts/1.png +0 -0
- data/doc/xhtml/images/callouts/10.png +0 -0
- data/doc/xhtml/images/callouts/11.png +0 -0
- data/doc/xhtml/images/callouts/12.png +0 -0
- data/doc/xhtml/images/callouts/13.png +0 -0
- data/doc/xhtml/images/callouts/14.png +0 -0
- data/doc/xhtml/images/callouts/15.png +0 -0
- data/doc/xhtml/images/callouts/2.png +0 -0
- data/doc/xhtml/images/callouts/3.png +0 -0
- data/doc/xhtml/images/callouts/4.png +0 -0
- data/doc/xhtml/images/callouts/5.png +0 -0
- data/doc/xhtml/images/callouts/6.png +0 -0
- data/doc/xhtml/images/callouts/7.png +0 -0
- data/doc/xhtml/images/callouts/8.png +0 -0
- data/doc/xhtml/images/callouts/9.png +0 -0
- data/doc/xhtml/images/callouts/ChangeLog +15 -0
- data/doc/xhtml/images/caution.png +0 -0
- data/doc/xhtml/images/caution.svg +290 -0
- data/doc/xhtml/images/copyright +55 -0
- data/doc/xhtml/images/draft.png +0 -0
- data/doc/xhtml/images/home.png +0 -0
- data/doc/xhtml/images/home.svg +386 -0
- data/doc/xhtml/images/important.png +0 -0
- data/doc/xhtml/images/important.svg +163 -0
- data/doc/xhtml/images/next.png +0 -0
- data/doc/xhtml/images/next.svg +191 -0
- data/doc/xhtml/images/note.png +0 -0
- data/doc/xhtml/images/note.svg +483 -0
- data/doc/xhtml/images/prev.png +0 -0
- data/doc/xhtml/images/prev.svg +852 -0
- data/doc/xhtml/images/tip.png +0 -0
- data/doc/xhtml/images/tip.svg +1145 -0
- data/doc/xhtml/images/toc-blank.png +0 -0
- data/doc/xhtml/images/toc-minus.png +0 -0
- data/doc/xhtml/images/toc-plus.png +0 -0
- data/doc/xhtml/images/up.png +0 -0
- data/doc/xhtml/images/up.svg +195 -0
- data/doc/xhtml/images/warning.png +0 -0
- data/doc/xhtml/images/warning.svg +334 -0
- data/doc/xhtml/index.html +4 -0
- data/doc/xhtml/introduction.html +3 -0
- data/doc/xhtml/introduction.license.html +3 -0
- data/doc/xhtml/introduction.manifest.html +3 -0
- data/doc/xhtml/introduction.related-works.html +3 -0
- data/doc/xhtml/introduction.resources.html +3 -0
- data/doc/xhtml/problem.ivl.html +18 -0
- data/doc/xhtml/problems.html +3 -0
- data/doc/xhtml/problems.ruby.html +3 -0
- data/doc/xhtml/problems.vsim.html +3 -0
- data/doc/xhtml/styles/manual.css +87 -0
- data/doc/xhtml/usage.examples.html +3 -0
- data/doc/xhtml/usage.html +3 -0
- data/doc/xhtml/usage.installation.html +3 -0
- data/doc/xhtml/usage.requirements.html +3 -0
- data/doc/xhtml/usage.tools.html +3 -0
- data/doc/xhtml/usage.tutorial.html +199 -0
- data/ext/Doxyfile +272 -0
- data/ext/README +124 -0
- data/ext/Rakefile +65 -0
- data/ext/common.h +56 -0
- data/ext/extconf.rb +4 -0
- data/ext/relay.cin +146 -0
- data/ext/relay.hin +48 -0
- data/ext/ruby-vpi.c +36 -0
- data/ext/swig.cin +38 -0
- data/ext/swig.hin +39 -0
- data/ext/swig_vpi.h +924 -0
- data/ext/swig_vpi.i +8 -0
- data/ext/swig_wrap.cin +4613 -0
- data/ext/verilog.h +59 -0
- data/ext/vlog.cin +92 -0
- data/ext/vlog.hin +57 -0
- data/ext/vpi_user.h +924 -0
- data/gem_extconf.rb +8 -0
- data/history.html +809 -0
- data/lib/ruby-vpi/erb.rb +41 -0
- data/lib/ruby-vpi/rake.rb +35 -0
- data/lib/ruby-vpi/rdoc.rb +51 -0
- data/lib/ruby-vpi/rspec.rb +32 -0
- data/lib/ruby-vpi/runner.rb +22 -0
- data/lib/ruby-vpi/vpi_util.rb +310 -0
- data/lib/ruby-vpi.rb +58 -0
- data/memo.html +86 -0
- data/readme.html +19 -0
- data/ref/c/annotated.html +36 -0
- data/ref/c/common_8h.html +178 -0
- data/ref/c/doxygen.css +310 -0
- data/ref/c/doxygen.png +0 -0
- data/ref/c/files.html +35 -0
- data/ref/c/functions.html +135 -0
- data/ref/c/functions_vars.html +135 -0
- data/ref/c/globals.html +55 -0
- data/ref/c/globals_0x63.html +86 -0
- data/ref/c/globals_0x65.html +55 -0
- data/ref/c/globals_0x66.html +55 -0
- data/ref/c/globals_0x70.html +71 -0
- data/ref/c/globals_0x72.html +62 -0
- data/ref/c/globals_0x73.html +65 -0
- data/ref/c/globals_0x74.html +55 -0
- data/ref/c/globals_0x76.html +472 -0
- data/ref/c/globals_0x78.html +55 -0
- data/ref/c/globals_defs.html +81 -0
- data/ref/c/globals_defs_0x65.html +50 -0
- data/ref/c/globals_defs_0x70.html +51 -0
- data/ref/c/globals_defs_0x76.html +463 -0
- data/ref/c/globals_defs_0x78.html +50 -0
- data/ref/c/globals_enum.html +39 -0
- data/ref/c/globals_eval.html +40 -0
- data/ref/c/globals_func.html +49 -0
- data/ref/c/globals_type.html +63 -0
- data/ref/c/globals_vars.html +42 -0
- data/ref/c/hierarchy.html +36 -0
- data/ref/c/index.html +20 -0
- data/ref/c/relay_8cin.html +268 -0
- data/ref/c/relay_8hin.html +161 -0
- data/ref/c/ruby-vpi_8c.html +34 -0
- data/ref/c/structrelay____RubyOptions____def.html +84 -0
- data/ref/c/structt__cb__data.html +208 -0
- data/ref/c/structt__vpi__delay.html +183 -0
- data/ref/c/structt__vpi__error__info.html +208 -0
- data/ref/c/structt__vpi__strengthval.html +108 -0
- data/ref/c/structt__vpi__systf__data.html +208 -0
- data/ref/c/structt__vpi__time.html +133 -0
- data/ref/c/structt__vpi__value.html +285 -0
- data/ref/c/structt__vpi__vecval.html +83 -0
- data/ref/c/structt__vpi__vlog__info.html +133 -0
- data/ref/c/swig_8cin.html +91 -0
- data/ref/c/swig_8hin.html +99 -0
- data/ref/c/tab_b.gif +0 -0
- data/ref/c/tab_l.gif +0 -0
- data/ref/c/tab_r.gif +0 -0
- data/ref/c/tabs.css +102 -0
- data/ref/c/verilog_8h.html +149 -0
- data/ref/c/vlog_8cin.html +199 -0
- data/ref/c/vlog_8hin.html +152 -0
- data/ref/c/vpi__user_8h.html +12747 -0
- data/ref/ruby/classes/Counter.html +258 -0
- data/ref/ruby/classes/Counter.src/M000037.html +20 -0
- data/ref/ruby/classes/Counter.src/M000038.html +22 -0
- data/ref/ruby/classes/Counter.src/M000039.html +20 -0
- data/ref/ruby/classes/Counter.src/M000040.html +22 -0
- data/ref/ruby/classes/CounterProto.html +164 -0
- data/ref/ruby/classes/CounterProto.src/M000004.html +22 -0
- data/ref/ruby/classes/CounterProto.src/M000005.html +22 -0
- data/ref/ruby/classes/ERB.html +158 -0
- data/ref/ruby/classes/ERB.src/M000034.html +29 -0
- data/ref/ruby/classes/FileUtils.html +165 -0
- data/ref/ruby/classes/FileUtils.src/M000047.html +18 -0
- data/ref/ruby/classes/FileUtils.src/M000048.html +18 -0
- data/ref/ruby/classes/Hw5UnitModel/Operation.html +216 -0
- data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000011.html +25 -0
- data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000012.html +33 -0
- data/ref/ruby/classes/Hw5UnitModel/Operation.src/M000013.html +18 -0
- data/ref/ruby/classes/Hw5UnitModel.html +256 -0
- data/ref/ruby/classes/Hw5UnitModel.src/M000006.html +24 -0
- data/ref/ruby/classes/Hw5UnitModel.src/M000008.html +20 -0
- data/ref/ruby/classes/Hw5UnitModel.src/M000009.html +38 -0
- data/ref/ruby/classes/Hw5UnitModel.src/M000010.html +22 -0
- data/ref/ruby/classes/Hw5_unit.html +196 -0
- data/ref/ruby/classes/Hw5_unit.src/M000003.html +27 -0
- data/ref/ruby/classes/Hw5_unit_spec.html +237 -0
- data/ref/ruby/classes/Hw5_unit_spec.src/M000023.html +21 -0
- data/ref/ruby/classes/Hw5_unit_spec.src/M000024.html +21 -0
- data/ref/ruby/classes/Hw5_unit_spec.src/M000025.html +67 -0
- data/ref/ruby/classes/InputGenerator.html +260 -0
- data/ref/ruby/classes/InputGenerator.src/M000027.html +18 -0
- data/ref/ruby/classes/InputGenerator.src/M000028.html +18 -0
- data/ref/ruby/classes/InputGenerator.src/M000029.html +19 -0
- data/ref/ruby/classes/InputGenerator.src/M000030.html +38 -0
- data/ref/ruby/classes/InputGenerator.src/M000031.html +19 -0
- data/ref/ruby/classes/InputGenerator.src/M000032.html +19 -0
- data/ref/ruby/classes/MaximumCounterValue.html +159 -0
- data/ref/ruby/classes/MaximumCounterValue.src/M000035.html +23 -0
- data/ref/ruby/classes/MaximumCounterValue.src/M000036.html +21 -0
- data/ref/ruby/classes/ModuleInfo.html +199 -0
- data/ref/ruby/classes/ModuleInfo.src/M000018.html +44 -0
- data/ref/ruby/classes/ModuleInfo.src/M000019.html +26 -0
- data/ref/ruby/classes/OutputInfo.html +304 -0
- data/ref/ruby/classes/OutputInfo.src/M000017.html +51 -0
- data/ref/ruby/classes/RDoc.html +135 -0
- data/ref/ruby/classes/RDoc.src/M000051.html +40 -0
- data/ref/ruby/classes/ResettedCounterValue.html +174 -0
- data/ref/ruby/classes/ResettedCounterValue.src/M000014.html +19 -0
- data/ref/ruby/classes/ResettedCounterValue.src/M000015.html +18 -0
- data/ref/ruby/classes/ResettedCounterValue.src/M000016.html +23 -0
- data/ref/ruby/classes/RubyVPI.html +186 -0
- data/ref/ruby/classes/RubyVPI.src/M000049.html +18 -0
- data/ref/ruby/classes/RubyVPI.src/M000050.html +39 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.html +370 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000041.html +22 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000042.html +44 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000043.html +82 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000044.html +127 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000045.html +26 -0
- data/ref/ruby/classes/SWIG/TYPE_p_unsigned_int.src/M000046.html +18 -0
- data/ref/ruby/classes/SWIG.html +111 -0
- data/ref/ruby/classes/String.html +140 -0
- data/ref/ruby/classes/String.src/M000033.html +37 -0
- data/ref/ruby/classes/Template.html +158 -0
- data/ref/ruby/classes/Template.src/M000026.html +18 -0
- data/ref/ruby/classes/TestHw5UnitModel.html +180 -0
- data/ref/ruby/classes/TestHw5UnitModel.src/M000020.html +19 -0
- data/ref/ruby/classes/TestHw5UnitModel.src/M000021.html +19 -0
- data/ref/ruby/classes/TestHw5UnitModel.src/M000022.html +64 -0
- data/ref/ruby/created.rid +1 -0
- data/ref/ruby/files/bin/generate_test_rb.html +236 -0
- data/ref/ruby/files/bin/generate_test_rb.src/M000001.html +29 -0
- data/ref/ruby/files/bin/generate_test_tpl/bench_rb.html +115 -0
- data/ref/ruby/files/bin/generate_test_tpl/design_rb.html +107 -0
- data/ref/ruby/files/bin/generate_test_tpl/proto_rb.html +107 -0
- data/ref/ruby/files/bin/generate_test_tpl/spec_rb.html +140 -0
- data/ref/ruby/files/bin/generate_test_tpl/spec_rb.src/M000002.html +22 -0
- data/ref/ruby/files/bin/header_to_ruby_rb.html +116 -0
- data/ref/ruby/files/ext/extconf_rb.html +108 -0
- data/ref/ruby/files/gem_extconf_rb.html +114 -0
- data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/rspec_rb.html +115 -0
- data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi/vpi_util_rb.html +108 -0
- data/ref/ruby/files/lib/ruby-vpi_rb.html +108 -0
- data/ref/ruby/files/samp/counter/counter_rspecTest_bench_rb.html +115 -0
- data/ref/ruby/files/samp/counter/counter_rspecTest_design_rb.html +107 -0
- data/ref/ruby/files/samp/counter/counter_rspecTest_proto_rb.html +107 -0
- data/ref/ruby/files/samp/counter/counter_rspecTest_spec_rb.html +142 -0
- data/ref/ruby/files/samp/counter/counter_unitTest_bench_rb.html +115 -0
- data/ref/ruby/files/samp/counter/counter_unitTest_design_rb.html +107 -0
- data/ref/ruby/files/samp/counter/counter_unitTest_proto_rb.html +107 -0
- data/ref/ruby/files/samp/counter/counter_unitTest_spec_rb.html +135 -0
- data/ref/ruby/files/samp/pipelined_alu/Hw5UnitModel_rb.html +101 -0
- data/ref/ruby/files/samp/pipelined_alu/InputGenerator_rb.html +101 -0
- data/ref/ruby/files/samp/pipelined_alu/TestHw5UnitModel_rb.html +111 -0
- data/ref/ruby/files/samp/pipelined_alu/hw5_unit_bench_rb.html +108 -0
- data/ref/ruby/files/samp/pipelined_alu/hw5_unit_design_rb.html +107 -0
- data/ref/ruby/files/samp/pipelined_alu/hw5_unit_spec_rb.html +112 -0
- data/ref/ruby/fr_class_index.html +46 -0
- data/ref/ruby/fr_file_index.html +55 -0
- data/ref/ruby/fr_method_index.html +77 -0
- data/ref/ruby/index.html +24 -0
- data/ref/ruby/rdoc-style.css +208 -0
- data/samp/counter/Rakefile +1 -0
- data/samp/counter/counter.v +20 -0
- data/samp/counter/counter_rspecTest_bench.rb +9 -0
- data/samp/counter/counter_rspecTest_bench.v +28 -0
- data/samp/counter/counter_rspecTest_design.rb +22 -0
- data/samp/counter/counter_rspecTest_proto.rb +10 -0
- data/samp/counter/counter_rspecTest_runner.rake +28 -0
- data/samp/counter/counter_rspecTest_spec.rb +47 -0
- data/samp/counter/counter_unitTest_bench.rb +9 -0
- data/samp/counter/counter_unitTest_bench.v +28 -0
- data/samp/counter/counter_unitTest_design.rb +22 -0
- data/samp/counter/counter_unitTest_proto.rb +10 -0
- data/samp/counter/counter_unitTest_runner.rake +28 -0
- data/samp/counter/counter_unitTest_spec.rb +49 -0
- data/samp/pipelined_alu/Hw5UnitModel.rb +134 -0
- data/samp/pipelined_alu/InputGenerator.rb +94 -0
- data/samp/pipelined_alu/README +127 -0
- data/samp/pipelined_alu/Rakefile +1 -0
- data/samp/pipelined_alu/TestHw5UnitModel.rb +88 -0
- data/samp/pipelined_alu/hw5_unit.v +186 -0
- data/samp/pipelined_alu/hw5_unit_bench.rb +8 -0
- data/samp/pipelined_alu/hw5_unit_bench.v +45 -0
- data/samp/pipelined_alu/hw5_unit_design.rb +18 -0
- data/samp/pipelined_alu/hw5_unit_runner.rake +10 -0
- data/samp/pipelined_alu/hw5_unit_spec.rb +123 -0
- data/tpl/launcher.rake +30 -0
- data/tpl/runner.rake +96 -0
- data/tpl/synopsys_vcs.tab +2 -0
- metadata +484 -0
@@ -0,0 +1,77 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="utf-8"?>
|
3
|
+
<!DOCTYPE html
|
4
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
5
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
6
|
+
|
7
|
+
<!--
|
8
|
+
|
9
|
+
Methods
|
10
|
+
|
11
|
+
-->
|
12
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
13
|
+
<head>
|
14
|
+
<title>Methods</title>
|
15
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
16
|
+
<link rel="stylesheet" href="rdoc-style.css" type="text/css" />
|
17
|
+
<base target="docwin" />
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
<div id="index">
|
21
|
+
<h1 class="section-bar">Methods</h1>
|
22
|
+
<div id="index-entries">
|
23
|
+
<a href="classes/SWIG/TYPE_p_unsigned_int.html#M000045">[] (SWIG::TYPE_p_unsigned_int)</a><br />
|
24
|
+
<a href="classes/InputGenerator.html#M000028">bits (InputGenerator)</a><br />
|
25
|
+
<a href="classes/InputGenerator.html#M000029">bits= (InputGenerator)</a><br />
|
26
|
+
<a href="classes/FileUtils.html#M000048">collect_args (FileUtils)</a><br />
|
27
|
+
<a href="classes/Hw5UnitModel/Operation.html#M000012">compute (Hw5UnitModel::Operation)</a><br />
|
28
|
+
<a href="classes/Hw5UnitModel/Operation.html#M000013">compute! (Hw5UnitModel::Operation)</a><br />
|
29
|
+
<a href="classes/Hw5UnitModel.html#M000009">cycle (Hw5UnitModel)</a><br />
|
30
|
+
<a href="classes/SWIG/TYPE_p_unsigned_int.html#M000046">each (SWIG::TYPE_p_unsigned_int)</a><br />
|
31
|
+
<a href="classes/InputGenerator.html#M000030">gen (InputGenerator)</a><br />
|
32
|
+
<a href="classes/InputGenerator.html#M000032">genPowerOfTwo (InputGenerator)</a><br />
|
33
|
+
<a href="classes/InputGenerator.html#M000031">genPrime (InputGenerator)</a><br />
|
34
|
+
<a href="classes/SWIG/TYPE_p_unsigned_int.html#M000042">get_value (SWIG::TYPE_p_unsigned_int)</a><br />
|
35
|
+
<a href="classes/SWIG/TYPE_p_unsigned_int.html#M000041">get_value_wrapper (SWIG::TYPE_p_unsigned_int)</a><br />
|
36
|
+
<a href="classes/RubyVPI.html#M000050">init_bench (RubyVPI)</a><br />
|
37
|
+
<a href="classes/Hw5UnitModel.html#M000007">initialize (Hw5UnitModel)</a><br />
|
38
|
+
<a href="classes/RubyVPI.html#M000049">load_runner_template (RubyVPI)</a><br />
|
39
|
+
<a href="classes/SWIG/TYPE_p_unsigned_int.html#M000044">method_missing (SWIG::TYPE_p_unsigned_int)</a><br />
|
40
|
+
<a href="classes/Hw5UnitModel/Operation.html#M000011">new (Hw5UnitModel::Operation)</a><br />
|
41
|
+
<a href="classes/Counter.html#M000039">new (Counter)</a><br />
|
42
|
+
<a href="classes/ModuleInfo.html#M000018">new (ModuleInfo)</a><br />
|
43
|
+
<a href="classes/OutputInfo.html#M000017">new (OutputInfo)</a><br />
|
44
|
+
<a href="classes/ERB.html#M000034">new (ERB)</a><br />
|
45
|
+
<a href="classes/Hw5_unit.html#M000003">new (Hw5_unit)</a><br />
|
46
|
+
<a href="classes/InputGenerator.html#M000027">new (InputGenerator)</a><br />
|
47
|
+
<a href="classes/Counter.html#M000037">new (Counter)</a><br />
|
48
|
+
<a href="classes/Template.html#M000026">new (Template)</a><br />
|
49
|
+
<a href="classes/Hw5UnitModel.html#M000010">output (Hw5UnitModel)</a><br />
|
50
|
+
<a href="classes/ModuleInfo.html#M000019">parse_declarations (ModuleInfo)</a><br />
|
51
|
+
<a href="classes/SWIG/TYPE_p_unsigned_int.html#M000043">put_value (SWIG::TYPE_p_unsigned_int)</a><br />
|
52
|
+
<a href="classes/Hw5UnitModel.html#M000006">reset (Hw5UnitModel)</a><br />
|
53
|
+
<a href="classes/Hw5_unit_spec.html#M000024">reset (Hw5_unit_spec)</a><br />
|
54
|
+
<a href="classes/Counter.html#M000040">reset! (Counter)</a><br />
|
55
|
+
<a href="classes/Counter.html#M000038">reset! (Counter)</a><br />
|
56
|
+
<a href="classes/ResettedCounterValue.html#M000014">setup (ResettedCounterValue)</a><br />
|
57
|
+
<a href="classes/MaximumCounterValue.html#M000035">setup (MaximumCounterValue)</a><br />
|
58
|
+
<a href="files/bin/generate_test_tpl/spec_rb.html#M000002">setup (bin/generate_test_tpl/spec.rb)</a><br />
|
59
|
+
<a href="classes/TestHw5UnitModel.html#M000020">setup (TestHw5UnitModel)</a><br />
|
60
|
+
<a href="classes/Hw5_unit_spec.html#M000023">setup (Hw5_unit_spec)</a><br />
|
61
|
+
<a href="classes/FileUtils.html#M000047">sh (FileUtils)</a><br />
|
62
|
+
<a href="classes/CounterProto.html#M000004">simulate! (CounterProto)</a><br />
|
63
|
+
<a href="classes/CounterProto.html#M000005">simulate! (CounterProto)</a><br />
|
64
|
+
<a href="classes/Hw5UnitModel.html#M000008">startOperation (Hw5UnitModel)</a><br />
|
65
|
+
<a href="classes/TestHw5UnitModel.html#M000022">testModel (TestHw5UnitModel)</a><br />
|
66
|
+
<a href="classes/ResettedCounterValue.html#M000016">test_increment (ResettedCounterValue)</a><br />
|
67
|
+
<a href="classes/MaximumCounterValue.html#M000036">test_overflow (MaximumCounterValue)</a><br />
|
68
|
+
<a href="classes/Hw5_unit_spec.html#M000025">test_pipeline (Hw5_unit_spec)</a><br />
|
69
|
+
<a href="classes/TestHw5UnitModel.html#M000021">test_reset (TestHw5UnitModel)</a><br />
|
70
|
+
<a href="classes/ResettedCounterValue.html#M000015">test_zero (ResettedCounterValue)</a><br />
|
71
|
+
<a href="classes/String.html#M000033">to_ruby (String)</a><br />
|
72
|
+
<a href="classes/RDoc.html#M000051">usage_from_file (RDoc)</a><br />
|
73
|
+
<a href="files/bin/generate_test_rb.html#M000001">write_file (bin/generate_test.rb)</a><br />
|
74
|
+
</div>
|
75
|
+
</div>
|
76
|
+
</body>
|
77
|
+
</html>
|
data/ref/ruby/index.html
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html
|
3
|
+
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
4
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
5
|
+
|
6
|
+
<!--
|
7
|
+
|
8
|
+
Ruby-VPI: Ruby interface to Verilog VPI.
|
9
|
+
|
10
|
+
-->
|
11
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
12
|
+
<head>
|
13
|
+
<title>Ruby-VPI: Ruby interface to Verilog VPI.</title>
|
14
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
15
|
+
</head>
|
16
|
+
<frameset rows="20%, 80%">
|
17
|
+
<frameset cols="25%,35%,45%">
|
18
|
+
<frame src="fr_file_index.html" title="Files" name="Files" />
|
19
|
+
<frame src="fr_class_index.html" name="Classes" />
|
20
|
+
<frame src="fr_method_index.html" name="Methods" />
|
21
|
+
</frameset>
|
22
|
+
<frame src="files/gem_extconf_rb.html" name="docwin" />
|
23
|
+
</frameset>
|
24
|
+
</html>
|
@@ -0,0 +1,208 @@
|
|
1
|
+
|
2
|
+
body {
|
3
|
+
font-family: Verdana,Arial,Helvetica,sans-serif;
|
4
|
+
font-size: 90%;
|
5
|
+
margin: 0;
|
6
|
+
margin-left: 40px;
|
7
|
+
padding: 0;
|
8
|
+
background: white;
|
9
|
+
}
|
10
|
+
|
11
|
+
h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
|
12
|
+
h1 { font-size: 150%; }
|
13
|
+
h2,h3,h4 { margin-top: 1em; }
|
14
|
+
|
15
|
+
a { background: #eef; color: #039; text-decoration: none; }
|
16
|
+
a:hover { background: #039; color: #eef; }
|
17
|
+
|
18
|
+
/* Override the base stylesheet's Anchor inside a table cell */
|
19
|
+
td > a {
|
20
|
+
background: transparent;
|
21
|
+
color: #039;
|
22
|
+
text-decoration: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
/* and inside a section title */
|
26
|
+
.section-title > a {
|
27
|
+
background: transparent;
|
28
|
+
color: #eee;
|
29
|
+
text-decoration: none;
|
30
|
+
}
|
31
|
+
|
32
|
+
/* === Structural elements =================================== */
|
33
|
+
|
34
|
+
div#index {
|
35
|
+
margin: 0;
|
36
|
+
margin-left: -40px;
|
37
|
+
padding: 0;
|
38
|
+
font-size: 90%;
|
39
|
+
}
|
40
|
+
|
41
|
+
|
42
|
+
div#index a {
|
43
|
+
margin-left: 0.7em;
|
44
|
+
}
|
45
|
+
|
46
|
+
div#index .section-bar {
|
47
|
+
margin-left: 0px;
|
48
|
+
padding-left: 0.7em;
|
49
|
+
background: #ccc;
|
50
|
+
font-size: small;
|
51
|
+
}
|
52
|
+
|
53
|
+
|
54
|
+
div#classHeader, div#fileHeader {
|
55
|
+
width: auto;
|
56
|
+
color: white;
|
57
|
+
padding: 0.5em 1.5em 0.5em 1.5em;
|
58
|
+
margin: 0;
|
59
|
+
margin-left: -40px;
|
60
|
+
border-bottom: 3px solid #006;
|
61
|
+
}
|
62
|
+
|
63
|
+
div#classHeader a, div#fileHeader a {
|
64
|
+
background: inherit;
|
65
|
+
color: white;
|
66
|
+
}
|
67
|
+
|
68
|
+
div#classHeader td, div#fileHeader td {
|
69
|
+
background: inherit;
|
70
|
+
color: white;
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
div#fileHeader {
|
75
|
+
background: #057;
|
76
|
+
}
|
77
|
+
|
78
|
+
div#classHeader {
|
79
|
+
background: #048;
|
80
|
+
}
|
81
|
+
|
82
|
+
|
83
|
+
.class-name-in-header {
|
84
|
+
font-size: 180%;
|
85
|
+
font-weight: bold;
|
86
|
+
}
|
87
|
+
|
88
|
+
|
89
|
+
div#bodyContent {
|
90
|
+
padding: 0 1.5em 0 1.5em;
|
91
|
+
}
|
92
|
+
|
93
|
+
div#description {
|
94
|
+
padding: 0.5em 1.5em;
|
95
|
+
background: #efefef;
|
96
|
+
border: 1px dotted #999;
|
97
|
+
}
|
98
|
+
|
99
|
+
div#description h1,h2,h3,h4,h5,h6 {
|
100
|
+
color: #125;;
|
101
|
+
background: transparent;
|
102
|
+
}
|
103
|
+
|
104
|
+
div#validator-badges {
|
105
|
+
text-align: center;
|
106
|
+
}
|
107
|
+
div#validator-badges img { border: 0; }
|
108
|
+
|
109
|
+
div#copyright {
|
110
|
+
color: #333;
|
111
|
+
background: #efefef;
|
112
|
+
font: 0.75em sans-serif;
|
113
|
+
margin-top: 5em;
|
114
|
+
margin-bottom: 0;
|
115
|
+
padding: 0.5em 2em;
|
116
|
+
}
|
117
|
+
|
118
|
+
|
119
|
+
/* === Classes =================================== */
|
120
|
+
|
121
|
+
table.header-table {
|
122
|
+
color: white;
|
123
|
+
font-size: small;
|
124
|
+
}
|
125
|
+
|
126
|
+
.type-note {
|
127
|
+
font-size: small;
|
128
|
+
color: #DEDEDE;
|
129
|
+
}
|
130
|
+
|
131
|
+
.xxsection-bar {
|
132
|
+
background: #eee;
|
133
|
+
color: #333;
|
134
|
+
padding: 3px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.section-bar {
|
138
|
+
color: #333;
|
139
|
+
border-bottom: 1px solid #999;
|
140
|
+
margin-left: -20px;
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
.section-title {
|
145
|
+
background: #79a;
|
146
|
+
color: #eee;
|
147
|
+
padding: 3px;
|
148
|
+
margin-top: 2em;
|
149
|
+
margin-left: -30px;
|
150
|
+
border: 1px solid #999;
|
151
|
+
}
|
152
|
+
|
153
|
+
.top-aligned-row { vertical-align: top }
|
154
|
+
.bottom-aligned-row { vertical-align: bottom }
|
155
|
+
|
156
|
+
/* --- Context section classes ----------------------- */
|
157
|
+
|
158
|
+
.context-row { }
|
159
|
+
.context-item-name { font-family: monospace; font-weight: bold; color: black; }
|
160
|
+
.context-item-value { font-size: small; color: #448; }
|
161
|
+
.context-item-desc { color: #333; padding-left: 2em; }
|
162
|
+
|
163
|
+
/* --- Method classes -------------------------- */
|
164
|
+
.method-detail {
|
165
|
+
background: #efefef;
|
166
|
+
padding: 0;
|
167
|
+
margin-top: 0.5em;
|
168
|
+
margin-bottom: 1em;
|
169
|
+
border: 1px dotted #ccc;
|
170
|
+
}
|
171
|
+
.method-heading {
|
172
|
+
color: black;
|
173
|
+
background: #ccc;
|
174
|
+
border-bottom: 1px solid #666;
|
175
|
+
padding: 0.2em 0.5em 0 0.5em;
|
176
|
+
}
|
177
|
+
.method-signature { color: black; background: inherit; }
|
178
|
+
.method-name { font-weight: bold; }
|
179
|
+
.method-args { font-style: italic; }
|
180
|
+
.method-description { padding: 0 0.5em 0 0.5em; }
|
181
|
+
|
182
|
+
/* --- Source code sections -------------------- */
|
183
|
+
|
184
|
+
a.source-toggle { font-size: 90%; }
|
185
|
+
div.method-source-code {
|
186
|
+
background: #262626;
|
187
|
+
color: #ffdead;
|
188
|
+
margin: 1em;
|
189
|
+
padding: 0.5em;
|
190
|
+
border: 1px dashed #999;
|
191
|
+
overflow: hidden;
|
192
|
+
}
|
193
|
+
|
194
|
+
div.method-source-code pre { color: #ffdead; overflow: hidden; }
|
195
|
+
|
196
|
+
/* --- Ruby keyword styles --------------------- */
|
197
|
+
|
198
|
+
.standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
|
199
|
+
|
200
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
201
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
202
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
203
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
204
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
205
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
206
|
+
.ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
|
207
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
208
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
@@ -0,0 +1 @@
|
|
1
|
+
load '../../tpl/launcher.rake'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/**
|
2
|
+
A simple up-counter with synchronous reset.
|
3
|
+
|
4
|
+
@param Size Number of bits used to represent the counter's value.
|
5
|
+
@param clock Increments the counter's value upon each positive edge.
|
6
|
+
@param reset Zeroes the counter's value when asserted.
|
7
|
+
@param count The counter's value.
|
8
|
+
*/
|
9
|
+
module counter #(parameter Size = 5) (
|
10
|
+
input clock,
|
11
|
+
input reset,
|
12
|
+
output reg [Size - 1 : 0] count
|
13
|
+
);
|
14
|
+
always @(posedge clock) begin
|
15
|
+
if (reset)
|
16
|
+
count <= 0;
|
17
|
+
else
|
18
|
+
count <= count + 1;
|
19
|
+
end
|
20
|
+
endmodule
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/* This is the Verilog side of the bench. */
|
2
|
+
|
3
|
+
module counter_rspecTest_bench;
|
4
|
+
|
5
|
+
// instantiate the design under test
|
6
|
+
parameter Size = 5;
|
7
|
+
|
8
|
+
reg clock;
|
9
|
+
reg reset;
|
10
|
+
wire [Size - 1 : 0] count;
|
11
|
+
|
12
|
+
counter#(.Size(Size))counter_rspecTest_bench_rspecTest_design(.clock(clock), .reset(reset), .count(count));
|
13
|
+
|
14
|
+
// connect to the Ruby side of this bench
|
15
|
+
initial begin
|
16
|
+
clock = 0;
|
17
|
+
$ruby_init("ruby", "-w", "-rubygems", "counter_rspecTest_bench.rb", "-f", "s");
|
18
|
+
end
|
19
|
+
|
20
|
+
always begin
|
21
|
+
#5 clock = ~clock;
|
22
|
+
end
|
23
|
+
|
24
|
+
always @(posedge clock) begin
|
25
|
+
#1 $ruby_relay;
|
26
|
+
end
|
27
|
+
|
28
|
+
endmodule
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# An interface to the design under test.
|
2
|
+
class Counter
|
3
|
+
include Vpi
|
4
|
+
|
5
|
+
Size = 5
|
6
|
+
|
7
|
+
attr_reader :clock, :reset, :count
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@clock = vpi_handle_by_name("counter_rspecTest_bench.clock", nil)
|
11
|
+
@reset = vpi_handle_by_name("counter_rspecTest_bench.reset", nil)
|
12
|
+
@count = vpi_handle_by_name("counter_rspecTest_bench.count", nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset!
|
16
|
+
@reset.hexStrVal = 'x'
|
17
|
+
|
18
|
+
@reset.intVal = 1
|
19
|
+
relay_verilog
|
20
|
+
@reset.intVal = 0
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
## This file builds and runs the test.
|
2
|
+
|
3
|
+
# These are source files that are to be simulated.
|
4
|
+
SIMULATOR_SOURCES = [
|
5
|
+
'counter_rspecTest_bench.v',
|
6
|
+
'counter.v',
|
7
|
+
]
|
8
|
+
|
9
|
+
# This specifies the "top module" that is to be simulated.
|
10
|
+
SIMULATOR_TARGET = 'counter_rspecTest_bench'
|
11
|
+
|
12
|
+
# These are command-line arguments for the simulator.
|
13
|
+
# They can be specified as a string or an array of strings.
|
14
|
+
SIMULATOR_ARGS = {
|
15
|
+
# GPL Cver
|
16
|
+
:cver => '',
|
17
|
+
|
18
|
+
# Icarus Verilog
|
19
|
+
:ivl => '',
|
20
|
+
|
21
|
+
# Synopsys VCS
|
22
|
+
:vcs => '',
|
23
|
+
|
24
|
+
# Mentor Modelsim
|
25
|
+
:vsim => '',
|
26
|
+
}
|
27
|
+
|
28
|
+
require 'ruby-vpi/runner'
|
@@ -0,0 +1,47 @@
|
|
1
|
+
## This specification verifies the design under test.
|
2
|
+
|
3
|
+
# lowest upper bound of counter's value
|
4
|
+
LIMIT = 2 ** Counter::Size
|
5
|
+
|
6
|
+
# maximum allowed value for a counter
|
7
|
+
MAX = LIMIT - 1
|
8
|
+
|
9
|
+
include Vpi
|
10
|
+
|
11
|
+
context "A resetted counter's value" do
|
12
|
+
setup do
|
13
|
+
@design = Counter.new
|
14
|
+
@design.reset!
|
15
|
+
end
|
16
|
+
|
17
|
+
specify "should be zero" do
|
18
|
+
@design.count.intVal.should_equal 0
|
19
|
+
end
|
20
|
+
|
21
|
+
specify "should increment by one count upon each rising clock edge" do
|
22
|
+
LIMIT.times do |i|
|
23
|
+
@design.count.intVal.should_equal i
|
24
|
+
|
25
|
+
# advance the clock
|
26
|
+
relay_verilog
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "A counter with the maximum value" do
|
32
|
+
setup do
|
33
|
+
@design = Counter.new
|
34
|
+
@design.reset!
|
35
|
+
|
36
|
+
# increment the counter to maximum value
|
37
|
+
MAX.times do relay_verilog end
|
38
|
+
@design.count.intVal.should_equal MAX
|
39
|
+
end
|
40
|
+
|
41
|
+
specify "should overflow upon increment" do
|
42
|
+
# increment the counter
|
43
|
+
relay_verilog
|
44
|
+
|
45
|
+
@design.count.intVal.should_equal 0
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/* This is the Verilog side of the bench. */
|
2
|
+
|
3
|
+
module counter_unitTest_bench;
|
4
|
+
|
5
|
+
// instantiate the design under test
|
6
|
+
parameter Size = 5;
|
7
|
+
|
8
|
+
reg clock;
|
9
|
+
reg reset;
|
10
|
+
wire [Size - 1 : 0] count;
|
11
|
+
|
12
|
+
counter#(.Size(Size))counter_unitTest_bench_unitTest_design(.clock(clock), .reset(reset), .count(count));
|
13
|
+
|
14
|
+
// connect to the Ruby side of this bench
|
15
|
+
initial begin
|
16
|
+
clock = 0;
|
17
|
+
$ruby_init("ruby", "-w", "-rubygems", "counter_unitTest_bench.rb");
|
18
|
+
end
|
19
|
+
|
20
|
+
always begin
|
21
|
+
#5 clock = ~clock;
|
22
|
+
end
|
23
|
+
|
24
|
+
always @(posedge clock) begin
|
25
|
+
#1 $ruby_relay;
|
26
|
+
end
|
27
|
+
|
28
|
+
endmodule
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# An interface to the design under test.
|
2
|
+
class Counter
|
3
|
+
include Vpi
|
4
|
+
|
5
|
+
Size = 5
|
6
|
+
|
7
|
+
attr_reader :clock, :reset, :count
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
@clock = vpi_handle_by_name("counter_unitTest_bench.clock", nil)
|
11
|
+
@reset = vpi_handle_by_name("counter_unitTest_bench.reset", nil)
|
12
|
+
@count = vpi_handle_by_name("counter_unitTest_bench.count", nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset!
|
16
|
+
@reset.hexStrVal = 'x'
|
17
|
+
|
18
|
+
@reset.intVal = 1
|
19
|
+
relay_verilog
|
20
|
+
@reset.intVal = 0
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
## This file builds and runs the test.
|
2
|
+
|
3
|
+
# These are source files that are to be simulated.
|
4
|
+
SIMULATOR_SOURCES = [
|
5
|
+
'counter_unitTest_bench.v',
|
6
|
+
'counter.v',
|
7
|
+
]
|
8
|
+
|
9
|
+
# This specifies the "top module" that is to be simulated.
|
10
|
+
SIMULATOR_TARGET = 'counter_unitTest_bench'
|
11
|
+
|
12
|
+
# These are command-line arguments for the simulator.
|
13
|
+
# They can be specified as a string or an array of strings.
|
14
|
+
SIMULATOR_ARGS = {
|
15
|
+
# GPL Cver
|
16
|
+
:cver => '',
|
17
|
+
|
18
|
+
# Icarus Verilog
|
19
|
+
:ivl => '',
|
20
|
+
|
21
|
+
# Synopsys VCS
|
22
|
+
:vcs => '',
|
23
|
+
|
24
|
+
# Mentor Modelsim
|
25
|
+
:vsim => '',
|
26
|
+
}
|
27
|
+
|
28
|
+
require 'ruby-vpi/runner'
|
@@ -0,0 +1,49 @@
|
|
1
|
+
## This specification verifies the design under test.
|
2
|
+
|
3
|
+
# lowest upper bound of counter's value
|
4
|
+
LIMIT = 2 ** Counter::Size
|
5
|
+
|
6
|
+
# maximum allowed value for a counter
|
7
|
+
MAX = LIMIT - 1
|
8
|
+
|
9
|
+
class ResettedCounterValue < Test::Unit::TestCase
|
10
|
+
include Vpi
|
11
|
+
|
12
|
+
def setup
|
13
|
+
@design = Counter.new
|
14
|
+
@design.reset!
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_zero
|
18
|
+
assert_equal 0, @design.count.intVal
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_increment
|
22
|
+
LIMIT.times do |i|
|
23
|
+
assert_equal i, @design.count.intVal
|
24
|
+
|
25
|
+
# advance the clock
|
26
|
+
relay_verilog
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class MaximumCounterValue < Test::Unit::TestCase
|
32
|
+
include Vpi
|
33
|
+
|
34
|
+
def setup
|
35
|
+
@design = Counter.new
|
36
|
+
@design.reset!
|
37
|
+
|
38
|
+
# increment the counter to maximum value
|
39
|
+
MAX.times do relay_verilog end
|
40
|
+
assert_equal MAX, @design.count.intVal
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_overflow
|
44
|
+
# increment the counter
|
45
|
+
relay_verilog
|
46
|
+
|
47
|
+
assert_equal 0, @design.count.intVal
|
48
|
+
end
|
49
|
+
end
|