origen_testers 0.13.1 → 0.13.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/config/application.rb +151 -151
- data/config/boot.rb +13 -13
- data/config/commands.rb +85 -86
- data/config/users.rb +18 -18
- data/config/version.rb +8 -8
- data/lib/commands/build.rb +69 -69
- data/lib/commands/run.rb +48 -48
- data/lib/origen_testers.rb +47 -47
- data/lib/origen_testers/api.rb +381 -381
- data/lib/origen_testers/basic_test_setups.rb +105 -105
- data/lib/origen_testers/callback_handlers.rb +59 -59
- data/lib/origen_testers/command_based_tester.rb +45 -45
- data/lib/origen_testers/flow.rb +382 -382
- data/lib/origen_testers/generator.rb +283 -283
- data/lib/origen_testers/generator/identity_map.rb +23 -23
- data/lib/origen_testers/generator/placeholder.rb +11 -11
- data/lib/origen_testers/generator/test_numberer.rb +23 -23
- data/lib/origen_testers/igxl_based_tester.rb +12 -12
- data/lib/origen_testers/igxl_based_tester/base.rb +1100 -1099
- data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +79 -79
- data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +169 -169
- data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +98 -98
- data/lib/origen_testers/igxl_based_tester/base/edge.rb +60 -60
- data/lib/origen_testers/igxl_based_tester/base/edges.rb +24 -24
- data/lib/origen_testers/igxl_based_tester/base/edgeset.rb +39 -39
- data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +130 -130
- data/lib/origen_testers/igxl_based_tester/base/flow.rb +460 -460
- data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +276 -276
- data/lib/origen_testers/igxl_based_tester/base/generator.rb +607 -607
- data/lib/origen_testers/igxl_based_tester/base/global_specs.rb +83 -83
- data/lib/origen_testers/igxl_based_tester/base/job.rb +75 -75
- data/lib/origen_testers/igxl_based_tester/base/jobs.rb +44 -44
- data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +59 -59
- data/lib/origen_testers/igxl_based_tester/base/level_supply.rb +39 -39
- data/lib/origen_testers/igxl_based_tester/base/levels.rb +31 -31
- data/lib/origen_testers/igxl_based_tester/base/levelset.rb +110 -110
- data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -109
- data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -38
- data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -68
- data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -56
- data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -38
- data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -68
- data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -56
- data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -38
- data/lib/origen_testers/igxl_based_tester/base/pinmap.rb +93 -93
- data/lib/origen_testers/igxl_based_tester/base/references.rb +25 -25
- data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +322 -322
- data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +66 -66
- data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +212 -212
- data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +37 -37
- data/lib/origen_testers/igxl_based_tester/base/timeset.rb +37 -37
- data/lib/origen_testers/igxl_based_tester/base/timesets.rb +49 -49
- data/lib/origen_testers/igxl_based_tester/base/timesets_basic.rb +49 -49
- data/lib/origen_testers/igxl_based_tester/files.rb +43 -43
- data/lib/origen_testers/igxl_based_tester/j750.rb +269 -269
- data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +32 -32
- data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +746 -746
- data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -34
- data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +32 -32
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +599 -599
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/parser.rb +102 -102
- data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -33
- data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -48
- data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -339
- data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -109
- data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -203
- data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -21
- data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -92
- data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -31
- data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +420 -420
- data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -24
- data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -13
- data/lib/origen_testers/igxl_based_tester/ultraflex.rb +798 -798
- data/lib/origen_testers/igxl_based_tester/ultraflex/ac_specsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/ate_hardware.rb +949 -949
- data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +36 -36
- data/lib/origen_testers/igxl_based_tester/ultraflex/dc_specsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/edge.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/edges.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/edgeset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/edgesets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +158 -158
- data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -19
- data/lib/origen_testers/igxl_based_tester/ultraflex/global_specs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/job.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/jobs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/level_io_se.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/level_supply.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/levels.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/levelset.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -18
- data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/references.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/ac_specsets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/dc_specsets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/edgesets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/global_specs.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/jobs.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/levelset.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/pinmap.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/references.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb +0 -0
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +315 -315
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/timeset.rb +9 -9
- data/lib/origen_testers/igxl_based_tester/ultraflex/timesets.rb +10 -10
- data/lib/origen_testers/igxl_based_tester/ultraflex/timesets_basic.rb +10 -10
- data/lib/origen_testers/interface.rb +345 -324
- data/lib/origen_testers/memory_style.rb +77 -77
- data/lib/origen_testers/no_interface.rb +7 -7
- data/lib/origen_testers/origen_ext/application/runner.rb +25 -25
- data/lib/origen_testers/origen_ext/generator.rb +54 -54
- data/lib/origen_testers/origen_ext/generator/flow.rb +91 -77
- data/lib/origen_testers/origen_ext/generator/resources.rb +21 -21
- data/lib/origen_testers/origen_ext/pins/pin.rb +78 -78
- data/lib/origen_testers/origen_ext/pins/pin_collection.rb +84 -84
- data/lib/origen_testers/parser.rb +22 -22
- data/lib/origen_testers/parser/description_lookup.rb +62 -62
- data/lib/origen_testers/parser/searchable_array.rb +30 -30
- data/lib/origen_testers/parser/searchable_hash.rb +30 -30
- data/lib/origen_testers/pattern_compilers.rb +116 -116
- data/lib/origen_testers/pattern_compilers/assembler.rb +88 -88
- data/lib/origen_testers/pattern_compilers/job.rb +96 -96
- data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -599
- data/lib/origen_testers/program_generators.rb +62 -62
- data/lib/origen_testers/smartest_based_tester.rb +8 -8
- data/lib/origen_testers/smartest_based_tester/base.rb +576 -567
- data/lib/origen_testers/smartest_based_tester/base/flow.rb +296 -291
- data/lib/origen_testers/smartest_based_tester/base/generator.rb +207 -194
- data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +32 -32
- data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +69 -69
- data/lib/origen_testers/smartest_based_tester/base/processors.rb +16 -16
- data/lib/origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner.rb +106 -106
- data/lib/origen_testers/smartest_based_tester/base/processors/continue_implementer.rb +39 -39
- data/lib/origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner.rb +21 -21
- data/lib/origen_testers/smartest_based_tester/base/processors/extract_run_flag_table.rb +33 -33
- data/lib/origen_testers/smartest_based_tester/base/processors/extract_set_variables.rb +22 -22
- data/lib/origen_testers/smartest_based_tester/base/processors/flag_optimizer.rb +188 -188
- data/lib/origen_testers/smartest_based_tester/base/processors/if_ran_cleaner.rb +34 -34
- data/lib/origen_testers/smartest_based_tester/base/test_method.rb +178 -164
- data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +77 -73
- data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -33
- data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -38
- data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -19
- data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -147
- data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +65 -65
- data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +208 -193
- data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -54
- data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +38 -38
- data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -8
- data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -89
- data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +181 -181
- data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -54
- data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -10
- data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -19
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -10
- data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -10
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -17
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -13
- data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +236 -214
- data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +48 -48
- data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -9
- data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +10 -10
- data/lib/origen_testers/test/basic_interface.rb +17 -17
- data/lib/origen_testers/test/block.rb +21 -21
- data/lib/origen_testers/test/custom_test_interface.rb +111 -111
- data/lib/origen_testers/test/dut.rb +295 -295
- data/lib/origen_testers/test/dut2.rb +76 -76
- data/lib/origen_testers/test/dut3.rb +244 -244
- data/lib/origen_testers/test/interface.rb +503 -503
- data/lib/origen_testers/test/nvm.rb +94 -94
- data/lib/origen_testers/timing.rb +368 -368
- data/lib/origen_testers/vector.rb +207 -207
- data/lib/origen_testers/vector_based_tester.rb +41 -41
- data/lib/origen_testers/vector_generator.rb +655 -655
- data/lib/origen_testers/vector_pipeline.rb +302 -302
- data/pattern/bitmap.rb +7 -7
- data/pattern/dc_instr.rb +7 -7
- data/pattern/delay.rb +7 -7
- data/pattern/freq_counter.rb +6 -6
- data/pattern/mem_test.rb +8 -8
- data/pattern/multi_vector.rb +122 -122
- data/pattern/multi_vector_plus1.rb +125 -125
- data/pattern/nvm/j750/add_late_pins.rb +3 -3
- data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -8
- data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -8
- data/pattern/nvm/j750/j750_halt.rb +159 -159
- data/pattern/nvm/j750/j750_workout.rb +209 -209
- data/pattern/nvm/j750/timing.rb +73 -73
- data/pattern/read_write_reg.rb +61 -61
- data/pattern/reset.rb +4 -4
- data/pattern/subroutines.rb +69 -69
- data/pattern/tester_overlay.rb +61 -52
- data/pattern/tester_store.rb +28 -28
- data/program/_additional_erase.rb +7 -7
- data/program/_efa_resources.rb +7 -7
- data/program/_erase.rb +25 -25
- data/program/_erase_vfy.rb +5 -5
- data/program/_iv_resources.rb +10 -10
- data/program/basic_interface.rb +5 -5
- data/program/components/_prb1_main.rb +222 -222
- data/program/components/_temp.rb +6 -6
- data/program/custom_tests.rb +10 -10
- data/program/flow_control.rb +422 -422
- data/program/prb1.rb +11 -11
- data/program/prb1_resources.rb +28 -28
- data/program/prb2.rb +27 -27
- data/program/test.rb +29 -29
- data/program/uflex_resources.rb +199 -199
- data/templates/example.txt.erb +53 -53
- data/templates/j750/program_sheet.txt.erb +9 -9
- data/templates/manifest/v93k.yaml.erb +22 -22
- data/templates/web/index.md.erb +51 -51
- data/templates/web/layouts/_basic.html.erb +15 -15
- data/templates/web/partials/_navbar.html.erb +22 -22
- data/templates/web/release_notes.md.erb +5 -5
- metadata +2 -2
data/pattern/tester_store.rb
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
Pattern.create(name: "test_store") do
|
|
2
|
-
tester.capture_style = :digcap
|
|
3
|
-
# configure tdo to non-default settings
|
|
4
|
-
tester.capture_memory :digcap do |mem|
|
|
5
|
-
mem.pin :tdo, size: 8
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
tester.cycle
|
|
9
|
-
|
|
10
|
-
dut.pin(:tclk).drive(1)
|
|
11
|
-
dut.pin(:tdi).drive(1)
|
|
12
|
-
dut.pin(:tdo).assert(1)
|
|
13
|
-
dut.pin(:tms).drive(1)
|
|
14
|
-
|
|
15
|
-
cc 'should get a repeat 5 vector'
|
|
16
|
-
tester.cycle repeat: 5
|
|
17
|
-
tester.cycle
|
|
18
|
-
tester.store(dut.pin(:tdo))
|
|
19
|
-
|
|
20
|
-
tester.cycle
|
|
21
|
-
tester.cycle
|
|
22
|
-
|
|
23
|
-
dut.pin(:tclk).drive(0)
|
|
24
|
-
tester.store!(dut.pin(:tdo))
|
|
25
|
-
tester.cycle
|
|
26
|
-
tester.cycle
|
|
27
|
-
tester.store!(dut.pin(:pa))
|
|
28
|
-
tester.cycle
|
|
1
|
+
Pattern.create(name: "test_store") do
|
|
2
|
+
tester.capture_style = :digcap
|
|
3
|
+
# configure tdo to non-default settings
|
|
4
|
+
tester.capture_memory :digcap do |mem|
|
|
5
|
+
mem.pin :tdo, size: 8
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
tester.cycle
|
|
9
|
+
|
|
10
|
+
dut.pin(:tclk).drive(1)
|
|
11
|
+
dut.pin(:tdi).drive(1)
|
|
12
|
+
dut.pin(:tdo).assert(1)
|
|
13
|
+
dut.pin(:tms).drive(1)
|
|
14
|
+
|
|
15
|
+
cc 'should get a repeat 5 vector'
|
|
16
|
+
tester.cycle repeat: 5
|
|
17
|
+
tester.cycle
|
|
18
|
+
tester.store(dut.pin(:tdo))
|
|
19
|
+
|
|
20
|
+
tester.cycle
|
|
21
|
+
tester.cycle
|
|
22
|
+
|
|
23
|
+
dut.pin(:tclk).drive(0)
|
|
24
|
+
tester.store!(dut.pin(:tdo))
|
|
25
|
+
tester.cycle
|
|
26
|
+
tester.cycle
|
|
27
|
+
tester.store!(dut.pin(:pa))
|
|
28
|
+
tester.cycle
|
|
29
29
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
Flow.create do |options|
|
|
2
|
-
|
|
3
|
-
if_enable 'additional_erase', :or => options[:force] do
|
|
4
|
-
func :erase_all
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
end
|
|
1
|
+
Flow.create do |options|
|
|
2
|
+
|
|
3
|
+
if_enable 'additional_erase', :or => options[:force] do
|
|
4
|
+
func :erase_all
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
end
|
data/program/_efa_resources.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
Resources.create do |options|
|
|
2
|
-
|
|
3
|
-
func :bitmap_all0
|
|
4
|
-
|
|
5
|
-
import 'iv_resources', :number => 3
|
|
6
|
-
|
|
7
|
-
end
|
|
1
|
+
Resources.create do |options|
|
|
2
|
+
|
|
3
|
+
func :bitmap_all0
|
|
4
|
+
|
|
5
|
+
import 'iv_resources', :number => 3
|
|
6
|
+
|
|
7
|
+
end
|
data/program/_erase.rb
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# A sub flow is a flow like any other.
|
|
2
|
-
# However the name should begin with
|
|
3
|
-
# _ to indicate that it is a sub
|
|
4
|
-
# flow this will prevent it being
|
|
5
|
-
# generated as a top-level flow by
|
|
6
|
-
# Origen.
|
|
7
|
-
# Any arguments passed in when
|
|
8
|
-
# instantiating this flow will be available via a hash as the second
|
|
9
|
-
# argument, here called options, although the naming is arbitrary.
|
|
10
|
-
Flow.create do |options|
|
|
11
|
-
|
|
12
|
-
# Define default options
|
|
13
|
-
options = { :pulses => 4,
|
|
14
|
-
:post_verify => true,
|
|
15
|
-
}.merge(options)
|
|
16
|
-
|
|
17
|
-
options[:pulses].times do
|
|
18
|
-
func :erase_all
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
if options[:post_verify]
|
|
22
|
-
import 'erase_vfy'
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
1
|
+
# A sub flow is a flow like any other.
|
|
2
|
+
# However the name should begin with
|
|
3
|
+
# _ to indicate that it is a sub
|
|
4
|
+
# flow this will prevent it being
|
|
5
|
+
# generated as a top-level flow by
|
|
6
|
+
# Origen.
|
|
7
|
+
# Any arguments passed in when
|
|
8
|
+
# instantiating this flow will be available via a hash as the second
|
|
9
|
+
# argument, here called options, although the naming is arbitrary.
|
|
10
|
+
Flow.create do |options|
|
|
11
|
+
|
|
12
|
+
# Define default options
|
|
13
|
+
options = { :pulses => 4,
|
|
14
|
+
:post_verify => true,
|
|
15
|
+
}.merge(options)
|
|
16
|
+
|
|
17
|
+
options[:pulses].times do
|
|
18
|
+
func :erase_all
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if options[:post_verify]
|
|
22
|
+
import 'erase_vfy'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
data/program/_erase_vfy.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Flow.create do |options|
|
|
2
|
-
|
|
3
|
-
func :margin_read1_all1
|
|
4
|
-
|
|
5
|
-
end
|
|
1
|
+
Flow.create do |options|
|
|
2
|
+
|
|
3
|
+
func :margin_read1_all1
|
|
4
|
+
|
|
5
|
+
end
|
data/program/_iv_resources.rb
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
Resources.create do |options|
|
|
2
|
-
|
|
3
|
-
options = { :number => 2,
|
|
4
|
-
}.merge(options)
|
|
5
|
-
|
|
6
|
-
options[:number].times do |x|
|
|
7
|
-
func "bitcell_iv_#{x}"
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
end
|
|
1
|
+
Resources.create do |options|
|
|
2
|
+
|
|
3
|
+
options = { :number => 2,
|
|
4
|
+
}.merge(options)
|
|
5
|
+
|
|
6
|
+
options[:number].times do |x|
|
|
7
|
+
func "bitcell_iv_#{x}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
end
|
data/program/basic_interface.rb
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Flow.create interface: 'OrigenTesters::Test::BasicInterface' do
|
|
2
|
-
|
|
3
|
-
functional :test1, sbin: 100
|
|
4
|
-
|
|
5
|
-
end
|
|
1
|
+
Flow.create interface: 'OrigenTesters::Test::BasicInterface' do
|
|
2
|
+
|
|
3
|
+
functional :test1, sbin: 100
|
|
4
|
+
|
|
5
|
+
end
|
|
@@ -1,222 +1,222 @@
|
|
|
1
|
-
Flow.create do |options|
|
|
2
|
-
# Instantiate tests via the
|
|
3
|
-
# interface
|
|
4
|
-
func 'program_ckbd', :tname => 'PGM_CKBD', :tnum => 1000, :bin => 100, :soft_bin => 1100
|
|
5
|
-
func 'margin_read1_ckbd'
|
|
6
|
-
|
|
7
|
-
# Control the build process based on
|
|
8
|
-
# the current target
|
|
9
|
-
if $dut.has_margin0_bug?
|
|
10
|
-
func 'normal_read_ckbd'
|
|
11
|
-
else
|
|
12
|
-
func 'margin_read0_ckbd'
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Include a sub flow, example of
|
|
16
|
-
# parameter passing
|
|
17
|
-
import '../erase', :pulses => 6
|
|
18
|
-
|
|
19
|
-
# Render an ERB template, or raw
|
|
20
|
-
# text file
|
|
21
|
-
if $tester.j750?
|
|
22
|
-
flow.render 'templates/j750/vt_flow', :include_tifr => true
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
log 'Should be v1'
|
|
26
|
-
func :program_ckbd
|
|
27
|
-
log 'Should be v2'
|
|
28
|
-
func :program_ckbd, :duration => :dynamic
|
|
29
|
-
log 'Should be v1'
|
|
30
|
-
func :program_ckbd
|
|
31
|
-
log 'Should be v2'
|
|
32
|
-
func :program_ckbd, :duration => :dynamic
|
|
33
|
-
|
|
34
|
-
log 'Should be a v1 test instance group'
|
|
35
|
-
func :program_ckbd, :by_block => true
|
|
36
|
-
log 'Should be a v2 test instance group'
|
|
37
|
-
func :program_ckbd, :by_block => true, :duration => :dynamic
|
|
38
|
-
log 'Should be a v1 test instance group'
|
|
39
|
-
func :program_ckbd, :by_block => true
|
|
40
|
-
log 'Should be a v2 test instance group'
|
|
41
|
-
func :program_ckbd, :by_block => true, :duration => :dynamic
|
|
42
|
-
|
|
43
|
-
# Test job conditions
|
|
44
|
-
func :p1_only_test, :if_job => :p1
|
|
45
|
-
if_job [:p1, :p2] do
|
|
46
|
-
func :p1_or_p2_only_test
|
|
47
|
-
end
|
|
48
|
-
func :not_p1_test, :unless_job => :p1
|
|
49
|
-
func :not_p1_or_p2_test, :unless_job => [:p1, :p2]
|
|
50
|
-
unless_job [:p1, :p2] do
|
|
51
|
-
func :another_not_p1_or_p2_test
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
log 'Verify that a test with an external instance works'
|
|
55
|
-
por
|
|
56
|
-
|
|
57
|
-
log 'Verify that a request to use the current context works'
|
|
58
|
-
func :erase_all, :if_job => :p1 # Job should be P1
|
|
59
|
-
func :erase_all, :context => :current # Job should be P1
|
|
60
|
-
unless_job :p2 do
|
|
61
|
-
func :erase_all, :context => :current # Job should be P1
|
|
62
|
-
func :erase_all # Job should be !P2
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Deliver an initial erase pulse
|
|
66
|
-
func :erase_all
|
|
67
|
-
|
|
68
|
-
# Deliver additional erase pulses as required until it verifies, maximum of 5 additional pulses
|
|
69
|
-
5.times do |x|
|
|
70
|
-
# Assign a unique id attribute to each verify so that we know which one we are talking about when
|
|
71
|
-
# making other tests dependent on it.
|
|
72
|
-
# When Origen sees the if_failed dependency on a future test it will be smart enough to inhibit the binning
|
|
73
|
-
# on this test without having to explicitly declare that.
|
|
74
|
-
func :margin_read1_all1, :id => "erase_vfy_#{x}"
|
|
75
|
-
# Run this test only if the given verify failed
|
|
76
|
-
func :erase_all, :if_failed => "erase_vfy_#{x}"
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# A final verify to set the binning
|
|
80
|
-
func :margin_read1_all1
|
|
81
|
-
|
|
82
|
-
log 'Test if enable'
|
|
83
|
-
func :erase_all, :if_enable => 'do_erase'
|
|
84
|
-
|
|
85
|
-
if_enable 'do_erase' do
|
|
86
|
-
func :erase_all
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
log 'Test unless enable'
|
|
90
|
-
func :erase_all, :unless_enable => 'no_extra_erase'
|
|
91
|
-
|
|
92
|
-
unless_enable 'no_extra_erase' do
|
|
93
|
-
func :erase_all
|
|
94
|
-
func :erase_all
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
func :erase_all
|
|
98
|
-
func :erase_all
|
|
99
|
-
|
|
100
|
-
log 'Test if_passed'
|
|
101
|
-
func :erase_all, :id => 'erase_passed_1'
|
|
102
|
-
func :erase_all, :id => 'erase_passed_2'
|
|
103
|
-
|
|
104
|
-
func :margin_read1_all1, :if_passed => 'erase_passed_1'
|
|
105
|
-
if_passed 'erase_passed_2' do
|
|
106
|
-
func :margin_read1_all1
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
log 'Test unless_passed'
|
|
110
|
-
func :erase_all, :id => 'erase_passed_3'
|
|
111
|
-
func :erase_all, :id => 'erase_passed_4'
|
|
112
|
-
|
|
113
|
-
func :margin_read1_all1, :unless_passed => 'erase_passed_3'
|
|
114
|
-
unless_passed 'erase_passed_4' do
|
|
115
|
-
func :margin_read1_all1
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
log 'Test if_failed'
|
|
119
|
-
func :erase_all, :id => 'erase_failed_1'
|
|
120
|
-
func :erase_all, :id => 'erase_failed_2'
|
|
121
|
-
|
|
122
|
-
func :margin_read1_all1, :if_failed => 'erase_failed_1'
|
|
123
|
-
if_failed 'erase_failed_2' do
|
|
124
|
-
func :margin_read1_all1
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
log 'Test unless_failed'
|
|
128
|
-
func :erase_all, :id => 'erase_failed_3'
|
|
129
|
-
func :erase_all, :id => 'erase_failed_4'
|
|
130
|
-
|
|
131
|
-
func :margin_read1_all1, :unless_failed => 'erase_failed_3'
|
|
132
|
-
unless_failed 'erase_failed_4' do
|
|
133
|
-
func :margin_read1_all1
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
log 'Test if_ran'
|
|
137
|
-
func :erase_all, :id => 'erase_ran_1'
|
|
138
|
-
func :erase_all, :id => 'erase_ran_2'
|
|
139
|
-
|
|
140
|
-
func :margin_read1_all1, :if_ran => 'erase_ran_1'
|
|
141
|
-
if_ran 'erase_ran_2' do
|
|
142
|
-
func :margin_read1_all1
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
log 'Test unless_ran'
|
|
146
|
-
func :erase_all, :id => 'erase_ran_3'
|
|
147
|
-
func :erase_all, :id => 'erase_ran_4'
|
|
148
|
-
|
|
149
|
-
func :margin_read1_all1, :unless_ran => 'erase_ran_3'
|
|
150
|
-
unless_ran 'erase_ran_4' do
|
|
151
|
-
func :margin_read1_all1
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
log 'Verify that job context wraps import'
|
|
155
|
-
if_job :fr do
|
|
156
|
-
import '../erase'
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
log 'Verify that job context wraps enable block within an import'
|
|
160
|
-
if_job :fr do
|
|
161
|
-
import '../additional_erase'
|
|
162
|
-
import '../additional_erase', :force => true
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
log 'Verify that flow.cz works...'
|
|
166
|
-
func :margin_read1_all1, :pin_levels => :cz, :cz_setup => 'vbplus_sweep'
|
|
167
|
-
|
|
168
|
-
log 'Verify that flow.cz works with enable words'
|
|
169
|
-
if_enable 'usb_xcvr_cz' do
|
|
170
|
-
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vil_cz'
|
|
171
|
-
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vih_cz'
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vil_cz', if_enable: 'usb_xcvr_cz'
|
|
175
|
-
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vih_cz', if_enable: 'usb_xcvr_cz'
|
|
176
|
-
|
|
177
|
-
log 'Verify that MTO template works...'
|
|
178
|
-
mto_memory :mto_read1_all1
|
|
179
|
-
|
|
180
|
-
if tester.uflex?
|
|
181
|
-
log 'import statement'
|
|
182
|
-
import 'temp'
|
|
183
|
-
|
|
184
|
-
log 'direct call'
|
|
185
|
-
|
|
186
|
-
meas :bgap_voltage_meas, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45
|
|
187
|
-
meas :bgap_voltage_meas1
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
if tester.j750?
|
|
191
|
-
meas :lo_voltage, tnum: 1150, bin: 95, soft_bin: 5
|
|
192
|
-
meas :hi_voltage, pins: :hi_v, tnum: 1160, bin: 96, soft_bin: 6
|
|
193
|
-
meas :ps_leakage, pins: :power, tnum: 1170, bin: 97, soft_bin: 6
|
|
194
|
-
end
|
|
195
|
-
|
|
196
|
-
log 'Speed binning example bug from video 5'
|
|
197
|
-
group "200Mhz Tests", id: :g200 do
|
|
198
|
-
test :test200_1
|
|
199
|
-
test :test200_2
|
|
200
|
-
test :test200_3
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
group "100Mhz Tests", if_failed: :g200, id: :g100 do
|
|
204
|
-
test :test100_1, bin: 5
|
|
205
|
-
test :test100_2, bin: 5
|
|
206
|
-
test :test100_3, bin: 5
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
pass 2, if_ran: :g100
|
|
210
|
-
|
|
211
|
-
log 'Test node optimization within an if_failed branch'
|
|
212
|
-
func :some_func_test, id: :sft1
|
|
213
|
-
|
|
214
|
-
if_failed :sft1 do
|
|
215
|
-
bin 10, if_flag: "Alarm"
|
|
216
|
-
bin 11, unless_flag: "Alarm"
|
|
217
|
-
bin 12, if_enable: "AlarmEnabled"
|
|
218
|
-
bin 13, unless_enable: "AlarmEnabled"
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
pass 1, description: "Good die!", softbin: 1
|
|
222
|
-
end
|
|
1
|
+
Flow.create do |options|
|
|
2
|
+
# Instantiate tests via the
|
|
3
|
+
# interface
|
|
4
|
+
func 'program_ckbd', :tname => 'PGM_CKBD', :tnum => 1000, :bin => 100, :soft_bin => 1100
|
|
5
|
+
func 'margin_read1_ckbd'
|
|
6
|
+
|
|
7
|
+
# Control the build process based on
|
|
8
|
+
# the current target
|
|
9
|
+
if $dut.has_margin0_bug?
|
|
10
|
+
func 'normal_read_ckbd'
|
|
11
|
+
else
|
|
12
|
+
func 'margin_read0_ckbd'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Include a sub flow, example of
|
|
16
|
+
# parameter passing
|
|
17
|
+
import '../erase', :pulses => 6
|
|
18
|
+
|
|
19
|
+
# Render an ERB template, or raw
|
|
20
|
+
# text file
|
|
21
|
+
if $tester.j750?
|
|
22
|
+
flow.render 'templates/j750/vt_flow', :include_tifr => true
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
log 'Should be v1'
|
|
26
|
+
func :program_ckbd
|
|
27
|
+
log 'Should be v2'
|
|
28
|
+
func :program_ckbd, :duration => :dynamic
|
|
29
|
+
log 'Should be v1'
|
|
30
|
+
func :program_ckbd
|
|
31
|
+
log 'Should be v2'
|
|
32
|
+
func :program_ckbd, :duration => :dynamic
|
|
33
|
+
|
|
34
|
+
log 'Should be a v1 test instance group'
|
|
35
|
+
func :program_ckbd, :by_block => true
|
|
36
|
+
log 'Should be a v2 test instance group'
|
|
37
|
+
func :program_ckbd, :by_block => true, :duration => :dynamic
|
|
38
|
+
log 'Should be a v1 test instance group'
|
|
39
|
+
func :program_ckbd, :by_block => true
|
|
40
|
+
log 'Should be a v2 test instance group'
|
|
41
|
+
func :program_ckbd, :by_block => true, :duration => :dynamic
|
|
42
|
+
|
|
43
|
+
# Test job conditions
|
|
44
|
+
func :p1_only_test, :if_job => :p1
|
|
45
|
+
if_job [:p1, :p2] do
|
|
46
|
+
func :p1_or_p2_only_test
|
|
47
|
+
end
|
|
48
|
+
func :not_p1_test, :unless_job => :p1
|
|
49
|
+
func :not_p1_or_p2_test, :unless_job => [:p1, :p2]
|
|
50
|
+
unless_job [:p1, :p2] do
|
|
51
|
+
func :another_not_p1_or_p2_test
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
log 'Verify that a test with an external instance works'
|
|
55
|
+
por
|
|
56
|
+
|
|
57
|
+
log 'Verify that a request to use the current context works'
|
|
58
|
+
func :erase_all, :if_job => :p1 # Job should be P1
|
|
59
|
+
func :erase_all, :context => :current # Job should be P1
|
|
60
|
+
unless_job :p2 do
|
|
61
|
+
func :erase_all, :context => :current # Job should be P1
|
|
62
|
+
func :erase_all # Job should be !P2
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Deliver an initial erase pulse
|
|
66
|
+
func :erase_all
|
|
67
|
+
|
|
68
|
+
# Deliver additional erase pulses as required until it verifies, maximum of 5 additional pulses
|
|
69
|
+
5.times do |x|
|
|
70
|
+
# Assign a unique id attribute to each verify so that we know which one we are talking about when
|
|
71
|
+
# making other tests dependent on it.
|
|
72
|
+
# When Origen sees the if_failed dependency on a future test it will be smart enough to inhibit the binning
|
|
73
|
+
# on this test without having to explicitly declare that.
|
|
74
|
+
func :margin_read1_all1, :id => "erase_vfy_#{x}"
|
|
75
|
+
# Run this test only if the given verify failed
|
|
76
|
+
func :erase_all, :if_failed => "erase_vfy_#{x}"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# A final verify to set the binning
|
|
80
|
+
func :margin_read1_all1
|
|
81
|
+
|
|
82
|
+
log 'Test if enable'
|
|
83
|
+
func :erase_all, :if_enable => 'do_erase'
|
|
84
|
+
|
|
85
|
+
if_enable 'do_erase' do
|
|
86
|
+
func :erase_all
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
log 'Test unless enable'
|
|
90
|
+
func :erase_all, :unless_enable => 'no_extra_erase'
|
|
91
|
+
|
|
92
|
+
unless_enable 'no_extra_erase' do
|
|
93
|
+
func :erase_all
|
|
94
|
+
func :erase_all
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
func :erase_all
|
|
98
|
+
func :erase_all
|
|
99
|
+
|
|
100
|
+
log 'Test if_passed'
|
|
101
|
+
func :erase_all, :id => 'erase_passed_1'
|
|
102
|
+
func :erase_all, :id => 'erase_passed_2'
|
|
103
|
+
|
|
104
|
+
func :margin_read1_all1, :if_passed => 'erase_passed_1'
|
|
105
|
+
if_passed 'erase_passed_2' do
|
|
106
|
+
func :margin_read1_all1
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
log 'Test unless_passed'
|
|
110
|
+
func :erase_all, :id => 'erase_passed_3'
|
|
111
|
+
func :erase_all, :id => 'erase_passed_4'
|
|
112
|
+
|
|
113
|
+
func :margin_read1_all1, :unless_passed => 'erase_passed_3'
|
|
114
|
+
unless_passed 'erase_passed_4' do
|
|
115
|
+
func :margin_read1_all1
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
log 'Test if_failed'
|
|
119
|
+
func :erase_all, :id => 'erase_failed_1'
|
|
120
|
+
func :erase_all, :id => 'erase_failed_2'
|
|
121
|
+
|
|
122
|
+
func :margin_read1_all1, :if_failed => 'erase_failed_1'
|
|
123
|
+
if_failed 'erase_failed_2' do
|
|
124
|
+
func :margin_read1_all1
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
log 'Test unless_failed'
|
|
128
|
+
func :erase_all, :id => 'erase_failed_3'
|
|
129
|
+
func :erase_all, :id => 'erase_failed_4'
|
|
130
|
+
|
|
131
|
+
func :margin_read1_all1, :unless_failed => 'erase_failed_3'
|
|
132
|
+
unless_failed 'erase_failed_4' do
|
|
133
|
+
func :margin_read1_all1
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
log 'Test if_ran'
|
|
137
|
+
func :erase_all, :id => 'erase_ran_1'
|
|
138
|
+
func :erase_all, :id => 'erase_ran_2'
|
|
139
|
+
|
|
140
|
+
func :margin_read1_all1, :if_ran => 'erase_ran_1'
|
|
141
|
+
if_ran 'erase_ran_2' do
|
|
142
|
+
func :margin_read1_all1
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
log 'Test unless_ran'
|
|
146
|
+
func :erase_all, :id => 'erase_ran_3'
|
|
147
|
+
func :erase_all, :id => 'erase_ran_4'
|
|
148
|
+
|
|
149
|
+
func :margin_read1_all1, :unless_ran => 'erase_ran_3'
|
|
150
|
+
unless_ran 'erase_ran_4' do
|
|
151
|
+
func :margin_read1_all1
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
log 'Verify that job context wraps import'
|
|
155
|
+
if_job :fr do
|
|
156
|
+
import '../erase'
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
log 'Verify that job context wraps enable block within an import'
|
|
160
|
+
if_job :fr do
|
|
161
|
+
import '../additional_erase'
|
|
162
|
+
import '../additional_erase', :force => true
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
log 'Verify that flow.cz works...'
|
|
166
|
+
func :margin_read1_all1, :pin_levels => :cz, :cz_setup => 'vbplus_sweep'
|
|
167
|
+
|
|
168
|
+
log 'Verify that flow.cz works with enable words'
|
|
169
|
+
if_enable 'usb_xcvr_cz' do
|
|
170
|
+
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vil_cz'
|
|
171
|
+
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vih_cz'
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vil_cz', if_enable: 'usb_xcvr_cz'
|
|
175
|
+
func :xcvr_fs_vilvih, cz_setup: 'usb_fs_vih_cz', if_enable: 'usb_xcvr_cz'
|
|
176
|
+
|
|
177
|
+
log 'Verify that MTO template works...'
|
|
178
|
+
mto_memory :mto_read1_all1
|
|
179
|
+
|
|
180
|
+
if tester.uflex?
|
|
181
|
+
log 'import statement'
|
|
182
|
+
import 'temp'
|
|
183
|
+
|
|
184
|
+
log 'direct call'
|
|
185
|
+
|
|
186
|
+
meas :bgap_voltage_meas, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45
|
|
187
|
+
meas :bgap_voltage_meas1
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
if tester.j750?
|
|
191
|
+
meas :lo_voltage, tnum: 1150, bin: 95, soft_bin: 5
|
|
192
|
+
meas :hi_voltage, pins: :hi_v, tnum: 1160, bin: 96, soft_bin: 6
|
|
193
|
+
meas :ps_leakage, pins: :power, tnum: 1170, bin: 97, soft_bin: 6
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
log 'Speed binning example bug from video 5'
|
|
197
|
+
group "200Mhz Tests", id: :g200 do
|
|
198
|
+
test :test200_1
|
|
199
|
+
test :test200_2
|
|
200
|
+
test :test200_3
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
group "100Mhz Tests", if_failed: :g200, id: :g100 do
|
|
204
|
+
test :test100_1, bin: 5
|
|
205
|
+
test :test100_2, bin: 5
|
|
206
|
+
test :test100_3, bin: 5
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
pass 2, if_ran: :g100
|
|
210
|
+
|
|
211
|
+
log 'Test node optimization within an if_failed branch'
|
|
212
|
+
func :some_func_test, id: :sft1
|
|
213
|
+
|
|
214
|
+
if_failed :sft1 do
|
|
215
|
+
bin 10, if_flag: "Alarm"
|
|
216
|
+
bin 11, unless_flag: "Alarm"
|
|
217
|
+
bin 12, if_enable: "AlarmEnabled"
|
|
218
|
+
bin 13, unless_enable: "AlarmEnabled"
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
pass 1, description: "Good die!", softbin: 1
|
|
222
|
+
end
|