origen 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/version.rb +1 -1
- data/lib/origen/pins.rb +75 -0
- data/lib/origen/pins/pin_bank.rb +37 -0
- data/lib/origen/pins/pin_collection.rb +8 -0
- data/lib/origen/pins/virtual_pin.rb +16 -0
- data/lib/origen/specs.rb +19 -5
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eb7e3006eff54d7d70809e8d54b0b976d1ecb01e
|
4
|
+
data.tar.gz: 1932c4799723ef86e1c7564863b310b0a6c271cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 76e2aaec740bca336ff8de376f0354abdfbbb5706391a5726af8355997fb63a870a84649e75782667d545791f246c032d446e781897ed8ec743182b42bb5bbac
|
7
|
+
data.tar.gz: dc7e62542c9d488e5b5629f3dd15bfacd51e0a8390c887ae653a61f14a33a3ea5615c4d9fddce5839dad7e59c3de6f39eda9cf046060e1bae1dbcd50b1bab6d5
|
data/config/version.rb
CHANGED
data/lib/origen/pins.rb
CHANGED
@@ -176,6 +176,7 @@ module Origen
|
|
176
176
|
autoload :PinClock, 'origen/pins/pin_clock'
|
177
177
|
autoload :PowerPin, 'origen/pins/power_pin'
|
178
178
|
autoload :GroundPin, 'origen/pins/ground_pin'
|
179
|
+
autoload :VirtualPin, 'origen/pins/virtual_pin'
|
179
180
|
autoload :FunctionProxy, 'origen/pins/function_proxy'
|
180
181
|
|
181
182
|
# @api private
|
@@ -213,6 +214,7 @@ module Origen
|
|
213
214
|
id, options = nil, id if id.is_a?(Hash)
|
214
215
|
power_pin = options.delete(:power_pin)
|
215
216
|
ground_pin = options.delete(:ground_pin)
|
217
|
+
virtual_pin = options.delete(:virtual_pin)
|
216
218
|
if options[:size] && options[:size] > 1
|
217
219
|
group = PinCollection.new(self, options.merge(placeholder: true))
|
218
220
|
group.id = id if id
|
@@ -227,6 +229,8 @@ module Origen
|
|
227
229
|
group[i] = PowerPin.new(i, self, options)
|
228
230
|
elsif ground_pin
|
229
231
|
group[i] = GroundPin.new(i, self, options)
|
232
|
+
elsif virtual_pin
|
233
|
+
group[i] = VirtualPin.new(i, self, options)
|
230
234
|
else
|
231
235
|
group[i] = Pin.new(i, self, options)
|
232
236
|
end
|
@@ -247,6 +251,8 @@ module Origen
|
|
247
251
|
pin = PowerPin.new(id || :temp, self, options)
|
248
252
|
elsif ground_pin
|
249
253
|
pin = GroundPin.new(id || :temp, self, options)
|
254
|
+
elsif virtual_pin
|
255
|
+
pin = VirtualPin.new(id || :temp, self, options)
|
250
256
|
else
|
251
257
|
pin = Pin.new(id || :temp, self, options)
|
252
258
|
end
|
@@ -275,6 +281,15 @@ module Origen
|
|
275
281
|
end
|
276
282
|
alias_method :add_ground_pins, :add_ground_pin
|
277
283
|
|
284
|
+
def add_virtual_pin(id = nil, options = {}, &block)
|
285
|
+
id, options = nil, id if id.is_a?(Hash)
|
286
|
+
options = {
|
287
|
+
virtual_pin: true
|
288
|
+
}.merge(options)
|
289
|
+
add_pin(id, options, &block)
|
290
|
+
end
|
291
|
+
alias_method :add_virtual_pins, :add_virtual_pin
|
292
|
+
|
278
293
|
# Specify the order that pins will appear in the output pattern, unspecified
|
279
294
|
# pins will appear in an arbitrary order at the end
|
280
295
|
#
|
@@ -384,6 +399,12 @@ module Origen
|
|
384
399
|
end
|
385
400
|
alias_method :has_ground_pins?, :has_ground_pin?
|
386
401
|
|
402
|
+
# Equivalent to the has_pin? method but considers virtual pins rather than regular pins
|
403
|
+
def has_virtual_pin?(id)
|
404
|
+
!!Origen.pin_bank.find(id, virtual_pin: true)
|
405
|
+
end
|
406
|
+
alias_method :has_virtual_pins?, :has_virtual_pin?
|
407
|
+
|
387
408
|
def add_pin_group(id, *pins, &_block)
|
388
409
|
if pins.last.is_a?(Hash)
|
389
410
|
options = pins.pop
|
@@ -457,6 +478,18 @@ module Origen
|
|
457
478
|
add_pin_group(id, *pins, options, &block)
|
458
479
|
end
|
459
480
|
|
481
|
+
def add_virtual_pin_group(id, *pins, &block)
|
482
|
+
if pins.last.is_a?(Hash)
|
483
|
+
options = pins.pop
|
484
|
+
else
|
485
|
+
options = {}
|
486
|
+
end
|
487
|
+
options = {
|
488
|
+
virtual_pin: true
|
489
|
+
}.merge(options)
|
490
|
+
add_pin_group(id, *pins, options, &block)
|
491
|
+
end
|
492
|
+
|
460
493
|
# Similar to the pins method except that this method will bypass the package/mode/configuration
|
461
494
|
# scope.
|
462
495
|
#
|
@@ -488,6 +521,15 @@ module Origen
|
|
488
521
|
end
|
489
522
|
end
|
490
523
|
|
524
|
+
# Equivalent to the all_pins method but considers ground pins rather than regular pins
|
525
|
+
def all_virtual_pins(id = nil, _options = {}, &_block)
|
526
|
+
if id
|
527
|
+
pin = Origen.pin_bank.find(id, ignore_context: true, virtual_pin: true)
|
528
|
+
else
|
529
|
+
Origen.pin_bank.all_virtual_pins
|
530
|
+
end
|
531
|
+
end
|
532
|
+
|
491
533
|
def pin_groups(id = nil, options = {}, &_block)
|
492
534
|
id, options = nil, id if id.is_a?(Hash)
|
493
535
|
if id
|
@@ -553,6 +595,28 @@ If you meant to define the ground_pin_group then use the add_ground_pin_group me
|
|
553
595
|
end
|
554
596
|
alias_method :ground_pin_group, :ground_pin_groups
|
555
597
|
|
598
|
+
# Equivalent to the pin_groups method but considers virtual pins rather than regular pins
|
599
|
+
def virtual_pin_groups(id = nil, options = {}, &_block)
|
600
|
+
id, options = nil, id if id.is_a?(Hash)
|
601
|
+
if id
|
602
|
+
pin = Origen.pin_bank.find(id, options.merge(virtual_pin: true))
|
603
|
+
unless pin
|
604
|
+
puts <<-END
|
605
|
+
You have tried to reference virtual_pin_group :#{id} within #{self.class} but it does not exist, this could be
|
606
|
+
because the pin group has not been defined yet or it is an alias that is not available in the current context.
|
607
|
+
|
608
|
+
If you meant to define the virtual_pin_group then use the add_virtual_pin_group method instead.
|
609
|
+
|
610
|
+
END
|
611
|
+
fail 'Utility pin group not found'
|
612
|
+
end
|
613
|
+
pin
|
614
|
+
else
|
615
|
+
Origen.pin_bank.virtual_pin_groups(options)
|
616
|
+
end
|
617
|
+
end
|
618
|
+
alias_method :virtual_pin_group, :virtual_pin_groups
|
619
|
+
|
556
620
|
# Permits access via object.pin(x), returns a hash of all pins if no id
|
557
621
|
# is specified.
|
558
622
|
# ==== Examples
|
@@ -579,6 +643,8 @@ If you meant to define the pin then use the add_pin method instead.
|
|
579
643
|
Origen.pin_bank.power_pins
|
580
644
|
elsif options[:ground_pin]
|
581
645
|
Origen.pin_bank.ground_pins
|
646
|
+
elsif options[:virtual_pin]
|
647
|
+
Origen.pin_bank.virtual_pins
|
582
648
|
else
|
583
649
|
Origen.pin_bank.pins
|
584
650
|
end
|
@@ -604,6 +670,15 @@ If you meant to define the pin then use the add_pin method instead.
|
|
604
670
|
pins(id, options, &block)
|
605
671
|
end
|
606
672
|
|
673
|
+
# Equivalent to the pins method but considers virtual pins rather than regular pins
|
674
|
+
def virtual_pins(id = nil, options = {}, &block)
|
675
|
+
id, options = nil, id if id.is_a?(Hash)
|
676
|
+
options = {
|
677
|
+
virtual_pin: true
|
678
|
+
}.merge(options)
|
679
|
+
pins(id, options, &block)
|
680
|
+
end
|
681
|
+
|
607
682
|
def delete_all_pins
|
608
683
|
Origen.pin_bank.send :empty!
|
609
684
|
end
|
data/lib/origen/pins/pin_bank.rb
CHANGED
@@ -23,6 +23,8 @@ module Origen
|
|
23
23
|
bank = all_power_pins
|
24
24
|
elsif pin.is_a?(GroundPin)
|
25
25
|
bank = all_ground_pins
|
26
|
+
elsif pin.is_a?(VirtualPin)
|
27
|
+
bank = all_virtual_pins
|
26
28
|
else
|
27
29
|
bank = all_pins
|
28
30
|
end
|
@@ -73,6 +75,12 @@ module Origen
|
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
78
|
+
def virtual_pins(options = {})
|
79
|
+
all_virtual_pins.select do |_id, pin|
|
80
|
+
pin.enabled?(options)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
76
84
|
# Returns a hash containing all pin_groups available in the current context stored by their primary ID
|
77
85
|
def pin_groups(options = {})
|
78
86
|
current_pin_group_store(all_pin_groups, options).select do |_id, group|
|
@@ -94,6 +102,13 @@ module Origen
|
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
105
|
+
# Returns a hash containing all virtual_pin_groups available in the current context stored by their primary ID
|
106
|
+
def virtual_pin_groups(options = {})
|
107
|
+
current_pin_group_store(all_virtual_pin_groups, options).select do |_id, group|
|
108
|
+
group.enabled?(options)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
97
112
|
# Returns a hash containing all pins stored by their primary ID
|
98
113
|
def all_pins
|
99
114
|
@all_pins ||= {}
|
@@ -114,6 +129,11 @@ module Origen
|
|
114
129
|
@all_ground_pins ||= {}
|
115
130
|
end
|
116
131
|
|
132
|
+
# Returns a hash containing all virtual pins stored by their primary ID
|
133
|
+
def all_virtual_pins
|
134
|
+
@all_virtual_pins ||= {}
|
135
|
+
end
|
136
|
+
|
117
137
|
# Returns a hash containing all power pin groups stored by context
|
118
138
|
def all_power_pin_groups
|
119
139
|
@all_power_pin_groups ||= {}
|
@@ -124,12 +144,19 @@ module Origen
|
|
124
144
|
@all_ground_pin_groups ||= {}
|
125
145
|
end
|
126
146
|
|
147
|
+
# Returns a hash containing all virtual pin groups stored by context
|
148
|
+
def all_virtual_pin_groups
|
149
|
+
@all_virtual_pin_groups ||= {}
|
150
|
+
end
|
151
|
+
|
127
152
|
def find(id, options = {})
|
128
153
|
id = id.to_sym
|
129
154
|
if options[:power_pin]
|
130
155
|
pin = all_power_pins[id] || find_pin_group(id, options)
|
131
156
|
elsif options[:ground_pin]
|
132
157
|
pin = all_ground_pins[id] || find_pin_group(id, options)
|
158
|
+
elsif options[:virtual_pin]
|
159
|
+
pin = all_virtual_pins[id] || find_pin_group(id, options)
|
133
160
|
else
|
134
161
|
pin = all_pins[id] || find_by_alias(id, options) || find_pin_group(id, options)
|
135
162
|
end
|
@@ -148,6 +175,8 @@ module Origen
|
|
148
175
|
base = all_power_pin_groups
|
149
176
|
elsif options[:ground_pin]
|
150
177
|
base = all_ground_pin_groups
|
178
|
+
elsif options[:virtual_pin]
|
179
|
+
base = all_virtual_pin_groups
|
151
180
|
else
|
152
181
|
base = all_pin_groups
|
153
182
|
end
|
@@ -180,6 +209,8 @@ module Origen
|
|
180
209
|
bank = all_power_pins
|
181
210
|
elsif pin.is_a?(GroundPin)
|
182
211
|
bank = all_ground_pins
|
212
|
+
elsif pin.is_a?(VirtualPin)
|
213
|
+
bank = all_virtual_pins
|
183
214
|
else
|
184
215
|
bank = all_pins
|
185
216
|
end
|
@@ -209,6 +240,8 @@ module Origen
|
|
209
240
|
base = all_power_pin_groups
|
210
241
|
elsif group.ground_pins?
|
211
242
|
base = all_ground_pin_groups
|
243
|
+
elsif group.virtual_pins?
|
244
|
+
base = all_virtual_pin_groups
|
212
245
|
else
|
213
246
|
base = all_pin_groups
|
214
247
|
end
|
@@ -252,6 +285,8 @@ module Origen
|
|
252
285
|
base = all_power_pin_groups
|
253
286
|
elsif group.ground_pins?
|
254
287
|
base = all_ground_pin_groups
|
288
|
+
elsif group.virtual_pins?
|
289
|
+
base = all_virtual_pin_groups
|
255
290
|
else
|
256
291
|
base = all_pin_groups
|
257
292
|
end
|
@@ -332,9 +367,11 @@ module Origen
|
|
332
367
|
@all_pins = nil
|
333
368
|
@all_power_pins = nil
|
334
369
|
@all_ground_pins = nil
|
370
|
+
@all_virtual_pins = nil
|
335
371
|
@all_pin_groups = nil
|
336
372
|
@all_power_pin_groups = nil
|
337
373
|
@all_ground_pin_groups = nil
|
374
|
+
@all_virtual_pin_groups = nil
|
338
375
|
end
|
339
376
|
|
340
377
|
def known_aliases
|
@@ -16,6 +16,7 @@ module Origen
|
|
16
16
|
}.merge(options)
|
17
17
|
@power_pins = options.delete(:power_pin) || options.delete(:power_pins)
|
18
18
|
@ground_pins = options.delete(:ground_pin) || options.delete(:ground_pins)
|
19
|
+
@virtual_pins = options.delete(:virtual_pin) || options.delete(:virtual_pins)
|
19
20
|
@endian = options[:endian]
|
20
21
|
@description = options[:description] || options[:desc]
|
21
22
|
@options = options
|
@@ -81,6 +82,11 @@ module Origen
|
|
81
82
|
@ground_pins
|
82
83
|
end
|
83
84
|
|
85
|
+
# Returns true if the pin collection contains virtual pins rather than regular pins
|
86
|
+
def virtual_pins?
|
87
|
+
@virtual_pins
|
88
|
+
end
|
89
|
+
|
84
90
|
def id
|
85
91
|
@id
|
86
92
|
end
|
@@ -176,6 +182,8 @@ module Origen
|
|
176
182
|
pin = owner.power_pins(pin)
|
177
183
|
elsif ground_pins?
|
178
184
|
pin = owner.ground_pins(pin)
|
185
|
+
elsif virtual_pins?
|
186
|
+
pin = owner.virtual_pins(pin)
|
179
187
|
else
|
180
188
|
pin = owner.pins(pin)
|
181
189
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Origen
|
2
|
+
module Pins
|
3
|
+
class VirtualPin < Pin
|
4
|
+
# Pin Types
|
5
|
+
TYPES = [:virtual_bit, :ate_ch]
|
6
|
+
|
7
|
+
def type=(value)
|
8
|
+
if TYPES.include? value
|
9
|
+
@type = value
|
10
|
+
else
|
11
|
+
fail "VirtualPin type '#{value}' must be set to one of the following: #{TYPES.join(', ')}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/origen/specs.rb
CHANGED
@@ -215,6 +215,8 @@ module Origen
|
|
215
215
|
id: nil,
|
216
216
|
type: nil
|
217
217
|
}.update(options)
|
218
|
+
return nil if @_notes.nil?
|
219
|
+
return nil if @_notes.empty?
|
218
220
|
# Empty 2-D Hash to be used for notes found based on id and type
|
219
221
|
notes_found = Hash.new do |h, k|
|
220
222
|
# h is the id portion of the hash
|
@@ -244,6 +246,8 @@ module Origen
|
|
244
246
|
device: nil
|
245
247
|
}.update(options)
|
246
248
|
return @_spec_features if options[:id].nil? && options[:device].nil?
|
249
|
+
return nil if @_spec_features.nil?
|
250
|
+
return nil if @_spec_features.empty?
|
247
251
|
features_found = Hash.new do |h, k|
|
248
252
|
h[k] = {}
|
249
253
|
end
|
@@ -267,12 +271,14 @@ module Origen
|
|
267
271
|
id: nil,
|
268
272
|
type: nil
|
269
273
|
}.update(options)
|
274
|
+
return nil if @_exhibits.nil?
|
275
|
+
return nil if @_exhibits.empty?
|
270
276
|
ex_found = Hash.new do |h, k|
|
271
277
|
h[k] = Hash.new do |hh, kk|
|
272
278
|
hh[kk] = {}
|
273
279
|
end
|
274
280
|
end
|
275
|
-
filter_hash(_exhibits, options[:block]).each do |_block, hash|
|
281
|
+
filter_hash(@_exhibits, options[:block]).each do |_block, hash|
|
276
282
|
filter_hash(hash, options[:id]).each do |_id, hash_|
|
277
283
|
filter_hash(hash_, options[:type]).each do |_type, exh|
|
278
284
|
ex_found[_block][_id][_type] = exh
|
@@ -293,6 +299,8 @@ module Origen
|
|
293
299
|
sub_type: nil,
|
294
300
|
audience: nil
|
295
301
|
}.update(options)
|
302
|
+
return nil if @_doc_resources.nil?
|
303
|
+
return nil if @_doc_resources.empty?
|
296
304
|
dr_found = Hash.new do |h, k|
|
297
305
|
h[k] = Hash.new do |hh, kk|
|
298
306
|
hh[kk] = Hash.new do |hhh, kkk|
|
@@ -300,7 +308,7 @@ module Origen
|
|
300
308
|
end
|
301
309
|
end
|
302
310
|
end
|
303
|
-
filter_hash(_doc_resources, options[:mode]).each do |_mode, hash|
|
311
|
+
filter_hash(@_doc_resources, options[:mode]).each do |_mode, hash|
|
304
312
|
filter_hash(hash, options[:type]).each do |_type, hash_|
|
305
313
|
filter_hash(hash_, options[:sub_type]).each do |_sub_type, hash__|
|
306
314
|
filter_hash(hash__, options[:audience]).each do |_audience, spec|
|
@@ -324,6 +332,8 @@ module Origen
|
|
324
332
|
sub_type: nil,
|
325
333
|
audience: nil
|
326
334
|
}.update(options)
|
335
|
+
return nil if @_overrides.nil?
|
336
|
+
return nil if @_overrides.empty?
|
327
337
|
overrides_found = Hash.new do |h, k|
|
328
338
|
h[k] = Hash.new do |hh, kk|
|
329
339
|
hh[kk] = Hash.new do |hhh, kkk|
|
@@ -333,7 +343,7 @@ module Origen
|
|
333
343
|
end
|
334
344
|
end
|
335
345
|
end
|
336
|
-
filter_hash(_overrides, options[:block]).each do |_block, hash|
|
346
|
+
filter_hash(@_overrides, options[:block]).each do |_block, hash|
|
337
347
|
filter_hash(hash, options[:spec_ref]).each do |_spec_ref, hash_|
|
338
348
|
filter_hash(hash_, options[:mode_ref]).each do |_mode_ref, hash__|
|
339
349
|
filter_hash(hash__, options[:sub_type]).each do |_sub_type, hash___|
|
@@ -356,10 +366,12 @@ module Origen
|
|
356
366
|
block: nil,
|
357
367
|
mode: nil
|
358
368
|
}.update(options)
|
369
|
+
return nil if @_mode_selects.nil?
|
370
|
+
return nil if @_mode_selects.empty?
|
359
371
|
modes_found = Hash.new do|h, k|
|
360
372
|
h[k] = {}
|
361
373
|
end
|
362
|
-
filter_hash(_mode_selects, options[:block]).each do |block, hash|
|
374
|
+
filter_hash(@_mode_selects, options[:block]).each do |block, hash|
|
363
375
|
filter_hash(hash, options[:mode]).each do |mode, sel|
|
364
376
|
modes_found[block][mode] = sel
|
365
377
|
end
|
@@ -379,7 +391,9 @@ module Origen
|
|
379
391
|
ps_found = Hash.new do|h, k|
|
380
392
|
h[k] = {}
|
381
393
|
end
|
382
|
-
|
394
|
+
return nil if @_power_supplies.nil?
|
395
|
+
return nil if @_power_supplies.empty?
|
396
|
+
filter_hash(@_power_supplies, options[:gen]).each do |gen, hash|
|
383
397
|
filter_hash(hash, options[:act]).each do |act, sel|
|
384
398
|
ps_found[gen][act] = sel
|
385
399
|
end
|
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.6.
|
4
|
+
version: 0.6.6
|
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
|
11
|
+
date: 2016-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -551,6 +551,7 @@ files:
|
|
551
551
|
- lib/origen/pins/pin_collection.rb
|
552
552
|
- lib/origen/pins/pin_common.rb
|
553
553
|
- lib/origen/pins/power_pin.rb
|
554
|
+
- lib/origen/pins/virtual_pin.rb
|
554
555
|
- lib/origen/ports.rb
|
555
556
|
- lib/origen/ports/bit_collection.rb
|
556
557
|
- lib/origen/ports/port.rb
|