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
@@ -3,6 +3,7 @@ module OrigenTesters
3
3
  class Base
4
4
  class FlowLine
5
5
  attr_accessor :type, :id, :cz_setup # cz_setup is a virtual attrib since it is not part of the regular flow line
6
+
6
7
  # cz_setup combine with instance name when characterize opcode is used
7
8
 
8
9
  # Map any aliases to the official names here, multiple aliases for a given attribute
@@ -24,30 +25,23 @@ module OrigenTesters
24
25
  # Aliases can also be used to set defaults on multiple attributes like this,
25
26
  # use :value to refer to the value passed in to the given alias
26
27
  flag_false: { device_condition: 'flag-false',
27
- device_name: :value
28
- },
28
+ device_name: :value },
29
29
  flag_true: { device_condition: 'flag-true',
30
- device_name: :value
31
- },
30
+ device_name: :value },
32
31
  flag_false_any: { group_specifier: 'any-active',
33
32
  group_condition: 'flag-false',
34
- group_name: :value
35
- },
33
+ group_name: :value },
36
34
  flag_false_all: { group_specifier: 'all-active',
37
35
  group_condition: 'flag-false',
38
- group_name: :value
39
- },
36
+ group_name: :value },
40
37
  flag_true_any: { group_specifier: 'any-active',
41
38
  group_condition: 'flag-true',
42
- group_name: :value
43
- },
39
+ group_name: :value },
44
40
  flag_true_all: { group_specifier: 'all-active',
45
41
  group_condition: 'flag-true',
46
- group_name: :value
47
- },
42
+ group_name: :value },
48
43
  flag_clear: { device_condition: 'flag-clear',
49
- device_name: :value
50
- }
44
+ device_name: :value }
51
45
  }
52
46
 
53
47
  # Assign attribute defaults here, generally this should match whatever defaults
@@ -155,11 +149,11 @@ module OrigenTesters
155
149
  @type = type
156
150
  # Set the defaults
157
151
  DEFAULTS[@type.to_sym].each do |k, v|
158
- send("#{k}=", v) if self.respond_to?("#{k}=")
152
+ send("#{k}=", v) if respond_to?("#{k}=")
159
153
  end
160
154
  # Then the values that have been supplied
161
155
  attrs.each do |k, v|
162
- send("#{k}=", v) if self.respond_to?("#{k}=")
156
+ send("#{k}=", v) if respond_to?("#{k}=")
163
157
  end
164
158
  # override test numbers if diff-friendly output desired
165
159
  if Origen.tester.diff_friendly_output?
@@ -257,7 +251,7 @@ module OrigenTesters
257
251
  # code
258
252
  end
259
253
 
260
- def id
254
+ def id # rubocop:disable Lint/DuplicateMethods
261
255
  @id || "#{parameter}_#{unique_counter}"
262
256
  end
263
257
 
@@ -337,6 +337,7 @@ module OrigenTesters
337
337
  [edgeset_sheets, timeset_sheets].each do |sheets|
338
338
  sheets.each do |name, sheet|
339
339
  next if sheet.class.name =~ /Edgesets$/ && sheet.ts_basic
340
+
340
341
  g << sheet
341
342
  end
342
343
  end
@@ -362,6 +363,7 @@ module OrigenTesters
362
363
  def pinmaps(filename = pinmaps_filename)
363
364
  f = filename.to_sym
364
365
  return pinmap_sheets[f] if pinmap_sheets[f]
366
+
365
367
  p = platform::Pinmap.new
366
368
  p.filename = f
367
369
  pinmap_sheets[f] = p
@@ -377,6 +379,7 @@ module OrigenTesters
377
379
  def test_instances(filename = test_instances_filename)
378
380
  f = filename.to_sym
379
381
  return test_instance_sheets[f] if test_instance_sheets[f]
382
+
380
383
  t = platform::TestInstances.new
381
384
  t.filename = f
382
385
  test_instance_sheets[f] = t
@@ -391,6 +394,7 @@ module OrigenTesters
391
394
  def patsets(filename = patsets_filename)
392
395
  f = filename.to_sym
393
396
  return patset_sheets[f] if patset_sheets[f]
397
+
394
398
  p = platform::Patsets.new
395
399
  p.filename = f
396
400
  patset_sheets[f] = p
@@ -407,6 +411,7 @@ module OrigenTesters
407
411
  def patsubrs(filename = patsubrs_filename)
