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,111 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
module Parsers
|
5
|
+
# @abstract This requires the child to supply:
|
6
|
+
# A method #parse_frontmatter(raw_frontmatter) which returns
|
7
|
+
# a node with the frontmatter parsed.
|
8
|
+
def _parse_frontmatter_
|
9
|
+
begin
|
10
|
+
n = method_parse_frontmatter.call(raw_frontmatter: raw_frontmatter, context: self)
|
11
|
+
rescue ParseError => e
|
12
|
+
# If parsing threw a ParseError, the platform found the error.
|
13
|
+
# Raise this as normal.
|
14
|
+
raise(e)
|
15
|
+
rescue Exception => e
|
16
|
+
# Anything else, raise a parse error and provide the error raised
|
17
|
+
# by parsing.
|
18
|
+
m = "Error encountered while parsing the frontmatter: #{e.class}"
|
19
|
+
Origen.log.error(m)
|
20
|
+
Origen.log.error(e.message)
|
21
|
+
Origen.log.error(e.backtrace.join("\n\t"))
|
22
|
+
Origen.app!.fail(exception_class: ParseError, message: m)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Seperate this out so that errors creating the frontmatter class
|
26
|
+
# aren't confused with parsing errors.
|
27
|
+
@frontmatter = Frontmatter.new(node: n, context: self)
|
28
|
+
end
|
29
|
+
|
30
|
+
# @abstract This requires the child to supply:
|
31
|
+
# A method #parse_pinlist(raw_pinlist) which returns a node with
|
32
|
+
# the pinlist parsed.
|
33
|
+
#
|
34
|
+
# The node should have a #pins method, which returns an array of
|
35
|
+
# the pin names (as Strings).
|
36
|
+
# Example:
|
37
|
+
# parse_pinlist('vector ($tset, tclk, tdi, tdo, tms)')
|
38
|
+
# #=> ['tclk', 'tdi', 'tdo', 'tms']
|
39
|
+
def _parse_pinlist_
|
40
|
+
begin
|
41
|
+
n = method_parse_pinlist.call(raw_pinlist: raw_pinlist, context: self)
|
42
|
+
rescue ParseError => e
|
43
|
+
# If parsing threw a ParseError, the platform found the error.
|
44
|
+
# Raise this as normal.
|
45
|
+
raise(e)
|
46
|
+
rescue Exception => e
|
47
|
+
# Anything else, raise a parse error and provide the error raised by parsing.
|
48
|
+
m = "Error encountered while parsing the pinlist: #{e.class}"
|
49
|
+
Origen.log.error(m)
|
50
|
+
Origen.log.error(e.message)
|
51
|
+
Origen.log.error(e.backtrace.join("\n\t"))
|
52
|
+
Origen.app!.fail(exception_class: ParseError, message: m)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Seperate this out so that errors creating the pinlist class
|
56
|
+
# aren't confused with parsing errors.
|
57
|
+
@pinlist = Pinlist.new(node: n, context: self)
|
58
|
+
end
|
59
|
+
|
60
|
+
# This will parse vectors line-by-line, so multi-line vectors will
|
61
|
+
# need to take this into account.
|
62
|
+
# @abstract This requires the child to supply:
|
63
|
+
# A method #parse_vector(raw_vector) which returns a node with
|
64
|
+
# the vector parsed.
|
65
|
+
#
|
66
|
+
# This node should have the following:
|
67
|
+
# - type
|
68
|
+
# - platform_nodes
|
69
|
+
#
|
70
|
+
# In the even the type is vector, it should also have:
|
71
|
+
# - timeset
|
72
|
+
# - This should return the timeset of the vector as a String.
|
73
|
+
# - pin states
|
74
|
+
# - This should return an array of strings, where each string
|
75
|
+
# corresponds to the pin state of a pin indicated by its offset
|
76
|
+
# into the pin header array.
|
77
|
+
# - comment
|
78
|
+
# The comment in this line. This can be either String,
|
79
|
+
# an Array of Strings (for multiline comments, if supported), or
|
80
|
+
# nil, if there is no comment.
|
81
|
+
# - comment
|
82
|
+
# A true/false value that indicates if this entire line is a comment.
|
83
|
+
# If true, operations, timeset, pin states, can be nil.
|
84
|
+
# If the type is something else (platform specifc, such as a 'starb label',for the J750),
|
85
|
+
# all contents can be in the 'platform_nodes'.
|
86
|
+
def _parse_vector_(raw_vector, options = {})
|
87
|
+
begin
|
88
|
+
v = method_parse_vector.call(raw_vector: raw_vector, context: self, meta: (@vector_meta ||= {}))
|
89
|
+
rescue ParseError => e
|
90
|
+
# If parsing threw a ParseError, the platform found the error.
|
91
|
+
# Raise this as normal.
|
92
|
+
raise(e)
|
93
|
+
rescue Exception => e
|
94
|
+
# Anything else, raise a parse error and provide the error raised by parsing.
|
95
|
+
m = "Error encountered while parsing the vector at index #{options[:vector_index]}: #{e.class}"
|
96
|
+
Origen.log.error(m)
|
97
|
+
Origen.log.error('While parsing:')
|
98
|
+
Origen.log.error(" #{raw_vector}")
|
99
|
+
Origen.log.error(e.message)
|
100
|
+
Origen.log.error(e.backtrace.join("\n\t"))
|
101
|
+
Origen.app!.fail(exception_class: ParseError, message: m)
|
102
|
+
end
|
103
|
+
|
104
|
+
# Seperate this out so that errors creating the vector body element class
|
105
|
+
# aren't confused with parsing errors.
|
106
|
+
@current_vector = VectorBodyElement.new(node: v, context: self, **options)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
module SpecHelpers
|
5
|
+
def to_yaml_hash(options = {})
|
6
|
+
{
|
7
|
+
pattern: @path,
|
8
|
+
timestamp: Time.now.to_s,
|
9
|
+
class: self.class.to_s,
|
10
|
+
# ... Add in the variables here
|
11
|
+
|
12
|
+
frontmatter: frontmatter.to_yaml_hash,
|
13
|
+
pinlist: pinlist.to_yaml_hash,
|
14
|
+
vectors: collect_vectors { |v, i| v.to_yaml_hash }
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_spec_yaml(options = {})
|
19
|
+
to_yaml_hash.to_yaml
|
20
|
+
end
|
21
|
+
|
22
|
+
def spec_yaml_output
|
23
|
+
"#{Origen.app!.root}/output/#{platform}/decompiler/models/#{source.basename}.yaml"
|
24
|
+
end
|
25
|
+
|
26
|
+
def spec_yaml_approved
|
27
|
+
"#{Origen.app!.root}/approved/#{platform}/decompiler/models/#{source.basename}.yaml"
|
28
|
+
end
|
29
|
+
|
30
|
+
def write_spec_yaml(options = {})
|
31
|
+
path = options[:approved] ? spec_yaml_approved : spec_yaml_output
|
32
|
+
unless Dir.exist?(File.dirname(path))
|
33
|
+
FileUtils.mkdir_p(File.dirname(path))
|
34
|
+
end
|
35
|
+
File.open(path, 'w').puts(to_spec_yaml(options))
|
36
|
+
path
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,166 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
module Splitter
|
5
|
+
REQUIRED_KEYS = [:pinlist_start, :vectors_start, :vectors_end]
|
6
|
+
OPTIONAL_KEYS = [:separator, :vectors_include_start_line, :vectors_include_end_line]
|
7
|
+
|
8
|
+
def section_indices
|
9
|
+
@section_indices
|
10
|
+
end
|
11
|
+
|
12
|
+
def raw_lines(start, stop, &block)
|
13
|
+
retn_lines = []
|
14
|
+
_run_line_ = lambda do |line, index, retn_lines, &block|
|
15
|
+
if index > stop
|
16
|
+
break
|
17
|
+
elsif index >= start
|
18
|
+
if block_given?
|
19
|
+
yield
|
20
|
+
else
|
21
|
+
retn_lines << line
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
if direct_source?
|
27
|
+
source.split("\n").map { |l| "#{l}\n" }.each_with_index do |line, index|
|
28
|
+
_run_line_.call(line, index, retn_lines, &block)
|
29
|
+
end
|
30
|
+
else
|
31
|
+
File.foreach(source).each_with_index do |line, index|
|
32
|
+
_run_line_.call(line, index, retn_lines, &block)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
retn_lines
|
36
|
+
end
|
37
|
+
|
38
|
+
def raw_frontmatter
|
39
|
+
raw_lines(section_indices[:frontmatter_start], section_indices[:frontmatter_end])
|
40
|
+
end
|
41
|
+
|
42
|
+
def raw_pinlist
|
43
|
+
raw_lines(section_indices[:pinlist_start], section_indices[:pinlist_end])
|
44
|
+
end
|
45
|
+
|
46
|
+
def raw_vectors(&block)
|
47
|
+
raw_lines(section_indices[:vectors_start], section_indices[:vectors_end])
|
48
|
+
end
|
49
|
+
|
50
|
+
def raw_endmatter
|
51
|
+
raw_lines(section_indices[:endmatter_start], section_indices[:endmatter_end])
|
52
|
+
end
|
53
|
+
|
54
|
+
def split!
|
55
|
+
section_indices = split(splitter_config)
|
56
|
+
|
57
|
+
# Check that we found each section in the pattern.
|
58
|
+
if section_indices[:pinlist_start].nil?
|
59
|
+
Origen.log.error('Parsing Error!')
|
60
|
+
Origen.log.error("Could not locate the pinlist start in pattern #{source}")
|
61
|
+
Origen.log.error("Expected a pattern line to match '#{splitter_config[:pinlist_start]}'")
|
62
|
+
|
63
|
+
fail OrigenTesters::Decompiler::ParseError, "Parsing Error! Could not locate the pinlist start in pattern #{source}"
|
64
|
+
elsif section_indices[:vectors_start].nil?
|
65
|
+
Origen.log.error('Parsing Error!')
|
66
|
+
Origen.log.error("Could not locate the vector start in pattern #{source}")
|
67
|
+
Origen.log.error("Expected a pattern line to match '#{splitter_config[:vector_start]}'")
|
68
|
+
|
69
|
+
fail OrigenTesters::Decompiler::ParseError, "Parsing Error! Could not locate the vector body in pattern #{source}"
|
70
|
+
elsif section_indices[:vectors_end].nil?
|
71
|
+
Origen.log.error('Parsing Error!')
|
72
|
+
Origen.log.error("Could not locate the vector body end in pattern #{source}")
|
73
|
+
Origen.log.error("Expected a pattern line to match '#{splitter_config[:vector_end]}'")
|
74
|
+
|
75
|
+
fail OrigenTesters::Decompiler::ParseError, "Parsing Error! Could not locate the vector body end in pattern #{source}"
|
76
|
+
end
|
77
|
+
|
78
|
+
@section_indices = section_indices
|
79
|
+
@section_indices
|
80
|
+
end
|
81
|
+
|
82
|
+
# Splits the pattern into gour secionts using regexes:
|
83
|
+
# 1. Frontmatter
|
84
|
+
# 2. Pin List
|
85
|
+
# 3. Vectors
|
86
|
+
# 4. Endmatter
|
87
|
+
# The idea is that each section can be delimited by a line that matches some
|
88
|
+
# regex (and is not considered a comment line).
|
89
|
+
# The pattern will be read line-by-line, looking for the regexes.
|
90
|
+
# We're defining the pattern section as such:
|
91
|
+
# - Frontmatter starts at the beginning of the pattern and ends at the start of the pattern header.
|
92
|
+
# - Vectors start from the end of the pattern header and go until the end of the vectors.
|
93
|
+
# - Endmatter starts at the end of the vectors and ends at the end of the file.
|
94
|
+
# - Its possible (and fine) for endmatter to be non-existant, or even not allowed.
|
95
|
+
# - In the latter case, the endvector symbol should the EoF symbol.
|
96
|
+
# @return (Hash)
|
97
|
+
# rubocop:disable Metrics/ParameterLists
|
98
|
+
def split(pinlist_start:, vectors_start:, vectors_end:, vectors_include_start_line: false, vectors_include_end_line: false, &block)
|
99
|
+
def check_match(matcher, line, index, indices)
|
100
|
+
if matcher.respond_to?(:call)
|
101
|
+
matcher.call(line: line, index: index, current_indices: indices)
|
102
|
+
elsif matcher.is_a?(Regexp)
|
103
|
+
line =~ matcher
|
104
|
+
elsif matcher.is_a?(String)
|
105
|
+
line.start_with?(matcher)
|
106
|
+
else
|
107
|
+
fail "Splitter does not know how to match given matcher of class #{matcher.class}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
if File.zero?(source)
|
112
|
+
Origen.log.error('Parsing Error!')
|
113
|
+
Origen.log.error("Pattern #{source} has size zero!")
|
114
|
+
Origen.log.error('Decompiling empty files is not supported.')
|
115
|
+
|
116
|
+
fail(OrigenTesters::Decompiler::ParseError, "Empty or non-readable pattern file #{source}")
|
117
|
+
end
|
118
|
+
|
119
|
+
indices = {
|
120
|
+
frontmatter_start: 0,
|
121
|
+
endmatter_end: -1
|
122
|
+
}
|
123
|
+
if block_given?
|
124
|
+
fail 'Blocks are not yet supported!'
|
125
|
+
else
|
126
|
+
if vectors_end == -1
|
127
|
+
indices[:vectors_end] = -1
|
128
|
+
indices[:endmatter_start] = -1
|
129
|
+
end
|
130
|
+
_split_ = lambda do |line, index, indices|
|
131
|
+
if !indices[:pinlist_start]
|
132
|
+
if check_match(pinlist_start, line, index, indices)
|
133
|
+
indices[:frontmatter_end] = index - 1
|
134
|
+
indices[:pinlist_start] = index
|
135
|
+
end
|
136
|
+
elsif !indices[:vectors_start]
|
137
|
+
if check_match(vectors_start, line, index, indices)
|
138
|
+
indices[:pinlist_end] = index - 1
|
139
|
+
vectors_include_start_line ? indices[:vectors_start] = index : indices[:vectors_start] = index + 1
|
140
|
+
end
|
141
|
+
elsif !indices[:vectors_end]
|
142
|
+
if check_match(vectors_end, line, index, indices)
|
143
|
+
vectors_include_end_line ? indices[:vectors_end] = index : indices[:vectors_end] = index - 1
|
144
|
+
indices[:endmatter_start] = index
|
145
|
+
end
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
if direct_source?
|
150
|
+
source.split("\n").each_with_index do |line, index|
|
151
|
+
_split_.call(line, index, indices)
|
152
|
+
end
|
153
|
+
else
|
154
|
+
File.foreach(source).each_with_index do |line, index|
|
155
|
+
_split_.call(line, index, indices)
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
indices
|
160
|
+
end
|
161
|
+
# rubocop:enable Metrics/ParameterLists
|
162
|
+
end
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Decompiler
|
3
|
+
class Pattern
|
4
|
+
class VectorDelimiterBase
|
5
|
+
attr_reader :current_vector
|
6
|
+
attr_reader :parent
|
7
|
+
|
8
|
+
def initialize(parent)
|
9
|
+
@current_vector = []
|
10
|
+
@delimited = false
|
11
|
+
@in_comment_block = false
|
12
|
+
|
13
|
+
@parent = parent
|
14
|
+
end
|
15
|
+
|
16
|
+
def comment_start
|
17
|
+
parent.comment_start
|
18
|
+
end
|
19
|
+
|
20
|
+
def in_comment_block?
|
21
|
+
@in_comment_block
|
22
|
+
end
|
23
|
+
|
24
|
+
def shift(line)
|
25
|
+
if @in_comment_block
|
26
|
+
if !line.strip.start_with?(comment_start)
|
27
|
+
# End of the comment block.
|
28
|
+
# Signal that this vector is over, but don't include the
|
29
|
+
# newly shifted line.
|
30
|
+
@delimited = true
|
31
|
+
@include_last_line = false
|
32
|
+
else
|
33
|
+
@current_vector << line
|
34
|
+
end
|
35
|
+
else
|
36
|
+
if current_vector.empty? && line.strip.start_with?(comment_start)
|
37
|
+
# Currently in an empty vector and encountered a comment.
|
38
|
+
# Start a new comment block.
|
39
|
+
@in_comment_block = true
|
40
|
+
@current_vector << line
|
41
|
+
elsif !current_vector.empty? && line.strip.start_with?(comment_start)
|
42
|
+
# Not in an empty vector, but not in a comment block.
|
43
|
+
# Signal the end of this vector and start a new one with
|
44
|
+
# this vector.
|
45
|
+
@delimited = true
|
46
|
+
@include_last_line = false
|
47
|
+
else
|
48
|
+
# Standard single vector
|
49
|
+
@delimited = true
|
50
|
+
@include_last_line = true
|
51
|
+
@current_vector << line
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def current_vector!
|
57
|
+
current_vector.join('')
|
58
|
+
end
|
59
|
+
|
60
|
+
def delimited?
|
61
|
+
@delimited
|
62
|
+
end
|
63
|
+
|
64
|
+
def include_last_line?
|
65
|
+
@include_last_line
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/origen_testers/flow.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -4,6 +4,9 @@ module OrigenTesters
|
|
4
4
|
autoload :J750, 'origen_testers/igxl_based_tester/j750.rb'
|
5
5
|
autoload :J750_HPT, 'origen_testers/igxl_based_tester/j750_hpt.rb'
|
6
6
|
autoload :UltraFLEX, 'origen_testers/igxl_based_tester/ultraflex.rb'
|
7
|
+
|
8
|
+
require 'origen_testers/igxl_based_tester/base.rb'
|
9
|
+
require 'origen_testers/igxl_based_tester/decompiler'
|
7
10
|
end
|
8
11
|
# Convenience/Legacy names without the IGXLBasedTester namespace
|
9
12
|
autoload :J750, 'origen_testers/igxl_based_tester/j750.rb'
|
@@ -1,5 +1,12 @@
|
|
1
1
|
module OrigenTesters
|
2
2
|
module IGXLBasedTester
|
3
|
+
class << self
|
4
|
+
attr_reader :pat_extension
|
5
|
+
attr_reader :comment_char
|
6
|
+
end
|
7
|
+
@pat_extension = 'atp'
|
8
|
+
@comment_char = '//'
|
9
|
+
|
3
10
|
# This is the base class of all IGXL-based testers
|
4
11
|
class Base
|
5
12
|
include VectorBasedTester
|
@@ -27,7 +34,7 @@ module OrigenTesters
|
|
27
34
|
@counter_msb_bits = 0
|
28
35
|
@max_repeat_loop = 65_535 # 16 bits
|
29
36
|
@min_repeat_loop = 2
|
30
|
-
@pat_extension =
|
37
|
+
@pat_extension = OrigenTesters::IGXLBasedTester.pat_extension
|
31
38
|
@active_loads = true
|
32
39
|
@pipeline_depth = 34
|
33
40
|
@software_version = ''
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|