origen 0.2.6 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/bin/origen +3 -1
  3. data/config/boot.rb +1 -7
  4. data/config/commands.rb +0 -1
  5. data/config/version.rb +2 -2
  6. data/lib/c99/{j750_interface.rb → ate_interface.rb} +3 -11
  7. data/lib/c99/doc_interface.rb +1 -1
  8. data/lib/origen.rb +9 -30
  9. data/lib/origen/application.rb +10 -8
  10. data/lib/origen/application/configuration.rb +13 -26
  11. data/lib/origen/application/plugins.rb +122 -0
  12. data/lib/origen/application/plugins_manager.rb +16 -254
  13. data/lib/origen/application/release.rb +2 -2
  14. data/lib/origen/application/runner.rb +2 -4
  15. data/lib/origen/chips.rb +0 -0
  16. data/lib/origen/chips/chip.rb +0 -0
  17. data/lib/origen/chips/design_entry.rb +0 -0
  18. data/lib/origen/chips/doc_entry.rb +0 -0
  19. data/lib/origen/chips/note.rb +0 -0
  20. data/lib/origen/commands.rb +4 -44
  21. data/lib/origen/commands/compile.rb +1 -2
  22. data/lib/origen/commands/generate.rb +1 -1
  23. data/lib/origen/commands/interactive.rb +1 -2
  24. data/lib/origen/commands/plugin.rb +49 -56
  25. data/lib/origen/commands/program.rb +1 -1
  26. data/lib/origen/commands/rc.rb +2 -2
  27. data/lib/origen/commands/version.rb +2 -17
  28. data/lib/origen/commands_global.rb +3 -0
  29. data/lib/origen/file_handler.rb +10 -10
  30. data/lib/origen/generator.rb +1 -1
  31. data/lib/origen/generator/job.rb +1 -1
  32. data/lib/origen/generator/pattern.rb +2 -2
  33. data/lib/origen/generator/pattern_finder.rb +10 -9
  34. data/lib/origen/pins/pin.rb +0 -0
  35. data/lib/origen/regression_manager.rb +0 -0
  36. data/lib/origen/remote_manager.rb +2 -8
  37. data/lib/origen/revision_control/design_sync.rb +0 -0
  38. data/lib/origen/revision_control/git.rb +0 -0
  39. data/lib/origen/specs.rb +0 -0
  40. data/lib/origen/specs/checkers.rb +0 -0
  41. data/lib/origen/specs/creation_info.rb +0 -0
  42. data/lib/origen/specs/exhibit.rb +0 -0
  43. data/lib/origen/specs/spec.rb +0 -0
  44. data/lib/origen/utility.rb +0 -1
  45. data/lib/origen/utility/diff.rb +0 -0
  46. metadata +42 -119
  47. data/lib/origen/import_manager.rb +0 -596
  48. data/lib/origen/nvm.rb +0 -6
  49. data/lib/origen/nvm/block_array.rb +0 -72
  50. data/lib/origen/tester.rb +0 -56
  51. data/lib/origen/tester/api.rb +0 -277
  52. data/lib/origen/tester/bdm/bdm.rb +0 -25
  53. data/lib/origen/tester/doc/doc.rb +0 -226
  54. data/lib/origen/tester/doc/generator.rb +0 -126
  55. data/lib/origen/tester/doc/generator/flow.rb +0 -71
  56. data/lib/origen/tester/doc/generator/flow_line.rb +0 -203
  57. data/lib/origen/tester/doc/generator/test.rb +0 -68
  58. data/lib/origen/tester/doc/generator/test_group.rb +0 -66
  59. data/lib/origen/tester/doc/generator/tests.rb +0 -47
  60. data/lib/origen/tester/doc/model.rb +0 -162
  61. data/lib/origen/tester/generator.rb +0 -271
  62. data/lib/origen/tester/generator/flow_control_api.rb +0 -606
  63. data/lib/origen/tester/generator/identity_map.rb +0 -25
  64. data/lib/origen/tester/generator/placeholder.rb +0 -13
  65. data/lib/origen/tester/generator/test_numberer.rb +0 -25
  66. data/lib/origen/tester/interface.rb +0 -154
  67. data/lib/origen/tester/j750/files.rb +0 -45
  68. data/lib/origen/tester/j750/generator.rb +0 -203
  69. data/lib/origen/tester/j750/generator/flow.rb +0 -123
  70. data/lib/origen/tester/j750/generator/flow_line.rb +0 -288
  71. data/lib/origen/tester/j750/generator/patgroup.rb +0 -111
  72. data/lib/origen/tester/j750/generator/patgroups.rb +0 -41
  73. data/lib/origen/tester/j750/generator/patset.rb +0 -111
  74. data/lib/origen/tester/j750/generator/patsets.rb +0 -41
  75. data/lib/origen/tester/j750/generator/templates/flow.txt.erb +0 -9
  76. data/lib/origen/tester/j750/generator/templates/instances.txt.erb +0 -16
  77. data/lib/origen/tester/j750/generator/templates/patgroups.txt.erb +0 -8
  78. data/lib/origen/tester/j750/generator/templates/patsets.txt.erb +0 -10
  79. data/lib/origen/tester/j750/generator/test_instance.rb +0 -846
  80. data/lib/origen/tester/j750/generator/test_instance_group.rb +0 -60
  81. data/lib/origen/tester/j750/generator/test_instances.rb +0 -182
  82. data/lib/origen/tester/j750/j750.rb +0 -845
  83. data/lib/origen/tester/j750/j750_hpt.rb +0 -35
  84. data/lib/origen/tester/j750/parser.rb +0 -104
  85. data/lib/origen/tester/j750/parser/ac_spec.rb +0 -11
  86. data/lib/origen/tester/j750/parser/ac_specs.rb +0 -0
  87. data/lib/origen/tester/j750/parser/dc_spec.rb +0 -36
  88. data/lib/origen/tester/j750/parser/dc_specs.rb +0 -50
  89. data/lib/origen/tester/j750/parser/descriptions.rb +0 -340
  90. data/lib/origen/tester/j750/parser/flow.rb +0 -111
  91. data/lib/origen/tester/j750/parser/flow_line.rb +0 -207
  92. data/lib/origen/tester/j750/parser/flows.rb +0 -23
  93. data/lib/origen/tester/j750/parser/pattern_set.rb +0 -94
  94. data/lib/origen/tester/j750/parser/pattern_sets.rb +0 -33
  95. data/lib/origen/tester/j750/parser/test_instance.rb +0 -322
  96. data/lib/origen/tester/j750/parser/test_instances.rb +0 -26
  97. data/lib/origen/tester/j750/parser/timeset.rb +0 -15
  98. data/lib/origen/tester/j750/parser/timesets.rb +0 -0
  99. data/lib/origen/tester/jlink/jlink.rb +0 -33
  100. data/lib/origen/tester/parser.rb +0 -24
  101. data/lib/origen/tester/parser/description_lookup.rb +0 -64
  102. data/lib/origen/tester/parser/searchable_array.rb +0 -32
  103. data/lib/origen/tester/parser/searchable_hash.rb +0 -32
  104. data/lib/origen/tester/time.rb +0 -338
  105. data/lib/origen/tester/timing.rb +0 -253
  106. data/lib/origen/tester/ultraflex/files.rb +0 -45
  107. data/lib/origen/tester/ultraflex/generator.rb +0 -200
  108. data/lib/origen/tester/ultraflex/generator/flow.rb +0 -119
  109. data/lib/origen/tester/ultraflex/generator/flow_line.rb +0 -269
  110. data/lib/origen/tester/ultraflex/generator/patgroup.rb +0 -111
  111. data/lib/origen/tester/ultraflex/generator/patgroups.rb +0 -41
  112. data/lib/origen/tester/ultraflex/generator/patset.rb +0 -111
  113. data/lib/origen/tester/ultraflex/generator/patsets.rb +0 -41
  114. data/lib/origen/tester/ultraflex/generator/templates/flow.txt.erb +0 -9
  115. data/lib/origen/tester/ultraflex/generator/templates/instances.txt.erb +0 -16
  116. data/lib/origen/tester/ultraflex/generator/templates/patgroups.txt.erb +0 -8
  117. data/lib/origen/tester/ultraflex/generator/templates/patsets.txt.erb +0 -10
  118. data/lib/origen/tester/ultraflex/generator/test_instance.rb +0 -622
  119. data/lib/origen/tester/ultraflex/generator/test_instance_group.rb +0 -60
  120. data/lib/origen/tester/ultraflex/generator/test_instances.rb +0 -174
  121. data/lib/origen/tester/ultraflex/parser.rb +0 -104
  122. data/lib/origen/tester/ultraflex/parser/ac_spec.rb +0 -11
  123. data/lib/origen/tester/ultraflex/parser/ac_specs.rb +0 -0
  124. data/lib/origen/tester/ultraflex/parser/dc_spec.rb +0 -36
  125. data/lib/origen/tester/ultraflex/parser/dc_specs.rb +0 -50
  126. data/lib/origen/tester/ultraflex/parser/descriptions.rb +0 -342
  127. data/lib/origen/tester/ultraflex/parser/flow.rb +0 -111
  128. data/lib/origen/tester/ultraflex/parser/flow_line.rb +0 -207
  129. data/lib/origen/tester/ultraflex/parser/flows.rb +0 -23
  130. data/lib/origen/tester/ultraflex/parser/pattern_set.rb +0 -94
  131. data/lib/origen/tester/ultraflex/parser/pattern_sets.rb +0 -33
  132. data/lib/origen/tester/ultraflex/parser/test_instance.rb +0 -262
  133. data/lib/origen/tester/ultraflex/parser/test_instances.rb +0 -26
  134. data/lib/origen/tester/ultraflex/parser/timeset.rb +0 -15
  135. data/lib/origen/tester/ultraflex/parser/timesets.rb +0 -0
  136. data/lib/origen/tester/ultraflex/ultraflex.rb +0 -759
  137. data/lib/origen/tester/v93k/generator.rb +0 -80
  138. data/lib/origen/tester/v93k/generator/flow.rb +0 -63
  139. data/lib/origen/tester/v93k/generator/flow_node.rb +0 -17
  140. data/lib/origen/tester/v93k/generator/flow_node/print.rb +0 -10
  141. data/lib/origen/tester/v93k/generator/pattern.rb +0 -16
  142. data/lib/origen/tester/v93k/generator/pattern_master.rb +0 -54
  143. data/lib/origen/tester/v93k/generator/templates/_test_method.txt.erb +0 -6
  144. data/lib/origen/tester/v93k/generator/templates/_test_suite.txt.erb +0 -11
  145. data/lib/origen/tester/v93k/generator/templates/template.flow.erb +0 -121
  146. data/lib/origen/tester/v93k/generator/templates/template.pmfl.erb +0 -9
  147. data/lib/origen/tester/v93k/generator/test_function.rb +0 -103
  148. data/lib/origen/tester/v93k/generator/test_functions.rb +0 -79
  149. data/lib/origen/tester/v93k/generator/test_method.rb +0 -46
  150. data/lib/origen/tester/v93k/generator/test_methods.rb +0 -75
  151. data/lib/origen/tester/v93k/generator/test_suite.rb +0 -54
  152. data/lib/origen/tester/v93k/generator/test_suites.rb +0 -65
  153. data/lib/origen/tester/v93k/v93k.rb +0 -420
  154. data/lib/origen/tester/vector.rb +0 -86
  155. data/lib/origen/tester/vector_generator.rb +0 -637
  156. data/lib/origen/tester/vector_pipeline.rb +0 -150
  157. data/lib/origen/utility/design_sync.rb +0 -494
  158. data/lib/origen/version_checker.rb +0 -117
