textual-notation-of-model/packages/architecture/sdv_platform_stack.sysml
1 view(s) · 103 declared member(s) view source on GitHub
view sdvPlatformStackStructureView
| Viewpoint | selectedPhysicalStructureViewpoint (PhysicalStructureDefinitionViewpoint) |
|---|---|
| Concern | physicalStructureConcern |
| Render | asTreeDiagram |
| Exposes | DE4SDV_SDVPlatformStack::* |
| Source | textual-notation-of-model/packages/architecture/sdv_platform_stack.sysml:672 |
No committed diagram. Regenerate via the Privileged Syside Validation workflow (expected artifact
diagrams/diagram-sdvPlatformStackStructureView.svg).Source
1/*2 * DE4SDV SDV platform stack architecture model slice.3 *4 * This package models the layered architecture of a software-defined vehicle5 * as a product-line variation structure. It defines the stack layers, their6 * boundary interfaces, and the variation points where configurable choices7 * select between open-source realizations.8 *9 * Scope of this slice:10 * - Stack layer definitions (vehicle applications, middleware, OS, hypervisor, hardware)11 * - Boundary interface definitions between adjacent layers12 * - Variation points with candidate variant realizations, inlined13 * as structural variation points on the stack's layer parts14 * - Compatibility constraints between layers15 *16 * Out of scope for this slice:17 * - Internal architecture of any specific OSS project (Autoware, S-CORE, etc.)18 * - Allocation of functional responsibilities to execution platforms19 * - Timing/safety/security property binding to specific stacks20 * - Compliance or type-approval claims21 * - Physical/mechanical domain modeling22 *23 * Conventions:24 * - Layer definitions use `part def` with doc annotations25 * - Boundary interfaces use `interface def` with directional ports26 * - Variability uses native SysML v2 `variation` / `variant` notation27 * - Candidate realizations are `part def` specializations of layer defs,28 * marked as candidates with doc-only provenance (no compliance claim)29 * - Compatibility constraints use `constraint def`30 * - File uses a flat top-level package name (DE4SDV_SDVPlatformStack)31 * to avoid cross-file sibling-package import issues in SysIDE32 */3334package DE4SDV_SDVPlatformStack {35 private import SAF_Viewpoints::*;36 private import DE4SDV_Stakeholders::*;37 private import Views::*;383940 /* ──────────────────────────────────────────41 * Stack layer definitions42 * ──────────────────────────────────────────43 * Each layer is an abstract part def. Concrete realizations44 * specialize these defs and appear as variants in the variation45 * section below.46 */4748 part def SDVPlatformStack {49 doc /*50 * Complete layered architecture of a software-defined vehicle51 * computing platform. A configured member product selects one52 * realization from each variation, subject to compatibility53 * constraints.54 */5556 variation part vehicleApplication : VehicleApplicationLayer {57 /* ADAS domain candidates shown; other domain applications (body,58 * chassis, telematics, IVI) to be added in domain-specific increments. */59 variant part autoware : AutowareStack;60 variant part openpilot : OpenpilotStack;61 variant part apollo : ApolloStack;62 }6364 variation part middleware : MiddlewareLayer {65 variant part eclipseSCORE : EclipseSCORE;66 variant part androidSDV : AndroidSDVMiddleware;67 variant part autosarAdaptive : AUTOSARAdaptive;68 variant part none[0]; /* single-domain architecture, no vehicle-level middleware */69 }7071 variation part applicationMiddlewareAdapter : ApplicationMiddlewareAdapterLayer {72 variant part autowareToSCORE : AutowareToSCOREAdapter;73 variant part autowareToAAOSSDV : AutowareToAAOSSDVAdapter;74 variant part autowareToAUTOSAR : AutowareToAUTOSARAdapter;75 variant part openpilotToSCORE : OpenpilotToSCOREAdapter;76 variant part apolloToSCORE : ApolloToSCOREAdapter;77 variant part none[0]; /* no adapter when no vehicle-level middleware */78 }7980 variation part osPlatform : OSPlatformLayer {81 variant part linux : LinuxPlatform;82 variant part android : AndroidHLOS;83 variant part qnx : QNXPlatform;84 }8586 variation part hypervisor : HypervisorLayer {87 variant part qvm : QNXQVM;88 variant part acrn : ACRNHypervisor;89 variant part kvm : KVMHypervisor;90 variant part none[0]; /* single-domain architecture, no hypervisor */91 }9293 part hardware : HardwareLayer;9495 /*96 * Inter-layer boundary interfaces.97 * Each boundary is a bidirectional interface between adjacent layers.98 * The contracts at these boundaries are what DE4SDV models; the99 * concrete realizations either conform or don't.100 */101 interface applicationMiddlewareBoundary : ApplicationAdapterInterface102 connect vehicleApplication.middlewarePort to applicationMiddlewareAdapter.applicationPort;103104 interface adapterMiddlewareBoundary : AdapterMiddlewareInterface105 connect applicationMiddlewareAdapter.middlewarePort to middleware.applicationPort;106107 interface middlewareOSBoundary : MiddlewareOSInterface108 connect middleware.osPort to osPlatform.middlewarePort;109110 interface osHypervisorBoundary : OSHypervisorInterface111 connect osPlatform.hypervisorPort to hypervisor.guestPort;112113 interface hypervisorHardwareBoundary : HardwareHypervisorInterface114 connect hypervisor.hypervisorPort to hardware.hypervisorPort;115 }116117 /* ──────────────────────────────────────────118 * Layer abstractions119 * ──────────────────────────────────────────120 * Each layer def declares the boundary ports it exposes to adjacent121 * layers. Internal structure is deliberately not modeled.122 */123124 part def VehicleApplicationLayer {125 doc /*126 * Vehicle domain-specific application layer.127 * Provides domain-specific applications such as ADAS (perception,128 * planning, control), body, chassis, powertrain, IVI, telematics,129 * connectivity, and diagnostics.130 *131 * Candidate realizations shown: Autoware, Openpilot, Apollo Auto (ADAS domain).132 * Domain-specific application stacks typically ship their own internal middleware133 * (ROS 2, Cyber RT, custom) for ADAS-internal communication.134 * The boundary port to the vehicle-level middleware handles135 * vehicle signal access, diagnostics, and lifecycle coordination.136 */137138 port middlewarePort : ApplicationAdapterPort;139 }140141 part def ApplicationMiddlewareAdapterLayer {142 doc /*143 * Adapter between domain-specific application stacks and vehicle-level middleware.144 * Each application stack ships its own internal communication (e.g. Autoware uses ROS 2/DDS);145 * the vehicle-level middleware uses a different communication paradigm (e.g. S-CORE uses LoLa,146 * Android SDV uses VSIDL service bundles, AUTOSAR uses SOME/IP). The adapter translates147 * between these.148 */149150 port applicationPort : ApplicationAdapterPort;151 port middlewarePort : MiddlewareAdapterPort;152 }153154 part def MiddlewareLayer {155 doc /*156 * Vehicle-level middleware / runtime platform.157 * Provides IPC, lifecycle management, service discovery,158 * diagnostics, persistency, and timing orchestration for159 * vehicle applications running on the same compute domain.160 *161 * Candidate realizations: Eclipse S-CORE, Android SDV,162 * AUTOSAR Adaptive (ARA).163 *164 * Note: AGL is a full platform (OS + IVI + app framework),165 * not a middleware layer. It is modeled at the OS platform layer.166 */167168 port applicationPort : MiddlewareAdapterPort;169 port osPort : MiddlewareOSPort;170 }171172 part def OSPlatformLayer {173 doc /*174 * Operating system / platform layer.175 * Provides scheduling, memory management, driver support,176 * and POSIX or Android framework services.177 *178 * Candidate realizations: Linux (AGL, generic), Android HLOS,179 * QNX, AUTOSAR Adaptive platform.180 */181182 port middlewarePort : MiddlewareOSPort;183 port hypervisorPort : OSHypervisorPort;184 }185186 part def HypervisorLayer {187 doc /*188 * Virtualization / hypervisor layer.189 * Provides partition isolation for mixed-criticality systems190 * where multiple OS domains share the same SoC.191 *192 * Optional: single-domain architectures do not use a hypervisor.193 * The variation below includes a "none" variant for this case.194 *195 * Candidate realizations: QNX QVM, ACRN, KVM (Linux).196 */197198 port guestPort : OSHypervisorPort;199 port hypervisorPort : HardwareHypervisorPort;200 }201202 part def HardwareLayer {203 doc /*204 * Physical compute hardware: SoC, MCU, sensors, actuators.205 * DE4SDV does not model physics, thermodynamics, or mechanics206 * at this layer — only the compute platform boundary that207 * the software stack executes on.208 *209 * Candidate realizations: Qualcomm, NVIDIA, Renesas, NXP, etc.210 * This layer is deliberately abstract; concrete hardware modeling211 * is out of scope for the SDV platform stack slice.212 */213214 port hypervisorPort : HardwareHypervisorPort;215 }216217 /* ──────────────────────────────────────────218 * Boundary interface definitions219 * ──────────────────────────────────────────220 * Each interface def declares the contract surface between221 * two adjacent layers. These are abstract contracts; specific222 * timing, safety, and security properties will be added in223 * the reference-contract-packages increment.224 */225226 port def ApplicationMiddlewarePort {227 doc /*228 * Port type for the Vehicle Application ↔ Middleware boundary.229 * Carries vehicle signal access, diagnostics, lifecycle230 * coordination, and service-binding interactions.231 */232 inout item vehicleSignals;233 inout item diagnosticCommands;234 inout item lifecycleEvents;235 inout item serviceRequests;236 }237238 interface def ApplicationMiddlewareInterface {239 doc /*240 * Contract between the vehicle application layer and the241 * vehicle-level middleware. The application stack expects signal242 * access, timing-aware scheduling, and fault containment243 * from the middleware. The middleware expects the application244 * stack to register as a managed application with defined245 * lifecycle hooks.246 */247 end adasSide : ApplicationMiddlewarePort;248 end middlewareSide : ApplicationMiddlewarePort;249 }250251 port def ApplicationAdapterPort {252 doc /*253 * Port type for the Vehicle Application ↔ Adapter boundary.254 * Carries application-native communication (e.g. ROS 2 topics for Autoware).255 */256 inout item applicationNativeMessages;257 inout item applicationLifecycleEvents;258 }259260 port def MiddlewareAdapterPort {261 doc /*262 * Port type for the Adapter ↔ Middleware boundary.263 * Carries middleware-native communication (e.g. LoLa for S-CORE, VSIDL for Android SDV, SOME/IP for AUTOSAR).264 */265 inout item middlewareNativeMessages;266 inout item middlewareLifecycleEvents;267 }268269 interface def ApplicationAdapterInterface {270 doc /*271 * Contract between the vehicle application layer and the adapter. The application stack publishes/subscribes in its native protocol; the adapter translates.272 */273 end applicationSide : ApplicationAdapterPort;274 end adapterSide : ApplicationAdapterPort;275 }276277 interface def AdapterMiddlewareInterface {278 doc /*279 * Contract between the adapter and the vehicle-level middleware. The adapter translates application-native messages to middleware-native service calls/signals.280 */281 end adapterSide : MiddlewareAdapterPort;282 end middlewareSide : MiddlewareAdapterPort;283 }284285 port def MiddlewareOSPort {286 doc /*287 * Port type for the Middleware ↔ OS boundary.288 * Carries scheduling requests, memory allocation,289 * power management, and watchdog/timeout interactions.290 */291 inout item schedulingRequests;292 inout item memoryAllocation;293 inout item powerManagement;294 inout item watchdogSignals;295 }296297 interface def MiddlewareOSInterface {298 doc /*299 * Contract between the middleware runtime and the300 * operating system. The middleware expects preemptive301 * scheduling, memory isolation, deterministic timing302 * support, and driver access from the OS. The OS expects303 * the middleware to respect resource limits and304 * scheduling policies.305 */306 end middlewareSide : MiddlewareOSPort;307 end osSide : MiddlewareOSPort;308 }309310 port def OSHypervisorPort {311 doc /*312 * Port type for the OS ↔ Hypervisor boundary.313 * Carries partition configuration, inter-VM communication,314 * resource allocation, and isolation properties.315 */316 inout item partitionConfig;317 inout item interVMCommunication;318 inout item resourceAllocation;319 }320321 interface def OSHypervisorInterface {322 doc /*323 * Contract between an OS domain and the hypervisor.324 * The OS expects CPU/memory/I/O allocation, partition325 * isolation, and inter-VM communication channels from326 * the hypervisor. The hypervisor expects the OS to327 * operate within its allocated partition.328 */329 end osSide : OSHypervisorPort;330 end hypervisorSide : OSHypervisorPort;331 }332333 port def HardwareHypervisorPort {334 doc /*335 * Port type for the Hypervisor ↔ Hardware boundary.336 * Carries hardware resource access, interrupt routing,337 * and platform initialization.338 */339 inout item hardwareResources;340 inout item interruptRouting;341 }342343 interface def HardwareHypervisorInterface {344 doc /*345 * Contract between the hypervisor and the physical346 * compute hardware. The hypervisor expects access to347 * CPU cores, memory regions, interrupt controllers,348 * and I/O devices. This is the lowest software-visible349 * boundary; below it is hardware only.350 */351 end hypervisorSide : HardwareHypervisorPort;352 end hardwareSide : HardwareHypervisorPort;353 }354355 /* ──────────────────────────────────────────356 * Candidate realizations — vehicle application layer (ADAS domain shown)357 * ────────────────────────────────────────── */358 part def AutowareStack :> VehicleApplicationLayer {359 doc /*360 * Autoware (Autoware Foundation).361 * Open-source autonomous driving stack based on ROS 2.362 * License: Apache 2.0.363 * Status: candidate realization — no assumption of364 * conformance to DE4SDV boundary contracts without365 * evidence.366 */367 }368369 part def OpenpilotStack :> VehicleApplicationLayer {370 doc /*371 * Openpilot (comma.ai).372 * Open-source driver assistance system (L2).373 * Ships its own internal middleware; the boundary port374 * captures vehicle-level integration only.375 * License: MIT / comma.ai custom.376 * Status: candidate realization.377 */378 }379380 part def ApolloStack :> VehicleApplicationLayer {381 doc /*382 * Apollo Auto (Baidu).383 * Open-source autonomous driving stack using Cyber RT384 * as internal middleware.385 * License: Apache 2.0.386 * Status: candidate realization.387 */388 }389390 /* ──────────────────────────────────────────391 * Candidate realizations — application-middleware adapter layer392 * ────────────────────────────────────────── */393 part def AutowareToSCOREAdapter :> ApplicationMiddlewareAdapterLayer {394 doc /*395 * Adapts Autoware ROS 2 topics to Eclipse S-CORE LoLa IPC.396 */397 }398399 part def AutowareToAAOSSDVAdapter :> ApplicationMiddlewareAdapterLayer {400 doc /*401 * Candidate boundary between Autoware ROS 2 and AAOS SDV service402 * interfaces. A configured product may select a direct VSIDL-to-ROS 2403 * realization or a separately justified brokered realization. This404 * definition does not claim generated bindings, transport, deployment,405 * runtime behavior, or interoperability evidence.406 */407 }408409 part def AutowareToAUTOSARAdapter :> ApplicationMiddlewareAdapterLayer {410 doc /*411 * Adapts Autoware ROS 2 topics to AUTOSAR Adaptive SOME/IP services.412 */413 }414415 part def OpenpilotToSCOREAdapter :> ApplicationMiddlewareAdapterLayer {416 doc /*417 * Adapts Openpilot internal communication to S-CORE LoLa.418 */419 }420421 part def ApolloToSCOREAdapter :> ApplicationMiddlewareAdapterLayer {422 doc /*423 * Adapts Apollo Cyber RT to S-CORE LoLa.424 */425 }426427 /* ──────────────────────────────────────────428 * Candidate realizations — Middleware layer429 * ────────────────────────────────────────── */430 part def EclipseSCORE :> MiddlewareLayer {431 doc /*432 * Eclipse S-CORE (Safe Open Vehicle Core).433 * Open-source automotive middleware (C++ / Rust).434 * Modules: communication (LoLa), orchestration, persistency,435 * time, lifecycle, diagnostics, baselibs.436 * Targets: Linux, QNX. Not designed for Android HLOS.437 * License: Apache 2.0.438 * Status: candidate realization. S-CORE maintainers have439 * not been engaged on SysML v2 model integration.440 */441 }442443 part def AndroidSDVMiddleware :> MiddlewareLayer {444 doc /*445 * Android SDV (Google / AOSP).446 * Headless, native Android-derived platform for distributed vehicle447 * services. Runs as a VM on a hypervisor. Excludes JVM, Java services,448 * Android applications, and GUI functionality.449 *450 * Internal structure modeled in:451 * textual-notation-of-model/packages/architecture/aaos_sdv_middleware_boundary.sysml452 * (DE4SDV_AAOSSDVMiddlewareBoundary package).453 *454 * Key elements: Orchestrator, Service Lifecycle Manager, Health Monitor,455 * Update Manager, VSIDL/Middleware, Service Discovery, RPC, Data Tunnel,456 * SOME/IP interoperability, Automotive Services (Diagnostics, Configuration,457 * Calibration, Vehicle Power Mode, User Profile).458 *459 * Runs on Android HLOS, Linux, and as QNX QVM guest.460 * License: Apache 2.0 (AOSP).461 * Status: candidate realization. Upstream AAOS SDV maintainers have462 * not been engaged on DE4SDV model integration (GAP-MW-005).463 */464 }465466 part def AUTOSARAdaptive :> MiddlewareLayer {467 doc /*468 * AUTOSAR Adaptive Platform (ARA).469 * Automotive middleware standard with functional safety470 * focus (ASIL).471 * This entry is a placeholder for the standard interface472 * contract, not a specific open-source implementation.473 * License: varies by implementation.474 * Status: candidate realization — interface contract only.475 */476 }477478 /* ──────────────────────────────────────────479 * Candidate realizations — OS platform layer480 * ────────────────────────────────────────── */481 part def LinuxPlatform :> OSPlatformLayer {482 doc /*483 * Generic Linux platform (POSIX, preemptive scheduling).484 * Includes AGL and custom Linux distributions.485 * License: GPL (kernel) + Apache 2.0 / varies (user space).486 * Status: candidate realization.487 */488 }489490 part def AndroidHLOS :> OSPlatformLayer {491 doc /*492 * Android High-Level OS (Google / AOSP).493 * Linux kernel (GKI) + Android framework.494 * License: Apache 2.0 (AOSP) + GPL (kernel).495 * Status: candidate realization.496 */497 }498499 part def QNXPlatform :> OSPlatformLayer {500 doc /*501 * QNX Neutrino RTOS (BlackBerry / QNX).502 * Real-time POSIX OS, ASIL-D certified.503 * License: commercial (not open-source).504 * Status: candidate realization — included for mixed-criticality505 * architectures; acknowledged as non-OSS.506 */507 }508509 /* ──────────────────────────────────────────510 * Candidate realizations — Hypervisor layer511 * ────────────────────────────────────────── */512 part def QNXQVM :> HypervisorLayer {513 doc /*514 * QNX Virtual Machine (QVM) hypervisor.515 * Host for mixed-criticality: QNX + Linux + Android guests.516 * License: commercial (QNX).517 * Status: candidate realization.518 */519 }520521 part def ACRNHypervisor :> HypervisorLayer {522 doc /*523 * ACRN (Project ACRN, Linux Foundation).524 * Open-source hypervisor for automotive and IoT.525 * Supports Linux and Android guests.526 * License: BSD-2-Clause.527 * Status: candidate realization.528 */529 }530531 part def KVMHypervisor :> HypervisorLayer {532 doc /*533 * KVM (Kernel-based Virtual Machine, Linux).534 * Open-source virtualization in the Linux kernel.535 * License: GPL / LGPL.536 * Status: candidate realization.537 */538 }539540 /* ──────────────────────────────────────────541 * Compatibility constraints542 * ──────────────────────────────────────────543 * These constraints encode which combinations of layer544 * realizations are architecturally valid. They are the545 * product-line decision rules that enable trade-off analysis.546 *547 * Constraint bodies are documented as doc comments in this548 * increment. Future increments may formalize them as549 * require constraint bodies when validation confirms the550 * SysML v2 constraint expression syntax.551 */552553 constraint def MiddlewareOSCompatibility {554 doc /*555 * Middleware ↔ OS compatibility.556 *557 * Valid combinations:558 * Eclipse S-CORE ↔ Linux, QNX (not Android HLOS)559 * Android SDV ↔ Linux, Android HLOS, QNX (as QVM guest)560 * AUTOSAR Adaptive ↔ Linux, QNX561 *562 * Invalid:563 * Eclipse S-CORE ↔ Android HLOS (architecturally incompatible)564 */565 }566567 constraint def HypervisorOSCompatibility {568 doc /*569 * Hypervisor ↔ OS compatibility.570 *571 * Valid combinations:572 * QNX QVM ↔ QNX (native), Linux, Android, AGL (all as guests)573 * ACRN ↔ Linux, Android, AGL (all as guests; not QNX)574 * KVM ↔ Linux, AGL (guests; QNX guest support varies)575 * none ↔ any single OS (no virtualization)576 *577 * Invalid:578 * ACRN ↔ QNX (not supported)579 * KVM ↔ QNX (community-only, not production)580 */581 }582583 constraint def ApplicationMiddlewareCoexistence {584 doc /*585 * Application ↔ Middleware coexistence.586 *587 * Domain-specific application stacks (e.g. Autoware, Openpilot, Apollo for ADAS) each588 * ship their own internal communication middleware. They589 * coexist with the vehicle-level middleware (S-CORE, Android SDV,590 * AUTOSAR Adaptive) as separate layers — not as alternatives591 * at the same layer.592 *593 * The application stack handles domain-internal pipelines594 * (e.g. ADAS perception→planning→control).595 * The vehicle middleware handles vehicle signal access,596 * diagnostics, lifecycle, and inter-domain communication.597 *598 * No invalid combination exists at this boundary in principle,599 * but integration effort varies significantly:600 * Autoware + S-CORE: ROS 2 IPC must bridge to LoLa IPC601 * Openpilot + anything: custom device model, limited integration602 * Apollo + anything: Cyber RT must bridge to external middleware603 */604 }605606 constraint def ApplicationMiddlewareAdapterCompatibility {607 doc /*608 * Adapter compatibility across application and middleware selections.609 *610 * The adapter variation must match both the selected application stack611 * and the selected vehicle-level middleware. The adapter is present only612 * when a non-none vehicle middleware is selected; when middleware = none,613 * the adapter is also none and the application↔adapter and adapter↔middleware614 * boundaries are absent.615 *616 * Intended pairings:617 * Autoware ↔ AutowareToSCOREAdapter ↔ EclipseSCORE618 * Autoware ↔ AutowareToAAOSSDVAdapter ↔ AndroidSDVMiddleware619 * Autoware ↔ AutowareToAUTOSARAdapter ↔ AUTOSARAdaptive620 * Openpilot ↔ OpenpilotToSCOREAdapter ↔ EclipseSCORE621 * Apollo ↔ ApolloToSCOREAdapter ↔ EclipseSCORE622 */623 }624625 constraint def AGLPlatformScope {626 doc /*627 * AGL (Automotive Grade Linux) scope note.628 *629 * AGL is a full platform (OS + IVI framework + app framework +630 * compositor), not just an OS kernel. When AGL is selected as631 * the OS platform variant, it includes its own application632 * framework and does not simultaneously run S-CORE or633 * Android SDV middleware — AGL is an alternative to that634 * combination, not a layer beside it.635 *636 * This is a modeling note, not a hard constraint. AGL could637 * coexist with a domain application stack on a separate compute domain638 * via a hypervisor, but not on the same domain as S-CORE.639 */640 }641642 /* ──────────────────────────────────────────643 * Configured member product base644 * ──────────────────────────────────────────645 * ConfiguredSDVVariant is the abstract base for configured member646 * products. Concrete configured variants are generated from647 * Bill-of-Features YAML by the PLE configurator648 * (tools/configure_variant.py), not hand-written here.649 *650 * See:651 * model-based-product-line-engineering/feature-models/sdv_product_line.yaml652 * model-based-product-line-engineering/feature-configurations/653 * model-based-product-line-engineering/product-models/654 */655 part def ConfiguredSDVVariant :> SDVPlatformStack {656 doc /*657 * A configured member product of the SDV product line.658 * Selects one variant from each variation, subject to659 * compatibility constraints.660 *661 * Concrete configured variants are generated from Bill-of-Features662 * by the PLE configurator (tools/configure_variant.py).663 */664 }665666 concern physicalStructureConcern : PhysicalStructureConcern {667 subject;668 stakeholder systemsEngineer : SystemsEngineer;669 stakeholder reviewer : OpenSourceReviewer;670 }671672 view sdvPlatformStackStructureView {673 viewpoint selectedPhysicalStructureViewpoint : PhysicalStructureDefinitionViewpoint {674 frame physicalStructureConcern;675 }676677 expose DE4SDV_SDVPlatformStack::*;678 render asTreeDiagram;679 }680}681