origen_testers 0.5.7 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/shared_commands.rb +6 -0
- data/config/version.rb +2 -2
- data/lib/commands/run.rb +44 -0
- data/lib/origen_testers.rb +19 -1
- data/lib/origen_testers/flow.rb +382 -0
- data/lib/origen_testers/generator.rb +32 -29
- data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +79 -0
- data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +98 -0
- data/lib/origen_testers/igxl_based_tester/base/edge.rb +60 -0
- data/lib/origen_testers/igxl_based_tester/base/edges.rb +24 -0
- data/lib/origen_testers/igxl_based_tester/base/edgeset.rb +39 -0
- data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +97 -0
- data/lib/origen_testers/igxl_based_tester/base/flow.rb +390 -115
- data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +4 -54
- data/lib/origen_testers/igxl_based_tester/base/generator.rb +257 -11
- data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +59 -0
- data/lib/origen_testers/igxl_based_tester/base/level_supply.rb +39 -0
- data/lib/origen_testers/igxl_based_tester/base/levels.rb +31 -0
- data/lib/origen_testers/igxl_based_tester/base/levelset.rb +109 -0
- data/lib/origen_testers/igxl_based_tester/base/pinmap.rb +93 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +33 -1
- data/lib/origen_testers/igxl_based_tester/base/timeset.rb +37 -0
- data/lib/origen_testers/igxl_based_tester/base/timesets.rb +47 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb +2 -2
- data/lib/origen_testers/igxl_based_tester/ultraflex/ac_specsets.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +4 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/dc_specsets.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/edge.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/edges.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/edgeset.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/edgesets.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +137 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/level_io_se.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/level_supply.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/levels.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/levelset.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +10 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/ac_specsets.txt.erb +58 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/dc_specsets.txt.erb +58 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/edgesets.txt.erb +95 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/flow.txt.erb +2 -2
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/levelset.txt.erb +121 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/pinmap.txt.erb +24 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb +137 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +4 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/timeset.rb +9 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/timesets.rb +10 -0
- data/lib/origen_testers/interface.rb +41 -6
- data/lib/origen_testers/no_interface.rb +7 -0
- data/lib/origen_testers/origen_ext/application/runner.rb +25 -0
- data/lib/origen_testers/origen_ext/generator.rb +37 -0
- data/lib/origen_testers/origen_ext/generator/flow.rb +70 -0
- data/lib/origen_testers/origen_ext/generator/resources.rb +21 -0
- data/lib/origen_testers/program_generators.rb +0 -1
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +158 -134
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +2 -3
- data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +4 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.flow.erb +5 -6
- data/lib/origen_testers/test/dut.rb +5 -0
- data/lib/origen_testers/test/j750_base_interface.rb +0 -3
- data/lib/origen_testers/test/ultraflex_interface.rb +230 -4
- data/lib/origen_testers/test/v93k_interface.rb +5 -23
- data/program/components/_temp.rb +6 -0
- data/program/flow_control.rb +190 -62
- data/program/prb1.rb +13 -50
- data/program/prb2.rb +0 -16
- data/program/test.rb +12 -3
- data/program/uflex_resources.rb +159 -0
- metadata +66 -16
- data/lib/origen_testers/doc.rb +0 -224
- data/lib/origen_testers/doc/generator.rb +0 -124
- data/lib/origen_testers/doc/generator/flow.rb +0 -69
- data/lib/origen_testers/doc/generator/flow_line.rb +0 -201
- data/lib/origen_testers/doc/generator/test.rb +0 -66
- data/lib/origen_testers/doc/generator/test_group.rb +0 -64
- data/lib/origen_testers/doc/generator/tests.rb +0 -45
- data/lib/origen_testers/doc/model.rb +0 -160
- data/lib/origen_testers/generator/flow_control_api.rb +0 -611
- data/lib/origen_testers/smartest_based_tester/base/flow_node.rb +0 -476
- data/lib/origen_testers/smartest_based_tester/v93k/flow_node.rb +0 -9
@@ -57,6 +57,10 @@ module OrigenTesters
|
|
57
57
|
opcode: 'Test',
|
58
58
|
result: 'Fail'
|
59
59
|
},
|
60
|
+
test_defer_limits: {
|
61
|
+
opcode: 'Test-defer-limits',
|
62
|
+
result: 'Fail'
|
63
|
+
},
|
60
64
|
cz: {
|
61
65
|
opcode: 'characterize',
|
62
66
|
result: 'None'
|
@@ -198,60 +202,10 @@ module OrigenTesters
|
|
198
202
|
"#{l}"
|
199
203
|
end
|
200
204
|
|
201
|
-
def job
|
202
|
-
if !if_jobs.empty? && !unless_jobs.empty?
|
203
|
-
fail "Both if and unless jobs have been defined for test: #{parameter}"
|
204
|
-
elsif !if_jobs.empty?
|
205
|
-
if_jobs.join(',')
|
206
|
-
elsif !unless_jobs.empty?
|
207
|
-
unless_jobs.map { |j| "!#{j}" }.join(',')
|
208
|
-
else
|
209
|
-
''
|
210
|
-
end
|
211
|
-
end
|
212
|
-
alias_method :jobs, :job
|
213
|
-
|
214
205
|
def unless_enable=(*args)
|
215
206
|
end
|
216
207
|
alias_method :unless_enabled=, :unless_enable=
|
217
208
|
|
218
|
-
def if_jobs
|
219
|
-
@if_jobs ||= []
|
220
|
-
end
|
221
|
-
|
222
|
-
def unless_jobs
|
223
|
-
@unless_jobs ||= []
|
224
|
-
end
|
225
|
-
|
226
|
-
def if_job=(jobs)
|
227
|
-
[jobs].flatten.compact.each do |job|
|
228
|
-
job = job.to_s.upcase
|
229
|
-
if job =~ /!/
|
230
|
-
self.unless_job = job
|
231
|
-
else
|
232
|
-
if_jobs << job unless if_jobs.include?(job)
|
233
|
-
end
|
234
|
-
end
|
235
|
-
end
|
236
|
-
alias_method :if_jobs=, :if_job=
|
237
|
-
alias_method :add_if_jobs, :if_job=
|
238
|
-
alias_method :add_if_job, :if_job=
|
239
|
-
|
240
|
-
def unless_job=(jobs)
|
241
|
-
[jobs].flatten.compact.each do |job|
|
242
|
-
job = job.to_s.upcase
|
243
|
-
job.gsub!('!', '')
|
244
|
-
unless_jobs << job unless unless_jobs.include?(job)
|
245
|
-
end
|
246
|
-
end
|
247
|
-
alias_method :unless_jobs=, :unless_job=
|
248
|
-
alias_method :add_unless_jobs, :unless_job=
|
249
|
-
alias_method :add_unless_job, :unless_job=
|
250
|
-
|
251
|
-
def continue_on_fail
|
252
|
-
self.result = 'None'
|
253
|
-
end
|
254
|
-
|
255
209
|
def continue_pass
|
256
210
|
self.result = 'Pass'
|
257
211
|
end
|
@@ -268,10 +222,6 @@ module OrigenTesters
|
|
268
222
|
# self.debug_sites = "All"
|
269
223
|
# end
|
270
224
|
|
271
|
-
def set_flag_on_fail
|
272
|
-
self.flag_fail = "#{id}_FAILED"
|
273
|
-
end
|
274
|
-
|
275
225
|
def set_flag_on_pass
|
276
226
|
self.flag_pass = "#{id}_PASSED"
|
277
227
|
end
|
@@ -24,23 +24,38 @@ module OrigenTesters
|
|
24
24
|
|
25
25
|
# @api private
|
26
26
|
def at_flow_start
|
27
|
+
unless Origen.interface.resources_mode?
|
28
|
+
flow.at_flow_start if flow
|
29
|
+
end
|
30
|
+
@@pinmaps_filename = nil
|
27
31
|
@@test_instances_filename = nil
|
28
32
|
@@patsets_filename = nil
|
29
33
|
@@patgroups_filename = nil
|
34
|
+
@@edgesets_filename = nil
|
35
|
+
@@timesets_filename = nil
|
36
|
+
@@levelsets_filename = nil
|
37
|
+
@@ac_specsets_filename = nil
|
38
|
+
@@dc_specsets_filename = nil
|
30
39
|
end
|
31
40
|
|
32
41
|
# @api private
|
33
42
|
def at_run_start
|
34
43
|
flow.at_run_start
|
44
|
+
@@pinmap_sheets = nil
|
35
45
|
@@test_instance_sheets = nil
|
36
46
|
@@patset_sheets = nil
|
37
47
|
@@flow_sheets = nil
|
38
48
|
@@patgroup_sheets = nil
|
49
|
+
@@edgeset_sheets = nil
|
50
|
+
@@timeset_sheets = nil
|
51
|
+
@@levelset_sheets = nil
|
52
|
+
@@ac_specset_sheets = nil
|
53
|
+
@@dc_specset_sheets = nil
|
39
54
|
end
|
40
55
|
alias_method :reset_globals, :at_run_start
|
41
56
|
|
42
57
|
# Convenience method to allow the current name for the test instance,
|
43
|
-
# patsets and
|
58
|
+
# patsets, patgroups and timesets sheets to be set to the same value.
|
44
59
|
#
|
45
60
|
# # my j750 interface
|
46
61
|
#
|
@@ -48,13 +63,33 @@ module OrigenTesters
|
|
48
63
|
#
|
49
64
|
# # The above is equivalent to:
|
50
65
|
#
|
66
|
+
# pinmaps_filename = "common"
|
51
67
|
# test_instances_filename = "common"
|
52
68
|
# patsets_filename = "common"
|
53
69
|
# patgroups_filename = "common"
|
70
|
+
# edgesets_filename = "common"
|
71
|
+
# timesets_filename = "common"
|
72
|
+
# levelsets_filename = "common"
|
73
|
+
# ac_specsets_filename = "common"
|
74
|
+
# dc_specsets_filename = "common"
|
54
75
|
def resources_filename=(name)
|
76
|
+
self.pinmaps_filename = name
|
55
77
|
self.test_instances_filename = name
|
56
78
|
self.patsets_filename = name
|
57
79
|
self.patgroups_filename = name
|
80
|
+
self.edgesets_filename = name
|
81
|
+
self.timesets_filename = name
|
82
|
+
self.levelsets_filename = name
|
83
|
+
self.ac_specsets_filename = name
|
84
|
+
self.dc_specsets_filename = name
|
85
|
+
end
|
86
|
+
|
87
|
+
# Set the name of the current pinmap sheet. This does not change
|
88
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
89
|
+
# will be generated the next time you access pinmaps.
|
90
|
+
def pinmaps_filename=(name)
|
91
|
+
@pinmaps_filename = name
|
92
|
+
@@pinmaps_filename = name
|
58
93
|
end
|
59
94
|
|
60
95
|
# Set the name of the current test instances sheet. This does not change
|
@@ -81,6 +116,51 @@ module OrigenTesters
|
|
81
116
|
@@patgroups_filename = name
|
82
117
|
end
|
83
118
|
|
119
|
+
# Set the name of the current edgesets sheet. This does not change
|
120
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
121
|
+
# will be generated the next time you access patgroups.
|
122
|
+
def edgesets_filename=(name)
|
123
|
+
@edgesets_filename = name
|
124
|
+
@@edgesets_filename = name
|
125
|
+
end
|
126
|
+
|
127
|
+
# Set the name of the current timesets sheet. This does not change
|
128
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
129
|
+
# will be generated the next time you access patgroups.
|
130
|
+
def timesets_filename=(name)
|
131
|
+
@timesets_filename = name
|
132
|
+
@@timesets_filename = name
|
133
|
+
end
|
134
|
+
|
135
|
+
# Set the name of the current levelsets sheet. This does not change
|
136
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
137
|
+
# will be generated the next time you access patgroups.
|
138
|
+
def levelsets_filename=(name)
|
139
|
+
@levelsets_filename = name
|
140
|
+
@@levelsets_filename = name
|
141
|
+
end
|
142
|
+
|
143
|
+
# Set the name of the current AC specsets sheet. This does not change
|
144
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
145
|
+
# will be generated the next time you access patgroups.
|
146
|
+
def ac_specsets_filename=(name)
|
147
|
+
@ac_specsets_filename = name
|
148
|
+
@@ac_specsets_filename = name
|
149
|
+
end
|
150
|
+
|
151
|
+
# Set the name of the current DC specsets sheet. This does not change
|
152
|
+
# the name of the current sheet, but rather sets the name of the sheet that
|
153
|
+
# will be generated the next time you access patgroups.
|
154
|
+
def dc_specsets_filename=(name)
|
155
|
+
@dc_specsets_filename = name
|
156
|
+
@@dc_specsets_filename = name
|
157
|
+
end
|
158
|
+
|
159
|
+
# Returns the name of the current pinmaps sheet
|
160
|
+
def pinmaps_filename
|
161
|
+
@@pinmaps_filename ||= @pinmaps_filename || 'global'
|
162
|
+
end
|
163
|
+
|
84
164
|
# Returns the name of the current test instances sheet
|
85
165
|
def test_instances_filename
|
86
166
|
@@test_instances_filename ||= @test_instances_filename || 'global'
|
@@ -96,6 +176,36 @@ module OrigenTesters
|
|
96
176
|
@@patgroups_filename ||= @patgroups_filename || 'global'
|
97
177
|
end
|
98
178
|
|
179
|
+
# Returns the name of the current edgesets sheet
|
180
|
+
def edgesets_filename
|
181
|
+
@@edgesets_filename ||= @edgesets_filename || 'global'
|
182
|
+
end
|
183
|
+
|
184
|
+
# Returns the name of the current timesets sheet
|
185
|
+
def timesets_filename
|
186
|
+
@@timesets_filename ||= @timesets_filename || 'global'
|
187
|
+
end
|
188
|
+
|
189
|
+
# Returns the name of the current levelsets sheet
|
190
|
+
def levelsets_filename
|
191
|
+
@@levelsets_filename ||= @levelsets_filename || 'global'
|
192
|
+
end
|
193
|
+
|
194
|
+
# Returns the name of the current AC specset sheet
|
195
|
+
def ac_specsets_filename
|
196
|
+
@@ac_specsets_filename ||= @ac_specsets_filename || 'global'
|
197
|
+
end
|
198
|
+
|
199
|
+
# Returns the name of the current DC specset sheet
|
200
|
+
def dc_specsets_filename
|
201
|
+
@@dc_specsets_filename ||= @dc_specsets_filename || 'global'
|
202
|
+
end
|
203
|
+
|
204
|
+
# Returns a hash containing all pinmap sheets
|
205
|
+
def pinmap_sheets
|
206
|
+
@@pinmap_sheets ||= {}
|
207
|
+
end
|
208
|
+
|
99
209
|
# Returns a hash containing all test instance sheets
|
100
210
|
def test_instance_sheets
|
101
211
|
@@test_instance_sheets ||= {}
|
@@ -116,12 +226,39 @@ module OrigenTesters
|
|
116
226
|
@@patgroup_sheets ||= {}
|
117
227
|
end
|
118
228
|
|
229
|
+
# Returns a hash containing all edgeset sheets
|
230
|
+
def edgeset_sheets
|
231
|
+
@@edgeset_sheets ||= {}
|
232
|
+
end
|
233
|
+
|
234
|
+
# Returns a hash containing all timeset sheets
|
235
|
+
def timeset_sheets
|
236
|
+
@@timeset_sheets ||= {}
|
237
|
+
end
|
238
|
+
|
239
|
+
# Returns a hash containing all levelset sheets
|
240
|
+
def levelset_sheets
|
241
|
+
@@levelset_sheets ||= {}
|
242
|
+
end
|
243
|
+
|
244
|
+
# Returns a hash containing all AC specsets sheets
|
245
|
+
def ac_specset_sheets
|
246
|
+
@@ac_specset_sheets ||= {}
|
247
|
+
end
|
248
|
+
|
249
|
+
# Returns a hash containing all DC specsets sheets
|
250
|
+
def dc_specset_sheets
|
251
|
+
@@dc_specset_sheets ||= {}
|
252
|
+
end
|
253
|
+
|
119
254
|
# Returns an array containing all sheet generators where a sheet generator is a flow,
|
120
|
-
# test instance, patset
|
255
|
+
# test instance, patset, pat group, edgeset, timeset, or AC/DC specset sheet.
|
121
256
|
# All Origen program generators must implement this method
|
122
257
|
def sheet_generators # :nodoc:
|
123
258
|
g = []
|
124
|
-
[flow_sheets, test_instance_sheets, patset_sheets,
|
259
|
+
[pinmap_sheets, flow_sheets, test_instance_sheets, patset_sheets,
|
260
|
+
patgroup_sheets, edgeset_sheets, timeset_sheets, levelset_sheets,
|
261
|
+
ac_specset_sheets, dc_specset_sheets].each do |sheets|
|
125
262
|
sheets.each do |name, sheet|
|
126
263
|
g << sheet
|
127
264
|
end
|
@@ -139,6 +276,21 @@ module OrigenTesters
|
|
139
276
|
g
|
140
277
|
end
|
141
278
|
|
279
|
+
# Returns the current pinmaps sheet (as defined by the current value of
|
280
|
+
# pinmaps_filename).
|
281
|
+
#
|
282
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
283
|
+
#
|
284
|
+
# If the sheet does not exist yet it will be created.
|
285
|
+
def pinmaps(filename = pinmaps_filename)
|
286
|
+
f = filename.to_sym
|
287
|
+
return pinmap_sheets[f] if pinmap_sheets[f]
|
288
|
+
p = platform::Pinmap.new
|
289
|
+
p.filename = f
|
290
|
+
pinmap_sheets[f] = p
|
291
|
+
end
|
292
|
+
alias_method :pin_maps, :pinmaps
|
293
|
+
|
142
294
|
# Returns the current test instances sheet (as defined by the current value of
|
143
295
|
# test_instances_filename).
|
144
296
|
#
|
@@ -191,14 +343,17 @@ module OrigenTesters
|
|
191
343
|
# Pass in a filename argument to have a specific sheet returned instead.
|
192
344
|
#
|
193
345
|
# If the sheet does not exist yet it will be created.
|
194
|
-
def flow(filename =
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
346
|
+
def flow(filename = nil)
|
347
|
+
if filename || Origen.file_handler.current_file
|
348
|
+
filename ||= Origen.file_handler.current_file.basename('.rb').to_s
|
349
|
+
# DH here need to reset the flow!!
|
350
|
+
f = filename.to_sym
|
351
|
+
return flow_sheets[f] if flow_sheets[f] # will return flow if already existing
|
352
|
+
p = platform::Flow.new
|
353
|
+
p.inhibit_output if Origen.interface.resources_mode?
|
354
|
+
p.filename = f
|
355
|
+
flow_sheets[f] = p
|
356
|
+
end
|
202
357
|
end
|
203
358
|
|
204
359
|
# Returns the current pattern groups sheet (as defined by the current value of
|
@@ -217,6 +372,97 @@ module OrigenTesters
|
|
217
372
|
alias_method :pat_groups, :patgroups
|
218
373
|
alias_method :pattern_groups, :patgroups
|
219
374
|
|
375
|
+
# Returns the current collection of edges that are defined. These are
|
376
|
+
# used in support of creating edgeset/timeset sheets. They do not have
|
377
|
+
# an associated sheet of their own.
|
378
|
+
def edges
|
379
|
+
@@edges ||= platform::Edges.new
|
380
|
+
end
|
381
|
+
alias_method :edge_collection, :edges
|
382
|
+
|
383
|
+
# Returns the current edgesets sheet (as defined by the current value of
|
384
|
+
# edgesets_filename).
|
385
|
+
#
|
386
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
387
|
+
#
|
388
|
+
# If the sheet does not exist yet it will be created.
|
389
|
+
def edgesets(filename = edgesets_filename)
|
390
|
+
f = filename.to_sym
|
391
|
+
return edgeset_sheets[f] if edgeset_sheets[f]
|
392
|
+
e = platform::Edgesets.new
|
393
|
+
e.filename = f
|
394
|
+
edgeset_sheets[f] = e
|
395
|
+
end
|
396
|
+
alias_method :edge_sets, :edgesets
|
397
|
+
|
398
|
+
# Returns the current timesets sheet (as defined by the current value of
|
399
|
+
# timesets_filename).
|
400
|
+
#
|
401
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
402
|
+
#
|
403
|
+
# If the sheet does not exist yet it will be created.
|
404
|
+
def timesets(filename = timesets_filename)
|
405
|
+
f = filename.to_sym
|
406
|
+
return timeset_sheets[f] if timeset_sheets[f]
|
407
|
+
t = platform::Timesets.new
|
408
|
+
t.filename = f
|
409
|
+
timeset_sheets[f] = t
|
410
|
+
end
|
411
|
+
alias_method :time_sets, :timesets
|
412
|
+
alias_method :timing_sets, :timesets
|
413
|
+
|
414
|
+
# Returns the current collection of levels that are defined. These are
|
415
|
+
# used in support of creating levelset sheets. They do not have
|
416
|
+
# an associated sheet of their own.
|
417
|
+
def levels
|
418
|
+
@@levels ||= platform::Levels.new
|
419
|
+
end
|
420
|
+
alias_method :level_collection, :levels
|
421
|
+
|
422
|
+
# Returns the current levelsets sheet (as defined by the current value of
|
423
|
+
# levelsets_filename).
|
424
|
+
#
|
425
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
426
|
+
#
|
427
|
+
# If the sheet does not exist yet it will be created.
|
428
|
+
def levelsets(filename = levelsets_filename)
|
429
|
+
f = filename.to_sym
|
430
|
+
return levelset_sheets[f] if levelset_sheets[f]
|
431
|
+
t = platform::Levelset.new
|
432
|
+
t.filename = f
|
433
|
+
levelset_sheets[f] = t
|
434
|
+
end
|
435
|
+
alias_method :time_sets, :timesets
|
436
|
+
alias_method :timing_sets, :timesets
|
437
|
+
|
438
|
+
# Returns the current AC specset sheet (as defined by the current value of
|
439
|
+
# ac_specsets_filename).
|
440
|
+
#
|
441
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
442
|
+
#
|
443
|
+
# If the sheet does not exist yet it will be created.
|
444
|
+
def ac_specsets(filename = ac_specsets_filename)
|
445
|
+
f = filename.to_sym
|
446
|
+
return ac_specset_sheets[f] if ac_specset_sheets[f]
|
447
|
+
s = platform::ACSpecsets.new
|
448
|
+
s.filename = f
|
449
|
+
ac_specset_sheets[f] = s
|
450
|
+
end
|
451
|
+
|
452
|
+
# Returns the current DC specset sheet (as defined by the current value of
|
453
|
+
# dc_specsets_filename).
|
454
|
+
#
|
455
|
+
# Pass in a filename argument to have a specific sheet returned instead.
|
456
|
+
#
|
457
|
+
# If the sheet does not exist yet it will be created.
|
458
|
+
def dc_specsets(filename = dc_specsets_filename)
|
459
|
+
f = filename.to_sym
|
460
|
+
return dc_specset_sheets[f] if dc_specset_sheets[f]
|
461
|
+
s = platform::DCSpecsets.new
|
462
|
+
s.filename = f
|
463
|
+
dc_specset_sheets[f] = s
|
464
|
+
end
|
465
|
+
|
220
466
|
private
|
221
467
|
|
222
468
|
# Custom test instance libraries
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module IGXLBasedTester
|
3
|
+
class Base
|
4
|
+
class PinLevelSingle
|
5
|
+
attr_accessor :vil, :vih # Input level information
|
6
|
+
attr_accessor :vol, :voh # Output level information
|
7
|
+
attr_accessor :vcl, :vch # Clamp level information
|
8
|
+
attr_accessor :vt # Termination level information
|
9
|
+
attr_accessor :voutlotyp, :vouthityp, :dmode
|
10
|
+
|
11
|
+
def initialize(options = {}) # :nodoc:
|
12
|
+
options = {
|
13
|
+
vil: 0, # Input drive low
|
14
|
+
vih: 1.8, # Input drive high
|
15
|
+
vol: 1.0, # Output compare low
|
16
|
+
voh: 0.8, # Output compare high
|
17
|
+
vcl: -1, # Voltage clamp low
|
18
|
+
vch: 2.5, # Voltage clamp high
|
19
|
+
vt: 0.9, # Termination voltage
|
20
|
+
voutlotyp: 0, #
|
21
|
+
vouthityp: 0, #
|
22
|
+
dmode: 'Largeswing-VT' # Driver mode (possibly ATE-specific)
|
23
|
+
}.merge(options)
|
24
|
+
@vil = options[:vil]
|
25
|
+
@vih = options[:vih]
|
26
|
+
@vol = options[:vol]
|
27
|
+
@voh = options[:voh]
|
28
|
+
@vcl = options[:vcl]
|
29
|
+
@vch = options[:vch]
|
30
|
+
@vt = options[:vt]
|
31
|
+
@voutlotyp = options[:voutlotyp]
|
32
|
+
@vouthityp = options[:vouthityp]
|
33
|
+
@dmode = options[:dmode]
|
34
|
+
end
|
35
|
+
|
36
|
+
def ==(level)
|
37
|
+
if level.is_a? PinLevelSingle
|
38
|
+
vil == level.vil &&
|
39
|
+
vih == level.vih &&
|
40
|
+
vol == level.vol &&
|
41
|
+
voh == level.voh &&
|
42
|
+
vcl == level.vcl &&
|
43
|
+
vch == level.vch &&
|
44
|
+
vt == level.vt &&
|
45
|
+
voutlotyp == level.voutlotyp &&
|
46
|
+
vouthityp == level.vouthityp &&
|
47
|
+
dmode == level.dmode
|
48
|
+
else
|
49
|
+
super
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def platform
|
54
|
+
Origen.interface.platform
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|