408
412
  f = filename.to_sym
409
413
  return patsubr_sheets[f] if patsubr_sheets[f]
414
+
410
415
  p = platform::Patsubrs.new
411
416
  p.filename = f
412
417
  patsubr_sheets[f] = p
@@ -426,6 +431,7 @@ module OrigenTesters
426
431
  # DH here need to reset the flow!!
427
432
  f = filename.to_sym
428
433
  return flow_sheets[f] if flow_sheets[f] # will return flow if already existing
434
+
429
435
  p = platform::Flow.new
430
436
  p.inhibit_output if Origen.interface.resources_mode?
431
437
  p.filename = f
@@ -442,6 +448,7 @@ module OrigenTesters
442
448
  def patgroups(filename = patgroups_filename)
443
449
  f = filename.to_sym
444
450
  return patgroup_sheets[f] if patgroup_sheets[f]
451
+
445
452
  p = platform::Patgroups.new
446
453
  p.filename = f
447
454
  patgroup_sheets[f] = p
@@ -470,6 +477,7 @@ module OrigenTesters
470
477
 
471
478
  f = filename.to_sym
472
479
  return edgeset_sheets[f] if edgeset_sheets[f]
480
+
473
481
  e = platform::Edgesets.new(options)
474
482
  e.filename = f
475
483
  edgeset_sheets[f] = e
@@ -489,6 +497,7 @@ module OrigenTesters
489
497
 
490
498
  f = filename.to_sym
491
499
  return timeset_sheets[f] if timeset_sheets[f]
500
+
492
501
  case options[:timeset_basic]
493
502
  when true
494
503
  t = platform::TimesetsBasic.new(options)
@@ -518,12 +527,13 @@ module OrigenTesters
518
527
  def levelsets(filename = levelsets_filename)
519
528
  f = filename.to_sym
520
529
  return levelset_sheets[f] if levelset_sheets[f]
530
+
521
531
  t = platform::Levelset.new
522
532
  t.filename = f
523
533
  levelset_sheets[f] = t
524
534
  end
525
- alias_method :time_sets, :timesets
526
- alias_method :timing_sets, :timesets
535
+ alias_method :time_sets, :timesets # rubocop:disable Lint/DuplicateMethods
536
+ alias_method :timing_sets, :timesets # rubocop:disable Lint/DuplicateMethods
527
537
 
528
538
  # Returns the current AC specset sheet (as defined by the current value of
529
539
  # ac_specsets_filename).
@@ -534,6 +544,7 @@ module OrigenTesters
534
544
  def ac_specsets(filename = ac_specsets_filename)
535
545
  f = filename.to_sym
536
546
  return ac_specset_sheets[f] if ac_specset_sheets[f]
547
+
537
548
  s = platform::ACSpecsets.new
538
549
  s.filename = f
539
550
  ac_specset_sheets[f] = s
@@ -548,6 +559,7 @@ module OrigenTesters
548
559
  def dc_specsets(filename = dc_specsets_filename)
549
560
  f = filename.to_sym
550
561
  return dc_specset_sheets[f] if dc_specset_sheets[f]
562
+
551
563
  s = platform::DCSpecsets.new
552
564
  s.filename = f
553
565
  dc_specset_sheets[f] = s
@@ -562,6 +574,7 @@ module OrigenTesters
562
574
  def global_specs(filename = global_specs_filename)
563
575
  f = filename.to_sym
564
576
  return global_spec_sheets[f] if global_spec_sheets[f]
577
+
565
578
  s = platform::GlobalSpecs.new
566
579
  s.filename = f
567
580
  global_spec_sheets[f] = s
@@ -576,6 +589,7 @@ module OrigenTesters
576
589
  def program_jobs(filename = jobs_filename)
577
590
  f = filename.to_sym
578
591
  return job_sheets[f] if job_sheets[f]
592
+
579
593
  j = platform::Jobs.new
580
594
  j.filename = f
581
595
  job_sheets[f] = j
@@ -590,6 +604,7 @@ module OrigenTesters
590
604
  def references(filename = references_filename)
591
605
  f = filename.to_sym
592
606
  return reference_sheets[f] if reference_sheets[f]
607
+
593
608
  r = platform::References.new
594
609
  r.filename = f
595
610
  reference_sheets[f] = r
@@ -48,7 +48,7 @@ module OrigenTesters
48
48
  case data
49
49
  when NilClass
50
50
  data_new = 0
