origen 0.5.11 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4006eb1955bcda32be05ba4d50c2705a61063532
4
- data.tar.gz: 32c48da60f72ff9fb98eac8fb08eb814f4be1e54
3
+ metadata.gz: 2e99939b78d9b7a1a5b792938910f001791e9721
4
+ data.tar.gz: 39ffafc59ef48c446ebefb60e792102a0b92e48f
5
5
  SHA512:
6
- metadata.gz: d231d2c1fe01fafcae2c8c065c9158391ab82fb4bb70fd9614715cd07066c6008dbf0f85b06e0dc2f617dbfde769f5b8377c965de49aa104265019284e5ab021
7
- data.tar.gz: 53a718b06dcf0fd886752361a3624005775feb52cdc9db31419129c324e4348bfd9b2be653da1294b6cb09ce283d392063045c517955037b6143f156535c50a0
6
+ metadata.gz: 48cd1e06b4a31837292e84392a07488e8592a6fe8560280ecb40bffcbf25c2e696a98a89712f173aee4f01594f3b4550185926be845236f777ed538af139957f
7
+ data.tar.gz: 46507aebdf7041b89312fd07d6f18156c965842cbf736d091014ca4bb02abef6b92f9b52216426bd5ead3df8f0e4c73a088bf4e5894776e5ec93106a3fa50e61
@@ -1,7 +1,7 @@
1
1
  module Origen
2
2
  MAJOR = 0
3
- MINOR = 5
4
- BUGFIX = 11
3
+ MINOR = 6
4
+ BUGFIX = 0
5
5
  DEV = nil
6
6
 
7
7
  VERSION = [MAJOR, MINOR, BUGFIX].join(".") + (DEV ? ".pre#{DEV}" : '')
@@ -110,30 +110,30 @@ module Origen
110
110
  #
111
111
  # @api private
112
112
  def record_invocation(options)
113
- record_invocation = false
114
- begin
115
- # Only record user invocations at this time, also bypass windows since it seems
116
- # that threads can't be trusted not to block
117
- unless Origen.running_remotely? # || Origen.running_on_windows?
118
- record_invocation = Thread.new do
119
- Origen.client.record_invocation(options[:action]) if options[:action]
120
- end
121
- end
122
- rescue
123
- # Don't allow this to kill an origen command
124
- end
113
+ # record_invocation = false
114
+ # begin
115
+ # # Only record user invocations at this time, also bypass windows since it seems
116
+ # # that threads can't be trusted not to block
117
+ # unless Origen.running_remotely? # || Origen.running_on_windows?
118
+ # record_invocation = Thread.new do
119
+ # Origen.client.record_invocation(options[:action]) if options[:action]
120
+ # end
121
+ # end
122
+ # rescue
123
+ # # Don't allow this to kill an origen command
124
+ # end
125
125
  yield
126
- begin
127
- unless Origen.running_remotely?
128
- # Wait for a server response, ideally would like to not wait here, but it seems if not
129
- # then invocation postings can be dropped, especially on windows
130
- Origen.profile 'waiting for recording invocation' do
131
- record_invocation.value
132
- end
133
- end
134
- rescue
135
- # Don't allow this to kill an origen command
136
- end
126
+ # begin
127
+ # unless Origen.running_remotely?
128
+ # # Wait for a server response, ideally would like to not wait here, but it seems if not
129
+ # # then invocation postings can be dropped, especially on windows
130
+ # Origen.profile 'waiting for recording invocation' do
131
+ # record_invocation.value
132
+ # end
133
+ # end
134
+ # rescue
135
+ # # Don't allow this to kill an origen command
136
+ # end
137
137
  end
138
138
 
139
139
  # The action to take should be set by the action option, but legacy code will pass
@@ -21,7 +21,7 @@ module Origen
21
21
  end
22
22
 
23
23
  def url
24
- "http://origen-hub.am.freescale.net:#{port}/api"
24
+ 'http://hub.origen-sdk.org/api'
25
25
  end
26
26
 
27
27
  def port
@@ -9,10 +9,11 @@ module Origen
9
9
  autoload :Mode_Select, 'origen/specs/mode_select.rb'
10
10
  autoload :Version_History, 'origen/specs/version_history.rb'
11
11
  autoload :Creation_Info, 'origen/specs/creation_info.rb'
12
+ autoload :Spec_Features, 'origen/specs/spec_features.rb'
12
13
  require 'origen/specs/checkers'
13
14
  include Checkers
14
15
 
15
- attr_accessor :_specs, :_notes, :_exhibits, :_doc_resources, :_overrides, :_power_supplies, :_mode_selects, :_version_history, :_creation_info
16
+ attr_accessor :_specs, :_notes, :_exhibits, :_doc_resources, :_overrides, :_power_supplies, :_mode_selects, :_version_history, :_creation_info, :_spec_features
16
17
 
17
18
  # Detailed description for the ip block
18
19
  attr_accessor :description
@@ -22,6 +23,8 @@ module Origen
22
23
 
23
24
  NOTE_TYPES = [:spec, :doc, :mode, :feature, :sighting]
