origen_testers 0.4.0

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 (199) hide show
  1. checksums.yaml +7 -0
  2. data/config/application.rb +140 -0
  3. data/config/commands.rb +73 -0
  4. data/config/development.rb +12 -0
  5. data/config/environment.rb +1 -0
  6. data/config/shared_commands.rb +47 -0
  7. data/config/users.rb +18 -0
  8. data/config/version.rb +8 -0
  9. data/lib/commands/build.rb +69 -0
  10. data/lib/origen_testers.rb +23 -0
  11. data/lib/origen_testers/api.rb +258 -0
  12. data/lib/origen_testers/basic_test_setups.rb +105 -0
  13. data/lib/origen_testers/callback_handlers.rb +58 -0
  14. data/lib/origen_testers/generator.rb +279 -0
  15. data/lib/origen_testers/generator/flow_control_api.rb +611 -0
  16. data/lib/origen_testers/generator/identity_map.rb +23 -0
  17. data/lib/origen_testers/generator/placeholder.rb +11 -0
  18. data/lib/origen_testers/generator/test_numberer.rb +23 -0
  19. data/lib/origen_testers/igxl_based_tester.rb +12 -0
  20. data/lib/origen_testers/igxl_based_tester/base.rb +641 -0
  21. data/lib/origen_testers/igxl_based_tester/base/flow.rb +171 -0
  22. data/lib/origen_testers/igxl_based_tester/base/flow_line.rb +322 -0
  23. data/lib/origen_testers/igxl_based_tester/base/generator.rb +217 -0
  24. data/lib/origen_testers/igxl_based_tester/base/patgroup.rb +109 -0
  25. data/lib/origen_testers/igxl_based_tester/base/patgroups.rb +38 -0
  26. data/lib/origen_testers/igxl_based_tester/base/patset.rb +68 -0
  27. data/lib/origen_testers/igxl_based_tester/base/patset_pattern.rb +56 -0
  28. data/lib/origen_testers/igxl_based_tester/base/patsets.rb +38 -0
  29. data/lib/origen_testers/igxl_based_tester/base/patsubr.rb +68 -0
  30. data/lib/origen_testers/igxl_based_tester/base/patsubr_pattern.rb +56 -0
  31. data/lib/origen_testers/igxl_based_tester/base/patsubrs.rb +38 -0
  32. data/lib/origen_testers/igxl_based_tester/base/test_instance.rb +326 -0
  33. data/lib/origen_testers/igxl_based_tester/base/test_instance_group.rb +58 -0
  34. data/lib/origen_testers/igxl_based_tester/base/test_instances.rb +179 -0
  35. data/lib/origen_testers/igxl_based_tester/files.rb +43 -0
  36. data/lib/origen_testers/igxl_based_tester/j750.rb +248 -0
  37. data/lib/origen_testers/igxl_based_tester/j750/flow.rb +10 -0
  38. data/lib/origen_testers/igxl_based_tester/j750/flow_line.rb +19 -0
  39. data/lib/origen_testers/igxl_based_tester/j750/generator.rb +19 -0
  40. data/lib/origen_testers/igxl_based_tester/j750/patgroup.rb +9 -0
  41. data/lib/origen_testers/igxl_based_tester/j750/patgroups.rb +10 -0
  42. data/lib/origen_testers/igxl_based_tester/j750/patset.rb +9 -0
  43. data/lib/origen_testers/igxl_based_tester/j750/patset_pattern.rb +18 -0
  44. data/lib/origen_testers/igxl_based_tester/j750/patsets.rb +10 -0
  45. data/lib/origen_testers/igxl_based_tester/j750/patsubr.rb +9 -0
  46. data/lib/origen_testers/igxl_based_tester/j750/patsubr_pattern.rb +18 -0
  47. data/lib/origen_testers/igxl_based_tester/j750/patsubrs.rb +10 -0
  48. data/lib/origen_testers/igxl_based_tester/j750/templates/flow.txt.erb +9 -0
  49. data/lib/origen_testers/igxl_based_tester/j750/templates/instances.txt.erb +16 -0
  50. data/lib/origen_testers/igxl_based_tester/j750/templates/patgroups.txt.erb +8 -0
  51. data/lib/origen_testers/igxl_based_tester/j750/templates/patsets.txt.erb +10 -0
  52. data/lib/origen_testers/igxl_based_tester/j750/templates/patsubrs.txt.erb +10 -0
  53. data/lib/origen_testers/igxl_based_tester/j750/test_instance.rb +547 -0
  54. data/lib/origen_testers/igxl_based_tester/j750/test_instance_group.rb +9 -0
  55. data/lib/origen_testers/igxl_based_tester/j750/test_instances.rb +10 -0
  56. data/lib/origen_testers/igxl_based_tester/j750_hpt.rb +34 -0
  57. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow.rb +9 -0
  58. data/lib/origen_testers/igxl_based_tester/j750_hpt/flow_line.rb +9 -0
  59. data/lib/origen_testers/igxl_based_tester/j750_hpt/generator.rb +19 -0
  60. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroup.rb +9 -0
  61. data/lib/origen_testers/igxl_based_tester/j750_hpt/patgroups.rb +9 -0
  62. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset.rb +9 -0
  63. data/lib/origen_testers/igxl_based_tester/j750_hpt/patset_pattern.rb +9 -0
  64. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsets.rb +9 -0
  65. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr.rb +9 -0
  66. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubr_pattern.rb +9 -0
  67. data/lib/origen_testers/igxl_based_tester/j750_hpt/patsubrs.rb +9 -0
  68. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance.rb +515 -0
  69. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instance_group.rb +9 -0
  70. data/lib/origen_testers/igxl_based_tester/j750_hpt/test_instances.rb +9 -0
  71. data/lib/origen_testers/igxl_based_tester/parser.rb +102 -0
  72. data/lib/origen_testers/igxl_based_tester/parser/ac_spec.rb +9 -0
  73. data/lib/origen_testers/igxl_based_tester/parser/ac_specs.rb +0 -0
  74. data/lib/origen_testers/igxl_based_tester/parser/dc_spec.rb +33 -0
  75. data/lib/origen_testers/igxl_based_tester/parser/dc_specs.rb +48 -0
  76. data/lib/origen_testers/igxl_based_tester/parser/descriptions.rb +339 -0
  77. data/lib/origen_testers/igxl_based_tester/parser/flow.rb +109 -0
  78. data/lib/origen_testers/igxl_based_tester/parser/flow_line.rb +203 -0
  79. data/lib/origen_testers/igxl_based_tester/parser/flows.rb +21 -0
  80. data/lib/origen_testers/igxl_based_tester/parser/pattern_set.rb +92 -0
  81. data/lib/origen_testers/igxl_based_tester/parser/pattern_sets.rb +31 -0
  82. data/lib/origen_testers/igxl_based_tester/parser/test_instance.rb +341 -0
  83. data/lib/origen_testers/igxl_based_tester/parser/test_instances.rb +24 -0
  84. data/lib/origen_testers/igxl_based_tester/parser/timeset.rb +13 -0
  85. data/lib/origen_testers/igxl_based_tester/parser/timesets.rb +0 -0
  86. data/lib/origen_testers/igxl_based_tester/ultraflex.rb +477 -0
  87. data/lib/origen_testers/igxl_based_tester/ultraflex/flow.rb +10 -0
  88. data/lib/origen_testers/igxl_based_tester/ultraflex/flow_line.rb +19 -0
  89. data/lib/origen_testers/igxl_based_tester/ultraflex/generator.rb +19 -0
  90. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroup.rb +9 -0
  91. data/lib/origen_testers/igxl_based_tester/ultraflex/patgroups.rb +10 -0
  92. data/lib/origen_testers/igxl_based_tester/ultraflex/patset.rb +9 -0
  93. data/lib/origen_testers/igxl_based_tester/ultraflex/patset_pattern.rb +18 -0
  94. data/lib/origen_testers/igxl_based_tester/ultraflex/patsets.rb +10 -0
  95. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr.rb +9 -0
  96. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubr_pattern.rb +18 -0
  97. data/lib/origen_testers/igxl_based_tester/ultraflex/patsubrs.rb +10 -0
  98. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/flow.txt.erb +9 -0
  99. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/instances.txt.erb +16 -0
  100. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patgroups.txt.erb +9 -0
  101. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsets.txt.erb +10 -0
  102. data/lib/origen_testers/igxl_based_tester/ultraflex/templates/patsubrs.txt.erb +10 -0
  103. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance.rb +270 -0
  104. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instance_group.rb +9 -0
  105. data/lib/origen_testers/igxl_based_tester/ultraflex/test_instances.rb +10 -0
  106. data/lib/origen_testers/interface.rb +183 -0
  107. data/lib/origen_testers/parser.rb +22 -0
  108. data/lib/origen_testers/parser/description_lookup.rb +62 -0
  109. data/lib/origen_testers/parser/searchable_array.rb +30 -0
  110. data/lib/origen_testers/parser/searchable_hash.rb +30 -0
  111. data/lib/origen_testers/pattern_compilers.rb +116 -0
  112. data/lib/origen_testers/pattern_compilers/assembler.rb +88 -0
  113. data/lib/origen_testers/pattern_compilers/job.rb +96 -0
  114. data/lib/origen_testers/pattern_compilers/ultraflex_pattern_compiler.rb +599 -0
  115. data/lib/origen_testers/program_generators.rb +55 -0
  116. data/lib/origen_testers/smartest_based_tester.rb +8 -0
  117. data/lib/origen_testers/smartest_based_tester/base.rb +411 -0
  118. data/lib/origen_testers/smartest_based_tester/base/flow.rb +188 -0
  119. data/lib/origen_testers/smartest_based_tester/base/flow_node.rb +476 -0
  120. data/lib/origen_testers/smartest_based_tester/base/generator.rb +123 -0
  121. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +23 -0
  122. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +47 -0
  123. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +143 -0
  124. data/lib/origen_testers/smartest_based_tester/base/test_methods.rb +73 -0
  125. data/lib/origen_testers/smartest_based_tester/base/test_methods/ac_tml.rb +33 -0
  126. data/lib/origen_testers/smartest_based_tester/base/test_methods/base_tml.rb +38 -0
  127. data/lib/origen_testers/smartest_based_tester/base/test_methods/custom_tml.rb +19 -0
  128. data/lib/origen_testers/smartest_based_tester/base/test_methods/dc_tml.rb +147 -0
  129. data/lib/origen_testers/smartest_based_tester/base/test_methods/limits.rb +43 -0
  130. data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +166 -0
  131. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +58 -0
  132. data/lib/origen_testers/smartest_based_tester/v93k.rb +8 -0
  133. data/lib/origen_testers/smartest_based_tester/v93k/builder.rb +89 -0
  134. data/lib/origen_testers/smartest_based_tester/v93k/builder/flow.rb +169 -0
  135. data/lib/origen_testers/smartest_based_tester/v93k/builder/pattern_master.rb +54 -0
  136. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +10 -0
  137. data/lib/origen_testers/smartest_based_tester/v93k/flow_node.rb +9 -0
  138. data/lib/origen_testers/smartest_based_tester/v93k/generator.rb +19 -0
  139. data/lib/origen_testers/smartest_based_tester/v93k/pattern_compiler.rb +10 -0
  140. data/lib/origen_testers/smartest_based_tester/v93k/pattern_master.rb +10 -0
  141. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.aiv.erb +17 -0
  142. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.flow.erb +201 -0
  143. data/lib/origen_testers/smartest_based_tester/v93k/templates/template.pmfl.erb +13 -0
  144. data/lib/origen_testers/smartest_based_tester/v93k/test_method.rb +9 -0
  145. data/lib/origen_testers/smartest_based_tester/v93k/test_methods.rb +9 -0
  146. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +9 -0
  147. data/lib/origen_testers/smartest_based_tester/v93k/test_suites.rb +9 -0
  148. data/lib/origen_testers/test/basic_interface.rb +17 -0
  149. data/lib/origen_testers/test/block.rb +21 -0
  150. data/lib/origen_testers/test/dut.rb +184 -0
  151. data/lib/origen_testers/test/dut2.rb +76 -0
  152. data/lib/origen_testers/test/j750_base_interface.rb +119 -0
  153. data/lib/origen_testers/test/j750_hpt_interface.rb +8 -0
  154. data/lib/origen_testers/test/j750_interface.rb +8 -0
  155. data/lib/origen_testers/test/nvm.rb +94 -0
  156. data/lib/origen_testers/test/ultraflex_interface.rb +110 -0
  157. data/lib/origen_testers/test/v93k_interface.rb +115 -0
  158. data/lib/origen_testers/timing.rb +362 -0
  159. data/lib/origen_testers/vector.rb +203 -0
  160. data/lib/origen_testers/vector_based_tester.rb +42 -0
  161. data/lib/origen_testers/vector_generator.rb +623 -0
  162. data/lib/origen_testers/vector_pipeline.rb +288 -0
  163. data/pattern/dc_instr.rb +7 -0
  164. data/pattern/delay.rb +7 -0
  165. data/pattern/mem_test.rb +8 -0
  166. data/pattern/multi_vector.rb +117 -0
  167. data/pattern/multi_vector_plus1.rb +125 -0
  168. data/pattern/nvm/j750/add_late_pins.rb +3 -0
  169. data/pattern/nvm/j750/iterator_postfix_test_x_bx.rb +8 -0
  170. data/pattern/nvm/j750/iterator_test_x_bx.rb +8 -0
  171. data/pattern/nvm/j750/j750_halt.rb +159 -0
  172. data/pattern/nvm/j750/j750_workout.rb +202 -0
  173. data/pattern/nvm/j750/timing.rb +73 -0
  174. data/pattern/nvm/v93k/v93k_workout.rb +136 -0
  175. data/pattern/read_write_reg.rb +58 -0
  176. data/pattern/reset.rb +4 -0
  177. data/pattern/subroutines.rb +38 -0
  178. data/program/_additional_erase.rb +7 -0
  179. data/program/_efa_resources.rb +7 -0
  180. data/program/_erase.rb +25 -0
  181. data/program/_erase_vfy.rb +5 -0
  182. data/program/_iv_resources.rb +10 -0
  183. data/program/basic_interface.rb +5 -0
  184. data/program/components/_prb2_main.rb +6 -0
  185. data/program/flow_control.rb +164 -0
  186. data/program/prb1.rb +226 -0
  187. data/program/prb1_resources.rb +28 -0
  188. data/program/prb2.rb +40 -0
  189. data/program/test.rb +20 -0
  190. data/templates/example.txt.erb +53 -0
  191. data/templates/j750/_vt_flow.txt.erb +8 -0
  192. data/templates/j750/_vt_instances.txt.erb +4 -0
  193. data/templates/j750/program_sheet.txt.erb +9 -0
  194. data/templates/manifest/v93k.yaml.erb +22 -0
  195. data/templates/web/index.md.erb +51 -0
  196. data/templates/web/layouts/_basic.html.erb +15 -0
  197. data/templates/web/partials/_navbar.html.erb +22 -0
  198. data/templates/web/release_notes.md.erb +5 -0
  199. metadata +332 -0
