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,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
@@ -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
@@ -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
@@ -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 global label for overlay', overlay: {overlay_str: 'label_test', pins: dut.pin(:pa)}
50
- tester.cycle inline_comment: '2nd line after global label for overlay', overlay: {overlay_str: 'label_test', pins: dut.pin(:pa)}
51
- tester.cycle inline_comment: '3rd line after global label for overlay', overlay: {overlay_str: 'label_test', pins: dut.pin(:pa)}
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