@@ -1,123 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- module Generator
5
- class Flow
6
- include Origen::Tester::Generator
7
- include Origen::Tester::Generator::FlowControlAPI
8
-
9
- TEMPLATE = "#{Origen.top}/lib/origen/tester/j750/generator/templates/flow.txt.erb"
10
- OUTPUT_POSTFIX = 'flow'
11
-
12
- def add(type, options = {})
13
- ins = false
14
- options = save_context(options) if [:test, :cz].include?(type)
15
- branch_unless_enabled(options) do |options|
16
- ins = track_relationships(options) do |options|
17
- FlowLine.new(type, options)
18
- end
19
- collection << ins unless Origen.interface.resources_mode?
20
- if ins.test?
21
- c = Origen.interface.consume_comments
22
- unless Origen.interface.resources_mode?
23
- Origen.interface.descriptions.add_for_test_usage(ins.parameter, Origen.interface.top_level_flow, c)
24
- end
25
- else
26
- Origen.interface.discard_comments
27
- end
28
- end
29
- ins
30
- end
31
-
32
- def logprint(message, options = {})
33
- message.gsub!(/\s/, '_')
34
- add(:logprint, options.merge(parameter: message))
35
- end
36
-
37
- def test(instance, options = {})
38
- add(:test, options.merge(parameter: instance))
39
- end
40
-
41
- def cz(instance, cz_setup, options = {})
42
- add(:cz, options.merge(parameter: instance, cz_setup: cz_setup))
43
- end
44
-
45
- def goto(label, options = {})
46
- add(:goto, options.merge(parameter: label))
47
- end
48
-
49
- def nop(options = {})
50
- add(:nop, options.merge(parameter: nil))
51
- end
52
-
53
- def set_device(options = {})
54
- add(:set_device, options)
55
- end
56
-
57
- def set_error_bin(options = {})
58
- add(:set_error_bin, options)
59
- end
60
-
61
- def enable_flow_word(word, options = {})
62
- add(:enable_flow_word, options.merge(parameter: word))
63
- end
64
-
65
- def disable_flow_word(word, options = {})
66
- add(:disable_flow_word, options.merge(parameter: word))
67
- end
68
-
69
- # All tests generated will not run unless the given enable word is asserted.
70
- #
71
- # This is specially implemented for J750 since it does not have a native
72
- # support for flow word not enabled.
73
- # It will generate a goto branch around the tests contained with the block
74
- # if the given flow word is enabled.
75
- def unless_enable(word, options = {})
76
- if options[:or]
77
- yield
78
- else
79
- @unless_enable_block = word
80
- options = options.merge(unless_enable: word)
81
- branch_unless_enabled(options.merge(_force_unless_enable: true)) do
82
- yield
83
- end
84
- @unless_enable_block = nil
85
- end
86
- end
87
- alias_method :unless_enabled, :unless_enable
88
-
89
- def start_flow_branch(identifier, options = {})
90
- goto(identifier, options)
91
- end
92
-
93
- def skip(identifier = nil, options = {})
94
- identifier, options = nil, identifier if identifier.is_a?(Hash)
95
- identifier = generate_unique_label(identifier)
96
- goto(identifier, options)
97
- yield
98
- nop(label: identifier)
99
- end
100
-
101
- private
102
-
103
- # If the test has an unless_enable then branch around it
104
- def branch_unless_enabled(options)
105
- word = options.delete(:unless_enable) || options.delete(:unless_enabled)
106
- if word && (word != @unless_enable_block || options.delete(:_force_unless_enable))
107
- # Not sure if this is really required, but duplicating these hashes here to ensure
108
- # that all other flow context keys are preserved and applied to the branch lines
109
- orig_options = options.merge({})
110
- close_options = options.merge({})
111
- label = generate_unique_label
112
- goto(label, options.merge(if_enable: word))
113
- yield orig_options
114
- nop(close_options.merge(label: label))
115
- else
116
- yield options
117
- end
118
- end
119
- end
120
- end
121
- end
122
- end
123
- end
@@ -1,288 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- module Generator
5
- class FlowLine
6
- attr_accessor :type, :id, :cz_setup # cz_setup is a virtual attrib since it is not part of the regular flow line
7
- # cz_setup combine with instance name when characterize opcode is used
8
-
9
- # Attributes for each flow line, these must be declared in the order they are to be output
10
- ATTRS = %w(label enable job part env opcode parameter tname tnum bin_pass bin_fail
11
- sort_pass sort_fail result flag_pass flag_fail state
12
- group_specifier group_sense group_condition group_name
13
- device_sense device_condition device_name
14
- debug_assume debug_sites comment
15
- )
16
-
17
- # Map any aliases to the official names here, multiple aliases for a given attribute
18
- # are allowed
19
- ALIASES = {
20
- bin: :bin_fail,
21
- softbin: :sort_fail,
22
- soft_bin: :sort_fail,
23
- name: :tname,
24
- number: :tnum,
25
- if_enable: :enable,
26
- if_enabled: :enable,
27
- enabled: :enable,
28
- # Aliases can also be used to set defaults on multiple attributes like this,
29
- # use :value to refer to the value passed in to the given alias
30
- flag_false: { device_condition: 'flag-false',
31
- device_name: :value
32
- },
33
- flag_true: { device_condition: 'flag-true',
34
- device_name: :value
35
- },
36
- flag_false_any: { group_specifier: 'any-active',
37
- group_condition: 'flag-false',
38
- group_name: :value
39
- },
40
- flag_false_all: { group_specifier: 'all-active',
41
- group_condition: 'flag-false',
42
- group_name: :value
43
- },
44
- flag_true_any: { group_specifier: 'any-active',
45
- group_condition: 'flag-true',
46
- group_name: :value
47
- },
48
- flag_true_all: { group_specifier: 'all-active',
49
- group_condition: 'flag-true',
50
- group_name: :value
51
- },
52
- flag_clear: { device_condition: 'flag-clear',
53
- device_name: :value
54
- }
55
- }
56
-
57
- # Assign attribute defaults here, generally this should match whatever defaults
58
- # Teradyne has set whenever you create a new test instance, etc.
59
- DEFAULTS = {
60
- test: {
61
- opcode: 'Test',
62
- result: 'Fail'
63
- },
64
- cz: {
65
- opcode: 'characterize',
66
- result: 'None'
67
- },
68
- goto: {
69
- opcode: 'goto'
70
- },
71
- nop: {
72
- opcode: 'nop'
73
- },
74
- set_device: {
75
- opcode: 'set-device'
76
- },
77
- set_error_bin: {
78
- opcode: 'set-error-bin'
79
- },
80
- enable_flow_word: {
81
- opcode: 'enable-flow-word'
82
- },
83
- disable_flow_word: {
84
- opcode: 'disable-flow-word'
85
- },
86
- logprint: {
87
- opcode: 'logprint'
88
- }
89
- }
90
-
91
- # Generate accessors for all attributes and their aliases
92
- ATTRS.each do |attr|
93
- attr_accessor attr.to_sym
94
- end
95
-
96
- ALIASES.each do |_alias, val|
97
- if val.is_a? Hash
98
- define_method("#{_alias}=") do |v|
99
- val.each do |k, _v|
100
- myval = _v == :value ? v : _v
101
- send("#{k}=", myval)
102
- end
103
- end
104
- else
105
- define_method("#{_alias}=") do |v|
106
- send("#{val}=", v)
107
- end
108
- define_method("#{_alias}") do
109
- send(val)
110
- end
111
- end
112
- end
113
-
114
- def initialize(type, attrs = {})
115
- @ignore_missing_instance = attrs.delete(:instance_not_available)
116
- self.cz_setup = attrs.delete(:cz_setup)
117
- @type = type
118
- # Set the defaults
119
- DEFAULTS[@type.to_sym].each do |k, v|
120
- send("#{k}=", v) if self.respond_to?("#{k}=")
121
- end
122
- # Then the values that have been supplied
123
- attrs.each do |k, v|
124
- send("#{k}=", v) if self.respond_to?("#{k}=")
125
- end
126
- end
127
-
128
- def parameter=(value)
129
- if (@type == :test || @test == :cz) && !@ignore_missing_instance
130
- if value.is_a?(String) || value.is_a?(Symbol)
131
- fail "You must supply the actual test instance object for #{value} when adding it to the flow"
132
- end
133
- end
134
- @parameter = value
135
- end
136
-
137
- def parameter
138
- # When referring to the test instance take the opportunity to refresh the current
139
- # version of the test instance
140
- @parameter = Origen.interface.identity_map.current_version_of(@parameter)
141
- end
142
-
143
- # Returns the fully formatted flow line for insertion into a flow sheet
144
- def to_s
145
- l = "\t"
146
- ATTRS.each do |attr|
147
- if attr == 'parameter'
148
- ins = parameter
149
- if ins.respond_to?(:name)
150
- l += "#{ins.name}"
151
- else
152
- l += "#{ins}"
153
- end
154
- if cz_setup
155
- l += " #{cz_setup}\t"
156
- else
157
- l += "\t"
158
- end
159
- else
160
- l += "#{send(attr)}\t"
161
- end
162
- end
163
- "#{l}"
164
- end
165
-
166
- def job
167
- if !if_jobs.empty? && !unless_jobs.empty?
168
- fail "Both if and unless jobs have been defined for test: #{parameter}"
169
- elsif !if_jobs.empty?
170
- if_jobs.join(',')
171
- elsif !unless_jobs.empty?
172
- unless_jobs.map { |j| "!#{j}" }.join(',')
173
- else
174
- ''
175
- end
176
- end
177
- alias_method :jobs, :job
178
-
179
- def unless_enable=(*_args)
180
- end
181
- alias_method :unless_enabled=, :unless_enable=
182
-
183
- def if_jobs
184
- @if_jobs ||= []
185
- end
186
-
187
- def unless_jobs
188
- @unless_jobs ||= []
189
- end
190
-
191
- def if_job=(jobs)
192
- [jobs].flatten.compact.each do |job|
193
- job = job.to_s.upcase
194
- if job =~ /!/
195
- self.unless_job = job
196
- else
197
- if_jobs << job unless if_jobs.include?(job)
198
- end
199
- end
200
- end
201
- alias_method :if_jobs=, :if_job=
202
- alias_method :add_if_jobs, :if_job=
203
- alias_method :add_if_job, :if_job=
204
-
205
- def unless_job=(jobs)
206
- [jobs].flatten.compact.each do |job|
207
- job = job.to_s.upcase
208
- job.gsub!('!', '')
209
- unless_jobs << job unless unless_jobs.include?(job)
210
- end
211
- end
212
- alias_method :unless_jobs=, :unless_job=
213
- alias_method :add_unless_jobs, :unless_job=
214
- alias_method :add_unless_job, :unless_job=
215
-
216
- def continue_on_fail
217
- self.result = 'None'
218
- end
219
-
220
- def continue_pass
221
- self.result = 'Pass'
222
- end
223
-
224
- def debug_assume_pass
225
- self.debug_assume = 'Pass'
226
- end
227
-
228
- def debug_assume_fail
229
- self.debug_assume = 'Fail'
230
- end
231
-
232
- # def debug_sites
233
- # self.debug_sites = "All"
234
- # end
235
-
236
- def set_flag_on_fail
237
- self.flag_fail = "#{id}_FAILED"
238
- end
239
-
240
- def set_flag_on_pass
241
- self.flag_pass = "#{id}_PASSED"
242
- end
243
-
244
- def set_flag_on_ran
245
- self.flag_pass = "#{id}_RAN"
246
- end
247
-
248
- def run_if_any_passed(parent)
249
- parent.continue_on_fail
250
- self.flag_true_any = parent.set_flag_on_pass
251
- end
252
-
253
- def run_if_all_passed(parent)
254
- parent.continue_on_fail
255
- self.flag_true_all = parent.set_flag_on_pass
256
- end
257
-
258
- def run_if_any_failed(parent)
259
- parent.continue_on_fail
260
- self.flag_true_any = parent.set_flag_on_fail
261
- end
262
-
263
- def run_if_all_failed(parent)
264
- parent.continue_on_fail
265
- self.flag_true_all = parent.set_flag_on_fail
266
- end
267
-
268
- def id
269
- @id || "#{parameter}_#{unique_counter}"
270
- end
271
-
272
- def unique_counter
273
- @unique_counter ||= self.class.unique_counter
274
- end
275
-
276
- def self.unique_counter
277
- @ix ||= -1
278
- @ix += 1
279
- end
280
-
281
- def test?
282
- @type == :test
283
- end
284
- end
285
- end
286
- end
287
- end
288
- end
@@ -1,111 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- module Generator
5
- class Patgroup
6
- attr_accessor :index
7
-
8
- class Pattern
9
- ATTRS = %w(group_name pattern_file comment)
10
-
11
- ALIASES = {
12
- pattern: :pattern_file
13
- }
14
-
15
- DEFAULTS = {
16
- }
17
-
18
- # Generate accessors for all attributes and their aliases
19
- ATTRS.each do |attr|
20
- attr_accessor attr.to_sym
21
- end
22
-
23
- ALIASES.each do |_alias, val|
24
- define_method("#{_alias}=") do |v|
25
- send("#{val}=", v)
26
- end
27
- define_method("#{_alias}") do
28
- send(val)
29
- end
30
- end
31
-
32
- def initialize(patgroup, attrs = {})
33
- # Set the defaults
34
- DEFAULTS.each do |k, v|
35
- send("#{k}=", v)
36
- end
37
- # Then the values that have been supplied
38
- self.group_name = patgroup
39
- attrs.each do |k, v|
40
- send("#{k}=", v)
41
- end
42
- end
43
-
44
- def to_s
45
- l = "\t"
46
- ATTRS.each do |attr|
47
- l += "#{send(attr)}\t"
48
- end
49
- "#{l}"
50
- end
51
- end
52
-
53
- # Specify multiple patterns by passing an array of attributes
54
- # as the 2nd argument:
55
- #
56
- # Patset.new("mrd1_pgrp", :pattern => "nvm_mrd1.PAT")
57
- #
58
- # Patset.new("mrd1_pgrp", [{:pattern => "nvm_mrd1.PAT"},
59
- # {:pattern => "nvm_global_subs.PAT},
60
- # ])
61
- def initialize(name, attrs = {})
62
- attrs = [attrs] unless attrs.is_a? Array
63
- attrs.each do |pattrs|
64
- if pattrs[:pattern]
65
- pat = Pathname.new(pattrs[:pattern].gsub('\\', '/')).basename('.*').to_s
66
- Origen.interface.referenced_patterns << pat
67
- end
68
- lines << Pattern.new(name, pattrs)
69
- end
70
- self.name = name
71
- end
72
-
73
- def ==(other_patgroup)
74
- self.class == other_patgroup.class &&
75
- name.to_s == other_patgroup.name.to_s &&
76
- sorted_pattern_files == other_patgroup.sorted_pattern_files
77
- end
78
-
79
- def name
80
- @name
81
- end
82
-
83
- def name=(n)
84
- @name = n
85
- lines.each { |l| l.group_name = n }
86
- n
87
- end
88
-
89
- # Returns all lines in the pattern set
90
- def lines
91
- @lines ||= []
92
- end
93
-
94
- # Returns all pattern files in the pattern set in alphabetical order
95
- def sorted_pattern_files
96
- @lines.map(&:file_name).sort
97
- end
98
-
99
- # Returns the fully formatted pattern group for insertion into a patgroups sheet
100
- def to_s
101
- l = ''
102
- lines.each do |line|
103
- l += "#{line}\r\n"
104
- end
105
- l.chomp
106
- end
107
- end
108
- end
109
- end
110
- end
111
- end