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,77 +1,77 @@
1
- module OrigenTesters
2
- class MemoryStyle
3
- attr_reader :pin_id, :size, :bit_order, :format, :trigger, :mode, :data_type
4
-
5
- def initialize
6
- @pin_id = []
7
- @size = []
8
- @bit_order = []
9
- @format = []
10
- @trigger = []
11
- @mode = []
12
- @data_type = []
13
- end
14
-
15
- # Set memory style attributes for the given pin
16
- #
17
- # @example
18
- # mem.pin :tdi, size: 8, trigger: :auto
19
- def pin(*pin_ids)
20
- options = pin_ids.last.is_a?(Hash) ? pin_ids.pop : {}
21
- pin_ids.each_index do |i|
22
- if pin_ids[i].is_a?(Symbol)
23
- pin_ids[i] = dut.pin(pin_ids[i]).name
24
- else
25
- pin_ids[i] = pin_ids[i].name
26
- end
27
- end
28
- @pin_id << pin_ids
29
- @size << options[:size]
30
- @bit_order << options[:bit_order]
31
- @format << options[:format]
32
- @trigger << options[:trigger]
33
- @mode << options[:mode]
34
- @data_type << options[:data_type]
35
- end
36
-
37
- # Get the chronologically last setting for the given pin's attributes
38
- #
39
- # @example
40
- # mem.pin :tdi, size: 1
41
- # mem.pin :tdi, size: 2
42
- #
43
- # my_local_attribute_hash = mem.accumulate_attributes(:tdi)
44
- # # my_local_attribute_hash now is
45
- # # {pin_id: :tdi, size: 2, bit_order: nil, format: nil, trigger: nil}
46
- def accumulate_attributes(pin_id)
47
- a = { pin_id: pin_id }
48
- @pin_id.each_index do |i|
49
- if @pin_id[i].include?(pin_id)
50
- a[:size] = @size[i]
51
- a[:bit_order] = @bit_order[i]
52
- a[:format] = @format[i]
53
- a[:trigger] = @trigger[i]
54
- a[:mode] = @mode[i]
55
- a[:data_type] = @data_type[i]
56
- end
57
- end
58
- a
59
- end
60
-
61
- # Check to see if a given pin exists in this style container
62
- def contains_pin?(pin_id)
63
- contained_pins.include?(pin_id)
64
- end
65
-
66
- # Get an array of pins contained in this style container
67
- def contained_pins
68
- pins = []
69
- @pin_id.each do |a|
70
- a.each do |p|
71
- pins << p
72
- end
73
- end
74
- pins.uniq
75
- end
76
- end
77
- end
1
+ module OrigenTesters
2
+ class MemoryStyle
3
+ attr_reader :pin_id, :size, :bit_order, :format, :trigger, :mode, :data_type
4
+
5
+ def initialize
6
+ @pin_id = []
7
+ @size = []
8
+ @bit_order = []
9
+ @format = []
10
+ @trigger = []
11
+ @mode = []
12
+ @data_type = []
13
+ end
14
+
15
+ # Set memory style attributes for the given pin
16
+ #
17
+ # @example
18
+ # mem.pin :tdi, size: 8, trigger: :auto
19
+ def pin(*pin_ids)
20
+ options = pin_ids.last.is_a?(Hash) ? pin_ids.pop : {}
21
+ pin_ids.each_index do |i|
22
+ if pin_ids[i].is_a?(Symbol)
23
+ pin_ids[i] = dut.pin(pin_ids[i]).name
24
+ else
25
+ pin_ids[i] = pin_ids[i].name
26
+ end
27
+ end
28
+ @pin_id << pin_ids
29
+ @size << options[:size]
30
+ @bit_order << options[:bit_order]
31
+ @format << options[:format]
32
+ @trigger << options[:trigger]
33
+ @mode << options[:mode]
34
+ @data_type << options[:data_type]
35
+ end
36
+
37
+ # Get the chronologically last setting for the given pin's attributes
38
+ #
39
+ # @example
40
+ # mem.pin :tdi, size: 1
41
+ # mem.pin :tdi, size: 2
42
+ #
43
+ # my_local_attribute_hash = mem.accumulate_attributes(:tdi)
44
+ # # my_local_attribute_hash now is
45
+ # # {pin_id: :tdi, size: 2, bit_order: nil, format: nil, trigger: nil}
46
+ def accumulate_attributes(pin_id)
47
+ a = { pin_id: pin_id }
48
+ @pin_id.each_index do |i|
49
+ if @pin_id[i].include?(pin_id)
50
+ a[:size] = @size[i]
51
+ a[:bit_order] = @bit_order[i]
52
+ a[:format] = @format[i]
53
+ a[:trigger] = @trigger[i]
54
+ a[:mode] = @mode[i]
55
+ a[:data_type] = @data_type[i]
56
+ end
57
+ end
58
+ a
59
+ end
60
+
61
+ # Check to see if a given pin exists in this style container
62
+ def contains_pin?(pin_id)
63
+ contained_pins.include?(pin_id)
64
+ end
65
+
66
+ # Get an array of pins contained in this style container
67
+ def contained_pins
68
+ pins = []
69
+ @pin_id.each do |a|
70
+ a.each do |p|
71
+ pins << p
72
+ end
73
+ end
74
+ pins.uniq
75
+ end
76
+ end
77
+ end
@@ -1,7 +1,7 @@
1
- module OrigenTesters
2
- # Origen will instantiate this interface if the application doesn't define one,
3
- # this allows test flows to be generated only
4
- class NoInterface
5
- include OrigenTesters::ProgramGenerators
6
- end
7
- end
1
+ module OrigenTesters
2
+ # Origen will instantiate this interface if the application doesn't define one,
3
+ # this allows test flows to be generated only
4
+ class NoInterface
5
+ include OrigenTesters::ProgramGenerators
6
+ end
7
+ end
@@ -1,25 +1,25 @@
1
- # This shim is temporary to help NXP transition to Origen from
2
- # our original internal version (RGen)
3
- if defined? RGen::ORIGENTRANSITION
4
- require 'rgen/application/runner'
5
- else
6
- require 'origen/application/runner'
7
- end
8
- module Origen
9
- class Application
10
- class Runner
11
- alias_method :orig_launch, :launch
12
- # Patch this to allow write: false to be given as an option when
13
- # generating a test program. When supplied and set to false, the program
14
- # output files will not be written and only a flow model will be generated.
15
- def launch(options = {})
16
- if options.key?(:write)
17
- OrigenTesters::Interface.write = options[:write]
18
- else
19
- OrigenTesters::Interface.write = true
20
- end
21
- orig_launch(options)
22
- end
23
- end
24
- end
25
- end
1
+ # This shim is temporary to help NXP transition to Origen from
2
+ # our original internal version (RGen)
3
+ if defined? RGen::ORIGENTRANSITION
4
+ require 'rgen/application/runner'
5
+ else
6
+ require 'origen/application/runner'
7
+ end
8
+ module Origen
9
+ class Application
10
+ class Runner
11
+ alias_method :orig_launch, :launch
12
+ # Patch this to allow write: false to be given as an option when
13
+ # generating a test program. When supplied and set to false, the program
14
+ # output files will not be written and only a flow model will be generated.
15
+ def launch(options = {})
16
+ if options.key?(:write)
17
+ OrigenTesters::Interface.write = options[:write]
18
+ else
19
+ OrigenTesters::Interface.write = true
20
+ end
21
+ orig_launch(options)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,54 +1,54 @@
1
- # This shim is temporary to help NXP transition to Origen from
2
- # our original internal version (RGen)
3
- if defined? RGen::ORIGENTRANSITION
4
- require 'rgen/generator'
5
- else
6
- require 'origen/generator'
7
- end
8
- module Origen
9
- class Generator
10
- include Comparator
11
-
12
- # Makes more sense for this plugin to own this method now
13
- def generate_program(file, options)
14
- Origen.file_handler.resolve_files(file, ignore_with_prefix: '_', default_dir: "#{Origen.root}/program") do |path|
15
- Origen.file_handler.current_file = path
16
- j = Job.new(path, options)
17
- j.pattern = path
18
- j.run
19
- end
20
- Origen.interface.write_files(options)
21
- unless options[:quiet] || !Origen.interface.write?
22
- if options[:referenced_pattern_list]
23
- file = "#{Origen.root}/list/#{options[:referenced_pattern_list]}"
24
- else
25
- file = Origen.config.referenced_pattern_list
26
- end
27
- puts "Referenced pattern list written to: #{Pathname.new(file).relative_path_from(Pathname.pwd)}"
28
- dir = Pathname.new(file).dirname
29
- FileUtils.mkdir_p(dir) unless dir.exist?
30
- File.open(file, 'w') do |f|
31
- pats = Origen.interface.all_pattern_references.map do |name, refs|
32
- refs[:main][:all] + refs[:main][:origen]
33
- end.flatten.uniq.sort
34
- unless pats.empty?
35
- f.puts '# Main patterns'
36
- pats.each { |p| f.puts p }
37
- f.puts
38
- end
39
-
40
- pats = Origen.interface.all_pattern_references.map do |name, refs|
41
- refs[:subroutine][:all] + refs[:subroutine][:origen]
42
- end.flatten.uniq.sort
43
- unless pats.empty?
44
- f.puts '# Subroutine patterns'
45
- pats.each { |p| f.puts p }
46
- end
47
- end
48
- ref_file = File.join(Origen.file_handler.reference_directory, Pathname.new(file).basename)
49
- check_for_changes(file, ref_file)
50
- end
51
- Origen.interface.on_program_completion(options)
52
- end
53
- end
54
- end
1
+ # This shim is temporary to help NXP transition to Origen from
2
+ # our original internal version (RGen)
3
+ if defined? RGen::ORIGENTRANSITION
4
+ require 'rgen/generator'
5
+ else
6
+ require 'origen/generator'
7
+ end
8
+ module Origen
9
+ class Generator
10
+ include Comparator
11
+
12
+ # Makes more sense for this plugin to own this method now
13
+ def generate_program(file, options)
14
+ Origen.file_handler.resolve_files(file, ignore_with_prefix: '_', default_dir: "#{Origen.root}/program") do |path|
15
+ Origen.file_handler.current_file = path
16
+ j = Job.new(path, options)
17
+ j.pattern = path
18
+ j.run
19
+ end
20
+ Origen.interface.write_files(options)
21
+ unless options[:quiet] || !Origen.interface.write?
22
+ if options[:referenced_pattern_list]
23
+ file = "#{Origen.root}/list/#{options[:referenced_pattern_list]}"
24
+ else
25
+ file = Origen.config.referenced_pattern_list
26
+ end
27
+ puts "Referenced pattern list written to: #{Pathname.new(file).relative_path_from(Pathname.pwd)}"
28
+ dir = Pathname.new(file).dirname
29
+ FileUtils.mkdir_p(dir) unless dir.exist?
30
+ File.open(file, 'w') do |f|
31
+ pats = Origen.interface.all_pattern_references.map do |name, refs|
32
+ refs[:main][:all] + refs[:main][:origen]
33
+ end.flatten.uniq.sort
34
+ unless pats.empty?
35
+ f.puts '# Main patterns'
36
+ pats.each { |p| f.puts p }
37
+ f.puts
38
+ end
39
+
40
+ pats = Origen.interface.all_pattern_references.map do |name, refs|
41
+ refs[:subroutine][:all] + refs[:subroutine][:origen]
42
+ end.flatten.uniq.sort
43
+ unless pats.empty?
44
+ f.puts '# Subroutine patterns'
45
+ pats.each { |p| f.puts p }
46
+ end
47
+ end
48
+ ref_file = File.join(Origen.file_handler.reference_directory, Pathname.new(file).basename)
49
+ check_for_changes(file, ref_file)
50
+ end
51
+ Origen.interface.on_program_completion(options)
52
+ end
53
+ end
54
+ end
@@ -1,77 +1,91 @@
1
- # This shim is temporary to help NXP transition to Origen from
2
- # our original internal version (RGen)
3
- if defined? RGen::ORIGENTRANSITION
4
- require 'rgen/generator/flow'
5
- else
6
- require 'origen/generator/flow'
7
- end
8
- module Origen
9
- class Generator
10
- class Flow
11
- alias_method :orig_create, :create
12
-
13
- # Create a call stack of flows so that we can work out where the nodes
14
- # of the ATP AST originated from
15
- def create(options = {}, &block)
16
- # Patch for Windows operation since the path can start with something like "C:/"
17
- if caller[0] =~ /(:(\/|\\))/
18
- orig_separator = Regexp.last_match(1)
19
- file, line = *caller[0].sub(/:(\/|\\)/, '_ORIG_SEPARATOR_').split(':')
20
- file = file.sub('_ORIG_SEPARATOR_', orig_separator)
21
- else
22
- file, line = *caller[0].split(':')
23
- end
24
- OrigenTesters::Flow.callstack << file
25
- flow_comments, comments = *_extract_comments(OrigenTesters::Flow.callstack.last, line.to_i)
26
- OrigenTesters::Flow.comment_stack << comments
27
- if OrigenTesters::Flow.flow_comments
28
- top = false
29
- name = options[:name] || Pathname.new(file).basename('.rb').to_s.sub(/^_/, '')
30
- Origen.interface.flow.group(name, description: flow_comments) do
31
- orig_create(options, &block)
32
- end
33
- else
34
- OrigenTesters::Flow.flow_comments = flow_comments
35
- if options.key?(:unique_ids)
36
- OrigenTesters::Flow.unique_ids = options.delete(:unique_ids)
37
- else
38
- OrigenTesters::Flow.unique_ids = true
39
- end
40
- top = true
41
- orig_create(options, &block)
42
- end
43
- OrigenTesters::Flow.callstack.pop
44
- OrigenTesters::Flow.comment_stack.pop
45
- OrigenTesters::Flow.flow_comments = nil if top
46
- end
47
-
48
- def _extract_comments(file, flow_line)
49
- flow_comments = []
50
- comments = {}
51
- comment = nil
52
- File.readlines(file).each_with_index do |line, i|
53
- if comment
54
- if line =~ /^\s*#-(.*)/
55
- # Nothing, just ignore but keep the comment open
56
- elsif line =~ /^\s*#(.*)/
57
- comment << Regexp.last_match(1).strip
58
- else
59
- comment = nil
60
- end
61
- else
62
- if line =~ /^\s*#[^-](.*)/
63
- if i < flow_line
64
- comment = flow_comments
65
- else
66
- comment = []
67
- comments[i + 1] = comment
68
- end
69
- comment << Regexp.last_match(1).strip
70
- end
71
- end
72
- end
73
- [flow_comments, comments]
74
- end
75
- end
76
- end
77
- end
1
+ # This shim is temporary to help NXP transition to Origen from
2
+ # our original internal version (RGen)
3
+ if defined? RGen::ORIGENTRANSITION
4
+ require 'rgen/generator/flow'
5
+ else
6
+ require 'origen/generator/flow'
7
+ end
8
+ module Origen
9
+ class Generator
10
+ class Flow
11
+ alias_method :orig_create, :create
12
+
13
+ # Create a call stack of flows so that we can work out where the nodes
14
+ # of the ATP AST originated from
15
+ def create(options = {}, &block)
16
+ # Patch for Windows operation since the path can start with something like "C:/"
17
+ if caller[0] =~ /(:(\/|\\))/
18
+ orig_separator = Regexp.last_match(1)
19
+ file, line = *caller[0].sub(/:(\/|\\)/, '_ORIG_SEPARATOR_').split(':')
20
+ file = file.sub('_ORIG_SEPARATOR_', orig_separator)
21
+ else
22
+ file, line = *caller[0].split(':')
23
+ end
24
+ OrigenTesters::Flow.callstack << file
25
+ flow_comments, comments = *_extract_comments(OrigenTesters::Flow.callstack.last, line.to_i)
26
+ OrigenTesters::Flow.comment_stack << comments
27
+ if OrigenTesters::Flow.flow_comments
28
+ top = false
29
+ name = options[:name] || Pathname.new(file).basename('.rb').to_s.sub(/^_/, '')
30
+ Origen.interface.flow.group(name, description: flow_comments) do
31
+ orig_create(options, &block)
32
+ end
33
+ else
34
+ OrigenTesters::Flow.flow_comments = flow_comments
35
+ if options.key?(:unique_ids)
36
+ OrigenTesters::Flow.unique_ids = options.delete(:unique_ids)
37
+ else
38
+ OrigenTesters::Flow.unique_ids = true
39
+ end
40
+ top = true
41
+ orig_create(options, &block)
42
+ end
43
+ OrigenTesters::Flow.callstack.pop
44
+ OrigenTesters::Flow.comment_stack.pop
45
+ OrigenTesters::Flow.flow_comments = nil if top
46
+ end
47
+
48
+ def _extract_comments(file, flow_line)
49
+ flow_comments = []
50
+ comments = {}
51
+ comment = nil
52
+ File.readlines(file).each_with_index do |line, i|
53
+ if comment
54
+ if line =~ /^\s*#-(.*)/
55
+ # Nothing, just ignore but keep the comment open
56
+ elsif line =~ /^\s*#(.*)/
57
+ comment << Regexp.last_match(1).strip
58
+ else
59
+ comment = nil
60
+ end
61
+ else
62
+ if line =~ /^\s*#[^-](.*)/
63
+ if i < flow_line
64
+ comment = flow_comments
65
+ else
66
+ comment = []
67
+ comments[i + 1] = comment
68
+ end
69
+ comment << Regexp.last_match(1).strip
70
+ end
71
+ end
72
+ end
73
+ [flow_comments, comments]
74
+ end
75
+ end
76
+ end
77
+
78
+ # Provides a hook to enable an internal startup callback to
79
+ class OrigenTestersPersistentFlowCallbackHandler
80
+ include Origen::PersistentCallbacks
81
+
82
+ def on_flow_start(options)
83
+ if Origen.interface.respond_to?(:_internal_startup)
84
+ Origen.interface._internal_startup(options)
85
+ end
86
+ end
87
+ end
88
+ # Instantiate an instance of this class immediately when this file is loaded, this object will
89
+ # then listen for the remainder of the Origen thread
90
+ OrigenTestersPersistentFlowCallbackHandler.new
91
+ end