origen_testers 0.52.15 → 0.53.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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/config/version.rb +2 -2
  3. data/lib/commands/build.rb +2 -2
  4. data/lib/commands/convert.rb +1 -1
  5. data/lib/commands/run.rb +2 -2
  6. data/lib/origen_testers/api.rb +3 -0
  7. data/lib/origen_testers/atp/ast/node.rb +1 -2
  8. data/lib/origen_testers/atp/flow.rb +36 -24
  9. data/lib/origen_testers/atp/flow_api.rb +1 -0
  10. data/lib/origen_testers/atp/parser.rb +6 -4
  11. data/lib/origen_testers/atp/processor.rb +1 -0
  12. data/lib/origen_testers/atp/processors/on_pass_fail_remover.rb +1 -0
  13. data/lib/origen_testers/atp/processors/relationship.rb +2 -4
  14. data/lib/origen_testers/atp/runner.rb +1 -0
  15. data/lib/origen_testers/callback_handlers.rb +1 -0
  16. data/lib/origen_testers/charz/profile.rb +7 -7
  17. data/lib/origen_testers/charz/routines/search_routine.rb +1 -0
  18. data/lib/origen_testers/charz/session.rb +1 -1
  19. data/lib/origen_testers/charz.rb +14 -10
  20. data/lib/origen_testers/command_based_tester.rb +1 -2
  21. data/lib/origen_testers/decompiler/nodes.rb +1 -1
  22. data/lib/origen_testers/decompiler/pattern/enumerable_ext.rb +1 -1
  23. data/lib/origen_testers/decompiler/pattern/splitter.rb +0 -2
  24. data/lib/origen_testers/decompiler/pattern.rb +2 -1
  25. data/lib/origen_testers/flow.rb +2 -3
  26. data/lib/origen_testers/generator/identity_map.rb +1 -1
  27. data/lib/origen_testers/generator/test_numberer.rb +1 -3
  28. data/lib/origen_testers/generator.rb +4 -2
  29. data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +1 -1
  30. data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +1 -1
  31. data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +1 -1
  32. data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +1 -1
  33. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +11 -17
  34. data/lib/origen_testers/igxl_based_tester/base/generator.rb +17 -2
  35. data/lib/origen_testers/igxl_based_tester/base/global_specs.rb +1 -1
  36. data/lib/origen_testers/igxl_based_tester/base/job.rb +16 -16
  37. data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +2 -2
  38. data/lib/origen_testers/igxl_based_tester/base/levelset.rb +2 -5
  39. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +1 -3
  40. data/lib/origen_testers/igxl_based_tester/base/patset.rb +0 -1
  41. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +0 -1
  42. data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +13 -14
  43. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +2 -2
  44. data/lib/origen_testers/igxl_based_tester/base/timesets.rb +1 -1
  45. data/lib/origen_testers/igxl_based_tester/base/timesets_basic.rb +1 -1
  46. data/lib/origen_testers/igxl_based_tester/base.rb +16 -19
  47. data/lib/origen_testers/igxl_based_tester/decompiler/atp.rb +12 -20
  48. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +1 -2
  49. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +1 -2
  50. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +1 -2
  51. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +7 -8
  52. data/lib/origen_testers/igxl_based_tester/j750.rb +3 -2
  53. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +5 -6
  54. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +1 -1
  55. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +18 -20
  56. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +2 -2
  57. data/lib/origen_testers/igxl_based_tester/parser.rb +12 -12
  58. data/lib/origen_testers/igxl_based_tester/ultraflex/ate_hardware.rb +55 -55
  59. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +1 -2
  60. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +1 -2
  61. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +9 -10
  62. data/lib/origen_testers/igxl_based_tester/ultraflex.rb +12 -14
  63. data/lib/origen_testers/igxl_based_tester.rb +1 -1
  64. data/lib/origen_testers/interface.rb +8 -8
  65. data/lib/origen_testers/labview_based_tester/pxie6570.rb +2 -0
  66. data/lib/origen_testers/labview_based_tester.rb +2 -2
  67. data/lib/origen_testers/origen_ext/pins/pin.rb +6 -5
  68. data/lib/origen_testers/origen_ext/pins/pin_collection.rb +6 -6
  69. data/lib/origen_testers/parser/searchable_array.rb +2 -2
  70. data/lib/origen_testers/parser/searchable_hash.rb +2 -2
  71. data/lib/origen_testers/parser.rb +1 -1
  72. data/lib/origen_testers/pattern_compilers/assembler.rb +3 -1
  73. data/lib/origen_testers/pattern_compilers/base.rb +5 -4
  74. data/lib/origen_testers/pattern_compilers/igxl_based.rb +9 -3
  75. data/lib/origen_testers/pattern_compilers/j750.rb +4 -3
  76. data/lib/origen_testers/pattern_compilers/ultraflex.rb +4 -3
  77. data/lib/origen_testers/pattern_compilers/v93k.rb +28 -31
  78. data/lib/origen_testers/pattern_compilers.rb +1 -0
  79. data/lib/origen_testers/program_generators.rb +6 -0
  80. data/lib/origen_testers/smartest_based_tester/base/flow.rb +29 -26
  81. data/lib/origen_testers/smartest_based_tester/base/generator.rb +2 -0
  82. data/lib/origen_testers/smartest_based_tester/base/limits_file.rb +2 -2
  83. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +3 -3
  84. data/lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb +1 -1
  85. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +3 -0
  86. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +1 -1
  87. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +1 -1
  88. data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +1 -1
  89. data/lib/origen_testers/smartest_based_tester/base.rb +11 -13
  90. data/lib/origen_testers/smartest_based_tester/decompiler/avc.rb +5 -10
  91. data/lib/origen_testers/smartest_based_tester/decompiler/nodes.rb +1 -1
  92. data/lib/origen_testers/smartest_based_tester/decompiler.rb +1 -0
  93. data/lib/origen_testers/smartest_based_tester/smt8.rb +5 -6
  94. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +1 -2
  95. data/lib/origen_testers/smartest_based_tester/v93k.rb +1 -1
  96. data/lib/origen_testers/smartest_based_tester/v93k_smt8/shmoo_test.rb +3 -2
  97. data/lib/origen_testers/smartest_based_tester/v93k_smt8/test_suite.rb +5 -4
  98. data/lib/origen_testers/smartest_based_tester/v93k_smt8.rb +1 -1
  99. data/lib/origen_testers/stil_based_tester/base.rb +6 -7
  100. data/lib/origen_testers/test/custom_test_interface.rb +7 -7
  101. data/lib/origen_testers/test/dut.rb +23 -22
  102. data/lib/origen_testers/test/interface.rb +9 -7
  103. data/lib/origen_testers/test/nvm.rb +3 -3
  104. data/lib/origen_testers/timing/timeset.rb +0 -2
  105. data/lib/origen_testers/timing/timing_api.rb +2 -3
  106. data/lib/origen_testers/vector.rb +6 -5
  107. data/lib/origen_testers/vector_generator.rb +9 -3
  108. data/lib/origen_testers.rb +1 -1
  109. metadata +7 -23
