origen_testers 0.9.6 → 0.9.7

Sign up to get free protection for your applications and to get access to all the features.
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