# 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) "instance" formal description

- class_def: instance
  - extends: scope
  - property: definition_name
    name: definition name
    vpi: vpiDefName
    type: string
    card: 1
  - property: array_member
    name: array member
    vpi: vpiArrayMember
    type: bool
    card: 1
  - property: cell
    name: cell
    vpi: vpiCellInstance
    type: bool
    card: 1
  - property: default_net_type
    name: default net type
    vpi: vpiDefNetType
    type: int32_t
    card: 1
  - property: definition_location_file
    name: definition location file
    vpi: vpiDefFile
    type: string
    card: 1
  - property: definition_location_line
    name: definition location line
    vpi: vpiDefLineNo
    type: int32_t
    card: 1
  - property: delay_mode
    name: delay mode
    vpi: vpiDefDelayMode
    type: int32_t
    card: 1
  - property: protected
    name: protected
    vpi: vpiProtected
    type: bool
    card: 1
  - property: timeprecision
    name: timeprecision
    vpi: vpiTimePrecision
    type: int32_t
    card: 1
  - property: timeunit
    name: timeunit
    vpi: vpiTimeUnit
    type: int32_t
    card: 1
  - property: unconnected_drive
    name: unconnected drive
    vpi: vpiUnconnDrive
    type: int32_t
    card: 1
  - property: library_configuration
    name: library configuration
    vpi: vpiLibrary
    type: string
    card: 1
  - property: cell_configuration
    name: cell configuration
    vpi: vpiCell
    type: string
    card: 1
  - property: config_configuration
    name: config configuration
    vpi: vpiConfig
    type: string
    card: 1
  - property: default_lifetime
    name: default lifetime
    vpi: vpiAutomatic
    type: bool
    card: 1
  - property: top
    name: top
    vpi: vpiTop
    type: bool
    card: 1
  - obj_ref: programs
    name: program
    vpi: vpiProgram
    type: program
    card: any
  - obj_ref: program_arrays
    name: program array
    vpi: vpiProgramArray
    type: program
    card: any
  - obj_ref: class_defn
    name: class defn
    vpi: vpiClassDefn
    type: class_defn
    card: any
  - class_ref: task_func
    name: task func
    vpi: vpiTaskFunc
    type: task_func
    card: any
  - class_ref: net
    name: net
    vpi: vpiNet
    type: net
    card: any
  - obj_ref: array_net
    name: array net
    vpi: vpiArrayNet
    type: array_net
    card: any
  - obj_ref: spec_param
    name: spec param
    vpi: vpiSpecParam
    type: spec_param
    card: any
  - group_ref: assertion
    name: assertion
    vpi: vpiAssertion
    type: assertion
    card: any
  - obj_ref: module_inst
    name: module_inst
    vpi: vpiModule
    type: module_inst
    card: 1
  - class_ref: instance
    name: instance
    vpi: vpiInstance
    type: instance
    card: 1