@@ -7,8 +7,7 @@ module OrigenTesters
7
7
  PATSUBR_ATTRS = %w(file_name comment)
8
8
 
9
9
  # Pattern subroutine defaults
10
- PATSUBR_DEFAULTS = {
11
- }
10
+ PATSUBR_DEFAULTS = {}
12
11
 
13
12
  # Generate the instance method definitions based on the above
14
13
  define
@@ -19,8 +19,7 @@ module OrigenTesters
19
19
  timeset: :time_sets,
20
20
  timesets: :time_sets,
21
21
 
22
- other: {
23
- },
22
+ other: {},
24
23
 
25
24
  empty: {
26
25
  start_func: :arg0,
@@ -634,10 +633,10 @@ module OrigenTesters
634
633
  # instance.set_wait_flags(:a)
635
634
  # instance.set_wait_flags(:a, :c)
636
635
  def set_wait_flags(*flags)
637
- a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X'
638
- b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X'
639
- c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X'
640
- d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X'
636
+ a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
637
+ b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
638
+ c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
639
+ d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
641
640
  self.wait_flags = d + c + b + a
642
641
  self
643
642
  end
@@ -658,9 +657,9 @@ module OrigenTesters
658
657
  # intended to be used in documentation
659
658
  def to_meta
660
659
  return @meta if @meta
660
+
661
661
  m = { 'Test' => name,
662
- 'Type' => type
663
- }
662
+ 'Type' => type }
664
663
  if type == :functional
665
664
  m['Pattern'] = pattern
666
665
  elsif type == :board_pmu || type == :pin_pmu
@@ -12,7 +12,7 @@ module OrigenTesters
12
12
  # Also note that this class inherits from the base Tester class and so all methods
13
13
  # described there are also available.
14
14
  class J750 < Base
15
- require 'origen_testers/igxl_based_tester/j750/generator.rb'
15
+ require 'origen_testers/igxl_based_tester/j750/generator'
16
16
 
17
17
  attr_accessor :use_hv_pin
18
18
  attr_accessor :software_version
@@ -20,6 +20,7 @@ module OrigenTesters
20
20
  def self.hpt_mode
21
21
  @@hpt_mode
22
22
  end
23
+
23
24
  def self.hpt_mode?
24
25
  @@hpt_mode
25
26
  end
@@ -245,7 +246,7 @@ module OrigenTesters
245
246
  def handshake(options = {})
246
247
  options = {
247
248
  readcode: false,
248
- manual_stop: false, # set a 2nd CPU flag in case 1st flag is automatically cleared
249
+ manual_stop: false # set a 2nd CPU flag in case 1st flag is automatically cleared
249
250
  }.merge(options)
250
251
  if options[:readcode]
251
252
  set_code(options[:readcode])
@@ -19,8 +19,7 @@ module OrigenTesters
19
19
  timeset: :time_sets,
20
20
  timesets: :time_sets,
21
21
 
