class BaseChip::Bom

Attributes

hash[R]
name1[R]
name2[R]

Public Class Methods

new(hash) click to toggle source
# File lib/base_chip/bom.rb, line 36
def initialize(hash)
  @hash  = hash.with_indifferent_access
  @name1 = 'all'
  @name2 = 'all'
end

Public Instance Methods

+(bom) click to toggle source
# File lib/base_chip/bom.rb, line 61
def +(bom)
  Bom.new(@hash.merge bom.hash)
end
classes() click to toggle source
# File lib/base_chip/bom.rb, line 42
def classes   ; @classes   ||= trim(2,:classes  ) end
directories() click to toggle source
# File lib/base_chip/bom.rb, line 57
def directories
  @directories ||= files.map{ |f| File.dirname(f) }.uniq
end
files()
Alias for: to_a
gates() click to toggle source
# File lib/base_chip/bom.rb, line 48
def gates     ; @gates     ||= trim(1,:gates    ) end
headers() click to toggle source
# File lib/base_chip/bom.rb, line 45
def headers   ; @headers   ||= trim(2,:headers  ) end
list() click to toggle source
# File lib/base_chip/bom.rb, line 53
def list ; @list ||= to_a.join(' ')           ; end
rtl() click to toggle source
# File lib/base_chip/bom.rb, line 47
def rtl       ; @rtl       ||= trim(1,:rtl      ) end
stimulus() click to toggle source
# File lib/base_chip/bom.rb, line 50
def stimulus  ; @stimulus  ||= trim(1,:stimulus ) end
systemc() click to toggle source
# File lib/base_chip/bom.rb, line 44
def systemc   ; @systemc   ||= trim(2,:systemc  ) end
tcl() click to toggle source
# File lib/base_chip/bom_file.rb, line 41
def tcl
  @tcl  ||= BomType.new(self,:tcl )
end
testbench() click to toggle source
# File lib/base_chip/bom.rb, line 49
def testbench ; @testbench ||= trim(1,:testbench) end
text() click to toggle source
# File lib/base_chip/bom_file.rb, line 38
def text
  @text ||= BomType.new(self,:text)
end
to_a() click to toggle source
# File lib/base_chip/bom.rb, line 52
def to_a ; @to_a ||= @hash.deep_values.flatten; end
Also aliased as: files
to_s() click to toggle source
# File lib/base_chip/bom.rb, line 54
def to_s ; @to_s ||= list                     ; end
verilog() click to toggle source
# File lib/base_chip/bom.rb, line 41
def verilog   ; @verilog   ||= trim(2,:verilog  ) end
vhdl() click to toggle source
# File lib/base_chip/bom.rb, line 43
def vhdl      ; @vhdl      ||= trim(2,:vhdl     ) end

Protected Instance Methods

trim(depth,key) click to toggle source
# File lib/base_chip/bom.rb, line 66
def trim(depth,key)
  hash = HashWithIndifferentAccess.new
  @hash.each do |k1,l1|
    case depth 
    when 1; hash[k1] = l1 if k1.to_s == key.to_s
    when 2; hash[k1] = HashWithIndifferentAccess.new
      l1.each do |k2,l2| 
        hash[k1][k2] = l2 if k2.to_s == key.to_s
      end
    end
  end
  Bom.new(hash)
end