origen_testers 0.50.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 +4 -4
- data/config/commands.rb +1 -1
- data/config/version.rb +2 -2
- data/lib/origen_testers/atp/flow.rb +27 -0
- data/lib/origen_testers/atp/flow_api.rb +1 -1
- data/lib/origen_testers/atp/processor.rb +28 -0
- data/lib/origen_testers/atp/processors/pre_cleaner.rb +12 -2
- data/lib/origen_testers/igxl_based_tester/base/flow.rb +6 -2
- data/lib/origen_testers/igxl_based_tester/base.rb +12 -0
- data/lib/origen_testers/igxl_based_tester/j750.rb +2 -2
- data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +2 -2
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +8 -0
- data/lib/origen_testers/smartest_based_tester/base.rb +11 -0
- data/program/flow_control.rb +10 -0
- data/program/flow_control_literals.rb +139 -0
- data/templates/origen_guides/program/flowapi.md.erb +13 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6f96fa1f3c65b7ab6cd0fb2c25abb378ef0cd0d9489a05cc7c94eb05becf628
|
4
|
+
data.tar.gz: 0d465b02299aceb26467727fd021736b78c959d46ece03fddd0c581495291e3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d08fd272bc3331a87ac33011d22386e535981d376c0c995c4d3605794e6a7c3be7d755f69b0d851e22bf398692e98b516ce19999860e4b46fbba7af3ee1123e2
|
7
|
+
data.tar.gz: b754e33f7577da5f100e93cb7b020ad8abf014e8e7b102d17e07bace411ff5e20df0c47e5e033f74fab814ccda0bc6b89fc1b2e5e768b8cb13b9e2e03ae4a32e
|
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
@@ -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] == '$'
|
@@ -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
|
-
|
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
|
-
|
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
|
@@ -129,7 +129,7 @@ module OrigenTesters
|
|
129
129
|
current_line.flag_pass = flag
|
130
130
|
end
|
131
131
|
else
|
132
|
-
|
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)
|
@@ -425,7 +425,11 @@ module OrigenTesters
|
|
425
425
|
flag[0] = ''
|
426
426
|
flag
|
427
427
|
else
|
428
|
-
|
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'
|
@@ -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?]
|
@@ -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]
|
data/program/flow_control.rb
CHANGED
@@ -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
|
@@ -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
|
@@ -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.
|
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:
|
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.
|
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.
|
26
|
+
version: 0.60.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: dentaku
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -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.
|
604
|
+
rubygems_version: 3.2.31
|
604
605
|
signing_key:
|
605
606
|
specification_version: 4
|
606
607
|
summary: This plugin provides Origen tester models to drive ATE type testers like
|