origen_testers 0.51.0 → 0.51.1

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
  SHA256:
3
- metadata.gz: c5ff2e2f1b209e2dadbf045bc52f45361a8220f7f43b5fa27a1782f6c2b61a9e
4
- data.tar.gz: a0387e3b6629f520a42dde25ae6c5b78a86d4f93a1beefbff6bd865988b8577d
3
+ metadata.gz: d6f96fa1f3c65b7ab6cd0fb2c25abb378ef0cd0d9489a05cc7c94eb05becf628
4
+ data.tar.gz: 0d465b02299aceb26467727fd021736b78c959d46ece03fddd0c581495291e3d
5
5
  SHA512:
6
- metadata.gz: 8c1b698fc08e769ce66ce5b65073f1aa3644b59497587849338c6fa343c615e42c5300e45238d4f706c347d6b7e354aab7fae28541f90f8845ee3cdcd0633a72
7
- data.tar.gz: a227d7203f78c6d36aa2963478067b8e4a7746e588f464d680da7e36069f48fa2bbed19743d8e2923045bb53adb42856ab700061bd52492d28bf0c188f7c2db3
6
+ metadata.gz: d08fd272bc3331a87ac33011d22386e535981d376c0c995c4d3605794e6a7c3be7d755f69b0d851e22bf398692e98b516ce19999860e4b46fbba7af3ee1123e2
7
+ data.tar.gz: b754e33f7577da5f100e93cb7b020ad8abf014e8e7b102d17e07bace411ff5e20df0c47e5e033f74fab814ccda0bc6b89fc1b2e5e768b8cb13b9e2e03ae4a32e
data/config/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module OrigenTesters
2
2
  MAJOR = 0
3
3
  MINOR = 51
4
- BUGFIX = 0
4
+ BUGFIX = 1
5
5
  DEV = nil
6
6
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
7
7
  end
@@ -220,6 +220,15 @@ module OrigenTesters::ATP
220
220
  @pipeline[0] = add_volatile_flags(@pipeline[0], flags)
221
221
  end
222
222
 
223
+ # Indicate the that given flags should keep state between units
224
+ # prevent them from being in the initialization block
225
+ # these flags will be the user's responsibility to initialize
226
+ def add_global_flag(*flags)
227
+ options = flags.pop if flags.last.is_a?(Hash)
228
+ flags = flags.flatten
229
+ @pipeline[0] = add_global_flag_to_node(@pipeline[0], flags)
230
+ end
231
+
223
232
  # Record a description for a bin number
224
233
  def describe_bin(number, description, options = {})
225
234
  @pipeline[0] = add_bin_description(@pipeline[0], number, description, type: :hard)
@@ -947,6 +956,24 @@ module OrigenTesters::ATP
947
956
  node.updated(nil, [name, v] + nodes)
948
957
  end
949
958
 
959
+ # Ensures the flow ast has a global node, then adds the
960
+ # given flags to it
961
+ def add_global_flag_to_node(node, flags)
962
+ name, *nodes = *node
963
+ if nodes[0] && nodes[0].type == :global
964
+ v = nodes.shift
965
+ else
966
+ v = n0(:global)
967
+ end
968
+ existing = v.children.map { |f| f.type == :flag ? f.value : nil }.compact
969
+ new = []
970
+ flags.each do |flag|
971
+ new << n1(:flag, flag) unless existing.include?(flag)
972
+ end
973
+ v = v.updated(nil, v.children + new)
974
+ node.updated(nil, [name, v] + nodes)
975
+ end
976
+
950
977
  # Ensures the flow ast has a bin descriptions node, then adds the
951
978
  # given description to it
952
979
  def add_bin_description(node, number, description, options)
@@ -8,7 +8,7 @@ module OrigenTesters::ATP
8
8
  @atp
9
9
  end
10
10
 
