origen_testers 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/version.rb +1 -1
- data/lib/origen_testers/igxl_based_tester/base.rb +2 -2
- data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +0 -56
- data/lib/origen_testers/igxl_based_tester/j750.rb +1 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +86 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex.rb +75 -15
- data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +1 -1
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +19 -8
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +41 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 13097c4540ddc2298b5549c3edc445f71285b5fa
|
4
|
+
data.tar.gz: cc7bad70792a9de4bee7a303fa90c031eab2a4bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0082db3b24571cdf255686fc76f7211c08dd3c29197b4eebb644af6554f63591a9de56934af76783caa8eb6b1d520fb03fb55b4ffd38a3346fcd1e478cd09594
|
7
|
+
data.tar.gz: f124fa94f903803406816de277cd877406722ee518c3cdd9b52798de2b6b2135ed9e82a251aa3467fdb70838602048089cdf3ec199e8308e454cee3e86bfa8f4
|
data/config/version.rb
CHANGED
@@ -11,7 +11,7 @@ module OrigenTesters
|
|
11
11
|
attr_accessor :channelmap
|
12
12
|
attr_accessor :default_channelmap
|
13
13
|
attr_accessor :default_testerconfig
|
14
|
-
|
14
|
+
attr_accessor :max_site
|
15
15
|
# NOTE: DO NOT USE THIS CLASS DIRECTLY ONLY USED AS PARENT FOR
|
16
16
|
# DESIRED TESTER CLASS
|
17
17
|
|
@@ -717,7 +717,7 @@ module OrigenTesters
|
|
717
717
|
$tester.align_to_last
|
718
718
|
# cycle(:microcode => "#{$dut.end_of_pattern_label}:") if $dut.end_of_pattern_label
|
719
719
|
if options[:end_in_ka]
|
720
|
-
$tester.cycle microcode:
|
720
|
+
$tester.cycle microcode: "#{@microcode[:keepalive]}"
|
721
721
|
else
|
722
722
|
if options[:end_with_halt]
|
723
723
|
$tester.cycle microcode: 'halt'
|
@@ -69,31 +69,6 @@ module OrigenTesters
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
# Returns a hash containing key meta data about the test instance, this is
|
73
|
-
# intended to be used in documentation
|
74
|
-
def to_meta
|
75
|
-
m = { 'Test' => name,
|
76
|
-
'Type' => type
|
77
|
-
}
|
78
|
-
if type == :functional
|
79
|
-
m['Pattern'] = pattern
|
80
|
-
elsif type == :board_pmu || type == :pin_pmu
|
81
|
-
m['Measure'] = fvmi? ? 'current' : 'voltage'
|
82
|
-
if hi_lo_limit_valid & 2 != 0
|
83
|
-
m['Hi'] = hi_limit
|
84
|
-
end
|
85
|
-
if hi_lo_limit_valid & 1 != 0
|
86
|
-
m['Lo'] = lo_limit
|
87
|
-
end
|
88
|
-
if force_cond
|
89
|
-
m['Force'] = force_cond
|
90
|
-
end
|
91
|
-
end
|
92
|
-
m['DC'] = "#{dc_category} (#{dc_selector})"
|
93
|
-
m['AC'] = "#{ac_category} (#{ac_selector})"
|
94
|
-
m.merge(@meta)
|
95
|
-
end
|
96
|
-
|
97
72
|
def inspect
|
98
73
|
"<TestInstance: #{name}, Type: #{type}>"
|
99
74
|
end
|
@@ -174,26 +149,11 @@ module OrigenTesters
|
|
174
149
|
fail 'The #{self.class} class has not defined a set_wait_flags method!'
|
175
150
|
end
|
176
151
|
|
177
|
-
# Set and enable the pre-charge voltage of a parametric test instance.
|
178
|
-
def set_pre_charge(val)
|
179
|
-
if val
|
180
|
-
self.pre_charge_enable = 1
|
181
|
-
self.pre_charge = val
|
182
|
-
else
|
183
|
-
self.pre_charge_enable = 0
|
184
|
-
end
|
185
|
-
self
|
186
|
-
end
|
187
|
-
alias_method :set_precharge, :set_pre_charge
|
188
|
-
|
189
152
|
# Set and enable the hi limit of a parametric test instance, passing in
|
190
153
|
# nil or false as the lim parameter will disable the hi limit.
|
191
154
|
def set_hi_limit(lim)
|
192
155
|
if lim
|
193
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid | 2
|
194
156
|
self.hi_limit = lim
|
195
|
-
else
|
196
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid & 1
|
197
157
|
end
|
198
158
|
self
|
199
159
|
end
|
@@ -203,10 +163,7 @@ module OrigenTesters
|
|
203
163
|
# nil or false as the lim parameter will disable the hi limit.
|
204
164
|
def set_lo_limit(lim)
|
205
165
|
if lim
|
206
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid | 1
|
207
166
|
self.lo_limit = lim
|
208
|
-
else
|
209
|
-
self.hi_lo_limit_valid = hi_lo_limit_valid & 2
|
210
167
|
end
|
211
168
|
self
|
212
169
|
end
|
@@ -330,19 +287,6 @@ module OrigenTesters
|
|
330
287
|
self
|
331
288
|
end
|
332
289
|
|
333
|
-
# Set the meaure mode of a parametric test instance, either:
|
334
|
-
# * :voltage / :fimv
|
335
|
-
# * :current / :fvmi
|
336
|
-
def set_measure_mode(mode)
|
337
|
-
if mode == :current || mode == :fvmi
|
338
|
-
self.measure_mode = 0
|
339
|
-
elsif mode == :voltage || mode == :fimv
|
340
|
-
self.measure_mode = 1
|
341
|
-
else
|
342
|
-
fail "Unknown measure mode: #{mode}"
|
343
|
-
end
|
344
|
-
end
|
345
|
-
|
346
290
|
# Returns true if instance configured for force current, measure voltage
|
347
291
|
def fimv?
|
348
292
|
measure_mode == 1
|
@@ -541,6 +541,92 @@ module OrigenTesters
|
|
541
541
|
self.wait_flags = d + c + b + a
|
542
542
|
self
|
543
543
|
end
|
544
|
+
|
545
|
+
# Set and enable the pre-charge voltage of a parametric test instance.
|
546
|
+
def set_pre_charge(val)
|
547
|
+
if val
|
548
|
+
self.pre_charge_enable = 1
|
549
|
+
self.pre_charge = val
|
550
|
+
else
|
551
|
+
self.pre_charge_enable = 0
|
552
|
+
end
|
553
|
+
self
|
554
|
+
end
|
555
|
+
alias_method :set_precharge, :set_pre_charge
|
556
|
+
|
557
|
+
# Returns a hash containing key meta data about the test instance, this is
|
558
|
+
# intended to be used in documentation
|
559
|
+
def to_meta
|
560
|
+
m = { 'Test' => name,
|
561
|
+
'Type' => type
|
562
|
+
}
|
563
|
+
if type == :functional
|
564
|
+
m['Pattern'] = pattern
|
565
|
+
elsif type == :board_pmu || type == :pin_pmu
|
566
|
+
m['Measure'] = fvmi? ? 'current' : 'voltage'
|
567
|
+
if hi_lo_limit_valid & 2 != 0
|
568
|
+
m['Hi'] = hi_limit
|
569
|
+
end
|
570
|
+
if hi_lo_limit_valid & 1 != 0
|
571
|
+
m['Lo'] = lo_limit
|
572
|
+
end
|
573
|
+
m['Hi'] = hi_limit
|
574
|
+
m['Lo'] = lo_limit
|
575
|
+
if force_cond
|
576
|
+
m['Force'] = force_cond
|
577
|
+
end
|
578
|
+
end
|
579
|
+
m['DC'] = "#{dc_category} (#{dc_selector})"
|
580
|
+
m['AC'] = "#{ac_category} (#{ac_selector})"
|
581
|
+
m.merge(@meta)
|
582
|
+
end
|
583
|
+
|
584
|
+
# Set the meaure mode of a parametric test instance, either:
|
585
|
+
# * :voltage / :fimv
|
586
|
+
# * :current / :fvmi
|
587
|
+
def set_measure_mode(mode)
|
588
|
+
if mode == :current || mode == :fvmi
|
589
|
+
self.measure_mode = 0
|
590
|
+
elsif mode == :voltage || mode == :fimv
|
591
|
+
self.measure_mode = 1
|
592
|
+
else
|
593
|
+
fail "Unknown measure mode: #{mode}"
|
594
|
+
end
|
595
|
+
end
|
596
|
+
|
597
|
+
# Set and enable the hi limit of a parametric test instance, passing in
|
598
|
+
# nil or false as the lim parameter will disable the hi limit.
|
599
|
+
def set_hi_limit(lim)
|
600
|
+
if lim
|
601
|
+
if $tester.j750?
|
602
|
+
self.hi_lo_limit_valid = hi_lo_limit_valid | 2
|
603
|
+
end
|
604
|
+
self.hi_limit = lim
|
605
|
+
else
|
606
|
+
if $tester.j750?
|
607
|
+
self.hi_lo_limit_valid = hi_lo_limit_valid & 1
|
608
|
+
end
|
609
|
+
end
|
610
|
+
self
|
611
|
+
end
|
612
|
+
alias_method :hi_limit=, :set_hi_limit
|
613
|
+
|
614
|
+
# Set and enable the hi limit of a parametric test instance, passing in
|
615
|
+
# nil or false as the lim parameter will disable the hi limit.
|
616
|
+
def set_lo_limit(lim)
|
617
|
+
if lim
|
618
|
+
if $tester.j750?
|
619
|
+
self.hi_lo_limit_valid = hi_lo_limit_valid | 1
|
620
|
+
end
|
621
|
+
self.lo_limit = lim
|
622
|
+
else
|
623
|
+
if $tester.j750?
|
624
|
+
self.hi_lo_limit_valid = hi_lo_limit_valid & 2
|
625
|
+
end
|
626
|
+
end
|
627
|
+
self
|
628
|
+
end
|
629
|
+
alias_method :lo_limit=, :set_lo_limit
|
544
630
|
end
|
545
631
|
end
|
546
632
|
end
|
@@ -38,6 +38,9 @@ module OrigenTesters
|
|
38
38
|
@digital_instrument = 'hsdm' # 'hsdm' for HSD1000 and UP800, ok with UP1600 though
|
39
39
|
|
40
40
|
@capture_state = 'V' # STV requires valid 'V' expect data
|
41
|
+
|
42
|
+
@set_msb_issued = false # Internal flag to keep track of set_msb usage, allowing for set_lsb to be used as a readcode
|
43
|
+
@microcode[:keepalive] = 'keepalive'
|
41
44
|
end
|
42
45
|
|
43
46
|
def freq_count(pin, options = {})
|
@@ -124,12 +127,51 @@ module OrigenTesters
|
|
124
127
|
end
|
125
128
|
|
126
129
|
def call_match
|
127
|
-
fail 'Method call_match not yet supported for UltraFLEX!'
|
130
|
+
# fail 'Method call_match not yet supported for UltraFLEX!'
|
131
|
+
@match_counter = @match_counter || 0
|
132
|
+
call_subroutine("match_done_#{@match_counter}")
|
133
|
+
@match_counter += 1 unless @match_counter == (@match_entries || 1) - 1
|
134
|
+
end
|
135
|
+
|
136
|
+
# Ultraflex implementation of J750-style 'set_code'
|
137
|
+
#
|
138
|
+
# Set a readcode, using one of the Ultraflex general-purpose counters.
|
139
|
+
# Counter C15 is used by default, this can be changed by the caller if necessary.
|
140
|
+
#
|
141
|
+
# Use to set an explicit readcode for communicating with the tester. This method
|
142
|
+
# will generate an additional vector (or 2, depending if set_msb is needed).
|
143
|
+
#
|
144
|
+
# NOTE: Some caveats when using this method:
|
145
|
+
# - When setting a counter from the pattern microcode, the actual Patgen counter value is set to n-1.
|
146
|
+
# This method adjusts by using a value of n+1, so the value read by the tester is the original intended value.
|
147
|
+
#
|
148
|
+
# - When setting a counter from pattern microcode, the upper bits must be loaded separately using 'set_msb'.
|
149
|
+
# This method calls the set_msb opcode if needed - note the tester must mask the upper 16 bits to get the desired value.
|
150
|
+
# The set_msb opcode will also generate a second vector the first time the set_code method is called.
|
151
|
+
#
|
152
|
+
# ==== Examples
|
153
|
+
# $tester.set_code(55)
|
154
|
+
#
|
155
|
+
def set_code(*code)
|
156
|
+
options = code.last.is_a?(Hash) ? code.pop : {}
|
157
|
+
options = { counter: 'c15'
|
158
|
+
}.merge(options)
|
159
|
+
cc " Using counter #{options[:counter]} as set_code replacement - value set to #{code[0]} + 1"
|
160
|
+
unless @set_msb_issued
|
161
|
+
set_msb(1)
|
162
|
+
cycle # set_msb doesn't issue a cycle
|
163
|
+
end
|
164
|
+
cycle(microcode: "set #{options[:counter]} #{code[0].next}") #+1 here to align with VBT
|
128
165
|
end
|
129
166
|
|
130
|
-
def
|
131
|
-
|
132
|
-
|
167
|
+
def set_code_no_msb(*code)
|
168
|
+
options = code.last.is_a?(Hash) ? code.pop : {}
|
169
|
+
options = { counter: 'c15'
|
170
|
+
}.merge(options)
|
171
|
+
unless @set_msb_issued
|
172
|
+
cycle # set_msb doesn't issue a cycle
|
173
|
+
end
|
174
|
+
cycle(microcode: "set #{options[:counter]} #{code[0].next}") #+1 here to align with VBT
|
133
175
|
end
|
134
176
|
|
135
177
|
def loop_vectors(name, number_of_loops, global = false, label_first = false)
|
@@ -189,7 +231,6 @@ module OrigenTesters
|
|
189
231
|
options[:dc_pins] = get_dc_instr_pins
|
190
232
|
options[:digsrc_pins] = get_digsrc_pins
|
191
233
|
options[:digcap_pins] = get_digcap_pins
|
192
|
-
|
193
234
|
if options[:dc_pins]
|
194
235
|
options[:dc_pins].each do |pin|
|
195
236
|
options[:instruments].merge!(pin => 'DCVS')
|
@@ -292,11 +333,11 @@ module OrigenTesters
|
|
292
333
|
fail 'ERROR: block not passed to match_block!'
|
293
334
|
end
|
294
335
|
|
295
|
-
if options[:check_for_fails]
|
296
|
-
cc 'NOTE: check for fails prior to match loop not necessary on UltraFlex'
|
297
|
-
end
|
336
|
+
# if options[:check_for_fails]
|
337
|
+
# cc 'NOTE: check for fails prior to match loop not necessary on UltraFlex'
|
338
|
+
# end
|
298
339
|
|
299
|
-
ss 'WARNING: MATCH LOOP FOR ULTRAFLEX STILL UNDER DEVELOPMENT'
|
340
|
+
# ss 'WARNING: MATCH LOOP FOR ULTRAFLEX STILL UNDER DEVELOPMENT'
|
300
341
|
|
301
342
|
# Create BlockArgs objects in order to receive multiple blocks
|
302
343
|
match_conditions = Origen::Utility::BlockArgs.new
|
@@ -311,6 +352,23 @@ module OrigenTesters
|
|
311
352
|
fail_conditions.add(&block)
|
312
353
|
end
|
313
354
|
|
355
|
+
if options[:check_for_fails]
|
356
|
+
if options[:multiple_entries]
|
357
|
+
@match_entries.times do |i|
|
358
|
+
microcode "global subr match_done_#{i}:"
|
359
|
+
set_code(i + 100)
|
360
|
+
cycle(microcode: 'jump call_tester') unless i == @match_entries - 1
|
361
|
+
end
|
362
|
+
microcode 'call_tester:'
|
363
|
+
else
|
364
|
+
set_code(100)
|
365
|
+
end
|
366
|
+
cc 'Wait for any prior failures to propagate through the pipeline'
|
367
|
+
cycle(microcode: 'pipe_minus 1')
|
368
|
+
cc 'Now handshake with the tester to bin out and parts that have failed before they got here'
|
369
|
+
handshake(manual_stop: options[:manual_stop])
|
370
|
+
end
|
371
|
+
|
314
372
|
# Now do the main match loop
|
315
373
|
cc 'Start the match loop'
|
316
374
|
|
@@ -450,7 +508,8 @@ module OrigenTesters
|
|
450
508
|
# $tester.store(:offset => -2) # Just realized I need to capture that earlier vector
|
451
509
|
def store(*pins)
|
452
510
|
options = pins.last.is_a?(Hash) ? pins.pop : {}
|
453
|
-
options = { offset: 0
|
511
|
+
options = { offset: 0,
|
512
|
+
opcode: 'stv'
|
454
513
|
}.merge(options)
|
455
514
|
pins = pins.flatten.compact
|
456
515
|
if pins.empty?
|
@@ -459,8 +518,8 @@ module OrigenTesters
|
|
459
518
|
pins.each do |pin|
|
460
519
|
pin.restore_state do
|
461
520
|
pin.capture
|
462
|
-
update_vector microcode:
|
463
|
-
update_vector_pin_val pin, microcode:
|
521
|
+
update_vector microcode: options[:opcode], offset: options[:offset]
|
522
|
+
update_vector_pin_val pin, microcode: options[:opcode], offset: options[:offset]
|
464
523
|
last_vector(options[:offset]).dont_compress = true
|
465
524
|
end
|
466
525
|
end
|
@@ -472,8 +531,8 @@ module OrigenTesters
|
|
472
531
|
microcode "reload #{name}"
|
473
532
|
end
|
474
533
|
|
475
|
-
def set_msb(
|
476
|
-
microcode "set_msb #{
|
534
|
+
def set_msb(integer)
|
535
|
+
microcode "set_msb #{integer}"
|
477
536
|
end
|
478
537
|
|
479
538
|
# Capture the next vector generated to HRAM
|
@@ -490,6 +549,7 @@ module OrigenTesters
|
|
490
549
|
def store_next_cycle(*pins)
|
491
550
|
options = pins.last.is_a?(Hash) ? pins.pop : {}
|
492
551
|
options = {
|
552
|
+
opcode: 'stv'
|
493
553
|
}.merge(options)
|
494
554
|
pins = pins.flatten.compact
|
495
555
|
if pins.empty?
|
@@ -498,7 +558,7 @@ module OrigenTesters
|
|
498
558
|
pins.each { |pin| pin.save; pin.capture }
|
499
559
|
# Register this clean up function to be run after the next vector
|
500
560
|
# is generated (SMcG: cool or what! DH: Yes, very cool!)
|
501
|
-
preset_next_vector(microcode:
|
561
|
+
preset_next_vector(microcode: options[:opcode]) do
|
502
562
|
pins.each(&:restore)
|
503
563
|
end
|
504
564
|
end
|
@@ -5,7 +5,7 @@ module OrigenTesters
|
|
5
5
|
class CustomTestInstance < Base::CustomTestInstance
|
6
6
|
# Give all UltraFLEX test instances the ability to contain limits, these will
|
7
7
|
# be rendered to Use-limit lines in the flow
|
8
|
-
attr_accessor :lo_limit, :hi_limit, :scale, :units, :defer_limits
|
8
|
+
attr_accessor :lo_limit, :hi_limit, :scale, :units, :defer_limits, :lo, :hi
|
9
9
|
|
10
10
|
# Attributes for each test instance line, first few are named directly
|
11
11
|
TEST_INSTANCE_ATTRS = %w(
|
@@ -10,7 +10,7 @@ module OrigenTesters
|
|
10
10
|
def on_test(node)
|
11
11
|
super
|
12
12
|
ins = node.find(:object).value
|
13
|
-
if ins.respond_to?(:lo_limit) && (ins.lo_limit || ins.hi_limit)
|
13
|
+
if ins.respond_to?(:lo_limit) && (ins.lo_limit || ins.hi_limit) || ins.respond_to?(:lo) && (ins.lo || ins.hi)
|
14
14
|
if ins.defer_limits
|
15
15
|
completed_lines.last.opcode = 'Test-defer-limits'
|
16
16
|
end
|
@@ -18,10 +18,19 @@ module OrigenTesters
|
|
18
18
|
limit.type = :use_limit
|
19
19
|
limit.opcode = 'Use-Limit'
|
20
20
|
limit.parameter = nil
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
if ins.respond_to?(:lo_limit)
|
22
|
+
lo = ins.lo_limit
|
23
|
+
hi = ins.hi_limit
|
24
|
+
if lo.nil?
|
25
|
+
lo = ins.lo
|
26
|
+
end
|
27
|
+
if hi.nil?
|
28
|
+
hi = ins.hi
|
29
|
+
end
|
30
|
+
elsif ins.respond_to?(:lo)
|
31
|
+
lo = ins.lo
|
32
|
+
hi = ins.hi
|
33
|
+
end
|
25
34
|
size = 1
|
26
35
|
if lo.is_a?(Array)
|
27
36
|
size = lo.size if lo.size > size
|
@@ -52,9 +61,11 @@ module OrigenTesters
|
|
52
61
|
s = ins.scale
|
53
62
|
end
|
54
63
|
else
|
55
|
-
|
56
|
-
|
57
|
-
|
64
|
+
unless $tester.ultraflex?
|
65
|
+
s = lowest_scale(scale_of(l), scale_of(h))
|
66
|
+
l = scaled(l, s)
|
67
|
+
h = scaled(h, s)
|
68
|
+
end
|
58
69
|
end
|
59
70
|
line.lolim = l
|
60
71
|
line.hilim = h
|
@@ -12,7 +12,7 @@ module OrigenTesters
|
|
12
12
|
|
13
13
|
# Give all UltraFLEX test instances the ability to contain limits, these will
|
14
14
|
# be rendered to Use-limit lines in the flow
|
15
|
-
attr_accessor :lo_limit, :hi_limit, :scale, :units, :defer_limits
|
15
|
+
attr_accessor :lo_limit, :hi_limit, :scale, :units, :defer_limits, :lo, :hi
|
16
16
|
|
17
17
|
# Attributes for additional test instance arguments beyond those described above
|
18
18
|
TEST_INSTANCE_EXTRA_ARGS = 130
|
@@ -268,6 +268,46 @@ module OrigenTesters
|
|
268
268
|
self.wait_flag4 = d
|
269
269
|
self
|
270
270
|
end
|
271
|
+
|
272
|
+
# Set and enable the pre-charge voltage of a parametric test instance.
|
273
|
+
def set_pre_charge(val)
|
274
|
+
self
|
275
|
+
end
|
276
|
+
alias_method :set_precharge, :set_pre_charge
|
277
|
+
|
278
|
+
# Returns a hash containing key meta data about the test instance, this is
|
279
|
+
# intended to be used in documentation
|
280
|
+
def to_meta
|
281
|
+
m = { 'Test' => name,
|
282
|
+
'Type' => type
|
283
|
+
}
|
284
|
+
if type == :functional
|
285
|
+
m['Pattern'] = pattern
|
286
|
+
elsif type == :board_pmu || type == :pin_pmu
|
287
|
+
m['Measure'] = fvmi? ? 'current' : 'voltage'
|
288
|
+
m['Hi'] = hi_limit
|
289
|
+
m['Lo'] = lo_limit
|
290
|
+
if force_cond
|
291
|
+
m['Force'] = force_cond
|
292
|
+
end
|
293
|
+
end
|
294
|
+
m['DC'] = "#{dc_category} (#{dc_selector})"
|
295
|
+
m['AC'] = "#{ac_category} (#{ac_selector})"
|
296
|
+
m.merge(@meta)
|
297
|
+
end
|
298
|
+
|
299
|
+
# Set the meaure mode of a parametric test instance, either:
|
300
|
+
# * :voltage / :fimv
|
301
|
+
# * :current / :fvmi
|
302
|
+
def set_measure_mode(mode)
|
303
|
+
if mode == :current || mode == :fvmi
|
304
|
+
self.measure_mode = 2
|
305
|
+
elsif mode == :voltage || mode == :fimv
|
306
|
+
self.measure_mode = 1
|
307
|
+
else
|
308
|
+
fail "Unknown measure mode: #{mode}"
|
309
|
+
end
|
310
|
+
end
|
271
311
|
end
|
272
312
|
end
|
273
313
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: origen_testers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-05-
|
11
|
+
date: 2016-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -399,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
399
399
|
version: 1.8.11
|
400
400
|
requirements: []
|
401
401
|
rubyforge_project:
|
402
|
-
rubygems_version: 2.
|
402
|
+
rubygems_version: 2.2.2
|
403
403
|
signing_key:
|
404
404
|
specification_version: 4
|
405
405
|
summary: This plugin provides Origen tester models to drive ATE type testers like
|