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,39 +1,39 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module IGXLBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
class SupplyLevel
|
|
5
|
-
attr_accessor :vmain, :valt # Supply level information
|
|
6
|
-
attr_accessor :ifold # Clamp current information
|
|
7
|
-
attr_accessor :delay # Supply power-up delay
|
|
8
|
-
|
|
9
|
-
def initialize(options = {}) # :nodoc:
|
|
10
|
-
options = {
|
|
11
|
-
vmain: 1.8, # Main supply voltage
|
|
12
|
-
valt: 1.8, # Alternate supply voltage
|
|
13
|
-
ifold: 1, # Supply clamp current
|
|
14
|
-
delay: 0 # Supply power-up delay
|
|
15
|
-
}.merge(options)
|
|
16
|
-
@vmain = options[:vmain]
|
|
17
|
-
@valt = options[:valt]
|
|
18
|
-
@ifold = options[:ifold]
|
|
19
|
-
@delay = options[:delay]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def ==(level)
|
|
23
|
-
if level.is_a? PinLevelSingle
|
|
24
|
-
vmain == level.vmain &&
|
|
25
|
-
valt == level.valt &&
|
|
26
|
-
ifold == level.ifold &&
|
|
27
|
-
delay == level.delay
|
|
28
|
-
else
|
|
29
|
-
super
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def platform
|
|
34
|
-
Origen.interface.platform
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class SupplyLevel
|
|
5
|
+
attr_accessor :vmain, :valt # Supply level information
|
|
6
|
+
attr_accessor :ifold # Clamp current information
|
|
7
|
+
attr_accessor :delay # Supply power-up delay
|
|
8
|
+
|
|
9
|
+
def initialize(options = {}) # :nodoc:
|
|
10
|
+
options = {
|
|
11
|
+
vmain: 1.8, # Main supply voltage
|
|
12
|
+
valt: 1.8, # Alternate supply voltage
|
|
13
|
+
ifold: 1, # Supply clamp current
|
|
14
|
+
delay: 0 # Supply power-up delay
|
|
15
|
+
}.merge(options)
|
|
16
|
+
@vmain = options[:vmain]
|
|
17
|
+
@valt = options[:valt]
|
|
18
|
+
@ifold = options[:ifold]
|
|
19
|
+
@delay = options[:delay]
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def ==(level)
|
|
23
|
+
if level.is_a? PinLevelSingle
|
|
24
|
+
vmain == level.vmain &&
|
|
25
|
+
valt == level.valt &&
|
|
26
|
+
ifold == level.ifold &&
|
|
27
|
+
delay == level.delay
|
|
28
|
+
else
|
|
29
|
+
super
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def platform
|
|
34
|
+
Origen.interface.platform
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module IGXLBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
class Levels
|
|
5
|
-
include ::OrigenTesters::Generator
|
|
6
|
-
|
|
7
|
-
# If levels are defined for a power group then this will return the level object
|
|
8
|
-
attr_accessor :pwr_group
|
|
9
|
-
# If levels are defined for a pin group then this will return the level object
|
|
10
|
-
attr_accessor :pin_group
|
|
11
|
-
|
|
12
|
-
def initialize(options = {}) # :nodoc:
|
|
13
|
-
@pwr_group = Hash.new { |h, k| h[k] = {} }
|
|
14
|
-
@pin_group = Hash.new { |h, k| h[k] = {} }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Defines a new Power Level category for the given pin/group
|
|
18
|
-
def add_power_level(cat, options = {})
|
|
19
|
-
cat = cat.to_sym unless cat.is_a? Symbol
|
|
20
|
-
pwr_group[cat] = platform::SupplyLevel.new(options)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
# Defines a new Single-Ended Pin Level category for the given pin/group
|
|
24
|
-
def add_se_pin_level(cat, options = {})
|
|
25
|
-
cat = cat.to_sym unless cat.is_a? Symbol
|
|
26
|
-
pin_group[cat] = platform::PinLevelSingle.new(options)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class Levels
|
|
5
|
+
include ::OrigenTesters::Generator
|
|
6
|
+
|
|
7
|
+
# If levels are defined for a power group then this will return the level object
|
|
8
|
+
attr_accessor :pwr_group
|
|
9
|
+
# If levels are defined for a pin group then this will return the level object
|
|
10
|
+
attr_accessor :pin_group
|
|
11
|
+
|
|
12
|
+
def initialize(options = {}) # :nodoc:
|
|
13
|
+
@pwr_group = Hash.new { |h, k| h[k] = {} }
|
|
14
|
+
@pin_group = Hash.new { |h, k| h[k] = {} }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Defines a new Power Level category for the given pin/group
|
|
18
|
+
def add_power_level(cat, options = {})
|
|
19
|
+
cat = cat.to_sym unless cat.is_a? Symbol
|
|
20
|
+
pwr_group[cat] = platform::SupplyLevel.new(options)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# Defines a new Single-Ended Pin Level category for the given pin/group
|
|
24
|
+
def add_se_pin_level(cat, options = {})
|
|
25
|
+
cat = cat.to_sym unless cat.is_a? Symbol
|
|
26
|
+
pin_group[cat] = platform::PinLevelSingle.new(options)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -1,110 +1,110 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module IGXLBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
class Levelset
|
|
5
|
-
include ::OrigenTesters::Generator
|
|
6
|
-
|
|
7
|
-
attr_accessor :pins
|
|
8
|
-
attr_accessor :spec_sheet
|
|
9
|
-
attr_accessor :ls_sheet_pins
|
|
10
|
-
|
|
11
|
-
# Levelset name
|
|
12
|
-
attr_accessor :name
|
|
13
|
-
|
|
14
|
-
OUTPUT_PREFIX = 'LV'
|
|
15
|
-
# OUTPUT_POSTFIX = 'LV'
|
|
16
|
-
|
|
17
|
-
def initialize(options = {}) # :nodoc:
|
|
18
|
-
@pins = {}
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# rubocop:disable Metrics/ParameterLists
|
|
22
|
-
|
|
23
|
-
# Adds a pin level to the given levelset
|
|
24
|
-
def add(lsname, pin, level, options = {})
|
|
25
|
-
options = {
|
|
26
|
-
spec_sheet: 'default' # defines which specset sheet to put variables in (e.g. func, scan) when generating specset files
|
|
27
|
-
}.merge(options)
|
|
28
|
-
lsname = lsname.to_sym unless lsname.is_a? Symbol
|
|
29
|
-
pin = pin.to_sym unless pin.is_a? Symbol
|
|
30
|
-
|
|
31
|
-
add_level(pin, level)
|
|
32
|
-
@name = lsname
|
|
33
|
-
@spec_sheet = options[:spec_sheet]
|
|
34
|
-
@ls_sheet_pins = options[:ls_sheet_pins] unless @ls_sheet_pins
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
# Assigns a level object to the given pin for this levelset
|
|
38
|
-
def add_level(pin, level)
|
|
39
|
-
if @pins.key?(pin)
|
|
40
|
-
Origen.log.error "Pin #{pin} already exists in levelset"
|
|
41
|
-
else
|
|
42
|
-
@pins[pin] = level
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def finalize(options = {})
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Populate an array of pins based on the pin or pingroup
|
|
50
|
-
def get_pin_objects(grp)
|
|
51
|
-
pins = []
|
|
52
|
-
if Origen.top_level.pin(grp).is_a?(Origen::Pins::Pin) ||
|
|
53
|
-
Origen.top_level.pin(grp).is_a?(Origen::Pins::FunctionProxy)
|
|
54
|
-
pins << Origen.top_level.pin(grp)
|
|
55
|
-
elsif Origen.top_level.pin(grp).is_a?(Origen::Pins::PinCollection)
|
|
56
|
-
Origen.top_level.pin(grp).each do |pin|
|
|
57
|
-
pins << pin
|
|
58
|
-
end
|
|
59
|
-
else
|
|
60
|
-
Origen.log.error "Could not find pin class: #{grp} #{Origen.top_level.pin(grp).class}"
|
|
61
|
-
end
|
|
62
|
-
pins
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Equality check to compare full contents of 2 level objects
|
|
66
|
-
def levels_eql?(level1, level2)
|
|
67
|
-
level1 == level2
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Globally modify text within the level object
|
|
71
|
-
def gsub_levels!(level, old_val, new_val)
|
|
72
|
-
# determine if object is a power level (conatins :vmain) or a SE pin level (:vil)
|
|
73
|
-
if level.respond_to?(:vmain)
|
|
74
|
-
level.vmain = level.vmain.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
75
|
-
level.valt = level.valt.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
76
|
-
level.ifold = level.ifold.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
77
|
-
# level.delay = level.delay.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
78
|
-
elsif level.respond_to?(:vil)
|
|
79
|
-
level.vil = level.vil.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
80
|
-
level.vih = level.vih.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
81
|
-
level.vol = level.vol.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
82
|
-
level.voh = level.voh.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
83
|
-
level.vcl = level.vcl.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
84
|
-
level.vch = level.vch.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
85
|
-
level.vt = level.vt.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
86
|
-
level.voutlotyp = level.voutlotyp.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
87
|
-
level.vouthityp = level.vouthityp.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
88
|
-
level.dmode = level.dmode.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def format_uflex_level(data, options = {})
|
|
93
|
-
options = {
|
|
94
|
-
}.merge(options)
|
|
95
|
-
|
|
96
|
-
if data !~ /^\s*$/
|
|
97
|
-
data = data.gsub(/^/, '=')
|
|
98
|
-
end
|
|
99
|
-
data = data.gsub(/(\W)([a-zA-Z])/, '\1_\2')
|
|
100
|
-
data = data.gsub(/(\*\s*)_([kmun]{0,1}[AVs]{1}\W)/, '\1\2')
|
|
101
|
-
data = data.gsub(/(\*\s*)_([kmun]{0,1}[AVs]{1})$/, '\1\2')
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def platform
|
|
105
|
-
Origen.interface.platform
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
110
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class Levelset
|
|
5
|
+
include ::OrigenTesters::Generator
|
|
6
|
+
|
|
7
|
+
attr_accessor :pins
|
|
8
|
+
attr_accessor :spec_sheet
|
|
9
|
+
attr_accessor :ls_sheet_pins
|
|
10
|
+
|
|
11
|
+
# Levelset name
|
|
12
|
+
attr_accessor :name
|
|
13
|
+
|
|
14
|
+
OUTPUT_PREFIX = 'LV'
|
|
15
|
+
# OUTPUT_POSTFIX = 'LV'
|
|
16
|
+
|
|
17
|
+
def initialize(options = {}) # :nodoc:
|
|
18
|
+
@pins = {}
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# rubocop:disable Metrics/ParameterLists
|
|
22
|
+
|
|
23
|
+
# Adds a pin level to the given levelset
|
|
24
|
+
def add(lsname, pin, level, options = {})
|
|
25
|
+
options = {
|
|
26
|
+
spec_sheet: 'default' # defines which specset sheet to put variables in (e.g. func, scan) when generating specset files
|
|
27
|
+
}.merge(options)
|
|
28
|
+
lsname = lsname.to_sym unless lsname.is_a? Symbol
|
|
29
|
+
pin = pin.to_sym unless pin.is_a? Symbol
|
|
30
|
+
|
|
31
|
+
add_level(pin, level)
|
|
32
|
+
@name = lsname
|
|
33
|
+
@spec_sheet = options[:spec_sheet]
|
|
34
|
+
@ls_sheet_pins = options[:ls_sheet_pins] unless @ls_sheet_pins
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Assigns a level object to the given pin for this levelset
|
|
38
|
+
def add_level(pin, level)
|
|
39
|
+
if @pins.key?(pin)
|
|
40
|
+
Origen.log.error "Pin #{pin} already exists in levelset"
|
|
41
|
+
else
|
|
42
|
+
@pins[pin] = level
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def finalize(options = {})
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Populate an array of pins based on the pin or pingroup
|
|
50
|
+
def get_pin_objects(grp)
|
|
51
|
+
pins = []
|
|
52
|
+
if Origen.top_level.pin(grp).is_a?(Origen::Pins::Pin) ||
|
|
53
|
+
Origen.top_level.pin(grp).is_a?(Origen::Pins::FunctionProxy)
|
|
54
|
+
pins << Origen.top_level.pin(grp)
|
|
55
|
+
elsif Origen.top_level.pin(grp).is_a?(Origen::Pins::PinCollection)
|
|
56
|
+
Origen.top_level.pin(grp).each do |pin|
|
|
57
|
+
pins << pin
|
|
58
|
+
end
|
|
59
|
+
else
|
|
60
|
+
Origen.log.error "Could not find pin class: #{grp} #{Origen.top_level.pin(grp).class}"
|
|
61
|
+
end
|
|
62
|
+
pins
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Equality check to compare full contents of 2 level objects
|
|
66
|
+
def levels_eql?(level1, level2)
|
|
67
|
+
level1 == level2
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Globally modify text within the level object
|
|
71
|
+
def gsub_levels!(level, old_val, new_val)
|
|
72
|
+
# determine if object is a power level (conatins :vmain) or a SE pin level (:vil)
|
|
73
|
+
if level.respond_to?(:vmain)
|
|
74
|
+
level.vmain = level.vmain.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
75
|
+
level.valt = level.valt.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
76
|
+
level.ifold = level.ifold.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
77
|
+
# level.delay = level.delay.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
78
|
+
elsif level.respond_to?(:vil)
|
|
79
|
+
level.vil = level.vil.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
80
|
+
level.vih = level.vih.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
81
|
+
level.vol = level.vol.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
82
|
+
level.voh = level.voh.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
83
|
+
level.vcl = level.vcl.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
84
|
+
level.vch = level.vch.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
85
|
+
level.vt = level.vt.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
86
|
+
level.voutlotyp = level.voutlotyp.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
87
|
+
level.vouthityp = level.vouthityp.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
88
|
+
level.dmode = level.dmode.gsub(/#{Regexp.escape(old_val)}/, new_val)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def format_uflex_level(data, options = {})
|
|
93
|
+
options = {
|
|
94
|
+
}.merge(options)
|
|
95
|
+
|
|
96
|
+
if data !~ /^\s*$/
|
|
97
|
+
data = data.gsub(/^/, '=')
|
|
98
|
+
end
|
|
99
|
+
data = data.gsub(/(\W)([a-zA-Z])/, '\1_\2')
|
|
100
|
+
data = data.gsub(/(\*\s*)_([kmun]{0,1}[AVs]{1}\W)/, '\1\2')
|
|
101
|
+
data = data.gsub(/(\*\s*)_([kmun]{0,1}[AVs]{1})$/, '\1\2')
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def platform
|
|
105
|
+
Origen.interface.platform
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
module OrigenTesters
|
|
2
|
-
module IGXLBasedTester
|
|
3
|
-
class Base
|
|
4
|
-
class Patgroup
|
|
5
|
-
attr_accessor :index
|
|
6
|
-
|
|
7
|
-
class Pattern
|
|
8
|
-
ATTRS = %w(group_name pattern_file comment)
|
|
9
|
-
|
|
10
|
-
ALIASES = {
|
|
11
|
-
pattern: :pattern_file
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
DEFAULTS = {
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
# Generate accessors for all attributes and their aliases
|
|
18
|
-
ATTRS.each do |attr|
|
|
19
|
-
attr_accessor attr.to_sym
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
ALIASES.each do |_alias, val|
|
|
23
|
-
define_method("#{_alias}=") do |v|
|
|
24
|
-
send("#{val}=", v)
|
|
25
|
-
end
|
|
26
|
-
define_method("#{_alias}") do
|
|
27
|
-
send(val)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def initialize(patgroup, attrs = {})
|
|
32
|
-
# Set the defaults
|
|
33
|
-
DEFAULTS.each do |k, v|
|
|
34
|
-
send("#{k}=", v)
|
|
35
|
-
end
|
|
36
|
-
# Then the values that have been supplied
|
|
37
|
-
self.group_name = patgroup
|
|
38
|
-
attrs.each do |k, v|
|
|
39
|
-
send("#{k}=", v)
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def to_s
|
|
44
|
-
l = "\t"
|
|
45
|
-
ATTRS.each do |attr|
|
|
46
|
-
l += "#{send(attr)}\t"
|
|
47
|
-
end
|
|
48
|
-
"#{l}"
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Specify multiple patterns by passing an array of attributes
|
|
53
|
-
# as the 2nd argument:
|
|
54
|
-
#
|
|
55
|
-
# Patset.new("mrd1_pgrp", :pattern => "nvm_mrd1.PAT")
|
|
56
|
-
#
|
|
57
|
-
# Patset.new("mrd1_pgrp", [{:pattern => "nvm_mrd1.PAT"},
|
|
58
|
-
# {:pattern => "nvm_global_subs.PAT},
|
|
59
|
-
# ])
|
|
60
|
-
def initialize(name, attrs = {})
|
|
61
|
-
attrs = [attrs] unless attrs.is_a? Array
|
|
62
|
-
attrs.each do |pattrs|
|
|
63
|
-
if pattrs[:pattern]
|
|
64
|
-
pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
|
|
65
|
-
Origen.interface.referenced_patterns << pat
|
|
66
|
-
end
|
|
67
|
-
lines << Pattern.new(name, pattrs)
|
|
68
|
-
end
|
|
69
|
-
self.name = name
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def ==(other_patgroup)
|
|
73
|
-
self.class == other_patgroup.class &&
|
|
74
|
-
name.to_s == other_patgroup.name.to_s &&
|
|
75
|
-
sorted_pattern_files == other_patgroup.sorted_pattern_files
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def name
|
|
79
|
-
@name
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
def name=(n)
|
|
83
|
-
@name = n
|
|
84
|
-
lines.each { |l| l.group_name = n }
|
|
85
|
-
n
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# Returns all lines in the pattern set
|
|
89
|
-
def lines
|
|
90
|
-
@lines ||= []
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
# Returns all pattern files in the pattern set in alphabetical order
|
|
94
|
-
def sorted_pattern_files
|
|
95
|
-
@lines.map(&:file_name).sort
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# Returns the fully formatted pattern group for insertion into a patgroups sheet
|
|
99
|
-
def to_s
|
|
100
|
-
l = ''
|
|
101
|
-
lines.each do |line|
|
|
102
|
-
l += "#{line}\r\n"
|
|
103
|
-
end
|
|
104
|
-
l.chomp
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
|
1
|
+
module OrigenTesters
|
|
2
|
+
module IGXLBasedTester
|
|
3
|
+
class Base
|
|
4
|
+
class Patgroup
|
|
5
|
+
attr_accessor :index
|
|
6
|
+
|
|
7
|
+
class Pattern
|
|
8
|
+
ATTRS = %w(group_name pattern_file comment)
|
|
9
|
+
|
|
10
|
+
ALIASES = {
|
|
11
|
+
pattern: :pattern_file
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
DEFAULTS = {
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
# Generate accessors for all attributes and their aliases
|
|
18
|
+
ATTRS.each do |attr|
|
|
19
|
+
attr_accessor attr.to_sym
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
ALIASES.each do |_alias, val|
|
|
23
|
+
define_method("#{_alias}=") do |v|
|
|
24
|
+
send("#{val}=", v)
|
|
25
|
+
end
|
|
26
|
+
define_method("#{_alias}") do
|
|
27
|
+
send(val)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def initialize(patgroup, attrs = {})
|
|
32
|
+
# Set the defaults
|
|
33
|
+
DEFAULTS.each do |k, v|
|
|
34
|
+
send("#{k}=", v)
|
|
35
|
+
end
|
|
36
|
+
# Then the values that have been supplied
|
|
37
|
+
self.group_name = patgroup
|
|
38
|
+
attrs.each do |k, v|
|
|
39
|
+
send("#{k}=", v)
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def to_s
|
|
44
|
+
l = "\t"
|
|
45
|
+
ATTRS.each do |attr|
|
|
46
|
+
l += "#{send(attr)}\t"
|
|
47
|
+
end
|
|
48
|
+
"#{l}"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Specify multiple patterns by passing an array of attributes
|
|
53
|
+
# as the 2nd argument:
|
|
54
|
+
#
|
|
55
|
+
# Patset.new("mrd1_pgrp", :pattern => "nvm_mrd1.PAT")
|
|
56
|
+
#
|
|
57
|
+
# Patset.new("mrd1_pgrp", [{:pattern => "nvm_mrd1.PAT"},
|
|
58
|
+
# {:pattern => "nvm_global_subs.PAT},
|
|
59
|
+
# ])
|
|
60
|
+
def initialize(name, attrs = {})
|
|
61
|
+
attrs = [attrs] unless attrs.is_a? Array
|
|
62
|
+
attrs.each do |pattrs|
|
|
63
|
+
if pattrs[:pattern]
|
|
64
|
+
pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
|
|
65
|
+
Origen.interface.referenced_patterns << pat
|
|
66
|
+
end
|
|
67
|
+
lines << Pattern.new(name, pattrs)
|
|
68
|
+
end
|
|
69
|
+
self.name = name
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def ==(other_patgroup)
|
|
73
|
+
self.class == other_patgroup.class &&
|
|
74
|
+
name.to_s == other_patgroup.name.to_s &&
|
|
75
|
+
sorted_pattern_files == other_patgroup.sorted_pattern_files
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def name
|
|
79
|
+
@name
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def name=(n)
|
|
83
|
+
@name = n
|
|
84
|
+
lines.each { |l| l.group_name = n }
|
|
85
|
+
n
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Returns all lines in the pattern set
|
|
89
|
+
def lines
|
|
90
|
+
@lines ||= []
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
# Returns all pattern files in the pattern set in alphabetical order
|
|
94
|
+
def sorted_pattern_files
|
|
95
|
+
@lines.map(&:file_name).sort
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Returns the fully formatted pattern group for insertion into a patgroups sheet
|
|
99
|
+
def to_s
|
|
100
|
+
l = ''
|
|
101
|
+
lines.each do |line|
|
|
102
|
+
l += "#{line}\r\n"
|
|
103
|
+
end
|
|
104
|
+
l.chomp
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|