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,30 +1,30 @@
|
|
|
1
|
-
module Tester
|
|
2
|
-
module Parser
|
|
3
|
-
class SearchableArray < ::Array
|
|
4
|
-
def where(conditions)
|
|
5
|
-
exact = conditions.delete(:exact)
|
|
6
|
-
results = SearchableArray.new
|
|
7
|
-
each do |item|
|
|
8
|
-
if conditions.all? do |attr, val|
|
|
9
|
-
if val.is_a?(Array)
|
|
10
|
-
if exact
|
|
11
|
-
val.any? { |v| item.send(attr).to_s == v.to_s }
|
|
12
|
-
else
|
|
13
|
-
val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
|
|
14
|
-
end
|
|
15
|
-
else
|
|
16
|
-
if exact
|
|
17
|
-
item.send(attr).to_s == val.to_s
|
|
18
|
-
else
|
|
19
|
-
item.send(attr).to_s =~ /#{val.to_s}/
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
results << item
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
results
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
1
|
+
module Tester
|
|
2
|
+
module Parser
|
|
3
|
+
class SearchableArray < ::Array
|
|
4
|
+
def where(conditions)
|
|
5
|
+
exact = conditions.delete(:exact)
|
|
6
|
+
results = SearchableArray.new
|
|
7
|
+
each do |item|
|
|
8
|
+
if conditions.all? do |attr, val|
|
|
9
|
+
if val.is_a?(Array)
|
|
10
|
+
if exact
|
|
11
|
+
val.any? { |v| item.send(attr).to_s == v.to_s }
|
|
12
|
+
else
|
|
13
|
+
val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
|
|
14
|
+
end
|
|
15
|
+
else
|
|
16
|
+
if exact
|
|
17
|
+
item.send(attr).to_s == val.to_s
|
|
18
|
+
else
|
|
19
|
+
item.send(attr).to_s =~ /#{val.to_s}/
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
results << item
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
results
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module Parser
|
|
3
|
-
class SearchableHash < ::Hash
|
|
4
|
-
def where(conditions)
|
|
5
|
-
exact = conditions.delete(:exact)
|
|
6
|
-
results = SearchableArray.new
|
|
7
|
-
each do |key, item|
|
|
8
|
-
if conditions.all? do |attr, val|
|
|
9
|
-
if val.is_a?(Array)
|
|
10
|
-
if exact
|
|
11
|
-
val.any? { |v| item.send(attr).to_s == v.to_s }
|
|
12
|
-
else
|
|
13
|
-
val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
|
|
14
|
-
end
|
|
15
|
-
else
|
|
16
|
-
if exact
|
|
17
|
-
item.send(attr).to_s == val.to_s
|
|
18
|
-
else
|
|
19
|
-
item.send(attr).to_s =~ /#{val.to_s}/
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
results << item
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
results
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module Parser
|
|
3
|
+
class SearchableHash < ::Hash
|
|
4
|
+
def where(conditions)
|
|
5
|
+
exact = conditions.delete(:exact)
|
|
6
|
+
results = SearchableArray.new
|
|
7
|
+
each do |key, item|
|
|
8
|
+
if conditions.all? do |attr, val|
|
|
9
|
+
if val.is_a?(Array)
|
|
10
|
+
if exact
|
|
11
|
+
val.any? { |v| item.send(attr).to_s == v.to_s }
|
|
12
|
+
else
|
|
13
|
+
val.any? { |v| item.send(attr).to_s =~ /#{v.to_s}/ }
|
|
14
|
+
end
|
|
15
|
+
else
|
|
16
|
+
if exact
|
|
17
|
+
item.send(attr).to_s == val.to_s
|
|
18
|
+
else
|
|
19
|
+
item.send(attr).to_s =~ /#{val.to_s}/
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
results << item
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
results
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -1,116 +1,116 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module PatternCompilers
|
|
3
|
-
require 'pathname'
|
|
4
|
-
require_relative 'pattern_compilers/ultraflex_pattern_compiler'
|
|
5
|
-
|
|
6
|
-
PLATFORMS = [:ultraflex]
|
|
7
|
-
|
|
8
|
-
# Linux compiler executable path
|
|
9
|
-
LINUX_PATTERN_COMPILER = "#{Origen.root!}/bin/latest/bin/atpcompiler"
|
|
10
|
-
|
|
11
|
-
# Windows compiler executable path
|
|
12
|
-
WINDOWS_PATTERN_COMPILER = "#{ENV['IGXLROOT']}/bin/apc.exe"
|
|
13
|
-
|
|
14
|
-
# Hash wrapper for compiler instances, defaults to display currently enabled
|
|
15
|
-
# tester platform. If none is set then user must supply a valid tester platform argument
|
|
16
|
-
def pattern_compilers(id = nil)
|
|
17
|
-
@pattern_compilers ||= begin
|
|
18
|
-
hash = {}
|
|
19
|
-
PLATFORMS.each { |platform| hash[platform] = {} }
|
|
20
|
-
hash
|
|
21
|
-
end
|
|
22
|
-
if id.nil?
|
|
23
|
-
@pattern_compilers[platform]
|
|
24
|
-
else
|
|
25
|
-
@pattern_compilers[platform][id].inspect_options
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
alias_method :compilers, :pattern_compilers
|
|
29
|
-
|
|
30
|
-
def pattern_compiler_platforms
|
|
31
|
-
PLATFORMS
|
|
32
|
-
end
|
|
33
|
-
alias_method :compiler_platforms, :pattern_compiler_platforms
|
|
34
|
-
|
|
35
|
-
# Delete pattern compiler instances. If no argument default to current platform
|
|
36
|
-
def delete_pattern_compilers(p = platform)
|
|
37
|
-
@pattern_compilers[p].delete_if { |k, v| true }
|
|
38
|
-
end
|
|
39
|
-
alias_method :delete_compilers, :delete_pattern_compilers
|
|
40
|
-
|
|
41
|
-
# Delete a pattern compiler instance.
|
|
42
|
-
def delete_pattern_compiler(id)
|
|
43
|
-
@pattern_compilers[platform].delete(id)
|
|
44
|
-
end
|
|
45
|
-
alias_method :delete_compiler, :delete_pattern_compiler
|
|
46
|
-
|
|
47
|
-
# Add a compiler for a particular tester platform and pattern type
|
|
48
|
-
def add_pattern_compiler(id, platform, options = {})
|
|
49
|
-
pattern_compilers
|
|
50
|
-
id = id.to_sym
|
|
51
|
-
platform = platform.to_sym
|
|
52
|
-
options[:location] = options[:location].to_sym unless options[:location].nil?
|
|
53
|
-
case platform
|
|
54
|
-
when :ultraflex
|
|
55
|
-
fail "Compiler ID #{id} for platform #{platform} already exists! Pick another name, delete the compiler, or clear all compilers" if @pattern_compilers[platform].keys.include? id
|
|
56
|
-
@pattern_compilers[platform][id] = UltraFlexPatternCompiler.new(id, options)
|
|
57
|
-
else
|
|
58
|
-
fail "Platform #{platform} is not valid, please choose from #{PLATFORMS.join(', ')}"
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
alias_method :add_compiler, :add_pattern_compiler
|
|
62
|
-
|
|
63
|
-
# Returns an array of the pattern compiler instance ids
|
|
64
|
-
# for the currently selected tester platform.
|
|
65
|
-
def pattern_compiler_instances(p = platform)
|
|
66
|
-
# Check if nil which means no tester is defined so ask user to supply it
|
|
67
|
-
fail "No tester platform defined so supply one of the following as an argument: #{PLATFORMS.join(', ')}" if p.nil?
|
|
68
|
-
p = p.to_sym
|
|
69
|
-
@pattern_compilers[p].keys
|
|
70
|
-
end
|
|
71
|
-
alias_method :compiler_instances, :pattern_compiler_instances
|
|
72
|
-
|
|
73
|
-
def pattern_compiler_options
|
|
74
|
-
cmd = ''
|
|
75
|
-
running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -help" : cmd = "#{LINUX_PATTERN_COMPILER} -help"
|
|
76
|
-
system cmd
|
|
77
|
-
end
|
|
78
|
-
alias_method :compiler_options, :pattern_compiler_options
|
|
79
|
-
|
|
80
|
-
def pattern_compiler_version
|
|
81
|
-
cmd = ''
|
|
82
|
-
running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -version" : cmd = "#{LINUX_PATTERN_COMPILER} -version"
|
|
83
|
-
system cmd
|
|
84
|
-
end
|
|
85
|
-
alias_method :compiler_version, :pattern_compiler_version
|
|
86
|
-
|
|
87
|
-
# Check if the current tester is supported
|
|
88
|
-
def pattern_compiler_supported?
|
|
89
|
-
PLATFORMS.include? platform ? true : false
|
|
90
|
-
end
|
|
91
|
-
alias_method :compiler_supported?, :pattern_compiler_supported?
|
|
92
|
-
|
|
93
|
-
private
|
|
94
|
-
|
|
95
|
-
def running_on_windows?
|
|
96
|
-
RUBY_PLATFORM == 'i386-mingw32'
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# Check if the current tester is an Ultraflex
|
|
100
|
-
def is_ultraflex?
|
|
101
|
-
platform == :ultraflex ? true : false
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def platform
|
|
105
|
-
if $tester.nil?
|
|
106
|
-
fail 'No tester instantiated, $tester is set to nil'
|
|
107
|
-
else
|
|
108
|
-
$tester.class.to_s.downcase.split('::').last.to_sym
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def target_enabled?
|
|
113
|
-
Origen.target.name.nil? ? true : false
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module PatternCompilers
|
|
3
|
+
require 'pathname'
|
|
4
|
+
require_relative 'pattern_compilers/ultraflex_pattern_compiler'
|
|
5
|
+
|
|
6
|
+
PLATFORMS = [:ultraflex]
|
|
7
|
+
|
|
8
|
+
# Linux compiler executable path
|
|
9
|
+
LINUX_PATTERN_COMPILER = "#{Origen.root!}/bin/latest/bin/atpcompiler"
|
|
10
|
+
|
|
11
|
+
# Windows compiler executable path
|
|
12
|
+
WINDOWS_PATTERN_COMPILER = "#{ENV['IGXLROOT']}/bin/apc.exe"
|
|
13
|
+
|
|
14
|
+
# Hash wrapper for compiler instances, defaults to display currently enabled
|
|
15
|
+
# tester platform. If none is set then user must supply a valid tester platform argument
|
|
16
|
+
def pattern_compilers(id = nil)
|
|
17
|
+
@pattern_compilers ||= begin
|
|
18
|
+
hash = {}
|
|
19
|
+
PLATFORMS.each { |platform| hash[platform] = {} }
|
|
20
|
+
hash
|
|
21
|
+
end
|
|
22
|
+
if id.nil?
|
|
23
|
+
@pattern_compilers[platform]
|
|
24
|
+
else
|
|
25
|
+
@pattern_compilers[platform][id].inspect_options
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
alias_method :compilers, :pattern_compilers
|
|
29
|
+
|
|
30
|
+
def pattern_compiler_platforms
|
|
31
|
+
PLATFORMS
|
|
32
|
+
end
|
|
33
|
+
alias_method :compiler_platforms, :pattern_compiler_platforms
|
|
34
|
+
|
|
35
|
+
# Delete pattern compiler instances. If no argument default to current platform
|
|
36
|
+
def delete_pattern_compilers(p = platform)
|
|
37
|
+
@pattern_compilers[p].delete_if { |k, v| true }
|
|
38
|
+
end
|
|
39
|
+
alias_method :delete_compilers, :delete_pattern_compilers
|
|
40
|
+
|
|
41
|
+
# Delete a pattern compiler instance.
|
|
42
|
+
def delete_pattern_compiler(id)
|
|
43
|
+
@pattern_compilers[platform].delete(id)
|
|
44
|
+
end
|
|
45
|
+
alias_method :delete_compiler, :delete_pattern_compiler
|
|
46
|
+
|
|
47
|
+
# Add a compiler for a particular tester platform and pattern type
|
|
48
|
+
def add_pattern_compiler(id, platform, options = {})
|
|
49
|
+
pattern_compilers
|
|
50
|
+
id = id.to_sym
|
|
51
|
+
platform = platform.to_sym
|
|
52
|
+
options[:location] = options[:location].to_sym unless options[:location].nil?
|
|
53
|
+
case platform
|
|
54
|
+
when :ultraflex
|
|
55
|
+
fail "Compiler ID #{id} for platform #{platform} already exists! Pick another name, delete the compiler, or clear all compilers" if @pattern_compilers[platform].keys.include? id
|
|
56
|
+
@pattern_compilers[platform][id] = UltraFlexPatternCompiler.new(id, options)
|
|
57
|
+
else
|
|
58
|
+
fail "Platform #{platform} is not valid, please choose from #{PLATFORMS.join(', ')}"
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
alias_method :add_compiler, :add_pattern_compiler
|
|
62
|
+
|
|
63
|
+
# Returns an array of the pattern compiler instance ids
|
|
64
|
+
# for the currently selected tester platform.
|
|
65
|
+
def pattern_compiler_instances(p = platform)
|
|
66
|
+
# Check if nil which means no tester is defined so ask user to supply it
|
|
67
|
+
fail "No tester platform defined so supply one of the following as an argument: #{PLATFORMS.join(', ')}" if p.nil?
|
|
68
|
+
p = p.to_sym
|
|
69
|
+
@pattern_compilers[p].keys
|
|
70
|
+
end
|
|
71
|
+
alias_method :compiler_instances, :pattern_compiler_instances
|
|
72
|
+
|
|
73
|
+
def pattern_compiler_options
|
|
74
|
+
cmd = ''
|
|
75
|
+
running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -help" : cmd = "#{LINUX_PATTERN_COMPILER} -help"
|
|
76
|
+
system cmd
|
|
77
|
+
end
|
|
78
|
+
alias_method :compiler_options, :pattern_compiler_options
|
|
79
|
+
|
|
80
|
+
def pattern_compiler_version
|
|
81
|
+
cmd = ''
|
|
82
|
+
running_on_windows? ? cmd = "#{WINDOWS_PATTERN_COMPILER} -version" : cmd = "#{LINUX_PATTERN_COMPILER} -version"
|
|
83
|
+
system cmd
|
|
84
|
+
end
|
|
85
|
+
alias_method :compiler_version, :pattern_compiler_version
|
|
86
|
+
|
|
87
|
+
# Check if the current tester is supported
|
|
88
|
+
def pattern_compiler_supported?
|
|
89
|
+
PLATFORMS.include? platform ? true : false
|
|
90
|
+
end
|
|
91
|
+
alias_method :compiler_supported?, :pattern_compiler_supported?
|
|
92
|
+
|
|
93
|
+
private
|
|
94
|
+
|
|
95
|
+
def running_on_windows?
|
|
96
|
+
RUBY_PLATFORM == 'i386-mingw32'
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Check if the current tester is an Ultraflex
|
|
100
|
+
def is_ultraflex?
|
|
101
|
+
platform == :ultraflex ? true : false
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def platform
|
|
105
|
+
if $tester.nil?
|
|
106
|
+
fail 'No tester instantiated, $tester is set to nil'
|
|
107
|
+
else
|
|
108
|
+
$tester.class.to_s.downcase.split('::').last.to_sym
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def target_enabled?
|
|
113
|
+
Origen.target.name.nil? ? true : false
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -1,88 +1,88 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module PatternCompilers
|
|
3
|
-
class UltraFlexPatternCompiler
|
|
4
|
-
private
|
|
5
|
-
|
|
6
|
-
# Check the file extension of a file, return status can be 'atp', 'list', or nil
|
|
7
|
-
def check_file_ext(file)
|
|
8
|
-
status = nil
|
|
9
|
-
ext = file.extname
|
|
10
|
-
name = file.basename
|
|
11
|
-
if ext == '.atp'
|
|
12
|
-
status = 'atp'
|
|
13
|
-
elsif ext == '.gz'
|
|
14
|
-
# Ensure we have a .atp.gz
|
|
15
|
-
sub_ext = name.to_s.split('.')[-2]
|
|
16
|
-
if sub_ext == 'atp'
|
|
17
|
-
status = 'atp'
|
|
18
|
-
end
|
|
19
|
-
elsif ext == '.list'
|
|
20
|
-
status = 'list'
|
|
21
|
-
end
|
|
22
|
-
status
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Parse a pattern list file recursively until all .atp or .atp.gz files are found
|
|
26
|
-
def parse_list(path, files)
|
|
27
|
-
list_name = path.basename
|
|
28
|
-
dir = path.dirname
|
|
29
|
-
line_number = 0
|
|
30
|
-
path.open('r') do |f|
|
|
31
|
-
while (line = f.gets)
|
|
32
|
-
line_number += 1
|
|
33
|
-
# Strip the leading and trailing whitespace for sloppy typers
|
|
34
|
-
line.strip!
|
|
35
|
-
# Skip a blank line
|
|
36
|
-
next if line.match(/^\s+$/)
|
|
37
|
-
# Check if the pattern or list exists
|
|
38
|
-
line_path = Pathname.new("#{dir}/#{line}")
|
|
39
|
-
unless line_path.file?
|
|
40
|
-
# puts "Skipping #{line_path.to_s} at line ##{line_number} in file #{path.to_s} because it is not a file"
|
|
41
|
-
next
|
|
42
|
-
end
|
|
43
|
-
# Process the file
|
|
44
|
-
process_file(line_path, files)
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Processes a file looking for a valid .atp or .list
|
|
50
|
-
def process_file(file, files)
|
|
51
|
-
# puts "processing file #{file.to_s}"
|
|
52
|
-
case check_file_ext(file)
|
|
53
|
-
when 'atp'
|
|
54
|
-
files << file unless files.include?(file)
|
|
55
|
-
when 'list'
|
|
56
|
-
parse_list(file, files)
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Processes a diretcory looking for files in '.' or recursively
|
|
61
|
-
def process_directory(dir, files, rec)
|
|
62
|
-
dir.children(true).each do |f|
|
|
63
|
-
# ignore sub-directories
|
|
64
|
-
if f.directory?
|
|
65
|
-
if rec == false
|
|
66
|
-
next
|
|
67
|
-
else
|
|
68
|
-
process_directory(f.expand_path, files, rec)
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
process_file(f.expand_path, files)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Deletes the pattern compiler log files
|
|
76
|
-
def clean_output
|
|
77
|
-
@jobs.each do |job|
|
|
78
|
-
logfile = Pathname.new("#{job.pattern.dirname}/#{job.pattern.basename.to_s.chomp(job.pattern.extname)}.log")
|
|
79
|
-
logfile.cleanpath
|
|
80
|
-
if logfile.file?
|
|
81
|
-
# puts "Deleting log file #{logfile}"
|
|
82
|
-
logfile.delete
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module PatternCompilers
|
|
3
|
+
class UltraFlexPatternCompiler
|
|
4
|
+
private
|
|
5
|
+
|
|
6
|
+
# Check the file extension of a file, return status can be 'atp', 'list', or nil
|
|
7
|
+
def check_file_ext(file)
|
|
8
|
+
status = nil
|
|
9
|
+
ext = file.extname
|
|
10
|
+
name = file.basename
|
|
11
|
+
if ext == '.atp'
|
|
12
|
+
status = 'atp'
|
|
13
|
+
elsif ext == '.gz'
|
|
14
|
+
# Ensure we have a .atp.gz
|
|
15
|
+
sub_ext = name.to_s.split('.')[-2]
|
|
16
|
+
if sub_ext == 'atp'
|
|
17
|
+
status = 'atp'
|
|
18
|
+
end
|
|
19
|
+
elsif ext == '.list'
|
|
20
|
+
status = 'list'
|
|
21
|
+
end
|
|
22
|
+
status
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Parse a pattern list file recursively until all .atp or .atp.gz files are found
|
|
26
|
+
def parse_list(path, files)
|
|
27
|
+
list_name = path.basename
|
|
28
|
+
dir = path.dirname
|
|
29
|
+
line_number = 0
|
|
30
|
+
path.open('r') do |f|
|
|
31
|
+
while (line = f.gets)
|
|
32
|
+
line_number += 1
|
|
33
|
+
# Strip the leading and trailing whitespace for sloppy typers
|
|
34
|
+
line.strip!
|
|
35
|
+
# Skip a blank line
|
|
36
|
+
next if line.match(/^\s+$/)
|
|
37
|
+
# Check if the pattern or list exists
|
|
38
|
+
line_path = Pathname.new("#{dir}/#{line}")
|
|
39
|
+
unless line_path.file?
|
|
40
|
+
# puts "Skipping #{line_path.to_s} at line ##{line_number} in file #{path.to_s} because it is not a file"
|
|
41
|
+
next
|
|
42
|
+
end
|
|
43
|
+
# Process the file
|
|
44
|
+
process_file(line_path, files)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Processes a file looking for a valid .atp or .list
|
|
50
|
+
def process_file(file, files)
|
|
51
|
+
# puts "processing file #{file.to_s}"
|
|
52
|
+
case check_file_ext(file)
|
|
53
|
+
when 'atp'
|
|
54
|
+
files << file unless files.include?(file)
|
|
55
|
+
when 'list'
|
|
56
|
+
parse_list(file, files)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Processes a diretcory looking for files in '.' or recursively
|
|
61
|
+
def process_directory(dir, files, rec)
|
|
62
|
+
dir.children(true).each do |f|
|
|
63
|
+
# ignore sub-directories
|
|
64
|
+
if f.directory?
|
|
65
|
+
if rec == false
|
|
66
|
+
next
|
|
67
|
+
else
|
|
68
|
+
process_directory(f.expand_path, files, rec)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
process_file(f.expand_path, files)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Deletes the pattern compiler log files
|
|
76
|
+
def clean_output
|
|
77
|
+
@jobs.each do |job|
|
|
78
|
+
logfile = Pathname.new("#{job.pattern.dirname}/#{job.pattern.basename.to_s.chomp(job.pattern.extname)}.log")
|
|
79
|
+
logfile.cleanpath
|
|
80
|
+
if logfile.file?
|
|
81
|
+
# puts "Deleting log file #{logfile}"
|
|
82
|
+
logfile.delete
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|