origen_testers 0.50.0 → 0.51.0

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
  SHA256:
3
- metadata.gz: e5895221d7385ac33677fffba9d998bf29a475978677f740968f1cfda57677e1
4
- data.tar.gz: 5f623aacb11d0ea9b56b36fd3186cf32dbf2724e034de5d2b1822e02c507aa53
3
+ metadata.gz: c5ff2e2f1b209e2dadbf045bc52f45361a8220f7f43b5fa27a1782f6c2b61a9e
4
+ data.tar.gz: a0387e3b6629f520a42dde25ae6c5b78a86d4f93a1beefbff6bd865988b8577d
5
5
  SHA512:
6
- metadata.gz: bae858530cf088b08ac1938411815e6d67fe86524fa98824f328583dfa6c319e5143588b868edd16ffef31a119e665e64cde113d0ea5c71ba8dd0ddb3b899529
7
- data.tar.gz: 368c6d87bf5fb030e83cf96283c0d6ce43844a442f2719a10a76ddf3c2f4906ef7cd4012d7fdea9bf5eec4f39aedfaa0f1bba0276892978e2e91c26495ac9168
6
+ metadata.gz: 8c1b698fc08e769ce66ce5b65073f1aa3644b59497587849338c6fa343c615e42c5300e45238d4f706c347d6b7e354aab7fae28541f90f8845ee3cdcd0633a72
7
+ data.tar.gz: a227d7203f78c6d36aa2963478067b8e4a7746e588f464d680da7e36069f48fa2bbed19743d8e2923045bb53adb42856ab700061bd52492d28bf0c188f7c2db3
data/config/commands.rb CHANGED
@@ -200,7 +200,7 @@ when "examples", "test"
200
200
  puts
201
201
  puts "To approve any diffs in the reference.list files run the following command:"
202
202
  puts
203
- platforms = %w(j750 j750_hpt ultraflex v93k v93k_multiport v93k_enable_flow v93k_disable_flow v93k_limits_file v93k_global v93k_smt8) # put here the various platforms used in examples/program_generator.rb
203
+ platforms = %w(j750 j750_literals j750_hpt ultraflex ultraflex_literals v93k v93k_multiport v93k_enable_flow v93k_disable_flow v93k_limits_file v93k_global v93k_smt8) # put here the various platforms used in examples/program_generator.rb
204
204
  reflist_command = ''
205
205
  platforms.each do |platform|
206
206
  unless reflist_command == ''
data/config/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module OrigenTesters
2
2
  MAJOR = 0
3
- MINOR = 50
3
+ MINOR = 51
4
4
  BUGFIX = 0
5
5
  DEV = nil
6
6
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -9,15 +9,25 @@ module OrigenTesters::ATP
9
9
  end
10
10
 
11
11
  # Make all IDs lower cased symbols
12
+ # unless literal_flags is set
12
13
  def on_id(node)
13
14
  id = node.to_a[0]
14
- node.updated(nil, [clean(id)])
15
+ if tester.literal_flags
16
+ node.updated(nil, [id])
17
+ else
18
+ node.updated(nil, [clean(id)])
19
+ end
15
20
  end
16
21
 
17
22
  # Make all ID references use the lower case symbols
23
+ # unless literal_flags is set
18
24
  def on_if_failed(node)
19
25
  id, *children = *node
20
- node.updated(nil, [clean(id)] + process_all(children))
26
+ if tester.literal_flags
27
+ node.updated(nil, [id] + process_all(children))
28
+ else
29
+ node.updated(nil, [clean(id)] + process_all(children))
30
+ end
21
31
  end
22
32
  alias_method :on_if_passed, :on_if_failed
23
33
  alias_method :on_if_any_failed, :on_if_failed
@@ -425,7 +425,11 @@ module OrigenTesters
425
425
  flag[0] = ''
426
426
  flag
427
427
  else
428
- flag.downcase
428
+ if tester.literal_enables
429
+ flag
430
+ else
431
+ flag.downcase
432
+ end
429
433
  end
430
434
  end
431
435
 
@@ -23,6 +23,11 @@ module OrigenTesters
23
23
  attr_accessor :min_repeat_loop
24
24
  alias_method :min_repeat_count, :min_repeat_loop
25
25
  alias_method :min_repeat_count=, :min_repeat_loop=
26
+
27
+ # Control literal flag definitions
28
+ attr_accessor :literal_flags # whether flags should be exactly as indicated
29
+ attr_accessor :literal_enables # whether enables should be exactly as indicated
30
+
26
31
  # NOTE: DO NOT USE THIS CLASS DIRECTLY ONLY USED AS PARENT FOR
27
32
  # DESIRED TESTER CLASS
28
33
 
@@ -64,6 +69,13 @@ module OrigenTesters
64
69
  @overlay_history = {} # used to track labels, subroutines, digsrc pins used etc
