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,76 +1,76 @@
1
- module OrigenTesters
2
- module Test
3
- class DUT2
4
- include Origen::TopLevel
5
-
6
- def initialize
7
- add_pin :reset, reset: :drive_hi, name: 'nvm_reset'
8
- add_pin :clk, reset: :drive_hi, name: 'nvm_clk'
9
- add_pin :clk_mux, reset: :drive_hi, name: 'nvm_clk_mux'
10
- add_pin :porta, reset: :drive_lo, size: 8
11
- add_pin :portb, reset: :drive_lo, size: 8, endian: :little
12
- add_pin :invoke, reset: :drive_lo, name: 'nvm_invoke'
13
- add_pin :done, reset: :expect_hi, name: 'nvm_done'
14
- add_pin :fail, reset: :expect_lo, name: 'nvm_fail'
15
- add_pin :alvtst, reset: :dont_care, name: 'nvm_alvtst'
16
- add_pin :ahvtst, reset: :dont_care, name: 'nvm_ahvtst'
17
- add_pin :dtst, reset: :dont_care, name: 'nvm_dtst'
18
-
19
- add_pin :tclk, reset: :drive_lo
20
- add_pin :trst, reset: :drive_hi
21
-
22
- add_pin_alias :extal, :clk
23
- add_pin_alias :extal_mux, :clk_mux
24
- add_pin_alias :tms, :done
25
- add_pin_alias :tdo, :fail
26
- add_pin_alias :tdi, :invoke
27
- add_pin_alias :resetb, :ahvtst
28
-
29
- add_pin_alias :pa5, :porta, pin: 5
30
- add_pin_alias :pa_lower, :porta, pins: [3..0]
31
- add_pin_alias :pa_upper, :porta, pins: [7, 6, 5, 4]
32
- add_pin_alias :porta_alias, :porta
33
- end
34
-
35
- def startup(options)
36
- if options[:add_additional_pins]
37
- add_pin :late_added_pin, reset: :drive_hi
38
- else
39
- # Test that rendering some vectors from a template works...
40
- if $tester.is_a?(J750)
41
- $tester.render("#{Origen.root}/pattern/nvm/j750/_mode_entry.atp.erb", hold_cycles: 5)
42
- end
43
- end
44
- $tester.set_timeset('nvmbist', 40) if $tester.is_vector_based?
45
- end
46
-
47
- def has_margin0_bug?
48
- false
49
- end
50
-
51
- def write_register(reg, options = {})
52
- reg
53
- end
54
-
55
- def read_register(reg, options = {})
56
- reg
57
- end
58
-
59
- def base_address(reg, options = {})
60
- if reg.owned_by?(:nvm)
61
- 0x4000_0000
62
- else
63
- 0
64
- end
65
- end
66
-
67
- def origen_dot_root
68
- Origen.root
69
- end
70
-
71
- def origen_dot_root!
72
- Origen.root!
73
- end
74
- end
75
- end
76
- end
1
+ module OrigenTesters
2
+ module Test
3
+ class DUT2
4
+ include Origen::TopLevel
5
+
6
+ def initialize
7
+ add_pin :reset, reset: :drive_hi, name: 'nvm_reset'
8
+ add_pin :clk, reset: :drive_hi, name: 'nvm_clk'
9
+ add_pin :clk_mux, reset: :drive_hi, name: 'nvm_clk_mux'
10
+ add_pin :porta, reset: :drive_lo, size: 8
11
+ add_pin :portb, reset: :drive_lo, size: 8, endian: :little
12
+ add_pin :invoke, reset: :drive_lo, name: 'nvm_invoke'
13
+ add_pin :done, reset: :expect_hi, name: 'nvm_done'
14
+ add_pin :fail, reset: :expect_lo, name: 'nvm_fail'
15
+ add_pin :alvtst, reset: :dont_care, name: 'nvm_alvtst'
16
+ add_pin :ahvtst, reset: :dont_care, name: 'nvm_ahvtst'
17
+ add_pin :dtst, reset: :dont_care, name: 'nvm_dtst'
18
+
19
+ add_pin :tclk, reset: :drive_lo
20
+ add_pin :trst, reset: :drive_hi
21
+
22
+ add_pin_alias :extal, :clk
23
+ add_pin_alias :extal_mux, :clk_mux
24
+ add_pin_alias :tms, :done
25
+ add_pin_alias :tdo, :fail
26
+ add_pin_alias :tdi, :invoke
27
+ add_pin_alias :resetb, :ahvtst
28
+
29
+ add_pin_alias :pa5, :porta, pin: 5
30
+ add_pin_alias :pa_lower, :porta, pins: [3..0]
31
+ add_pin_alias :pa_upper, :porta, pins: [7, 6, 5, 4]
32
+ add_pin_alias :porta_alias, :porta
33
+ end
34
+
35
+ def startup(options)
36
+ if options[:add_additional_pins]
37
+ add_pin :late_added_pin, reset: :drive_hi
38
+ else
39
+ # Test that rendering some vectors from a template works...
40
+ if $tester.is_a?(J750)
41
+ $tester.render("#{Origen.root}/pattern/nvm/j750/_mode_entry.atp.erb", hold_cycles: 5)
42
+ end
43
+ end
44
+ $tester.set_timeset('nvmbist', 40) if $tester.is_vector_based?
45
+ end
46
+
47
+ def has_margin0_bug?
48
+ false
49
+ end
50
+
51
+ def write_register(reg, options = {})
52
+ reg
53
+ end
54
+
55
+ def read_register(reg, options = {})
56
+ reg
57
+ end
58
+
59
+ def base_address(reg, options = {})
60
+ if reg.owned_by?(:nvm)
61
+ 0x4000_0000
62
+ else
63
+ 0
64
+ end
65
+ end
66
+
67
+ def origen_dot_root
68
+ Origen.root
69
+ end
70
+
71
+ def origen_dot_root!
72
+ Origen.root!
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,244 +1,244 @@
1
- module OrigenTesters
2
- module Test
3
- class DUT3
4
- # Simple DUT using Nexus interface
5
-
6
- attr_accessor :blocks
7
- attr_accessor :hv_supply_pin
8
- attr_accessor :lv_supply_pin
9
- attr_accessor :digsrc_pins
10
- attr_accessor :digcap_pins
11
- attr_accessor :digsrc_settings
12
- attr_accessor :digcap_settings
13
-
14
- include OrigenARMDebug
15
- include Origen::TopLevel
16
- include OrigenJTAG
17
-
18
- def initialize(options = {})
19
- add_pin :tclk
20
- add_pin :tdi
21
- add_pin :tdo
22
- add_pin :tms
23
- add_pin :pa0
24
- add_pin :pa1
25
- add_pin :pa2
26
- add_pin_group :pa, :pa2, :pa1, :pa0
27
- add_pin_alias :tdi_a, :tdi
28
- # add_pin_group :jtag, :tdi, :tdo, :tms
29
- add_power_pin_group :vdd1
30
- add_power_pin_group :vdd2
31
- add_virtual_pin :virtual1, type: :virtual_pin
32
- add_virtual_pin :virtual2, type: :ate_ch
33
-
34
- reg :testme32, 0x007a do |reg|
35
- reg.bits 31..16, :portB
36
- reg.bits 15..8, :portA
37
- reg.bits 1, :done
38
- reg.bits 0, :enable
39
- end
40
- @blocks = [Block.new(0, self), Block.new(1, self), Block.new(2, self)]
41
- end
42
-
43
- def startup(options)
44
- $tester.set_timeset('tp0', 60)
45
- end
46
-
47
- def write_register(reg, options = {})
48
- arm_debug.write_register(reg, options)
49
- end
50
-
51
- def read_register(reg, options = {})
52
- arm_debug.write_register(reg, options)
53
- end
54
-
55
- def execute(options = {})
56
- options = { define: false, # whether to define subr or call it
57
- name: 'executefunc1',
58
- onemodsub: false # whether to expects subr to be in single module
59
- }.merge(options)
60
-
61
- if options[:define]
62
- # define subroutine
63
- $tester.start_subroutine(options[:name], onemodsub: options[:onemodsub])
64
- $tester.cycle
65
- $tester.end_subroutine(onemodsub: options[:onemodsub])
66
- $tester.cycle unless options[:onemodsub]
67
- else
68
- # call subroutine
69
- $tester.cycle
70
- $tester.call_subroutine(options[:name])
71
- $tester.cycle
72
- end
73
- end
74
-
75
- # Match loop functionality
76
- def match(options = {})
77
- options = { type: :match_pin, # whether to match DONE bit in register or match pin
78
- # :match_done
79
- # :match_2pins
80
- delay_in_us: 5, # match loop delay
81
- define: false, # whether to define subr or call it
82
- subr_name: false, # default use match type as subr name
83
- }.merge(options)
84
-
85
- subr_name = options[:subr_name] ? options[:subr_name] : options[:type].to_s
86
-
87
- if options[:define]
88
- $tester.start_subroutine(subr_name)
89
- $tester.cycle
90
- if options[:type] == :match_done
91
-
92
- # Match DONE bit in register
93
- $tester.wait(match: true,
94
- time_in_us: options[:delay_in_us],
95
- global_loops: true,
96
- check_for_fails: true,
97
- force_fail_on_timeout: true,
98
- clr_fail_post_match: true,
99
- manual_stop: true) do
100
- # Match on reading done bit
101
- reg(:testme32).bits(:done).write(1)
102
- reg(:testme32).bits(:done).read!
103
- end
104
- elsif options[:type] == :match_pin
105
- # Match on TDO pin state
106
- $tester.wait(match: true,
107
- pin: pin(:tdo),
108
- state: :high,
109
- time_in_us: options[:delay_in_us],
110
- global_loops: true,
111
- check_for_fails: true,
112
- force_fail_on_timeout: true,
113
- clr_fail_post_match: true,
114
- manual_stop: true)
115
- elsif options[:type] == :match_2pins
116
- # Match on TDO pin state
117
- $tester.wait(match: true,
118
- pin: pin(:tdo),
119
- state: :high,
120
- pin2: pin(:tms),
121
- state2: :high,
122
- time_in_us: options[:delay_in_us],
123
- global_loops: true,
124
- check_for_fails: true,
125
- force_fail_on_timeout: true,
126
- clr_fail_post_match: true,
127
- manual_stop: true)
128
- elsif options[:type] == :multiple_entries
129
- # Match on TDO pin state, with multiple subr entry points
130
- $tester.wait(match: true,
131
- pin: pin(:tdo),
132
- state: :high,
133
- time_in_us: options[:delay_in_us],
134
- global_loops: true,
135
- multiple_entries: true,
136
- check_for_fails: true,
137
- force_fail_on_timeout: true,
138
- clr_fail_post_match: true,
139
- manual_stop: true)
140
- end
141
- $tester.cycle
142
- $tester.end_subroutine
143
- $tester.cycle
144
- else
145
- # call subroutine
146
- $tester.cycle
147
- $tester.call_subroutine(subr_name)
148
- $tester.cycle
149
- end
150
- end
151
-
152
- def handshake(options = {})
153
- options = {
154
- define: false, # whether to define subr or call it
155
- }.merge(options)
156
-
157
- if options[:define]
158
- $tester.start_subroutine('handshake')
159
- $tester.handshake(readcode: 100)
160
- $tester.cycle
161
- $tester.cycle
162
- $tester.cycle
163
- $tester.end_subroutine
164
- else
165
- $tester.cycle
166
- $tester.call_subroutine('handshake')
167
- end
168
- end
169
-
170
- def digsrc_overlay(options = {})
171
- options = { define: false, # whether to define subr or call it
172
- subr_name: false, # default use match type as subr name
173
- digsrc_pins: @digsrc_pins, # defaults to what's defined in $dut
174
- overlay_reg: nil, # defaults to testme32 register
175
- overlay_cycle_num: 32, # Only needed if overlay_reg is NOT nil, this specificies how many clk cycles to overlay.
176
- }.merge(options)
177
- if options[:define]
178
- $tester.start_subroutine(options[:subr_name]) # Start subroutine
179
- digsrc_pins = $tester.assign_digsrc_pins(options[:digsrc_pins])
180
- $tester.digsrc_start(digsrc_pins, dssc_mode: :single)
181
- original_pin_states = {}
182
- digsrc_pins.each do |pin|
183
- original_pin_states.merge!(pin => pin(pin).data)
184
- pin(pin).drive_mem
185
- end
186
- if options[:overlay_reg].nil?
187
- options[:overlay_cycle_num].times do
188
- $tester.digsrc_send(digsrc_pins)
189
- $tester.cycle
190
- end
191
- else
192
- $tester.dont_compress = true
193
- options[:overlay_reg].size.times do
194
- $tester.digsrc_send(digsrc_pins)
195
- $tester.cycle
196
- end
197
- end
198
- original_pin_states.each do |pin, state|
199
- pin(pin).drive(state)
200
- end
201
- $tester.digsrc_stop(digsrc_pins)
202
- $tester.cycle
203
- $tester.end_subroutine # end subroutine
204
- else
205
- $tester.cycle
206
- $tester.call_subroutine(options[:subr_name])
207
- end
208
- end
209
-
210
- def memory_test(options = {})
211
- options = {
212
- }.merge(options)
213
-
214
- $tester.memory_test(inc_counter_x: true, gen_vector: true)
215
-
216
- $tester.memory_test(inc_counter_y: true, gen_vector: true)
217
-
218
- $tester.memory_test(init_counter_x: true)
219
-
220
- $tester.memory_test(inc_counter_x: true, init_counter_y: true)
221
-
222
- $tester.memory_test(inc_counter_y: true, capture_vector: true)
223
-
224
- $tester.memory_test(pin: pin(:tdo), pin_data: :expect)
225
- end
226
-
227
- def freq_count(options = {})
228
- options = {
229
- }.merge(options)
230
-
231
- $tester.freq_count($dut.pin(:tdo), readcode: 73)
232
- end
233
-
234
- # dummy flag to check for a particular design bug for this DUT
235
- def has_margin0_bug?
236
- false
237
- end
238
-
239
- def find_block_by_id(id)
240
- @blocks.find { |block| block.id == id }
241
- end
242
- end
243
- end
244
- end
1
+ module OrigenTesters
2
+ module Test
3
+ class DUT3
4
+ # Simple DUT using Nexus interface
5
+
6
+ attr_accessor :blocks
7
+ attr_accessor :hv_supply_pin
8
+ attr_accessor :lv_supply_pin
9
+ attr_accessor :digsrc_pins
10
+ attr_accessor :digcap_pins
11
+ attr_accessor :digsrc_settings
12
+ attr_accessor :digcap_settings
13
+
14
+ include OrigenARMDebug
15
+ include Origen::TopLevel
16
+ include OrigenJTAG
17
+
18
+ def initialize(options = {})
19
+ add_pin :tclk
20
+ add_pin :tdi
21
+ add_pin :tdo
22
+ add_pin :tms
23
+ add_pin :pa0
24
+ add_pin :pa1
25
+ add_pin :pa2
26
+ add_pin_group :pa, :pa2, :pa1, :pa0
27
+ add_pin_alias :tdi_a, :tdi
28
+ # add_pin_group :jtag, :tdi, :tdo, :tms
29
+ add_power_pin_group :vdd1
30
+ add_power_pin_group :vdd2
31
+ add_virtual_pin :virtual1, type: :virtual_pin
32
+ add_virtual_pin :virtual2, type: :ate_ch
33
+
34
+ reg :testme32, 0x007a do |reg|
35
+ reg.bits 31..16, :portB
36
+ reg.bits 15..8, :portA
37
+ reg.bits 1, :done
38
+ reg.bits 0, :enable
39
+ end
40
+ @blocks = [Block.new(0, self), Block.new(1, self), Block.new(2, self)]
41
+ end
42
+
43
+ def startup(options)
44
+ $tester.set_timeset('tp0', 60)
45
+ end
46
+
47
+ def write_register(reg, options = {})
48
+ arm_debug.write_register(reg, options)
49
+ end
50
+
51
+ def read_register(reg, options = {})
52
+ arm_debug.write_register(reg, options)
53
+ end
54
+
55
+ def execute(options = {})
56
+ options = { define: false, # whether to define subr or call it
57
+ name: 'executefunc1',
58
+ onemodsub: false # whether to expects subr to be in single module
59
+ }.merge(options)
60
+
61
+ if options[:define]
62
+ # define subroutine
63
+ $tester.start_subroutine(options[:name], onemodsub: options[:onemodsub])
64
+ $tester.cycle
65
+ $tester.end_subroutine(onemodsub: options[:onemodsub])
66
+ $tester.cycle unless options[:onemodsub]
67
+ else
68
+ # call subroutine
69
+ $tester.cycle
70
+ $tester.call_subroutine(options[:name])
71
+ $tester.cycle
72
+ end
73
+ end
74
+
75
+ # Match loop functionality
76
+ def match(options = {})
77
+ options = { type: :match_pin, # whether to match DONE bit in register or match pin
78
+ # :match_done
79
+ # :match_2pins
80
+ delay_in_us: 5, # match loop delay
81
+ define: false, # whether to define subr or call it
82
+ subr_name: false, # default use match type as subr name
83
+ }.merge(options)
84
+
85
+ subr_name = options[:subr_name] ? options[:subr_name] : options[:type].to_s
86
+
87
+ if options[:define]
88
+ $tester.start_subroutine(subr_name)
89
+ $tester.cycle
90
+ if options[:type] == :match_done
91
+
92
+ # Match DONE bit in register
93
+ $tester.wait(match: true,
94
+ time_in_us: options[:delay_in_us],
95
+ global_loops: true,
96
+ check_for_fails: true,
97
+ force_fail_on_timeout: true,
98
+ clr_fail_post_match: true,
99
+ manual_stop: true) do
100
+ # Match on reading done bit
101
+ reg(:testme32).bits(:done).write(1)
102
+ reg(:testme32).bits(:done).read!
103
+ end
104
+ elsif options[:type] == :match_pin
105
+ # Match on TDO pin state
106
+ $tester.wait(match: true,
107
+ pin: pin(:tdo),
108
+ state: :high,
109
+ time_in_us: options[:delay_in_us],
110
+ global_loops: true,
111
+ check_for_fails: true,
112
+ force_fail_on_timeout: true,
113
+ clr_fail_post_match: true,
114
+ manual_stop: true)
115
+ elsif options[:type] == :match_2pins
116
+ # Match on TDO pin state
117
+ $tester.wait(match: true,
118
+ pin: pin(:tdo),
119
+ state: :high,
120
+ pin2: pin(:tms),
121
+ state2: :high,
122
+ time_in_us: options[:delay_in_us],
123
+ global_loops: true,
124
+ check_for_fails: true,
125
+ force_fail_on_timeout: true,
126
+ clr_fail_post_match: true,
127
+ manual_stop: true)
128
+ elsif options[:type] == :multiple_entries
129
+ # Match on TDO pin state, with multiple subr entry points
130
+ $tester.wait(match: true,
131
+ pin: pin(:tdo),
132
+ state: :high,
133
+ time_in_us: options[:delay_in_us],
134
+ global_loops: true,
135
+ multiple_entries: true,
136
+ check_for_fails: true,
137
+ force_fail_on_timeout: true,
138
+ clr_fail_post_match: true,
139
+ manual_stop: true)
140
+ end
141
+ $tester.cycle
142
+ $tester.end_subroutine
143
+ $tester.cycle
144
+ else
145
+ # call subroutine
146
+ $tester.cycle
147
+ $tester.call_subroutine(subr_name)
148
+ $tester.cycle
149
+ end
150
+ end
151
+
152
+ def handshake(options = {})
153
+ options = {
154
+ define: false, # whether to define subr or call it
155
+ }.merge(options)
156
+
157
+ if options[:define]
158
+ $tester.start_subroutine('handshake')
159
+ $tester.handshake(readcode: 100)
160
+ $tester.cycle
161
+ $tester.cycle
162
+ $tester.cycle
163
+ $tester.end_subroutine
164
+ else
165
+ $tester.cycle
166
+ $tester.call_subroutine('handshake')
167
+ end
168
+ end
169
+
170
+ def digsrc_overlay(options = {})
171
+ options = { define: false, # whether to define subr or call it
172
+ subr_name: false, # default use match type as subr name
173
+ digsrc_pins: @digsrc_pins, # defaults to what's defined in $dut
174
+ overlay_reg: nil, # defaults to testme32 register
175
+ overlay_cycle_num: 32, # Only needed if overlay_reg is NOT nil, this specificies how many clk cycles to overlay.
176
+ }.merge(options)
177
+ if options[:define]
178
+ $tester.start_subroutine(options[:subr_name]) # Start subroutine
179
+ digsrc_pins = $tester.assign_digsrc_pins(options[:digsrc_pins])
180
+ $tester.digsrc_start(digsrc_pins, dssc_mode: :single)
181
+ original_pin_states = {}
182
+ digsrc_pins.each do |pin|
183
+ original_pin_states.merge!(pin => pin(pin).data)
184
+ pin(pin).drive_mem
185
+ end
186
+ if options[:overlay_reg].nil?
187
+ options[:overlay_cycle_num].times do
188
+ $tester.digsrc_send(digsrc_pins)
189
+ $tester.cycle
190
+ end
191
+ else
192
+ $tester.dont_compress = true
193
+ options[:overlay_reg].size.times do
194
+ $tester.digsrc_send(digsrc_pins)
195
+ $tester.cycle
196
+ end
197
+ end
198
+ original_pin_states.each do |pin, state|
199
+ pin(pin).drive(state)
200
+ end
201
+ $tester.digsrc_stop(digsrc_pins)
202
+ $tester.cycle
203
+ $tester.end_subroutine # end subroutine
204
+ else
205
+ $tester.cycle
206
+ $tester.call_subroutine(options[:subr_name])
207
+ end
208
+ end
209
+
210
+ def memory_test(options = {})
211
+ options = {
212
+ }.merge(options)
213
+
214
+ $tester.memory_test(inc_counter_x: true, gen_vector: true)
215
+
216
+ $tester.memory_test(inc_counter_y: true, gen_vector: true)
217
+
218
+ $tester.memory_test(init_counter_x: true)
219
+
220
+ $tester.memory_test(inc_counter_x: true, init_counter_y: true)
221
+
222
+ $tester.memory_test(inc_counter_y: true, capture_vector: true)
223
+
224
+ $tester.memory_test(pin: pin(:tdo), pin_data: :expect)
225
+ end
226
+
227
+ def freq_count(options = {})
228
+ options = {
229
+ }.merge(options)
230
+
231
+ $tester.freq_count($dut.pin(:tdo), readcode: 73)
232
+ end
233
+
234
+ # dummy flag to check for a particular design bug for this DUT
235
+ def has_margin0_bug?
236
+ false
237
+ end
238
+
239
+ def find_block_by_id(id)
240
+ @blocks.find { |block| block.id == id }
241
+ end
242
+ end
243
+ end
244
+ end