22
- other: {
23
- },
22
+ other: {},
24
23
 
25
24
  empty: {
26
25
  start_func: :arg0,
@@ -586,10 +585,10 @@ module OrigenTesters
586
585
  # instance.set_wait_flags(:a)
587
586
  # instance.set_wait_flags(:a, :c)
588
587
  def set_wait_flags(*flags)
589
- a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X'
590
- b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X'
591
- c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X'
592
- d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X'
588
+ a = (flags.include?(:a) || flags.include?(:a)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
589
+ b = (flags.include?(:b) || flags.include?(:b)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
590
+ c = (flags.include?(:c) || flags.include?(:c)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
591
+ d = (flags.include?(:d) || flags.include?(:d)) ? '1' : 'X' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
593
592
  self.wait_flags = d + c + b + a
594
593
  self
595
594
  end
@@ -12,7 +12,7 @@ module OrigenTesters
12
12
  # *Also note that this class inherits from the base Tester class and so all methods
13
13
  # described there are also available*
14
14
  class J750_HPT < J750
15
- require 'origen_testers/igxl_based_tester/j750_hpt/generator.rb'
15
+ require 'origen_testers/igxl_based_tester/j750_hpt/generator'
16
16
 
17
17
  def initialize(options = {})
18
18
  super(options)
@@ -13,6 +13,7 @@ module OrigenTesters
13
13
  # All descriptions are stored in this lookup table
14
14
  def lookup
15
15
  return @lookup if @lookup
16
+
16
17
  # Use the one from the interface if present, program generation will
17
18
  # automatically push descriptions in here
18
19
  if Origen.interface_present?
@@ -26,7 +27,6 @@ module OrigenTesters
26
27
  @parser = options[:parser]
27
28
  FileUtils.rm_rf(SCRATCH_DIR) if File.exist?(SCRATCH_DIR)
28
29
  parse_program
29
- true
30
30
  end
31
31
 
32
32
  # Returns the description for the given flow
@@ -57,11 +57,11 @@ module OrigenTesters
57
57
  end
58
58
  end
59
59
 
60
- def source_directories
60
+ def source_directories # rubocop:disable Lint/DuplicateMethods
61
61
  [@source_directories, Origen.config.test_program_source_directory].compact.flatten
62
62
  end
63
63
 
64
- def template_directories
64
+ def template_directories # rubocop:disable Lint/DuplicateMethods
65
65
  [@template_directories, Origen.config.test_program_template_directory].compact.flatten
66
66
  end
67
67
 
@@ -151,8 +151,8 @@ module OrigenTesters
151
151
  markup_source_file_comments
152
152
  # Compile the flow file, with Ruby comments now preserved and marked up
153
153
  desc = Origen.app.runner.generate(program: true, patterns: ungenerated_dir, output: generated_dir,
154
- check_for_changes: false, collect_stats: false, quiet: true,
155
- collect_descriptions: true)
154
+ check_for_changes: false, collect_stats: false, quiet: true,
155
+ collect_descriptions: true)
156
156
  Origen.log.info ''
157
157
  end
158
158
  @program_generated = true
@@ -172,7 +172,7 @@ module OrigenTesters
172
172
  markup_template_comments
173
173
  # Compile the flow file, with Ruby comments now preserved and marked up
174
174
  Origen.app.runner.generate(compile: true, patterns: uncompiled_dir, output: compiled_dir,
175
- check_for_changes: false, collect_stats: false, quiet: true)
175
+ check_for_changes: false, collect_stats: false, quiet: true)
176
176
  Origen.log.info ''
177
177
  end
178
178
  @program_compiled = true
@@ -251,8 +251,7 @@ module OrigenTesters
251
251
  # templates to
252
252
  def flow_or_instance_file?(file, options = {})
253
253
  options = { flow: true,
254
- instance: true
255
- }.merge(options)
254
+ instance: true }.merge(options)
256
255
  if options[:flow] && options[:instance]
257
256
  match = 'Flow|Instances'
258
257
  elsif options[:flow]
@@ -263,19 +262,18 @@ module OrigenTesters
263
262
  # Not sure the best way to determine the file type of a partial, just
264
263
  # return true for now to play it safe
265
264
  return true if file.basename.to_s =~ /^_/
265
+
266
266
  File.readlines(file).each do |line|
267
- begin
268
- unless line =~ /^%/ || line =~ /^\s*<comment>/
269
- return !!(line =~ /#{match}/)
270
- end
271
- rescue Exception => e
272
- if e.is_a?(ArgumentError) && e.message =~ /invalid byte sequence/
273
- return false
274
- else
275
- puts e.message
276
- puts e.backtrace
277
- exit 1
278
- end
267
+ unless line =~ /^%/ || line =~ /^\s*<comment>/
268
+ return !!(line =~ /#{match}/)
269
+ end
270
+ rescue Exception => e
271
+ if e.is_a?(ArgumentError) && e.message =~ /invalid byte sequence/
272
+ return false
273
+ else
274
+ puts e.message
275
+ puts e.backtrace
276
+ exit 1
279
277
  end
280
278
  end
281
279
  end
@@ -392,10 +392,10 @@ module OrigenTesters
392
392
 
393
393
  # Returns an array of all pattern names referenced in this test instance
394
394
  def patterns
395
- if self.respond_to?(:pattern)
395
+ if respond_to?(:pattern)
396
396
  pattern.split(',').map do |pat|
397
397
  extract_pattern_from_patset(pat)
398
- end.flatten.map { |pat| pat.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
398
+ end.flatten.map { |pat| pat.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') } # rubocop:disable Style/MultilineBlockChain
399
399
  end
400
400
  end
401
401
 
@@ -1,18 +1,18 @@
1
1
  module OrigenTesters
2
2
  class IGXLBasedTester
3
3
  class Parser
4
- autoload :Flows, 'origen_testers/igxl_based_tester/parser/flows'
5
- autoload :Flow, 'origen_testers/igxl_based_tester/parser/flow'
6
- autoload :FlowLine, 'origen_testers/igxl_based_tester/parser/flow_line'
7
- autoload :TestInstances, 'origen_testers/igxl_based_tester/parser/test_instances'
8
- autoload :TestInstance, 'origen_testers/igxl_based_tester/parser/test_instance'
9
- autoload :PatternSets, 'origen_testers/igxl_based_tester/parser/pattern_sets'
10
- autoload :PatternSet, 'origen_testers/igxl_based_tester/parser/pattern_set'
11
- autoload :DCSpecs, 'origen_testers/igxl_based_tester/parser/dc_specs'
12
- autoload :DCSpec, 'origen_testers/igxl_based_tester/parser/dc_spec'
13
- autoload :ACSpecs, 'origen_testers/igxl_based_tester/parser/ac_specs'
14
- autoload :ACSpec, 'origen_testers/igxl_based_tester/parser/ac_spec'
15
- autoload :Descriptions, 'origen_testers/igxl_based_tester/parser/descriptions'
4
+ autoload :Flows, 'origen_testers/igxl_based_tester/parser/flows'
5
+ autoload :Flow, 'origen_testers/igxl_based_tester/parser/flow'
6
+ autoload :FlowLine, 'origen_testers/igxl_based_tester/parser/flow_line'
7
+ autoload :TestInstances, 'origen_testers/igxl_based_tester/parser/test_instances'
8
+ autoload :TestInstance, 'origen_testers/igxl_based_tester/parser/test_instance'
9
+ autoload :PatternSets, 'origen_testers/igxl_based_tester/parser/pattern_sets'
10
+ autoload :PatternSet, 'origen_testers/igxl_based_tester/parser/pattern_set'
11
+ autoload :DCSpecs, 'origen_testers/igxl_based_tester/parser/dc_specs'
12
+ autoload :DCSpec, 'origen_testers/igxl_based_tester/parser/dc_spec'
13
+ autoload :ACSpecs, 'origen_testers/igxl_based_tester/parser/ac_specs'
14
+ autoload :ACSpec, 'origen_testers/igxl_based_tester/parser/ac_spec'
15
+ autoload :Descriptions, 'origen_testers/igxl_based_tester/parser/descriptions'
16
16
 
17
17
  def reset
18
18
  @flows = nil
@@ -18,7 +18,7 @@ module OrigenTesters
18
18
  forcei_50mA__lte_20mA: (-1.V..6.V),
19
19
  forcei_Non50mA__half_scale: (-1..6.V),
20
20
  forcei_Non50mA__full_scale: (-1.V..5.5.V) }
21
- measi = [2.uA, 20.uA, 200.uA, 2.mA, 50.mA]
21
+ measi = [2.uA, 20.uA, 200.uA, 2.mA, 50.mA]
22
22
  measv = { measi_50mA__gt_20mA: (-0.1.V..4.5.V),
23
23
  measi_50mA__lte_20mA: (-1.V..6.V),
24
24
  measi_20mA__0p5mA_to_20mA: (-1.V..5.5.V),
@@ -40,7 +40,7 @@ module OrigenTesters
40
40
  forcei_50mA__n35mA_to_n20mA: (0.5.V..5.1.V),
41
41
  forcei_50mA__n50mA_to_n35mA: (1.1.V..4.5.V),
42
42
  forcei_Non50mA: (-1.V..6.V) }
43
- measi = [2.uA, 20.uA, 200.uA, 2.mA, 50.mA]
43
+ measi = [2.uA, 20.uA, 200.uA, 2.mA, 50.mA]
44
44
  measv = { measi_50mA: (-1.V..6.V),
45
45
  measi_200uA: (-1.V..6.V),
46
46
  measi_20uA: (-1.V..6.V),
@@ -51,7 +51,7 @@ module OrigenTesters
51
51
  ppmu.new(forcei, forcev, measi, measv, vclamp)
52
52
  elsif @instrument == 'HSD-4G'
53
53
  forcei = [200.uA, 2.mA, 30.mA]
54
- forcev = { measi_30mA: [min: '1.5V, 1.5V - 50mV/mA * Idut', max: '0V, -50mV/mA * Idut'],
54
+ forcev = { measi_30mA: [{ min: '1.5V, 1.5V - 50mV/mA * Idut', max: '0V, -50mV/mA * Idut' }],
55
55
  measi_2mA: (-1.V..1.5.V),
56
56
  measi_200uA: (-1.V..1.5.V) }
57
57
  measi = [200.uA, 2.mA, 30.mA]
@@ -72,8 +72,8 @@ module OrigenTesters
72
72
  vclamp = (-1.3.V..3.9.V)
73
73
  ppmu.new(forcei, forcev, measi, measv, vclamp)
74
74
  else
75
- puts "please enter an instrument type: e.g. $tester.ate_hardware(\"HSD-M\").ppmu"
76
- puts "Instrument type available: \"HSD-M\", \"HSD-U\", \"HSD-4G\", and \"HSS-6G\" "
75
+ puts 'please enter an instrument type: e.g. $tester.ate_hardware("HSD-M").ppmu'
76
+ puts 'Instrument type available: "HSD-M", "HSD-U", "HSD-4G", and "HSS-6G" '
77
77
  puts 'HSD-U is also known as Ultrapin1600. HSS-6G is also known as SB6G.'
78
78
  end
79
79
  end
@@ -82,7 +82,7 @@ module OrigenTesters
82
82
  supply = Struct.new(:forcev, :irange, :source_overload_i, :source_overload_t, :source_fold_i,
83
83
  :source_fold_t, :sink_overload_i, :sink_overload_t, :sink_fold_i,
84
84
  :sink_fold_t, :meter_irange, :meter_vrange, :tdelay, :accuracy,
85
- :filter, :bandwidth)
85
+ :filter, :bandwidth) # rubocop:disable Lint/StructNewOverride
86
86
  if @instrument == 'VSM'
87
87
  forcev = (0.V..4.V)
88
88
  irange = [1.A, 11.A, 21.A, 51.A, 81.A]
@@ -98,17 +98,17 @@ module OrigenTesters
98
98
  irange_51A: (2.55.A..52.53.A),
99
99
  irange_81A: (4.05.A..83.43.A) }
100
100
  source_fold_t = (10.uS..8.S)
101
- sink_overload_i = { irange_1A: [max: 78.mA], # ????? Not programmable?
102
- irange_11A: [max: 858.mA], # ????? Not programmable?
103
- irange_21A: [max: 1.64.A], # ????? Not programmable?
104
- irange_51A: [max: 3.98.A], # ????? Not programmable?
105
- irange_81A: [max: 6.32.A] } # ????? Not programmable?
101
+ sink_overload_i = { irange_1A: [{ max: 78.mA }], # ????? Not programmable?
102
+ irange_11A: [{ max: 858.mA }], # ????? Not programmable?
103
+ irange_21A: [{ max: 1.64.A }], # ????? Not programmable?
104
+ irange_51A: [{ max: 3.98.A }], # ????? Not programmable?
105
+ irange_81A: [{ max: 6.32.A }] } # ????? Not programmable?
106
106
  sink_overload_t = 0 # ????? Not programmable?
107
- sink_fold_i = { irange_1A: [max: 78.mA], # ????? Not programmable?
108
- irange_11A: [max: 858.mA], # ????? Not programmable?
109
- irange_21A: [max: 1.64.A], # ????? Not programmable?
110
- irange_51A: [max: 3.98.A], # ????? Not programmable?
111
- irange_81A: [max: 6.32.A] } # ????? Not programmable?
107
+ sink_fold_i = { irange_1A: [{ max: 78.mA }], # ????? Not programmable?
108
+ irange_11A: [{ max: 858.mA }], # ????? Not programmable?
109
+ irange_21A: [{ max: 1.64.A }], # ????? Not programmable?
110
+ irange_51A: [{ max: 3.98.A }], # ????? Not programmable?
111
+ irange_81A: [{ max: 6.32.A }] } # ????? Not programmable?
112
112
  sink_fold_t = (10.uS..8.S)
113
113
  meter_irange = { irange_1A: [1.25.A, 2.5.A],
114
114
  irange_11A: [13.75.A, 27.5.A],
@@ -144,23 +144,23 @@ module OrigenTesters
144
144
  irange_102A: (5.1.A..105.06.A),
145
145
  irange_162A: (8.1.A..166.86.A) }
146
146
  source_fold_t = (10.uS..8.S)
147
- sink_overload_i = { irange_1A: [max: 78.mA], # ????? Not programmable?
148
- irange_2A: [max: 156.mA], # ????? Not programmable?
149
- irange_11A: [max: 858.mA], # ????? Not programmable?
150
- irange_21A: [max: 1.64.A], # ????? Not programmable?
151
- irange_51A: [max: 3.98.A], # ????? Not programmable?
152
- irange_81A: [max: 6.32.A], # ????? Not programmable?
153
- irange_102A: [max: 7.96.A], # ????? Not programmable?
154
- irange_162A: [max: 12.64.A] } # ????? Not programmable?
147
+ sink_overload_i = { irange_1A: [{ max: 78.mA }], # ????? Not programmable?
148
+ irange_2A: [{ max: 156.mA }], # ????? Not programmable?
149
+ irange_11A: [{ max: 858.mA }], # ????? Not programmable?
150
+ irange_21A: [{ max: 1.64.A }], # ????? Not programmable?
151
+ irange_51A: [{ max: 3.98.A }], # ????? Not programmable?
152
+ irange_81A: [{ max: 6.32.A }], # ????? Not programmable?
153
+ irange_102A: [{ max: 7.96.A }], # ????? Not programmable?
154
+ irange_162A: [{ max: 12.64.A }] } # ????? Not programmable?
155
155
  sink_overload_t = 0 # ????? Not programmable?
156
- sink_fold_i = { irange_1A: [max: 78.mA], # ????? Not programmable?
157
- irange_2A: [max: 156.mA], # ????? Not programmable?
158
- irange_11A: [max: 858.mA], # ????? Not programmable?
159
- irange_21A: [max: 1.64.A], # ????? Not programmable?
160
- irange_51A: [max: 3.98.A], # ????? Not programmable?
161
- irange_81A: [max: 6.32.A], # ????? Not programmable?
162
- irange_102A: [max: 7.96.A], # ????? Not programmable?
163
- irange_162A: [max: 12.64.A] } # ????? Not programmable?
156
+ sink_fold_i = { irange_1A: [{ max: 78.mA }], # ????? Not programmable?
157
+ irange_2A: [{ max: 156.mA }], # ????? Not programmable?
158
+ irange_11A: [{ max: 858.mA }], # ????? Not programmable?
159
+ irange_21A: [{ max: 1.64.A }], # ????? Not programmable?
160
+ irange_51A: [{ max: 3.98.A }], # ????? Not programmable?
161
+ irange_81A: [{ max: 6.32.A }], # ????? Not programmable?
162
+ irange_102A: [{ max: 7.96.A }], # ????? Not programmable?
163
+ irange_162A: [{ max: 12.64.A }] } # ????? Not programmable?
164
164
  meter_irange = { irange_1A: [1.25.A, 2.5.A],
165
165
  irange_2A: [2.5.A, 5.A],
166
166
  irange_11A: [13.75.A, 27.5.A],
@@ -213,8 +213,8 @@ module OrigenTesters
213
213
  sink_fold_i = { irange_15A: (1.A..2.A),
214
214
  irange_30A: (2.A..4.A) }
215
215
  sink_fold_t = (102.4.uS..5.S)
216
- meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
217
- irange_30A: [30.A] } # This is verified to be correct on tester.
216
+ meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
217
+ irange_30A: [30.A] } # This is verified to be correct on tester.
218
218
  meter_vrange = [4.V, 8.V]
219
219
  tdelay = 0 # default tdelay
220
220
  accuracy = { neg: -7.mV, pos: 7.mV }
@@ -238,8 +238,8 @@ module OrigenTesters
238
238
  sink_fold_i = { irange_15A: (1.A..2.A),
239
239
  irange_60A: (4.A..8.A) }
240
240
  sink_fold_t = (102.4.uS..5.S)
241
- meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
242
- irange_60A: [60.A] } # This is verified to be correct on tester.
241
+ meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
242
+ irange_60A: [60.A] } # This is verified to be correct on tester.
243
243
  meter_vrange = [4.V, 8.V]
244
244
  tdelay = 0 # default tdelay
245
245
  accuracy = { neg: -7.mV, pos: 7.mV }
@@ -263,8 +263,8 @@ module OrigenTesters
263
263
  sink_fold_i = { irange_15A: (1.A..2.A),
264
264
  irange_90A: (6.A..12.A) }
265
265
  sink_fold_t = (102.4.uS..5.S)
266
- meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
267
- irange_90A: [90.A] } # This is verified to be correct on tester.
266
+ meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
267
+ irange_90A: [90.A] } # This is verified to be correct on tester.
268
268
  meter_vrange = [4.V, 8.V]
