origen_testers 0.31.0 → 0.40.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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/config/application.rb +3 -1
  3. data/config/shared_commands.rb +4 -0
  4. data/config/version.rb +1 -1
  5. data/lib/origen_testers/api.rb +8 -0
  6. data/lib/origen_testers/atp/flow.rb +30 -9
  7. data/lib/origen_testers/flow.rb +36 -2
  8. data/lib/origen_testers/generator.rb +44 -5
  9. data/lib/origen_testers/interface.rb +22 -2
  10. data/lib/origen_testers/origen_ext/generator.rb +4 -3
  11. data/lib/origen_testers/origen_ext/generator/flow.rb +99 -5
  12. data/lib/origen_testers/program_generators.rb +5 -1
  13. data/lib/origen_testers/smartest_based_tester.rb +1 -0
  14. data/lib/origen_testers/smartest_based_tester/base.rb +177 -114
  15. data/lib/origen_testers/smartest_based_tester/base/flow.rb +329 -127
  16. data/lib/origen_testers/smartest_based_tester/base/generator.rb +25 -7
  17. data/lib/origen_testers/smartest_based_tester/base/limits_file.rb +186 -60
  18. data/lib/origen_testers/smartest_based_tester/base/pattern_compiler.rb +4 -0
  19. data/lib/origen_testers/smartest_based_tester/base/pattern_master.rb +4 -0
  20. data/lib/origen_testers/smartest_based_tester/base/processors/extract_bin_names.rb +5 -1
  21. data/lib/origen_testers/smartest_based_tester/base/processors/extract_flow_vars.rb +108 -0
  22. data/lib/origen_testers/smartest_based_tester/base/test_method.rb +8 -3
  23. data/lib/origen_testers/smartest_based_tester/base/test_suite.rb +9 -108
  24. data/lib/origen_testers/smartest_based_tester/base/test_suites.rb +17 -7
  25. data/lib/origen_testers/smartest_based_tester/base/variables_file.rb +29 -7
  26. data/lib/origen_testers/smartest_based_tester/smt7.rb +59 -0
  27. data/lib/origen_testers/smartest_based_tester/smt8.rb +218 -0
  28. data/lib/origen_testers/smartest_based_tester/v93k/flow.rb +32 -0
  29. data/lib/origen_testers/smartest_based_tester/v93k/templates/vars.tf.erb +2 -2
  30. data/lib/origen_testers/smartest_based_tester/v93k/test_suite.rb +109 -0
  31. data/lib/origen_testers/smartest_based_tester/v93k_smt8.rb +8 -0
  32. data/lib/origen_testers/smartest_based_tester/v93k_smt8/flow.rb +234 -0
  33. data/lib/origen_testers/smartest_based_tester/v93k_smt8/generator.rb +48 -0
  34. data/lib/origen_testers/smartest_based_tester/v93k_smt8/limits_file.rb +14 -0
  35. data/lib/origen_testers/smartest_based_tester/v93k_smt8/limits_workbook.rb +148 -0
  36. data/lib/origen_testers/smartest_based_tester/v93k_smt8/templates/limits.csv.erb +3 -0
  37. data/lib/origen_testers/smartest_based_tester/v93k_smt8/templates/template.flow.erb +41 -0
  38. data/lib/origen_testers/smartest_based_tester/v93k_smt8/test_suite.rb +66 -0
  39. data/lib/origen_testers/stil_based_tester/base.rb +4 -0
  40. data/lib/origen_testers/test/interface.rb +16 -2
  41. data/lib/origen_testers/vector_generator.rb +9 -4
  42. data/lib/origen_testers/vector_pipeline.rb +1 -1
  43. data/pattern/nvm/v93k/v93k_workout.rb +7 -0
  44. data/program/_erase_vfy.rb +2 -1
  45. data/program/components/_deep_nested.rb +3 -0
  46. data/program/components/_prb1_main.rb +1 -1
  47. data/program/components/_prb2_main.rb +6 -2
  48. data/program/flow_control.rb +3 -3
  49. data/program/prb1.rb +4 -0
  50. data/program/prb2.rb +7 -3
  51. data/templates/origen_guides/pattern/v93k.md.erb +24 -0
  52. data/templates/origen_guides/program/v93k.md.erb +6 -148
  53. data/templates/origen_guides/program/v93ksmt7.md.erb +165 -0
  54. data/templates/origen_guides/program/v93ksmt8.md.erb +112 -0
  55. metadata +30 -3
  56. data/lib/origen_testers/smartest_based_tester/base/test_methods/smart_calc_tml.rb +0 -23
