origen_testers 0.9.6 → 0.9.7
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.
- checksums.yaml +4 -4
- data/config/version.rb +1 -1
- data/lib/origen_testers/igxl_based_tester/base.rb +6 -2
- data/lib/origen_testers/igxl_based_tester/j750.rb +4 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex.rb +36 -1
- data/lib/origen_testers/test/dut.rb +39 -0
- data/pattern/read_write_reg.rb +9 -0
- data/pattern/subroutines.rb +6 -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: ca5ef883e61569b03873dd4ef28d2462620b5c67
|
4
|
+
data.tar.gz: d0478e7f02690978ca429b6a77a30b40bde21f73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c583d05f0ab49d7f525a13b24a38e632a00a16f0e973058f331716f369a17bd0c07af6b574ffefdf387431fa33359c3f005abb762a1adb746a8327452496ba4
|
7
|
+
data.tar.gz: 16230dd1ed48febb08557e476463af6893b149b33391ff000e2c41c84c3451beb3982a85cc46c4b38bdbc69184d2ac5b17fe631269e940d2cd050184fa26a4f0
|
data/config/version.rb
CHANGED
@@ -331,7 +331,11 @@ module OrigenTesters
|
|
331
331
|
# $tester.end_subroutine
|
332
332
|
def start_subroutine(name, options = {})
|
333
333
|
local_subroutines << name.to_s.chomp unless local_subroutines.include?(name.to_s.chomp) || @inhibit_vectors
|
334
|
-
|
334
|
+
if $tester.ultraflex? && (name =~ /keep_?alive/ || options[:keep_alive])
|
335
|
+
microcode "keepalive subr #{name}:"
|
336
|
+
else
|
337
|
+
microcode "global subr #{name}:"
|
338
|
+
end
|
335
339
|
end
|
336
340
|
|
337
341
|
# End a subroutine.
|
@@ -727,7 +731,7 @@ module OrigenTesters
|
|
727
731
|
$tester.align_to_last
|
728
732
|
# cycle(:microcode => "#{$dut.end_of_pattern_label}:") if $dut.end_of_pattern_label
|
729
733
|
if options[:end_in_ka]
|
730
|
-
|
734
|
+
keep_alive(options)
|
731
735
|
else
|
732
736
|
if options[:end_with_halt]
|
733
737
|
$tester.cycle microcode: 'halt'
|
@@ -259,6 +259,10 @@ module OrigenTesters
|
|
259
259
|
@unique_counter += 1 # Increment so a different label will be applied if another
|
260
260
|
# handshake is called in the same pattern
|
261
261
|
end
|
262
|
+
|
263
|
+
def keep_alive
|
264
|
+
$tester.cycle microcode: "#{@microcode[:keepalive]}"
|
265
|
+
end
|
262
266
|
end
|
263
267
|
end
|
264
268
|
J750 = IGXLBasedTester::J750
|
@@ -472,7 +472,22 @@ module OrigenTesters
|
|
472
472
|
cycle(microcode: "if (branch_expr) jump block_#{i}_notyet_matched_#{@unique_counter}")
|
473
473
|
cc 'Match found'
|
474
474
|
cycle(microcode: 'pop_loop')
|
475
|
-
|
475
|
+
if options[:on_block_match_goto]
|
476
|
+
if options[:on_block_match_goto].is_a?(Hash)
|
477
|
+
if options[:on_block_match_goto][i]
|
478
|
+
custom_jump = options[:on_block_match_goto][i]
|
479
|
+
else
|
480
|
+
custom_jump = nil
|
481
|
+
end
|
482
|
+
else
|
483
|
+
custom_jump = options[:on_block_match_goto]
|
484
|
+
end
|
485
|
+
end
|
486
|
+
if custom_jump
|
487
|
+
cycle(microcode: "jump #{custom_jump}")
|
488
|
+
else
|
489
|
+
cycle(microcode: "jump match_loop_end_#{@unique_counter}")
|
490
|
+
end
|
476
491
|
cc 'Match not yet found'
|
477
492
|
cycle(microcode: "block_#{i}_notyet_matched_#{@unique_counter}:")
|
478
493
|
end
|
@@ -524,6 +539,12 @@ module OrigenTesters
|
|
524
539
|
condition.call
|
525
540
|
end
|
526
541
|
end
|
542
|
+
if options[:on_timeout_goto]
|
543
|
+
cycle(microcode: "jump #{options[:on_timeout_goto]}")
|
544
|
+
else
|
545
|
+
cycle(microcode: "jump match_loop_end_#{@unique_counter}")
|
546
|
+
end
|
547
|
+
cycle(microcode: "match_loop_end_#{@unique_counter}:")
|
527
548
|
|
528
549
|
@unique_counter += 1 # Increment so a different label will be applied if another
|
529
550
|
# handshake is called in the same pattern
|
@@ -558,6 +579,20 @@ module OrigenTesters
|
|
558
579
|
# handshake is called in the same pattern
|
559
580
|
end
|
560
581
|
|
582
|
+
def keep_alive(options = {})
|
583
|
+
if options[:subroutine_pat]
|
584
|
+
cycle(microcode: 'clr_subr')
|
585
|
+
cycle(microcode: "#{@microcode[:enable]} (#{@flags[3]})")
|
586
|
+
cycle(microcode: "#{@microcode[:set_flag]} (#{@flags[3]})")
|
587
|
+
cycle(microcode: "loop_here_#{@unique_counter}: if (branch_expr) jump loop_here_#{@unique_counter}")
|
588
|
+
cycle
|
589
|
+
@unique_counter += 1 # Increment so a different label will be applied if another
|
590
|
+
else
|
591
|
+
$tester.cycle
|
592
|
+
call_subroutine('keep_alive')
|
593
|
+
end
|
594
|
+
end
|
595
|
+
|
561
596
|
# Capture a vector to the tester HRAM.
|
562
597
|
#
|
563
598
|
# This method applys a store vector (stv) opcode to the previous vector, note that is does
|
@@ -137,6 +137,27 @@ module OrigenTesters
|
|
137
137
|
force_fail_on_timeout: true,
|
138
138
|
clr_fail_post_match: true,
|
139
139
|
manual_stop: true)
|
140
|
+
elsif options[:type] == :match_2pins_custom_jump
|
141
|
+
# Match on TDO pin state
|
142
|
+
$tester.wait(match: true,
|
143
|
+
pin: pin(:tdo),
|
144
|
+
state: :high,
|
145
|
+
pin2: pin(:tms),
|
146
|
+
state2: :high,
|
147
|
+
time_in_us: options[:delay_in_us],
|
148
|
+
on_pin_match_goto: { 0 => 'no_fails_found' },
|
149
|
+
on_timeout_goto: 'no_fails_found',
|
150
|
+
global_loops: true,
|
151
|
+
check_for_fails: true,
|
152
|
+
force_fail_on_timeout: true,
|
153
|
+
clr_fail_post_match: true,
|
154
|
+
manual_stop: true)
|
155
|
+
$tester.cycle
|
156
|
+
$tester.set_code(200)
|
157
|
+
$tester.branch('match_done')
|
158
|
+
$tester.label('no_fails_found')
|
159
|
+
$tester.set_code(201)
|
160
|
+
$tester.label('match_done')
|
140
161
|
elsif options[:type] == :multiple_entries
|
141
162
|
# Match on TDO pin state, with multiple subr entry points
|
142
163
|
$tester.wait(match: true,
|
@@ -179,6 +200,24 @@ module OrigenTesters
|
|
179
200
|
end
|
180
201
|
end
|
181
202
|
|
203
|
+
def keepalive(options = {})
|
204
|
+
options = {
|
205
|
+
define: false, # whether to define subr or call it
|
206
|
+
allow_subroutine: false,
|
207
|
+
subroutine_pat: true
|
208
|
+
}.merge(options)
|
209
|
+
|
210
|
+
if options[:define]
|
211
|
+
$tester.start_subroutine('keep_alive')
|
212
|
+
$tester.keep_alive(options)
|
213
|
+
$tester.end_subroutine
|
214
|
+
else
|
215
|
+
$tester.cycle
|
216
|
+
$tester.call_subroutine('keep_alive')
|
217
|
+
end
|
218
|
+
end
|
219
|
+
alias_method :keep_alive, :keepalive
|
220
|
+
|
182
221
|
def digsrc_overlay(options = {})
|
183
222
|
options = { define: false, # whether to define subr or call it
|
184
223
|
subr_name: false, # default use match type as subr name
|
data/pattern/read_write_reg.rb
CHANGED
@@ -49,10 +49,19 @@ Pattern.create do
|
|
49
49
|
ss 'Call match_2pins subroutine'
|
50
50
|
$dut.match(:type => :match_2pins)
|
51
51
|
|
52
|
+
ss 'Call match_2pins custom_jump subroutine'
|
53
|
+
$dut.match(:type => :match_2pins_custom_jump)
|
54
|
+
|
52
55
|
ss 'Call match_done subroutine'
|
53
56
|
$dut.match(:type => :match_done)
|
54
57
|
|
55
58
|
ss 'Call handshake subroutine'
|
56
59
|
$dut.handshake
|
57
60
|
|
61
|
+
# UltraFlex call a keep alive as a subroutine
|
62
|
+
if $tester.ultraflex?
|
63
|
+
ss 'Call keep_alive subroutine'
|
64
|
+
$dut.keep_alive
|
65
|
+
end
|
66
|
+
|
58
67
|
end
|
data/pattern/subroutines.rb
CHANGED
@@ -30,6 +30,9 @@ unless $tester.v93k?
|
|
30
30
|
# Define match loop with multiple entries
|
31
31
|
$dut.match(:subr_name => 'match_done6', :define => true, :type => :multiple_entries, :delay_in_us => 15_000_000)
|
32
32
|
|
33
|
+
# Define match loop with custom jump
|
34
|
+
$dut.match(:define => true, :type => :match_2pins_custom_jump)
|
35
|
+
|
33
36
|
# Define handshake subr
|
34
37
|
$dut.handshake(:define => true)
|
35
38
|
|
@@ -40,13 +43,15 @@ unless $tester.v93k?
|
|
40
43
|
# Define digsrc_overlay subr
|
41
44
|
$dut.digsrc_overlay(:subr_name => 'digsrc_overlay', :define => true, overlay_cycle_num: 64)
|
42
45
|
|
46
|
+
# test out UF keep_alive subroutine capability
|
47
|
+
$dut.keepalive(define: true)
|
48
|
+
|
43
49
|
# test out single module subroutine capability, integrated with other normal subroutines
|
44
50
|
# only for UltraFLEX
|
45
51
|
$dut.execute(define: true, name: 'overlaysub1', onemodsub: true )
|
46
52
|
$dut.execute(define: true, name: 'overlaysub2', onemodsub: true )
|
47
53
|
$dut.execute(define: true, name: 'overlaysub3', onemodsub: true )
|
48
54
|
$dut.execute(define: true, name: 'overlaysub4', onemodsub: true )
|
49
|
-
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
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.9.
|
4
|
+
version: 0.9.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -342,7 +342,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
342
342
|
version: 1.8.11
|
343
343
|
requirements: []
|
344
344
|
rubyforge_project:
|
345
|
-
rubygems_version: 2.
|
345
|
+
rubygems_version: 2.6.7
|
346
346
|
signing_key:
|
347
347
|
specification_version: 4
|
348
348
|
summary: This plugin provides Origen tester models to drive ATE type testers like
|