51
- when Fixnum, Float
51
+ when Integer, Float
52
52
  case
53
53
  when data == 0
54
54
  data_new = data.to_s
@@ -24,24 +24,24 @@ module OrigenTesters
24
24
 
25
25
  def initialize(jname, options = {}) # :nodoc:
26
26
  @name = jname
27
- options[:pinmap] ? @pinmap = [options[:pinmap]] : @pinmap = []
28
- options[:instances] ? @instances = [options[:instances]] : @instances = []
29
- options[:flows] ? @flows = [options[:flows]] : @flows = []
30
- options[:ac_specs] ? @ac_specs = [options[:ac_specs]] : @ac_specs = []
31
- options[:dc_specs] ? @dc_specs = [options[:dc_specs]] : @dc_specs = []
32
- options[:patsets] ? @patsets = [options[:patsets]] : @patsets = []
33
- options[:patgroups] ? @patgroups = [options[:patgroups]] : @patgroups = []
34
- options[:bintables] ? @bintables = [options[:bintables]] : @bintables = []
35
- options[:cz] ? @cz = [options[:cz]] : @cz = []
36
- options[:test_procs] ? @test_procs = [options[:test_procs]] : @test_procs = []
27
+ options[:pinmap] ? @pinmap = [options[:pinmap]] : @pinmap = []
28
+ options[:instances] ? @instances = [options[:instances]] : @instances = []
29
+ options[:flows] ? @flows = [options[:flows]] : @flows = []
30
+ options[:ac_specs] ? @ac_specs = [options[:ac_specs]] : @ac_specs = []
31
+ options[:dc_specs] ? @dc_specs = [options[:dc_specs]] : @dc_specs = []
32
+ options[:patsets] ? @patsets = [options[:patsets]] : @patsets = []
33
+ options[:patgroups] ? @patgroups = [options[:patgroups]] : @patgroups = []
34
+ options[:bintables] ? @bintables = [options[:bintables]] : @bintables = []
35
+ options[:cz] ? @cz = [options[:cz]] : @cz = []
36
+ options[:test_procs] ? @test_procs = [options[:test_procs]] : @test_procs = []
37
37
  options[:mix_sig_timing] ? @mix_sig_timing = [options[:mix_sig_timing]] : @mix_sig_timing = []
38
- options[:wave_defs] ? @wave_defs = [options[:wave_defs]] : @wave_defs = []
39
- options[:psets] ? @psets = [options[:psets]] : @psets = []
40
- options[:signals] ? @signals = [options[:signals]] : @signals = []
41
- options[:port_map] ? @port_map = [options[:port_map]] : @port_map = []
42
- options[:fract_bus] ? @fract_bus = [options[:fract_bus]] : @fract_bus = []
38
+ options[:wave_defs] ? @wave_defs = [options[:wave_defs]] : @wave_defs = []
39
+ options[:psets] ? @psets = [options[:psets]] : @psets = []
40
+ options[:signals] ? @signals = [options[:signals]] : @signals = []
41
+ options[:port_map] ? @port_map = [options[:port_map]] : @port_map = []
42
+ options[:fract_bus] ? @fract_bus = [options[:fract_bus]] : @fract_bus = []
43
43
  options[:concurrent_seq] ? @concurrent_seq = [options[:concurrent_seq]] : @concurrent_seq = []
44
- options[:comment] ? @comment = options[:instances] : @comment = nil
44
+ options[:comment] ? @comment = options[:instances] : @comment = nil
45
45
  end
46
46
 
47
47
  # Assigns job information for the given object
@@ -17,8 +17,8 @@ module OrigenTesters
17
17
  vcl: -1, # Voltage clamp low
18
18
  vch: 2.5, # Voltage clamp high
19
19
  vt: 0.9, # Termination voltage
20
- voutlotyp: 0, #
21
- vouthityp: 0, #
20
+ voutlotyp: 0,
21
+ vouthityp: 0,
22
22
  dmode: 'Largeswing-VT' # Driver mode (possibly ATE-specific)
23
23
  }.merge(options)
24
24
  @vil = options[:vil]
@@ -18,8 +18,6 @@ module OrigenTesters
18
18
  @pins = {}
19
19
  end
20
20
 
21
- # rubocop:disable Metrics/ParameterLists
22
-
23
21
  # Adds a pin level to the given levelset
24
22
  def add(lsname, pin, level, options = {})
