1/'
2 ' Copyright (c) 2021-2022, Arm Limited. All rights reserved.
3 '
4 ' SPDX-License-Identifier: BSD-3-Clause
5 '/
6
7/'
8TF-A Data Flow Diagram including RSS
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    uart [label="UART"]
29    nvm [label="Non-volatile\nMemory"]
30
31
32    # Trust boundary cluster
33    subgraph cluster_trusted{
34        graph [style=dashed color="#f22430"]
35
36        # HW IPs cluster
37        subgraph cluster_ip{
38            label ="Hardware IPs";
39            graph [style=filled color="#000000" fillcolor="#ffd29e"]
40
41            rank="same"
42            gic [label="GIC" width=1.2 height=0.5]
43            tzc [label="TZ\nController" width=1.2 height=0.5]
44            etc [label="..." shape=none style=none height=0.5]
45        }
46
47        # TF-A cluster
48        subgraph cluster_tfa{
49            label ="TF-A";
50            graph [style=filled color="#000000" fillcolor="#faf9cd"]
51
52            bl1 [label="Boot ROM\n(BL1)" fillcolor="#ddffb3"];
53            bl2 [label="Trusted Boot\nFirmware\n(BL2)" fillcolor="#ddffb3" height=1]
54            bl31 [label="TF-A Runtime\n(BL31)" fillcolor="#ddffb3"]
55        }
56
57        # RSS cluster
58        subgraph cluster_rss{
59            label ="RSS";
60            graph [style=filled color="#000000" fillcolor="#faf9cd"]
61
62            rss [label="Runtime Security\n\ Subsystem\n\ (RSS)" fillcolor="#ddffb3"]
63        }
64    }
65
66    # Interactions between nodes
67    nvm -> bl31 [lhead=cluster_tfa label="DF1"]
68    uart -> bl31 [dir="both" lhead=cluster_tfa label="DF2"]
69    dbg -> bl2 [dir="both" lhead=cluster_tfa label="DF3"]
70    sec -> bl2 [dir="both" lhead=cluster_tfa label="DF4"]
71    nsec -> bl1 [dir="both" lhead=cluster_tfa, label="DF5"]
72    bl2 ->  tzc [dir="both" ltail=cluster_tfa lhead=cluster_ip label="DF6" minlen=1]
73    bl31 -> rss [dir="both" ltail=cluster_tfa lhead=cluster_rss label="DF7" minlen=1]
74
75}
76
77@enduml
78