269
269
  tdelay = 0 # default tdelay
270
270
  accuracy = { neg: -7.mV, pos: 7.mV }
@@ -308,8 +308,8 @@ module OrigenTesters
308
308
  sink_fold_i = { irange_15A: (1.A..2.A),
309
309
  irange_30A: (2.A..4.A) }
310
310
  sink_fold_t = (102.4.uS..5.S)
311
- meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
312
- irange_30A: [30.A] } # This is verified to be correct on tester.
311
+ meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
312
+ irange_30A: [30.A] } # This is verified to be correct on tester.
313
313
  meter_vrange = [4.V, 8.V]
314
314
  tdelay = 0 # default tdelay
315
315
  accuracy = { neg: -2.mV, pos: 2.mV }
@@ -333,8 +333,8 @@ module OrigenTesters
333
333
  sink_fold_i = { irange_15A: (1.A..2.A),
334
334
  irange_60A: (4.A..8.A) }
335
335
  sink_fold_t = (102.4.uS..5.S)
336
- meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
337
- irange_60A: [60.A] } # This is verified to be correct on tester.
336
+ meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
337
+ irange_60A: [60.A] } # This is verified to be correct on tester.
338
338
  meter_vrange = [4.V, 8.V]
339
339
  tdelay = 0 # default tdelay
