origen_testers 0.13.1 → 0.13.2
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/application.rb +151 -151
- data/config/boot.rb +13 -13
- data/config/commands.rb +85 -86
- data/config/users.rb +18 -18
- data/config/version.rb +8 -8
- data/lib/commands/build.rb +69 -69
- data/lib/commands/run.rb +48 -48
- data/lib/origen_testers.rb +47 -47
- data/lib/origen_testers/api.rb +381 -381
- data/lib/origen_testers/basic_test_setups.rb +105 -105
- data/lib/origen_testers/callback_handlers.rb +59 -59
- data/lib/origen_testers/command_based_tester.rb +45 -45
- data/lib/origen_testers/flow.rb +382 -382
- data/lib/origen_testers/generator.rb +283 -283
- data/lib/origen_testers/generator/identity_map.rb +23 -23
- data/lib/origen_testers/generator/placeholder.rb +11 -11
- data/lib/origen_testers/generator/test_numberer.rb +23 -23
- data/lib/origen_testers/igxl_based_tester.rb +12 -12
- data/lib/origen_testers/igxl_based_tester/base.rb +1100 -1099
- data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +79 -79
- data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +169 -169
- data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +98 -98
- data/lib/origen_testers/igxl_based_tester/base/edge.rb +60 -60
- data/lib/origen_testers/igxl_based_tester/base/edges.rb +24 -24
- data/lib/origen_testers/igxl_based_tester/base/edgeset.rb +39 -39
- data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +130 -130
- data/lib/origen_testers/igxl_based_tester/base/flow.rb +460 -460
- data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +276 -276
- data/lib/origen_testers/igxl_based_tester/base/generator.rb +607 -607
- data/lib/origen_testers/igxl_based_tester/base/global_specs.rb +83 -83
- data/lib/origen_testers/igxl_based_tester/base/job.rb +75 -75
- data/lib/origen_testers/igxl_based_tester/base/jobs.rb +44 -44
- data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +59 -59
- data/lib/origen_testers/igxl_based_tester/base/level_supply.rb +39 -39
- data/lib/origen_testers/igxl_based_tester/base/levels.rb +31 -31
- data/lib/origen_testers/igxl_based_tester/base/levelset.rb +110 -110
- data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -109
- data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -38
- data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -68
- data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -56
- data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -38
- data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -68
- data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -56
- data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -38
- data/lib/origen_testers/igxl_based_tester/base/pinmap.rb +93 -93
- data/lib/origen_testers/igxl_based_tester/base/references.rb +25 -25
- data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +322 -322
- data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +66 -66
- data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +212 -212
- data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +37 -37
- data/lib/origen_testers/igxl_based_tester/base/timeset.rb +37 -37
- data/lib/origen_testers/igxl_based_tester/base/timesets.rb +49 -49
- data/lib/origen_testers/igxl_based_tester/base/timesets_basic.rb +49 -49
- data/lib/origen_testers/igxl_based_tester/files.rb +43 -43
- data/lib/origen_testers/igxl_based_tester/j750.rb +269 -269
- data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +32 -32
- data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +746 -746
- data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -34
- data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +32 -32
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +599 -599
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/parser.rb +102 -102
- data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -33
- data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -48
- data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -339
- data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -109
- data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -203
- data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -21
- data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -92
- data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -31
- data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +420 -420
- data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -24
- data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -13
- data/lib/origen_testers/igxl_based_tester/ultraflex.rb +798 -798
- data/lib/origen_testers/igxl_based_tester/ultraflex/ac_specsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/ate_hardware.rb +949 -949
- data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +36 -36
- data/lib/origen_testers/igxl_based_tester/ultraflex/dc_specsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/edge.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/edges.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/edgeset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/edgesets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +158 -158
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/ultraflex/global_specs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/job.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/jobs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/level_io_se.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/level_supply.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/levels.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/levelset.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/references.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/ac_specsets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/dc_specsets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/edgesets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/global_specs.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/jobs.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/levelset.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/pinmap.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/references.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +315 -315
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/timeset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/timesets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/timesets_basic.rb +10 -10
- data/lib/origen_testers/interface.rb +345 -324
- data/lib/origen_testers/memory_style.rb +77 -77
- data/lib/origen_testers/no_interface.rb +7 -7
- data/lib/origen_testers/origen_ext/application/runner.rb +25 -25
- data/lib/origen_testers/origen_ext/generator.rb +54 -54
- data/lib/origen_testers/origen_ext/generator/flow.rb +91 -77
- data/lib/origen_testers/origen_ext/generator/resources.rb +21 -21
- data/lib/origen_testers/origen_ext/pins/pin.rb +78 -78
- data/lib/origen_testers/origen_ext/pins/pin_collection.rb +84 -84
- data/lib/origen_testers/parser.rb +22 -22
- data/lib/origen_testers/parser/description_lookup.rb +62 -62
- data/lib/origen_testers/parser/searchable_array.rb +30 -30
- data/lib/origen_testers/parser/searchable_hash.rb +30 -30
- data/lib/origen_testers/pattern_compilers.rb +116 -116
- data/lib/origen_testers/pattern_compilers/assembler.rb +88 -88
- data/lib/origen_testers/pattern_compilers/job.rb +96 -96
- data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -599
- data/lib/origen_testers/program_generators.rb +62 -62
- data/lib/origen_testers/smartest_based_tester.rb +8 -8
- data/lib/origen_testers/smartest_based_tester/base.rb +576 -567
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +296 -291
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +207 -194
- data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +32 -32
- data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +69 -69
- data/lib/origen_testers/smartest_based_tester/base/processors.rb +16 -16
- data/lib/origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner.rb +106 -106
- data/lib/origen_testers/smartest_based_tester/base/processors/continue_implementer.rb +39 -39
- data/lib/origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner.rb +21 -21
- data/lib/origen_testers/smartest_based_tester/base/processors/extract_run_flag_table.rb +33 -33
- data/lib/origen_testers/smartest_based_tester/base/processors/extract_set_variables.rb +22 -22
- data/lib/origen_testers/smartest_based_tester/base/processors/flag_optimizer.rb +188 -188
- data/lib/origen_testers/smartest_based_tester/base/processors/if_ran_cleaner.rb +34 -34
- data/lib/origen_testers/smartest_based_tester/base/test_method.rb +178 -164
- data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +77 -73
- data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -33
- data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -38
- data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -19
- data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -147
- data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +65 -65
- data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +208 -193
- data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -54
- data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +38 -38
- data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -8
- data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -89
- data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +181 -181
- data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -54
- data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -10
- data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -19
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -10
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -10
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -17
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -13
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +236 -214
- data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +48 -48
- data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +10 -10
- data/lib/origen_testers/test/basic_interface.rb +17 -17
- data/lib/origen_testers/test/block.rb +21 -21
- data/lib/origen_testers/test/custom_test_interface.rb +111 -111
- data/lib/origen_testers/test/dut.rb +295 -295
- data/lib/origen_testers/test/dut2.rb +76 -76
- data/lib/origen_testers/test/dut3.rb +244 -244
- data/lib/origen_testers/test/interface.rb +503 -503
- data/lib/origen_testers/test/nvm.rb +94 -94
- data/lib/origen_testers/timing.rb +368 -368
- data/lib/origen_testers/vector.rb +207 -207
- data/lib/origen_testers/vector_based_tester.rb +41 -41
- data/lib/origen_testers/vector_generator.rb +655 -655
- data/lib/origen_testers/vector_pipeline.rb +302 -302
- data/pattern/bitmap.rb +7 -7
- data/pattern/dc_instr.rb +7 -7
- data/pattern/delay.rb +7 -7
- data/pattern/freq_counter.rb +6 -6
- data/pattern/mem_test.rb +8 -8
- data/pattern/multi_vector.rb +122 -122
- data/pattern/multi_vector_plus1.rb +125 -125
- data/pattern/nvm/j750/add_late_pins.rb +3 -3
- data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -8
- data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -8
- data/pattern/nvm/j750/j750_halt.rb +159 -159
- data/pattern/nvm/j750/j750_workout.rb +209 -209
- data/pattern/nvm/j750/timing.rb +73 -73
- data/pattern/read_write_reg.rb +61 -61
- data/pattern/reset.rb +4 -4
- data/pattern/subroutines.rb +69 -69
- data/pattern/tester_overlay.rb +61 -52
- data/pattern/tester_store.rb +28 -28
- data/program/_additional_erase.rb +7 -7
- data/program/_efa_resources.rb +7 -7
- data/program/_erase.rb +25 -25
- data/program/_erase_vfy.rb +5 -5
- data/program/_iv_resources.rb +10 -10
- data/program/basic_interface.rb +5 -5
- data/program/components/_prb1_main.rb +222 -222
- data/program/components/_temp.rb +6 -6
- data/program/custom_tests.rb +10 -10
- data/program/flow_control.rb +422 -422
- data/program/prb1.rb +11 -11
- data/program/prb1_resources.rb +28 -28
- data/program/prb2.rb +27 -27
- data/program/test.rb +29 -29
- data/program/uflex_resources.rb +199 -199
- data/templates/example.txt.erb +53 -53
- data/templates/j750/program_sheet.txt.erb +9 -9
- data/templates/manifest/v93k.yaml.erb +22 -22
- data/templates/web/index.md.erb +51 -51
- data/templates/web/layouts/_basic.html.erb +15 -15
- data/templates/web/partials/_navbar.html.erb +22 -22
- data/templates/web/release_notes.md.erb +5 -5
- metadata +2 -2
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
require 'pathname'
|
|
2
|
-
module OrigenTesters
|
|
3
|
-
module SmartestBasedTester
|
|
4
|
-
class Base
|
|
5
|
-
class PatternMaster
|
|
6
|
-
include OrigenTesters::Generator
|
|
7
|
-
|
|
8
|
-
attr_reader :flow, :paths
|
|
9
|
-
attr_accessor :filename, :id
|
|
10
|
-
|
|
11
|
-
def initialize(flow = nil)
|
|
12
|
-
@flow = flow
|
|
13
|
-
@paths = {}
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def filename
|
|
17
|
-
@filename || flow.filename.sub('.tf', '.pmfl')
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def subdirectory
|
|
21
|
-
'vectors'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def paths
|
|
25
|
-
{ '../vectors' => 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]
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
private
|
|
56
|
-
|
|
57
|
-
def extract_subdir(name, options = {})
|
|
58
|
-
p = Pathname.new(name.to_s)
|
|
59
|
-
name = p.basename.to_s
|
|
60
|
-
subdir = p.dirname.to_s
|
|
61
|
-
# if subdir == '.'
|
|
62
|
-
# # In future may support setting a default subdir via the interface
|
|
63
|
-
# end
|
|
64
|
-
[name, subdir]
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
1
|
+
require 'pathname'
|
|
2
|
+
module OrigenTesters
|
|
3
|
+
module SmartestBasedTester
|
|
4
|
+
class Base
|
|
5
|
+
class PatternMaster
|
|
6
|
+
include OrigenTesters::Generator
|
|
7
|
+
|
|
8
|
+
attr_reader :flow, :paths
|
|
9
|
+
attr_accessor :filename, :id
|
|
10
|
+
|
|
11
|
+
def initialize(flow = nil)
|
|
12
|
+
@flow = flow
|
|
13
|
+
@paths = {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def filename
|
|
17
|
+
@filename || flow.filename.sub('.tf', '.pmfl')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def subdirectory
|
|
21
|
+
'vectors'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def paths
|
|
25
|
+
{ '../vectors' => 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]
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def extract_subdir(name, options = {})
|
|
58
|
+
p = Pathname.new(name.to_s)
|
|
59
|
+
name = p.basename.to_s
|
|
60
|
+
subdir = p.dirname.to_s
|
|
61
|
+
# if subdir == '.'
|
|
62
|
+
# # In future may support setting a default subdir via the interface
|
|
63
|
+
# end
|
|
64
|
+
[name, subdir]
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module SmartestBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
module Processors
|
|
5
|
-
# Include any V93K specific AST processors here
|
|
6
|
-
autoload :IfRanCleaner, 'origen_testers/smartest_based_tester/base/processors/if_ran_cleaner'
|
|
7
|
-
autoload :EmptyBranchCleaner, 'origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner'
|
|
8
|
-
autoload :FlagOptimizer, 'origen_testers/smartest_based_tester/base/processors/flag_optimizer'
|
|
9
|
-
autoload :ExtractSetVariables, 'origen_testers/smartest_based_tester/base/processors/extract_set_variables'
|
|
10
|
-
autoload :AdjacentIfCombiner, 'origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner'
|
|
11
|
-
autoload :ContinueImplementer, 'origen_testers/smartest_based_tester/base/processors/continue_implementer'
|
|
12
|
-
autoload :ExtractRunFlagTable, 'origen_testers/smartest_based_tester/base/processors/extract_run_flag_table'
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module SmartestBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
module Processors
|
|
5
|
+
# Include any V93K specific AST processors here
|
|
6
|
+
autoload :IfRanCleaner, 'origen_testers/smartest_based_tester/base/processors/if_ran_cleaner'
|
|
7
|
+
autoload :EmptyBranchCleaner, 'origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner'
|
|
8
|
+
autoload :FlagOptimizer, 'origen_testers/smartest_based_tester/base/processors/flag_optimizer'
|
|
9
|
+
autoload :ExtractSetVariables, 'origen_testers/smartest_based_tester/base/processors/extract_set_variables'
|
|
10
|
+
autoload :AdjacentIfCombiner, 'origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner'
|
|
11
|
+
autoload :ContinueImplementer, 'origen_testers/smartest_based_tester/base/processors/continue_implementer'
|
|
12
|
+
autoload :ExtractRunFlagTable, 'origen_testers/smartest_based_tester/base/processors/extract_run_flag_table'
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module SmartestBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
module Processors
|
|
5
|
-
# This combines adjacent if flag nodes where the flag is in the opposite state
|
|
6
|
-
#
|
|
7
|
-
# s(:flow,
|
|
8
|
-
# s(:name, "prb1"),
|
|
9
|
-
# s(:run_flag, "SOME_FLAG", true,
|
|
10
|
-
# s(:test,
|
|
11
|
-
# s(:name, "test1"))),
|
|
12
|
-
# s(:run_flag, "SOME_FLAG", false,
|
|
13
|
-
# s(:test,
|
|
14
|
-
# s(:name, "test2"))))
|
|
15
|
-
#
|
|
16
|
-
# s(:flow,
|
|
17
|
-
# s(:name, "prb1"),
|
|
18
|
-
# s(:run_flag, "SOME_FLAG",
|
|
19
|
-
# s(:flag_true,
|
|
20
|
-
# s(:test,
|
|
21
|
-
# s(:name, "test1"))),
|
|
22
|
-
# s(:flag_false,
|
|
23
|
-
# s(:test,
|
|
24
|
-
# s(:name, "test2")))))
|
|
25
|
-
#
|
|
26
|
-
# See here for an example of the kind of flow level effect it has:
|
|
27
|
-
# https://github.com/Origen-SDK/origen_testers/issues/43
|
|
28
|
-
class AdjacentIfCombiner < ATP::Processor
|
|
29
|
-
class SetRunFlagFinder < ATP::Processor
|
|
30
|
-
def contains?(node, flag_name)
|
|
31
|
-
@result = false
|
|
32
|
-
@flag_name = flag_name
|
|
33
|
-
process_all(node)
|
|
34
|
-
@result
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def on_set_run_flag(node)
|
|
38
|
-
if node.to_a[0] == @flag_name
|
|
39
|
-
@result = true
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
alias_method :on_set_flow_flag, :on_set_run_flag
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def on_unnamed_collection(node)
|
|
46
|
-
node.updated(nil, optimize(process_all(node.children)))
|
|
47
|
-
end
|
|
48
|
-
alias_method :on_on_fail, :on_unnamed_collection
|
|
49
|
-
alias_method :on_on_pass, :on_unnamed_collection
|
|
50
|
-
|
|
51
|
-
def on_named_collection(node)
|
|
52
|
-
name, *nodes = *node
|
|
53
|
-
node.updated(nil, [name] + optimize(process_all(nodes)))
|
|
54
|
-
end
|
|
55
|
-
alias_method :on_flow, :on_named_collection
|
|
56
|
-
alias_method :on_group, :on_named_collection
|
|
57
|
-
|
|
58
|
-
def on_group(node)
|
|
59
|
-
name, *nodes = *node
|
|
60
|
-
node.updated(nil, [name] + optimize(process_all(nodes)))
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def optimize(nodes)
|
|
64
|
-
results = []
|
|
65
|
-
node1 = nil
|
|
66
|
-
nodes.each do |node2|
|
|
67
|
-
if node1
|
|
68
|
-
if opposite_flag_states?(node1, node2) && safe_to_combine?(node1, node2)
|
|
69
|
-
results << combine(node1, node2)
|
|
70
|
-
node1 = nil
|
|
71
|
-
else
|
|
72
|
-
results << node1
|
|
73
|
-
node1 = node2
|
|
74
|
-
end
|
|
75
|
-
else
|
|
76
|
-
node1 = node2
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
results << node1 if node1
|
|
80
|
-
results
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
def combine(node1, node2)
|
|
84
|
-
true_node = node1.to_a[1] ? node1 : node2
|
|
85
|
-
false_node = node1.to_a[1] ? node2 : node1
|
|
86
|
-
true_node = n(:flag_true, process_all(true_node.to_a[2..-1]))
|
|
87
|
-
false_node = n(:flag_false, process_all(false_node.to_a[2..-1]))
|
|
88
|
-
|
|
89
|
-
n(node1.type, [node1.to_a[0], true_node, false_node])
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def opposite_flag_states?(node1, node2)
|
|
93
|
-
((node1.type == :run_flag && node2.type == :run_flag) || (node1.type == :flow_flag && node2.type == :flow_flag)) &&
|
|
94
|
-
node1.to_a[0] == node2.to_a[0] && node1.to_a[1] != node2.to_a[1]
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def safe_to_combine?(node1, node2)
|
|
98
|
-
# Nodes won't be collapsed if node1 touches the shared run flag, i.e. if there is any chance
|
|
99
|
-
# that by the time it would naturally execute node2, the flag could have been changed by node1
|
|
100
|
-
!SetRunFlagFinder.new.contains?(node1, node1.to_a[0])
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module SmartestBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
module Processors
|
|
5
|
+
# This combines adjacent if flag nodes where the flag is in the opposite state
|
|
6
|
+
#
|
|
7
|
+
# s(:flow,
|
|
8
|
+
# s(:name, "prb1"),
|
|
9
|
+
# s(:run_flag, "SOME_FLAG", true,
|
|
10
|
+
# s(:test,
|
|
11
|
+
# s(:name, "test1"))),
|
|
12
|
+
# s(:run_flag, "SOME_FLAG", false,
|
|
13
|
+
# s(:test,
|
|
14
|
+
# s(:name, "test2"))))
|
|
15
|
+
#
|
|
16
|
+
# s(:flow,
|
|
17
|
+
# s(:name, "prb1"),
|
|
18
|
+
# s(:run_flag, "SOME_FLAG",
|
|
19
|
+
# s(:flag_true,
|
|
20
|
+
# s(:test,
|
|
21
|
+
# s(:name, "test1"))),
|
|
22
|
+
# s(:flag_false,
|
|
23
|
+
# s(:test,
|
|
24
|
+
# s(:name, "test2")))))
|
|
25
|
+
#
|
|
26
|
+
# See here for an example of the kind of flow level effect it has:
|
|
27
|
+
# https://github.com/Origen-SDK/origen_testers/issues/43
|
|
28
|
+
class AdjacentIfCombiner < ATP::Processor
|
|
29
|
+
class SetRunFlagFinder < ATP::Processor
|
|
30
|
+
def contains?(node, flag_name)
|
|
31
|
+
@result = false
|
|
32
|
+
@flag_name = flag_name
|
|
33
|
+
process_all(node)
|
|
34
|
+
@result
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def on_set_run_flag(node)
|
|
38
|
+
if node.to_a[0] == @flag_name
|
|
39
|
+
@result = true
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
alias_method :on_set_flow_flag, :on_set_run_flag
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def on_unnamed_collection(node)
|
|
46
|
+
node.updated(nil, optimize(process_all(node.children)))
|
|
47
|
+
end
|
|
48
|
+
alias_method :on_on_fail, :on_unnamed_collection
|
|
49
|
+
alias_method :on_on_pass, :on_unnamed_collection
|
|
50
|
+
|
|
51
|
+
def on_named_collection(node)
|
|
52
|
+
name, *nodes = *node
|
|
53
|
+
node.updated(nil, [name] + optimize(process_all(nodes)))
|
|
54
|
+
end
|
|
55
|
+
alias_method :on_flow, :on_named_collection
|
|
56
|
+
alias_method :on_group, :on_named_collection
|
|
57
|
+
|
|
58
|
+
def on_group(node)
|
|
59
|
+
name, *nodes = *node
|
|
60
|
+
node.updated(nil, [name] + optimize(process_all(nodes)))
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def optimize(nodes)
|
|
64
|
+
results = []
|
|
65
|
+
node1 = nil
|
|
66
|
+
nodes.each do |node2|
|
|
67
|
+
if node1
|
|
68
|
+
if opposite_flag_states?(node1, node2) && safe_to_combine?(node1, node2)
|
|
69
|
+
results << combine(node1, node2)
|
|
70
|
+
node1 = nil
|
|
71
|
+
else
|
|
72
|
+
results << node1
|
|
73
|
+
node1 = node2
|
|
74
|
+
end
|
|
75
|
+
else
|
|
76
|
+
node1 = node2
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
results << node1 if node1
|
|
80
|
+
results
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def combine(node1, node2)
|
|
84
|
+
true_node = node1.to_a[1] ? node1 : node2
|
|
85
|
+
false_node = node1.to_a[1] ? node2 : node1
|
|
86
|
+
true_node = n(:flag_true, process_all(true_node.to_a[2..-1]))
|
|
87
|
+
false_node = n(:flag_false, process_all(false_node.to_a[2..-1]))
|
|
88
|
+
|
|
89
|
+
n(node1.type, [node1.to_a[0], true_node, false_node])
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def opposite_flag_states?(node1, node2)
|
|
93
|
+
((node1.type == :run_flag && node2.type == :run_flag) || (node1.type == :flow_flag && node2.type == :flow_flag)) &&
|
|
94
|
+
node1.to_a[0] == node2.to_a[0] && node1.to_a[1] != node2.to_a[1]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def safe_to_combine?(node1, node2)
|
|
98
|
+
# Nodes won't be collapsed if node1 touches the shared run flag, i.e. if there is any chance
|
|
99
|
+
# that by the time it would naturally execute node2, the flag could have been changed by node1
|
|
100
|
+
!SetRunFlagFinder.new.contains?(node1, node1.to_a[0])
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module SmartestBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
module Processors
|
|
5
|
-
# Implements continue on a fail branch for V93K by removing any bin nodes that are
|
|
6
|
-
# siblings of continue nodes. The continue nodes are also removed in the process since
|
|
7
|
-
# they have now served their function.
|
|
8
|
-
class ContinueImplementer < ATP::Processor
|
|
9
|
-
# Delete any on-fail child if it's 'empty'
|
|
10
|
-
def on_on_fail(node)
|
|
11
|
-
if cont = node.find(:continue) || @continue
|
|
12
|
-
node = node.updated(nil, node.children - [cont] - node.find_all(:set_result))
|
|
13
|
-
end
|
|
14
|
-
node.updated(nil, process_all(node.children))
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def on_group(node)
|
|
18
|
-
f = node.find(:on_fail)
|
|
19
|
-
if f && f.find(:continue)
|
|
20
|
-
with_continue do
|
|
21
|
-
node = node.updated(nil, process_all(node.children))
|
|
22
|
-
end
|
|
23
|
-
node
|
|
24
|
-
else
|
|
25
|
-
node.updated(nil, process_all(node.children))
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def with_continue
|
|
30
|
-
orig = @continue
|
|
31
|
-
@continue = true
|
|
32
|
-
yield
|
|
33
|
-
@continue = orig
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module SmartestBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
module Processors
|
|
5
|
+
# Implements continue on a fail branch for V93K by removing any bin nodes that are
|
|
6
|
+
# siblings of continue nodes. The continue nodes are also removed in the process since
|
|
7
|
+
# they have now served their function.
|
|
8
|
+
class ContinueImplementer < ATP::Processor
|
|
9
|
+
# Delete any on-fail child if it's 'empty'
|
|
10
|
+
def on_on_fail(node)
|
|
11
|
+
if cont = node.find(:continue) || @continue
|
|
12
|
+
node = node.updated(nil, node.children - [cont] - node.find_all(:set_result))
|
|
13
|
+
end
|
|
14
|
+
node.updated(nil, process_all(node.children))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def on_group(node)
|
|
18
|
+
f = node.find(:on_fail)
|
|
19
|
+
if f && f.find(:continue)
|
|
20
|
+
with_continue do
|
|
21
|
+
node = node.updated(nil, process_all(node.children))
|
|
22
|
+
end
|
|
23
|
+
node
|
|
24
|
+
else
|
|
25
|
+
node.updated(nil, process_all(node.children))
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def with_continue
|
|
30
|
+
orig = @continue
|
|
31
|
+
@continue = true
|
|
32
|
+
yield
|
|
33
|
+
@continue = orig
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|