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.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/config/application.rb +151 -151
  3. data/config/boot.rb +13 -13
  4. data/config/commands.rb +85 -86
  5. data/config/users.rb +18 -18
  6. data/config/version.rb +8 -8
  7. data/lib/commands/build.rb +69 -69
  8. data/lib/commands/run.rb +48 -48
  9. data/lib/origen_testers.rb +47 -47
  10. data/lib/origen_testers/api.rb +381 -381
  11. data/lib/origen_testers/basic_test_setups.rb +105 -105
  12. data/lib/origen_testers/callback_handlers.rb +59 -59
  13. data/lib/origen_testers/command_based_tester.rb +45 -45
  14. data/lib/origen_testers/flow.rb +382 -382
  15. data/lib/origen_testers/generator.rb +283 -283
  16. data/lib/origen_testers/generator/identity_map.rb +23 -23
  17. data/lib/origen_testers/generator/placeholder.rb +11 -11
  18. data/lib/origen_testers/generator/test_numberer.rb +23 -23
  19. data/lib/origen_testers/igxl_based_tester.rb +12 -12
  20. data/lib/origen_testers/igxl_based_tester/base.rb +1100 -1099
  21. data/lib/origen_testers/igxl_based_tester/base/ac_specsets.rb +79 -79
  22. data/lib/origen_testers/igxl_based_tester/base/custom_test_instance.rb +169 -169
  23. data/lib/origen_testers/igxl_based_tester/base/dc_specsets.rb +98 -98
  24. data/lib/origen_testers/igxl_based_tester/base/edge.rb +60 -60
  25. data/lib/origen_testers/igxl_based_tester/base/edges.rb +24 -24
  26. data/lib/origen_testers/igxl_based_tester/base/edgeset.rb +39 -39
  27. data/lib/origen_testers/igxl_based_tester/base/edgesets.rb +130 -130
  28. data/lib/origen_testers/igxl_based_tester/base/flow.rb +460 -460
  29. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +276 -276
  30. data/lib/origen_testers/igxl_based_tester/base/generator.rb +607 -607
  31. data/lib/origen_testers/igxl_based_tester/base/global_specs.rb +83 -83
  32. data/lib/origen_testers/igxl_based_tester/base/job.rb +75 -75
  33. data/lib/origen_testers/igxl_based_tester/base/jobs.rb +44 -44
  34. data/lib/origen_testers/igxl_based_tester/base/level_io_se.rb +59 -59
  35. data/lib/origen_testers/igxl_based_tester/base/level_supply.rb +39 -39
  36. data/lib/origen_testers/igxl_based_tester/base/levels.rb +31 -31
  37. data/lib/origen_testers/igxl_based_tester/base/levelset.rb +110 -110
  38. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -109
  39. data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -38
  40. data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -68
  41. data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -56
  42. data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -38
  43. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -68
  44. data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -56
  45. data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -38
  46. data/lib/origen_testers/igxl_based_tester/base/pinmap.rb +93 -93
  47. data/lib/origen_testers/igxl_based_tester/base/references.rb +25 -25
  48. data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +322 -322
  49. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +66 -66
  50. data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +212 -212
  51. data/lib/origen_testers/igxl_based_tester/base/test_instances/custom_til.rb +37 -37
  52. data/lib/origen_testers/igxl_based_tester/base/timeset.rb +37 -37
  53. data/lib/origen_testers/igxl_based_tester/base/timesets.rb +49 -49
  54. data/lib/origen_testers/igxl_based_tester/base/timesets_basic.rb +49 -49
  55. data/lib/origen_testers/igxl_based_tester/files.rb +43 -43
  56. data/lib/origen_testers/igxl_based_tester/j750.rb +269 -269
  57. data/lib/origen_testers/igxl_based_tester/j750/custom_test_instance.rb +32 -32
  58. data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -10
  59. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -19
  60. data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -19
  61. data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -9
  62. data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -10
  63. data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -9
  64. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -18
  65. data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -10
  66. data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -9
  67. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -18
  68. data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -10
  69. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +746 -746
  70. data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -9
  71. data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -10
  72. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -34
  73. data/lib/origen_testers/igxl_based_tester/j750_hpt/custom_test_instance.rb +32 -32
  74. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -9
  75. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -9
  76. data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -19
  77. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -9
  78. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -9
  79. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -9
  80. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -9
  81. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -9
  82. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -9
  83. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -9
  84. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -9
  85. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +599 -599
  86. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -9
  87. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -9
  88. data/lib/origen_testers/igxl_based_tester/parser.rb +102 -102
  89. data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -9
  90. data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -33
  91. data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -48
  92. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -339
  93. data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -109
  94. data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -203
  95. data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -21
  96. data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -92
  97. data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -31
  98. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +420 -420
  99. data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -24
  100. data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -13
  101. data/lib/origen_testers/igxl_based_tester/ultraflex.rb +798 -798
  102. data/lib/origen_testers/igxl_based_tester/ultraflex/ac_specsets.rb +10 -10
  103. data/lib/origen_testers/igxl_based_tester/ultraflex/ate_hardware.rb +949 -949
  104. data/lib/origen_testers/igxl_based_tester/ultraflex/custom_test_instance.rb +36 -36
  105. data/lib/origen_testers/igxl_based_tester/ultraflex/dc_specsets.rb +10 -10
  106. data/lib/origen_testers/igxl_based_tester/ultraflex/edge.rb +9 -9
  107. data/lib/origen_testers/igxl_based_tester/ultraflex/edges.rb +9 -9
  108. data/lib/origen_testers/igxl_based_tester/ultraflex/edgeset.rb +9 -9
  109. data/lib/origen_testers/igxl_based_tester/ultraflex/edgesets.rb +10 -10
  110. data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +158 -158
  111. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -19
  112. data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -19
  113. data/lib/origen_testers/igxl_based_tester/ultraflex/global_specs.rb +10 -10
  114. data/lib/origen_testers/igxl_based_tester/ultraflex/job.rb +9 -9
  115. data/lib/origen_testers/igxl_based_tester/ultraflex/jobs.rb +10 -10
  116. data/lib/origen_testers/igxl_based_tester/ultraflex/level_io_se.rb +9 -9
  117. data/lib/origen_testers/igxl_based_tester/ultraflex/level_supply.rb +9 -9
  118. data/lib/origen_testers/igxl_based_tester/ultraflex/levels.rb +9 -9
  119. data/lib/origen_testers/igxl_based_tester/ultraflex/levelset.rb +10 -10
  120. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -9
  121. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -10
  122. data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -9
  123. data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -18
  124. data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -10
  125. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -9
  126. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -18
  127. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -10
  128. data/lib/origen_testers/igxl_based_tester/ultraflex/pinmap.rb +10 -10
  129. data/lib/origen_testers/igxl_based_tester/ultraflex/references.rb +10 -10
  130. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/ac_specsets.txt.erb +0 -0
  131. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/dc_specsets.txt.erb +0 -0
  132. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/edgesets.txt.erb +0 -0
  133. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/global_specs.txt.erb +0 -0
  134. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/jobs.txt.erb +0 -0
  135. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/levelset.txt.erb +0 -0
  136. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/pinmap.txt.erb +0 -0
  137. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/references.txt.erb +0 -0
  138. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets.txt.erb +0 -0
  139. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/timesets_basic.txt.erb +0 -0
  140. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +315 -315
  141. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -9
  142. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -10
  143. data/lib/origen_testers/igxl_based_tester/ultraflex/timeset.rb +9 -9
  144. data/lib/origen_testers/igxl_based_tester/ultraflex/timesets.rb +10 -10
  145. data/lib/origen_testers/igxl_based_tester/ultraflex/timesets_basic.rb +10 -10
  146. data/lib/origen_testers/interface.rb +345 -324
  147. data/lib/origen_testers/memory_style.rb +77 -77
  148. data/lib/origen_testers/no_interface.rb +7 -7
  149. data/lib/origen_testers/origen_ext/application/runner.rb +25 -25
  150. data/lib/origen_testers/origen_ext/generator.rb +54 -54
  151. data/lib/origen_testers/origen_ext/generator/flow.rb +91 -77
  152. data/lib/origen_testers/origen_ext/generator/resources.rb +21 -21
  153. data/lib/origen_testers/origen_ext/pins/pin.rb +78 -78
  154. data/lib/origen_testers/origen_ext/pins/pin_collection.rb +84 -84
  155. data/lib/origen_testers/parser.rb +22 -22
  156. data/lib/origen_testers/parser/description_lookup.rb +62 -62
  157. data/lib/origen_testers/parser/searchable_array.rb +30 -30
  158. data/lib/origen_testers/parser/searchable_hash.rb +30 -30
  159. data/lib/origen_testers/pattern_compilers.rb +116 -116
  160. data/lib/origen_testers/pattern_compilers/assembler.rb +88 -88
  161. data/lib/origen_testers/pattern_compilers/job.rb +96 -96
  162. data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -599
  163. data/lib/origen_testers/program_generators.rb +62 -62
  164. data/lib/origen_testers/smartest_based_tester.rb +8 -8
  165. data/lib/origen_testers/smartest_based_tester/base.rb +576 -567
  166. data/lib/origen_testers/smartest_based_tester/base/flow.rb +296 -291
  167. data/lib/origen_testers/smartest_based_tester/base/generator.rb +207 -194
  168. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +32 -32
  169. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +69 -69
  170. data/lib/origen_testers/smartest_based_tester/base/processors.rb +16 -16
  171. data/lib/origen_testers/smartest_based_tester/base/processors/adjacent_if_combiner.rb +106 -106
  172. data/lib/origen_testers/smartest_based_tester/base/processors/continue_implementer.rb +39 -39
  173. data/lib/origen_testers/smartest_based_tester/base/processors/empty_branch_cleaner.rb +21 -21
  174. data/lib/origen_testers/smartest_based_tester/base/processors/extract_run_flag_table.rb +33 -33
  175. data/lib/origen_testers/smartest_based_tester/base/processors/extract_set_variables.rb +22 -22
  176. data/lib/origen_testers/smartest_based_tester/base/processors/flag_optimizer.rb +188 -188
  177. data/lib/origen_testers/smartest_based_tester/base/processors/if_ran_cleaner.rb +34 -34
  178. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +178 -164
  179. data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +77 -73
  180. data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -33
  181. data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -38
  182. data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -19
  183. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -147
  184. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +65 -65
  185. data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +208 -193
  186. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -54
  187. data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +38 -38
  188. data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -8
  189. data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -89
  190. data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +181 -181
  191. data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -54
  192. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -10
  193. data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -19
  194. data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -10
  195. data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -10
  196. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -17
  197. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -13
  198. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.tf.erb +236 -214
  199. data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +48 -48
  200. data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -9
  201. data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -9
  202. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -9
  203. data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -9
  204. data/lib/origen_testers/smartest_based_tester/v93k/variables_file.rb +10 -10
  205. data/lib/origen_testers/test/basic_interface.rb +17 -17
  206. data/lib/origen_testers/test/block.rb +21 -21
  207. data/lib/origen_testers/test/custom_test_interface.rb +111 -111
  208. data/lib/origen_testers/test/dut.rb +295 -295
  209. data/lib/origen_testers/test/dut2.rb +76 -76
  210. data/lib/origen_testers/test/dut3.rb +244 -244
  211. data/lib/origen_testers/test/interface.rb +503 -503
  212. data/lib/origen_testers/test/nvm.rb +94 -94
  213. data/lib/origen_testers/timing.rb +368 -368
  214. data/lib/origen_testers/vector.rb +207 -207
  215. data/lib/origen_testers/vector_based_tester.rb +41 -41
  216. data/lib/origen_testers/vector_generator.rb +655 -655
  217. data/lib/origen_testers/vector_pipeline.rb +302 -302
  218. data/pattern/bitmap.rb +7 -7
  219. data/pattern/dc_instr.rb +7 -7
  220. data/pattern/delay.rb +7 -7
  221. data/pattern/freq_counter.rb +6 -6
  222. data/pattern/mem_test.rb +8 -8
  223. data/pattern/multi_vector.rb +122 -122
  224. data/pattern/multi_vector_plus1.rb +125 -125
  225. data/pattern/nvm/j750/add_late_pins.rb +3 -3
  226. data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -8
  227. data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -8
  228. data/pattern/nvm/j750/j750_halt.rb +159 -159
  229. data/pattern/nvm/j750/j750_workout.rb +209 -209
  230. data/pattern/nvm/j750/timing.rb +73 -73
  231. data/pattern/read_write_reg.rb +61 -61
  232. data/pattern/reset.rb +4 -4
  233. data/pattern/subroutines.rb +69 -69
  234. data/pattern/tester_overlay.rb +61 -52
  235. data/pattern/tester_store.rb +28 -28
  236. data/program/_additional_erase.rb +7 -7
  237. data/program/_efa_resources.rb +7 -7
  238. data/program/_erase.rb +25 -25
  239. data/program/_erase_vfy.rb +5 -5
  240. data/program/_iv_resources.rb +10 -10
  241. data/program/basic_interface.rb +5 -5
  242. data/program/components/_prb1_main.rb +222 -222
  243. data/program/components/_temp.rb +6 -6
  244. data/program/custom_tests.rb +10 -10
  245. data/program/flow_control.rb +422 -422
  246. data/program/prb1.rb +11 -11
  247. data/program/prb1_resources.rb +28 -28
  248. data/program/prb2.rb +27 -27
  249. data/program/test.rb +29 -29
  250. data/program/uflex_resources.rb +199 -199
  251. data/templates/example.txt.erb +53 -53
  252. data/templates/j750/program_sheet.txt.erb +9 -9
  253. data/templates/manifest/v93k.yaml.erb +22 -22
  254. data/templates/web/index.md.erb +51 -51
  255. data/templates/web/layouts/_basic.html.erb +15 -15
  256. data/templates/web/partials/_navbar.html.erb +22 -22
  257. data/templates/web/release_notes.md.erb +5 -5
  258. metadata +2 -2