25
23
  options = {
@@ -31,7 +29,7 @@ module OrigenTesters
31
29
  add_level(pin, level)
32
30
  @name = lsname
33
31
  @spec_sheet = options[:spec_sheet]
34
- @ls_sheet_pins = options[:ls_sheet_pins] unless @ls_sheet_pins
32
+ @ls_sheet_pins ||= options[:ls_sheet_pins]
35
33
  end
36
34
 
37
35
  # Assigns a level object to the given pin for this levelset
@@ -90,8 +88,7 @@ module OrigenTesters
90
88
  end
91
89
 
92
90
  def format_uflex_level(data, options = {})
93
- options = {
94
- }.merge(options)
91
+ options = {}.merge(options)
95
92
 
96
93
  if data !~ /^\s*$/
97
94
  data = data.gsub(/^/, '=')
@@ -11,8 +11,7 @@ module OrigenTesters
11
11
  pattern: :pattern_file
12
12
  }
13
13
 
14
- DEFAULTS = {
15
- }
14
+ DEFAULTS = {}
16
15
 
17
16
  # Generate accessors for all attributes and their aliases
18
17
  ATTRS.each do |attr|
@@ -82,7 +81,6 @@ module OrigenTesters
82
81
  def name=(n)
83
82
  @name = n
84
83
  lines.each { |l| l.group_name = n }
85
- n
86
84
  end
87
85
 
88
86
  # Returns all lines in the pattern set
@@ -37,7 +37,6 @@ module OrigenTesters
37
37
  def name=(n)
38
38
  @name = n
39
39
  lines.each { |l| l.pattern_set = n }
40
- n
41
40
  end
42
41
 
43
42
  # Returns all lines in the pattern set
@@ -37,7 +37,6 @@ module OrigenTesters
37
37
  def name=(n)
38
38
  @name = n
39
39
  lines.each { |l| l.pattern_set = n }
40
- n
41
40
  end
42
41
 
43
42
  # Returns all lines in the pattern set
@@ -52,19 +52,19 @@ module OrigenTesters
52
52
  # Build the type specific accessors (aliases)
53
53
  self.class::TEST_INSTANCE_ALIASES[@type.to_sym].each do |_alias, val|
54
54
  define_singleton_method("#{_alias}=") do |v|
55
- send("#{val}=", v) if self.respond_to?("#{val}=", v)
55
+ send("#{val}=", v) if respond_to?("#{val}=", v)
56
56
  end
57
57
  define_singleton_method("#{_alias}") do
58
- send(val) if self.respond_to?(val)
58
+ send(val) if respond_to?(val)
59
59
  end
60
60
  end
61
61
  # Set the defaults
62
62
  self.class::TEST_INSTANCE_DEFAULTS[@type.to_sym].each do |k, v|
63
- send("#{k}=", v) if self.respond_to?("#{k}=", v)
63
+ send("#{k}=", v) if respond_to?("#{k}=", v)
64
64
  end
65
65
  # Then the values that have been supplied
66
66
  attrs.each do |k, v|
67
- send("#{k}=", v) if self.respond_to?("#{k}=", v)
67
+ send("#{k}=", v) if respond_to?("#{k}=", v)
68
68
  end
69
69
  end
70
70
 
@@ -212,8 +212,7 @@ module OrigenTesters
212
212
  r = r / 1_000_000.0
213
213
  elsif r = options.delete(:ma) || options.delete(:mA)
214
214
  r = r / 1000.0
215
- elsif r = options.delete(:a) || options.delete(:A)
216
- else
215
+ r = options.delete(:a) || options.delete(:A)
217
216
  fail "Can't determine requested irange!"
218
217
  end
219
218
  end
@@ -229,7 +228,7 @@ module OrigenTesters
229
228
  when r > 0.00002 then 2
230
229
  when r > 0.000002 then 1
231
230
  else 0
232
- end
231
+ end
233
232
  end
234
233
 
235
234
  elsif @type == :powersupply
@@ -246,21 +245,22 @@ module OrigenTesters
246
245
  when r > 0.00005 then 2 # between 50ua - 500u
247
246
  when r > 0.000005 then 3 # between 5u - 50u
248
247
  else 8
249
- end
248
+ end
250
249
  end
251
250
 
252
251
  else # :pin_pmu
253
252
  if r == :smart
254
253
  self.irange = 5
255
254
  elsif r == :auto