340
340
  accuracy = { neg: -2.mV, pos: 2.mV }
@@ -358,8 +358,8 @@ module OrigenTesters
358
358
  sink_fold_i = { irange_15A: (1.A..2.A),
359
359
  irange_90A: (6.A..12.A) }
360
360
  sink_fold_t = (102.4.uS..5.S)
361
- meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
362
- irange_90A: [90.A] } # This is verified to be correct on tester.
361
+ meter_irange = { irange_15A: [10.mA, 100.mA, 1.A, 15.A],
362
+ irange_90A: [90.A] } # This is verified to be correct on tester.
363
363
  meter_vrange = [4.V, 8.V]
364
364
  tdelay = 0 # default tdelay
365
365
  accuracy = { neg: -2.mV, pos: 2.mV }
@@ -379,7 +379,7 @@ module OrigenTesters
379
379
  sink_overload_t = 'n/a'
380
380
  sink_fold_i = (5.mA..200.mA)
381
381
  sink_fold_t = (0.S..167.77.mS)
382
- meter_irange = [10.uA, 100.uA, 1.mA, 10.mA, 100.mA, 1.A]
382
+ meter_irange = [10.uA, 100.uA, 1.mA, 10.mA, 100.mA, 1.A]
383
383
  meter_vrange = 7.V
