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,79 +1,79 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class ACSpecsets
5
- include ::OrigenTesters::Generator
6
-
7
- attr_accessor :ac_specs
8
- attr_accessor :ac_specsets
9
-
10
- OUTPUT_PREFIX = 'SpecsAC'
11
- # OUTPUT_POSTFIX = 'SpecsAC'
12
-
13
- def initialize # :nodoc:
14
- ## Hash Autovivification
15
- l = ->(h, k) { h[k] = Hash.new(&l) }
16
-
17
- @ac_specs = []
18
- @ac_specsets = Hash.new(&l)
19
- end
20
-
21
- # Assigns an AC spec value object to the given variable for this specset
22
- # The attrs hash is expected to defined as follows:
23
- # attrs = {
24
- # specset: :specset_name, # if not defined, specset = :default
25
- # # Spec selectors that contain both the scope and value of the spec
26
- # nom: { typ: 1.8 }, # typ is an example of the UFlex scope, nom is the spec selector
27
- # min: { min: 1.7 }, # Users can defined any number of selectors in this fashion
28
- # max: { max: 1.9 }
29
- # }
30
- def add(spec, attrs = {})
31
- attrs = {
32
- specset: :default
33
- }.merge(attrs)
34
-
35
- specset = attrs.delete(:specset)
36
-
37
- @ac_specs << spec unless @ac_specs.include?(spec)
38
-
39
- attrs.each do |selector, value|
40
- @ac_specsets[specset][spec][selector] = value
41
- end
42
- end
43
-
44
- # Prepare the spec information for file output
45
- def format_uflex_ac_spec(data, options = {})
46
- case data
47
- when NilClass
48
- data_new = 0
49
- when Fixnum, Float
50
- case
51
- when data == 0
52
- data_new = data.to_s
53
- when data.abs < 1e-9
54
- data_new = (data * 1_000_000_000_000).round(4).to_s + '*ps'
55
- when data.abs < 1e-6
56
- data_new = (data * 1_000_000_000).round(4).to_s + '*ns'
57
- when data.abs < 1e-3
58
- data_new = (data * 1_000_000).round(4).to_s + '*us'
59
- when data.abs < 1
60
- data_new = (data * 1_000).round(4).to_s + '*ms'
61
- else
62
- data_new = data.to_s
63
- end
64
- data_new = data_new.gsub(/^/, '=')
65
- when String
66
- data_new = data.gsub(/^/, '=').gsub(/(\W)([a-zA-Z])/, '\1_\2')
67
- # Remove underscores from unit designations
68
- data_new.gsub!(/(\W)_(nS|uS|mS|S)(\W)/i, '\1\2\3')
69
- data_new.gsub!(/(\W)_(nS|uS|mS|S)$/i, '\1\2')
70
- else
71
- Origen.log.error "Unknown class type (#{data.class}) for spec value: #{data}"
72
- fail
73
- end
74
- data_new
75
- end
76
- end
77
- end
78
- end
79
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class ACSpecsets
5
+ include ::OrigenTesters::Generator
6
+
7
+ attr_accessor :ac_specs
8
+ attr_accessor :ac_specsets
9
+
10
+ OUTPUT_PREFIX = 'SpecsAC'
11
+ # OUTPUT_POSTFIX = 'SpecsAC'
12
+
13
+ def initialize # :nodoc:
14
+ ## Hash Autovivification
15
+ l = ->(h, k) { h[k] = Hash.new(&l) }
16
+
17
+ @ac_specs = []
18
+ @ac_specsets = Hash.new(&l)
19
+ end
20
+
21
+ # Assigns an AC spec value object to the given variable for this specset
22
+ # The attrs hash is expected to defined as follows:
23
+ # attrs = {
24
+ # specset: :specset_name, # if not defined, specset = :default
25
+ # # Spec selectors that contain both the scope and value of the spec
26
+ # nom: { typ: 1.8 }, # typ is an example of the UFlex scope, nom is the spec selector
27
+ # min: { min: 1.7 }, # Users can defined any number of selectors in this fashion
28
+ # max: { max: 1.9 }
29
+ # }
30
+ def add(spec, attrs = {})
31
+ attrs = {
32
+ specset: :default
33
+ }.merge(attrs)
34
+
35
+ specset = attrs.delete(:specset)
36
+
37
+ @ac_specs << spec unless @ac_specs.include?(spec)
38
+
39
+ attrs.each do |selector, value|
40
+ @ac_specsets[specset][spec][selector] = value
41
+ end
42
+ end
43
+
44
+ # Prepare the spec information for file output
45
+ def format_uflex_ac_spec(data, options = {})
46
+ case data
47
+ when NilClass
48
+ data_new = 0
49
+ when Fixnum, Float
50
+ case
51
+ when data == 0
52
+ data_new = data.to_s
53
+ when data.abs < 1e-9
54
+ data_new = (data * 1_000_000_000_000).round(4).to_s + '*ps'
55
+ when data.abs < 1e-6
56
+ data_new = (data * 1_000_000_000).round(4).to_s + '*ns'
57
+ when data.abs < 1e-3
58
+ data_new = (data * 1_000_000).round(4).to_s + '*us'
59
+ when data.abs < 1
60
+ data_new = (data * 1_000).round(4).to_s + '*ms'
61
+ else
62
+ data_new = data.to_s
63
+ end
64
+ data_new = data_new.gsub(/^/, '=')
65
+ when String
66
+ data_new = data.gsub(/^/, '=').gsub(/(\W)([a-zA-Z])/, '\1_\2')
67
+ # Remove underscores from unit designations
68
+ data_new.gsub!(/(\W)_(nS|uS|mS|S)(\W)/i, '\1\2\3')
69
+ data_new.gsub!(/(\W)_(nS|uS|mS|S)$/i, '\1\2')
70
+ else
71
+ Origen.log.error "Unknown class type (#{data.class}) for spec value: #{data}"
72
+ fail
73
+ end
74
+ data_new
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -1,169 +1,169 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class CustomTestInstance
5
- attr_accessor :type, :index, :version, :append_version, :finalize
6
-
7
- # Returns the object representing the test instance library that the
8
- # given test instance is defined in
9
- attr_reader :library
10
-
11
- def self.define
12
- # Generate accessors for all attributes and their aliases
13
- attrs.each do |attr|
14
- writer = "#{attr}=".to_sym
15
- reader = attr.to_sym
16
- attr_reader attr.to_sym unless method_defined? reader
17
- attr_writer attr.to_sym unless method_defined? writer
18
- end
19
-
20
- # Define the common aliases now, the instance type specific ones will
21
- # be created when the instance type is known
22
- self::TEST_INSTANCE_ALIASES.each do |_alias, val|
23
- writer = "#{_alias}=".to_sym
24
- reader = _alias.to_sym
25
- unless val.is_a? Hash
26
- unless method_defined? writer
27
- define_method("#{_alias}=") do |v|
28
- send("#{val}=", v)
29
- end
30
- end
31
- unless method_defined? reader
32
- define_method("#{_alias}") do
33
- send(val)
34
- end
35
- end
36
- end
37
- end
38
- end
39
-
40
- def self.attrs
41
- @attrs ||= begin
42
- attrs = self::TEST_INSTANCE_ATTRS.dup
43
-
44
- self::TEST_INSTANCE_EXTRA_ARGS.times do |i|
45
- attrs << "arg#{i}"
46
- end
47
- attrs << 'comment'
48
- attrs
49
- end
50
- end
51
-
52
- def initialize(name, options = {})
53
- @append_version = true
54
- self.name = name
55
- # Add any methods
56
- if options[:methods][:methods]
57
- methods = options[:methods][:methods]
58
- @finalize = methods[:finalize]
59
- methods.each do |method_name, function|
60
- unless method_name == :finalize
61
- var_name = "@#{method_name}".gsub(/=|\?/, '_')
62
- instance_variable_set(var_name, function)
63
- define_singleton_method method_name do |*args|
64
- instance_variable_get(var_name).call(self, *args)
65
- end
66
- end
67
- end
68
- end
69
- # Create attributes corresponding to the test method type represented
70
- # by this method instance
71
- options[:methods].each do |attr, arg_default|
72
- arg_default = [arg_default] unless arg_default.is_a?(Array)
73
- unless attr == :aliases || attr == :methods
74
- clean_attr = clean_attr_name(attr)
75
- arg = arg_default[0]
76
- default = arg_default[1]
77
- allowed = arg_default[2]
78
- aliases = [clean_attr]
79
- aliases << clean_attr.underscore if clean_attr.underscore != clean_attr
80
- aliases.each do |alias_|
81
- define_singleton_method("#{alias_}=") do |v|
82
- if allowed
83
- unless allowed.include?(v)
84
- fail "Cannot set #{alias_} to #{v}, valid values are: #{allowed.join(', ')}"
85
- end
86
- end
87
- instance_variable_set("@#{arg}", v)
88
- end
89
- define_singleton_method(alias_) do
90
- instance_variable_get("@#{arg}")
91
- end
92
- end
93
- send("#{arg}=", default)
94
- end
95
- end
96
- if options[:methods][:aliases]
97
- options[:methods][:aliases].each do |alias_, attr|
98
- clean_attr = clean_attr_name(attr)
99
- define_singleton_method("#{alias_}=") do |v|
100
- send("#{clean_attr}=", v)
101
- end
102
- define_singleton_method(alias_) do
103
- send(clean_attr)
104
- end
105
- end
106
- end
107
- # Set the defaults
108
- self.class::TEST_INSTANCE_DEFAULTS.each do |k, v|
109
- send("#{k}=", v) if self.respond_to?("#{k}=", v)
110
- end
111
- # Finally set any initial values that have been supplied
112
- options[:attrs].each do |k, v|
113
- send("#{k}=", v) if respond_to?("#{k}=")
114
- end
115
- end
116
-
117
- def ==(other_instance)
118
- self.class == other_instance.class &&
119
- unversioned_name.to_s == other_instance.unversioned_name.to_s &&
120
- self.class.attrs.all? do |attr|
121
- # Exclude test name, already examined above and don't want to include
122
- # the version in the comparison
123
- if attr == 'test_name'
124
- true
125
- else
126
- send(attr) == other_instance.send(attr)
127
- end
128
- end
129
- end
130
-
131
- # Returns the fully formatted test instance for insertion into an instance sheet
132
- def to_s(override_name = nil)
133
- l = "\t"
134
- self.class.attrs.each do |attr|
135
- if attr == 'test_name' && override_name
136
- l += "#{override_name}\t"
137
- else
138
- l += "#{send(attr)}\t"
139
- end
140
- end
141
- "#{l}"
142
- end
143
-
144
- def name
145
- if version && @append_version
146
- "#{@test_name}_v#{version}"
147
- else
148
- @test_name.to_s
149
- end
150
- end
151
- alias_method :test_name, :name
152
-
153
- def name=(val)
154
- self.test_name = val
155
- end
156
-
157
- def unversioned_name
158
- @test_name.to_s
159
- end
160
-
161
- private
162
-
163
- def clean_attr_name(name)
164
- name.to_s.gsub(/\.|-/, '_')
165
- end
166
- end
167
- end
168
- end
169
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class CustomTestInstance
5
+ attr_accessor :type, :index, :version, :append_version, :finalize
6
+
7
+ # Returns the object representing the test instance library that the
8
+ # given test instance is defined in
9
+ attr_reader :library
10
+
11
+ def self.define
12
+ # Generate accessors for all attributes and their aliases
13
+ attrs.each do |attr|
14
+ writer = "#{attr}=".to_sym
15
+ reader = attr.to_sym
16
+ attr_reader attr.to_sym unless method_defined? reader
17
+ attr_writer attr.to_sym unless method_defined? writer
18
+ end
19
+
20
+ # Define the common aliases now, the instance type specific ones will
21
+ # be created when the instance type is known
22
+ self::TEST_INSTANCE_ALIASES.each do |_alias, val|
23
+ writer = "#{_alias}=".to_sym
24
+ reader = _alias.to_sym
25
+ unless val.is_a? Hash
26
+ unless method_defined? writer
27
+ define_method("#{_alias}=") do |v|
28
+ send("#{val}=", v)
29
+ end
30
+ end
31
+ unless method_defined? reader
32
+ define_method("#{_alias}") do
33
+ send(val)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.attrs
41
+ @attrs ||= begin
42
+ attrs = self::TEST_INSTANCE_ATTRS.dup
43
+
44
+ self::TEST_INSTANCE_EXTRA_ARGS.times do |i|
45
+ attrs << "arg#{i}"
46
+ end
47
+ attrs << 'comment'
48
+ attrs
49
+ end
50
+ end
51
+
52
+ def initialize(name, options = {})
53
+ @append_version = true
54
+ self.name = name
55
+ # Add any methods
56
+ if options[:methods][:methods]
57
+ methods = options[:methods][:methods]
58
+ @finalize = methods[:finalize]
59
+ methods.each do |method_name, function|
60
+ unless method_name == :finalize
61
+ var_name = "@#{method_name}".gsub(/=|\?/, '_')
62
+ instance_variable_set(var_name, function)
63
+ define_singleton_method method_name do |*args|
64
+ instance_variable_get(var_name).call(self, *args)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ # Create attributes corresponding to the test method type represented
70
+ # by this method instance
71
+ options[:methods].each do |attr, arg_default|
72
+ arg_default = [arg_default] unless arg_default.is_a?(Array)
73
+ unless attr == :aliases || attr == :methods
74
+ clean_attr = clean_attr_name(attr)
75
+ arg = arg_default[0]
76
+ default = arg_default[1]
77
+ allowed = arg_default[2]
78
+ aliases = [clean_attr]
79
+ aliases << clean_attr.underscore if clean_attr.underscore != clean_attr
80
+ aliases.each do |alias_|
81
+ define_singleton_method("#{alias_}=") do |v|
82
+ if allowed
83
+ unless allowed.include?(v)
84
+ fail "Cannot set #{alias_} to #{v}, valid values are: #{allowed.join(', ')}"
85
+ end
86
+ end
87
+ instance_variable_set("@#{arg}", v)
88
+ end
89
+ define_singleton_method(alias_) do
90
+ instance_variable_get("@#{arg}")
91
+ end
92
+ end
93
+ send("#{arg}=", default)
94
+ end
95
+ end
96
+ if options[:methods][:aliases]
97
+ options[:methods][:aliases].each do |alias_, attr|
98
+ clean_attr = clean_attr_name(attr)
99
+ define_singleton_method("#{alias_}=") do |v|
100
+ send("#{clean_attr}=", v)
101
+ end
102
+ define_singleton_method(alias_) do
103
+ send(clean_attr)
104
+ end
105
+ end
106
+ end
107
+ # Set the defaults
108
+ self.class::TEST_INSTANCE_DEFAULTS.each do |k, v|
109
+ send("#{k}=", v) if self.respond_to?("#{k}=", v)
110
+ end
111
+ # Finally set any initial values that have been supplied
112
+ options[:attrs].each do |k, v|
113
+ send("#{k}=", v) if respond_to?("#{k}=")
114
+ end
115
+ end
116
+
117
+ def ==(other_instance)
118
+ self.class == other_instance.class &&
119
+ unversioned_name.to_s == other_instance.unversioned_name.to_s &&
120
+ self.class.attrs.all? do |attr|
121
+ # Exclude test name, already examined above and don't want to include
122
+ # the version in the comparison
123
+ if attr == 'test_name'
124
+ true
125
+ else
126
+ send(attr) == other_instance.send(attr)
127
+ end
128
+ end
129
+ end
130
+
131
+ # Returns the fully formatted test instance for insertion into an instance sheet
132
+ def to_s(override_name = nil)
133
+ l = "\t"
134
+ self.class.attrs.each do |attr|
135
+ if attr == 'test_name' && override_name
136
+ l += "#{override_name}\t"
137
+ else
138
+ l += "#{send(attr)}\t"
139
+ end
140
+ end
141
+ "#{l}"
142
+ end
143
+
144
+ def name
145
+ if version && @append_version
146
+ "#{@test_name}_v#{version}"
147
+ else
148
+ @test_name.to_s
149
+ end
150
+ end
151
+ alias_method :test_name, :name
152
+
153
+ def name=(val)
154
+ self.test_name = val
155
+ end
156
+
157
+ def unversioned_name
158
+ @test_name.to_s
159
+ end
160
+
161
+ private
162
+
163
+ def clean_attr_name(name)
164
+ name.to_s.gsub(/\.|-/, '_')
165
+ end
166
+ end
167
+ end
168
+ end
169
+ end