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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 41f3bdac1b3527a39fb1849d9a213e96fce04558
4
- data.tar.gz: 9f729634e1e299c28e2764cc63a3479a75fc462e
3
+ metadata.gz: ca5ef883e61569b03873dd4ef28d2462620b5c67
4
+ data.tar.gz: d0478e7f02690978ca429b6a77a30b40bde21f73
5
5
  SHA512:
6
- metadata.gz: 6ba4defab4a02a9d84e4b02d119569f930b8b5d636ddc32fa5d6142b16e2e79da29786c69c706bf9924c6eebf54d5911c3c0b3d709ad95775f4e0c21eb7f32e9
7
- data.tar.gz: 0a3b40ffbd6c4599f90fa84f44180a80c87d4dd09f6bb829a80487eaf2b22e08a1e9c54de899b4980d0e0882fdc46163e9ff117e8421451a9060acf9a6d753e2
6
+ metadata.gz: 9c583d05f0ab49d7f525a13b24a38e632a00a16f0e973058f331716f369a17bd0c07af6b574ffefdf387431fa33359c3f005abb762a1adb746a8327452496ba4
7
+ data.tar.gz: 16230dd1ed48febb08557e476463af6893b149b33391ff000e2c41c84c3451beb3982a85cc46c4b38bdbc69184d2ac5b17fe631269e940d2cd050184fa26a4f0
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module OrigenTesters
2
2
  MAJOR = 0
3
3
  MINOR = 9
4
- BUGFIX = 6
4
+ BUGFIX = 7
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -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
- microcode "global subr #{name}:"
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
- $tester.cycle microcode: "#{@microcode[:keepalive]}"
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
- cycle(microcode: 'return') # DH ONLY IF SUBROUTINE!!
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
@@ -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
@@ -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.6
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-05-09 00:00:00.000000000 Z
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.5.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