ruby-vpi 17.0.0 → 18.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (126) hide show
  1. data/LICENSE +8 -6
  2. data/Rakefile +4 -4
  3. data/doc/common.css +6 -9
  4. data/doc/common.inc +3 -3
  5. data/doc/common.tpl +14 -6
  6. data/doc/history.html +152 -44
  7. data/doc/history.inc +55 -3
  8. data/doc/history.yaml +62 -2
  9. data/doc/intro.inc +20 -16
  10. data/doc/manual.doc +23 -9
  11. data/doc/manual.html +232 -200
  12. data/doc/memo.doc +7 -6
  13. data/doc/memo.html +28 -17
  14. data/doc/readme.doc +1 -1
  15. data/doc/readme.html +51 -35
  16. data/doc/rss.xml +96 -70
  17. data/ext/Rakefile +24 -11
  18. data/ext/swig_vpi.h +1 -1
  19. data/ext/swig_wrap.cin +17 -42
  20. data/lib/ruby-vpi/pli.tab +1 -0
  21. data/lib/ruby-vpi/runner.rb +34 -10
  22. data/lib/ruby-vpi/vpi.rb +483 -438
  23. data/ref/c/annotated.html +1 -1
  24. data/ref/c/common_8h.html +1 -1
  25. data/ref/c/files.html +1 -1
  26. data/ref/c/functions.html +1 -1
  27. data/ref/c/functions_vars.html +1 -1
  28. data/ref/c/globals.html +1 -1
  29. data/ref/c/globals_0x63.html +1 -1
  30. data/ref/c/globals_0x65.html +1 -1
  31. data/ref/c/globals_0x66.html +1 -1
  32. data/ref/c/globals_0x6d.html +1 -1
  33. data/ref/c/globals_0x70.html +1 -1
  34. data/ref/c/globals_0x72.html +1 -1
  35. data/ref/c/globals_0x73.html +1 -1
  36. data/ref/c/globals_0x74.html +1 -1
  37. data/ref/c/globals_0x76.html +1 -1
  38. data/ref/c/globals_0x78.html +1 -1
  39. data/ref/c/globals_defs.html +1 -1
  40. data/ref/c/globals_defs_0x65.html +1 -1
  41. data/ref/c/globals_defs_0x70.html +1 -1
  42. data/ref/c/globals_defs_0x76.html +1 -1
  43. data/ref/c/globals_defs_0x78.html +1 -1
  44. data/ref/c/globals_enum.html +1 -1
  45. data/ref/c/globals_eval.html +1 -1
  46. data/ref/c/globals_func.html +1 -1
  47. data/ref/c/globals_type.html +1 -1
  48. data/ref/c/globals_vars.html +1 -1
  49. data/ref/c/index.html +1 -1
  50. data/ref/c/main_8c.html +1 -1
  51. data/ref/c/main_8h.html +1 -1
  52. data/ref/c/relay_8c.html +1 -1
  53. data/ref/c/relay_8h.html +1 -1
  54. data/ref/c/structt__cb__data.html +1 -1
  55. data/ref/c/structt__vpi__delay.html +1 -1
  56. data/ref/c/structt__vpi__error__info.html +1 -1
  57. data/ref/c/structt__vpi__strengthval.html +1 -1
  58. data/ref/c/structt__vpi__systf__data.html +1 -1
  59. data/ref/c/structt__vpi__time.html +1 -1
  60. data/ref/c/structt__vpi__value.html +1 -1
  61. data/ref/c/structt__vpi__vecval.html +1 -1
  62. data/ref/c/structt__vpi__vlog__info.html +1 -1
  63. data/ref/c/verilog_8h.html +1 -1
  64. data/ref/c/vlog_8c.html +1 -1
  65. data/ref/c/vlog_8h.html +1 -1
  66. data/ref/c/vpi__user_8h.html +1 -1
  67. data/ref/ruby/classes/RDoc.html +5 -5
  68. data/ref/ruby/classes/RDoc.src/{M000058.html → M000061.html} +0 -0
  69. data/ref/ruby/classes/String.html +24 -24
  70. data/ref/ruby/classes/String.src/M000022.html +23 -5
  71. data/ref/ruby/classes/String.src/M000023.html +28 -5
  72. data/ref/ruby/classes/String.src/M000024.html +5 -23
  73. data/ref/ruby/classes/String.src/M000025.html +5 -28
  74. data/ref/ruby/classes/Vpi/Handle.html +94 -49
  75. data/ref/ruby/classes/Vpi/Handle.src/M000035.html +4 -4
  76. data/ref/ruby/classes/Vpi/Handle.src/M000036.html +4 -4
  77. data/ref/ruby/classes/Vpi/Handle.src/M000037.html +4 -4
  78. data/ref/ruby/classes/Vpi/Handle.src/M000038.html +4 -4
  79. data/ref/ruby/classes/Vpi/Handle.src/M000039.html +4 -4
  80. data/ref/ruby/classes/Vpi/Handle.src/M000040.html +4 -4
  81. data/ref/ruby/classes/Vpi/Handle.src/M000041.html +4 -4
  82. data/ref/ruby/classes/Vpi/Handle.src/M000042.html +4 -4
  83. data/ref/ruby/classes/Vpi/Handle.src/M000043.html +7 -7
  84. data/ref/ruby/classes/Vpi/Handle.src/M000044.html +7 -7
  85. data/ref/ruby/classes/Vpi/Handle.src/M000045.html +8 -8
  86. data/ref/ruby/classes/Vpi/Handle.src/M000046.html +36 -30
  87. data/ref/ruby/classes/Vpi/Handle.src/M000047.html +72 -67
  88. data/ref/ruby/classes/Vpi/Handle.src/M000048.html +6 -17
  89. data/ref/ruby/classes/Vpi/Handle.src/M000049.html +19 -0
  90. data/ref/ruby/classes/Vpi/Handle.src/M000050.html +5 -5
  91. data/ref/ruby/classes/Vpi/Handle.src/M000051.html +16 -10
  92. data/ref/ruby/classes/Vpi/Handle.src/M000053.html +5 -18
  93. data/ref/ruby/classes/Vpi/Handle.src/M000054.html +11 -76
  94. data/ref/ruby/classes/Vpi/Handle.src/M000056.html +31 -0
  95. data/ref/ruby/classes/Vpi/Handle.src/M000057.html +40 -0
  96. data/ref/ruby/classes/Vpi/S_vpi_time.html +16 -16
  97. data/ref/ruby/classes/Vpi/S_vpi_time.src/{M000055.html → M000058.html} +4 -4
  98. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000059.html +19 -0
  99. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000032.html +4 -4
  100. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000033.html +4 -4
  101. data/ref/ruby/classes/Vpi/S_vpi_value.src/M000034.html +4 -4
  102. data/ref/ruby/classes/Vpi.html +0 -7
  103. data/ref/ruby/classes/Vpi.src/M000029.html +14 -14
  104. data/ref/ruby/classes/Vpi.src/M000030.html +25 -24
  105. data/ref/ruby/classes/Vpi.src/M000031.html +6 -6
  106. data/ref/ruby/created.rid +1 -1
  107. data/ref/ruby/files/bin/convert_rb.html +1 -1
  108. data/ref/ruby/files/bin/generate_rb.html +1 -1
  109. data/ref/ruby/files/lib/ruby-vpi/erb_rb.html +1 -1
  110. data/ref/ruby/files/lib/ruby-vpi/float_rb.html +1 -1
  111. data/ref/ruby/files/lib/ruby-vpi/integer_rb.html +1 -1
  112. data/ref/ruby/files/lib/ruby-vpi/rake_rb.html +1 -1
  113. data/ref/ruby/files/lib/ruby-vpi/rcov_rb.html +1 -1
  114. data/ref/ruby/files/lib/ruby-vpi/rdoc_rb.html +1 -1
  115. data/ref/ruby/files/lib/ruby-vpi/runner_boot_loader_rb.html +1 -1
  116. data/ref/ruby/files/lib/ruby-vpi/runner_proxy_rb.html +1 -1
  117. data/ref/ruby/files/lib/ruby-vpi/runner_rb.html +1 -1
  118. data/ref/ruby/files/lib/ruby-vpi/util_rb.html +1 -1
  119. data/ref/ruby/files/lib/ruby-vpi/verilog_parser_rb.html +1 -1
  120. data/ref/ruby/files/lib/ruby-vpi/vpi_rb.html +8 -1
  121. data/ref/ruby/files/lib/ruby-vpi_rb.html +1 -1
  122. data/ref/ruby/fr_method_index.html +19 -16
  123. data/samp/register_file/register_file.v +1 -1
  124. data/samp/register_file/register_file_spec.rb +9 -5
  125. metadata +42 -38
  126. data/ref/ruby/classes/Vpi/S_vpi_time.src/M000056.html +0 -19
