blob: 000791105b5320866c738793a99063d5cc5edc1c [file] [log] [blame]
Zelalem05fed522021-02-24 19:20:09 -06001/'
2 ' Copyright (c) 2021, Arm Limited. All rights reserved.
3 '
4 ' SPDX-License-Identifier: BSD-3-Clause
5 '/
6
7/'
8TF-A Data Flow Diagram
9'/
10
11@startuml
12digraph tfa_dfd {
13
14 # Arrange nodes from left to right
15 rankdir="LR"
16
17 # Allow arrows to end on cluster boundaries
18 compound=true
19
20 # Default settings for edges and nodes
21 edge [minlen=2 color="#8c1b07"]
22 node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7]
23
24 # Nodes outside of the trust boundary
25 nsec [label="Non-secure\nClients"]
26 sec [label="Secure\nClients"]
27 dbg [label="Debug & Trace"]
28 logs [label="Logs\n(UART)"]
29 nvm [label="Non-volatile\nMemory"]
30
31 # Trust boundary cluster
32 subgraph cluster_trusted{
33 graph [style=dashed color="#f22430"]
34
35 # HW IPs cluster
36 subgraph cluster_ip{
37 label ="Hardware IPs";
38 graph [style=filled color="#000000" fillcolor="#ffd29e"]
39
40 rank="same"
41 gic [label="GIC" width=1.2 height=0.5]
42 tzc [label="TZ\nController" width=1.2 height=0.5]
43 etc [label="..." shape=none style=none height=0.5]
44 }
45
46 # TF-A cluster
47 subgraph cluster_tfa{
48 label ="TF-A";
49 graph [style=filled color="#000000" fillcolor="#faf9cd"]
50
51 bl1 [label="Boot ROM\n(BL1)" fillcolor="#ddffb3"];
52 bl2 [label="Trusted Boot\nFirmware\n(BL2)" fillcolor="#ddffb3" height=1]
53 bl31 [label="TF-A Runtime\n(BL31)" fillcolor="#ddffb3"]
54 }
55 }
56
57 # Interactions between nodes
58 nvm -> bl31 [lhead=cluster_tfa label="DF1"]
59 logs -> bl31 [dir="back" lhead=cluster_tfa label="DF2"]
60 dbg -> bl2 [dir="both" lhead=cluster_tfa label="DF3"]
61 sec -> bl2 [dir="both" lhead=cluster_tfa label="DF4"]
62 nsec -> bl1 [dir="both" lhead=cluster_tfa, label="DF5"]
63 bl2 -> tzc [dir="both" ltail=cluster_tfa lhead=cluster_ip label="DF6" minlen=1]
64}
65
66@enduml