256
- fail 'Auto range not available in FIMV mode!' if self.fimv?
255
+ fail 'Auto range not available in FIMV mode!' if fimv?
256
+
257
257
  self.irange = 6
258
258
  else
259
259
  if fimv?
260
260
  self.irange = case
261
261
  when r > 0.0002 then 2
262
262
  else 4
263
- end
263
+ end
264
264
  else
265
265
  self.irange = case
266
266
  when r > 0.0002 then 2
@@ -268,7 +268,7 @@ module OrigenTesters
268
268
  when r > 0.000002 then 0
269
269
  when r > 0.0000002 then 1
270
270
  else 3
271
- end
271
+ end
272
272
  end
273
273
  end
274
274
  end
@@ -297,8 +297,7 @@ module OrigenTesters
297
297
  elsif r == :auto
298
298
  self.vrange = 5
299
299
  elsif !r
300
- if r = options.delete(:v) || options.delete(:V)
301
- else
300
+ unless r = options.delete(:v) || options.delete(:V)
302
301
  fail "Can't determine requested vrange!"
303
302
  end
304
303
  end
@@ -307,7 +306,7 @@ module OrigenTesters
307
306
  when r > 5 then 2
308
307
  when r > 2 then 1
309
308
  else 0
310
- end
309
+ end
311
310
  self
312
311
  end
313
312
 
@@ -12,7 +12,7 @@ module OrigenTesters
12
12
  @append_version = true
13
13
  end
14
14
 
15
- def name
15
+ def name # rubocop:disable Lint/DuplicateMethods
16
16
  if unversioned_name
17
17
  if version && @append_version
18
18
  "#{unversioned_name}_v#{version}"
@@ -48,7 +48,7 @@ module OrigenTesters
48
48
  self.class == other_instance_group.class &&
49
49
  unversioned_name.to_s == other_instance_group.unversioned_name.to_s &&
50
50
  size == other_instance_group.size &&
51
- self.all? do |ins|
51
+ all? do |ins|
52
52
  other_instance_group.any? { |other_ins| ins == other_ins }
53
53
  end
54
54
  end
@@ -21,7 +21,7 @@ module OrigenTesters
21
21
  pin = pin.to_sym unless pin.is_a? Symbol
22
22
  esname = pin.to_sym unless esname.is_a? Symbol
23
23
  @ts.key?(tsname) ? @ts[tsname].add_edge(pin, esname) : @ts[tsname] = platform::Timeset.new(tsname, pin, esname, options)
24
- @ts_sheet_pins = options[:ts_sheet_pins] unless @ts_sheet_pins
24
+ @ts_sheet_pins ||= options[:ts_sheet_pins]
25
25
  @ts[tsname]
26
26
  end
27
27
 
@@ -21,7 +21,7 @@ module OrigenTesters
21
21
  pin = pin.to_sym unless pin.is_a? Symbol
22
22
  esname = pin.to_sym unless esname.is_a? Symbol
23
23
  @ts.key?(tsname) ? @ts[tsname].add_edge(pin, esname) : @ts[tsname] = platform::Timeset.new(tsname, pin, esname, options)
24
- @ts_sheet_pins = options[:ts_sheet_pins] unless @ts_sheet_pins
24
+ @ts_sheet_pins ||= options[:ts_sheet_pins]
25
25
  @ts[tsname]
26
26
  end
27
27
 
@@ -167,9 +167,7 @@ module OrigenTesters
167
167
  def get_tester_channel(chanmapname, pinname, sitenum)
168
168
  if sitenum <= @max_site
169
169
  @testerchannel = @channelmap[chanmapname][sitenum][pinname].channel
170
- return @testerchannel
171
- else
172
- return nil
170
+ @testerchannel
173
171
  end
174
172
  end
175
173
 
@@ -179,10 +177,8 @@ module OrigenTesters
179
177
  if sitenum <= @max_site
180
178
  if @channelmap[chanmapname][sitenum][pinname].type.include?('Merged')
181
179
  @merged_channels = @channelmap[chanmapname][sitenum][pinname].type.split('Merged')[1]
182
- return 'x' + @merged_channels
180
+ 'x' + @merged_channels
183
181
  end
184
- else
185
- return nil
186
182
  end
187
183
  end
188
184
 
@@ -206,12 +202,13 @@ module OrigenTesters
206
202
  if @testerconfig[testconfigname][slot][:instrument].to_s == 'VHDVS'
