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/bitmap.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Pattern to exercise the keep alive of a pattern that needs reburst
|
|
2
|
-
Pattern.create(end_in_ka: true) do
|
|
3
|
-
|
|
4
|
-
ss 'Dummy write reg'
|
|
5
|
-
$dut.reg(:testme32).write!(0xFFFFFFFF)
|
|
6
|
-
|
|
7
|
-
end
|
|
1
|
+
# Pattern to exercise the keep alive of a pattern that needs reburst
|
|
2
|
+
Pattern.create(end_in_ka: true) do
|
|
3
|
+
|
|
4
|
+
ss 'Dummy write reg'
|
|
5
|
+
$dut.reg(:testme32).write!(0xFFFFFFFF)
|
|
6
|
+
|
|
7
|
+
end
|
data/pattern/dc_instr.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Pattern to exercise the DC instrument test feature of tester
|
|
2
|
-
|
|
3
|
-
Pattern.create() do
|
|
4
|
-
|
|
5
|
-
# Execute standard soc method -- pins should magically get set with Pset if needed here
|
|
6
|
-
|
|
7
|
-
end
|
|
1
|
+
# Pattern to exercise the DC instrument test feature of tester
|
|
2
|
+
|
|
3
|
+
Pattern.create() do
|
|
4
|
+
|
|
5
|
+
# Execute standard soc method -- pins should magically get set with Pset if needed here
|
|
6
|
+
|
|
7
|
+
end
|
data/pattern/delay.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
# Pattern to exercise a simple time delay
|
|
2
|
-
|
|
3
|
-
Pattern.create() do
|
|
4
|
-
|
|
5
|
-
$tester.wait(:time_in_ms => 40)
|
|
6
|
-
|
|
7
|
-
end
|
|
1
|
+
# Pattern to exercise a simple time delay
|
|
2
|
+
|
|
3
|
+
Pattern.create() do
|
|
4
|
+
|
|
5
|
+
$tester.wait(:time_in_ms => 40)
|
|
6
|
+
|
|
7
|
+
end
|
data/pattern/freq_counter.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Pattern to exercise the Freq Counter feature
|
|
2
|
-
unless $tester.v93k?
|
|
3
|
-
Pattern.create do
|
|
4
|
-
$dut.freq_count
|
|
5
|
-
end
|
|
6
|
-
end
|
|
1
|
+
# Pattern to exercise the Freq Counter feature
|
|
2
|
+
unless $tester.v93k?
|
|
3
|
+
Pattern.create do
|
|
4
|
+
$dut.freq_count
|
|
5
|
+
end
|
|
6
|
+
end
|
data/pattern/mem_test.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
unless $tester.v93k?
|
|
2
|
-
# Pattern to exercise the memory test feature of tester
|
|
3
|
-
Pattern.create(:memory_test => true) do
|
|
4
|
-
|
|
5
|
-
$dut.memory_test
|
|
6
|
-
|
|
7
|
-
end
|
|
8
|
-
end
|
|
1
|
+
unless $tester.v93k?
|
|
2
|
+
# Pattern to exercise the memory test feature of tester
|
|
3
|
+
Pattern.create(:memory_test => true) do
|
|
4
|
+
|
|
5
|
+
$dut.memory_test
|
|
6
|
+
|
|
7
|
+
end
|
|
8
|
+
end
|
data/pattern/multi_vector.rb
CHANGED
|
@@ -1,122 +1,122 @@
|
|
|
1
|
-
class SetupTester
|
|
2
|
-
include Origen::PersistentCallbacks
|
|
3
|
-
|
|
4
|
-
def before_pattern(pattern_name)
|
|
5
|
-
case
|
|
6
|
-
when pattern_name =~ /^mm_single\./
|
|
7
|
-
$tester.vector_group_size = 1
|
|
8
|
-
when pattern_name =~ /^mm_dual\./
|
|
9
|
-
$tester.vector_group_size = 2
|
|
10
|
-
when pattern_name =~ /^mm_quad\./
|
|
11
|
-
$tester.vector_group_size = 4
|
|
12
|
-
else
|
|
13
|
-
# To avoid breaking later tests
|
|
14
|
-
$tester.vector_group_size = 1
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
SetupTester.new
|
|
19
|
-
|
|
20
|
-
[:single, :dual, :quad].each do |size|
|
|
21
|
-
# Startup is being skipped here since it is currently a test of the ability
|
|
22
|
-
# to render (i.e. paste) vectors, therefore they are not compressible by
|
|
23
|
-
# Origen and which makes debugging this confusing!
|
|
24
|
-
Pattern.create(name: "mm_#{size}", skip_startup: true) do
|
|
25
|
-
$tester.set_timeset("nvmbist", 40)
|
|
26
|
-
|
|
27
|
-
ss "$tester.cycle(repeat: 128)"
|
|
28
|
-
$tester.cycle(repeat: 128)
|
|
29
|
-
|
|
30
|
-
ss do
|
|
31
|
-
cc "64.times do"
|
|
32
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
33
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
34
|
-
cc "end"
|
|
35
|
-
end
|
|
36
|
-
64.times do
|
|
37
|
-
$dut.pin(:tclk).drive!(0)
|
|
38
|
-
$dut.pin(:tclk).drive!(1)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
ss do
|
|
42
|
-
cc "64.times do"
|
|
43
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
44
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
45
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
46
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
47
|
-
cc "end"
|
|
48
|
-
end
|
|
49
|
-
64.times do
|
|
50
|
-
$dut.pin(:tclk).drive!(0)
|
|
51
|
-
$dut.pin(:tclk).drive!(0)
|
|
52
|
-
$dut.pin(:tclk).drive!(1)
|
|
53
|
-
$dut.pin(:tclk).drive!(1)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
ss do
|
|
57
|
-
cc "64.times do"
|
|
58
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
59
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
60
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
61
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
62
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
63
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
64
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
65
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
66
|
-
cc "end"
|
|
67
|
-
end
|
|
68
|
-
64.times do
|
|
69
|
-
$dut.pin(:tclk).drive!(0)
|
|
70
|
-
$dut.pin(:tclk).drive!(0)
|
|
71
|
-
$dut.pin(:tclk).drive!(0)
|
|
72
|
-
$dut.pin(:tclk).drive!(0)
|
|
73
|
-
$dut.pin(:tclk).drive!(1)
|
|
74
|
-
$dut.pin(:tclk).drive!(1)
|
|
75
|
-
$dut.pin(:tclk).drive!(1)
|
|
76
|
-
$dut.pin(:tclk).drive!(1)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
ss do
|
|
80
|
-
cc "Test of period levelling"
|
|
81
|
-
end
|
|
82
|
-
$tester.timing_toggled_pins << $dut.pin(:tclk)
|
|
83
|
-
$dut.pin(:tdo).assert(0)
|
|
84
|
-
8.cycles
|
|
85
|
-
$tester.set_timeset("nvmbist_readout", 160)
|
|
86
|
-
8.cycles
|
|
87
|
-
ss "Test that additional stores are not injected, only 4 TDO vectors should be captured"
|
|
88
|
-
4.times do
|
|
89
|
-
1.cycle
|
|
90
|
-
$tester.store($dut.pin(:tdo))
|
|
91
|
-
end
|
|
92
|
-
$dut.pin(:tdo).dont_care
|
|
93
|
-
$tester.set_timeset("nvmbist", 40)
|
|
94
|
-
|
|
95
|
-
if $tester.vector_group_size == 1
|
|
96
|
-
ss do
|
|
97
|
-
cc "Test that these collapse to a single repeat in the single vector case"
|
|
98
|
-
end
|
|
99
|
-
$dut.pin(:tdi).drive(1)
|
|
100
|
-
$tester.wait cycles: 60000
|
|
101
|
-
$tester.cycle
|
|
102
|
-
$dut.pin(:tdi).dont_care
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
ss do
|
|
106
|
-
cc "Test that these collapse to correct multiple repeats"
|
|
107
|
-
end
|
|
108
|
-
$dut.pin(:tdi).drive(1)
|
|
109
|
-
$tester.wait cycles: 300000
|
|
110
|
-
$dut.pin(:tdi).dont_care
|
|
111
|
-
|
|
112
|
-
ss do
|
|
113
|
-
cc "Verify that comments at the end of the pattern work OK"
|
|
114
|
-
end
|
|
115
|
-
$dut.pin(:tdi).drive(0)
|
|
116
|
-
$tester.wait cycles: 1200
|
|
117
|
-
cc "This comment should appear after the delay 1200"
|
|
118
|
-
|
|
119
|
-
# Don't add anything new here, the above test should be last in this pattern
|
|
120
|
-
|
|
121
|
-
end
|
|
122
|
-
end
|
|
1
|
+
class SetupTester
|
|
2
|
+
include Origen::PersistentCallbacks
|
|
3
|
+
|
|
4
|
+
def before_pattern(pattern_name)
|
|
5
|
+
case
|
|
6
|
+
when pattern_name =~ /^mm_single\./
|
|
7
|
+
$tester.vector_group_size = 1
|
|
8
|
+
when pattern_name =~ /^mm_dual\./
|
|
9
|
+
$tester.vector_group_size = 2
|
|
10
|
+
when pattern_name =~ /^mm_quad\./
|
|
11
|
+
$tester.vector_group_size = 4
|
|
12
|
+
else
|
|
13
|
+
# To avoid breaking later tests
|
|
14
|
+
$tester.vector_group_size = 1
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
SetupTester.new
|
|
19
|
+
|
|
20
|
+
[:single, :dual, :quad].each do |size|
|
|
21
|
+
# Startup is being skipped here since it is currently a test of the ability
|
|
22
|
+
# to render (i.e. paste) vectors, therefore they are not compressible by
|
|
23
|
+
# Origen and which makes debugging this confusing!
|
|
24
|
+
Pattern.create(name: "mm_#{size}", skip_startup: true) do
|
|
25
|
+
$tester.set_timeset("nvmbist", 40)
|
|
26
|
+
|
|
27
|
+
ss "$tester.cycle(repeat: 128)"
|
|
28
|
+
$tester.cycle(repeat: 128)
|
|
29
|
+
|
|
30
|
+
ss do
|
|
31
|
+
cc "64.times do"
|
|
32
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
33
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
34
|
+
cc "end"
|
|
35
|
+
end
|
|
36
|
+
64.times do
|
|
37
|
+
$dut.pin(:tclk).drive!(0)
|
|
38
|
+
$dut.pin(:tclk).drive!(1)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
ss do
|
|
42
|
+
cc "64.times do"
|
|
43
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
44
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
45
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
46
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
47
|
+
cc "end"
|
|
48
|
+
end
|
|
49
|
+
64.times do
|
|
50
|
+
$dut.pin(:tclk).drive!(0)
|
|
51
|
+
$dut.pin(:tclk).drive!(0)
|
|
52
|
+
$dut.pin(:tclk).drive!(1)
|
|
53
|
+
$dut.pin(:tclk).drive!(1)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
ss do
|
|
57
|
+
cc "64.times do"
|
|
58
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
59
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
60
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
61
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
62
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
63
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
64
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
65
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
66
|
+
cc "end"
|
|
67
|
+
end
|
|
68
|
+
64.times do
|
|
69
|
+
$dut.pin(:tclk).drive!(0)
|
|
70
|
+
$dut.pin(:tclk).drive!(0)
|
|
71
|
+
$dut.pin(:tclk).drive!(0)
|
|
72
|
+
$dut.pin(:tclk).drive!(0)
|
|
73
|
+
$dut.pin(:tclk).drive!(1)
|
|
74
|
+
$dut.pin(:tclk).drive!(1)
|
|
75
|
+
$dut.pin(:tclk).drive!(1)
|
|
76
|
+
$dut.pin(:tclk).drive!(1)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
ss do
|
|
80
|
+
cc "Test of period levelling"
|
|
81
|
+
end
|
|
82
|
+
$tester.timing_toggled_pins << $dut.pin(:tclk)
|
|
83
|
+
$dut.pin(:tdo).assert(0)
|
|
84
|
+
8.cycles
|
|
85
|
+
$tester.set_timeset("nvmbist_readout", 160)
|
|
86
|
+
8.cycles
|
|
87
|
+
ss "Test that additional stores are not injected, only 4 TDO vectors should be captured"
|
|
88
|
+
4.times do
|
|
89
|
+
1.cycle
|
|
90
|
+
$tester.store($dut.pin(:tdo))
|
|
91
|
+
end
|
|
92
|
+
$dut.pin(:tdo).dont_care
|
|
93
|
+
$tester.set_timeset("nvmbist", 40)
|
|
94
|
+
|
|
95
|
+
if $tester.vector_group_size == 1
|
|
96
|
+
ss do
|
|
97
|
+
cc "Test that these collapse to a single repeat in the single vector case"
|
|
98
|
+
end
|
|
99
|
+
$dut.pin(:tdi).drive(1)
|
|
100
|
+
$tester.wait cycles: 60000
|
|
101
|
+
$tester.cycle
|
|
102
|
+
$dut.pin(:tdi).dont_care
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
ss do
|
|
106
|
+
cc "Test that these collapse to correct multiple repeats"
|
|
107
|
+
end
|
|
108
|
+
$dut.pin(:tdi).drive(1)
|
|
109
|
+
$tester.wait cycles: 300000
|
|
110
|
+
$dut.pin(:tdi).dont_care
|
|
111
|
+
|
|
112
|
+
ss do
|
|
113
|
+
cc "Verify that comments at the end of the pattern work OK"
|
|
114
|
+
end
|
|
115
|
+
$dut.pin(:tdi).drive(0)
|
|
116
|
+
$tester.wait cycles: 1200
|
|
117
|
+
cc "This comment should appear after the delay 1200"
|
|
118
|
+
|
|
119
|
+
# Don't add anything new here, the above test should be last in this pattern
|
|
120
|
+
|
|
121
|
+
end
|
|
122
|
+
end
|
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
# This pattern is to test that patterns pad correctly when they end on an
|
|
2
|
-
# odd number of vectors.
|
|
3
|
-
# Don't add things to the main body, modify multi_vector.rb instead.
|
|
4
|
-
|
|
5
|
-
class SetupTester
|
|
6
|
-
include Origen::PersistentCallbacks
|
|
7
|
-
|
|
8
|
-
def before_pattern(pattern_name)
|
|
9
|
-
case
|
|
10
|
-
when pattern_name =~ /^mm_single_plus1\./
|
|
11
|
-
$tester.vector_group_size = 1
|
|
12
|
-
when pattern_name =~ /^mm_dual_plus1\./
|
|
13
|
-
$tester.vector_group_size = 2
|
|
14
|
-
when pattern_name =~ /^mm_quad_plus1\./
|
|
15
|
-
$tester.vector_group_size = 4
|
|
16
|
-
else
|
|
17
|
-
# To avoid breaking later tests
|
|
18
|
-
$tester.vector_group_size = 1
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
SetupTester.new
|
|
23
|
-
|
|
24
|
-
[:single, :dual, :quad].each do |size|
|
|
25
|
-
# Startup is being skipped here since it is currently a test of the ability
|
|
26
|
-
# to render (i.e. paste) vectors, therefore they are not compressible by
|
|
27
|
-
# Origen and which makes debugging this confusing!
|
|
28
|
-
Pattern.create(name: "mm_#{size}_plus1", skip_startup: true) do
|
|
29
|
-
$tester.set_timeset("nvmbist", 40)
|
|
30
|
-
|
|
31
|
-
ss "$tester.cycle(repeat: 128)"
|
|
32
|
-
$tester.cycle(repeat: 128)
|
|
33
|
-
|
|
34
|
-
ss do
|
|
35
|
-
cc "64.times do"
|
|
36
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
37
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
38
|
-
cc "end"
|
|
39
|
-
end
|
|
40
|
-
64.times do
|
|
41
|
-
$dut.pin(:tclk).drive!(0)
|
|
42
|
-
$dut.pin(:tclk).drive!(1)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
ss do
|
|
46
|
-
cc "64.times do"
|
|
47
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
48
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
49
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
50
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
51
|
-
cc "end"
|
|
52
|
-
end
|
|
53
|
-
64.times do
|
|
54
|
-
$dut.pin(:tclk).drive!(0)
|
|
55
|
-
$dut.pin(:tclk).drive!(0)
|
|
56
|
-
$dut.pin(:tclk).drive!(1)
|
|
57
|
-
$dut.pin(:tclk).drive!(1)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
ss do
|
|
61
|
-
cc "64.times do"
|
|
62
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
63
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
64
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
65
|
-
cc " $dut.pin(:tclk).drive!(0)"
|
|
66
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
67
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
68
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
69
|
-
cc " $dut.pin(:tclk).drive!(1)"
|
|
70
|
-
cc "end"
|
|
71
|
-
end
|
|
72
|
-
64.times do
|
|
73
|
-
$dut.pin(:tclk).drive!(0)
|
|
74
|
-
$dut.pin(:tclk).drive!(0)
|
|
75
|
-
$dut.pin(:tclk).drive!(0)
|
|
76
|
-
$dut.pin(:tclk).drive!(0)
|
|
77
|
-
$dut.pin(:tclk).drive!(1)
|
|
78
|
-
$dut.pin(:tclk).drive!(1)
|
|
79
|
-
$dut.pin(:tclk).drive!(1)
|
|
80
|
-
$dut.pin(:tclk).drive!(1)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
ss do
|
|
84
|
-
cc "Test of period levelling"
|
|
85
|
-
end
|
|
86
|
-
8.times do
|
|
87
|
-
$dut.pin(:tclk).drive!(0)
|
|
88
|
-
$dut.pin(:tclk).drive!(1)
|
|
89
|
-
end
|
|
90
|
-
$tester.set_timeset("nvmbist_readout", 80)
|
|
91
|
-
8.times do
|
|
92
|
-
$dut.pin(:tclk).drive!(0)
|
|
93
|
-
$dut.pin(:tclk).drive!(1)
|
|
94
|
-
end
|
|
95
|
-
$tester.set_timeset("nvmbist", 40)
|
|
96
|
-
|
|
97
|
-
if $tester.vector_group_size == 1
|
|
98
|
-
ss do
|
|
99
|
-
cc "Test that these collapse to a single repeat in the single vector case"
|
|
100
|
-
end
|
|
101
|
-
$dut.pin(:tdi).drive(1)
|
|
102
|
-
$tester.wait cycles: 60000
|
|
103
|
-
$tester.cycle
|
|
104
|
-
$dut.pin(:tdi).dont_care
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
ss do
|
|
108
|
-
cc "Test that these collapse to correct multiple repeats"
|
|
109
|
-
end
|
|
110
|
-
$dut.pin(:tdi).drive(1)
|
|
111
|
-
$tester.wait cycles: 300000
|
|
112
|
-
$dut.pin(:tdi).dont_care
|
|
113
|
-
|
|
114
|
-
ss do
|
|
115
|
-
cc "Verify that comments at the end of the pattern work OK"
|
|
116
|
-
end
|
|
117
|
-
$dut.pin(:tdi).drive(0)
|
|
118
|
-
$tester.wait cycles: 1200
|
|
119
|
-
cc "This comment should appear after the delay 1200"
|
|
120
|
-
$tester.cycle
|
|
121
|
-
|
|
122
|
-
# Don't add anything new here, the above test should be last in this pattern
|
|
123
|
-
|
|
124
|
-
end
|
|
125
|
-
end
|
|
1
|
+
# This pattern is to test that patterns pad correctly when they end on an
|
|
2
|
+
# odd number of vectors.
|
|
3
|
+
# Don't add things to the main body, modify multi_vector.rb instead.
|
|
4
|
+
|
|
5
|
+
class SetupTester
|
|
6
|
+
include Origen::PersistentCallbacks
|
|
7
|
+
|
|
8
|
+
def before_pattern(pattern_name)
|
|
9
|
+
case
|
|
10
|
+
when pattern_name =~ /^mm_single_plus1\./
|
|
11
|
+
$tester.vector_group_size = 1
|
|
12
|
+
when pattern_name =~ /^mm_dual_plus1\./
|
|
13
|
+
$tester.vector_group_size = 2
|
|
14
|
+
when pattern_name =~ /^mm_quad_plus1\./
|
|
15
|
+
$tester.vector_group_size = 4
|
|
16
|
+
else
|
|
17
|
+
# To avoid breaking later tests
|
|
18
|
+
$tester.vector_group_size = 1
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
SetupTester.new
|
|
23
|
+
|
|
24
|
+
[:single, :dual, :quad].each do |size|
|
|
25
|
+
# Startup is being skipped here since it is currently a test of the ability
|
|
26
|
+
# to render (i.e. paste) vectors, therefore they are not compressible by
|
|
27
|
+
# Origen and which makes debugging this confusing!
|
|
28
|
+
Pattern.create(name: "mm_#{size}_plus1", skip_startup: true) do
|
|
29
|
+
$tester.set_timeset("nvmbist", 40)
|
|
30
|
+
|
|
31
|
+
ss "$tester.cycle(repeat: 128)"
|
|
32
|
+
$tester.cycle(repeat: 128)
|
|
33
|
+
|
|
34
|
+
ss do
|
|
35
|
+
cc "64.times do"
|
|
36
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
37
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
38
|
+
cc "end"
|
|
39
|
+
end
|
|
40
|
+
64.times do
|
|
41
|
+
$dut.pin(:tclk).drive!(0)
|
|
42
|
+
$dut.pin(:tclk).drive!(1)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
ss do
|
|
46
|
+
cc "64.times do"
|
|
47
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
48
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
49
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
50
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
51
|
+
cc "end"
|
|
52
|
+
end
|
|
53
|
+
64.times do
|
|
54
|
+
$dut.pin(:tclk).drive!(0)
|
|
55
|
+
$dut.pin(:tclk).drive!(0)
|
|
56
|
+
$dut.pin(:tclk).drive!(1)
|
|
57
|
+
$dut.pin(:tclk).drive!(1)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
ss do
|
|
61
|
+
cc "64.times do"
|
|
62
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
63
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
64
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
65
|
+
cc " $dut.pin(:tclk).drive!(0)"
|
|
66
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
67
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
68
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
69
|
+
cc " $dut.pin(:tclk).drive!(1)"
|
|
70
|
+
cc "end"
|
|
71
|
+
end
|
|
72
|
+
64.times do
|
|
73
|
+
$dut.pin(:tclk).drive!(0)
|
|
74
|
+
$dut.pin(:tclk).drive!(0)
|
|
75
|
+
$dut.pin(:tclk).drive!(0)
|
|
76
|
+
$dut.pin(:tclk).drive!(0)
|
|
77
|
+
$dut.pin(:tclk).drive!(1)
|
|
78
|
+
$dut.pin(:tclk).drive!(1)
|
|
79
|
+
$dut.pin(:tclk).drive!(1)
|
|
80
|
+
$dut.pin(:tclk).drive!(1)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
ss do
|
|
84
|
+
cc "Test of period levelling"
|
|
85
|
+
end
|
|
86
|
+
8.times do
|
|
87
|
+
$dut.pin(:tclk).drive!(0)
|
|
88
|
+
$dut.pin(:tclk).drive!(1)
|
|
89
|
+
end
|
|
90
|
+
$tester.set_timeset("nvmbist_readout", 80)
|
|
91
|
+
8.times do
|
|
92
|
+
$dut.pin(:tclk).drive!(0)
|
|
93
|
+
$dut.pin(:tclk).drive!(1)
|
|
94
|
+
end
|
|
95
|
+
$tester.set_timeset("nvmbist", 40)
|
|
96
|
+
|
|
97
|
+
if $tester.vector_group_size == 1
|
|
98
|
+
ss do
|
|
99
|
+
cc "Test that these collapse to a single repeat in the single vector case"
|
|
100
|
+
end
|
|
101
|
+
$dut.pin(:tdi).drive(1)
|
|
102
|
+
$tester.wait cycles: 60000
|
|
103
|
+
$tester.cycle
|
|
104
|
+
$dut.pin(:tdi).dont_care
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
ss do
|
|
108
|
+
cc "Test that these collapse to correct multiple repeats"
|
|
109
|
+
end
|
|
110
|
+
$dut.pin(:tdi).drive(1)
|
|
111
|
+
$tester.wait cycles: 300000
|
|
112
|
+
$dut.pin(:tdi).dont_care
|
|
113
|
+
|
|
114
|
+
ss do
|
|
115
|
+
cc "Verify that comments at the end of the pattern work OK"
|
|
116
|
+
end
|
|
117
|
+
$dut.pin(:tdi).drive(0)
|
|
118
|
+
$tester.wait cycles: 1200
|
|
119
|
+
cc "This comment should appear after the delay 1200"
|
|
120
|
+
$tester.cycle
|
|
121
|
+
|
|
122
|
+
# Don't add anything new here, the above test should be last in this pattern
|
|
123
|
+
|
|
124
|
+
end
|
|
125
|
+
end
|