data/ext/swig_wrap.cin CHANGED
@@ -1529,24 +1529,23 @@ SWIG_Ruby_SetModule(swig_module_info *pointer)
1529
1529
  #define SWIGTYPE_p_f_p_struct_t_cb_data__int swig_types[2]
1530
1530
  #define SWIGTYPE_p_int swig_types[3]
1531
1531
  #define SWIGTYPE_p_p_char swig_types[4]
1532
- #define SWIGTYPE_p_p_f___void swig_types[5]
1533
- #define SWIGTYPE_p_s_vpi_value_value swig_types[6]
1534
- #define SWIGTYPE_p_short swig_types[7]
1535
- #define SWIGTYPE_p_t_cb_data swig_types[8]
1536
- #define SWIGTYPE_p_t_vpi_delay swig_types[9]
1537
- #define SWIGTYPE_p_t_vpi_error_info swig_types[10]
1538
- #define SWIGTYPE_p_t_vpi_strengthval swig_types[11]
1539
- #define SWIGTYPE_p_t_vpi_systf_data swig_types[12]
1540
- #define SWIGTYPE_p_t_vpi_time swig_types[13]
1541
- #define SWIGTYPE_p_t_vpi_value swig_types[14]
1542
- #define SWIGTYPE_p_t_vpi_vecval swig_types[15]
1543
- #define SWIGTYPE_p_t_vpi_vlog_info swig_types[16]
1544
- #define SWIGTYPE_p_unsigned_char swig_types[17]
1545
- #define SWIGTYPE_p_unsigned_int swig_types[18]
1546
- #define SWIGTYPE_p_unsigned_short swig_types[19]
1547
- #define SWIGTYPE_p_void swig_types[20]
1548
- static swig_type_info *swig_types[22];
1549
- static swig_module_info swig_module = {swig_types, 21, 0, 0, 0, 0};
1532
+ #define SWIGTYPE_p_s_vpi_value_value swig_types[5]
1533
+ #define SWIGTYPE_p_short swig_types[6]
1534
+ #define SWIGTYPE_p_t_cb_data swig_types[7]
1535
+ #define SWIGTYPE_p_t_vpi_delay swig_types[8]
1536
+ #define SWIGTYPE_p_t_vpi_error_info swig_types[9]
1537
+ #define SWIGTYPE_p_t_vpi_strengthval swig_types[10]
1538
+ #define SWIGTYPE_p_t_vpi_systf_data swig_types[11]
1539
+ #define SWIGTYPE_p_t_vpi_time swig_types[12]
1540
+ #define SWIGTYPE_p_t_vpi_value swig_types[13]
1541
+ #define SWIGTYPE_p_t_vpi_vecval swig_types[14]
1542
+ #define SWIGTYPE_p_t_vpi_vlog_info swig_types[15]
1543
+ #define SWIGTYPE_p_unsigned_char swig_types[16]
1544
+ #define SWIGTYPE_p_unsigned_int swig_types[17]
1545
+ #define SWIGTYPE_p_unsigned_short swig_types[18]
1546
+ #define SWIGTYPE_p_void swig_types[19]
1547
+ static swig_type_info *swig_types[21];
1548
+ static swig_module_info swig_module = {swig_types, 20, 0, 0, 0, 0};
1550
1549
  #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