@@ -10,4 +10,8 @@ Flow.create interface: 'OrigenTesters::Test::Interface', flow_description: 'Prob
10
10
 
11
11
  import 'components/prb1_main'
12
12
 
13
+ # Test that a reference to a deeply nested test works (mainly for SMT8)
14
+ test :on_deep_1, if_failed: :deep_test
15
+
16
+ pass 1, description: "Good die!", softbin: 1
13
17
  end
@@ -1,6 +1,6 @@
1
1
  # An example of creating an entire test program from
2
2
  # a single source file
3
- Flow.create interface: 'OrigenTesters::Test::Interface' do
3
+ Flow.create interface: 'OrigenTesters::Test::Interface', environment: :probe do
4
4
 
5
5
  # Test that this can be overridden from the target at flow-level
6
6
  self.add_flow_enable = :enabled
@@ -21,8 +21,12 @@ Flow.create interface: 'OrigenTesters::Test::Interface' do
21
21
  func :erase_all, duration: :dynamic, number: 12000
22
22
  func :margin_read1_all1, id: 'erased_successfully', number: 12010
23
23
 
24
- if_enable 'extra_tests' do
25
- import 'components/prb2_main', number: 13000
24
+ # Check that an instance variable change in a sub-flow (prb2_main in this case)
25
+ # is preserved back here in the main flow
26
+ if include_additional_prb2_test
27
+ if_enable 'extra_tests' do
28
+ import 'components/prb2_main', number: 13000
29
+ end
26
30
  end
27
31
 
28
32
  func :margin_read1_all1, number: 14000
@@ -36,6 +36,30 @@ clk _______| |_______| |_| |_| |_| |_| |_| |_| |_| |_| |_______|
36
36
 
37
37
  ~~~
38
38
 
39
+ #### SmarTest 8
39
40
 
41
+ The Origen V93K driver supports generating patterns into both SMT7 and SMT8 pattern formats.
42
+
43
+ To enable SMT8 format, set the `smt_version:` attribute to 8 when instantiating the tester in your
44
+ [application environment](<%= path "guides/runtime/environment" %>) as shown here:
45
+
46
+ ~~~ruby
47
+ # environment/v93k_smt7.rb
48
+ OrigenTesters::V93K.new
49
+
50
+ # environment/v93k_smt8.rb
51
+ OrigenTesters::V93K.new smt_version: 8
52
+ ~~~
53
+
54
+ SMT8 patterns can either be in a zipped/binary format, or an ASCII file format.
55
+ Zipped is the default, but the ASCII format can sometimes be useful when visually inspecting patterns or
56
+ when comparing them via a difftool.
57
+ To enable ASCII format patterns, configure your environment like this:
58
+
59
+ ~~~ruby
60
+ # environment/v93k_smt8.rb
61
+ OrigenTesters::V93K.new smt_version: 8,
62
+ zip_patterns: false
63
+ ~~~
40
64
 
41
65
  % end
@@ -1,70 +1,5 @@
1
1
  % render "layouts/guides.html" do
2
2
 
