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,111 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- class Parser
5
- class Flow < Origen::Tester::Parser::SearchableArray
6
- require 'pathname'
7
-
8
- attr_accessor :parser, :file
9
-
10
- def initialize(file, options = {}) # :nodoc:
11
- @parser = options[:parser]
12
- @file = Pathname.new(file)
13
- parse
14
- end
15
-
16
- def description
17
- @parser.descriptions.flow_summary(file: file)
18
- end
19
- alias_method :summary, :description
20
-
21
- # Returns the filename of the sheet that contained the current flow
22
- def filename
23
- @file.basename.to_s
24
- end
25
- alias_method :name, :filename
26
-
27
- # Returns all flow lines that are tests, optionally supply a context to
28
- # have only the test that will execute in that context returned
29
- #
30
- # $tester.flow.first.tests.size
31
- # => 20
32
- # $tester.flow.first.tests(:job => "P1").size
33
- # => 10
34
- # $tester.flow.first.tests(:job => "P1", :enable => "data_collection").size
35
- # => 15
36
- def tests(context = {})
37
- run_context(context)
38
- end
39
-
40
- # Returns all tests in the current flow, regardless of context
41
- def all_tests
42
- where(opcode: %w(Test characterize), exact: true)
43
- end
44
-
45
- def run_context(context) # :nodoc:
46
- capture = true
47
- waiting_for_label = false
48
- select do |line|
49
- if capture
50
- if !waiting_for_label || waiting_for_label == line.label
51
- waiting_for_label = false
52
- case line.type
53
- when 'Test', 'characterize'
54
- line.executes_under_context?(context)
55
- when 'set-device', 'stop'
56
- capture = false if line.executes_under_context?(context)
57
- false
58
- when 'enable-flow-word'
59
- if line.executes_under_context?(context)
60
- context[:enable] = [context[:enable]].flatten
61
- context[:enable] << line.parameter
62
- end
63
- false
64
- when 'flag-true'
65
- if line.executes_under_context?(context)
66
- context[:true_flags] = [context[:true_flags]].flatten
67
- context[:true_flags] << line.parameter
68
- end
69
- false
70
- when 'flag-false'
71
- if line.executes_under_context?(context)
72
- context[:false_flags] = [context[:false_flags]].flatten
73
- context[:false_flags] << line.parameter
74
- end
75
- false
76
- when 'disable-flow-word'
77
- if line.executes_under_context?(context)
78
- context[:enable] = [context[:enable]].flatten
79
- context[:enable].delete(line.parameter)
80
- end
81
- false
82
- when 'logprint', 'nop', 'print'
83
- false
84
- when 'goto'
85
- waiting_for_label = line.parameter
86
- false
87
- else
88
- fail "Don't know how to process: #{line.type}, in file #{filename}"
89
- end
90
- else
91
- false
92
- end
93
- end
94
- end
95
- end
96
-
97
- def parse # :nodoc:
98
- File.readlines(@file).each do |line|
99
- l = FlowLine.new(line, parser: parser, flow: self)
100
- self << l if l.valid?
101
- end
102
- end
103
-
104
- def inspect # :nodoc:
105
- "<TestFlow: #{filename}, Lines: #{size}>"
106
- end
107
- end
108
- end
109
- end
110
- end
111
- end
@@ -1,207 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- class Parser
5
- class FlowLine
6
- attr_accessor :parser, :flow, :line
7
-
8
- TYPES = %w(
9
- Test characterize defaults enable-flow-word disable-flow-word error-print goto
10
- goto-on-all-done goto-on-all-lastfail goto-on-all-lastfaildoall logprint modify
11
- nop print reset set-device set-device-new set-error-bin set-retest-bin skip
12
- stop assign-integer create-integer delete-integer create-site-var assign-site-var
13
- flag-clear flag-clear-all flag-false flag-false-all flag-true flag-true-all
14
- state-clear-all state-false-all state-true-all
15
- )
16
-
17
- ATTRS = %w(
18
- label enable job part env opcode parameter
19
- tname tnum bin_pass bin_fail sort_pass sort_fail result flag_pass
20
- flag_fail state group_specifier group_sense group_condition group_name
21
- device_sense device_condition device_name debug_assume debug_sites
22
- comment
23
- )
24
-
25
- ALIASES = {
26
- bin: :bin_fail,
27
- softbin: :sort_fail,
28
- soft_bin: :sort_fail,
29
- name: :tname,
30
- number: :tnum,
31
- test_number: :tnum,
32
- test_num: :tnum,
33
- type: :opcode
34
- }
35
-
36
- # Make readers for each low level attribute
37
- ATTRS.each do |attr|
38
- attr_reader attr
39
- end
40
-
41
- # And the aliases
42
- ALIASES.each do |_alias, attr|
43
- define_method("#{_alias}") do
44
- send(attr)
45
- end
46
- end
47
-
48
- # Returns the test instance called by the given line or nil
49
- def self.extract_test(line)
50
- l = new(line)
51
- if l.valid? && l.test?
52
- l.test_instance_name
53
- end
54
- end
55
-
56
- def initialize(line, options = {})
57
- @parser = options[:parser]
58
- @flow = options[:flow]
59
- @line = line
60
- parse
61
- if valid?
62
- ATTRS.each_with_index do |attr, i|
63
- instance_variable_set("@#{attr}", components[i + 1])
64
- end
65
- end
66
- end
67
-
68
- def inspect # :nodoc:
69
- "<FlowLine: #{type}, Parameter: #{parameter}>"
70
- end
71
-
72
- def description
73
- from_instance = test_instance ? test_instance.description : ''
74
- from_flow = parser.descriptions.flow_line(name: test_instance_name, flow: flow.file)
75
- if !from_instance.empty? && !from_flow.empty?
76
- [from_instance, "\n", from_flow].flatten
77
- elsif from_instance.empty?
78
- from_flow
79
- else
80
- from_instance
81
- end
82
- end
83
-
84
- def parse
85
- @components = @line.split("\t") unless @line.strip.empty?
86
- end
87
-
88
- def valid?
89
- components[6] && TYPES.include?(components[6])
90
- end
91
-
92
- def components
93
- @components ||= []
94
- end
95
-
96
- def test?
97
- %w(Test characterize).include? opcode
98
- end
99
-
100
- def executes_under_context?(context)
101
- enable_conditions_met?(context) &&
102
- job_conditions_met?(context) &&
103
- part_conditions_met?(context) &&
104
- env_conditions_met?(context)
105
- end
106
-
107
- def enable_conditions_met?(context)
108
- conditions_met?(enable, context[:enable])
109
- end
110
-
111
- def job_conditions_met?(context)
112
- conditions_met?(job, context[:job])
113
- end
114
-
115
- def part_conditions_met?(context)
116
- conditions_met?(part, context[:part])
117
- end
118
-
119
- def env_conditions_met?(context)
120
- conditions_met?(env, context[:env])
121
- end
122
-
123
- def conditions_met?(conditions, values)
124
- if conditions.empty?
125
- true
126
- else
127
- values = [values].flatten
128
- conditions = conditions.split(',').map(&:strip)
129
- not_conditions = conditions.select { |c| c =~ /^!/ }
130
- conditions = conditions - not_conditions
131
- # Make sure all -ve conditions are not met
132
- if not_conditions.all? do |c|
133
- c =~ /^!(.*)/
134
- c = Regexp.last_match[1]
135
- !values.include?(c)
136
- end
137
- # And then any +ve conditions
138
- if conditions.empty?
139
- true
140
- else
141
- values.any? { |v| conditions.include?(v) }
142
- end
143
- else
144
- false
145
- end
146
- end
147
- end
148
-
149
- def test_instance_name
150
- parameter
151
- end
152
- alias_method :instance_name, :test_instance_name
153
-
154
- def test_instance
155
- instances = parser.test_instances.where(name: parameter, exact: true)
156
- if instances.size > 1
157
- puts "Warning multiple instances of #{name} found, using the first one"
158
- end
159
- if instances.size == 0
160
- nil
161
- else
162
- instances.first
163
- end
164
- end
165
- alias_method :instance, :test_instance
166
-
167
- # Returns an array of patterns used by the given test, if there are none
168
- # an empty array is returned.
169
- # Optionally supply patterns to exclude if you want to ignore common subroutine
170
- # patterns for example.
171
- def patterns(options = {})
172
- i = test_instance
173
- if i
174
- pats = i.patterns
175
- if options[:ignore] && pats
176
- pats.reject { |p| [options[:ignore]].flatten.include?(p) }
177
- else
178
- []
179
- end
180
- else
181
- []
182
- end
183
- end
184
- alias_method :pattern, :patterns
185
-
186
- # Returns a string summarizing any conditions (enable words, jobs, etc.) that
187
- # gate the execution of this line
188
- def conditions
189
- c = []
190
- c << "Enable: #{enable}" unless enable.empty?
191
- c << "Job: #{job}" unless job.empty?
192
- c << "Part: #{part}" unless part.empty?
193
- c << "Env: #{env}" unless env.empty?
194
- c.join('; ')
195
- end
196
-
197
- def vdd
198
- i = test_instance
199
- if i
200
- i.vdd
201
- end
202
- end
203
- end
204
- end
205
- end
206
- end
207
- end
@@ -1,23 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- class Parser
5
- class Flows < Origen::Tester::Parser::SearchableArray
6
- attr_accessor :parser
7
-
8
- def initialize(options = {})
9
- @parser = options[:parser]
10
- end
11
-
12
- def import(file)
13
- self << Flow.new(file, parser: parser)
14
- end
15
-
16
- def inspect
17
- "<TestFlows: #{size}>"
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end
@@ -1,94 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- class Parser
5
- class PatternSet
6
- class Pattern
7
- attr_accessor :parser
8
-
9
- ATTRS = %w(pattern_set file_name start_label stop_label comment)
10
-
11
- ALIASES = {
12
- pattern: :file_name,
13
- file: :file_name,
14
- name: :file_name
15
- }
16
-
17
- # Generate readers for all attributes and their aliases
18
- ATTRS.each do |attr|
19
- attr_reader attr.to_sym
20
- end
21
-
22
- ALIASES.each do |_alias, attr|
23
- define_method("#{_alias}") do
24
- send(attr)
25
- end
26
- end
27
-
28
- def initialize(line)
29
- @line = line
30
- parse
31
- if valid?
32
- ATTRS.each_with_index do |attr, i|
33
- instance_variable_set("@#{attr}", components[i + 1])
34
- end
35
- end
36
- end
37
-
38
- def parse
39
- @components = @line.split("\t") unless @line.strip.empty?
40
- end
41
-
42
- def valid?
43
- components[1] && !components[1].empty? && components[1] != 'Pattern Set' &&
44
- components[2] && !components[2].empty?
45
- end
46
-
47
- def components
48
- @components ||= []
49
- end
50
- end
51
-
52
- def initialize(line, options = {})
53
- @parser = options[:parser]
54
- p = add_pattern_line(line)
55
- @name = p.pattern_set if p.valid?
56
- end
57
-
58
- def inspect # :nodoc:
59
- "<PatternSet: #{name}>"
60
- end
61
-
62
- def name
63
- @name
64
- end
65
-
66
- def patterns
67
- @patterns ||= []
68
- end
69
-
70
- def self.extract_name(line)
71
- new(line).name
72
- end
73
-
74
- def add_pattern_line(line)
75
- p = Pattern.new(line)
76
- patterns << Pattern.new(line) if p.valid?
77
- p
78
- end
79
-
80
- def valid?
81
- patterns.all?(&:valid?)
82
- end
83
-
84
- # Returns an array containing all pattern names contained in this
85
- # pattern set
86
- def pattern_names
87
- # This removes the path and extensions
88
- patterns.map { |pat| pat.name.gsub(/.*[\\\/]/, '').gsub(/\..*/, '') }
89
- end
90
- end
91
- end
92
- end
93
- end
94
- end
@@ -1,33 +0,0 @@
1
- module Origen
2
- module Tester
3
- class J750
4
- class Parser
5
- class PatternSets < Origen::Tester::Parser::SearchableHash
6
- attr_accessor :parser
7
-
8
- def initialize(options = {})
9
- @parser = options[:parser]
10
- end
11
-
12
- def import(file)
13
- File.readlines(file).each do |line|
14
- name = PatternSet.extract_name(line)
15
- if name
16
- if self[name]
17
- self[name].add_pattern_line(line)
18
- else
19
- l = PatternSet.new(line, parser: parser)
20
- self[l.name] = l if l.valid?
21
- end
22
- end
23
- end
24
- end
25
-
26
- def inspect
27
- "<Patsets: #{size}>"
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end