@@ -1,3 +1,3 @@
1
- Pattern.create(:add_additional_pins => true) do
2
- $tester.cycle
3
- end
1
+ Pattern.create(:add_additional_pins => true) do
2
+ $tester.cycle
3
+ end
@@ -1,8 +1,8 @@
1
- Pattern.create(:pat_postfix => :sel, :by_block => true, :by_setting => [1, 2, 3, 4, 5]) do |block, setting|
2
-
3
- cc block.id
4
- $tester.cycle
5
- cc setting
6
- $tester.cycle
7
-
8
- end
1
+ Pattern.create(:pat_postfix => :sel, :by_block => true, :by_setting => [1, 2, 3, 4, 5]) do |block, setting|
2
+
3
+ cc block.id
4
+ $tester.cycle
5
+ cc setting
6
+ $tester.cycle
7
+
8
+ end
@@ -1,8 +1,8 @@
1
- Pattern.create(:by_block => true, :by_setting => [1, 2, 3, 4, 5]) do |block, setting|
2
-
3
- cc block.id
4
- $tester.cycle
5
- cc setting
6
- $tester.cycle
7
-
8
- end
1
+ Pattern.create(:by_block => true, :by_setting => [1, 2, 3, 4, 5]) do |block, setting|
2
+
3
+ cc block.id
4
+ $tester.cycle
5
+ cc setting
6
+ $tester.cycle
7
+
8
+ end
@@ -1,159 +1,159 @@
1
- # This pattern exercises the methods in the Origen::Tester::J750 class
2
- Pattern.create(:end_with_halt => true) do
3
-
4
- ss 'Test that basic cycling works'
5
- $tester.cycle
6
- 10.times do
7
- $nvm.pin(:invoke).drive(1)
8
- $tester.cycle
9
- end
10
- 10.times do |i|
11
- $nvm.pin(:invoke).drive(i.even? ? 0 : 1)
12
- $tester.cycle
13
- end
14
-
15
- ss 'Test that basic port manipulation works'
16
- unless $tester.respond_to?('hpt_mode')
17
- $nvm.pins(:porta).drive(0x55)
18
- $tester.cycle
19
- $nvm.pins(:porta).expect(0xAA)
20
- $tester.cycle
21
- $nvm.pins(:porta)[1].dont_care
22
- $tester.cycle
23
- end
24
-
25
- ss 'Test that the store method works'
26
- cc 'This vector should be stored'
27
- $tester.cycle
28
- $tester.store
29
- $tester.cycle
30
- cc 'This vector should be stored'
31
- $tester.cycle
32
- $tester.cycle
33
- $tester.cycle
34
- $tester.store(:offset => -2)
35
-
36
- ss 'Test calling a subroutine'
37
- cc "This vector should call subroutine 'sub1'"
38
- $tester.cycle
39
- $tester.call_subroutine('sub1')
40
- cc "This vector should call subroutine 'sub2'"
41
- $tester.cycle
42
- $tester.cycle
43
- $tester.call_subroutine('sub2', :offset => -1)
44
- cc "This vector should call subroutine 'sub3', however because"
45
- cc 'it is local it should not appear in the imports in the header'
46
- $tester.cycle
47
- $tester.call_subroutine('sub3')
48
-
49
- ss 'Test generating a handshake inside a subroutine'
50
- cc "The next line should have a global label 'sub3', but no vector"
51
- $tester.start_subroutine('sub3')
52
- $tester.handshake
53
- cc 'This vector should have a return statement'
54
- $tester.cycle
55
- $tester.end_subroutine
56
-
57
- ss 'Test generating a handshake with a readcode'
58
- $tester.handshake(:readcode => 10)
59
-
60
- ss 'Test frequency counter'
61
- $tester.freq_count($nvm.pin(:dtst), :readcode => 33)
62
-
63
- ss 'Test a single pin match loop'
64
- $tester.wait(:match => true, :time_in_us => 5000, :pin => $nvm.pin(:done), :state => :high)
65
-
66
- ss 'Test a two pin match loop'
67
- $tester.wait(:match => true, :time_in_us => 5000,
68
- :pin => $nvm.pin(:done), :state => :high,
69
- :pin2 => $nvm.pin(:fail), :state2 => :low)
70
-
71
- ss 'Test adding an arbitrary label'
72
- $tester.cycle
73
- $tester.label 'a_test_label'
74
- $tester.cycle
75
-
76
- ss 'Test calling a match loop'
77
- $tester.cycle
78
- $tester.call_match
79
- $tester.cycle
80
- $tester.call_match
81
-
82
- ss 'Test setting the readcode to 100'
83
- $tester.set_code(100)
84
-
85
- ss 'Test explicit branching'
86
- $tester.branch_to('somewhere')
87
-
88
- if !$tester.respond_to?('hpt_mode')
89
- ss 'Test looping, these vectors should be executed once'
90
- $tester.loop_vector('test_loop_1', 1) do
91
- $nvm.pins(:porta).drive(0xAA)
92
- $tester.cycle
93
- $nvm.pins(:porta).drive(0x55)
94
- $tester.cycle
95
- end
96
-
97
- ss 'Test looping, these vectors should be executed 3 times'
98
- $tester.loop_vector('test_loop_2', 3) do
99
- $nvm.pins(:porta).drive(0xAA)
100
- $tester.cycle
101
- $nvm.pins(:porta).drive(0x55)
102
- $tester.cycle
103
- end
104
- else
105
- ss 'Test looping, these vectors should be executed once'
106
- $tester.loop_vector('test_loop_1', 1) do
107
- $nvm.pin(:clk).drive(1)
108
- $tester.cycle
109
- $nvm.pin(:clk).drive(0)
110
- $tester.cycle
111
- end
112
-
113
- ss 'Test looping, these vectors should be executed 3 times'
114
- $tester.loop_vector('test_loop_2', 3) do
115
- $nvm.pin(:clk).drive(1)
116
- $tester.cycle
117
- $nvm.pin(:clk).drive(0)
118
- $tester.cycle
119
- end
120
- end
121
-
122
- ss 'Test repeat_previous'
123
- $tester.cycle
124
- cc 'Invoke should repeat previous for 10 cycles'
125
- $nvm.pin(:invoke).repeat_previous = true
126
- 10.cycles
127
- $nvm.pin(:invoke).repeat_previous = false
128
- cc 'All pins should repeat previous for 10 cycles, except the clk pin'
129
- $tester.repeat_previous do
130
- $nvm.pin(:clk).drive(1)
131
- 10.cycles
132
- end
133
- cc 'All should return to the original state'
134
- $tester.cycle
135
-
136
- ss 'Test suspend compares'
137
- $nvm.pin(:fail).assert!(1)
138
- cc 'The fail pin should not be compared on these vectors'
139
- $tester.ignore_fails($nvm.pin(:fail)) do
140
- 10.cycles
141
- end
142
- cc 'And now it should'
143
- $tester.cycle
144
-
145
- ss 'Test inhibit vectors and comments'
146
- cc 'The invoke pin should be driving high on this cycle'
147
- $nvm.pin(:invoke).drive!(1)
148
- cc "This should be the last thing you see until 'Inhibit complete!'"
149
- $tester.inhibit_vectors_and_comments do
150
- cc 'This should not be in the output file, or the following vectors'
151
- $tester.cycle
152
- $nvm.pin(:invoke).drive!(0)
153
- 10.cycles
154
- end
155
- cc 'Inhibit complete!'
156
- cc 'The invoke pin should be driving low on this cycle'
157
- $tester.cycle
158
-
159
- end
1
+ # This pattern exercises the methods in the Origen::Tester::J750 class
2
+ Pattern.create(:end_with_halt => true) do
3
+
4
+ ss 'Test that basic cycling works'
5
+ $tester.cycle
6
+ 10.times do
7
+ $nvm.pin(:invoke).drive(1)
8
+ $tester.cycle
9
+ end
10
+ 10.times do |i|
11
+ $nvm.pin(:invoke).drive(i.even? ? 0 : 1)
12
+ $tester.cycle
13
+ end
14
+
15
+ ss 'Test that basic port manipulation works'
16
+ unless $tester.respond_to?('hpt_mode')
17
+ $nvm.pins(:porta).drive(0x55)
18
+ $tester.cycle
19
+ $nvm.pins(:porta).expect(0xAA)
20
+ $tester.cycle
21
+ $nvm.pins(:porta)[1].dont_care
22
+ $tester.cycle
23
+ end
24
+
25
+ ss 'Test that the store method works'
26
+ cc 'This vector should be stored'
27
+ $tester.cycle
28
+ $tester.store
29
+ $tester.cycle
30
+ cc 'This vector should be stored'
31
+ $tester.cycle
32
+ $tester.cycle
33
+ $tester.cycle
34
+ $tester.store(:offset => -2)
35
+
36
+ ss 'Test calling a subroutine'
37
+ cc "This vector should call subroutine 'sub1'"
38
+ $tester.cycle
39
+ $tester.call_subroutine('sub1')
40
+ cc "This vector should call subroutine 'sub2'"
41
+ $tester.cycle
42
+ $tester.cycle
43
+ $tester.call_subroutine('sub2', :offset => -1)
44
+ cc "This vector should call subroutine 'sub3', however because"
45
+ cc 'it is local it should not appear in the imports in the header'
46
+ $tester.cycle
47
+ $tester.call_subroutine('sub3')
48
+
49
+ ss 'Test generating a handshake inside a subroutine'
50
+ cc "The next line should have a global label 'sub3', but no vector"
51
+ $tester.start_subroutine('sub3')
52
+ $tester.handshake
53
+ cc 'This vector should have a return statement'
54
+ $tester.cycle
55
+ $tester.end_subroutine
56
+
57
+ ss 'Test generating a handshake with a readcode'
58
+ $tester.handshake(:readcode => 10)
59
+
60
+ ss 'Test frequency counter'
61
+ $tester.freq_count($nvm.pin(:dtst), :readcode => 33)
62
+
63
+ ss 'Test a single pin match loop'
64
+ $tester.wait(:match => true, :time_in_us => 5000, :pin => $nvm.pin(:done), :state => :high)
65
+
66
+ ss 'Test a two pin match loop'
67
+ $tester.wait(:match => true, :time_in_us => 5000,
68
+ :pin => $nvm.pin(:done), :state => :high,
69
+ :pin2 => $nvm.pin(:fail), :state2 => :low)
70
+
71
+ ss 'Test adding an arbitrary label'
72
+ $tester.cycle
73
+ $tester.label 'a_test_label'
74
+ $tester.cycle
75
+
76
+ ss 'Test calling a match loop'
77
+ $tester.cycle
78
+ $tester.call_match
79
+ $tester.cycle
80
+ $tester.call_match
81
+
82
+ ss 'Test setting the readcode to 100'
83
+ $tester.set_code(100)
84
+
85
+ ss 'Test explicit branching'
86
+ $tester.branch_to('somewhere')
87
+
88
+ if !$tester.respond_to?('hpt_mode')
89
+ ss 'Test looping, these vectors should be executed once'
90
+ $tester.loop_vector('test_loop_1', 1) do
91
+ $nvm.pins(:porta).drive(0xAA)
92
+ $tester.cycle
93
+ $nvm.pins(:porta).drive(0x55)
94
+ $tester.cycle
95
+ end
96
+
97
+ ss 'Test looping, these vectors should be executed 3 times'
98
+ $tester.loop_vector('test_loop_2', 3) do
99
+ $nvm.pins(:porta).drive(0xAA)
100
+ $tester.cycle
101
+ $nvm.pins(:porta).drive(0x55)
102
+ $tester.cycle
103
+ end
104
+ else
105
+ ss 'Test looping, these vectors should be executed once'
106
+ $tester.loop_vector('test_loop_1', 1) do
107
+ $nvm.pin(:clk).drive(1)
108
+ $tester.cycle
109
+ $nvm.pin(:clk).drive(0)
110
+ $tester.cycle
111
+ end
112
+
113
+ ss 'Test looping, these vectors should be executed 3 times'
114
+ $tester.loop_vector('test_loop_2', 3) do
115
+ $nvm.pin(:clk).drive(1)
116
+ $tester.cycle
117
+ $nvm.pin(:clk).drive(0)
118
+ $tester.cycle
119
+ end
120
+ end
121
+
122
+ ss 'Test repeat_previous'
123
+ $tester.cycle
124
+ cc 'Invoke should repeat previous for 10 cycles'
125
+ $nvm.pin(:invoke).repeat_previous = true
126
+ 10.cycles
127
+ $nvm.pin(:invoke).repeat_previous = false
128
+ cc 'All pins should repeat previous for 10 cycles, except the clk pin'
129
+ $tester.repeat_previous do
130
+ $nvm.pin(:clk).drive(1)
131
+ 10.cycles
132
+ end
133
+ cc 'All should return to the original state'
134
+ $tester.cycle
135
+
136
+ ss 'Test suspend compares'
137
+ $nvm.pin(:fail).assert!(1)
138
+ cc 'The fail pin should not be compared on these vectors'
139
+ $tester.ignore_fails($nvm.pin(:fail)) do
140
+ 10.cycles
141
+ end
142
+ cc 'And now it should'
143
+ $tester.cycle
144
+
145
+ ss 'Test inhibit vectors and comments'
146
+ cc 'The invoke pin should be driving high on this cycle'
147
+ $nvm.pin(:invoke).drive!(1)
148
+ cc "This should be the last thing you see until 'Inhibit complete!'"
149
+ $tester.inhibit_vectors_and_comments do
150
+ cc 'This should not be in the output file, or the following vectors'
151
+ $tester.cycle
152
+ $nvm.pin(:invoke).drive!(0)
153
+ 10.cycles
154
+ end
155
+ cc 'Inhibit complete!'
156
+ cc 'The invoke pin should be driving low on this cycle'
157
+ $tester.cycle
158
+
159
+ end
@@ -1,209 +1,209 @@
1
- # This pattern exercises the methods in the Origen::Tester::J750 class
2
- Pattern.create do
3
-
4
- ss 'Test that basic cycling works'
5
- $tester.cycle
6
- 10.times do
7
- $nvm.pin(:invoke).drive(1)
8
- $tester.cycle
9
- end
10
- 10.times do |i|
11
- $nvm.pin(:invoke).drive(i.even? ? 0 : 1)
12
- $tester.cycle
13
- end
14
-
15
- unless $tester.respond_to?('hpt_mode')
16
- ss 'Test that the port API works'
17
- $nvm.pins(:porta).drive(0x55)
18
- $tester.cycle
19
- $nvm.pins(:porta).expect(0xAA)
20
- $tester.cycle
21
- $nvm.pins(:porta).drive!(0x55)
22
- $nvm.pins(:porta).dont_care!
23
- $nvm.pins(:porta).drive_hi!
24
- $nvm.pins(:porta).drive_very_hi!
25
- $nvm.pins(:porta).drive_lo!
26
- $nvm.pins(:porta).assert_hi!
27
- $nvm.pins(:porta).assert_lo!
28
- $nvm.pins(:porta).drive_lo
29
- $nvm.pins(:porta)[1].assert(1)
30
- $nvm.pins(:porta)[2].assert!(1)
31
- $nvm.pins(:porta).drive_lo
32
- end
33
-
34
- ss 'Test that the store method works'
35
- cc 'This vector should be stored'
36
- $tester.cycle
37
- $tester.store
38
- $tester.cycle
39
- cc 'This vector should be stored'
40
- $tester.cycle
41
- $tester.cycle
42
- $tester.cycle
43
- $tester.store(:offset => -2)
44
- $tester.cycle
45
- $tester.store_next_cycle
46
- cc 'This vector should be stored'
47
- $tester.cycle
48
-
49
- ss 'Test calling a subroutine'
50
- cc "This vector should call subroutine 'sub1'"
51
- $tester.cycle
52
- $tester.call_subroutine('sub1')
53
- cc "This vector should call subroutine 'sub2'"
54
- $tester.cycle
55
- $tester.cycle
56
- $tester.call_subroutine('sub2', :offset => -1)
57
- cc "This vector should call subroutine 'sub3', however because"
58
- cc 'it is local it should not appear in the imports in the header'
59
- $tester.cycle
60
- $tester.call_subroutine('sub3')
61
-
62
- ss 'Test generating a handshake inside a subroutine'
63
- cc "The next line should have a global label 'sub3', but no vector"
64
- $tester.start_subroutine('sub3')
65
- $tester.handshake
66
- cc 'This vector should have a return statement'
67
- $tester.cycle
68
- $tester.end_subroutine
69
-
70
- ss 'Test generating a handshake with a readcode'
71
- $tester.handshake(:readcode => 10)
72
-
73
- ss 'Test frequency counter'
74
- $tester.freq_count($nvm.pin(:dtst), :readcode => 33)
75
-
76
- ss 'Test a single pin match loop - short timeout'
77
- $tester.wait(:match => true, :time_in_us => 5000, :pin => $nvm.pin(:done), :state => :high)
78
-
79
- ss 'Test a single pin match loop- long timeout'
80
- $tester.wait(:match => true, :time_in_s => 7 , :pin => $nvm.pin(:done), :state => :high)
81
-
82
- ss 'Test a single pin match loop - with clr_fail after match loop complete'
83
- $tester.wait(:match => true, :time_in_us => 5000, :pin => $nvm.pin(:done), :state => :high, :clr_fail_post_match => true)
84
-
85
- ss 'Test a two pin match loop'
86
- $tester.wait(:match => true, :time_in_us => 5000,
87
- :pin => $nvm.pin(:done), :state => :high,
88
- :pin2 => $nvm.pin(:fail), :state2 => :low)
89
-
90
- ss 'Test adding an arbitrary label'
91
- $tester.cycle
92
- $tester.label 'a_test_label'
93
- $tester.cycle
94
-
95
- ss 'Test calling a match loop'
96
- $tester.cycle
97
- $tester.call_match
98
- $tester.cycle
99
- $tester.call_match
100
-
101
- ss 'Test setting the readcode to 100'
102
- $tester.set_code(100)
103
-
104
- ss 'Test explicit branching'
105
- $tester.branch_to('somewhere')
106
-
107
- unless $tester.respond_to?('hpt_mode')
108
- ss 'Test looping, these vectors should be executed once'
109
- $tester.loop_vector('test_loop_1', 1) do
110
- $nvm.pins(:porta).drive(0xAA)
111
- $tester.cycle
112
- $nvm.pins(:porta).drive(0x55)
113
- $tester.cycle
114
- end
115
-
116
- ss 'Test looping, these vectors should be executed 3 times'
117
- $tester.loop_vector('test_loop_2', 3) do
118
- $nvm.pins(:porta).drive(0xAA)
119
- $tester.cycle
120
- $nvm.pins(:porta).drive(0x55)
121
- $tester.cycle
122
- end
123
-
124
- ss 'Test looping with label first, these vectors should be executed 3 times'
125
- $tester.loop_vector('test_loop_2', 3, false, true) do
126
- $nvm.pins(:porta).drive(0xAA)
127
- $tester.cycle
128
- $nvm.pins(:porta).drive(0x55)
129
- $tester.cycle
130
- end
131
- end
132
-
133
- ss 'Test repeat_previous'
134
- $tester.cycle
135
- cc 'Invoke should repeat previous for 10 cycles'
136
- $nvm.pin(:invoke).repeat_previous = true
137
- 10.cycles
138
- $nvm.pin(:invoke).repeat_previous = false
139
- cc 'All pins should repeat previous for 10 cycles, except the clk pin'
140
- $tester.repeat_previous do
141
- $nvm.pin(:clk).drive(1)
142
- 10.cycles
143
- end
144
- cc 'All should return to the original state'
145
- $tester.cycle
146
-
147
- ss 'Test suspend compares'
148
- $nvm.pin(:fail).assert!(1)
149
- cc 'The fail pin should not be compared on these vectors'
150
- $tester.ignore_fails($nvm.pin(:fail)) do
151
- 10.cycles
152
- end
153
- cc 'And now it should'
154
- $tester.cycle
155
-
156
- ss 'Test inhibit vectors and comments'
157
- cc 'The invoke pin should be driving high on this cycle'
158
- $nvm.pin(:invoke).drive!(1)
159
- cc "This should be the last thing you see until 'Inhibit complete!'"
160
- $tester.inhibit_vectors_and_comments do
161
- cc 'This should not be in the output file, or the following vectors'
162
- $tester.cycle
163
- $nvm.pin(:invoke).drive!(0)
164
- 10.cycles
165
- end
166
- cc 'Inhibit complete!'
167
- cc 'The invoke pin should be driving low on this cycle'
168
- $tester.cycle
169
-
170
- if $tester.respond_to?('memory_test')
171
- ss 'Test memory test pin states'
172
- $nvm.pin(:invoke).drive_mem
173
- $tester.cycle
174
- $nvm.pin(:invoke).drive_mem!
175
- $nvm.pin(:invoke).expect_mem
176
- $tester.cycle
177
- $nvm.pin(:invoke).expect_mem!
178
- $nvm.pin(:invoke).drive!(0)
179
-
180
- unless $tester.respond_to?('hpt_mode')
181
- ss 'Test memory test port states'
182
- $nvm.pins(:porta).drive_mem
183
- $tester.cycle
184
- $nvm.pins(:porta).drive_mem!
185
- $nvm.pins(:porta).expect_mem
186
- $tester.cycle
187
- $nvm.pins(:porta).expect_mem!
188
- $nvm.pins(:porta).drive!(0x0)
189
- end
190
- end
191
-
192
- ss 'Test that long repeats are broken down to < 65k repeats'
193
- $nvm.pin(:invoke).drive(1)
194
- Origen.tester.cycle(:repeat => 240000)
195
-
196
- ss 'Test that long repeats do not compress to > 65k repeats'
197
- $nvm.pin(:invoke).drive(0)
198
- Origen.tester.cycle(:repeat => 60000)
199
- Origen.tester.cycle(:repeat => 60000)
200
- Origen.tester.cycle(:repeat => 60000)
201
- Origen.tester.cycle(:repeat => 60000)
202
-
203
- ss 'Test real life case where dont compress was ignored'
204
- tester.label("my_label_1")
205
- $nvm.pins(:porta).drive(0x55)
206
- tester.cycle(dont_compress: true)
207
- tester.cycle(repeat: 200)
208
- $nvm.pins(:porta).drive!(0)
209
- end
1
+ # This pattern exercises the methods in the Origen::Tester::J750 class
2
+ Pattern.create do
3
+
4
+ ss 'Test that basic cycling works'
5
+ $tester.cycle
6
+ 10.times do
7
+ $nvm.pin(:invoke).drive(1)
8
+ $tester.cycle
9
+ end
10
+ 10.times do |i|
11
+ $nvm.pin(:invoke).drive(i.even? ? 0 : 1)
12
+ $tester.cycle
13
+ end
14
+
15
+ unless $tester.respond_to?('hpt_mode')
16
+ ss 'Test that the port API works'
17
+ $nvm.pins(:porta).drive(0x55)
18
+ $tester.cycle
19
+ $nvm.pins(:porta).expect(0xAA)
20
+ $tester.cycle
21
+ $nvm.pins(:porta).drive!(0x55)
22
+ $nvm.pins(:porta).dont_care!
23
+ $nvm.pins(:porta).drive_hi!
24
+ $nvm.pins(:porta).drive_very_hi!
25
+ $nvm.pins(:porta).drive_lo!
26
+ $nvm.pins(:porta).assert_hi!
27
+ $nvm.pins(:porta).assert_lo!
28
+ $nvm.pins(:porta).drive_lo
29
+ $nvm.pins(:porta)[1].assert(1)
30
+ $nvm.pins(:porta)[2].assert!(1)
31
+ $nvm.pins(:porta).drive_lo
32
+ end
33
+
34
+ ss 'Test that the store method works'
35
+ cc 'This vector should be stored'
36
+ $tester.cycle
37
+ $tester.store
38
+ $tester.cycle
39
+ cc 'This vector should be stored'
40
+ $tester.cycle
41
+ $tester.cycle
42
+ $tester.cycle
43
+ $tester.store(:offset => -2)
44
+ $tester.cycle
45
+ $tester.store_next_cycle
46
+ cc 'This vector should be stored'
47
+ $tester.cycle
48
+
49
+ ss 'Test calling a subroutine'
50
+ cc "This vector should call subroutine 'sub1'"
51
+ $tester.cycle
52
+ $tester.call_subroutine('sub1')
53
+ cc "This vector should call subroutine 'sub2'"
54
+ $tester.cycle
55
+ $tester.cycle
56
+ $tester.call_subroutine('sub2', :offset => -1)
57
+ cc "This vector should call subroutine 'sub3', however because"
58
+ cc 'it is local it should not appear in the imports in the header'
59
+ $tester.cycle
60
+ $tester.call_subroutine('sub3')
61
+
62
+ ss 'Test generating a handshake inside a subroutine'
63
+ cc "The next line should have a global label 'sub3', but no vector"
64
+ $tester.start_subroutine('sub3')
65
+ $tester.handshake
66
+ cc 'This vector should have a return statement'
67
+ $tester.cycle
68
+ $tester.end_subroutine
69
+
70
+ ss 'Test generating a handshake with a readcode'
71
+ $tester.handshake(:readcode => 10)
72
+
73
+ ss 'Test frequency counter'
74
+ $tester.freq_count($nvm.pin(:dtst), :readcode => 33)
75
+
76
+ ss 'Test a single pin match loop - short timeout'
77
+ $tester.wait(:match => true, :time_in_us => 5000, :pin => $nvm.pin(:done), :state => :high)
78
+
79
+ ss 'Test a single pin match loop- long timeout'
80
+ $tester.wait(:match => true, :time_in_s => 7 , :pin => $nvm.pin(:done), :state => :high)
81
+
82
+ ss 'Test a single pin match loop - with clr_fail after match loop complete'
83
+ $tester.wait(:match => true, :time_in_us => 5000, :pin => $nvm.pin(:done), :state => :high, :clr_fail_post_match => true)
84
+
85
+ ss 'Test a two pin match loop'
86
+ $tester.wait(:match => true, :time_in_us => 5000,
87
+ :pin => $nvm.pin(:done), :state => :high,
88
+ :pin2 => $nvm.pin(:fail), :state2 => :low)
89
+
90
+ ss 'Test adding an arbitrary label'
91
+ $tester.cycle
92
+ $tester.label 'a_test_label'
93
+ $tester.cycle
94
+
95
+ ss 'Test calling a match loop'
96
+ $tester.cycle
97
+ $tester.call_match
98
+ $tester.cycle
99
+ $tester.call_match
100
+
101
+ ss 'Test setting the readcode to 100'
102
+ $tester.set_code(100)
103
+
104
+ ss 'Test explicit branching'
105
+ $tester.branch_to('somewhere')
106
+
107
+ unless $tester.respond_to?('hpt_mode')
108
+ ss 'Test looping, these vectors should be executed once'
109
+ $tester.loop_vector('test_loop_1', 1) do
110
+ $nvm.pins(:porta).drive(0xAA)
111
+ $tester.cycle
112
+ $nvm.pins(:porta).drive(0x55)
113
+ $tester.cycle
114
+ end
115
+
116
+ ss 'Test looping, these vectors should be executed 3 times'
117
+ $tester.loop_vector('test_loop_2', 3) do
118
+ $nvm.pins(:porta).drive(0xAA)
119
+ $tester.cycle
120
+ $nvm.pins(:porta).drive(0x55)
121
+ $tester.cycle
122
+ end
123
+
124
+ ss 'Test looping with label first, these vectors should be executed 3 times'
125
+ $tester.loop_vector('test_loop_2', 3, false, true) do
126
+ $nvm.pins(:porta).drive(0xAA)
127
+ $tester.cycle
128
+ $nvm.pins(:porta).drive(0x55)
129
+ $tester.cycle
130
+ end
131
+ end
132
+
133
+ ss 'Test repeat_previous'
134
+ $tester.cycle
135
+ cc 'Invoke should repeat previous for 10 cycles'
136
+ $nvm.pin(:invoke).repeat_previous = true
137
+ 10.cycles
138
+ $nvm.pin(:invoke).repeat_previous = false
139
+ cc 'All pins should repeat previous for 10 cycles, except the clk pin'
140
+ $tester.repeat_previous do
141
+ $nvm.pin(:clk).drive(1)
142
+ 10.cycles
143
+ end
144
+ cc 'All should return to the original state'
145
+ $tester.cycle
146
+
147
+ ss 'Test suspend compares'
148
+ $nvm.pin(:fail).assert!(1)
149
+ cc 'The fail pin should not be compared on these vectors'
150
+ $tester.ignore_fails($nvm.pin(:fail)) do
151
+ 10.cycles
152
+ end
153
+ cc 'And now it should'
154
+ $tester.cycle
155
+
156
+ ss 'Test inhibit vectors and comments'
157
+ cc 'The invoke pin should be driving high on this cycle'
158
+ $nvm.pin(:invoke).drive!(1)
159
+ cc "This should be the last thing you see until 'Inhibit complete!'"
160
+ $tester.inhibit_vectors_and_comments do
161
+ cc 'This should not be in the output file, or the following vectors'
162
+ $tester.cycle
163
+ $nvm.pin(:invoke).drive!(0)
164
+ 10.cycles
165
+ end
166
+ cc 'Inhibit complete!'
167
+ cc 'The invoke pin should be driving low on this cycle'
168
+ $tester.cycle
169
+
170
+ if $tester.respond_to?('memory_test')
171
+ ss 'Test memory test pin states'
172
+ $nvm.pin(:invoke).drive_mem
173
+ $tester.cycle
174
+ $nvm.pin(:invoke).drive_mem!
175
+ $nvm.pin(:invoke).expect_mem
176
+ $tester.cycle
177
+ $nvm.pin(:invoke).expect_mem!
178
+ $nvm.pin(:invoke).drive!(0)
179
+
180
+ unless $tester.respond_to?('hpt_mode')
181
+ ss 'Test memory test port states'
182
+ $nvm.pins(:porta).drive_mem
183
+ $tester.cycle
184
+ $nvm.pins(:porta).drive_mem!
185
+ $nvm.pins(:porta).expect_mem
186
+ $tester.cycle
187
+ $nvm.pins(:porta).expect_mem!
188
+ $nvm.pins(:porta).drive!(0x0)
189
+ end
190
+ end
191
+
192
+ ss 'Test that long repeats are broken down to < 65k repeats'
193
+ $nvm.pin(:invoke).drive(1)
194
+ Origen.tester.cycle(:repeat => 240000)
195
+
196
+ ss 'Test that long repeats do not compress to > 65k repeats'
197
+ $nvm.pin(:invoke).drive(0)
198
+ Origen.tester.cycle(:repeat => 60000)
199
+ Origen.tester.cycle(:repeat => 60000)
200
+ Origen.tester.cycle(:repeat => 60000)
201
+ Origen.tester.cycle(:repeat => 60000)
202
+
203
+ ss 'Test real life case where dont compress was ignored'
204
+ tester.label("my_label_1")
205
+ $nvm.pins(:porta).drive(0x55)
206
+ tester.cycle(dont_compress: true)
207
+ tester.cycle(repeat: 200)
208
+ $nvm.pins(:porta).drive!(0)
209
+ end