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,29 @@
|
|
1
|
+
require 'origen/pins/timing/timeset'
|
2
|
+
|
3
|
+
module Origen
|
4
|
+
module Pins
|
5
|
+
module Timing
|
6
|
+
class Timeset
|
7
|
+
attr_reader :_timeset_
|
8
|
+
|
9
|
+
# Bind to the original initialize method in Origen and add registering
|
10
|
+
# the DUT timeset to the tester.
|
11
|
+
@orig_init = instance_method(:initialize)
|
12
|
+
define_method(:initialize) do |*args|
|
13
|
+
self.class.instance_variable_get(:@orig_init).bind(self).call(*args)
|
14
|
+
instance_variable_set(:@_timeset_, OrigenTesters::Timing.lookup_or_register_timeset(self))
|
15
|
+
end
|
16
|
+
|
17
|
+
# Defer any missing methods to the corresponding timeset object on the tester side.
|
18
|
+
# If the method isn't found their either, raise the standard NoMethod error.
|
19
|
+
def method_missing(m, *args, &block)
|
20
|
+
if _timeset_.respond_to?(m)
|
21
|
+
_timeset_.send(m, *args, &block)
|
22
|
+
else
|
23
|
+
super
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -9,7 +9,10 @@ module OrigenTesters
|
|
9
9
|
@owner = owner
|
10
10
|
@pins = nil
|
11
11
|
|
12
|
-
if options && options[:
|
12
|
+
if options && options[:skip_setup]
|
13
|
+
@skip_setup = options[:skip_setup] # optional: force skip of AVI digcap setup
|
14
|
+
# e.g. handled by RDI
|
15
|
+
elsif options && options[:pins] && options[:vps]
|
13
16
|
@pins = options[:pins] # required: pins to be captured
|
14
17
|
@vps = options[:vps] # required: vecotrs per sample
|
15
18
|
@nrf = options[:nrf] || 1 # optional: nr_frames (defaults to 1)
|
@@ -21,15 +24,17 @@ module OrigenTesters
|
|
21
24
|
|
22
25
|
def render_aiv_lines
|
23
26
|
lines = []
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
unless @skip_setup
|
28
|
+
lines << ''
|
29
|
+
lines << 'AI_DIGCAP_SETTINGS {'
|
30
|
+
lines << render_digcap_header
|
31
|
+
avc_files.each do |f|
|
32
|
+
if vec_per_frame[f.to_sym] > 0
|
33
|
+
lines << render_digcap_entry(f)
|
34
|
+
end
|
30
35
|
end
|
36
|
+
lines << '};'
|
31
37
|
end
|
32
|
-
lines << '};'
|
33
38
|
lines
|
34
39
|
end
|
35
40
|
|
File without changes
|
File without changes
|
@@ -2,6 +2,8 @@ module OrigenTesters
|
|
2
2
|
module SmartestBasedTester
|
3
3
|
autoload :Base, 'origen_testers/smartest_based_tester/base'
|
4
4
|
autoload :V93K, 'origen_testers/smartest_based_tester/v93k'
|
5
|
+
|
6
|
+
require 'origen_testers/smartest_based_tester/decompiler'
|
5
7
|
end
|
6
8
|
# Convenience/Legacy names without the SmartestBasedTester namespace
|
7
9
|
autoload :V93K, 'origen_testers/smartest_based_tester/v93k'
|
@@ -411,7 +411,7 @@ module OrigenTesters
|
|
411
411
|
def handshake(options = {})
|
412
412
|
options = {
|
413
413
|
}.merge(options)
|
414
|
-
Pattern.split(options)
|
414
|
+
::Pattern.split(options)
|
415
415
|
end
|
416
416
|
|
417
417
|
# Do a frequency measure.
|
@@ -421,7 +421,7 @@ module OrigenTesters
|
|
421
421
|
def freq_count(_pin, options = {})
|
422
422
|
options = {
|
423
423
|
}.merge(options)
|
424
|
-
Pattern.split(options)
|
424
|
+
::Pattern.split(options)
|
425
425
|
end
|
426
426
|
|
427
427
|
# Generates a match loop on up to two pins.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module SmartestBasedTester
|
3
|
+
def self.suitable_decompiler_for(pattern: nil, tester: nil, **options)
|
4
|
+
if pattern && (Pathname(pattern).extname == '.avc')
|
5
|
+
OrigenTesters::SmartestBasedTester::Pattern
|
6
|
+
elsif tester && tester == 'v93k'
|
7
|
+
OrigenTesters::SmartestBasedTester::Pattern
|
8
|
+
end
|
9
|
+
end
|
10
|
+
extend OrigenTesters::Decompiler::API
|
11
|
+
register_decompiler(self)
|
12
|
+
|
13
|
+
class Pattern < OrigenTesters::Decompiler::Pattern
|
14
|
+
require_relative './decompiler/avc'
|
15
|
+
extend Avc
|
16
|
+
|
17
|
+
@platform = 'v93k'
|
18
|
+
@splitter_config = {
|
19
|
+
pinlist_start: /^FORMAT/,
|
20
|
+
|
21
|
+
# The vectors start will be picked up right after the pinlist is parsed.
|
22
|
+
# We'll throw away any whitespace we encounter between the pinlist and
|
23
|
+
# first vector element though.
|
24
|
+
vectors_start: proc do |line:, index:, current_indices:|
|
25
|
+
# The pinlist was encountered. Start the vectors at the next line
|
26
|
+
# that's not just whitespace
|
27
|
+
if current_indices[:pinlist_start] && line !~ /^\s/
|
28
|
+
next true
|
29
|
+
end
|
30
|
+
false
|
31
|
+
end,
|
32
|
+
|
33
|
+
# V93K doesn't have any endmatter, or vector end delimiter, so just
|
34
|
+
# grab vectors until the end of the file is reached.
|
35
|
+
vectors_end: -1
|
36
|
+
}
|
37
|
+
|
38
|
+
@platform_tokens = {
|
39
|
+
comment_start: '#'
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module SmartestBasedTester
|
3
|
+
class Pattern
|
4
|
+
require_relative './nodes'
|
5
|
+
|
6
|
+
module Avc
|
7
|
+
def nodes_namespace
|
8
|
+
OrigenTesters::SmartestBasedTester::Decompiler::Avc
|
9
|
+
end
|
10
|
+
|
11
|
+
def parse_frontmatter(raw_frontmatter:, context:)
|
12
|
+
# So far, only seen patterns that have comments and/or whitespace in
|
13
|
+
# the frontmatter. Not sure if anything else is allowed.
|
14
|
+
# For this, every comment will be considered the 'header'
|
15
|
+
header = []
|
16
|
+
raw_frontmatter.each_with_index do |l, i|
|
17
|
+
if !(l =~ Regexp.new('^\s*#')).nil?
|
18
|
+
header << l.chomp
|
19
|
+
elsif l.strip.empty?
|
20
|
+
# Whitespace. Do nothing.
|
21
|
+
else
|
22
|
+
Origen.app!.fail!("Unable to parse pattern frontmatter, at line: #{i}")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
OrigenTesters::Decompiler::Nodes::Frontmatter.new(context: context,
|
26
|
+
pattern_header: header,
|
27
|
+
comments: []
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse_pinlist(raw_pinlist:, context:)
|
32
|
+
raw_pinlist = raw_pinlist.join('')
|
33
|
+
# The pinlist can be parsed by grabbing everything between the 'format' token and the ';'
|
34
|
+
# character then splitting by whitespace. Whitespace is then stripped to clean
|
35
|
+
# up the names.
|
36
|
+
# E.g.: FORMAT TCLK TDI TDO TMS;
|
37
|
+
OrigenTesters::Decompiler::Nodes::Pinlist.new(context: context,
|
38
|
+
pins: raw_pinlist[raw_pinlist.index('FORMAT')..raw_pinlist.index(';') - 1].split(/\s+/)[1..-1].map(&:strip)
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def parse_vector(raw_vector:, context:, meta:)
|
43
|
+
if raw_vector =~ Regexp.new('^\s*#')
|
44
|
+
# Comment
|
45
|
+
OrigenTesters::Decompiler::Nodes::CommentBlock.new(context: context,
|
46
|
+
comments: raw_vector.split("\n")
|
47
|
+
)
|
48
|
+
elsif raw_vector =~ Regexp.new('^R\d+\s')
|
49
|
+
# Vector
|
50
|
+
elements = raw_vector.split(/\s+/, 2 + context.pinlist.size)
|
51
|
+
elements[-1] = elements[-1].split(/\s/, 2)
|
52
|
+
elements[-1][0] = elements[-1][0].gsub(';', '').chomp
|
53
|
+
elements[-1][1] = elements[-1][1].gsub(';', '').chomp
|
54
|
+
|
55
|
+
nodes_namespace::Vector.new(context: context,
|
56
|
+
repeat: elements[0].gsub('R', '').to_i,
|
57
|
+
timeset: elements[1],
|
58
|
+
pin_states: (elements[2..-2] || []) << elements[-1][0],
|
59
|
+
comment: elements[-1][1]
|
60
|
+
)
|
61
|
+
else
|
62
|
+
# Anything that doesn't start with Rxyz where xyz is some integer
|
63
|
+
# will be considered a sequencer instruction
|
64
|
+
inst_plus_args = raw_vector.split(/\s+/)
|
65
|
+
inst_plus_args.last.gsub!(';', '').strip!
|
66
|
+
|
67
|
+
nodes_namespace::SequencerInstruction.new(context: context,
|
68
|
+
instruction: inst_plus_args[0],
|
69
|
+
arguments: inst_plus_args[1..-1]
|
70
|
+
)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module SmartestBasedTester
|
3
|
+
module Decompiler
|
4
|
+
module Avc
|
5
|
+
class SequencerInstruction < OrigenTesters::Decompiler::Nodes::Node
|
6
|
+
PLATFORM_NODES = [:instruction, :arguments]
|
7
|
+
|
8
|
+
def initialize(instruction:, arguments: [], context:)
|
9
|
+
@execute = false
|
10
|
+
|
11
|
+
@instruction = instruction
|
12
|
+
@arguments = arguments
|
13
|
+
|
14
|
+
super(context: context, type: :sequencer_instruction)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class Vector < OrigenTesters::Decompiler::Nodes::Vector
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -105,16 +105,16 @@ module OrigenTesters
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
-
def set_timeset(
|
108
|
+
def set_timeset(t, period_in_ns = nil)
|
109
109
|
super
|
110
110
|
if pattern_only
|
111
111
|
# Why does D10 not include this?
|
112
|
-
# microcode "W #{
|
112
|
+
# microcode "W #{t};"
|
113
113
|
else
|
114
114
|
@wavesets ||= []
|
115
115
|
wave_number = nil
|
116
116
|
@wavesets.each_with_index do |w, i|
|
117
|
-
if w[:name] ==
|
117
|
+
if w[:name] == timeset.name && w[:period] = timeset.period_in_ns
|
118
118
|
wave_number = i
|
119
119
|
end
|
120
120
|
end
|
@@ -123,7 +123,7 @@ module OrigenTesters
|
|
123
123
|
ordered_pins.each do |pin|
|
124
124
|
if pin.direction == :input || pin.direction == :io
|
125
125
|
line = "#{pin.name} { 01 { "
|
126
|
-
wave = pin.drive_wave
|
126
|
+
wave = pin.drive_wave if tester.timeset.dut_timeset
|
127
127
|
(wave ? wave.evaluated_events : []).each do |t, v|
|
128
128
|
line << "'#{t}ns' "
|
129
129
|
if v == 0
|
@@ -140,7 +140,7 @@ module OrigenTesters
|
|
140
140
|
end
|
141
141
|
if pin.direction == :output || pin.direction == :io
|
142
142
|
line = "#{pin.name} { LHX { "
|
143
|
-
wave = pin.compare_wave
|
143
|
+
wave = pin.compare_wave if tester.timeset.dut_timeset
|
144
144
|
(wave ? wave.evaluated_events : []).each_with_index do |tv, i|
|
145
145
|
t, v = *tv
|
146
146
|
if i == 0 && t != 0
|
@@ -160,7 +160,7 @@ module OrigenTesters
|
|
160
160
|
lines << line
|
161
161
|
end
|
162
162
|
end
|
163
|
-
@wavesets << { name:
|
163
|
+
@wavesets << { name: timeset.name, period: timeset.period_in_ns, lines: lines }
|
164
164
|
wave_number = @wavesets.size
|
165
165
|
end
|
166
166
|
microcode "W Waveset#{wave_number};"
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module OrigenTesters
|
2
|
+
module Test
|
3
|
+
class ComplexTimingDUT
|
4
|
+
include Origen::TopLevel
|
5
|
+
|
6
|
+
def initialize(options = {})
|
7
|
+
add_timeset(:complex_timing)
|
8
|
+
timeset(:complex_timing) do |t|
|
9
|
+
t.period_in_ns = 1
|
10
|
+
t.drive_wave(:tclk) do |w|
|
11
|
+
w.drive(0, at: 0)
|
12
|
+
w.drive(:data, at: 'period/2')
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def startup
|
18
|
+
tester.set_timeset(:complex_timing)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|