207
203
  @productnum = @testerconfig[testconfigname][slot][:idprom].split(' ')[0]
208
204
  # binding.pry
209
- if (@productnum.include?('805-052-')) && (@productnum.split('-')[2].to_i >= 05)
205
+ if (@productnum.include?('805-052-')) && (@productnum.split('-')[2].to_i >= 0o5)
210
206
  return '+'
211
207
  end
212
208
  end
213
209
  nil # if nothing matched
214
210
  end
211
+
215
212
  # Check if a specific VHDVS (UVS256) channel assignment is _HC variety (high-current)
216
213
  # If the specific VHDVS channel is _HC variety, returns a "_HC" string, otherwise nil.
217
214
  def is_vhdvs_hc(chanmapname, pinname, sitenum)
@@ -269,6 +266,7 @@ module OrigenTesters
269
266
  unless prog_dir
270
267
  fail 'You must supply the directory containing the test program sheets, or define it via Origen.config.test_program_output_directory'
271
268
  end
269
+
272
270
  @parser ||= IGXLBasedTester::Parser.new
273
271
  @parsed_dir ||= false
274
272
  if @parsed_dir != prog_dir
@@ -299,8 +297,7 @@ module OrigenTesters
299
297
  # $tester.store(:offset => -2) # Just realized I need to capture that earlier vector
300
298
  def store(*pins)
301
299
  options = pins.last.is_a?(Hash) ? pins.pop : {}
302
- options = { offset: 0
303
- }.merge(options)
300
+ options = { offset: 0 }.merge(options)
304
301
  update_vector microcode: 'stv', offset: options[:offset]
305
302
  last_vector(options[:offset]).contains_capture = true unless @inhibit_vectors
306
303
  end
@@ -319,8 +316,7 @@ module OrigenTesters
319
316
  # $tester.cycle # This is the vector that will be captured
320
317
  def store_next_cycle(*pins)
321
318
  options = pins.last.is_a?(Hash) ? pins.pop : {}
322
- options = {
323
- }.merge(options)
319
+ options = {}.merge(options)
324
320
 
325
321
  unless @inhibit_vectors
326
322
  preset_next_vector microcode: 'stv' do |vector|
@@ -407,8 +403,7 @@ module OrigenTesters
407
403
  # $tester.freq_count($top.pin(:d_out)) # Freq measure on pin "d_out"
408
404
  # $tester.freq_count($top.pin(:d_out):readcode => 10)
409
405
  def freq_count(pin, options = {})
410
- options = { readcode: false
411
- }.merge(options)
406
+ options = { readcode: false }.merge(options)
412
407
 
413
408
  set_code(options[:readcode]) if options[:readcode]
414
409
  cycle(microcode: "#{@microcode[:set_flag]} (cpuA)")
@@ -443,7 +438,7 @@ module OrigenTesters
443
438
  capture_vector_mem1: false, # capture vector to memory type 1, here for J750 will be stv_m1
444
439
  capture_vector_mem2: false, # capture vector to memory type 2, here for J750 will be stv_c
445
440
  pin: false, # pin on which to drive or expect data, pass pin object here!
446
- pin_data: false, # pin data (:none, :drive, :expect)
441
+ pin_data: false # pin data (:none, :drive, :expect)
447
442
  }.merge(options)
448
443
 
449
444
  mto_opcode = ''
@@ -687,7 +682,7 @@ module OrigenTesters
687
682
  group: false, # If true the end pattern is intended to run within a pattern group
688
683
  high_voltage: false, # Supply a pin name here to declare it as an HV instrument (not yet defined)
689
684
  freq_counter: false, # Supply a pin name here to declare it as a frequency counter
690
- memory_test: false, # If true, define 2-bit MTO DGEN as instrument
685
+ memory_test: false # If true, define 2-bit MTO DGEN as instrument
691
686
  }.merge(options)
692
687
 
693
688
  if level_period?
@@ -850,8 +845,9 @@ module OrigenTesters
850
845
  end
851
846
 
852
847
  def enable_flag(options = {})
853
- options = { flagnum: 4, # default flag to use
854
- }.merge(options)
848
+ options = {
849
+ flagnum: 4 # default flag to use
850
+ }.merge(options)
855
851
 
856
852
  if options[:flagnum] > @flags.length
857
853
  abort "ERROR! Invalid flag value passed to 'enable_flag' method!\n"
@@ -861,8 +857,9 @@ module OrigenTesters
861
857
  end
