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