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/nvm/j750/timing.rb
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
# This pattern exercises the methods in the Origen::Tester::Timing module
|
|
2
|
-
def gen_vectors
|
|
3
|
-
2.times do
|
|
4
|
-
$nvm.pin(:invoke).drive(0)
|
|
5
|
-
$tester.cycle
|
|
6
|
-
$nvm.pin(:invoke).drive(1)
|
|
7
|
-
$tester.cycle
|
|
8
|
-
end
|
|
9
|
-
end
|
|
10
|
-
Pattern.create do
|
|
11
|
-
|
|
12
|
-
ss 'Test ability to switch timesets'
|
|
13
|
-
|
|
14
|
-
cc 'These vectors should use timeset nvm_slow'
|
|
15
|
-
$tester.set_timeset('nvm_slow', 200)
|
|
16
|
-
gen_vectors
|
|
17
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
18
|
-
$tester.set_timeset('nvm_fast', 40)
|
|
19
|
-
gen_vectors
|
|
20
|
-
|
|
21
|
-
ss 'Test ability to switch timesets within a block'
|
|
22
|
-
cc 'These vectors should use timeset nvm_slow'
|
|
23
|
-
$tester.set_timeset('nvm_slow', 200) do
|
|
24
|
-
gen_vectors
|
|
25
|
-
end
|
|
26
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
27
|
-
gen_vectors
|
|
28
|
-
|
|
29
|
-
ss 'Test ability to call a set timeset block with no arguments'
|
|
30
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
31
|
-
$tester.set_timeset(nil) do
|
|
32
|
-
gen_vectors
|
|
33
|
-
end
|
|
34
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
35
|
-
gen_vectors
|
|
36
|
-
|
|
37
|
-
ss 'Test ability to call with a single array argument'
|
|
38
|
-
cc 'These vectors should use timeset nvm_slow'
|
|
39
|
-
$tester.set_timeset(['nvm_slow', 40]) do
|
|
40
|
-
gen_vectors
|
|
41
|
-
end
|
|
42
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
43
|
-
gen_vectors
|
|
44
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
45
|
-
$tester.set_timeset([]) do
|
|
46
|
-
gen_vectors
|
|
47
|
-
end
|
|
48
|
-
cc 'These vectors should use timeset nvm_fast'
|
|
49
|
-
gen_vectors
|
|
50
|
-
|
|
51
|
-
ss 'Test that delay calculations are based on the current timeset period'
|
|
52
|
-
|
|
53
|
-
cc 'This should wait for 5 cycles, 1000/200'
|
|
54
|
-
$tester.set_timeset('nvm_slow', 200)
|
|
55
|
-
$tester.wait(:time_in_ns => 1000)
|
|
56
|
-
cc 'This should wait for 25 cycles, 1000/40'
|
|
57
|
-
$tester.set_timeset('nvm_fast', 40)
|
|
58
|
-
$tester.wait(:time_in_ns => 1000)
|
|
59
|
-
|
|
60
|
-
ss 'Test the period counter'
|
|
61
|
-
cc 'This should generate a sequence with a clock pulse on the clk'
|
|
62
|
-
cc 'pin with period of 1 ms, and overall duration 10 ms'
|
|
63
|
-
$nvm.pin(:clk).drive(0)
|
|
64
|
-
$tester.count(:period_in_ms => 1, :duration_in_ms => 10) do
|
|
65
|
-
$nvm.pin(:clk).drive!(1)
|
|
66
|
-
$nvm.pin(:clk).drive(0)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
ss 'Test that Fixnum.cycles works'
|
|
70
|
-
cc 'There should be 10 cycles here'
|
|
71
|
-
10.cycles
|
|
72
|
-
|
|
73
|
-
end
|
|
1
|
+
# This pattern exercises the methods in the Origen::Tester::Timing module
|
|
2
|
+
def gen_vectors
|
|
3
|
+
2.times do
|
|
4
|
+
$nvm.pin(:invoke).drive(0)
|
|
5
|
+
$tester.cycle
|
|
6
|
+
$nvm.pin(:invoke).drive(1)
|
|
7
|
+
$tester.cycle
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
Pattern.create do
|
|
11
|
+
|
|
12
|
+
ss 'Test ability to switch timesets'
|
|
13
|
+
|
|
14
|
+
cc 'These vectors should use timeset nvm_slow'
|
|
15
|
+
$tester.set_timeset('nvm_slow', 200)
|
|
16
|
+
gen_vectors
|
|
17
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
18
|
+
$tester.set_timeset('nvm_fast', 40)
|
|
19
|
+
gen_vectors
|
|
20
|
+
|
|
21
|
+
ss 'Test ability to switch timesets within a block'
|
|
22
|
+
cc 'These vectors should use timeset nvm_slow'
|
|
23
|
+
$tester.set_timeset('nvm_slow', 200) do
|
|
24
|
+
gen_vectors
|
|
25
|
+
end
|
|
26
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
27
|
+
gen_vectors
|
|
28
|
+
|
|
29
|
+
ss 'Test ability to call a set timeset block with no arguments'
|
|
30
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
31
|
+
$tester.set_timeset(nil) do
|
|
32
|
+
gen_vectors
|
|
33
|
+
end
|
|
34
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
35
|
+
gen_vectors
|
|
36
|
+
|
|
37
|
+
ss 'Test ability to call with a single array argument'
|
|
38
|
+
cc 'These vectors should use timeset nvm_slow'
|
|
39
|
+
$tester.set_timeset(['nvm_slow', 40]) do
|
|
40
|
+
gen_vectors
|
|
41
|
+
end
|
|
42
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
43
|
+
gen_vectors
|
|
44
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
45
|
+
$tester.set_timeset([]) do
|
|
46
|
+
gen_vectors
|
|
47
|
+
end
|
|
48
|
+
cc 'These vectors should use timeset nvm_fast'
|
|
49
|
+
gen_vectors
|
|
50
|
+
|
|
51
|
+
ss 'Test that delay calculations are based on the current timeset period'
|
|
52
|
+
|
|
53
|
+
cc 'This should wait for 5 cycles, 1000/200'
|
|
54
|
+
$tester.set_timeset('nvm_slow', 200)
|
|
55
|
+
$tester.wait(:time_in_ns => 1000)
|
|
56
|
+
cc 'This should wait for 25 cycles, 1000/40'
|
|
57
|
+
$tester.set_timeset('nvm_fast', 40)
|
|
58
|
+
$tester.wait(:time_in_ns => 1000)
|
|
59
|
+
|
|
60
|
+
ss 'Test the period counter'
|
|
61
|
+
cc 'This should generate a sequence with a clock pulse on the clk'
|
|
62
|
+
cc 'pin with period of 1 ms, and overall duration 10 ms'
|
|
63
|
+
$nvm.pin(:clk).drive(0)
|
|
64
|
+
$tester.count(:period_in_ms => 1, :duration_in_ms => 10) do
|
|
65
|
+
$nvm.pin(:clk).drive!(1)
|
|
66
|
+
$nvm.pin(:clk).drive(0)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
ss 'Test that Fixnum.cycles works'
|
|
70
|
+
cc 'There should be 10 cycles here'
|
|
71
|
+
10.cycles
|
|
72
|
+
|
|
73
|
+
end
|
data/pattern/read_write_reg.rb
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
# Pattern to exercise the reading and writing of a register using ARM Debug
|
|
2
|
-
Pattern.create do
|
|
3
|
-
ss 'Test write register with all 1s'
|
|
4
|
-
$dut.reg(:testme32).write!(0xFFFFFFFF)
|
|
5
|
-
ss 'Test read register after all 1s write'
|
|
6
|
-
$dut.reg(:testme32).read!
|
|
7
|
-
|
|
8
|
-
ss 'Test write register with all 0s'
|
|
9
|
-
$dut.reg(:testme32).write!(0x00000000)
|
|
10
|
-
ss 'Test read register after all 0s write'
|
|
11
|
-
$dut.reg(:testme32).read!
|
|
12
|
-
|
|
13
|
-
ss 'Test store register, the whole register data should be stored'
|
|
14
|
-
$dut.reg(:testme32).store!
|
|
15
|
-
|
|
16
|
-
ss 'Test store bits, only enable bit should be captured'
|
|
17
|
-
$dut.reg(:testme32).bit(:enable).store!
|
|
18
|
-
|
|
19
|
-
ss 'Test store bits, only port A should be captured'
|
|
20
|
-
$dut.reg(:testme32).bits(:portA).store!
|
|
21
|
-
|
|
22
|
-
ss 'Test read of partial register, only portA should be read'
|
|
23
|
-
$dut.reg(:testme32).bits(:portB).read!
|
|
24
|
-
|
|
25
|
-
ss 'Test overlay, all reg vectors should be from subroutine'
|
|
26
|
-
$dut.reg(:testme32).overlay('write_overlay')
|
|
27
|
-
$dut.reg(:testme32).write!
|
|
28
|
-
|
|
29
|
-
ss 'Test overlay, same again but for read'
|
|
30
|
-
$dut.reg(:testme32).overlay('read_overlay')
|
|
31
|
-
$dut.reg(:testme32).read!
|
|
32
|
-
|
|
33
|
-
ss 'Test bit level write overlay, only portA should be from subroutine'
|
|
34
|
-
$dut.reg(:testme32).overlay(nil) # have to reset overlay bits as they are sticky from last overlay set
|
|
35
|
-
$dut.reg(:testme32).bits(:portA).overlay('write_overlay')
|
|
36
|
-
$dut.reg(:testme32).bits(:portA).write!
|
|
37
|
-
|
|
38
|
-
ss 'Test bit level read overlay, only portA should be from subroutine'
|
|
39
|
-
$dut.reg(:testme32).overlay(nil)
|
|
40
|
-
$dut.reg(:testme32).bits(:portA).overlay('read_overlay')
|
|
41
|
-
$dut.reg(:testme32).bits(:portA).read!
|
|
42
|
-
|
|
43
|
-
ss 'Call execute subroutine'
|
|
44
|
-
$dut.execute
|
|
45
|
-
|
|
46
|
-
ss 'Call match_pin subroutine'
|
|
47
|
-
$dut.match(:type => :match_pin)
|
|
48
|
-
|
|
49
|
-
ss 'Call match_2pins subroutine'
|
|
50
|
-
$dut.match(:type => :match_2pins)
|
|
51
|
-
|
|
52
|
-
ss 'Call match_2pins custom_jump subroutine'
|
|
53
|
-
$dut.match(:type => :match_2pins_custom_jump)
|
|
54
|
-
|
|
55
|
-
ss 'Call match_done subroutine'
|
|
56
|
-
$dut.match(:type => :match_done)
|
|
57
|
-
|
|
58
|
-
ss 'Call handshake subroutine'
|
|
59
|
-
$dut.handshake
|
|
60
|
-
|
|
61
|
-
end
|
|
1
|
+
# Pattern to exercise the reading and writing of a register using ARM Debug
|
|
2
|
+
Pattern.create do
|
|
3
|
+
ss 'Test write register with all 1s'
|
|
4
|
+
$dut.reg(:testme32).write!(0xFFFFFFFF)
|
|
5
|
+
ss 'Test read register after all 1s write'
|
|
6
|
+
$dut.reg(:testme32).read!
|
|
7
|
+
|
|
8
|
+
ss 'Test write register with all 0s'
|
|
9
|
+
$dut.reg(:testme32).write!(0x00000000)
|
|
10
|
+
ss 'Test read register after all 0s write'
|
|
11
|
+
$dut.reg(:testme32).read!
|
|
12
|
+
|
|
13
|
+
ss 'Test store register, the whole register data should be stored'
|
|
14
|
+
$dut.reg(:testme32).store!
|
|
15
|
+
|
|
16
|
+
ss 'Test store bits, only enable bit should be captured'
|
|
17
|
+
$dut.reg(:testme32).bit(:enable).store!
|
|
18
|
+
|
|
19
|
+
ss 'Test store bits, only port A should be captured'
|
|
20
|
+
$dut.reg(:testme32).bits(:portA).store!
|
|
21
|
+
|
|
22
|
+
ss 'Test read of partial register, only portA should be read'
|
|
23
|
+
$dut.reg(:testme32).bits(:portB).read!
|
|
24
|
+
|
|
25
|
+
ss 'Test overlay, all reg vectors should be from subroutine'
|
|
26
|
+
$dut.reg(:testme32).overlay('write_overlay')
|
|
27
|
+
$dut.reg(:testme32).write!
|
|
28
|
+
|
|
29
|
+
ss 'Test overlay, same again but for read'
|
|
30
|
+
$dut.reg(:testme32).overlay('read_overlay')
|
|
31
|
+
$dut.reg(:testme32).read!
|
|
32
|
+
|
|
33
|
+
ss 'Test bit level write overlay, only portA should be from subroutine'
|
|
34
|
+
$dut.reg(:testme32).overlay(nil) # have to reset overlay bits as they are sticky from last overlay set
|
|
35
|
+
$dut.reg(:testme32).bits(:portA).overlay('write_overlay')
|
|
36
|
+
$dut.reg(:testme32).bits(:portA).write!
|
|
37
|
+
|
|
38
|
+
ss 'Test bit level read overlay, only portA should be from subroutine'
|
|
39
|
+
$dut.reg(:testme32).overlay(nil)
|
|
40
|
+
$dut.reg(:testme32).bits(:portA).overlay('read_overlay')
|
|
41
|
+
$dut.reg(:testme32).bits(:portA).read!
|
|
42
|
+
|
|
43
|
+
ss 'Call execute subroutine'
|
|
44
|
+
$dut.execute
|
|
45
|
+
|
|
46
|
+
ss 'Call match_pin subroutine'
|
|
47
|
+
$dut.match(:type => :match_pin)
|
|
48
|
+
|
|
49
|
+
ss 'Call match_2pins subroutine'
|
|
50
|
+
$dut.match(:type => :match_2pins)
|
|
51
|
+
|
|
52
|
+
ss 'Call match_2pins custom_jump subroutine'
|
|
53
|
+
$dut.match(:type => :match_2pins_custom_jump)
|
|
54
|
+
|
|
55
|
+
ss 'Call match_done subroutine'
|
|
56
|
+
$dut.match(:type => :match_done)
|
|
57
|
+
|
|
58
|
+
ss 'Call handshake subroutine'
|
|
59
|
+
$dut.handshake
|
|
60
|
+
|
|
61
|
+
end
|
data/pattern/reset.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Pattern to exercise the reading and writing of a register using Nexus
|
|
2
|
-
Pattern.create do
|
|
3
|
-
$dut.reset
|
|
4
|
-
end
|
|
1
|
+
# Pattern to exercise the reading and writing of a register using Nexus
|
|
2
|
+
Pattern.create do
|
|
3
|
+
$dut.reset
|
|
4
|
+
end
|
data/pattern/subroutines.rb
CHANGED
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
unless $tester.v93k?
|
|
2
|
-
# Pattern to define subroutines
|
|
3
|
-
if $tester.respond_to?('start_subroutine')
|
|
4
|
-
Pattern.create(:subroutine_pat => true) do
|
|
5
|
-
|
|
6
|
-
# Define execute subr
|
|
7
|
-
$dut.execute(:define => true)
|
|
8
|
-
|
|
9
|
-
# Define match_pin
|
|
10
|
-
$dut.match(:define => true, :type => :match_pin)
|
|
11
|
-
|
|
12
|
-
# Define match_2pins
|
|
13
|
-
$dut.match(:define => true, :type => :match_2pins)
|
|
14
|
-
|
|
15
|
-
# Define match_done subr
|
|
16
|
-
$dut.match(:define => true, :type => :match_done, :delay_in_us => 5)
|
|
17
|
-
|
|
18
|
-
# Define match_done subr with longer timeout of 7mS
|
|
19
|
-
$dut.match(:subr_name => 'match_done2', :define => true, :type => :match_done, :delay_in_us => 7000)
|
|
20
|
-
|
|
21
|
-
# Define match_done subr with longer timeout of 7sec
|
|
22
|
-
$dut.match(:subr_name => 'match_done3', :define => true, :type => :match_done, :delay_in_us => 7000000)
|
|
23
|
-
|
|
24
|
-
# Define match_done subr with longer timeout of 72sec
|
|
25
|
-
$dut.match(:subr_name => 'match_done4', :define => true, :type => :match_done, :delay_in_us => 72_000_000)
|
|
26
|
-
|
|
27
|
-
# Define match_done subr with longer timeout of 10min
|
|
28
|
-
$dut.match(:subr_name => 'match_done5', :define => true, :type => :match_done, :delay_in_us => 7_000_000_000)
|
|
29
|
-
|
|
30
|
-
# Define match loop with multiple entries
|
|
31
|
-
$dut.match(:subr_name => 'match_done6', :define => true, :type => :multiple_entries, :delay_in_us => 15_000_000)
|
|
32
|
-
|
|
33
|
-
# Define match loop with custom jump
|
|
34
|
-
$dut.match(:define => true, :type => :match_2pins_custom_jump)
|
|
35
|
-
|
|
36
|
-
# Define handshake subr
|
|
37
|
-
$dut.handshake(:define => true)
|
|
38
|
-
|
|
39
|
-
if $tester.ultraflex?
|
|
40
|
-
# Define digsrc_overlay_testme32 subr
|
|
41
|
-
$dut.digsrc_overlay(:subr_name => 'digsrc_overlay_testme32', :define => true, overlay_reg: :testme32)
|
|
42
|
-
|
|
43
|
-
# Define digsrc_overlay subr
|
|
44
|
-
$dut.digsrc_overlay(:subr_name => 'digsrc_overlay', :define => true, overlay_cycle_num: 64)
|
|
45
|
-
|
|
46
|
-
# test out UF keep_alive subroutine capability
|
|
47
|
-
$dut.keepalive(define: true)
|
|
48
|
-
|
|
49
|
-
# test out single module subroutine capability, integrated with other normal subroutines
|
|
50
|
-
# only for UltraFLEX
|
|
51
|
-
$dut.execute(define: true, name: 'overlaysub1', onemodsub: true )
|
|
52
|
-
$dut.execute(define: true, name: 'overlaysub2', onemodsub: true )
|
|
53
|
-
$dut.execute(define: true, name: 'overlaysub3', onemodsub: true )
|
|
54
|
-
$dut.execute(define: true, name: 'overlaysub4', onemodsub: true )
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
if $tester.ultraflex?
|
|
59
|
-
# test out single module subroutine capability in standalone pattern
|
|
60
|
-
# only for UltraFLEX
|
|
61
|
-
Pattern.create(name: 'subroutines2', subroutine_pat: true) do
|
|
62
|
-
$dut.execute(define: true, name: 'overlaysub5', onemodsub: true )
|
|
63
|
-
$dut.execute(define: true, name: 'overlaysub6', onemodsub: true )
|
|
64
|
-
$dut.execute(define: true, name: 'overlaysub7', onemodsub: true )
|
|
65
|
-
$dut.execute(define: true, name: 'overlaysub4', onemodsub: true )
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
1
|
+
unless $tester.v93k?
|
|
2
|
+
# Pattern to define subroutines
|
|
3
|
+
if $tester.respond_to?('start_subroutine')
|
|
4
|
+
Pattern.create(:subroutine_pat => true) do
|
|
5
|
+
|
|
6
|
+
# Define execute subr
|
|
7
|
+
$dut.execute(:define => true)
|
|
8
|
+
|
|
9
|
+
# Define match_pin
|
|
10
|
+
$dut.match(:define => true, :type => :match_pin)
|
|
11
|
+
|
|
12
|
+
# Define match_2pins
|
|
13
|
+
$dut.match(:define => true, :type => :match_2pins)
|
|
14
|
+
|
|
15
|
+
# Define match_done subr
|
|
16
|
+
$dut.match(:define => true, :type => :match_done, :delay_in_us => 5)
|
|
17
|
+
|
|
18
|
+
# Define match_done subr with longer timeout of 7mS
|
|
19
|
+
$dut.match(:subr_name => 'match_done2', :define => true, :type => :match_done, :delay_in_us => 7000)
|
|
20
|
+
|
|
21
|
+
# Define match_done subr with longer timeout of 7sec
|
|
22
|
+
$dut.match(:subr_name => 'match_done3', :define => true, :type => :match_done, :delay_in_us => 7000000)
|
|
23
|
+
|
|
24
|
+
# Define match_done subr with longer timeout of 72sec
|
|
25
|
+
$dut.match(:subr_name => 'match_done4', :define => true, :type => :match_done, :delay_in_us => 72_000_000)
|
|
26
|
+
|
|
27
|
+
# Define match_done subr with longer timeout of 10min
|
|
28
|
+
$dut.match(:subr_name => 'match_done5', :define => true, :type => :match_done, :delay_in_us => 7_000_000_000)
|
|
29
|
+
|
|
30
|
+
# Define match loop with multiple entries
|
|
31
|
+
$dut.match(:subr_name => 'match_done6', :define => true, :type => :multiple_entries, :delay_in_us => 15_000_000)
|
|
32
|
+
|
|
33
|
+
# Define match loop with custom jump
|
|
34
|
+
$dut.match(:define => true, :type => :match_2pins_custom_jump)
|
|
35
|
+
|
|
36
|
+
# Define handshake subr
|
|
37
|
+
$dut.handshake(:define => true)
|
|
38
|
+
|
|
39
|
+
if $tester.ultraflex?
|
|
40
|
+
# Define digsrc_overlay_testme32 subr
|
|
41
|
+
$dut.digsrc_overlay(:subr_name => 'digsrc_overlay_testme32', :define => true, overlay_reg: :testme32)
|
|
42
|
+
|
|
43
|
+
# Define digsrc_overlay subr
|
|
44
|
+
$dut.digsrc_overlay(:subr_name => 'digsrc_overlay', :define => true, overlay_cycle_num: 64)
|
|
45
|
+
|
|
46
|
+
# test out UF keep_alive subroutine capability
|
|
47
|
+
$dut.keepalive(define: true)
|
|
48
|
+
|
|
49
|
+
# test out single module subroutine capability, integrated with other normal subroutines
|
|
50
|
+
# only for UltraFLEX
|
|
51
|
+
$dut.execute(define: true, name: 'overlaysub1', onemodsub: true )
|
|
52
|
+
$dut.execute(define: true, name: 'overlaysub2', onemodsub: true )
|
|
53
|
+
$dut.execute(define: true, name: 'overlaysub3', onemodsub: true )
|
|
54
|
+
$dut.execute(define: true, name: 'overlaysub4', onemodsub: true )
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
if $tester.ultraflex?
|
|
59
|
+
# test out single module subroutine capability in standalone pattern
|
|
60
|
+
# only for UltraFLEX
|
|
61
|
+
Pattern.create(name: 'subroutines2', subroutine_pat: true) do
|
|
62
|
+
$dut.execute(define: true, name: 'overlaysub5', onemodsub: true )
|
|
63
|
+
$dut.execute(define: true, name: 'overlaysub6', onemodsub: true )
|
|
64
|
+
$dut.execute(define: true, name: 'overlaysub7', onemodsub: true )
|
|
65
|
+
$dut.execute(define: true, name: 'overlaysub4', onemodsub: true )
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/pattern/tester_overlay.rb
CHANGED
|
@@ -1,53 +1,62 @@
|
|
|
1
|
-
Pattern.create(name: "test_overlay") do
|
|
2
|
-
tester.overlay_style = :digsrc
|
|
3
|
-
# increase coverage by changing tdi dig src settings
|
|
4
|
-
tester.source_memory :digsrc do |mem|
|
|
5
|
-
mem.pin :tdi, size: 32
|
|
6
|
-
end
|
|
7
|
-
cc 'should get a repeat count added to this vector for digsrc start minimum distance'
|
|
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
|
-
|
|
18
|
-
cc 'should get a send microcode and 1 cycle with D'
|
|
19
|
-
tester.cycle overlay: {overlay_str: 'dummy_str', pins: dut.pin(:tdi_a)}
|
|
20
|
-
cc 'should get a cycle with D and no send'
|
|
21
|
-
tester.cycle overlay: {overlay_str: 'dummy_str', pins: dut.pin(:tdi_a), change_data: false}
|
|
22
|
-
cc 'regular cycle with no D or send'
|
|
23
|
-
tester.cycle
|
|
24
|
-
|
|
25
|
-
cc 'cycle with 001 on pa'
|
|
26
|
-
dut.pin(:pa).drive!(1)
|
|
27
|
-
cc 'send microcode followed by DDD on pa'
|
|
28
|
-
dut.pin(:pa).drive(0)
|
|
29
|
-
tester.cycle overlay: {overlay_str: "dummy_str", pins: dut.pin(:pa)}
|
|
30
|
-
cc 'cycle with 001 on pa'
|
|
31
|
-
dut.pin(:pa).drive!(1)
|
|
32
|
-
cc 'send microcode, DDD on pa with repeat 5 (will send 5 sets of data)'
|
|
33
|
-
dut.pin(:pa).drive(0)
|
|
34
|
-
tester.cycle repeat: 5, overlay: {overlay_str: "dummy_str", pins: dut.pin(:pa)}
|
|
35
|
-
cc 'cycle with 001 on pa'
|
|
36
|
-
dut.pin(:pa).drive!(1)
|
|
37
|
-
|
|
38
|
-
# Now kick the tires of subroutine based overlay
|
|
39
|
-
# No vectors with the comment "// overlay deletes" should be kept
|
|
40
|
-
tester.overlay_style = :subroutine
|
|
41
|
-
dut.pin(:pa).drive(7)
|
|
42
|
-
tester.cycle inline_comment: 'overlay keeps'
|
|
43
|
-
tester.cycle inline_comment: 'overlay deletes', overlay: {overlay_str: "subr_test", pins: dut.pin(:tdi)}
|
|
44
|
-
|
|
45
|
-
# Now kick the tires of label overlay
|
|
46
|
-
tester.cycle repeat: 20
|
|
47
|
-
tester.overlay_style = :label
|
|
48
|
-
dut.pin(:pa).drive(5)
|
|
49
|
-
tester.cycle inline_comment: '1st line after
|
|
50
|
-
tester.cycle inline_comment: '2nd line after
|
|
51
|
-
tester.cycle inline_comment: '3rd line after
|
|
52
|
-
tester.cycle repeat: 20
|
|
1
|
+
Pattern.create(name: "test_overlay") do
|
|
2
|
+
tester.overlay_style = :digsrc
|
|
3
|
+
# increase coverage by changing tdi dig src settings
|
|
4
|
+
tester.source_memory :digsrc do |mem|
|
|
5
|
+
mem.pin :tdi, size: 32
|
|
6
|
+
end
|
|
7
|
+
cc 'should get a repeat count added to this vector for digsrc start minimum distance'
|
|
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
|
+
|
|
18
|
+
cc 'should get a send microcode and 1 cycle with D'
|
|
19
|
+
tester.cycle overlay: {overlay_str: 'dummy_str', pins: dut.pin(:tdi_a)}
|
|
20
|
+
cc 'should get a cycle with D and no send'
|
|
21
|
+
tester.cycle overlay: {overlay_str: 'dummy_str', pins: dut.pin(:tdi_a), change_data: false}
|
|
22
|
+
cc 'regular cycle with no D or send'
|
|
23
|
+
tester.cycle
|
|
24
|
+
|
|
25
|
+
cc 'cycle with 001 on pa'
|
|
26
|
+
dut.pin(:pa).drive!(1)
|
|
27
|
+
cc 'send microcode followed by DDD on pa'
|
|
28
|
+
dut.pin(:pa).drive(0)
|
|
29
|
+
tester.cycle overlay: {overlay_str: "dummy_str", pins: dut.pin(:pa)}
|
|
30
|
+
cc 'cycle with 001 on pa'
|
|
31
|
+
dut.pin(:pa).drive!(1)
|
|
32
|
+
cc 'send microcode, DDD on pa with repeat 5 (will send 5 sets of data)'
|
|
33
|
+
dut.pin(:pa).drive(0)
|
|
34
|
+
tester.cycle repeat: 5, overlay: {overlay_str: "dummy_str", pins: dut.pin(:pa)}
|
|
35
|
+
cc 'cycle with 001 on pa'
|
|
36
|
+
dut.pin(:pa).drive!(1)
|
|
37
|
+
|
|
38
|
+
# Now kick the tires of subroutine based overlay
|
|
39
|
+
# No vectors with the comment "// overlay deletes" should be kept
|
|
40
|
+
tester.overlay_style = :subroutine
|
|
41
|
+
dut.pin(:pa).drive(7)
|
|
42
|
+
tester.cycle inline_comment: 'overlay keeps'
|
|
43
|
+
tester.cycle inline_comment: 'overlay deletes', overlay: {overlay_str: "subr_test", pins: dut.pin(:tdi)}
|
|
44
|
+
|
|
45
|
+
# Now kick the tires of label overlay
|
|
46
|
+
tester.cycle repeat: 20
|
|
47
|
+
tester.overlay_style = :label
|
|
48
|
+
dut.pin(:pa).drive(5)
|
|
49
|
+
tester.cycle inline_comment: '1st line after local label for overlay', overlay: {overlay_str: 'label_test', pins: dut.pin(:pa)}
|
|
50
|
+
tester.cycle inline_comment: '2nd line after local label for overlay', overlay: {overlay_str: 'label_test', pins: dut.pin(:pa)}
|
|
51
|
+
tester.cycle inline_comment: '3rd line after local label for overlay', overlay: {overlay_str: 'label_test', pins: dut.pin(:pa)}
|
|
52
|
+
tester.cycle repeat: 20
|
|
53
|
+
|
|
54
|
+
# Now kick the tires of global label overlay
|
|
55
|
+
tester.cycle repeat: 20
|
|
56
|
+
tester.overlay_style = :global_label
|
|
57
|
+
dut.pin(:pa).drive(5)
|
|
58
|
+
tester.cycle inline_comment: '1st line after global label for overlay', overlay: {overlay_str: 'global_label_test', pins: dut.pin(:pa)}
|
|
59
|
+
tester.cycle inline_comment: '2nd line after global label for overlay', overlay: {overlay_str: 'global_label_test', pins: dut.pin(:pa)}
|
|
60
|
+
tester.cycle inline_comment: '3rd line after global label for overlay', overlay: {overlay_str: 'global_label_test', pins: dut.pin(:pa)}
|
|
61
|
+
tester.cycle repeat: 20
|
|
53
62
|
end
|