BridgePoint Model Compiler - User Guide

xtuml.org

June 2018

Abstract

This guide is the primary reference document for the engineers and scientists translating BridgePoint xtUML models with the MC-3020 model compiler. It explains how to use the compiler features and capabilities.


Table of Contents

1. Users Guide
Purpose and Intended Audience
Purpose of the Users Guide
Intended Audience
Using the Guide
Guide Organization
Additional Information
2. Features and Components
Features
MC-3020 Binary and Source Versions
Multi-Pass Corroborative Translation
Multi-Tasking/Threading
Prioritization
Multi-Component Support
Persistence
Metrics and Reporting
Bridge/Operation Skeleton Generation
``Call Outs'' for User Code
UDT Precision and Pointer Types
Attribute Bit Fields
Selection Optimization
Interrupt Handler Bridging
User Defined Archetypes
ANSI C Purity and Simplicity
Preexisting Instances Defined in Data
Target Code Inside Action Language
Dynamic Memory Allocation (Or Not)
XMI Export
Components
Classes
Associations
State Models
Bridges and Operations
Miscellaneous
Restrictions and Limitations
3. Eclipse Integration
MC-3020 GUI
Project Files and Folders
Marking Files
Source Files and Output
Replacing Generated Source Code
Adding User Source and Libraries
Building (Running Code Generation)
Compiling
4. Marking
How MC-3020 Provides for Marking
Bridge Marking
Marking a Bridge Safe for Interrupt Invocation
Enabling/Disabling Interrupts
Bit Fields
Fixing Class Extents
Specifying Data Types, Precision and Enumerators
Tagging Precision
Mapping Pointer Types
Specifying Uninitialized Enumerators
Specifying Values for Enumerators
System Level Marks
Specifying a System Build Configuration
Enabling Multi-Tasking
Establishing Multi-Task Priority
Maximum String Size
Controlling Collection Sizes
Managing Selection Collections
Changing the Flavor of Collections
Limiting/Extending Event Queues
Limiting/Extending NonSelf Queue
Timer Queue
Simulated Time
Interleaved Bridges
Interleaved Bridge Data
Marking Persistence Cache Queue Depth
Marking Dynamic Memory Allocation On
Marking State Save
SystemC-specific Markings
Component (Domain) Specializations
Identifying Initialization Functions
Identifying Initialization Objects
Excluding Classes
Excluding Subsystems
Disabling Function Translation
State Transition Trace
Action Language Trace
Empty Handle Usage
Disabling First Pass Optimizations
Miscellaneous Domain Marking
Class Specializations
Mapping Classes to Tasks/Threads
Extent Sizes
Default Extent Size
Enabling Preexisting Instances
Identifying Static Instance Populations
Identifying Read Only Instance Populations
Marking Persistence
Translating Operation and Bridge AL
Marking Class Tracing
Event Prioritization
Priority Events
MC-3020 Extent Prediction and Marking
5. Enumerated Types
Overview of Enumeration Support
Specifying Enumerations
Specifying a Discrete Value for Enumerators
Accessing an Enumeration from a Non-Modeled Domain
Using an Enumeration
Legal Uses of an Enumeration
6. Interface Call-outs
Using Callouts
Callout Routines Provided
7. Command Line Translation and Build
xtumlmc_build: Command Line Build Automation
Utility
Usage
Sample/Example Timer (TIM)
8. Initialization and Preexisting Instances
Initialization Overview
Preexisting Instances
Terminology
Constructs Supported
Dynamic Initialization
Dynamic Init Process
Pros and Cons of Dynamic Init
Initialization Functions
Rules for Creating Initialization Functions
Example of Dynamic Initialization
Multi-Domain Dynamic Initialization
Multi-Domain Init Sequencing
Initialization in Simulation
9. MC-3020 Collections
MC-3020 Collections
Containers
Sets
Set Symmetry
Singly Linked Lists
Doubly Linked Lists
Performance Considerations
Merged Containers
10. Persistence
Introduction
High-Level Requirements
Non-volatile Storage Technology
Granularity
Balance
Operational Overview
General Scenario
Manual and Automatic Commit
Assumptions
Limitations
Persistence Marking Options
Analysis
Persist Domain Data Analysis
PERSIST Domain Functions
Non-volatile Storage Domain Data Analysis
Non-volatile Storage Domain Functions
Persistence Design
Class-Based Create/Delete/Init
Centralized Create/Delete/Init
Implications to Persistence Support
Implementation
Effects
Cost Modeling
11. Tasking/Threading
Introduction
Marking for Tasking
Prioritization
Priority in the Generated Code
Mapping to Tasks
How Many Tasks?
Data Access Issues
Tasking/Threading in the Generated Code
12. Modeling Guide
How To Draw a Supertype/Subtype Association
A. Analysis Guide
Restrictions and Limitations
B. Background
Model Compilers (Software Architectures)
Shlaer-Mellor Development
Software Architecture Components
Additional Components
Model Compiler Analogy
Components
Mechanisms
Archetypes
Marks
Build Tools
Capabilities
C. PEI Test Case Setup
PEI Test Case Initialization Function Listing
D. Revision Controlling the Model
Key Files and Directories
E. Legal Notice

