class RgGen::SystemVerilog::Common::Utility::InterfacePort

Public Class Methods

new(default_attributes = {}) { |self| ... } click to toggle source
# File lib/rggen/systemverilog/common/utility/interface_port.rb, line 10
def initialize(default_attributes = {})
  apply_attributes(**default_attributes)
  block_given? && yield(self)
end

Public Instance Methods

declaration() click to toggle source
# File lib/rggen/systemverilog/common/utility/interface_port.rb, line 29
def declaration
  "#{port_type} #{port_identifier}"
end
identifier() click to toggle source
# File lib/rggen/systemverilog/common/utility/interface_port.rb, line 33
def identifier
  Identifier.new(name) do |identifier|
    identifier.__array_size__(array_size)
    identifier.__sub_identifiers__(@modport_ports)
  end
end
modport(name_and_ports, ports = nil) click to toggle source
# File lib/rggen/systemverilog/common/utility/interface_port.rb, line 20
def modport(name_and_ports, ports = nil)
  @modport_name, @modport_ports =
    if ports
      [name_and_ports, ports]
    else
      Array(name_and_ports)[0..1]
    end
end

Private Instance Methods

port_identifier() click to toggle source
# File lib/rggen/systemverilog/common/utility/interface_port.rb, line 46
def port_identifier
  [
    name, *Array(array_size).map { |size| "[#{size}]" }
  ].join
end
port_type() click to toggle source
# File lib/rggen/systemverilog/common/utility/interface_port.rb, line 42
def port_type
  [@interface_type, @modport_name].compact.join('.')
end