3
- ### Flow Considerations
4
-
5
- By default, a top-level `Flow.create` call in Origen will generate a standalone V93K testflow file which is
6
- internally wrapped by a flow group, like this:
7
-
8
- ~~~text
9
- group <FLOW_NAME> {
10
- // Flow content here
11
- }
12
- ~~~
13
-
14
- When such flows are imported into a master flow file, SmarTest does not provide a standard enable mechanism
15
- to control which sub-flows are executed.
16
-
17
- However, Origen provides the ability to generate V93K flow modules with an enable-word wrapper, thereby allowing
18
- the top-level flow to easily enable/disable the execution of flow modules via flow variables.
19
-
20
- By enabling this feature in the target like this:
21
-
22
- ~~~ruby
23
- OrigenTesters::V93K.new(add_flow_enable: :enabled)
24
- ~~~
25
-
26
- the flow will now generate like this:
27
-
28
- ~~~text
29
- group <FLOW_NAME> {
30
- if @<FLOW_NAME>_ENABLE == 1 {
31
- // Flow content here
32
- }
33
- }
34
- ~~~
35
-
36
- The `@<FLOW_NAME>_ENABLE` variable will be initialized to 1 in the generated variables file for the given flow,
37
- meaning that the module will run by default if the top-level flow does nothing with this variable.
38
-
39
- Alternatively, the variable can be initialized to off like this:
40
-
41
- ~~~ruby
42
- OrigenTesters::V93K.new(add_flow_enable: :disabled)
43
- ~~~
44
-
45
- Meaning that by default, the module will not run and the top-level flow must always enable it by including
46
- `@<FLOW_NAME>_ENABLE = 1` before hitting the module.
47
-
48
- Setting this attribute in the target means that it will apply to all flows. Alternatively, it can be set within
49
- the flow itself (or the interface) if it is necessary to use this feature for only a subset of flows, or to override
50
- the default setting for a particular flow.
51
-
52
- Here is an example:
53
-
54
- ~~~ruby
55
- Flow.create interface: 'MyApp::Interface' do
56
-
57
- # Ensure that this flow is always generated with an enable word wrapper that is enabled by default
58
- self.add_flow_enable = :enabled
59
-
60
- # Some functional test
61
- func :blah
62
- end
63
- ~~~
64
-
65
- This same API may be used to implement similar features on other platforms in future, but for now only the V93K is implemented.
66
-
67
-
68
3
  ### Interface Considerations
69
4
 
70
5
  Be sure to read and understand the guide to
@@ -133,6 +68,12 @@ t.lev_spec_set = 8
133
68
  t.levset = 1
134
69
  ~~~
135
70
 
71
+ or to assign a spec in SMT8:
72
+
73
+ ~~~ruby
74
+ t.spec = 'my_spec_min'
75
+ ~~~
76
+
136
77
  If the test method provides parameters, you can set them in the same way. As a convenience,
137
78
  Origen will automatically work out whether the reference is to a parameter of the test suite
138
79
  or of the test method, and will assign it accordingly.
@@ -164,38 +105,6 @@ t.lo_limit = 100.uA
164
105
  t.hi_limit = 150.uA
165
106
  ~~~
166
107
 