1551
1550
  #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
1552
1551
 
@@ -6086,24 +6085,6 @@ fail:
6086
6085
  }
6087
6086
 
6088
6087
 
6089
- SWIGINTERN VALUE
6090
- vlog_startup_routines_get(VALUE self) {
6091
- VALUE _val;
6092
-
6093
- _val = SWIG_NewPointerObj(SWIG_as_voidptr(vlog_startup_routines), SWIGTYPE_p_p_f___void, 0 );
6094
- return _val;
6095
- }
6096
-
6097
-
6098
- SWIGINTERN VALUE
6099
- vlog_startup_routines_set(VALUE self, VALUE _val) {
6100
- SWIG_exception_fail(SWIG_ArgError(SWIG_AttributeError), "in variable '""read-only vlog_startup_routines""' of type '""void (*[])()""'");
6101
- return _val;
6102
- fail:
6103
- return Qnil;
6104
- }
6105
-
6106
-
6107
6088
 
6108
6089
  /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
6109
6090
 
@@ -6112,7 +6093,6 @@ static swig_type_info _swigt__p_f_p_char__int = {"_p_f_p_char__int", "int (*)(ch
6112
6093
  static swig_type_info _swigt__p_f_p_struct_t_cb_data__int = {"_p_f_p_struct_t_cb_data__int", "int (*)(struct t_cb_data *)|PLI_INT32 (*)(struct t_cb_data *)", 0, 0, (void*)0, 0};
6113
6094
  static swig_type_info _swigt__p_int = {"_p_int", "int *|PLI_INT32 *", 0, 0, (void*)0, 0};
6114
6095
  static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **|PLI_BYTE8 **", 0, 0, (void*)0, 0};
6115
- static swig_type_info _swigt__p_p_f___void = {"_p_p_f___void", "void (**)()", 0, 0, (void*)0, 0};
6116
6096
  static swig_type_info _swigt__p_s_vpi_value_value = {"_p_s_vpi_value_value", "s_vpi_value_value *", 0, 0, (void*)0, 0};
6117
6097
  static swig_type_info _swigt__p_short = {"_p_short", "short *|PLI_INT16 *", 0, 0, (void*)0, 0};
6118
6098
  static swig_type_info _swigt__p_t_cb_data = {"_p_t_cb_data", "struct t_cb_data *|p_cb_data", 0, 0, (void*)0, 0};
@@ -6135,7 +6115,6 @@ static swig_type_info *swig_type_initial[] = {
6135
6115
  &_swigt__p_f_p_struct_t_cb_data__int,
6136
6116
  &_swigt__p_int,
6137
6117
  &_swigt__p_p_char,
6138
- &_swigt__p_p_f___void,
6139
6118
  &_swigt__p_s_vpi_value_value,
6140
6119
  &_swigt__p_short,
6141
6120
  &_swigt__p_t_cb_data,
@@ -6158,7 +6137,6 @@ static swig_cast_info _swigc__p_f_p_char__int[] = { {&_swigt__p_f_p_char__int,
6158
6137
  static swig_cast_info _swigc__p_f_p_struct_t_cb_data__int[] = { {&_swigt__p_f_p_struct_t_cb_data__int, 0, 0, 0},{0, 0, 0, 0}};
6159
6138
  static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
6160
6139
  static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
6161
- static swig_cast_info _swigc__p_p_f___void[] = { {&_swigt__p_p_f___void, 0, 0, 0},{0, 0, 0, 0}};
6162
6140
  static swig_cast_info _swigc__p_s_vpi_value_value[] = { {&_swigt__p_s_vpi_value_value, 0, 0, 0},{0, 0, 0, 0}};
6163
6141
  static swig_cast_info _swigc__p_short[] = { {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}};
6164
6142
  static swig_cast_info _swigc__p_t_cb_data[] = { {&_swigt__p_t_cb_data, 0, 0, 0},{0, 0, 0, 0}};
@@ -6181,7 +6159,6 @@ static swig_cast_info *swig_cast_initial[] = {
6181
6159
  _swigc__p_f_p_struct_t_cb_data__int,
6182
6160
  _swigc__p_int,
6183
6161
  _swigc__p_p_char,
6184
- _swigc__p_p_f___void,
6185
6162
  _swigc__p_s_vpi_value_value,
6186
6163
  _swigc__p_short,
6187
6164
  _swigc__p_t_cb_data,
@@ -7101,8 +7078,6 @@ SWIGEXPORT void Init_vpi(void) {
7101
7078
  rb_define_module_function(mVpi, "vpi_mcd_flush", _wrap_vpi_mcd_flush, -1);
7102
7079
  rb_define_module_function(mVpi, "vpi_control", _wrap_vpi_control, -1);
7103
7080
  rb_define_module_function(mVpi, "vpi_handle_by_multi_index", _wrap_vpi_handle_by_multi_index, -1);
7104
- rb_define_singleton_method(mVpi, "vlog_startup_routines", vlog_startup_routines_get, 0);
7105
- rb_define_singleton_method(mVpi, "vlog_startup_routines=", vlog_startup_routines_set, 1);
7106
7081
  rb_define_const(mVpi, "Vlog_relay_ruby", SWIG_NewFunctionPtrObj((void *)vlog_relay_ruby, SWIGTYPE_p_f_p_struct_t_cb_data__int));
7107
7082
  }
7108
7083
 
@@ -0,0 +1 @@
1
+ acc=read_write,write_net,force:*
@@ -26,7 +26,7 @@ require 'ruby-vpi/util'
26
26
  end
27
27
 
28
28
  # auto-detect and set default parameters
29
- runnerPath = caller.reject {|s| s =~ /:in \`/}.first.rstrip_from(':')
29
+ runnerPath = caller.grep(/runner.rake/).first.rstrip_from(':')
30
30
  @target = File.basename(runnerPath).rstrip_from('_')
31
31
 
32
32
  task :setup
@@ -55,6 +55,9 @@ require 'ruby-vpi/util'
55
55
  ENV['RUBYVPI_BOOT_LOADER'] = File.join(File.dirname(__FILE__), 'runner_boot_loader.rb')
56
56
  ENV['RUBYVPI_BOOT_TARGET'] = @target
57
57
 
58
+ # check if the machine is 64-bit
59
+ @archIs64 = -1.size == 8
60
+
58
61
 
59
62
  require 'rake/clean'
60
63
  require 'ruby-vpi'
@@ -66,7 +69,7 @@ LOADER_FUNC = 'vlog_startup_routines_bootstrap'
66
69
 
67
70
  # Returns the path to the Ruby-VPI object file for the given simulator.
68
71
  def object_file_path aSimId # :nodoc:
69
- path = File.join(OBJECT_PATH, aSimId.to_s)
72
+ path = File.expand_path File.join(OBJECT_PATH, "#{aSimId}.so")
70
73
 
71
74
  unless File.exist? path
72
75
  raise "Object file #{path.inspect} is missing. Rebuild Ruby-VPI."
@@ -76,7 +79,7 @@ def object_file_path aSimId # :nodoc:
76
79
  end
77
80
 
78
81
  # Returns an array of include-directory options.
79
- def expand_include_dir_options aSimId # :nodoc:
82
+ def expand_incdir_options aSimId # :nodoc:
80
83
  prefix = aSimId == :ivl ? '-I' : '+incdir+'
81
84
  @incdirs.map {|i| prefix + i}
82
85
  end
@@ -91,7 +94,11 @@ end
91
94
 
92
95
  desc "Simulate with #{RubyVPI::SIMULATORS[:cver].name}."
93
96
  task :cver => :setup do
94
- sh 'cver', SIMULATOR_ARGUMENTS[:cver], "+loadvpi=#{object_file_path(:cver)}:#{LOADER_FUNC}", expand_include_dir_options(:cver), @sources
97
+ sh 'cver',
98
+ "+loadvpi=#{object_file_path(:cver)}:#{LOADER_FUNC}",
99
+ SIMULATOR_ARGUMENTS[:cver],
100
+ expand_incdir_options(:cver),
101
+ @sources
95
102
  end
96
103
 
97
104
  CLOBBER.include 'verilog.log'
@@ -100,7 +107,10 @@ CLOBBER.include 'verilog.log'
100
107
  desc "Simulate with #{RubyVPI::SIMULATORS[:ivl].name}."
101
108
  task :ivl => :setup do
102
109
  cp object_file_path(:ivl), 'ruby-vpi.vpi'
103
- sh 'iverilog', SIMULATOR_ARGUMENTS[:ivl], '-mruby-vpi', expand_include_dir_options(:ivl), @sources
110
+ sh %w[iverilog -mruby-vpi],
111
+ SIMULATOR_ARGUMENTS[:ivl],
112
+ expand_incdir_options(:ivl),
113
+ @sources
104
114
  sh 'vvp -M. a.out'
105
115
  end
106
116
 
@@ -109,7 +119,13 @@ CLEAN.include 'ruby-vpi.vpi', 'a.out'
109
119
 
110
120
  desc "Simulate with #{RubyVPI::SIMULATORS[:vcs].name}."
111
121
  task :vcs => :setup do
112
- sh %w(vcs -R +v2k +vpi), SIMULATOR_ARGUMENTS[:vcs], '-load', "#{object_file_path(:vcs)}:#{LOADER_FUNC}", expand_include_dir_options(:vcs), @sources
122
+ sh %w[vcs -R +v2k +vpi +cli],
123
+ '-P', File.join(File.dirname(__FILE__), 'pli.tab'),
124
+ '-load', "#{object_file_path(:vcs)}:#{LOADER_FUNC}",
125
+ ('-full64' if @archIs64),
126
+ SIMULATOR_ARGUMENTS[:vcs],
127
+ expand_incdir_options(:vcs),
128
+ @sources
113
129
  end
114
130
 
115
131
  CLEAN.include 'csrc', 'simv*'
@@ -118,17 +134,25 @@ CLEAN.include 'csrc', 'simv*'
118
134
  desc "Simulate with #{RubyVPI::SIMULATORS[:vsim].name}."
119
135
  task :vsim => :setup do
120
136
  sh 'vlib work'
121
- sh 'vlog', expand_include_dir_options(:vsim), @sources
122
- sh 'vsim', SIMULATOR_ARGUMENTS[:vsim], '-c', @target, '-pli', object_file_path(:vsim), '-do', 'run -all'
137
+ sh 'vlog', expand_incdir_options(:vsim), @sources
138
+ sh %w[vsim -do run\ -all],
139
+ '-pli', object_file_path(:vsim),
140
+ '-c', @target,
141
+ SIMULATOR_ARGUMENTS[:vsim]
123
142
  end
124
143
 
125
- CLEAN.include 'work'
144
+ CLEAN.include 'work', 'vsim.wlf'
126
145
  CLOBBER.include 'transcript'
127
146
 
128
147
 
129
148
  desc "Simulate with #{RubyVPI::SIMULATORS[:ncsim].name}."
130
149
  task :ncsim => :setup do
131
- sh 'ncverilog', SIMULATOR_ARGUMENTS[:ncsim], "+loadvpi=#{object_file_path(:ncsim)}:#{LOADER_FUNC}", '+access+rwc', expand_include_dir_options(:ncsim), @sources
150
+ sh %w[ncverilog +access+rwc +plinowarn],
151
+ "+loadvpi=#{object_file_path(:ncsim)}:#{LOADER_FUNC}",
152
+ ('+nc64bit' if @archIs64),
153
+ SIMULATOR_ARGUMENTS[:ncsim],
154
+ expand_incdir_options(:ncsim),
155
+ @sources
132
156
  end
133
157
 
134
158
  CLEAN.include 'INCA_libs'