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