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