862
858
 
863
859
  def set_flag(options = {})
864
- options = { flagnum: 4, # default flag to use
865
- }.merge(options)
860
+ options = {
861
+ flagnum: 4 # default flag to use
862
+ }.merge(options)
866
863
 
867
864
  if options[:flagnum] > @flags.length
868
865
  abort "ERROR! Invalid flag value passed to 'set_flag' method!\n"
@@ -43,42 +43,36 @@ module OrigenTesters
43
43
  pattern_header: header,
44
44
  variable_assignments: variable_assignments,
45
45
  imports: imports,
46
- comments: comments
47
- )
46
+ comments: comments)
48
47
  end
49
48
 
50
49
  def parse_pinlist(raw_pinlist:, context:)
51
50
  raw_pinlist = raw_pinlist.join('')
52
51
  OrigenTesters::Decompiler::Nodes::Pinlist.new(context: self,
53
- pins: raw_pinlist[raw_pinlist.index('$') + 1..raw_pinlist.index(')') - 1].split(/,\s*/)[1..-1]
54
- )
52
+ pins: raw_pinlist[raw_pinlist.index('$') + 1..raw_pinlist.index(')') - 1].split(/,\s*/)[1..-1])
55
53
  end
56
54
 
57
55
  def parse_vector(raw_vector:, context:, meta:)
58
56
  if raw_vector =~ Regexp.new('^\s*//')
59
57
  nodes_namespace::CommentBlock.new(context: self,
60
- comments: raw_vector.split("\n")
61
- )
58
+ comments: raw_vector.split("\n"))
62
59
  elsif raw_vector.strip.size == 0
63
60
  nodes_namespace::CommentBlock.new(context: self, comments: ['// blank line replaced with comment by origen convert'])
64
61
  elsif raw_vector =~ Regexp.new('^\s*start_label')
65
62
  nodes_namespace::StartLabel.new(context: self,
66
- start_label: raw_vector[raw_vector.index('start_label') + 11..-1].strip[0..-2]
67
- )
63
+ start_label: raw_vector[raw_vector.index('start_label') + 11..-1].strip[0..-2])
68
64
  elsif raw_vector =~ Regexp.new('^\s*global')
69
65
  contents = raw_vector.strip['global'.size + 1..-2].strip.split(/\s+/)
70
66
  nodes_namespace::GlobalLabel.new(context: self,
71
67
  label_type: contents[0],
72
- label_name: contents[1]
73
- )
68
+ label_name: contents[1])
74
69
  # original elsif for label was updated to avoid confusing origen's eol comments for a label
75
70
  # elsif raw_vector =~ Regexp.new(':(?!(.*>))')
76
71
  elsif raw_vector.split(';').first =~ Regexp.new(':(?!(.*>))')
77
72
  nodes_namespace::Label.new(context: self,
78
73
  # Strip any whitespace from the vector and grab contents up to
79
74
  # the ':' symbol.
80
- label_name: raw_vector.strip[0..-2]
81
- )
75
+ label_name: raw_vector.strip[0..-2])
82
76
  else
83
77
 
84
78
  opcode_plus_args = raw_vector[0..(raw_vector.index('>') - 1)].rstrip.split(/\s+/)
@@ -88,14 +82,12 @@ module OrigenTesters
88
82
  pin_states: timeset_plus_pins[1..-1],
89
83
  opcode: (opcode_plus_args[0] && opcode_plus_args[0].empty?) ? nil : opcode_plus_args[0],
90
84
  opcode_arguments: opcode_plus_args[1..-1],
91
- comment: begin
92
- if raw_vector =~ Regexp.new('//')
93
- raw_vector[raw_vector.index('//') + 2..-1].strip
94
- else
95
- ''
96
- end
97
- end
98
- )
85
+ comment:
86
+ if raw_vector =~ Regexp.new('//')
87
+ raw_vector[raw_vector.index('//') + 2..-1].strip
88
+ else
89
+ ''
90
+ end)
99
91
  end
100
92
  end
101
93
  end
@@ -8,8 +8,7 @@ module OrigenTesters
8
8
  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
  PATSET_ATTRS = %w(pattern_set file_name start_label stop_label comment)
8
8
 
9
9
  # Pattern set defaults
10
- PATSET_DEFAULTS = {
11
- }
10
+ PATSET_DEFAULTS = {}
12
11
 
13
12
  # Generate the instance method definitions based on the above
14
13
  define