65
70
  @overlay_subr = nil
66
71
  @capture_history = {}
72
+
73
+ if options[:literal_flags]
74
+ @literal_flags = true
75
+ end
76
+ if options[:literal_enables]
77
+ @literal_enables = true
78
+ end
67
79
  end
68
80
 
69
81
  def igxl_based?
@@ -26,8 +26,8 @@ module OrigenTesters
26
26
 
27
27
  # Returns a new J750 instance, normally there would only ever be one of these
28
28
  # assigned to the global variable such as $tester by your target.
29
- def initialize
30
- super
29
+ def initialize(options = {})
30
+ super(options)
31
31
  @pipeline_depth = 34 # for extended mode is vectors, for normal mode is vector pairs (54 for J750Ex)
32
32
  @use_hv_pin = false # allows to use high voltage for a pin for all patterns
33
33
  @software_version = '3.50.40'
@@ -14,8 +14,8 @@ module OrigenTesters
14
14
  class J750_HPT < J750
15
15
  require 'origen_testers/igxl_based_tester/j750_hpt/generator.rb'
16
16
 
17
- def initialize
18
- super
17
+ def initialize(options = {})
18
+ super(options)
19
19
  @@hpt_mode = true
20
20
  @drive_hi_state = '.1'
21
21
  @drive_lo_state = '.0'
@@ -27,6 +27,10 @@ module OrigenTesters
27
27
  alias_method :min_repeat_count, :min_repeat_loop
28
28
  alias_method :min_repeat_count=, :min_repeat_loop=
29
29
 
30
+ # Control literal flag definitions
31
+ attr_accessor :literal_flags # whether flags should be exactly as indicated
32
+ attr_accessor :literal_enables # whether enables should be exactly as indicated
33
+
30
34
  # permit option to generate multiport type patterns
31
35
  # and use multiport type code
32
36
  attr_accessor :multiport
@@ -140,6 +144,13 @@ module OrigenTesters
140
144
  @create_limits_file = false
141
145
  end
142
146
  end
147
+ if options[:literal_flags]
148
+ @literal_flags = true
149
+ end
150
+ if options[:literal_enables]
151
+ @literal_enables = true
152
+ end
153
+
143
154
  @package_namespace = options.delete(:package_namespace)
144
155
  self.limitfile_test_modes = options[:limitfile_test_modes] || options[:limitsfile_test_modes]
145
156
  self.force_pass_on_continue = options[:force_pass_on_continue]
