class RgGen::SystemVerilog::Common::Utility::DataObject
Public Class Methods
new(object_type, default_attributes = {}) { |self| ... }
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 10 def initialize(object_type, default_attributes = {}) @object_type = object_type apply_attributes(**default_attributes) block_given? && yield(self) end
Public Instance Methods
declaration()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 26 def declaration declaration_snippets .select { |snippet| snippet && !snippet.empty? } .join(' ') end
identifier()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 32 def identifier Identifier.new(name) do |identifier| identifier.__width__(width) identifier.__array_size__(array_size) identifier.__array_format__(array_format) end end
Private Instance Methods
argument_direction()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 61 def argument_direction @object_type == :argument && direction end
array?()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 79 def array? return false unless array_size !array_size.empty? end
declaration_snippets()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 42 def declaration_snippets [ rand_keyword, argument_direction, paraemter_keyword, data_type, packed_dimensions, object_identifier, default_value ] end
default_value()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 123 def default_value default && "= #{default}" end
msb(size)
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 75 def msb(size) (size.is_a?(Integer) && size - 1) || "#{size}-1" end
object_identifier()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 110 def object_identifier "#{name}#{unpacked_dimensions}" end
packed_array_size()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 97 def packed_array_size size = [] size.concat(Array(array_size)) if array_format == :packed size << width if valid_width? size end
packed_dimensions()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 69 def packed_dimensions (serialized? ? serialized_array_size : packed_array_size) .map { |size| "[#{msb(size)}:0]" } .join end
paraemter_keyword()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 65 def paraemter_keyword @object_type == :parameter && parameter_type end
rand_keyword()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 54 def rand_keyword return unless @object_type == :variable return unless random return :rand if random.equal?(true) random end
serialized?()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 84 def serialized? array? && array_format == :serialized end
serialized_array_size()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 88 def serialized_array_size size = [(width || 1), *array_size] if size.all? { |s| s.is_a?(Integer) } [size.inject(&:*)] else [size.join('*')] end end
unpacked_array?()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 114 def unpacked_array? array? && array_format == :unpacked end
unpacked_dimensions()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 118 def unpacked_dimensions return unless unpacked_array? array_size.map { |size| "[#{size}]" }.join end
valid_width?()
click to toggle source
# File lib/rggen/systemverilog/common/utility/data_object.rb, line 104 def valid_width? return false unless width return true unless width.is_a?(Integer) width > 1 end