1/' 2 ' Copyright (c) 2021, Arm Limited. All rights reserved. 3 ' 4 ' SPDX-License-Identifier: BSD-3-Clause 5 '/ 6 7/' 8TF-A SPMC Data Flow Diagram 9'/ 10 11@startuml 12digraph tfa_dfd { 13 14 # Allow arrows to end on cluster boundaries 15 compound=true 16 17 # Default settings for edges and nodes 18 edge [minlen=2 color="#8c1b07"] 19 node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7] 20 21 # Nodes outside of the trust boundary 22 nsec [label="NS Client"] 23 ddr [label="External memory (DDR)"] 24 25 # Trust boundary cluster 26 subgraph cluster_trusted { 27 graph [style=dashed color="#f22430"] 28 29 # HW IPs cluster 30 subgraph cluster_ip { 31 label ="Hardware IPs"; 32 graph [style=filled color="#000000" fillcolor="#ffd29e"] 33 34 rank="same" 35 gic [label="GIC" width=1.2 height=0.5] 36 smmu [label="SMMU" width=1.2 height=0.5] 37 uart [label="UART" width=1.2 height=0.5] 38 pe [label="PE" width=1.2 height=0.5] 39 } 40 41 # TF-A cluster 42 subgraph cluster_tfa { 43 label ="EL3 monitor"; 44 graph [style=filled color="#000000" fillcolor="#faf9cd"] 45 46 bl31 [label="BL31" fillcolor="#ddffb3"]; 47 spmd [label="SPMD" fillcolor="#ddffb3" height=1] 48 } 49 50 # SPMC cluster 51 subgraph cluster_spmc { 52 label ="SPMC"; 53 graph [style=filled color="#000000" fillcolor="#faf9cd"] 54 55 spmc [label="SPMC" fillcolor="#ddffb3" height=1] 56 } 57 bl2 [label="BL2" width=1.2 height=0.5] 58 } 59 60 # Secure Partitions cluster 61 subgraph cluster_sp { 62 label ="Secure Partitions"; 63 graph [style=filled color="#000000" fillcolor="#faf9cd"] 64 65 sp1 [label="SP1" fillcolor="#ddffb3" height=1] 66 sp2 [label="SP2" fillcolor="#ddffb3" height=1] 67 spn [label="SP..." fillcolor="#ddffb3" height=1] 68 } 69 70 # Interactions between nodes 71 sp1 -> spmc [dir="both" label="DF1"] 72 spmc -> spmd [dir="both" label="DF2"] 73 spmd -> nsec [dir="both" label="DF3"] 74 sp1 -> sp2 [dir="both" label="DF4"] 75 spmc -> smmu [lhead=cluster_spmc label="DF5"] 76 bl2 -> spmc [lhead=cluster_spmc label="DF6"] 77 bl2 -> spn [lhead=cluster_spmc label="DF6"] 78 sp1 -> ddr [dir="both" label="DF7"] 79 spmc -> ddr [dir="both" label="DF7"] 80} 81 82@enduml 83