384
384
  tdelay = 0 # default tdelay
385
385
  accuracy = { neg: '-0.001xSUPPLY-10.mV', pos: '0.001xSUPPLY+10.mV' }
@@ -402,7 +402,7 @@ module OrigenTesters
402
402
  sink_overload_t = 'n/a'
403
403
  sink_fold_i = (10.mA..400.mA)
404
404
  sink_fold_t = (0.S..167.77.mS)
405
- meter_irange = [20.uA, 200.uA, 2.mA, 20.mA, 200.mA, 2.A]
405
+ meter_irange = [20.uA, 200.uA, 2.mA, 20.mA, 200.mA, 2.A]
406
406
  meter_vrange = 7.V
407
407
  tdelay = 0 # default tdelay
408
408
  accuracy = { neg: '-0.001xSUPPLY-10.mV', pos: '0.001xSUPPLY+10.mV' }
@@ -425,7 +425,7 @@ module OrigenTesters
425
425
  sink_overload_t = 'n/a'
426
426
  sink_fold_i = (20.mA..800.mA)
427
427
  sink_fold_t = (0.S..167.77.mS)
428
- meter_irange = [40.uA, 400.uA, 4.mA, 40.mA, 400.mA, 4.A]
428
+ meter_irange = [40.uA, 400.uA, 4.mA, 40.mA, 400.mA, 4.A]
429
429
  meter_vrange = 7.V
