blob: c716180b67952a808f3bf2503d4c55e51c9a2ec5 [file] [log] [blame]
Shruti Gupta795af712022-09-27 14:21:13 +01001/'
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