167
- #### Built-in Test Methods
168
-
169
- SmarTest comes with a standard AC and DC test method library and Origen provides a built-in API to
170
- generate a test flow which uses those test methods, here are some examples:
171
-
172
- ~~~ruby
173
- # Execute a functional test
174
- test_method = test_methods.ac_tml.ac_test.functional_test
175
-
176
- # A basic DC voltage measurement
177
- test_method = test_methods.dc_tml.dc_test.general_pmu force_mode: 'CURR', force_value: 100.uA
178
- ~~~
179
-
180
- Generally the parameter naming is the lower-cased and underscored version of the name that appears
181
- in the SMT documentation.
182
-
183
- See the [DC library API](http://origen-sdk.org/testers/api/OrigenTesters/SmartestBasedTester/Base/TestMethods/DcTml.html)
184
- and the [AC library API](http://origen-sdk.org/testers/api/OrigenTesters/SmartestBasedTester/Base/TestMethods/AcTml.html)
185
- for up-to-date details of the implemented test methods and the parameter names.
186
-
187
- However, some of these test methods are not particularly good and the recommendation from Advantest these
188
- days is generally not to use them.
189
-
190
- Since that means there is now a void where a universally available test method library should be, work is
191
- underway to provide an Origen standard test method library.
192
- The aim of this is to provide a complete generation solution from Origen so that those who have
193
- a fairly conventional use case can rapidly build a complete test program from off-the-shelf
194
- components, but that is still a work in progress and not yet ready for prime time use.
195
-
196
- Many users of the V93K program generator however, are likely to want to use it in combination
197
- with their own custom test method library...
198
-
199
108
  #### Custom Test Methods
200
109
 
201
110
  An API exists to define the naming and parameter signature of test methods provided by
@@ -402,55 +311,4 @@ For a more advanced integration which gets rid of the need to even call `add_my_
402
311
  can refer to how the `origen_std_lib` interface integration works
403
312
  [here](https://github.com/Origen-SDK/origen_std_lib/blob/master/plugin/lib/origen_std_lib.rb).
404
313
 
405
- ### Test Name Uniqueness
406
-
407
- Test (suite) naming collisions can occur when importing multiple independent test flow modules into a
408
- V93K master flow file.
409
-
410
- To prevent that from ever occurring, Origen will generate and append a unique signature to the end of
411
- all test names by default, for example:
412
-
413
- ~~~ruby
414
- t = test_suites.add("my_test_name", options)
415
-
416
- t.name # => "my_test_name_E32ABE8"
417
- ~~~
418
-
419
- Applications can override this default behavior by setting the corresponding test interface attribute,
420
- `unique_test_names`, to one of the following values:
421
-
422
- * `:signature` - this is the default which will generate a unique signature as shown in the above example
423
- * `nil` - no value will be appended to the test names at all
424
- * `:flowname` - the name of the current top-level flow will be appended to all test names
425
- * Setting this attribute to any other value will append that value directly to all test names
426
-
427
- This attribute can be set in the [environment file](<%= path 'guides/runtime/environment' %>) when instantiating
428
- the tester:
429
-
430
- ~~~ruby
431
- OrigenTesters::V93K.new unique_test_names: nil
432
- ~~~
433
-
434
- This provides a single place to control the behavior within a [monolithic application architecture](<%= path 'guides/starting/architecture/#Monolithic_Application_Architecture' %>).
435
-
436
- However, under a [distributed application architecture](<%= path 'guides/starting/architecture/#Distributed_Application_Architecture' %>)
437
- a given test flow module may be generated under a target/environment that is controlled by a 3rd party.
438
-
439
- In that case, it is recommended to either set it at the flow-level, which will override any setting set at the
440
- environment-level:
441
-
442
- ~~~ruby
443
- # program/wt1_start.rb
444
- Flow.create interface: 'MyApp::Interface', unique_test_names: 'wt1' do
445
-
446
- end
447
- ~~~
448
-
449
- Or, it can be set directly within your interface logic which will take the highest precedence:
450
-
451
- ~~~ruby
452
- # lib/my_app/interface.rb
453
- self.unique_test_names = :flowname
454
- ~~~
455
-
456
314
  % end
@@ -0,0 +1,165 @@
1
+ % render "layouts/guides.html" do
2
+
3
+ This guide covers aspects of the V93K program generator API that are unique to SmarTest 7.
4
+
5
+ Be sure to also consult the [V93K Common API guide](<%= path "guides/program/v93k" %>) which is also applicable
6
+ to SMT7.
7
+
8
+ The SMT7 API is enabled by default when instantiating a V93K test environment:
9
+
10
+ ~~~ruby
11
+ # environment/v93k_smt7.rb
12
+ OrigenTesters::V93K.new
13
+ ~~~
14
+
15
+ ### Interface Considerations
16
+
17
+ #### Built-in Test Methods
18
+
19
+ SmarTest comes with a standard AC and DC test method library and Origen provides a built-in API to
20
+ generate a test flow which uses those test methods, here are some examples:
21
+
22
+ ~~~ruby
23
+ # Execute a functional test
24
+ test_method = test_methods.ac_tml.ac_test.functional_test
25
+
26
+ # A basic DC voltage measurement
27
+ test_method = test_methods.dc_tml.dc_test.general_pmu force_mode: 'CURR', force_value: 100.uA
28
+ ~~~
29
+
30
+ Generally the parameter naming is the lower-cased and underscored version of the name that appears
31
+ in the SMT documentation.
32
+
33
+ See the [DC library API](http://origen-sdk.org/testers/api/OrigenTesters/SmartestBasedTester/Base/TestMethods/DcTml.html)
34
+ and the [AC library API](http://origen-sdk.org/testers/api/OrigenTesters/SmartestBasedTester/Base/TestMethods/AcTml.html)
35
+ for up-to-date details of the implemented test methods and the parameter names.
36
+
37
+ However, some of these test methods are not particularly good and the recommendation from Advantest these
38
+ days is generally not to use them.
39
+
40
+ Since that means there is now a void where a universally available test method library should be, work is
41
+ underway to provide an Origen standard test method library.
42
+ The aim of this is to provide a complete generation solution from Origen so that those who have
43
+ a fairly conventional use case can rapidly build a complete test program from off-the-shelf
44
+ components, but that is still a work in progress and not yet ready for prime time use.
45
+
46
+ Many users of the V93K program generator however, are likely to want to use it in combination
47
+ with their own custom test method library, see [how to define one here](<%= path "guides/program/v93k/#Custom_Test_Methods" %>).
48
+
49
+ ### Flow Considerations
50
+
51
+ By default, a top-level `Flow.create` call in Origen will generate a standalone V93K testflow file which is
52
+ internally wrapped by a flow group, like this:
53
+
54
+ ~~~text
55
+ group <FLOW_NAME> {
56
+ // Flow content here
57
+ }
58
+ ~~~
59
+
60
+ When such flows are imported into a master flow file, SmarTest does not provide a standard enable mechanism
61
+ to control which sub-flows are executed.
62
+
63
+ However, Origen provides the ability to generate V93K flow modules with an enable-word wrapper, thereby allowing
64
+ the top-level flow to easily enable/disable the execution of flow modules via flow variables.
65
+
66
+ By enabling this feature in the target like this:
67
+
68
+ ~~~ruby
69
+ OrigenTesters::V93K.new(add_flow_enable: :enabled)
70
+ ~~~
71
+
72
+ the flow will now generate like this:
73
+
74
+ ~~~text
75
+ group <FLOW_NAME> {
76
+ if @<FLOW_NAME>_ENABLE == 1 {
77
+ // Flow content here
78
+ }
79
+ }
80
+ ~~~
81
+
82
+ The `@<FLOW_NAME>_ENABLE` variable will be initialized to 1 in the generated variables file for the given flow,
83
+ meaning that the module will run by default if the top-level flow does nothing with this variable.
84
+
85
+ Alternatively, the variable can be initialized to off like this:
86
+
87
+ ~~~ruby
88
+ OrigenTesters::V93K.new(add_flow_enable: :disabled)
89
+ ~~~
90
+
91
+ Meaning that by default, the module will not run and the top-level flow must always enable it by including
92
+ `@<FLOW_NAME>_ENABLE = 1` before hitting the module.
93
+
94
+ Setting this attribute in the target means that it will apply to all flows. Alternatively, it can be set within
95
+ the flow itself (or the interface) if it is necessary to use this feature for only a subset of flows, or to override
96
+ the default setting for a particular flow.
97
+
98
+ Here is an example:
99
+
100
+ ~~~ruby
101
+ Flow.create interface: 'MyApp::Interface' do
102
+
103
+ # Ensure that this flow is always generated with an enable word wrapper that is enabled by default
104
+ self.add_flow_enable = :enabled
105
+
106
+ # Some functional test
107
+ func :blah
108
+ end
109
+ ~~~
110
+
111
+ This same API may be used to implement similar features on other platforms in future, but for now only the V93K is implemented.
112
+
113
+ ### Test Name Uniqueness
114
+
115
+ Test (suite) naming collisions can occur when importing multiple independent test flow modules into a
116
+ V93K master flow file.
117
+
118
+ To prevent that from ever occurring, Origen will generate and append a unique signature to the end of
119
+ all test names by default, for example:
120
+
121
+ ~~~ruby
122
+ t = test_suites.add("my_test_name", options)
123
+
124
+ t.name # => "my_test_name_E32ABE8"
125
+ ~~~
126
+
127
+ Applications can override this default behavior by setting the corresponding test interface attribute,
128
+ `unique_test_names`, to one of the following values:
129
+
130
+ * `:signature` - this is the default which will generate a unique signature as shown in the above example
131
+ * `nil` - no value will be appended to the test names at all
132
+ * `:flowname` - the name of the current top-level flow will be appended to all test names
133
+ * Setting this attribute to any other value will append that value directly to all test names
134
+
135
+ This attribute can be set in the [environment file](<%= path 'guides/runtime/environment' %>) when instantiating
136
+ the tester:
137
+
138
+ ~~~ruby
139
+ OrigenTesters::V93K.new unique_test_names: nil
140
+ ~~~
141
+
142
+ This provides a single place to control the behavior within a [monolithic application architecture](<%= path 'guides/starting/architecture/#Monolithic_Application_Architecture' %>).
143
+
144
+ However, under a [distributed application architecture](<%= path 'guides/starting/architecture/#Distributed_Application_Architecture' %>)
145
+ a given test flow module may be generated under a target/environment that is controlled by a 3rd party.
146
+
147
+ In that case, it is recommended to either set it at the flow-level, which will override any setting set at the
148
+ environment-level:
149
+
150
+ ~~~ruby
151
+ # program/wt1_start.rb
152
+ Flow.create interface: 'MyApp::Interface', unique_test_names: 'wt1' do
153
+
154
+ end
155
+ ~~~
156
+
157
+ Or, it can be set directly within your interface logic which will take the highest precedence:
158
+
159
+ ~~~ruby
160
+ # lib/my_app/interface.rb
161
+ self.unique_test_names = :flowname
162
+ ~~~
163
+
164
+
165
+ % end
@@ -0,0 +1,112 @@
1
+ % render "layouts/guides.html" do
2
+
3
+ This guide covers aspects of the V93K program generator API that are unique to SmarTest 8.
4
+
5
+ Be sure to also consult the [V93K Common API guide](<%= path "guides/program/v93k" %>) which is also applicable
6
+ to SMT8.
7
+
8
+ The SMT8 API is enabled by adding `smt_version: 8` when instantiating a V93K test environment:
9
+
10
+ ~~~ruby
11
+ # environment/v93k_smt8.rb
12
+ OrigenTesters::V93K.new smt_version: 8
13
+ ~~~
14
+
15
+ ### Package Structure
16
+
17
+ The V93K SMT8 test program generator will create a package with the following structure:
18
+
19
+ ~~~text
20
+ MyAppNamespace/
21
+ ├── common/
22
+ │ └── limits.ods
23
+ ├── flows/
24
+ │ ├── my_flow_1/
25
+ │ │ └── MY_SUB_FLOW.flow
26
+ │ ├── MY_FLOW_2.flow
27
+ │ └── MY_FLOW_1.flow
28
+ └── limits/
29
+ ├── Main.MY_FLOW_2_TESTS.csv
30
+ └── Main.MY_FLOW_1_TESTS.csv
31
+ ~~~
32
+
33
+ Here is a description of each component:
34
+
35
+
36
+ ##### MyAppNamespace/
37
+
38
+ This is the name of this test program package, it should be unique and the entire directory is intended to be
39
+ dropped directly into your test program's `src/` directory.
40
+ By default, your Origen application's namespace is used, though this can be overridden within your V93K environment
41
+ file:
42
+
43
+ ~~~ruby
44
+ # environment/v93k_smt8.rb
45
+ OrigenTesters::V93K.new smt_version: 8,
46
+ package_namespace: 'something_else'
47
+ ~~~
48
+
49
+ ##### common/limits.ods
50
+
51
+ Contains the limits tables for all flows.
52
+
53
+ ##### flows/
54
+
55
+ A top-level test program flow file in Origen will generate a correspondingly named file in the `flows/` directory,
56
+ where the name of the generated file is the upper-cased version of the source file name.
57
+ If the flow imports sub-flows or contains groups, then those will be contained in a directory named after the
58
+ lower-cased version of the flow name.
59
+
60
+ ##### limits/
61
+
62
+ Origen generates the limts into CSV files before combining them into `common/limits.ods`. These intermediate files
63
+ will not be used by the test program but they are kept around in case they are useful.
64
+
65
+ ### Flow Integration
66
+
67
+ The generated flow(s) should be integrated into a top-level (Main) flow like this:
68
+
69
+ ~~~java
70
+ flow Main {
71
+ setup {
72
+ flow MY_FLOW_1 calls MyAppNamespace.flows.MY_FLOW_1 {}
73
+ flow MY_FLOW_2 calls MyAppNamespace.flows.MY_FLOW_2 {}
74
+ }
75
+
76
+ execute {
77
+ MY_FLOW_1.execute();
78
+ MY_FLOW_2.execute();
79
+ }
80
+ }
81
+ ~~~
82
+
83
+ The `add_flow_enable:` tester option [as described in the SMT7 guide](<%= path "guides/program/v93ksmt7/#Flow_Considerations" %>)
84
+ is also supported by the SMT8 generator, though it may not make as much sense to use it in that case.
85
+ It generates an `ENABLE` flow parameter which could be used something like this:
86
+
87
+
88
+ ~~~java
89
+ flow Main {
90
+ setup {
91
+ flow MY_FLOW_1 calls MyAppNamespace.flows.MY_FLOW_1 {}
92
+ flow MY_FLOW_2 calls MyAppNamespace.flows.MY_FLOW_2 {}
93
+ }
94
+
95
+ execute {
96
+ // Skip FLOW_1 and run only FLOW_2
97
+ MY_FLOW_1.ENABLE = 0;
98
+ MY_FLOW_2.ENABLE = 1;
99
+
100
+ MY_FLOW_1.execute();
101
+ MY_FLOW_2.execute();
102
+ }
103
+ }
104
+ ~~~
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+ % end