origen_testers 0.41.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/approved/j750/decompiler/sample/sample.atp +16 -0
- data/config/application.rb +6 -0
- data/config/boot.rb +3 -0
- data/config/commands.rb +148 -3
- data/config/global_commands.rb +0 -0
- data/config/shared_commands.rb +0 -0
- data/config/users.rb +0 -0
- data/config/version.rb +1 -1
- data/lib/commands/build.rb +0 -0
- data/lib/commands/convert.rb +16 -10
- data/lib/commands/run.rb +0 -0
- data/lib/origen_testers.rb +5 -0
- data/lib/origen_testers/api.rb +4 -0
- data/lib/origen_testers/atp.rb +0 -0
- data/lib/origen_testers/atp/ast/extractor.rb +0 -0
- data/lib/origen_testers/atp/ast/node.rb +0 -0
- data/lib/origen_testers/atp/flow.rb +0 -0
- data/lib/origen_testers/atp/flow_api.rb +0 -0
- data/lib/origen_testers/atp/formatter.rb +0 -0
- data/lib/origen_testers/atp/formatters/basic.rb +0 -0
- data/lib/origen_testers/atp/formatters/datalog.rb +0 -0
- data/lib/origen_testers/atp/parser.rb +0 -0
- data/lib/origen_testers/atp/processor.rb +0 -0
- data/lib/origen_testers/atp/processors/add_ids.rb +0 -0
- data/lib/origen_testers/atp/processors/add_set_result.rb +0 -0
- data/lib/origen_testers/atp/processors/adjacent_if_combiner.rb +0 -0
- data/lib/origen_testers/atp/processors/append_to.rb +0 -0
- data/lib/origen_testers/atp/processors/apply_post_group_actions.rb +0 -0
- data/lib/origen_testers/atp/processors/condition.rb +0 -0
- data/lib/origen_testers/atp/processors/continue_implementer.rb +0 -0
- data/lib/origen_testers/atp/processors/else_remover.rb +0 -0
- data/lib/origen_testers/atp/processors/empty_branch_remover.rb +0 -0
- data/lib/origen_testers/atp/processors/extract_set_flags.rb +0 -0
- data/lib/origen_testers/atp/processors/flag_optimizer.rb +0 -0
- data/lib/origen_testers/atp/processors/flattener.rb +0 -0
- data/lib/origen_testers/atp/processors/flow_id.rb +0 -0
- data/lib/origen_testers/atp/processors/marshal.rb +0 -0
- data/lib/origen_testers/atp/processors/on_pass_fail_remover.rb +0 -0
- data/lib/origen_testers/atp/processors/one_flag_per_test.rb +0 -0
- data/lib/origen_testers/atp/processors/pre_cleaner.rb +0 -0
- data/lib/origen_testers/atp/processors/redundant_condition_remover.rb +0 -0
- data/lib/origen_testers/atp/processors/relationship.rb +0 -0
- data/lib/origen_testers/atp/processors/sub_flow_remover.rb +0 -0
- data/lib/origen_testers/atp/program.rb +0 -0
- data/lib/origen_testers/atp/runner.rb +0 -0
- data/lib/origen_testers/atp/validator.rb +0 -0
- data/lib/origen_testers/atp/validators/condition.rb +0 -0
- data/lib/origen_testers/atp/validators/duplicate_ids.rb +0 -0
- data/lib/origen_testers/atp/validators/flags.rb +0 -0
- data/lib/origen_testers/atp/validators/jobs.rb +0 -0
- data/lib/origen_testers/atp/validators/missing_ids.rb +0 -0
- data/lib/origen_testers/atp_deprecation.rb +0 -0
- data/lib/origen_testers/basic_test_setups.rb +0 -0
- data/lib/origen_testers/callback_handlers.rb +0 -0
- data/lib/origen_testers/command_based_tester.rb +0 -0
- data/lib/origen_testers/decompiler.rb +9 -0
- data/lib/origen_testers/decompiler/decompiler_api.rb +163 -0
- data/lib/origen_testers/decompiler/nodes.rb +141 -0
- data/lib/origen_testers/decompiler/pattern.rb +304 -0
- data/lib/origen_testers/decompiler/pattern/elements/base.rb +44 -0
- data/lib/origen_testers/decompiler/pattern/elements/comment_block.rb +28 -0
- data/lib/origen_testers/decompiler/pattern/elements/frontmatter.rb +42 -0
- data/lib/origen_testers/decompiler/pattern/elements/pinlist.rb +44 -0
- data/lib/origen_testers/decompiler/pattern/elements/vector.rb +59 -0
- data/lib/origen_testers/decompiler/pattern/elements/vector_body_element.rb +105 -0
- data/lib/origen_testers/decompiler/pattern/enumerable_ext.rb +173 -0
- data/lib/origen_testers/decompiler/pattern/parsers.rb +111 -0
- data/lib/origen_testers/decompiler/pattern/spec_helpers.rb +41 -0
- data/lib/origen_testers/decompiler/pattern/splitter.rb +166 -0
- data/lib/origen_testers/decompiler/pattern/vector_delimiter_base.rb +70 -0
- data/lib/origen_testers/flow.rb +0 -0
- data/lib/origen_testers/generator/identity_map.rb +0 -0
- data/lib/origen_testers/generator/placeholder.rb +0 -0
- data/lib/origen_testers/generator/test_numberer.rb +0 -0
- data/lib/origen_testers/igxl_based_tester.rb +3 -0
- data/lib/origen_testers/igxl_based_tester/base.rb +8 -1
- data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/flow.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patset.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patsets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/decompiler.rb +72 -0
- data/lib/origen_testers/igxl_based_tester/decompiler/atp.rb +98 -0
- data/lib/origen_testers/igxl_based_tester/decompiler/nodes.rb +77 -0
- data/lib/origen_testers/igxl_based_tester/files.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750.rb +1 -1
- data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/flow.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/generator.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patset.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/instances.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/patgroups.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/patsets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/templates/patsubrs.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/ac_specs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/flow.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/flows.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/parser/timesets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/flow.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patgroups.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsubrs.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +0 -0
- data/lib/origen_testers/labview_based_tester.rb +0 -0
- data/lib/origen_testers/memory_style.rb +0 -0
- data/lib/origen_testers/no_interface.rb +0 -0
- data/lib/origen_testers/origen_ext/application/runner.rb +0 -0
- data/lib/origen_testers/origen_ext/generator.rb +0 -0
- data/lib/origen_testers/origen_ext/generator/flow.rb +0 -0
- data/lib/origen_testers/origen_ext/generator/pattern.rb +0 -0
- data/lib/origen_testers/origen_ext/generator/resources.rb +0 -0
- data/lib/origen_testers/origen_ext/pins/timing.rb +57 -0
- data/lib/origen_testers/origen_ext/pins/timing/timeset.rb +29 -0
- data/lib/origen_testers/parser.rb +0 -0
- data/lib/origen_testers/parser/description_lookup.rb +0 -0
- data/lib/origen_testers/parser/searchable_array.rb +0 -0
- data/lib/origen_testers/parser/searchable_hash.rb +0 -0
- data/lib/origen_testers/pattern_compilers.rb +0 -0
- data/lib/origen_testers/pattern_compilers/assembler.rb +0 -0
- data/lib/origen_testers/pattern_compilers/base.rb +0 -0
- data/lib/origen_testers/pattern_compilers/igxl_based.rb +0 -0
- data/lib/origen_testers/pattern_compilers/j750.rb +0 -0
- data/lib/origen_testers/pattern_compilers/job.rb +0 -0
- data/lib/origen_testers/pattern_compilers/runner.rb +0 -0
- data/lib/origen_testers/pattern_compilers/templates/template.aiv.erb +0 -0
- data/lib/origen_testers/pattern_compilers/ultraflex.rb +0 -0
- data/lib/origen_testers/pattern_compilers/v93k.rb +0 -0
- data/lib/origen_testers/pattern_compilers/v93k/digcap.rb +13 -8
- data/lib/origen_testers/pattern_compilers/v93k/multiport.rb +0 -0
- data/lib/origen_testers/program_generators.rb +0 -0
- data/lib/origen_testers/smartest_based_tester.rb +2 -0
- data/lib/origen_testers/smartest_based_tester/base.rb +2 -2
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/limits_file.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/processors/extract_bin_names.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_method.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/decompiler.rb +43 -0
- data/lib/origen_testers/smartest_based_tester/decompiler/avc.rb +76 -0
- data/lib/origen_testers/smartest_based_tester/decompiler/nodes.rb +23 -0
- data/lib/origen_testers/smartest_based_tester/smt7.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/smt8.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/limits_file.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/limits.csv.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/flow.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/generator.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/limits_file.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/limits_workbook.rb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/templates/limits.csv.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/templates/template.flow.erb +0 -0
- data/lib/origen_testers/smartest_based_tester/v93k_smt8/test_suite.rb +0 -0
- data/lib/origen_testers/stil_based_tester.rb +0 -0
- data/lib/origen_testers/stil_based_tester/base.rb +6 -6
- data/lib/origen_testers/stil_based_tester/d10.rb +0 -0
- data/lib/origen_testers/stil_based_tester/stil.rb +0 -0
- data/lib/origen_testers/test/basic_interface.rb +0 -0
- data/lib/origen_testers/test/block.rb +0 -0
- data/lib/origen_testers/test/complex_timing.rb +22 -0
- data/lib/origen_testers/test/custom_test_interface.rb +0 -0
- data/lib/origen_testers/test/dummy_decompiler.rb +106 -0
- data/lib/origen_testers/test/dut.rb +12 -0
- data/lib/origen_testers/test/dut2.rb +19 -6
- data/lib/origen_testers/test/dut_adv_timing.rb +0 -0
- data/lib/origen_testers/test/empty_dut.rb +12 -0
- data/lib/origen_testers/test/interface.rb +0 -0
- data/lib/origen_testers/test/nvm.rb +0 -0
- data/lib/origen_testers/timing.rb +108 -305
- data/lib/origen_testers/timing/timeset.rb +141 -0
- data/lib/origen_testers/timing/timing_api.rb +307 -0
- data/lib/origen_testers/vector.rb +0 -0
- data/lib/origen_testers/vector_based_tester.rb +0 -0
- data/lib/origen_testers/vector_generator.rb +1 -0
- data/lib/origen_testers/vector_pipeline.rb +0 -0
- data/pattern/bitmap.rb +0 -0
- data/pattern/dc_instr.rb +0 -0
- data/pattern/decompile.rb +4 -0
- data/pattern/delay.rb +0 -0
- data/pattern/freq_counter.rb +0 -0
- data/pattern/mem_test.rb +0 -0
- data/pattern/multi_vector.rb +0 -0
- data/pattern/multi_vector_plus1.rb +0 -0
- data/pattern/nvm/j750/add_late_pins.rb +0 -0
- data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +0 -0
- data/pattern/nvm/j750/iterator_test_x_bx.rb +0 -0
- data/pattern/nvm/j750/j750_halt.rb +0 -0
- data/pattern/nvm/j750/j750_workout.rb +0 -0
- data/pattern/nvm/j750/timing.rb +4 -4
- data/pattern/nvm/v93k/v93k_workout.rb +0 -0
- data/pattern/pin_flip.rb +9 -0
- data/pattern/read_write_reg.rb +0 -0
- data/pattern/reset.rb +0 -0
- data/pattern/simple.rb +4 -0
- data/pattern/single_overlay_store.rb +0 -0
- data/pattern/subroutines.rb +0 -0
- data/pattern/tester_overlay.rb +0 -0
- data/pattern/tester_store.rb +0 -0
- data/program/_additional_erase.rb +0 -0
- data/program/_efa_resources.rb +0 -0
- data/program/_erase.rb +0 -0
- data/program/_erase_vfy.rb +0 -0
- data/program/_iv_resources.rb +0 -0
- data/program/basic_interface.rb +0 -0
- data/program/components/_deep_nested.rb +0 -0
- data/program/components/_prb2_main.rb +0 -0
- data/program/components/_small.rb +0 -0
- data/program/components/_temp.rb +0 -0
- data/program/custom_tests.rb +0 -0
- data/program/flow_control.rb +0 -0
- data/program/prb1.rb +0 -0
- data/program/prb1_resources.rb +0 -0
- data/program/prb2.rb +0 -0
- data/program/test.rb +0 -0
- data/templates/example.txt.erb +0 -0
- data/templates/j750/_vt_flow.txt.erb +0 -0
- data/templates/j750/_vt_instances.txt.erb +0 -0
- data/templates/j750/program_sheet.txt.erb +0 -0
- data/templates/manifest/v93k.yaml.erb +0 -0
- data/templates/origen_guides/decompilation/decompilerapi.md.erb +192 -0
- data/templates/origen_guides/decompilation/overview.md.erb +214 -0
- data/templates/origen_guides/decompilation/platformspecifics.md.erb +291 -0
- data/templates/origen_guides/decompilation/universalapi.md.erb +598 -0
- data/templates/origen_guides/pattern/common.md.erb +0 -0
- data/templates/origen_guides/pattern/creating.md.erb +0 -0
- data/templates/origen_guides/pattern/custom.md.erb +0 -0
- data/templates/origen_guides/pattern/documenting.md.erb +0 -0
- data/templates/origen_guides/pattern/introduction.md.erb +0 -0
- data/templates/origen_guides/pattern/j750.md.erb +0 -0
- data/templates/origen_guides/pattern/name.md.erb +0 -0
- data/templates/origen_guides/pattern/pins.md.erb +0 -0
- data/templates/origen_guides/pattern/registers.md.erb +0 -0
- data/templates/origen_guides/pattern/running.md.erb +0 -0
- data/templates/origen_guides/pattern/stil.md.erb +0 -0
- data/templates/origen_guides/pattern/timing.md.erb +205 -2
- data/templates/origen_guides/pattern/ultraflex.md.erb +0 -0
- data/templates/origen_guides/pattern/v93k.md.erb +0 -0
- data/templates/origen_guides/program/code.md.erb +0 -0
- data/templates/origen_guides/program/custom.md.erb +0 -0
- data/templates/origen_guides/program/doc.md.erb +0 -0
- data/templates/origen_guides/program/flowapi.md.erb +0 -0
- data/templates/origen_guides/program/flows.md.erb +0 -0
- data/templates/origen_guides/program/generating.md.erb +0 -0
- data/templates/origen_guides/program/interface.md.erb +0 -0
- data/templates/origen_guides/program/introduction.md.erb +0 -0
- data/templates/origen_guides/program/j750.md.erb +0 -0
- data/templates/origen_guides/program/philosophy.md.erb +0 -0
- data/templates/origen_guides/program/resources.md.erb +0 -0
- data/templates/origen_guides/program/ultraflex.md.erb +0 -0
- data/templates/origen_guides/program/v93k.md.erb +0 -0
- data/templates/origen_guides/program/v93ksmt7.md.erb +0 -0
- data/templates/origen_guides/program/v93ksmt8.md.erb +0 -0
- data/templates/web/index.md.erb +0 -0
- data/templates/web/layouts/_basic.html.erb +0 -0
- data/templates/web/layouts/_guides.html.erb +0 -0
- data/templates/web/partials/_navbar.html.erb +0 -0
- data/templates/web/partials/_placeholder.md.erb +0 -0
- data/templates/web/release_notes.md.erb +0 -0
- metadata +61 -3
@@ -0,0 +1,28 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
require_relative './base'
|
5
|
+
|
6
|
+
class CommentBlock < Base
|
7
|
+
def initialize(parent)
|
8
|
+
super(node: parent, context: parent.context)
|
9
|
+
end
|
10
|
+
|
11
|
+
def comments
|
12
|
+
processor.comments
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_yaml_hash(options = {})
|
16
|
+
{
|
17
|
+
class: self.class.to_s,
|
18
|
+
index: (node.respond_to?(:index) ? node.index : nil),
|
19
|
+
type: node.type,
|
20
|
+
processor: node.class.to_s,
|
21
|
+
comments: comments,
|
22
|
+
platform_nodes: _platform_nodes_
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
require_relative './base'
|
5
|
+
|
6
|
+
class Frontmatter < Base
|
7
|
+
def initialize(node:, context:)
|
8
|
+
@source = :frontmatter
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
# Returns the topmost comment block.
|
13
|
+
# @return [Array] Array representing the topmost common, split by the <code> separator</code>.
|
14
|
+
# If there is no comment header, an empty array is returned.
|
15
|
+
def pattern_header
|
16
|
+
processor.pattern_header
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns all the comments, in the order they appear.
|
20
|
+
# @return [Array] Returns an array of comment blocks, where
|
21
|
+
# a comment block is an array of strings found in that block.
|
22
|
+
# The comment block can be recontructed into raw text by joining the
|
23
|
+
# array with the <code>separator</code>.
|
24
|
+
# If no comments were found, an empty array is returned.
|
25
|
+
# @note This will <u>NOT</u> include the <code>comment_header</code>.
|
26
|
+
def comments
|
27
|
+
processor.comments
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_yaml_hash
|
31
|
+
{
|
32
|
+
class: self.class.to_s,
|
33
|
+
processor: processor.class.to_s,
|
34
|
+
pattern_header: pattern_header,
|
35
|
+
comments: comments,
|
36
|
+
platform_nodes: _platform_nodes_
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
require_relative './base'
|
5
|
+
|
6
|
+
class Pinlist < Base
|
7
|
+
def initialize(node:, context:)
|
8
|
+
@source = :pinlist
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
# Returns the pinlist as an ordered list.
|
13
|
+
# @return [Array] Array of strings where each array element is the
|
14
|
+
# corresponding pin in that position.
|
15
|
+
# @example Return the pinlist.
|
16
|
+
# # (Teradyne ATP format) vector ($tset, tclk, tdi, tdo, tms)
|
17
|
+
# pinlist #=> ['tclk', 'tdi', 'tdo', 'tms']
|
18
|
+
def pinlist
|
19
|
+
processor.pins
|
20
|
+
end
|
21
|
+
|
22
|
+
def pins
|
23
|
+
processor.pins
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns the size of the pinlist.
|
27
|
+
# @return [Integer] Size of the pinlist.
|
28
|
+
def pinlist_size
|
29
|
+
processor.pinlist.size
|
30
|
+
end
|
31
|
+
alias_method :size, :pinlist_size
|
32
|
+
|
33
|
+
def to_yaml_hash
|
34
|
+
{
|
35
|
+
class: self.class.to_s,
|
36
|
+
processor: processor.class.to_s,
|
37
|
+
pinlist: pinlist,
|
38
|
+
platform_nodes: _platform_nodes_
|
39
|
+
}
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
require_relative './base'
|
5
|
+
|
6
|
+
# Represents a single Vector's AST.
|
7
|
+
class Vector < Base
|
8
|
+
alias_method :parent, :node
|
9
|
+
|
10
|
+
def initialize(parent, options = {})
|
11
|
+
super(node: parent, context: parent.context)
|
12
|
+
end
|
13
|
+
|
14
|
+
def timeset
|
15
|
+
processor.timeset
|
16
|
+
end
|
17
|
+
|
18
|
+
def repeat
|
19
|
+
processor.repeat
|
20
|
+
end
|
21
|
+
|
22
|
+
def pin_states
|
23
|
+
processor.pin_states
|
24
|
+
end
|
25
|
+
|
26
|
+
def comment
|
27
|
+
processor.comment
|
28
|
+
end
|
29
|
+
|
30
|
+
def vector_index
|
31
|
+
parent.vector_index
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_yaml_hash(options = {})
|
35
|
+
if parent.type == :vector
|
36
|
+
{
|
37
|
+
class: self.class.to_s,
|
38
|
+
vector_index: (parent.respond_to?(:vector_index) ? parent.vector_index : nil),
|
39
|
+
type: parent.type,
|
40
|
+
processor: processor.class.to_s,
|
41
|
+
timeset: timeset,
|
42
|
+
repeat: repeat,
|
43
|
+
pin_states: pin_states,
|
44
|
+
comment: comment,
|
45
|
+
platform_nodes: _platform_nodes_
|
46
|
+
}
|
47
|
+
else
|
48
|
+
{
|
49
|
+
class: self.class.to_s,
|
50
|
+
vector_index: (parent.respond_to?(:vector_index) ? parent.vector_index : nil),
|
51
|
+
type: parent.type,
|
52
|
+
processor: processor.class.to_s
|
53
|
+
}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
require_relative './base'
|
5
|
+
|
6
|
+
class VectorBodyElement < Base
|
7
|
+
# The known vector element types, supported regardless of the tester/platform.
|
8
|
+
BASE_ELEMENTS = [:vector, :comment_block]
|
9
|
+
|
10
|
+
attr_reader :type
|
11
|
+
attr_reader :element
|
12
|
+
attr_reader :vector_index
|
13
|
+
|
14
|
+
def initialize(node:, context:, **options)
|
15
|
+
@source = :vector_body_element
|
16
|
+
super(node: node, context: context)
|
17
|
+
@type = node.type
|
18
|
+
@vector_index = options[:vector_index]
|
19
|
+
|
20
|
+
# If the processor is a :vector or a comment_block, we can deal with
|
21
|
+
# this automatically. We also know that neither of these elemnts are
|
22
|
+
# platform specific.
|
23
|
+
@element = (BASE_ELEMENTS.include?(type)) ? to_element : false
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns an element class (e.g., Vector) that casts itself to a known vector-element type.
|
27
|
+
# For example, if this element's processor is a 'vector', then it can cast itself to a Vector class,
|
28
|
+
# to expose functionality (e.g., #timeset) on the class itself. Otherwise, the functionality will remain
|
29
|
+
# on the processor and its up to the user to know what the processor has.
|
30
|
+
# @note Calling this not required, as this is just an interface to a known processor type.
|
31
|
+
def to_element
|
32
|
+
if type == :comment_block
|
33
|
+
CommentBlock.new(self)
|
34
|
+
elsif type == :vector
|
35
|
+
Vector.new(self)
|
36
|
+
else
|
37
|
+
fail "Could not cast platform-specific vector body element type :#{type} to a standalone class!"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_yaml_hash(options = {})
|
42
|
+
{
|
43
|
+
class: self.class.to_s,
|
44
|
+
vector_index: vector_index
|
45
|
+
}.merge(
|
46
|
+
begin
|
47
|
+
if element
|
48
|
+
element.to_yaml_hash(options)
|
49
|
+
else
|
50
|
+
# If this element couldn't be matched, provide a simple yaml hash
|
51
|
+
# including some basic elements.
|
52
|
+
{
|
53
|
+
type: type,
|
54
|
+
processor: processor.class.to_s,
|
55
|
+
platform_nodes: _platform_nodes_
|
56
|
+
}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
def is_a_vector?
|
63
|
+
type == :vector
|
64
|
+
end
|
65
|
+
alias_method :is_vector?, :is_a_vector?
|
66
|
+
alias_method :vector?, :is_a_vector?
|
67
|
+
|
68
|
+
def platform
|
69
|
+
decompiled_pattern.platform
|
70
|
+
end
|
71
|
+
alias_method :tester, :platform
|
72
|
+
|
73
|
+
def platform?(p = nil)
|
74
|
+
decompiled_pattern.platform?(p)
|
75
|
+
end
|
76
|
+
alias_method :tester?, :platform?
|
77
|
+
|
78
|
+
def decompiler
|
79
|
+
decompiled_pattern.platform
|
80
|
+
end
|
81
|
+
|
82
|
+
def decompiler?(d = nil)
|
83
|
+
decompiled_pattern.decompiler?(d)
|
84
|
+
end
|
85
|
+
|
86
|
+
def is_a_comment?
|
87
|
+
type == :comment || type == :comment_block
|
88
|
+
end
|
89
|
+
alias_method :is_comment?, :is_a_comment?
|
90
|
+
|
91
|
+
def is_tester_specific?
|
92
|
+
platform_nodes.include?(type)
|
93
|
+
end
|
94
|
+
alias_method :is_tester_specific_element?, :is_tester_specific?
|
95
|
+
alias_method :is_platform_specific?, :is_tester_specific?
|
96
|
+
alias_method :is_platform_specific_element?, :is_tester_specific?
|
97
|
+
alias_method :is_decompiler_specific?, :is_tester_specific?
|
98
|
+
alias_method :is_decompiler_specific_element?, :is_tester_specific?
|
99
|
+
alias_method :is_a_tester_specific_element?, :is_tester_specific?
|
100
|
+
alias_method :is_a_platform_specific_element?, :is_tester_specific?
|
101
|
+
alias_method :is_a_decompiler_specific_element?, :is_tester_specific?
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
# We can't use Ruby's enumerable mix-in directly, as our each method
|
5
|
+
# isn't a true implementation, as the mix-in expects.
|
6
|
+
# Instead, we'll provide our own enumerable methods as needed that use
|
7
|
+
# our own each method.
|
8
|
+
module EnumerableExt
|
9
|
+
# Iterate through the vectors one by one.
|
10
|
+
# We'll begin reading the file from the vector start until the regex/block
|
11
|
+
# vector_delimiter is met.
|
12
|
+
# This delimiter can include multiple lines.
|
13
|
+
# Once the delimiter finishes, those lines will be sent to the treetop
|
14
|
+
# parser for conversion to an AST.
|
15
|
+
# Lastly, the next vector will start where the previous one left off.
|
16
|
+
def each(**options, &block)
|
17
|
+
unless decompiled?
|
18
|
+
Origen.app!.fail(message: 'Pattern has not yet been decompiled! Cannot iterate through vectors or query pattern aspects!')
|
19
|
+
end
|
20
|
+
vectors_started = false
|
21
|
+
delimiter_klass = VectorDelimiterBase
|
22
|
+
v = delimiter_klass.new(self)
|
23
|
+
vector_index = 0
|
24
|
+
|
25
|
+
if direct_source?
|
26
|
+
kickoff = 'source.split("\n")'
|
27
|
+
else
|
28
|
+
kickoff = 'File.foreach(source)'
|
29
|
+
end
|
30
|
+
|
31
|
+
eval(kickoff).each_with_index do |line, index|
|
32
|
+
# Get to the point in the file where the vectors begin
|
33
|
+
if index > section_indices[:vectors_end] && section_indices[:vectors_end] != -1
|
34
|
+
break
|
35
|
+
elsif index < section_indices[:vectors_start]
|
36
|
+
next
|
37
|
+
end
|
38
|
+
|
39
|
+
v.shift(line)
|
40
|
+
if v.delimited?
|
41
|
+
# index starts at 0, but most file editors start the line numbers at 1.
|
42
|
+
yield(_parse_vector_(v.current_vector!, vector_index: vector_index, line: index + 1))
|
43
|
+
vector_index += 1
|
44
|
+
|
45
|
+
if v.include_last_line?
|
46
|
+
# The last line is included in the current vector.
|
47
|
+
v = delimiter_klass.new(self)
|
48
|
+
else
|
49
|
+
# The last line shouldn't be included in this vector.
|
50
|
+
# Shift it into a new one.
|
51
|
+
v = delimiter_klass.new(self)
|
52
|
+
v.shift(line)
|
53
|
+
|
54
|
+
# Check if this new vector is delimited before grabbing
|
55
|
+
# the next line.
|
56
|
+
if v.delimited?
|
57
|
+
yield(_parse_vector_(v.current_vector!, vector_index: vector_index))
|
58
|
+
v = delimiter_klass.new(self)
|
59
|
+
vector_index += 1
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
alias_method :each_vector, :each
|
66
|
+
|
67
|
+
def each_vector_with_index(&block)
|
68
|
+
i = 0
|
69
|
+
each_vector do |v|
|
70
|
+
yield(v, i)
|
71
|
+
i += 1
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def vector_at(index, &block)
|
76
|
+
each_vector_with_index do |v, i|
|
77
|
+
if i == index
|
78
|
+
return v
|
79
|
+
end
|
80
|
+
end
|
81
|
+
nil
|
82
|
+
end
|
83
|
+
|
84
|
+
def collect(&block)
|
85
|
+
vectors = []
|
86
|
+
each_vector do |v|
|
87
|
+
if block_given?
|
88
|
+
vectors << yield(v)
|
89
|
+
else
|
90
|
+
vectors << v
|
91
|
+
end
|
92
|
+
end
|
93
|
+
vectors
|
94
|
+
end
|
95
|
+
alias_method :collect_vectors, :collect
|
96
|
+
alias_method :map, :collect
|
97
|
+
alias_method :map_vectors, :collect
|
98
|
+
|
99
|
+
def collect_with_index(&block)
|
100
|
+
vectors = []
|
101
|
+
each_vector_with_index do |v, i|
|
102
|
+
if block_given?
|
103
|
+
vectors << yield(v, i)
|
104
|
+
else
|
105
|
+
vectors << v
|
106
|
+
end
|
107
|
+
end
|
108
|
+
vectors
|
109
|
+
end
|
110
|
+
alias_method :collect_vectors_with_index, :collect_with_index
|
111
|
+
|
112
|
+
def find_all(&block)
|
113
|
+
vectors = []
|
114
|
+
if block_given?
|
115
|
+
each_vector { |v| vectors << v if yield(v) }
|
116
|
+
end
|
117
|
+
vectors
|
118
|
+
end
|
119
|
+
alias_method :select, :find_all
|
120
|
+
alias_method :filter, :find_all
|
121
|
+
|
122
|
+
def find(&block)
|
123
|
+
if block_given?
|
124
|
+
each_vector { |v| return v if yield(v) }
|
125
|
+
end
|
126
|
+
end
|
127
|
+
alias_method :detect, :find
|
128
|
+
|
129
|
+
def find_index(&block)
|
130
|
+
find(&block).vector_index
|
131
|
+
end
|
132
|
+
|
133
|
+
def count(&block)
|
134
|
+
cnt = 0
|
135
|
+
if block_given?
|
136
|
+
each_vector { |v| cnt += 1 if yield(v) }
|
137
|
+
else
|
138
|
+
each_vector { |v| cnt += 1 }
|
139
|
+
end
|
140
|
+
cnt
|
141
|
+
end
|
142
|
+
alias_method :size, :count
|
143
|
+
|
144
|
+
def reject(&block)
|
145
|
+
vectors = []
|
146
|
+
if block_given?
|
147
|
+
each_vector { |v| vectors << v unless yield(v) }
|
148
|
+
end
|
149
|
+
vectors
|
150
|
+
end
|
151
|
+
|
152
|
+
def first(n = nil)
|
153
|
+
if n
|
154
|
+
if n <= 0
|
155
|
+
return nil
|
156
|
+
end
|
157
|
+
|
158
|
+
vectors = []
|
159
|
+
each_vector_with_index do |v, i|
|
160
|
+
vectors << v
|
161
|
+
if n == (i - 1)
|
162
|
+
return vectors
|
163
|
+
end
|
164
|
+
end
|
165
|
+
vectors
|
166
|
+
else
|
167
|
+
each_vector { |v| return v }
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|