data/program/prb1.rb ADDED
@@ -0,0 +1,226 @@
1
+ # An instance of the interface is
2
+ # passed in here, iterators and other
3
+ # argument passing will be supported
4
+ # similar to Pattern.create.
5
+ Flow.create do
6
+
7
+ self.resources_filename = 'prb1'
8
+
9
+ # Instantiate tests via the
10
+ # interface
11
+ func 'program_ckbd', :tname => 'PGM_CKBD', :tnum => 1000, :bin => 100, :soft_bin => 1100
12
+ func 'margin_read1_ckbd'
13
+
14
+ # Control the build process based on
15
+ # the current target
16
+ if $dut.has_margin0_bug?
17
+ func 'normal_read_ckbd'
18
+ else
19
+ func 'margin_read0_ckbd'
20
+ end
21
+
22
+ # Include a sub flow, example of
23
+ # parameter passing
24
+ import 'erase', :pulses => 6
25
+
26
+ # Render an ERB template, or raw
27
+ # text file
28
+ if $tester.j750?
29
+ flow.render 'templates/j750/vt_flow', :include_tifr => true
30
+ end
31
+
32
+ log 'Should be v1'
33
+ func :program_ckbd
34
+ log 'Should be v2'
35
+ func :program_ckbd, :duration => :dynamic
36
+ log 'Should be v1'
37
+ func :program_ckbd
38
+ log 'Should be v2'
39
+ func :program_ckbd, :duration => :dynamic
40
+
41
+ log 'Should be a v1 test instance group'
42
+ func :program_ckbd, :by_block => true
43
+ log 'Should be a v2 test instance group'
44
+ func :program_ckbd, :by_block => true, :duration => :dynamic
45
+ log 'Should be a v1 test instance group'
46
+ func :program_ckbd, :by_block => true
47
+ log 'Should be a v2 test instance group'
48
+ func :program_ckbd, :by_block => true, :duration => :dynamic
49
+
50
+ # Test job conditions
51
+ func :p1_only_test, :if_job => :p1
52
+ if_job [:p1, :p2] do
53
+ func :p1_or_p2_only_test
54
+ end
55
+ func :not_p1_test, :unless_job => :p1
56
+ func :not_p1_or_p2_test, :unless_job => [:p1, :p2]
57
+ unless_job [:p1, :p2] do
58
+ func :another_not_p1_or_p2_test
59
+ end
60
+
61
+ log 'Verify that a test with an external instance works'
62
+ por
63
+
64
+ log 'Verify that a request to use the current context works'
65
+ func :erase_all, :if_job => :p1 # Job should be P1
66
+ func :erase_all, :context => :current # Job should be P1
67
+ unless_job :p2 do
68
+ func :erase_all, :context => :current # Job should be P1
69
+ func :erase_all # Job should be !P2
70
+ end
71
+
72
+ # Deliver an initial erase pulse
73
+ func :erase_all
74
+
75
+ # Deliver additional erase pulses as required until it verifies, maximum of 5 additional pulses
76
+ 5.times do |x|
77
+ # Assign a unique id attribute to each verify so that we know which one we are talking about when
78
+ # making other tests dependent on it.
79
+ # When Origen sees the if_failed dependency on a future test it will be smart enough to inhibit the binning
80
+ # on this test without having to explicitly declare that.
81
+ func :margin_read1_all1, :id => "erase_vfy_#{x}"
82
+ # Run this test only if the given verify failed
83
+ func :erase_all, :if_failed => "erase_vfy_#{x}"
84
+ end
85
+
86
+ # A final verify to set the binning
87
+ func :margin_read1_all1
88
+
89
+ log 'Test if enable'
90
+ func :erase_all, :if_enable => 'do_erase'
91
+
92
+ if_enable 'do_erase' do
93
+ func :erase_all
94
+ end
95
+
96
+ log 'Test unless enable'
97
+ func :erase_all, :unless_enable => 'no_extra_erase'
98
+
99
+ unless_enable 'no_extra_erase' do
100
+ func :erase_all
101
+ func :erase_all
102
+ end
103
+
104
+ unless_enable 'no_extra_erase', :or => true do
105
+ func :erase_all
106
+ func :erase_all
107
+ end
108
+
109
+ log 'Test if_passed'
110
+ func :erase_all, :id => 'erase_passed_1'
111
+ func :erase_all, :id => 'erase_passed_2'
112
+
113
+ func :margin_read1_all1, :if_passed => 'erase_passed_1'
114
+ if_passed 'erase_passed_2' do
115
+ func :margin_read1_all1
116
+ end
117
+
118
+ log 'Test unless_passed'
119
+ func :erase_all, :id => 'erase_passed_3'
120
+ func :erase_all, :id => 'erase_passed_4'
121
+
122
+ func :margin_read1_all1, :unless_passed => 'erase_passed_3'
123
+ unless_passed 'erase_passed_4' do
124
+ func :margin_read1_all1
125
+ end
126
+
127
+ log 'Test if_failed'
128
+ func :erase_all, :id => 'erase_failed_1'
129
+ func :erase_all, :id => 'erase_failed_2'
130
+
131
+ func :margin_read1_all1, :if_failed => 'erase_failed_1'
132
+ if_failed 'erase_failed_2' do
133
+ func :margin_read1_all1
134
+ end
135
+
136
+ log 'Test unless_failed'
137
+ func :erase_all, :id => 'erase_failed_3'
138
+ func :erase_all, :id => 'erase_failed_4'
139
+
140
+ func :margin_read1_all1, :unless_failed => 'erase_failed_3'
141
+ unless_failed 'erase_failed_4' do
142
+ func :margin_read1_all1
143
+ end
144
+
145
+ log 'Test if_ran'
146
+ func :erase_all, :id => 'erase_ran_1'
147
+ func :erase_all, :id => 'erase_ran_2'
148
+
149
+ func :margin_read1_all1, :if_ran => 'erase_ran_1'
150
+ if_ran 'erase_ran_2' do
151
+ func :margin_read1_all1
152
+ end
153
+
154
+ log 'Test unless_ran'
155
+ func :erase_all, :id => 'erase_ran_3'
156
+ func :erase_all, :id => 'erase_ran_4'
157
+
158
+ func :margin_read1_all1, :unless_ran => 'erase_ran_3'
159
+ unless_ran 'erase_ran_4' do
160
+ func :margin_read1_all1
161
+ end
162
+
163
+ log 'Test if_all_passed'
164
+ func :erase_all, :id => 'erase_all_passed_1'
165
+ func :erase_all, :id => 'erase_all_passed_2'
166
+
167
+ func :margin_read1_all1, :if_all_passed => 'erase_all_passed_1'
168
+ if_all_passed 'erase_all_passed_2' do
169
+ func :margin_read1_all1
170
+ end
171
+
172
+ log 'Test unless_any_failed'
173
+ func :erase_all, :id => 'erase_all_passed_3'
174
+ func :erase_all, :id => 'erase_all_passed_4'
175
+
176
+ func :margin_read1_all1, :unless_any_failed => 'erase_all_passed_3'
177
+ unless_any_failed 'erase_all_passed_4' do
178
+ func :margin_read1_all1
179
+ end
180
+
181
+ log 'Test if_any_passed'
182
+ func :erase_all, :id => 'erase_any_passed_1'
183
+ func :erase_all, :id => 'erase_any_passed_2'
184
+
185
+ func :margin_read1_all1, :if_any_passed => 'erase_any_passed_1'
186
+ if_any_passed 'erase_any_passed_2' do
187
+ func :margin_read1_all1
188
+ end
189
+
190
+ log 'Test if_all_failed'
191
+ func :erase_all, :id => 'erase_all_failed_1'
192
+ func :erase_all, :id => 'erase_all_failed_2'
193
+
194
+ func :margin_read1_all1, :if_all_failed => 'erase_all_failed_1'
195
+ if_all_failed 'erase_all_failed_2' do
196
+ func :margin_read1_all1
197
+ end
198
+
199
+ log 'Test if_any_failed'
200
+ func :erase_all, :id => 'erase_any_failed_1'
201
+ func :erase_all, :id => 'erase_any_failed_2'
202
+
203
+ func :margin_read1_all1, :if_any_failed => 'erase_any_failed_1'
204
+ if_any_failed 'erase_any_failed_2' do
205
+ func :margin_read1_all1
206
+ end
207
+
208
+ log 'Verify that job context wraps import'
209
+ if_job :fr do
210
+ import 'erase'
211
+ end
212
+
213
+ log 'Verify that job context wraps enable block within an import'
214
+ if_job :fr do
215
+ import 'additional_erase'
216
+ import 'additional_erase', :force => true
217
+ end
218
+
219
+ log 'Verify that flow.cz works...'
220
+ func :margin_read1_all1, :pin_levels => :cz, :cz_setup => 'vbplus_sweep'
221
+
222
+ log 'Verify that MTO template works...'
223
+ mto_memory :mto_read1_all1
224
+
225
+ bin 1, description: "Good die!"
226
+ end
@@ -0,0 +1,28 @@
1
+ # Similar to the test flows an interface instance is passed in as the first argument.
2
+ Resources.create do
3
+
4
+ self.resources_filename = 'prb1'
5
+
6
+ # Logic here should be minimal,
7
+ # pass whatever options you want
8
+ # but the recommended approach is
9
+ # to infer the pattern name and as
10
+ # many additional details as
11
+ # possible from the test name
12
+ func :program_ckbd, :duration => :dynamic
13
+
14
+ import 'efa_resources'
15
+
16
+ func :margin_read1_ckbd
17
+ func :normal_read_ckbd
18
+ func :margin_read0_ckbd
19
+
20
+ func :erase_all, :duration => :dynamic
21
+
22
+ para 'charge_pump', :high_voltage => true
23
+
24
+ if $tester.j750?
25
+ test_instances.render 'templates/j750/vt_instances'
26
+ compile 'templates/j750/program_sheet.txt', :passed_param => true
27
+ end
28
+ end
data/program/prb2.rb ADDED
@@ -0,0 +1,40 @@
1
+ # An example of creating an entire test program from
2
+ # a single source file
3
+ Flow.create do
4
+
5
+ self.resources_filename = 'prb2'
6
+
7
+ func :erase_all, :duration => :dynamic
8
+
9
+ func :margin_read1_all1
10
+
11
+ func :erase_all, :duration => :dynamic
12
+ func :margin_read1_all1
13
+
14
+ import 'components/prb2_main'
15
+
16
+ func :erase_all, :duration => :dynamic
17
+ func :margin_read1_all1, :id => 'erased_successfully'
18
+
19
+ skip :if_all_passed => 'erased_successfully' do
20
+ import 'components/prb2_main'
21
+ end
22
+
23
+ if_enable 'extra_tests' do
24
+ import 'components/prb2_main'
25
+ end
26
+
27
+ func :margin_read1_all1
28
+
29
+ log '"Check OOF passcodes in both locations"'
30
+ func :pgm_vfy_oof_passcode_tst, tname: "TST_VFY_OOF_PASSCODE", tnum: 1300, continue: true, id: :oof_passcode1
31
+ func :pgm_vfy_oof_passcode_redcols_utst, tname: "UTST_VFY_OOF_PASSCODE_REDCOLS", tnum: 1300, continue: true, id: :oof_passcode2
32
+ nop
33
+
34
+ # Will create a better API when implementing this on V93K
35
+ if Origen.tester.is_a?(OrigenTesters::IGXLBasedTester::Base)
36
+ or_ids id1: :oof_passcode1, id2: :oof_passcode2, id: :OR, condition: :fail
37
+ func :testme, tname: "", if_failed: :OR
38
+ end
39
+
40
+ end
data/program/test.rb ADDED
@@ -0,0 +1,20 @@
1
+ # An instance of the interface is
2
+ # passed in here, iterators and other
3
+ # argument passing will be supported
4
+ # similar to Pattern.create.
5
+ Flow.create do
6
+
7
+ # Instantiate tests via the
8
+ # interface
9
+ # func 'program_ckbd', :tname => 'PGM_CKBD', :tnum => 1000, :bin => 100, :soft_bin => 1100
10
+
11
+ # para 'charge_pump', :high_voltage => true, :lo_limit => 5, :hi_limit => 6
12
+
13
+ meas :read_pump, tnum: 1050, bin: 119, soft_bin: 2, lo_limit: 35
14
+ meas :read_pump, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45
15
+ meas :read_pump, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45, lo_limit: 35
16
+ meas :read_pump, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45, lo_limit: 35, units: "V"
17
+ meas :read_pump, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45, lo_limit: 35, scale: "k", units: "V"
18
+ meas :read_pump, tnum: 1050, bin: 119, soft_bin: 2, hi_limit: 45, lo_limit: 35, scale: "k", units: "V", result: "None"
19
+
20
+ end
@@ -0,0 +1,53 @@
1
+ RGen can compile any ASCII files within the context of a target, in other words
2
+ you can select a target file and access the objects instantiated in the target
3
+ from here and use them to generate dynamic content.
4
+
5
+ To try it run the compile task on this file:
6
+
7
+ > rgen c templates/example.txt.erb
8
+
9
+ You can also compile entire directories like this:
10
+
11
+ > rgen c templates
12
+
13
+ In the case of compiling a directory any .erb files in the directory and its
14
+ subdirectory will be compiled, whereas any non .erb files will simply be
15
+ copied over to the output location un-modified.
16
+
17
+ See the help for the other available options:
18
+
19
+ > rgen c -h
20
+
21
+ SYNTAX
22
+ ------
23
+
24
+ The syntax is very simple:
25
+
26
+ % # Lines that start with % (no spaces allowed before it) will be interpreted
27
+ % # as Ruby. Since these lines start with a comment char they will simply be
28
+ % # deleted by the compilation process.
29
+
30
+ Ruby logic can be used to conditionally include lines:
31
+ % if 1 == 1
32
+ You will see me in the compiled file
33
+ % else
34
+ But you won't see me :-(
35
+ % end
36
+
37
+ Loops can be used to expand the content:
38
+ % 10.times do
39
+ I must not talk in class
40
+ % end
41
+
42
+ To inject content use this syntax: 4 + 4 = <%= 4 + 4 %>
43
+
44
+ Whatever is returned by a Ruby snippet like this will be converted to a string and
45
+ output to the compiled file.
46
+
47
+ That's pretty much it.
48
+
49
+ Oh almost forgot the best bit, you can access your objects:
50
+
51
+ "DUT, are you there?"
52
+
53
+ <%= $dut.say_hello %>
@@ -0,0 +1,8 @@
1
+ data_collection Test nvm_allflash_vsgdist ErsSatVsg None
2
+ % if options[:include_fw]
3
+ data_collection Test nvm_allflash_vsgdist_fw ErsSatVsgFW None
4
+ % end
5
+ % if options[:include_tifr]
6
+ data_collection Test nvm_allflash_vsgdist_tifr ErsSatVsgTIFR None
7
+ % end
8
+ data_collection Test nvm_allflash_vsgdist_uifr ErsSatVsgUIFR None
@@ -0,0 +1,4 @@
1
+ nvm_allflash_vsgdist IG-XL Template Empty_T Excel Macro NVM Typ Spec Default Tim Lvl TfsC90InterposeFunc VtDist SetHRAMForRead,32 ArgData:0,1,15,1,vsg,array
2
+ nvm_allflash_vsgdist_fw IG-XL Template Empty_T Excel Macro NVM Typ Spec Default Tim Lvl TfsC90InterposeFunc VtDist SetHRAMForRead,32 ArgData:0,1,15,1,vsg,fw
3
+ nvm_allflash_vsgdist_uifr IG-XL Template Empty_T Excel Macro NVM Typ Spec Default Tim Lvl TfsC90InterposeFunc VtDist SetHRAMForRead,32 ArgData:0,1,15,1,vsg,uifr
4
+ nvm_allflash_vsgdist_tifr IG-XL Template Empty_T Excel Macro NVM Typ Spec Default Tim Lvl TfsC90InterposeFunc VtDist SetHRAMForRead,32 ArgData:0,1,15,1,vsg,tifr
@@ -0,0 +1,9 @@
1
+ This is some test program sheet or other.
2
+
3
+ The test compile has:
4
+
5
+ % if options[:passed_param]
6
+ PASSED!
7
+ % else
8
+ FAILED!
9
+ % end
@@ -0,0 +1,22 @@
1
+ flows:
2
+ prb1:
3
+ - continuity
4
+ - scan
5
+ prb2:
6
+ - continuity
7
+ - functional
8
+
9
+ sub_programs:
10
+ - name: continuity
11
+ # Paths can be relative to your RGen application root
12
+ flow: output/v93k/testflow/continuity.flow
13
+
14
+ - name: scan
15
+ # Or relative to this file
16
+ flow: ../../output/v93k/testflow/test.flow
17
+ pattern_master: ../../output/v93k/vectors/test.pmfl
18
+
19
+ - name: functional
20
+ # Or absolute
21
+ flow: /proj/devicex/modules/functional/v93k/testflow/main.flow
22
+ pattern_master: /proj/devicex/modules/functional/v93k/vectors/main.pmfl
@@ -0,0 +1,51 @@
1
+ % render "layouts/basic.html" do
2
+
3
+ %# HTML tags can be embedded in mark down files if you want to do specific custom
4
+ %# formatting like this, but in most cases that is not required.
5
+ <h1><%= Origen.config.name %> <span style="font-size: 14px">(<%= Origen.app.version %>)</span></h1>
6
+
7
+ ### Purpose
8
+
9
+ This origen gem provides tester models to drive ATE type testers like the J750, UltraFLEX, V93K.
10
+
11
+ ### How To Import
12
+
13
+ In your Gemfile add:
14
+
15
+ ~~~ruby
16
+ gem "<%= Origen.app.name %>", ">= <%= Origen.app.version %>"
17
+ ~~~
18
+
19
+ or if your application is a gem add this to your <code>.gemspec</code>
20
+
21
+ ~~~ruby
22
+ spec.add_runtime_dependency "<%= Origen.app.name %>", ">= <%= Origen.app.version %>"
23
+ ~~~
24
+
25
+ ### How To Use
26
+
27
+ To use a tester, instantiate it in the current environment file:
28
+
29
+ ~~~ruby
30
+ # environment/j750.rb
31
+ $tester = OrigenTesters::J750.new
32
+ ~~~
33
+
34
+ Tester programs and patterns can easily be generated for different testers simply by changing the above instantiation.
35
+
36
+ ### How To Setup a Development Environment
37
+
38
+ [Clone the repository from Github](https://github.com/Origen-SDK/origen_testers).
39
+
40
+ Follow the instructions here if you want to make a 3rd party app
41
+ workspace use your development copy of the OrigenTesters plugin:
42
+ [Setting up a Plugin Development Environment](http://origen-sdk.org/origen/latest/guides/plugins)
43
+
44
+ This plugin also contains a test suite, makes sure this passes before committing
45
+ any changes!
46
+
47
+ ~~~text
48
+ origen test
49
+ ~~~
50
+
51
+ % end