origen_testers 0.4.1 → 0.5.0
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/version.rb +2 -2
- data/lib/origen_testers/command_based_tester.rb +45 -0
- data/lib/origen_testers/doc/generator/flow.rb +69 -0
- data/lib/origen_testers/doc/generator/flow_line.rb +201 -0
- data/lib/origen_testers/doc/generator/test.rb +66 -0
- data/lib/origen_testers/doc/generator/test_group.rb +64 -0
- data/lib/origen_testers/doc/generator/tests.rb +45 -0
- data/lib/origen_testers/doc/generator.rb +124 -0
- data/lib/origen_testers/doc/model.rb +160 -0
- data/lib/origen_testers/doc.rb +224 -0
- data/lib/origen_testers/generator.rb +4 -4
- data/lib/origen_testers/igxl_based_tester/base.rb +6 -4
- data/lib/origen_testers/igxl_based_tester/j750.rb +0 -2
- data/lib/origen_testers/smartest_based_tester/base.rb +6 -4
- data/lib/origen_testers/vector_based_tester.rb +4 -5
- data/lib/origen_testers/vector_generator.rb +98 -81
- data/lib/origen_testers.rb +11 -9
- metadata +11 -2
@@ -385,109 +385,126 @@ module OrigenTesters
|
|
385
385
|
include_pingroups: true
|
386
386
|
}.merge(options)
|
387
387
|
|
388
|
-
|
389
|
-
pinexclude = Origen.app.pin_pattern_exclude.dup
|
390
|
-
pinids = []
|
388
|
+
result = nil
|
391
389
|
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
if Origen.app.pin_pattern_exclude.last.is_a?(Hash)
|
396
|
-
options.merge!(pinexclude.pop)
|
397
|
-
end
|
390
|
+
Origen.profile 'Working out pin pattern order' do
|
391
|
+
pinorder = Origen.app.pin_pattern_order.dup
|
392
|
+
pinexclude = Origen.app.pin_pattern_exclude.dup
|
398
393
|
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
394
|
+
if Origen.app.pin_pattern_order.last.is_a?(Hash)
|
395
|
+
options.merge!(pinorder.pop)
|
396
|
+
end
|
397
|
+
if Origen.app.pin_pattern_exclude.last.is_a?(Hash)
|
398
|
+
options.merge!(pinexclude.pop)
|
399
|
+
end
|
400
|
+
|
401
|
+
ordered_pins = []
|
402
|
+
|
403
|
+
# Create a copy of all pins and groups to be output, pins/groups will be delete from here as
|
404
|
+
# they are output, so that at the end of the user defined pin order what is left in here can
|
405
|
+
# either be discarded or output at the end
|
406
|
+
pins = Origen.pin_bank.pins.dup
|
407
|
+
pingroups = Origen.pin_bank.pin_groups.dup
|
408
|
+
|
409
|
+
if pinorder && pinorder.size > 0
|
410
|
+
pinorder.each do |id|
|
411
|
+
# If the ID refers to a pin group
|
412
|
+
if group = Origen.pin_bank.pin_groups[id]
|
413
|
+
# If the group has still to be output just do that now
|
414
|
+
if pingroups.include? group.id
|
415
|
+
ordered_pins << group
|
416
|
+
# Now delete the group from the list of groups still to be output and all of its pins
|
417
|
+
# from the list pins still to be output
|
418
|
+
group.each do |pin|
|
419
|
+
pins.delete(pin.id)
|
420
|
+
pin.groups.each do |name, _group|
|
421
|
+
pingroups.delete(name)
|
422
|
+
end
|
423
|
+
end
|
424
|
+
pingroups.delete(group.id)
|
425
|
+
# To get here the some of the pins in the group have already been output which is preventing
|
426
|
+
# output of the complete group at this point, in that case output any of its pins that have
|
427
|
+
# still to go
|
428
|
+
else
|
429
|
+
group.each do |pin|
|
430
|
+
if pins.include? pin.id
|
431
|
+
ordered_pins << pin
|
432
|
+
pin.groups.each do |name, _group|
|
433
|
+
pingroups.delete(name)
|
434
|
+
end
|
435
|
+
end
|
436
|
+
end
|
437
|
+
end
|
438
|
+
# this is a pin
|
418
439
|
else
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
440
|
+
pin = Origen.pin_bank.find(id)
|
441
|
+
fail "Undefined pin (#{id}) added to pin_pattern_order" unless pin
|
442
|
+
ordered_pins << pin
|
443
|
+
pin.groups.each do |name, _group|
|
444
|
+
pingroups.delete(name)
|
424
445
|
end
|
446
|
+
pin.name = id
|
447
|
+
pins.delete(pin.id)
|
425
448
|
end
|
426
|
-
pingroups.delete(id)
|
427
|
-
else # this is a pin
|
428
|
-
pin = Origen.pin_bank.find(id)
|
429
|
-
fail "Undefined pin (#{id}) added to pin_pattern_order" unless pin
|
430
|
-
ordered_pins << pin
|
431
|
-
pin.name = id
|
432
|
-
fail "Individual pin (#{pin.name}) is duplicately defined in pin_pattern_order" unless pins.include? pin.id
|
433
|
-
pins.delete(pin.id)
|
434
449
|
end
|
435
450
|
end
|
436
|
-
end
|
437
451
|
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
452
|
+
if pinexclude && pinexclude.size > 0
|
453
|
+
pinexclude.each do |id|
|
454
|
+
if group = Origen.pin_bank.pin_groups[id]
|
455
|
+
# see if group is already in ordered_pins
|
456
|
+
fail "Pin group #{id} is defined both in pin_pattern_order and pin_pattern_exclude" unless pingroups.include? id
|
457
|
+
# this is a pin group, delete all pins in group
|
458
|
+
pingroups.delete(id)
|
459
|
+
group.each do |pin|
|
460
|
+
fail "Pin (#{pin.name}) in group (#{group.id}) is defined both in pin_pattern_order and pin_pattern_exclude" unless pins.include? pin.id
|
461
|
+
pins.delete(pin.id)
|
462
|
+
end
|
463
|
+
else # this is a pin, delete the pin
|
464
|
+
pin = Origen.pin_bank.find(id)
|
465
|
+
fail "Undefined pin (#{id}) added to pin_pattern_exclude" unless pin
|
466
|
+
fail "Pin #{pin.name} is defined both in pin_pattern_order and pin_pattern_exclude" unless pins.include? pin.id
|
467
|
+
pin.name = id
|
446
468
|
pins.delete(pin.id)
|
469
|
+
pin.groups.each do |name, _group|
|
470
|
+
pingroups.delete(name)
|
471
|
+
end
|
447
472
|
end
|
448
|
-
else # this is a pin, delete the pin
|
449
|
-
pin = Origen.pin_bank.find(id)
|
450
|
-
fail "Undefined pin (#{id}) added to pin_pattern_exclude" unless pin
|
451
|
-
fail "Pin #{pin.name} is defined both in pin_pattern_order and pin_pattern_exclude" unless pins.include? pin.id
|
452
|
-
pin.name = id
|
453
|
-
pins.delete(pin.id)
|
454
473
|
end
|
455
474
|
end
|
456
|
-
end
|
457
475
|
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
if group[0] == name.to_sym # belongs to a port
|
468
|
-
port = group[1]
|
469
|
-
end
|
476
|
+
unless options[:only]
|
477
|
+
# all the rest of the pins to the end of the pattern order
|
478
|
+
pins.each do |_id, pin|
|
479
|
+
# check for port
|
480
|
+
if pin.belongs_to_a_pin_group?
|
481
|
+
# Are any of this pin's groups still waiting to be output? pingroups at this point contains
|
482
|
+
# those groups which have not been rendered yet
|
483
|
+
group = pingroups.find do |_id, group|
|
484
|
+
pin.groups.any? { |_pid, pgroup| group == pgroup }
|
470
485
|
end
|
471
|
-
if
|
472
|
-
ordered_pins <<
|
473
|
-
|
486
|
+
if group
|
487
|
+
ordered_pins << group[1]
|
488
|
+
group[1].each { |pin| pins.delete(pin.id) }
|
489
|
+
else
|
490
|
+
ordered_pins << pin
|
474
491
|
end
|
475
492
|
else
|
476
493
|
ordered_pins << pin
|
477
494
|
end
|
478
|
-
else
|
479
|
-
ordered_pins << pin
|
480
495
|
end
|
481
496
|
end
|
482
|
-
end
|
483
497
|
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
498
|
+
result = ordered_pins.map do |pin|
|
499
|
+
if options[:include_inhibited_pins]
|
500
|
+
pin
|
501
|
+
else
|
502
|
+
inhibited_pins.include?(pin) ? nil : pin
|
503
|
+
end
|
489
504
|
end
|
490
|
-
|
505
|
+
result = result.compact
|
506
|
+
end
|
507
|
+
result
|
491
508
|
end
|
492
509
|
|
493
510
|
def current_pin_vals
|
data/lib/origen_testers.rb
CHANGED
@@ -3,15 +3,17 @@ require 'active_support/concern'
|
|
3
3
|
require 'require_all'
|
4
4
|
|
5
5
|
module OrigenTesters
|
6
|
-
autoload :
|
7
|
-
autoload :
|
8
|
-
autoload :
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
12
|
-
autoload :
|
13
|
-
autoload :
|
14
|
-
|
6
|
+
autoload :Doc, 'origen_testers/doc'
|
7
|
+
autoload :CommandBasedTester, 'origen_testers/command_based_tester'
|
8
|
+
autoload :VectorBasedTester, 'origen_testers/vector_based_tester'
|
9
|
+
autoload :Vector, 'origen_testers/vector'
|
10
|
+
autoload :VectorPipeline, 'origen_testers/vector_pipeline'
|
11
|
+
autoload :Interface, 'origen_testers/interface'
|
12
|
+
autoload :Generator, 'origen_testers/generator'
|
13
|
+
autoload :Parser, 'origen_testers/parser'
|
14
|
+
autoload :BasicTestSetups, 'origen_testers/basic_test_setups'
|
15
|
+
autoload :ProgramGenerators, 'origen_testers/program_generators'
|
16
|
+
# not yet autoload :Time, 'origen_testers/time'
|
15
17
|
end
|
16
18
|
|
17
19
|
require 'origen_testers/igxl_based_tester'
|
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.5.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: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: origen
|
@@ -119,6 +119,15 @@ files:
|
|
119
119
|
- lib/origen_testers/api.rb
|
120
120
|
- lib/origen_testers/basic_test_setups.rb
|
121
121
|
- lib/origen_testers/callback_handlers.rb
|
122
|
+
- lib/origen_testers/command_based_tester.rb
|
123
|
+
- lib/origen_testers/doc.rb
|
124
|
+
- lib/origen_testers/doc/generator.rb
|
125
|
+
- lib/origen_testers/doc/generator/flow.rb
|
126
|
+
- lib/origen_testers/doc/generator/flow_line.rb
|
127
|
+
- lib/origen_testers/doc/generator/test.rb
|
128
|
+
- lib/origen_testers/doc/generator/test_group.rb
|
129
|
+
- lib/origen_testers/doc/generator/tests.rb
|
130
|
+
- lib/origen_testers/doc/model.rb
|
122
131
|
- lib/origen_testers/generator.rb
|
123
132
|
- lib/origen_testers/generator/flow_control_api.rb
|
124
133
|
- lib/origen_testers/generator/identity_map.rb
|