430
430
  tdelay = 0 # default tdelay
431
431
  accuracy = { neg: '-0.001xSUPPLY-10.mV', pos: '0.001xSUPPLY+10.mV' }
@@ -930,14 +930,14 @@ module OrigenTesters
930
930
  source_fold_t, sink_overload_i, sink_overload_t, sink_fold_i,
931
931
  sink_fold_t, meter_irange, meter_vrange, tdelay, accuracy, filter, bandwidth)
932
932
  else
933
- puts "please enter an instrument type: e.g. $tester.ate_hardware(\"VSM\").supply"
934
- puts "Instrument type available: \"VSM\", \"VSMx2\", \"VSMx4\","
935
- puts "\"HexVS\", \"HexVSx2\", \"HexVSx4\", \"HexVSx6\","
936
- puts "\"HexVS+\", \"HexVS+x2\", \"HexVS+x4\", \"HexVS+x6\", \"HDVS1\","
937
- puts "\"HDVS1x2\", \"HDVS1x4\", \"VHDVS\", \"VHDVS_HC\", \"VHDVSx2\","
938
- puts "\"VHDVS_HCx2\", \"VHDVS_HCx4\", and \"VHDVS_HCx8\"."
939
- puts "\"VHDVS+\", \"VHDVS_HC+\", \"VHDVS+x2\","
940
- puts "\"VHDVS_HC+x2\", \"VHDVS_HC+x4\", and \"VHDVS_HC+x8\"."
933
+ puts 'please enter an instrument type: e.g. $tester.ate_hardware("VSM").supply'
934
+ puts 'Instrument type available: "VSM", "VSMx2", "VSMx4",'
935
+ puts '"HexVS", "HexVSx2", "HexVSx4", "HexVSx6",'
936
+ puts '"HexVS+", "HexVS+x2", "HexVS+x4", "HexVS+x6", "HDVS1",'
937
+ puts '"HDVS1x2", "HDVS1x4", "VHDVS", "VHDVS_HC", "VHDVSx2",'
938
+ puts '"VHDVS_HCx2", "VHDVS_HCx4", and "VHDVS_HCx8".'
939
+ puts '"VHDVS+", "VHDVS_HC+", "VHDVS+x2",'
940
+ puts '"VHDVS_HC+x2", "VHDVS_HC+x4", and "VHDVS_HC+x8".'
941
941
  puts 'HDVS1 is also known as HDVS. VHDVS is also known as UVS256.'
