class RgGen::SystemVerilog::Common::Utility::LocalScope

Public Instance Methods

top_scope(value = true) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 13
def top_scope(value = true)
  @top_scope = value
end

Private Instance Methods

generate_for(genvar, size) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 48
def generate_for(genvar, size)
  "for (#{genvar} = 0;#{genvar} < #{size};++#{genvar}) begin : g"
end
generate_for_end(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 64
def generate_for_end(code)
  code.indent -= 2
  code << 'end' << nl
end
generate_for_header(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 41
def generate_for_header(code)
  loop_size&.each do |genvar, size|
    code << generate_for(genvar, size) << nl
    code.indent += 2
  end
end
genvar_declarations(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 36
def genvar_declarations(code)
  genvars = Array(loop_size&.keys).map { |genvar| "genvar #{genvar}" }
  add_declarations_to_body(code, genvars)
end
header_code(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 19
def header_code(code)
  code << ['generate', space] if @top_scope
  code << "if (1) begin : #{name}" << nl
end
parameter_declarations(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 52
def parameter_declarations(code)
  add_declarations_to_body(code, Array(parameters))
end
post_body_code(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 60
def post_body_code(code)
  loop_size&.size&.times { generate_for_end(code) }
end
pre_body_code(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 29
def pre_body_code(code)
  genvar_declarations(code)
  generate_for_header(code)
  parameter_declarations(code)
  variable_declarations(code)
end
variable_declarations(code) click to toggle source
# File lib/rggen/systemverilog/common/utility/local_scope.rb, line 56
def variable_declarations(code)
  add_declarations_to_body(code, Array(variables))
end