# Copyright 2019 Alain Dargelas
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Universal Hardware Data Model (UHDM) "scope" formal description
 
- class_def: scope
  - property: name
    name: name
    vpi: vpiName
    type: string
    card: 1
  - property: full_name
    name: full name
    vpi: vpiFullName
    type: string
    card: 1
  - obj_ref: property_decls
    name: property decl
    vpi: vpiPropertyDecl
    type: property_decl
    card: any
  - obj_ref: sequence_decls
    name: sequence decl
    vpi: vpiSequenceDecl
    type: sequence_decl
    card: any
  - class_ref: concurrent_assertions
    name: concurrent assertions
    vpi: vpiConcurrentAssertions
    type: concurrent_assertions
    card: any
  - obj_ref: named_events
    name: named event
    vpi: vpiNamedEvent
    type: named_event
    card: any
  - obj_ref: named_event_arrays
    name: named event arrays
    vpi: vpiNamedEventArray
    type: named_event_array
    card: any
  - class_ref: variables
    name: variables
    vpi: vpiVariables
    type: variables
    card: any
  - obj_ref: virtual_interface_vars
    name: virtual interface vars
    vpi: vpiVirtualInterfaceVar
    type: virtual_interface_var
    card: any
  - obj_ref: logic_var
    name: logic var
    vpi: vpiReg
    type: logic_var
    card: any
  - obj_ref: array_var
    name: array var
    vpi: vpiRegArray
    type: array_var
    card: any
  - obj_ref: array_var_mems
    name: mem var
    vpi: vpiMemory
    type: array_var
    card: any
  - group_ref: parameters
    name: parameters
    vpi: vpiParameter
    type: parameters
    card: any
  - obj_ref: param_assigns
    vpi: vpiParamAssign
    type: param_assign
    card: any    
  - class_ref: scopes
    name: scopes
    vpi: vpiInternalScope
    type: scope
    card: any
  - class_ref: typespecs
    name: typespecs
    vpi: vpiTypedef
    type: typespec
    card: any
  - group_ref: instance_items
    name: instance_items
    vpi: vpiImportTypespec
    type: instance_item
    card: any
  - obj_ref: let_decls
    name: let decls
    vpi: vpiLetDecl
    type: let_decl
    card: any
  - obj_ref: attributes
    name: attributes
    vpi: vpiAttribute
    type: attribute
    card: any