11
- ([:test, :bin, :pass, :continue, :cz, :log, :sub_test, :volatile, :set_flag, :set, :enable, :disable, :render,
11
+ ([:test, :bin, :pass, :continue, :cz, :log, :sub_test, :volatile, :add_global_flag, :set_flag, :set, :enable, :disable, :render,
12
12
  :context_changed?, :ids, :describe_bin, :describe_softbin, :describe_soft_bin, :loop] +
13
13
  OrigenTesters::ATP::Flow::CONDITION_KEYS.keys + OrigenTesters::ATP::Flow::RELATIONAL_OPERATORS).each do |method|
14
14
  define_method method do |*args, &block|
@@ -33,6 +33,8 @@ module OrigenTesters::ATP
33
33
  n = process(node)
34
34
  if n.respond_to?(:type) && n.type == :inline
35
35
  results += n.children
36
+ elsif n.respond_to?(:type) && n.type == :global
37
+ add_global_flag(n.to_a[0].value)
36
38
  else
37
39
  results << n unless n.respond_to?(:type) && n.type == :remove
38
40
  end
@@ -64,6 +66,32 @@ module OrigenTesters::ATP
64
66
  result
65
67
  end
66
68
 
69
+ def add_global_flag(flag)
70
+ # Had to do @@ because the state got lost after the recursive calls
71
+ @@globals ||= {}
72
+ @@globals[:flags] ||= []
73
+ @@globals[:flags] << flag
74
+ end
75
+
76
+ def extract_globals(flow)
77
+ @@globals ||= {}
78
+ if v = flow.find(:global)
79
+ @@globals[:flags] ||= []
80
+ @@globals[:flags] += Array(v.find_all(:flag)).map(&:value) if v.respond_to?(:find_all) && v.method(:find_all).parameters.size == 1
81
+ end
82
+ end
83
+
84
+ def global_flags
85
+ @@globals ||= {}
86
+ @@globals[:flags] || []
87
+ end
88
+
89
+ # Returns true if the given flag name has been marked as global
90
+ def global_flag?(flag)
91
+ result = global_flags.any? { |f| clean_flag(f) == clean_flag(flag) }
92
+ result
93
+ end
94
+
67
95
  def clean_flag(flag)
68
96
  flag = flag.dup.to_s
69
97
  flag[0] = '' if flag[0] == '$'
@@ -129,7 +129,7 @@ module OrigenTesters
129
129
  current_line.flag_pass = flag
130
130
  end
131
131
  else
132
- unless set_previously
132
+ if !set_previously && !global_flags.include?(flag)
133
133
  completed_lines << platform::FlowLine.new(:defaults, flag_fail: flag)
134
134
  end
135
135
  completed_lines << new_line(:flag_true, parameter: flag)
@@ -37,6 +37,10 @@ module OrigenTesters
37
37
  @var_filename || 'global'
38
38
  end
39
39
 
40
+ def set_var_filename(new_var_filename)
41
+ @var_filename = new_var_filename
42
+ end
43
+
40
44
  def subdirectory
41
45
  @subdirectory ||= begin
42
46
  if smt8?
@@ -218,6 +222,10 @@ module OrigenTesters
218
222
  @post_test_lines = []
219
223
  @stack = { on_fail: [], on_pass: [] }
220
224
  @set_runtime_variables = ast.excluding_sub_flows.set_flags
225
+ global_flags.each do |global_var_name|
226
+ @set_runtime_variables.delete(global_var_name)
227
+ @set_runtime_variables.delete('$' + global_var_name)
228
+ end
221
229
  process(ast)
222
230
  unless smt8?
223
231
  unless flow_variables[:empty?]
@@ -309,6 +309,16 @@ Flow.create interface: 'OrigenTesters::Test::Interface', flow_name: "Flow Contro
309
309
  test :test2, number: 51470
310
310
  end
311
311
 
312
+ log 'Test global flag functionality'
313
+ add_global_flag :global
314
+ test :global_test1, on_fail: { set_flag: :$non_global }, continue: true
315
+ unless_flag "$global" do
316
+ set_flag '$non_global'
317
+ end
318
+ if_flag "$non_global" do
319
+ set_flag '$global'
320
+ end
321
+
312
322
  if tester.v93k?
313
323
  log "This should retain the set-run-flag in the else conditional"
314
324
  func :test22, id: :at22, number: 51480
@@ -305,6 +305,19 @@ end
305
305
 
306
306
  In all cases the `$` will be removed from the final flag name that appears in the test program.
307
307
 
308
+ Whenever you set a flag or automation initializes a variable, you can remove the variable from initialization flow by labeling as a global flag
309
+ with the `add_global_flag` API. The below example will set the `global` variable in the flow but not initialize it to a value. `non_global` will behave as normal.
310
+
311
+ ~~~ruby
312
+ add_global_flag :global
313
+ test :global_test1, on_fail: { set_flag: :$non_global }, continue: true
314
+ unless_flag "$global" do
315
+ set_flag '$non_global'
316
+ end
317
+ if_flag "$non_global" do
318
+ set_flag '$global'
319
+ end
320
+ ~~~
308
321
 
309
322
 
310
323
  #### Adding the V93K bypass option:
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.51.0
4
+ version: 0.51.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: 2022-05-20 00:00:00.000000000 Z
11
+ date: 2023-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: origen
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.57.1
19
+ version: 0.60.7
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.57.1
26
+ version: 0.60.7
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dentaku
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -601,7 +601,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
601
601
  - !ruby/object:Gem::Version
602
602
  version: '0'
603
603
  requirements: []
604
- rubygems_version: 3.1.6
604
+ rubygems_version: 3.2.31
605
605
  signing_key:
606
606
  specification_version: 4
607
607
  summary: This plugin provides Origen tester models to drive ATE type testers like