24
25
 
26
+ FEATURE_TYPES = [:intro, :feature, :subfeature]
27
+
25
28
  SpecTableAttr = Struct.new(:table_text, :show, :padding)
26
29
 
27
30
  # A regular Array but print specs to the console via their ID for brevity and
@@ -49,10 +52,12 @@ module Origen
49
52
  _specs
50
53
  if s.nil?
51
54
  return show_specs(options)
52
- elsif s.is_a? Hash # no spec was passed but some option was passed
55
+ elsif s.is_a? Hash
56
+ # no spec was passed but some option was passed
53
57
  options.update(s)
54
58
  return show_specs(options)
55
- else # a spec was passed
59
+ else
60
+ # a spec was passed
56
61
  options[:spec] = s
57
62
  return show_specs(options)
58
63
  end
@@ -80,6 +85,8 @@ module Origen
80
85
  .new(name, type, mode, owner_name, &block)
81
86
  # Check if the spec already exists
82
87
  if has_spec?(name, type: type, mode: mode, sub_type: spec_placeholder.sub_type, creating_spec: true)
88
+ # Spec already exists. Go ahead flag error and drop processing.
89
+ # This is a fatal error.
83
90
  fail "Spec already exists for name: #{name}, type: #{type}, mode: #{mode} for object #{self}"
84
91
  end
85
92
  @_specs[name][mode][type][spec_placeholder.sub_type] = spec_placeholder
@@ -103,6 +110,7 @@ module Origen
103
110
  end
104
111
  end
105
112
 
113
+ # Returns the modes for this block
106
114
  def get_modes
107
115
  @_modes
108
116
  end
@@ -121,69 +129,99 @@ module Origen
121
129
  !!show_specs(options)
122
130
  end
123
131
 
132
+ # Adds a new feature to the block
133
+ def spec_feature(id, attrs, device, text, internal_comment)
134
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
135
+ _spec_features
136
+ # Create a new feature and place it in the features 2-D Hash
137
+ @_spec_features[id][device] = Spec_Features.new(id, attrs, device, text, internal_comment)
138
+ end
139
+
124
140
  # Define and instantiate a Note object
125
141
  def note(id, type, options = {})
142
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
126
143
  _notes
144
+ # Create a new note and place it in the notes 2-D Hash
127
145
  @_notes[id][type] = Note.new(id, type, options)
128
146
  end
129
147
 
130
148
  def exhibit(id, type, options = {})
149
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
131
150
  _exhibits
151
+ # Create a new Exhibit and place it in the exhibits 3-D Hash
132
152
  @_exhibits[options[:block_id]][id][type] = Exhibit.new(id, type, options)
133
153
  end
134
154
 
135
155
  def doc_resource(selector = {}, table_title = {}, text = {}, options = {})
156
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
136
157
  _doc_resources
137
158
  mode = selector[:mode]
138
159
  type = selector[:type]
139
160
  sub_type = selector[:sub_type]
140
161
  audience = selector[:audience]
162
+ # Create a new Document Resource and place it in the Doc Resources 4-D Hash
141
163
  @_doc_resources[mode][type][sub_type][audience] = Doc_Resource.new(selector, table_title, text, options)
142
164
  end
143
165
 
144
166
  def version_history(date, author, changes)
167
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
145
168
  _version_history
169
+ # Create a new Version History and place it in the version history 2-D Hash
146
170
  tmp_ver_history = Version_History.new(date, author, changes)
147
171
  @_version_history[date][author] = tmp_ver_history
148
172
  end
149
173
 
150
174
  def override(block_options = {}, find_spec = {}, values = {}, options = {})
175
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
151
176
  _overrides
152
177
  block = block_options[:block]
153
178
  spec_ref = find_spec[:spec_id]
154
179
  mode_ref = find_spec[:mode_ref]
155
180
  sub_type = find_spec[:sub_type]
156
181
  audience = find_spec[:audience]
182
+ # Create a new Override and place it in the overrides 5-D Hash
157
183
  @_overrides[block][spec_ref][mode_ref][sub_type][audience] = Override.new(block_options, find_spec, values, options)
158
184
  end
159
185
 
160
186
  def power_supply(gen, act)
187
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
161
188
  _power_supplies
189
+ # Create a new Power Supply and place it in the power supplies 2-D Hash
162
190
  @_power_supplies[gen][act] = Power_Supply.new(gen, act)
163
191
  end
164
192
 
165
193
  def mode_select(block_information, mode_usage, power_information)
194
+ # Welguisz: No idea why this is here, but keeping it here because it follows other blocks
166
195
  _mode_selects
196
+ # See if the mode will be used. If so, create a new Mode Select and place it in mode_selects 2-D Hash
167
197
  if block_information[:usage]
168
198
  @_mode_selects[block_information[:name]][mode_usage[:mode]] = Mode_Select.new(block_information, mode_usage, power_information)
169
199
  end
170
200
  end
171
201
 
172
202
  def creation_info(author, date, version, src_info = {}, tool_info = {})
