| /' |
| ' Copyright (c) 2021, Arm Limited. All rights reserved. |
| ' |
| ' SPDX-License-Identifier: BSD-3-Clause |
| '/ |
| |
| /' |
| TF-A SPMC Data Flow Diagram |
| '/ |
| |
| @startuml |
| digraph tfa_dfd { |
| |
| # Allow arrows to end on cluster boundaries |
| compound=true |
| |
| # Default settings for edges and nodes |
| edge [minlen=2 color="#8c1b07"] |
| node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7] |
| |
| # Nodes outside of the trust boundary |
| nsec [label="NS Client"] |
| ddr [label="External memory (DDR)"] |
| |
| # Trust boundary cluster |
| subgraph cluster_trusted { |
| graph [style=dashed color="#f22430"] |
| |
| # HW IPs cluster |
| subgraph cluster_ip { |
| label ="Hardware IPs"; |
| graph [style=filled color="#000000" fillcolor="#ffd29e"] |
| |
| rank="same" |
| gic [label="GIC" width=1.2 height=0.5] |
| smmu [label="SMMU" width=1.2 height=0.5] |
| uart [label="UART" width=1.2 height=0.5] |
| pe [label="PE" width=1.2 height=0.5] |
| } |
| |
| # TF-A cluster |
| subgraph cluster_tfa { |
| label ="EL3 monitor"; |
| graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| |
| bl31 [label="BL31" fillcolor="#ddffb3"]; |
| spmd [label="SPMD" fillcolor="#ddffb3" height=1] |
| } |
| |
| # SPMC cluster |
| subgraph cluster_spmc { |
| label ="SPMC"; |
| graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| |
| spmc [label="SPMC" fillcolor="#ddffb3" height=1] |
| } |
| bl2 [label="BL2" width=1.2 height=0.5] |
| } |
| |
| # Secure Partitions cluster |
| subgraph cluster_sp { |
| label ="Secure Partitions"; |
| graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| |
| sp1 [label="SP1" fillcolor="#ddffb3" height=1] |
| sp2 [label="SP2" fillcolor="#ddffb3" height=1] |
| spn [label="SP..." fillcolor="#ddffb3" height=1] |
| } |
| |
| # Interactions between nodes |
| sp1 -> spmc [dir="both" label="DF1"] |
| spmc -> spmd [dir="both" label="DF2"] |
| spmd -> nsec [dir="both" label="DF3"] |
| sp1 -> sp2 [dir="both" label="DF4"] |
| spmc -> smmu [lhead=cluster_spmc label="DF5"] |
| bl2 -> spmc [lhead=cluster_spmc label="DF6"] |
| bl2 -> spn [lhead=cluster_spmc label="DF6"] |
| sp1 -> ddr [dir="both" label="DF7"] |
| spmc -> ddr [dir="both" label="DF7"] |
| } |
| |
| @enduml |