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,83 +1,83 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class GlobalSpecs
5
- include ::OrigenTesters::Generator
6
-
7
- attr_accessor :global_specs
8
-
9
- OUTPUT_PREFIX = 'SpecsGlobal'
10
- # OUTPUT_POSTFIX = 'SpecsGlobal'
11
-
12
- def initialize # :nodoc:
13
- ## Hash Autovivification
14
- l = ->(h, k) { h[k] = Hash.new(&l) }
15
- @global_specs = Hash.new(&l)
16
- end
17
-
18
- # Assigns a global spec value object to the given variable
19
- # The attrs hash is expected to defined as follows:
20
- # attrs = {
21
- # job: nil,
22
- # value: 0
23
- # }
24
- def add(spec, attrs = {})
25
- attrs = {
26
- job: :nil,
27
- value: 0
28
- }.merge(attrs)
29
-
30
- @global_specs[spec][attrs.delete(:job)] = attrs
31
- end
32
-
33
- # Prepare the spec information for file output
34
- def format_uflex_global_spec(data, options = {})
35
- options = {
36
- spec: nil
37
- }.update(options)
38
-
39
- case options[:spec]
40
- when /fgb_/i
41
- spec_type = 'freq'
42
- when /vgb_/i
43
- spec_type = 'volt'
44
- else
45
- spec_type = nil
46
- end
47
-
48
- case data
49
- when NilClass
50
- data_new = 0
51
- when Fixnum, Float
52
- case
53
- when data == 0
54
- data_new = data.to_s
55
- when data.abs < 1e-6
56
- data_new = (data * 1_000_000_000).round(4).to_s + '*nV' if spec_type == 'volt'
57
- data_new = data.to_s if spec_type.nil?
58
- when data.abs < 1e-3
59
- data_new = (data * 1_000_000).round(4).to_s + '*uV' if spec_type == 'volt'
60
- data_new = data.to_s if spec_type.nil?
61
- when data.abs < 1
62
- data_new = (data * 1_000).round(4).to_s + '*mV' if spec_type == 'volt'
63
- data_new = data.to_s if spec_type.nil?
64
- else
65
- data_new = data.to_s + '*V' if spec_type == 'volt'
66
- data_new = data.to_s if spec_type.nil?
67
- end
68
- data_new = data_new.gsub(/^/, '=')
69
- when String
70
- data_new = data.gsub(/^/, '=').gsub(/(\W)([a-zA-Z])/, '\1_\2')
71
- # Remove underscores from unit designations
72
- data_new.gsub!(/(\W)_(nV|uV|mV|V|nA|uA|mA|A)(\W)/i, '\1\2\3')
73
- data_new.gsub!(/(\W)_(nV|uV|mV|V|nA|uA|mA|A)$/i, '\1\2')
74
- else
75
- Origen.log.error "Unknown class type (#{data.class}) for spec value: #{data}"
76
- fail
77
- end
78
- data_new
79
- end
80
- end
81
- end
82
- end
83
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class GlobalSpecs
5
+ include ::OrigenTesters::Generator
6
+
7
+ attr_accessor :global_specs
8
+
9
+ OUTPUT_PREFIX = 'SpecsGlobal'
10
+ # OUTPUT_POSTFIX = 'SpecsGlobal'
11
+
12
+ def initialize # :nodoc:
13
+ ## Hash Autovivification
14
+ l = ->(h, k) { h[k] = Hash.new(&l) }
15
+ @global_specs = Hash.new(&l)
16
+ end
17
+
18
+ # Assigns a global spec value object to the given variable
19
+ # The attrs hash is expected to defined as follows:
20
+ # attrs = {
21
+ # job: nil,
22
+ # value: 0
23
+ # }
24
+ def add(spec, attrs = {})
25
+ attrs = {
26
+ job: :nil,
27
+ value: 0
28
+ }.merge(attrs)
29
+
30
+ @global_specs[spec][attrs.delete(:job)] = attrs
31
+ end
32
+
33
+ # Prepare the spec information for file output
34
+ def format_uflex_global_spec(data, options = {})
35
+ options = {
36
+ spec: nil
37
+ }.update(options)
38
+
39
+ case options[:spec]
40
+ when /fgb_/i
41
+ spec_type = 'freq'
42
+ when /vgb_/i
43
+ spec_type = 'volt'
44
+ else
45
+ spec_type = nil
46
+ end
47
+
48
+ case data
49
+ when NilClass
50
+ data_new = 0
51
+ when Fixnum, Float
52
+ case
53
+ when data == 0
54
+ data_new = data.to_s
55
+ when data.abs < 1e-6
56
+ data_new = (data * 1_000_000_000).round(4).to_s + '*nV' if spec_type == 'volt'
57
+ data_new = data.to_s if spec_type.nil?
58
+ when data.abs < 1e-3
59
+ data_new = (data * 1_000_000).round(4).to_s + '*uV' if spec_type == 'volt'
60
+ data_new = data.to_s if spec_type.nil?
61
+ when data.abs < 1
62
+ data_new = (data * 1_000).round(4).to_s + '*mV' if spec_type == 'volt'
63
+ data_new = data.to_s if spec_type.nil?
64
+ else
65
+ data_new = data.to_s + '*V' if spec_type == 'volt'
66
+ data_new = data.to_s if spec_type.nil?
67
+ end
68
+ data_new = data_new.gsub(/^/, '=')
69
+ when String
70
+ data_new = data.gsub(/^/, '=').gsub(/(\W)([a-zA-Z])/, '\1_\2')
71
+ # Remove underscores from unit designations
72
+ data_new.gsub!(/(\W)_(nV|uV|mV|V|nA|uA|mA|A)(\W)/i, '\1\2\3')
73
+ data_new.gsub!(/(\W)_(nV|uV|mV|V|nA|uA|mA|A)$/i, '\1\2')
74
+ else
75
+ Origen.log.error "Unknown class type (#{data.class}) for spec value: #{data}"
76
+ fail
77
+ end
78
+ data_new
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -1,75 +1,75 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class Job
5
- attr_accessor :name
6
- attr_accessor :pinmap
7
- attr_accessor :instances
8
- attr_accessor :flows
9
- attr_accessor :ac_specs
10
- attr_accessor :dc_specs
11
- attr_accessor :patsets
12
- attr_accessor :patgroups
13
- attr_accessor :bintables
14
- attr_accessor :cz
15
- attr_accessor :test_procs
16
- attr_accessor :mix_sig_timing
17
- attr_accessor :wave_defs
18
- attr_accessor :psets
19
- attr_accessor :signals
20
- attr_accessor :port_map
21
- attr_accessor :fract_bus
22
- attr_accessor :concurrent_seq
23
- attr_accessor :comment
24
-
25
- def initialize(jname, options = {}) # :nodoc:
26
- @name = jname
27
- options[:pinmap] ? @pinmap = [options[:pinmap]] : @pinmap = []
28
- options[:instances] ? @instances = [options[:instances]] : @instances = []
29
- options[:flows] ? @flows = [options[:flows]] : @flows = []
30
- options[:ac_specs] ? @ac_specs = [options[:ac_specs]] : @ac_specs = []
31
- options[:dc_specs] ? @dc_specs = [options[:dc_specs]] : @dc_specs = []
32
- options[:patsets] ? @patsets = [options[:patsets]] : @patsets = []
33
- options[:patgroups] ? @patgroups = [options[:patgroups]] : @patgroups = []
34
- options[:bintables] ? @bintables = [options[:bintables]] : @bintables = []
35
- options[:cz] ? @cz = [options[:cz]] : @cz = []
36
- options[:test_procs] ? @test_procs = [options[:test_procs]] : @test_procs = []
37
- options[:mix_sig_timing] ? @mix_sig_timing = [options[:mix_sig_timing]] : @mix_sig_timing = []
38
- options[:wave_defs] ? @wave_defs = [options[:wave_defs]] : @wave_defs = []
39
- options[:psets] ? @psets = [options[:psets]] : @psets = []
40
- options[:signals] ? @signals = [options[:signals]] : @signals = []
41
- options[:port_map] ? @port_map = [options[:port_map]] : @port_map = []
42
- options[:fract_bus] ? @fract_bus = [options[:fract_bus]] : @fract_bus = []
43
- options[:concurrent_seq] ? @concurrent_seq = [options[:concurrent_seq]] : @concurrent_seq = []
44
- options[:comment] ? @comment = options[:instances] : @comment = nil
45
- end
46
-
47
- # Assigns job information for the given object
48
- def add_job_info(jname, options = {})
49
- @pinmap.push(options[:pinmap]) if options[:pinmap]
50
- @instances.push(options[:instances]) if options[:instances]
51
- @flows.push(options[:flows]) if options[:flows]
52
- @ac_specs.push(options[:ac_specs]) if options[:ac_specs]
53
- @dc_specs.push(options[:dc_specs]) if options[:dc_specs]
54
- @patsets.push(options[:patsets]) if options[:patsets]
55
- @patgroups.push(options[:patgroups]) if options[:patgroups]
56
- @bintables.push(options[:bintables]) if options[:bintables]
57
- @cz.push(options[:cz]) if options[:cz]
58
- @test_procs.push(options[:test_procs]) if options[:test_procs]
59
- @mix_sig_timing.push(options[:mix_sig_timing]) if options[:mix_sig_timing]
60
- @wave_defs.push(options[:wave_defs]) if options[:wave_defs]
61
- @psets.push(options[:psets]) if options[:psets]
62
- @signals.push(options[:signals]) if options[:signals]
63
- @port_map.push(options[:port_map]) if options[:port_map]
64
- @fract_bus.push(options[:fract_bus]) if options[:fract_bus]
65
- @concurrent_seq.push(options[:concurrent_seq]) if options[:concurrent_seq]
66
- @comment = options[:instances] if options[:instances]
67
- end
68
-
69
- def platform
70
- Origen.interface.platform
71
- end
72
- end
73
- end
74
- end
75
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class Job
5
+ attr_accessor :name
6
+ attr_accessor :pinmap
7
+ attr_accessor :instances
8
+ attr_accessor :flows
9
+ attr_accessor :ac_specs
10
+ attr_accessor :dc_specs
11
+ attr_accessor :patsets
12
+ attr_accessor :patgroups
13
+ attr_accessor :bintables
14
+ attr_accessor :cz
15
+ attr_accessor :test_procs
16
+ attr_accessor :mix_sig_timing
17
+ attr_accessor :wave_defs
18
+ attr_accessor :psets
19
+ attr_accessor :signals
20
+ attr_accessor :port_map
21
+ attr_accessor :fract_bus
22
+ attr_accessor :concurrent_seq
23
+ attr_accessor :comment
24
+
25
+ def initialize(jname, options = {}) # :nodoc:
26
+ @name = jname
27
+ options[:pinmap] ? @pinmap = [options[:pinmap]] : @pinmap = []
28
+ options[:instances] ? @instances = [options[:instances]] : @instances = []
29
+ options[:flows] ? @flows = [options[:flows]] : @flows = []
30
+ options[:ac_specs] ? @ac_specs = [options[:ac_specs]] : @ac_specs = []
31
+ options[:dc_specs] ? @dc_specs = [options[:dc_specs]] : @dc_specs = []
32
+ options[:patsets] ? @patsets = [options[:patsets]] : @patsets = []
33
+ options[:patgroups] ? @patgroups = [options[:patgroups]] : @patgroups = []
34
+ options[:bintables] ? @bintables = [options[:bintables]] : @bintables = []
35
+ options[:cz] ? @cz = [options[:cz]] : @cz = []
36
+ options[:test_procs] ? @test_procs = [options[:test_procs]] : @test_procs = []
37
+ options[:mix_sig_timing] ? @mix_sig_timing = [options[:mix_sig_timing]] : @mix_sig_timing = []
38
+ options[:wave_defs] ? @wave_defs = [options[:wave_defs]] : @wave_defs = []
39
+ options[:psets] ? @psets = [options[:psets]] : @psets = []
40
+ options[:signals] ? @signals = [options[:signals]] : @signals = []
41
+ options[:port_map] ? @port_map = [options[:port_map]] : @port_map = []
42
+ options[:fract_bus] ? @fract_bus = [options[:fract_bus]] : @fract_bus = []
43
+ options[:concurrent_seq] ? @concurrent_seq = [options[:concurrent_seq]] : @concurrent_seq = []
44
+ options[:comment] ? @comment = options[:instances] : @comment = nil
45
+ end
46
+
47
+ # Assigns job information for the given object
48
+ def add_job_info(jname, options = {})
49
+ @pinmap.push(options[:pinmap]) if options[:pinmap]
50
+ @instances.push(options[:instances]) if options[:instances]
51
+ @flows.push(options[:flows]) if options[:flows]
52
+ @ac_specs.push(options[:ac_specs]) if options[:ac_specs]
53
+ @dc_specs.push(options[:dc_specs]) if options[:dc_specs]
54
+ @patsets.push(options[:patsets]) if options[:patsets]
55
+ @patgroups.push(options[:patgroups]) if options[:patgroups]
56
+ @bintables.push(options[:bintables]) if options[:bintables]
57
+ @cz.push(options[:cz]) if options[:cz]
58
+ @test_procs.push(options[:test_procs]) if options[:test_procs]
59
+ @mix_sig_timing.push(options[:mix_sig_timing]) if options[:mix_sig_timing]
60
+ @wave_defs.push(options[:wave_defs]) if options[:wave_defs]
61
+ @psets.push(options[:psets]) if options[:psets]
62
+ @signals.push(options[:signals]) if options[:signals]
63
+ @port_map.push(options[:port_map]) if options[:port_map]
64
+ @fract_bus.push(options[:fract_bus]) if options[:fract_bus]
65
+ @concurrent_seq.push(options[:concurrent_seq]) if options[:concurrent_seq]
66
+ @comment = options[:instances] if options[:instances]
67
+ end
68
+
69
+ def platform
70
+ Origen.interface.platform
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,44 +1,44 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class Jobs
5
- include ::OrigenTesters::Generator
6
- attr_accessor :jobs
7
-
8
- OUTPUT_PREFIX = nil
9
- OUTPUT_POSTFIX = nil
10
-
11
- def initialize # :nodoc:
12
- @jobs = {}
13
- end
14
-
15
- def add(jname, options = {})
16
- @jobs.key?(jname) ? @jobs[jname].add_job_info(jname, options) : @jobs[jname] = platform::Job.new(jname, options)
17
- @jobs[jname]
18
- end
19
-
20
- def finalize(options = {})
21
- @jobs.each do |_key, job|
22
- job.pinmap = job.pinmap.flatten.uniq
23
- job.instances = job.instances.flatten.uniq
24
- job.flows = job.flows.flatten.uniq
25
- job.ac_specs = job.ac_specs.flatten.uniq
26
- job.dc_specs = job.dc_specs.flatten.uniq
27
- job.patsets = job.patsets.flatten.uniq
28
- job.patgroups = job.patgroups.flatten.uniq
29
- job.bintables = job.bintables.flatten.uniq
30
- job.cz = job.cz.flatten.uniq
31
- job.test_procs = job.test_procs.flatten.uniq
32
- job.mix_sig_timing = job.mix_sig_timing.flatten.uniq
33
- job.wave_defs = job.wave_defs.flatten.uniq
34
- job.psets = job.psets.flatten.uniq
35
- job.signals = job.signals.flatten.uniq
36
- job.port_map = job.port_map.flatten.uniq
37
- job.fract_bus = job.fract_bus.flatten.uniq
38
- job.concurrent_seq = job.concurrent_seq.flatten.uniq
39
- end
40
- end
41
- end
42
- end
43
- end
44
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class Jobs
5
+ include ::OrigenTesters::Generator
6
+ attr_accessor :jobs
7
+
8
+ OUTPUT_PREFIX = nil
9
+ OUTPUT_POSTFIX = nil
10
+
11
+ def initialize # :nodoc:
12
+ @jobs = {}
13
+ end
14
+
15
+ def add(jname, options = {})
16
+ @jobs.key?(jname) ? @jobs[jname].add_job_info(jname, options) : @jobs[jname] = platform::Job.new(jname, options)
17
+ @jobs[jname]
18
+ end
19
+
20
+ def finalize(options = {})
21
+ @jobs.each do |_key, job|
22
+ job.pinmap = job.pinmap.flatten.uniq
23
+ job.instances = job.instances.flatten.uniq
24
+ job.flows = job.flows.flatten.uniq
25
+ job.ac_specs = job.ac_specs.flatten.uniq
26
+ job.dc_specs = job.dc_specs.flatten.uniq
27
+ job.patsets = job.patsets.flatten.uniq
28
+ job.patgroups = job.patgroups.flatten.uniq
29
+ job.bintables = job.bintables.flatten.uniq
30
+ job.cz = job.cz.flatten.uniq
31
+ job.test_procs = job.test_procs.flatten.uniq
32
+ job.mix_sig_timing = job.mix_sig_timing.flatten.uniq
33
+ job.wave_defs = job.wave_defs.flatten.uniq
34
+ job.psets = job.psets.flatten.uniq
35
+ job.signals = job.signals.flatten.uniq
36
+ job.port_map = job.port_map.flatten.uniq
37
+ job.fract_bus = job.fract_bus.flatten.uniq
38
+ job.concurrent_seq = job.concurrent_seq.flatten.uniq
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -1,59 +1,59 @@
1
- module OrigenTesters
2
- module IGXLBasedTester
3
- class Base
4
- class PinLevelSingle
5
- attr_accessor :vil, :vih # Input level information
6
- attr_accessor :vol, :voh # Output level information
7
- attr_accessor :vcl, :vch # Clamp level information
8
- attr_accessor :vt # Termination level information
9
- attr_accessor :voutlotyp, :vouthityp, :dmode
10
-
11
- def initialize(options = {}) # :nodoc:
12
- options = {
13
- vil: 0, # Input drive low
14
- vih: 1.8, # Input drive high
15
- vol: 1.0, # Output compare low
16
- voh: 0.8, # Output compare high
17
- vcl: -1, # Voltage clamp low
18
- vch: 2.5, # Voltage clamp high
19
- vt: 0.9, # Termination voltage
20
- voutlotyp: 0, #
21
- vouthityp: 0, #
22
- dmode: 'Largeswing-VT' # Driver mode (possibly ATE-specific)
23
- }.merge(options)
24
- @vil = options[:vil]
25
- @vih = options[:vih]
26
- @vol = options[:vol]
27
- @voh = options[:voh]
28
- @vcl = options[:vcl]
29
- @vch = options[:vch]
30
- @vt = options[:vt]
31
- @voutlotyp = options[:voutlotyp]
32
- @vouthityp = options[:vouthityp]
33
- @dmode = options[:dmode]
34
- end
35
-
36
- def ==(level)
37
- if level.is_a? PinLevelSingle
38
- vil == level.vil &&
39
- vih == level.vih &&
40
- vol == level.vol &&
41
- voh == level.voh &&
42
- vcl == level.vcl &&
43
- vch == level.vch &&
44
- vt == level.vt &&
45
- voutlotyp == level.voutlotyp &&
46
- vouthityp == level.vouthityp &&
47
- dmode == level.dmode
48
- else
49
- super
50
- end
51
- end
52
-
53
- def platform
54
- Origen.interface.platform
55
- end
56
- end
57
- end
58
- end
59
- end
1
+ module OrigenTesters
2
+ module IGXLBasedTester
3
+ class Base
4
+ class PinLevelSingle
5
+ attr_accessor :vil, :vih # Input level information
6
+ attr_accessor :vol, :voh # Output level information
7
+ attr_accessor :vcl, :vch # Clamp level information
8
+ attr_accessor :vt # Termination level information
9
+ attr_accessor :voutlotyp, :vouthityp, :dmode
10
+
11
+ def initialize(options = {}) # :nodoc:
12
+ options = {
13
+ vil: 0, # Input drive low
14
+ vih: 1.8, # Input drive high
15
+ vol: 1.0, # Output compare low
16
+ voh: 0.8, # Output compare high
17
+ vcl: -1, # Voltage clamp low
18
+ vch: 2.5, # Voltage clamp high
19
+ vt: 0.9, # Termination voltage
20
+ voutlotyp: 0, #
21
+ vouthityp: 0, #
22
+ dmode: 'Largeswing-VT' # Driver mode (possibly ATE-specific)
23
+ }.merge(options)
24
+ @vil = options[:vil]
25
+ @vih = options[:vih]
26
+ @vol = options[:vol]
27
+ @voh = options[:voh]
28
+ @vcl = options[:vcl]
29
+ @vch = options[:vch]
30
+ @vt = options[:vt]
31
+ @voutlotyp = options[:voutlotyp]
32
+ @vouthityp = options[:vouthityp]
33
+ @dmode = options[:dmode]
34
+ end
35
+
36
+ def ==(level)
37
+ if level.is_a? PinLevelSingle
38
+ vil == level.vil &&
39
+ vih == level.vih &&
40
+ vol == level.vol &&
41
+ voh == level.voh &&
42
+ vcl == level.vcl &&
43
+ vch == level.vch &&
44
+ vt == level.vt &&
45
+ voutlotyp == level.voutlotyp &&
46
+ vouthityp == level.vouthityp &&
47
+ dmode == level.dmode
48
+ else
49
+ super
50
+ end
51
+ end
52
+
53
+ def platform
54
+ Origen.interface.platform
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end