203
+ # Create a new Information Information. Should only be one.
173
204
  @_creation_info = Creation_Info.new(author, date, version, src_info, tool_info)
174
205
  end
175
206
 
176
207
  # Returns a Note object from the notes hash
177
208
  def notes(options = {})
209
+ # Create a default 2 item hash and update if options is supplied
178
210
  options = {
179
211
  id: nil,
180
212
  type: nil
181
213
  }.update(options)
214
+ # Empty 2-D Hash to be used for notes found based on id and type
182
215
  notes_found = Hash.new do |h, k|
216
+ # h is the id portion of the hash
217
+ # k is the type portion of the hash
183
218
  h[k] = {}
184
219
  end
185
- _notes.filter(options[:id]).each do |id, hash|
220
+ # Filter @notes based off of the id
221
+ @_notes.filter(options[:id]).each do |id, hash|
222
+ # Filter hash based off of the type
186
223
  hash.filter(options[:type]).each do |type, note|
224
+ # Store the note into note_found
187
225
  notes_found[id][type] = note
188
226
  end
189
227
  end
@@ -196,6 +234,29 @@ module Origen
196
234
  end
197
235
  end
198
236
 
237
+ def spec_features(options = {})
238
+ options = {
239
+ id: nil,
240
+ device: nil
241
+ }.update(options)
242
+ return @_spec_features if options[:id].nil? && options[:device].nil?
243
+ features_found = Hash.new do |h, k|
244
+ h[k] = {}
245
+ end
246
+ @_spec_features.filter(options[:id]).each do |id, hash|
247
+ hash.filter(options[:device]).each do |device, feat|
248
+ features_found[id][device] = feat
249
+ end
250
+ end
251
+ if features_found.empty?
252
+ return nil
253
+ elsif features_found.size == 1
254
+ features_found.values.first.values.first
255
+ else
256
+ return features_found
257
+ end
258
+ end
259
+
199
260
  def exhibits(options = {})
200
261
  options = {
201
262
  block: nil,
@@ -348,6 +409,10 @@ module Origen
348
409
  @_creation_info = nil
349
410
  end
350
411
 
412
+ def delete_spec_features
413
+ @_spec_features = nil
414
+ end
415
+
351
416
  private
352
417
 
353
418
  def _specs
@@ -368,6 +433,12 @@ module Origen
368
433
  end
369
434
  end
370
435
 
436
+ def _spec_features
437
+ @_spec_features ||= Hash.new do |h, k|
438
+ h[k] = {}
439
+ end
440
+ end
441
+
371
442
  def _exhibits
372
443
  @_exhibits ||= Hash.new do |h, k|
373
444
  h[k] = Hash.new do |hh, kk|
@@ -0,0 +1,46 @@
1
+ module Origen
2
+ module Specs
3
+ # Ruby Data Class that contains Creation Information for the IP Block
4
+ class Spec_Features
5
+ # This is the Id of the Feature that will be referenced
6
+ # Future goal is to be able to tie this ID to a specification in a Product Requirements Document
7
+ attr_accessor :id
8
+
9
+ # Feature Type
10
+ # Current supported types are
11
+ # intro :: Intro Paragraph for the Features Page
12
+ # feature :: Main Feature (e.g. Additional peripherals include)
13
+ # subfeature :: Sub Feature that will be a sub-bullet to feature. (e.g. Four I2C controllers)
14
+ attr_accessor :type
15
+
16
+ # Feature Reference
17
+ # To be used for sub-feature so that they can be linked easily
18
+ attr_accessor :feature_ref
19
+
20
+ # Applicable Devices for this feature. This allows for multiple devices from one piece of silicon
21
+ # If this feature is on Part B and Part D, then applicable devices will include Part B and Part D, but no other parts
22
+ attr_accessor :applicable_devices
23
+
24
+ # The actual text of the feature
25
+ attr_accessor :text
26
+
27
+ # Internal comments about this feature. Why was this feature included here? Any changes from the
28
+ # Product Requirements Document
29
+ attr_accessor :internal_comments
30
+
31
+ # Intended Audience for this feature. Internal or External?
32
+ attr_accessor :audience
33
+
34
+ # Initialize the Feature to be used
35
+ def initialize(id, attrs, applicable_devices, text, internal_comments)
36
+ @id = id
37
+ @type = attrs[:type]
38
+ @feature_ref = attrs[:feature_ref]
39
+ @audience = attrs[:audience]
40
+ @applicable_devices = applicable_devices
41
+ @text = text
42
+ @internal_comments = internal_comments
43
+ end
44
+ end # module Features
45
+ end # module Specs
46
+ end # module Origen
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: origen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.11
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen McGinty
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-02 00:00:00.000000000 Z
11
+ date: 2016-02-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -582,6 +582,7 @@ files:
582
582
  - lib/origen/specs/override.rb
583
583
  - lib/origen/specs/power_supply.rb
584
584
  - lib/origen/specs/spec.rb
585
+ - lib/origen/specs/spec_features.rb
585
586
  - lib/origen/specs/version_history.rb
586
587
  - lib/origen/sub_blocks.rb
587
588
  - lib/origen/top_level.rb