List of Figures

8.1. Autosampler Class Diagram
8.2. Autosampler Init Function
9.1. Singly Linked Lists of Instances
9.2. Doubly Linked Lists of Instances
9.3. Parallel Container/Object Arrays
9.4. Containers Merged Into Instance Data
10.1. Persistence Analysis Domain Chart
10.2. Persistence Class Diagram
10.3. Non-Volatile Storage Class Diagram
12.1. Supertype/Subtype association - figure 1
12.2. Supertype/Subtype association - figure 2
12.3. Supertype/Subtype association - figure 3
B.1. Model Compiler Analogy with BridgePoint Tool Set
C.1. PEI Model Init Function

List of Examples

4.1. Tagging Interrupt Bridges
4.2. Tagging Interrupt Bridges
4.3. Data Type Precision
4.4. Mapping Pointer Types
4.5. Specifying a Value for the Default Uninitialized Enumerator
4.6. Specifying Enumerator Values
4.7. Marking the System Configuration Package
4.8. Enabling Tasking/Threading
4.9. Setting Task/Thread Priority
4.10. Defining String Length
4.11. Max Relationship Extent
4.12. Max Selections Extent
4.13. Collection Node Type Selection
4.14. Self-Directed Queue Depth
4.15. Instance Directed Queue Depth
4.16. Pending xtUML Timers
4.17. Establish Simulated Time Base
4.18. Interleaved Bridges Queue Depth
4.19. Interleaved Bridge Argument Data
4.20. Changing Persistence Cache Queue Depth
4.21. Using Dynamic Memory Allocation
4.22. Configuring State Save
4.23. Setting the Port Type
4.24. Treat All Ports as Polymorphic
4.25. Marking a Component as a Channel
4.26. Marking Interface Prefixes
4.27. Marking a template parameter
4.28. Marking Initialization Functions
4.29. Marking Excluded Classes
4.30. Tagging Excluded Subsystems
4.31. Not Translating a Function
4.32. Enabling State Transition Tracing
4.33. Enabling Action Language Tracing
4.34. Enabling Empty Reference Usage Detection
4.35. Forcing Generation Non-Optimal Code
4.36. Mapping Classes to Tasks
4.37. Marking Max Instances
4.38. Marking Default Extent
4.39. Marking Classes as Having PEIs Defined in Data
4.40. Marking Classes with Static Instance Populations
4.41. Marking Read-Only Classes
4.42. Marking (Non-) Persistent Classes
4.43. Not Translating Operations
4.44. Disabling Tracing for a Class
4.45. Enabling Tracing for a Class
4.46. Marking a Priority Event
6.1. Bring-up Initialization
6.2. Pre-xtUML Initialization
6.3. Post-xtUML Initialization
6.4. Background Processing
6.5. Pre-Shutdown
6.6. Post-Shutdown Callout
6.7. Event Can't Happen
6.8. Event with No Instance
6.9. Event Free List Empty Handler
6.10. User Empty Handle Detection
6.11. Object Pool Empty
6.12. Node List Empty
6.13. Overflow of Interleaved Bridge
6.14. Event Queue Empty Notification
7.1. Simple xtumlmc_build Example
7.2. Two Domain xtumlmc_build Example