origen_testers 0.7.7 → 0.7.8
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 +7 -0
- data/config/version.rb +1 -1
- data/lib/origen_testers/igxl_based_tester/base/generator.rb +1 -0
- data/lib/origen_testers/interface.rb +102 -19
- data/lib/origen_testers/origen_ext/generator.rb +19 -2
- data/lib/origen_testers/smartest_based_tester/base.rb +2 -6
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +8 -2
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +49 -13
- data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +12 -3
- data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +31 -9
- data/lib/origen_testers/smartest_based_tester/base/test_method.rb +19 -1
- data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +1 -1
- data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +4 -0
- data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +5 -0
- data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +2 -6
- data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +1 -1
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +4 -4
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +1 -1
- data/lib/origen_testers/smartest_based_tester/v93k/templates/{template.flow.erb → template.tf.erb} +0 -0
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fef29207283a7c7837cfaef6fb5d32d4a422292
|
4
|
+
data.tar.gz: 4d41a6c74b72ef2fffae771928ec1356d7f989ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0624f4f177bae4b5ad179601a22504a56dd8ca907b26bd6feca823443978c9575c5fd03f38f36a8e709f7caa1bedfec993be5c520045371b9178fd5320fff917
|
7
|
+
data.tar.gz: cbc5987d9c38140931121c5da1d9f1720b30ec02f8621cc7490aee665d3c24cda457dedb7931c1096b2a9273e6e233ff16ff2fecb4b6e011918f756871b06b87
|
data/config/commands.rb
CHANGED
@@ -21,6 +21,12 @@ aliases = {
|
|
21
21
|
# Now branch to the specific task code
|
22
22
|
case @command
|
23
23
|
|
24
|
+
when "tags"
|
25
|
+
Dir.chdir Origen.root do
|
26
|
+
system "ripper-tags --recursive lib"
|
27
|
+
end
|
28
|
+
exit 0
|
29
|
+
|
24
30
|
# Run the unit tests
|
25
31
|
when "specs"
|
26
32
|
require "rspec"
|
@@ -68,6 +74,7 @@ else
|
|
68
74
|
specs Run the specs (tests), -c will enable coverage
|
69
75
|
examples Run the examples (tests), -c will enable coverage
|
70
76
|
test Run both specs and examples, -c will enable coverage
|
77
|
+
tags Generate ctags for this app
|
71
78
|
EOT
|
72
79
|
|
73
80
|
end
|
data/config/version.rb
CHANGED
@@ -15,6 +15,19 @@ module OrigenTesters
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
+
class PatternArray < ::Array
|
19
|
+
def <<(pat)
|
20
|
+
push(pat)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Override the array push method to capture the pattern under the new API, but
|
24
|
+
# maintain the old one where a pattern reference was just pushed to the
|
25
|
+
# referenced_patterns array
|
26
|
+
def push(pat)
|
27
|
+
Origen.interface.record_pattern_reference(pat)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
18
31
|
def self.with_resources_mode
|
19
32
|
orig = @resources_mode
|
20
33
|
@resources_mode = true
|
@@ -100,38 +113,108 @@ module OrigenTesters
|
|
100
113
|
|
101
114
|
def on_program_completion(options = {})
|
102
115
|
reset_globals
|
116
|
+
@@pattern_references = {}
|
103
117
|
@@referenced_patterns = nil
|
104
|
-
@@referenced_subroutine_patterns = nil
|
105
118
|
end
|
106
119
|
|
120
|
+
# A secondary pattern is one where the pattern has been created by Origen as an output from
|
121
|
+
# generating another pattern (a primary pattern). For example, on V93K anytime a tester
|
122
|
+
# handshake is done, the pattern will be split into separate components, such as
|
123
|
+
# meas_bgap.avc (the primary pattern) and meas_bgap_part1.avc (a secondary pattern).
|
124
|
+
#
|
125
|
+
# Any such secondary pattern references should be pushed to this array, rather than the
|
126
|
+
# referenced_patterns array.
|
127
|
+
# By using the dedicated secondary array, the pattern will not appear in the referenced.list
|
128
|
+
# file so that Origen is not asked to generate it (since it will be created naturally from
|
129
|
+
# the primary pattern reference).
|
130
|
+
# However if the ATE requires a reference to the pattern (e.g. the V93K pattern master file),
|
131
|
+
# then it will be included in the relevant ATE files.
|
132
|
+
def record_pattern_reference(name, options = {})
|
133
|
+
if name.is_a?(String) || name.is_a?(Symbol)
|
134
|
+
name = name.to_s
|
135
|
+
else
|
136
|
+
fail "Pattern name must be a string or a symbol, not a #{name.class}"
|
137
|
+
end
|
138
|
+
# Help out the user and force any multi-part patterns to :ate type
|
139
|
+
unless options[:type]
|
140
|
+
if name.sub(/\..*/, '') =~ /part\d+$/
|
141
|
+
options[:type] = :ate
|
142
|
+
end
|
143
|
+
end
|
144
|
+
unless options[:type] == :origen
|
145
|
+
# Inform the current generator that it has a new pattern reference to handle
|
146
|
+
if respond_to?(:pattern_reference_recorded)
|
147
|
+
pattern_reference_recorded(name, options)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
base = options[:subroutine] ? pattern_references[:subroutine] : pattern_references[:main]
|
151
|
+
case options[:type]
|
152
|
+
when :origen
|
153
|
+
base[:origen] << name
|
154
|
+
when :ate
|
155
|
+
base[:ate] << name
|
156
|
+
when nil
|
157
|
+
base[:all] << name
|
158
|
+
else
|
159
|
+
fail "Unknown pattern reference type, #{options[:type]}, valid values are :origen or :ate"
|
160
|
+
end
|
161
|
+
nil
|
162
|
+
end
|
163
|
+
|
164
|
+
def pattern_references
|
165
|
+
@@pattern_references ||= {}
|
166
|
+
@@pattern_references[pattern_references_name] ||= {
|
167
|
+
main: {
|
168
|
+
all: [],
|
169
|
+
origen: [],
|
170
|
+
ate: []
|
171
|
+
},
|
172
|
+
subroutine: {
|
173
|
+
all: [],
|
174
|
+
origen: [],
|
175
|
+
ate: []
|
176
|
+
}
|
177
|
+
}
|
178
|
+
end
|
179
|
+
|
180
|
+
def all_pattern_references
|
181
|
+
pattern_references
|
182
|
+
@@pattern_references
|
183
|
+
end
|
184
|
+
|
185
|
+
def pattern_references_name=(name)
|
186
|
+
@pattern_references_name = name
|
187
|
+
end
|
188
|
+
|
189
|
+
def pattern_references_name
|
190
|
+
@pattern_references_name || 'global'
|
191
|
+
end
|
192
|
+
|
193
|
+
# @deprecated Use record_pattern_reference instead
|
194
|
+
#
|
107
195
|
# All generators should push to this array whenever they reference a pattern
|
108
196
|
# so that it is captured in the pattern list, e.g.
|
109
197
|
# Origen.interface.referenced_patterns << pattern
|
198
|
+
#
|
199
|
+
# If the ATE platform also has a pattern list, e.g. the pattern master file on V93K,
|
200
|
+
# then this will also be updated.
|
201
|
+
# Duplicates will be automatically eliminated, so no duplicate checking should be
|
202
|
+
# performed on the application side.
|
110
203
|
def referenced_patterns
|
111
|
-
@@referenced_patterns ||=
|
112
|
-
end
|
113
|
-
|
114
|
-
# All generators should push to this array whenever they reference a subroutine
|
115
|
-
# pattern so that it is captured in the pattern list, e.g.
|
116
|
-
# Origen.interface.referenced_subroutine_patterns << pattern
|
117
|
-
def referenced_subroutine_patterns
|
118
|
-
unless Origen.tester.v93k?
|
119
|
-
fail 'referenced_subroutine_patterns is currently only implemented for V93k!'
|
120
|
-
end
|
121
|
-
@@referenced_subroutine_patterns ||= []
|
204
|
+
@@referenced_patterns ||= PatternArray.new
|
122
205
|
end
|
123
206
|
|
124
207
|
# Remove duplicates and file extensions from the referenced pattern lists
|
125
208
|
def clean_referenced_patterns
|
126
209
|
refs = [:referenced_patterns]
|
127
|
-
refs << :referenced_subroutine_patterns if Origen.tester.v93k?
|
210
|
+
# refs << :referenced_subroutine_patterns if Origen.tester.v93k?
|
128
211
|
refs.each do |ref|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
pat
|
133
|
-
end
|
134
|
-
ref
|
212
|
+
var = send(ref)
|
213
|
+
var = var.uniq.map do |pat|
|
214
|
+
pat = pat.sub(/\..*/, '')
|
215
|
+
pat unless pat =~ /_part\d+$/
|
216
|
+
end.uniq.compact
|
217
|
+
singleton_class.class_variable_set("@@#{ref}", var)
|
135
218
|
end
|
136
219
|
end
|
137
220
|
|
@@ -7,6 +7,8 @@ else
|
|
7
7
|
end
|
8
8
|
module Origen
|
9
9
|
class Generator
|
10
|
+
include Comparator
|
11
|
+
|
10
12
|
# Makes more sense for this plugin to own this method now
|
11
13
|
def generate_program(file, options)
|
12
14
|
Origen.file_handler.resolve_files(file, ignore_with_prefix: '_', default_dir: "#{Origen.root}/program") do |path|
|
@@ -26,10 +28,25 @@ module Origen
|
|
26
28
|
dir = Pathname.new(file).dirname
|
27
29
|
FileUtils.mkdir_p(dir) unless dir.exist?
|
28
30
|
File.open(file, 'w') do |f|
|
29
|
-
Origen.interface.
|
30
|
-
|
31
|
+
pats = Origen.interface.all_pattern_references.map do |name, refs|
|
32
|
+
refs[:main][:all] + refs[:main][:origen]
|
33
|
+
end.flatten.uniq.sort
|
34
|
+
unless pats.empty?
|
35
|
+
f.puts '# Main patterns'
|
36
|
+
pats.each { |p| f.puts p }
|
37
|
+
f.puts
|
38
|
+
end
|
39
|
+
|
40
|
+
pats = Origen.interface.all_pattern_references.map do |name, refs|
|
41
|
+
refs[:subroutine][:all] + refs[:subroutine][:origen]
|
42
|
+
end.flatten.uniq.sort
|
43
|
+
unless pats.empty?
|
44
|
+
f.puts '# Subroutine patterns'
|
45
|
+
pats.each { |p| f.puts p }
|
31
46
|
end
|
32
47
|
end
|
48
|
+
ref_file = File.join(Origen.file_handler.reference_directory, Pathname.new(file).basename)
|
49
|
+
check_for_changes(file, ref_file)
|
33
50
|
end
|
34
51
|
Origen.interface.on_program_completion(options)
|
35
52
|
end
|
@@ -75,12 +75,8 @@ module OrigenTesters
|
|
75
75
|
end
|
76
76
|
alias_method :capture, :store
|
77
77
|
|
78
|
-
#
|
79
|
-
#
|
80
|
-
# This method applys a store vector (stv) opcode to the next vector to be generated,
|
81
|
-
# note that is does not actually generate a new vector.
|
82
|
-
#
|
83
|
-
# On J750 the pins argument is ignored since the tester only supports whole vector capture.
|
78
|
+
# Same as the store method, except that the capture will be applied to the next
|
79
|
+
# vector to be generated.
|
84
80
|
#
|
85
81
|
# @example
|
86
82
|
# $tester.store_next_cycle
|
@@ -4,10 +4,10 @@ module OrigenTesters
|
|
4
4
|
class Flow < ATP::Formatter
|
5
5
|
include OrigenTesters::Flow
|
6
6
|
|
7
|
-
attr_accessor :test_suites, :test_methods, :
|
7
|
+
attr_accessor :test_suites, :test_methods, :lines, :stack
|
8
8
|
|
9
9
|
def subdirectory
|
10
|
-
'testflow'
|
10
|
+
'testflow/mfh.testflow.group'
|
11
11
|
end
|
12
12
|
|
13
13
|
def filename
|
@@ -26,6 +26,12 @@ module OrigenTesters
|
|
26
26
|
@runtime_control_variables ||= []
|
27
27
|
end
|
28
28
|
|
29
|
+
def at_flow_start
|
30
|
+
end
|
31
|
+
|
32
|
+
def at_flow_end
|
33
|
+
end
|
34
|
+
|
29
35
|
def finalize(options = {})
|
30
36
|
super
|
31
37
|
test_suites.finalize
|
@@ -16,6 +16,8 @@ module OrigenTesters
|
|
16
16
|
def initialize(options = {})
|
17
17
|
super
|
18
18
|
@initialized = true
|
19
|
+
@@pattern_masters ||= {}
|
20
|
+
@@pattern_compilers ||= {}
|
19
21
|
end
|
20
22
|
|
21
23
|
def add_tml(name, methods)
|
@@ -27,16 +29,34 @@ module OrigenTesters
|
|
27
29
|
# @api private
|
28
30
|
def at_flow_start
|
29
31
|
flow.at_flow_start
|
32
|
+
@pattern_master_filename = nil
|
33
|
+
end
|
34
|
+
|
35
|
+
# @api private
|
36
|
+
def at_flow_end
|
37
|
+
flow.at_flow_end
|
30
38
|
end
|
31
39
|
|
32
40
|
# @api private
|
33
41
|
def at_run_start
|
34
42
|
flow.at_run_start
|
35
43
|
@@flow_sheets = nil
|
44
|
+
@@pattern_masters = nil
|
45
|
+
@@pattern_compilers = nil
|
36
46
|
end
|
37
47
|
alias_method :reset_globals, :at_run_start
|
38
48
|
|
39
49
|
def resources_filename=(name)
|
50
|
+
self.pattern_master_filename = name
|
51
|
+
self.pattern_references_name = name
|
52
|
+
end
|
53
|
+
|
54
|
+
def pattern_master_filename=(name)
|
55
|
+
@pattern_master_filename = name
|
56
|
+
end
|
57
|
+
|
58
|
+
def pattern_master_filename
|
59
|
+
@pattern_master_filename || 'global'
|
40
60
|
end
|
41
61
|
|
42
62
|
def flow(filename = Origen.file_handler.current_file.basename('.rb').to_s)
|
@@ -48,35 +68,48 @@ module OrigenTesters
|
|
48
68
|
p.filename = f
|
49
69
|
p.test_suites ||= platform::TestSuites.new(p)
|
50
70
|
p.test_methods ||= platform::TestMethods.new(p)
|
51
|
-
p.pattern_master ||= platform::PatternMaster.new(p)
|
52
71
|
flow_sheets[f] = p
|
53
72
|
end
|
54
73
|
|
55
|
-
# Returns
|
56
|
-
#
|
57
|
-
#
|
74
|
+
# Returns the pattern master file (.pmfl) for the current flow, by default a common pattern
|
75
|
+
# master file called 'global' will be used for all flows.
|
76
|
+
# To use a different one set the resources_filename at the start of the flow.
|
58
77
|
def pattern_master
|
59
|
-
|
78
|
+
@@pattern_masters ||= {}
|
79
|
+
@@pattern_masters[pattern_master_filename] ||= begin
|
60
80
|
m = platform::PatternMaster.new(manually_register: true)
|
61
|
-
name =
|
81
|
+
name = "#{pattern_master_filename}.pmfl"
|
62
82
|
name = "#{Origen.config.program_prefix}_#{name}" if Origen.config.program_prefix
|
63
83
|
m.filename = name
|
84
|
+
m.id = pattern_master_filename
|
64
85
|
m
|
65
86
|
end
|
66
87
|
end
|
67
88
|
|
68
|
-
#
|
69
|
-
#
|
89
|
+
# Returns the pattern compiler file (.aiv) for the current flow, by default a common pattern
|
90
|
+
# compiler file called 'global' will be used for all flows.
|
91
|
+
# To use a different one set the resources_filename at the start of the flow.
|
70
92
|
def pattern_compiler
|
71
|
-
|
93
|
+
@@pattern_compilers ||= {}
|
94
|
+
@@pattern_compilers[pattern_master_filename] ||= begin
|
72
95
|
m = platform::PatternCompiler.new(manually_register: true)
|
73
|
-
name =
|
96
|
+
name = "#{pattern_master_filename}.aiv"
|
74
97
|
name = "#{Origen.config.program_prefix}_#{name}" if Origen.config.program_prefix
|
75
98
|
m.filename = name
|
99
|
+
m.id = pattern_master_filename
|
76
100
|
m
|
77
101
|
end
|
78
102
|
end
|
79
103
|
|
104
|
+
# @api private
|
105
|
+
def pattern_reference_recorded(name, options = {})
|
106
|
+
# Will be called everytime a pattern reference is made that the ATE should be aware of,
|
107
|
+
# don't need to remember it as it can be fetched from all_pattern_references later, but
|
108
|
+
# need to instantiate a pattern master and compiler to handle it later
|
109
|
+
pattern_master
|
110
|
+
pattern_compiler
|
111
|
+
end
|
112
|
+
|
80
113
|
def test_suites
|
81
114
|
flow.test_suites
|
82
115
|
end
|
@@ -95,10 +128,13 @@ module OrigenTesters
|
|
95
128
|
g = []
|
96
129
|
flow_sheets.each do |_name, sheet|
|
97
130
|
g << sheet
|
98
|
-
g << sheet.pattern_master
|
99
131
|
end
|
100
|
-
|
101
|
-
|
132
|
+
Hash(@@pattern_masters).each do |name, sheet|
|
133
|
+
g << sheet
|
134
|
+
end
|
135
|
+
Hash(@@pattern_compilers).each do |name, sheet|
|
136
|
+
g << sheet
|
137
|
+
end
|
102
138
|
g
|
103
139
|
end
|
104
140
|
|
@@ -5,17 +5,26 @@ module OrigenTesters
|
|
5
5
|
class PatternCompiler
|
6
6
|
include OrigenTesters::Generator
|
7
7
|
|
8
|
-
attr_accessor :filename
|
8
|
+
attr_accessor :filename, :part_patterns, :id
|
9
9
|
|
10
10
|
def initialize(flow = nil)
|
11
|
+
@part_patterns = []
|
11
12
|
end
|
12
13
|
|
13
14
|
def subroutines
|
14
|
-
|
15
|
+
(references[:subroutine][:all] + references[:subroutine][:ate]).map do |p|
|
16
|
+
p.strip.sub(/\..*/, '')
|
17
|
+
end.uniq.sort
|
15
18
|
end
|
16
19
|
|
17
20
|
def patterns
|
18
|
-
|
21
|
+
(references[:main][:all] + references[:main][:ate]).map do |p|
|
22
|
+
p.strip.sub(/\..*/, '')
|
23
|
+
end.uniq.sort
|
24
|
+
end
|
25
|
+
|
26
|
+
def references
|
27
|
+
Origen.interface.all_pattern_references[id]
|
19
28
|
end
|
20
29
|
end
|
21
30
|
end
|
@@ -6,7 +6,7 @@ module OrigenTesters
|
|
6
6
|
include OrigenTesters::Generator
|
7
7
|
|
8
8
|
attr_reader :flow, :paths
|
9
|
-
attr_accessor :filename
|
9
|
+
attr_accessor :filename, :id
|
10
10
|
|
11
11
|
def initialize(flow = nil)
|
12
12
|
@flow = flow
|
@@ -14,20 +14,42 @@ module OrigenTesters
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def filename
|
17
|
-
@filename || flow.filename.sub('.
|
17
|
+
@filename || flow.filename.sub('.tf', '.pmfl')
|
18
18
|
end
|
19
19
|
|
20
20
|
def subdirectory
|
21
21
|
'vectors'
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
def paths
|
25
|
+
{ '.' => patterns }
|
26
|
+
end
|
27
|
+
|
28
|
+
# def add(name, options = {})
|
29
|
+
# name, subdir = extract_subdir(name, options)
|
30
|
+
# name += '.binl.gz' unless name =~ /binl.gz$/
|
31
|
+
# # Don't want to ask Origen to compile these, but do want them in the v93k
|
32
|
+
# # compile list
|
33
|
+
# if name =~ /_part\d+\.binl\.gz$/
|
34
|
+
# Origen.interface.pattern_compiler.part_patterns << name
|
35
|
+
# else
|
36
|
+
# Origen.interface.referenced_patterns << name
|
37
|
+
# end
|
38
|
+
# paths[subdir] ||= []
|
39
|
+
# # Just add it, duplicates will be removed at render time
|
40
|
+
# paths[subdir] << name unless paths[subdir].include?(name)
|
41
|
+
# end
|
42
|
+
|
43
|
+
def patterns
|
44
|
+
(references[:subroutine][:all] + references[:subroutine][:ate] +
|
45
|
+
references[:main][:all] + references[:main][:ate]).map do |p|
|
46
|
+
p = p.strip
|
47
|
+
p += '.binl.gz' unless p =~ /binl.gz$/
|
48
|
+
end.uniq
|
49
|
+
end
|
50
|
+
|
51
|
+
def references
|
52
|
+
Origen.interface.all_pattern_references[id]
|
31
53
|
end
|
32
54
|
|
33
55
|
private
|
@@ -89,7 +89,14 @@ module OrigenTesters
|
|
89
89
|
type = parameters[attr]
|
90
90
|
else
|
91
91
|
# The type is based on the value of another attribute
|
92
|
-
|
92
|
+
name = clean_attr_name(parameters[attr])
|
93
|
+
if respond_to?(name)
|
94
|
+
type = send(name)
|
95
|
+
elsif respond_to?(name.sub(/b$/, ''))
|
96
|
+
type = inverse_of(send(name.sub(/b$/, '')))
|
97
|
+
else
|
98
|
+
fail "Unknown attribute type: #{parameters[attr]}"
|
99
|
+
end
|
93
100
|
end
|
94
101
|
case type
|
95
102
|
when :current, 'CURR'
|
@@ -130,6 +137,17 @@ module OrigenTesters
|
|
130
137
|
|
131
138
|
private
|
132
139
|
|
140
|
+
def inverse_of(type)
|
141
|
+
case type
|
142
|
+
when :current, 'CURR'
|
143
|
+
:voltage
|
144
|
+
when :voltage, 'VOLT'
|
145
|
+
:current
|
146
|
+
else
|
147
|
+
fail "Don't know the inverse of type: #{type}"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
133
151
|
def clean_attr_name(name)
|
134
152
|
name.to_s.gsub(/\.|-/, '_')
|
135
153
|
end
|
@@ -41,7 +41,7 @@ module OrigenTesters
|
|
41
41
|
pinlist: [:string, '@'],
|
42
42
|
force_mode: [:string, 'VOLT', %w(VOLT CURR)],
|
43
43
|
force_value: [:force_mode, 3800.mV],
|
44
|
-
spmu_clamp: [:
|
44
|
+
spmu_clamp: [:force_modeb, 0],
|
45
45
|
precharge: [:string, 'OFF', %w(ON OFF)],
|
46
46
|
precharge_voltage: [:voltage, 0],
|
47
47
|
settling_time: [:time, 0],
|
@@ -6,6 +6,10 @@ module OrigenTesters
|
|
6
6
|
attr_reader :test_method
|
7
7
|
attr_accessor :lo_limit, :hi_limit
|
8
8
|
attr_accessor :unit
|
9
|
+
alias_method :lo, :lo_limit
|
10
|
+
alias_method :lo=, :lo_limit=
|
11
|
+
alias_method :hi, :hi_limit
|
12
|
+
alias_method :hi=, :hi_limit=
|
9
13
|
|
10
14
|
def initialize(test_method)
|
11
15
|
@test_method = test_method
|
@@ -32,12 +32,8 @@ module OrigenTesters
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def finalize
|
35
|
-
collection.each do |suite|
|
36
|
-
|
37
|
-
flow.pattern_master.add suite.pattern
|
38
|
-
Origen.interface.pattern_master.add suite.pattern
|
39
|
-
end
|
40
|
-
end
|
35
|
+
# collection.each do |suite|
|
36
|
+
# end
|
41
37
|
end
|
42
38
|
|
43
39
|
private
|
@@ -3,7 +3,7 @@ module OrigenTesters
|
|
3
3
|
class V93K
|
4
4
|
require 'origen_testers/smartest_based_tester/base/flow'
|
5
5
|
class Flow < Base::Flow
|
6
|
-
TEMPLATE = "#{Origen.root!}/lib/origen_testers/smartest_based_tester/v93k/templates/template.
|
6
|
+
TEMPLATE = "#{Origen.root!}/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb"
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -9,9 +9,9 @@ single_binary_pattern_dir ./BINL/
|
|
9
9
|
AI_V2B_OPTIONS -ALT -c <%= $dut.name.to_s.upcase %>.vbc -k -z PS800
|
10
10
|
|
11
11
|
PATTERNS name tmf_file v2b_options
|
12
|
-
% subroutines.
|
13
|
-
<%= pattern
|
12
|
+
% subroutines.each do |pattern|
|
13
|
+
<%= pattern %> <%= $dut.name.to_s.upcase %>.tmf -s
|
14
14
|
% end
|
15
|
-
% patterns.
|
16
|
-
<%= pattern
|
15
|
+
% patterns.each do |pattern|
|
16
|
+
<%= pattern %> <%= $dut.name.to_s.upcase %>.tmf
|
17
17
|
% end
|
data/lib/origen_testers/smartest_based_tester/v93k/templates/{template.flow.erb → template.tf.erb}
RENAMED
File without changes
|
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.7.
|
4
|
+
version: 0.7.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stephen McGinty
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-12 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.7.
|
19
|
+
version: 0.7.23
|
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.7.
|
26
|
+
version: 0.7.23
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: require_all
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -319,8 +319,8 @@ files:
|
|
319
319
|
- lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb
|
320
320
|
- lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb
|
321
321
|
- lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb
|
322
|
-
- lib/origen_testers/smartest_based_tester/v93k/templates/template.flow.erb
|
323
322
|
- lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb
|
323
|
+
- lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb
|
324
324
|
- lib/origen_testers/smartest_based_tester/v93k/test_method.rb
|
325
325
|
- lib/origen_testers/smartest_based_tester/v93k/test_methods.rb
|
326
326
|
- lib/origen_testers/smartest_based_tester/v93k/test_suite.rb
|
@@ -406,4 +406,3 @@ specification_version: 4
|
|
406
406
|
summary: This plugin provides Origen tester models to drive ATE type testers like
|
407
407
|
the J750, UltraFLEX, V93K,...
|
408
408
|
test_files: []
|
409
|
-
has_rdoc:
|