@@ -0,0 +1,139 @@
1
+ # Flow to exercise the Flow Control API related to using exact literal value of flag (no lowercase or cleanup) as
2
+ # controlled at tester API level
3
+ #
4
+ # Some of the other flows also cover the flow control API and those tests are used
5
+ # to guarantee that the test ID references work when sub-flows are involved.
6
+ # This flow provides a full checkout of all flow control methods.
7
+ Flow.create interface: 'OrigenTesters::Test::Interface', flow_name: "Flow Control Flag/Enable Literal Testing" do
8
+ flow.flow_description = 'Flow to exercise the Flow Control API' if tester.v93k?
9
+
10
+ self.resources_filename = 'flow_control'
11
+
12
+ log "Test that if_failed works using Literal"
13
+ func :read1, id: :Test__Flag1, bin: 10, number: 50000
14
+ func :erase1, if_failed: :Test__Flag1, bin: 12, number: 50010
15
+
16
+ log "Test the block form of if_failed"
17
+ func :read2, id: :Test__Flag2, bin: 10, number: 50020
18
+ if_failed :Test__Flag2 do
19
+ func :erase2, number: 50030
20
+ func :erase2, number: 50040
21
+ end
22
+
23
+ log "Test that if_passed works"
24
+ func :read1, id: :Test__Flag3, bin: 10, number: 50050
25
+ func :pgm1, if_passed: :Test__Flag3, number: 50060
26
+
27
+ log "Test the block form of if_passed"
28
+ func :read2, id: :Test__Flag4, bin: 10, number: 50070
29
+ if_passed :Test__Flag4 do
30
+ func :pgm1, number: 50080
31
+ func :pgm1, number: 50090
32
+ end
33
+
34
+ log "Test that if_ran works"
35
+ func :pgm, id: :Test__Flag5, bin: 10, number: 50100
36
+ func :read0, if_ran: :Test__Flag5, number: 50110
37
+
38
+ log "Test the block form of if_ran"
39
+ func :pgm, id: :Test__Flag6, bin: 10, number: 50120
40
+ if_ran :Test__Flag6 do
41
+ func :read0, number: 50130
42
+ func :read0, number: 50140
43
+ end
44
+
45
+ log "Test that unless_ran works"
46
+ func :pgm, id: :Test__Flag7, bin: 10, number: 50150
47
+ func :read0, unless_ran: :Test__Flag7, number: 50160
48
+
49
+ log "Test the block form of unless_ran"
50
+ func :pgm, id: :Test__Flag8, bin: 10, number: 50170
51
+ unless_ran :Test__Flag8 do
52
+ func :read0, number: 50180
53
+ func :read0, number: 50190
54
+ end
55
+
56
+ log "Test that if_enable works"
57
+ func :extra_test, if_enable: :Extras__123, number: 50270
58
+
59
+ log "Test the block form of if_enable"
60
+ if_enable :Cz__123 do
61
+ func :cz_test1, number: 50280
62
+ func :cz_test2, number: 50290
63
+ end
64
+
65
+ log "Test that unless_enable works"
66
+ func :long_test, unless_enable: :Quick__123, number: 50300
67
+
68
+ log "Test the block form of unless_enable"
69
+ unless_enable :Quick__123 do
70
+ func :long_test1, number: 50310
71
+ func :long_test2, number: 50320
72
+ end
73
+
74
+ log "Test that if_any_failed works"
75
+ func :test1, id: :iFA__1, number: 50330
76
+ func :test2, id: :iFA__2, number: 50340
77
+ func :test3, if_any_failed: [:iFA__1, :iFA__2], number: 50350
78
+
79
+ log "Test the block form of if_any_failed"
80
+ func :test1, id: :OOF__Passcode1, number: 50360
81
+ func :test2, id: :OOF__Passcode2, number: 50370
82
+ if_any_failed :OOF__Passcode1, :OOF__Passcode2 do
83
+ func :test3, number: 50380
84
+ func :test4, number: 50390
85
+ end
86
+
87
+ log "Test that if_all_failed works"
88
+ func :test1, id: :iFall__1, number: 50400
89
+ func :test2, id: :iFall__2, number: 50410
90
+ func :test3, if_all_failed: [:iFall__1, :iFall__2], number: 50420
91
+
92
+ log "Test the block form of if_all_failed"
93
+ func :test1, id: :iFall__B1, number: 50430
94
+ func :test2, id: :iFall__B2, number: 50440
95
+ if_all_failed [:iFall__B1, :iFall__B2] do
96
+ func :test3, number: 50450
97
+ func :test4, number: 50460
98
+ end
99
+
100
+ log "Test that if_any_passed works"
101
+ func :test1, id: :if__AP1, number: 50470
102
+ func :test2, id: :if__AP2, number: 50480
103
+ func :test3, if_any_passed: [:if__AP1, :if__AP2], number: 50490
104
+
105
+ log "Test the block form of if_any_passed"
106
+ func :test1, id: :if__APB1, number: 50500
107
+ func :test2, id: :if__APB2, number: 50510
108
+ if_any_passed :if__APB1, :if__APB2 do
109
+ func :test3, number: 50520
110
+ func :test4, number: 50530
111
+ end
112
+
113
+ log "Test that if_all_passed works"
114
+ func :test1, id: :iFall__P1, number: 50540
115
+ func :test2, id: :iFall__P2, number: 50550
116
+ func :test3, if_all_passed: [:iFall__P1, :iFall__P2], number: 50560
117
+
118
+ log "Test the block form of if_all_passed"
119
+ func :test1, id: :iFall__PB1, number: 50570
120
+ func :test2, id: :iFall__PB2, number: 50580
121
+ if_all_passed :iFall__PB1, :iFall__PB2 do
122
+ func :test3, number: 50590
123
+ func :test4, number: 50600
124
+ end
125
+
126
+ log "Test that group-level dependencies work"
127
+ group "grp1", id: :Group__1 do
128
+ func :grp1_test1, bin: 5, number: 50610
129
+ func :grp1_test2, bin: 5, number: 50620
130
+ func :grp1_test3, bin: 5, number: 50630
131
+ end
132
+
133
+ group "grp2", if_failed: :Group__1 do
134
+ func :grp2_test1, bin: 5, number: 50640
135
+ func :grp2_test2, bin: 5, number: 50650
136
+ func :grp2_test3, bin: 5, number: 50660
137
+ end
138
+
139
+ 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.50.0
4
+ version: 0.51.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -532,6 +532,7 @@ files:
532
532
  - program/custom_tests.rb
533
533
  - program/flow_control.rb
534
534
  - program/flow_control_flag_bug.rb
535
+ - program/flow_control_literals.rb
535
536
  - program/prb1.rb
536
537
  - program/prb1_resources.rb
537
538
  - program/prb2.rb
@@ -600,7 +601,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
600
601
  - !ruby/object:Gem::Version
601
602
  version: '0'
602
603
  requirements: []
603
- rubygems_version: 3.1.4
604
+ rubygems_version: 3.1.6
604
605
  signing_key:
605
606
  specification_version: 4
606
607
  summary: This plugin provides Origen tester models to drive ATE type testers like