942
942
  puts 'x2 is Merged2, x4 is Merged4, x6 is Merged6. _HC is High-Current.'
943
943
  puts '+ is High-Accuracy.'
@@ -8,8 +8,7 @@ module OrigenTesters
8
8
  bin_pass bin_fail sort_pass sort_fail result flag_pass flag_fail state
9
9
  group_specifier group_sense group_condition group_name
10
10
  device_sense device_condition device_name
11
- debug_assume debug_sites comment
12
- )
11
+ debug_assume debug_sites comment)
13
12
 
14
13
  # Generate the instance method definitions based on the above
15
14
  define
@@ -7,8 +7,7 @@ module OrigenTesters
7
7
  PATSUBR_ATTRS = %w(file_name comment)
8
8
 
9
9
  # Pattern subroutine defaults
10
- PATSUBR_DEFAULTS = {
11
- }
10
+ PATSUBR_DEFAULTS = {}
12
11
 
13
12
  # Generate the instance method definitions based on the above
14
13
  define
@@ -23,8 +23,7 @@ module OrigenTesters
23
23
  timeset: :time_sets,
24
24
  timesets: :time_sets,
25
25
 
26
- other: {
27
- },
26
+ other: {},
28
27
 
29
28
  empty: {
30
29
  arg_list: :arg0,
@@ -310,7 +309,7 @@ module OrigenTesters
310
309
  wait_flag1: -2, # waitoff
311
310
  wait_flag2: -2, # waitoff
312
311
  wait_flag3: -2, # waitoff
313
- wait_flag4: -2, # waitoff
312
+ wait_flag4: -2 # waitoff
314
313
  },
315
314
  dcvi_powersupply: {
316
315
  arg_list: 'PreconditionPat,StartOfBodyF,PrePatF,PreTestF,PostTestF,PostPatF,EndOfBodyF,HoldStatePat,DriveLoPins,DriveHiPins,DriveZPins,FloatPins,SamplingTime,SampleSize,SettlingTime,MainVoltage,AltVoltage,PowerPins,DisablePins,VoltageOutput,PcpStartLabel,PcpStopLabel,StartOfBodyFArgs,PrePatFArgs,PreTestFArgs,PostTestFArgs,PostPatFArgs,EndOfBodyFArgs,HspStartLabel,HspStopLabel,PcpCheckPatGen,CurrentClamp,HspCheckPatGen,HspResumePat,RelayMode,Util1Pins,Util0Pins,TestControl,SerializeMeas,MeasF,MeasFArgs,WaitFlagA,WaitFlagB,WaitFlagC,WaitFlagD,Validating_,Irange,PatternTimeout,PcpDisableAlarm,HspDisableAlarm',
@@ -320,7 +319,7 @@ module OrigenTesters
320
319
  wait_flag1: -2, # waitoff
321
320
  wait_flag2: -2, # waitoff
322
321
  wait_flag3: -2, # waitoff
323
- wait_flag4: -2, # waitoff
322
+ wait_flag4: -2 # waitoff
324
323
  }
325
324
 
326
325
  }
@@ -335,10 +334,10 @@ module OrigenTesters
335
334
  # assumes clr flag means to set it off (waitoff = -2)
336
335
  # does not yet support waitlo = 0
337
336
  def set_wait_flags(*flags)
338
- a = (flags.include?(:a) || flags.include?(:a)) ? '-1' : '-2'
339
- b = (flags.include?(:b) || flags.include?(:b)) ? '-1' : '-2'
340
- c = (flags.include?(:c) || flags.include?(:c)) ? '-1' : '-2'
341
- d = (flags.include?(:d) || flags.include?(:d)) ? '-1' : '-2'
337
+ a = (flags.include?(:a) || flags.include?(:a)) ? '-1' : '-2' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
338
+ b = (flags.include?(:b) || flags.include?(:b)) ? '-1' : '-2' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
339
+ c = (flags.include?(:c) || flags.include?(:c)) ? '-1' : '-2' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
340
+ d = (flags.include?(:d) || flags.include?(:d)) ? '-1' : '-2' # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
342
341
  self.wait_flag1 = a
343
342
  self.wait_flag2 = b
344
343
  self.wait_flag3 = c
@@ -356,9 +355,9 @@ module OrigenTesters
356
355
  # intended to be used in documentation
357
356
  def to_meta
358
357
  return @meta if @meta
358
+
359
359
  m = { 'Test' => name,
360
- 'Type' => type
361
- }
360
+ 'Type' => type }
362
361
  if type == :functional
363
362
  m['Pattern'] = pattern
364
363
  elsif type == :board_pmu || type == :pin_pmu