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