Sha256: 8ff50feb1772a1fefadeea035ec2f3e7082a403c9be3158b095e9d8c3344e68d

Contents?: true

Size: 679 Bytes

Versions: 3

Compression:

Stored size: 679 Bytes

Contents

module OrigenVerilog
  class TopLevel
    include Origen::TopLevel

    attr_reader :name

    def initialize(options = {})
      @name = options[:ast].to_a[0]

      options[:ast].pins.each do |node|
        if node.type == :input_declaration
          direction = :input
        elsif node.type == :ouput_declaration
          direction = :output
        else
          direction = :io
        end
        if r = node.find(:range)
          size = r.to_a[0] - r.to_a[1] + 1
        else
          size = 1
        end
        n = node.to_a.dup
        while n.last.is_a?(String)
          add_pin n.pop, direction: direction, size: size
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
origen_verilog-0.4.0 lib/origen_verilog/top_level.rb
origen_verilog-0.3.1 lib/origen_verilog/top_level.rb
origen_verilog-0.3.0 lib/origen_verilog/top_level.rb