xref: /rk3399_ARM-atf/docs/resources/diagrams/plantuml/spm_dfd.puml (revision bd4b4b03c2cc8d05bb670ad80e277c48f2b2750e)
1*3af9b3f0SOlivier Deprez/'
2*3af9b3f0SOlivier Deprez ' Copyright (c) 2021, Arm Limited. All rights reserved.
3*3af9b3f0SOlivier Deprez '
4*3af9b3f0SOlivier Deprez ' SPDX-License-Identifier: BSD-3-Clause
5*3af9b3f0SOlivier Deprez '/
6*3af9b3f0SOlivier Deprez
7*3af9b3f0SOlivier Deprez/'
8*3af9b3f0SOlivier DeprezTF-A SPMC Data Flow Diagram
9*3af9b3f0SOlivier Deprez'/
10*3af9b3f0SOlivier Deprez
11*3af9b3f0SOlivier Deprez@startuml
12*3af9b3f0SOlivier Deprezdigraph tfa_dfd {
13*3af9b3f0SOlivier Deprez
14*3af9b3f0SOlivier Deprez    # Allow arrows to end on cluster boundaries
15*3af9b3f0SOlivier Deprez    compound=true
16*3af9b3f0SOlivier Deprez
17*3af9b3f0SOlivier Deprez    # Default settings for edges and nodes
18*3af9b3f0SOlivier Deprez    edge [minlen=2 color="#8c1b07"]
19*3af9b3f0SOlivier Deprez    node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7]
20*3af9b3f0SOlivier Deprez
21*3af9b3f0SOlivier Deprez    # Nodes outside of the trust boundary
22*3af9b3f0SOlivier Deprez    nsec [label="NS Client"]
23*3af9b3f0SOlivier Deprez    ddr  [label="External memory (DDR)"]
24*3af9b3f0SOlivier Deprez
25*3af9b3f0SOlivier Deprez    # Trust boundary cluster
26*3af9b3f0SOlivier Deprez    subgraph cluster_trusted {
27*3af9b3f0SOlivier Deprez        graph [style=dashed color="#f22430"]
28*3af9b3f0SOlivier Deprez
29*3af9b3f0SOlivier Deprez        # HW IPs cluster
30*3af9b3f0SOlivier Deprez        subgraph cluster_ip {
31*3af9b3f0SOlivier Deprez            label ="Hardware IPs";
32*3af9b3f0SOlivier Deprez            graph [style=filled color="#000000" fillcolor="#ffd29e"]
33*3af9b3f0SOlivier Deprez
34*3af9b3f0SOlivier Deprez            rank="same"
35*3af9b3f0SOlivier Deprez            gic [label="GIC" width=1.2 height=0.5]
36*3af9b3f0SOlivier Deprez            smmu [label="SMMU" width=1.2 height=0.5]
37*3af9b3f0SOlivier Deprez            uart [label="UART" width=1.2 height=0.5]
38*3af9b3f0SOlivier Deprez	    pe [label="PE" width=1.2 height=0.5]
39*3af9b3f0SOlivier Deprez        }
40*3af9b3f0SOlivier Deprez
41*3af9b3f0SOlivier Deprez        # TF-A cluster
42*3af9b3f0SOlivier Deprez        subgraph cluster_tfa {
43*3af9b3f0SOlivier Deprez            label ="EL3 monitor";
44*3af9b3f0SOlivier Deprez            graph [style=filled color="#000000" fillcolor="#faf9cd"]
45*3af9b3f0SOlivier Deprez
46*3af9b3f0SOlivier Deprez            bl31 [label="BL31" fillcolor="#ddffb3"];
47*3af9b3f0SOlivier Deprez            spmd [label="SPMD" fillcolor="#ddffb3" height=1]
48*3af9b3f0SOlivier Deprez        }
49*3af9b3f0SOlivier Deprez
50*3af9b3f0SOlivier Deprez        # SPMC cluster
51*3af9b3f0SOlivier Deprez        subgraph cluster_spmc {
52*3af9b3f0SOlivier Deprez            label ="SPMC";
53*3af9b3f0SOlivier Deprez            graph [style=filled color="#000000" fillcolor="#faf9cd"]
54*3af9b3f0SOlivier Deprez
55*3af9b3f0SOlivier Deprez            spmc [label="SPMC" fillcolor="#ddffb3" height=1]
56*3af9b3f0SOlivier Deprez        }
57*3af9b3f0SOlivier Deprez	bl2 [label="BL2" width=1.2 height=0.5]
58*3af9b3f0SOlivier Deprez    }
59*3af9b3f0SOlivier Deprez
60*3af9b3f0SOlivier Deprez    # Secure Partitions cluster
61*3af9b3f0SOlivier Deprez    subgraph cluster_sp {
62*3af9b3f0SOlivier Deprez        label ="Secure Partitions";
63*3af9b3f0SOlivier Deprez        graph [style=filled color="#000000" fillcolor="#faf9cd"]
64*3af9b3f0SOlivier Deprez
65*3af9b3f0SOlivier Deprez        sp1 [label="SP1" fillcolor="#ddffb3" height=1]
66*3af9b3f0SOlivier Deprez        sp2 [label="SP2" fillcolor="#ddffb3" height=1]
67*3af9b3f0SOlivier Deprez        spn [label="SP..." fillcolor="#ddffb3" height=1]
68*3af9b3f0SOlivier Deprez    }
69*3af9b3f0SOlivier Deprez
70*3af9b3f0SOlivier Deprez    # Interactions between nodes
71*3af9b3f0SOlivier Deprez    sp1 -> spmc [dir="both" label="DF1"]
72*3af9b3f0SOlivier Deprez    spmc -> spmd [dir="both" label="DF2"]
73*3af9b3f0SOlivier Deprez    spmd -> nsec [dir="both" label="DF3"]
74*3af9b3f0SOlivier Deprez    sp1 -> sp2 [dir="both" label="DF4"]
75*3af9b3f0SOlivier Deprez    spmc -> smmu [lhead=cluster_spmc label="DF5"]
76*3af9b3f0SOlivier Deprez    bl2 -> spmc [lhead=cluster_spmc label="DF6"]
77*3af9b3f0SOlivier Deprez    bl2 -> spn [lhead=cluster_spmc label="DF6"]
78*3af9b3f0SOlivier Deprez    sp1 -> ddr [dir="both"  label="DF7"]
79*3af9b3f0SOlivier Deprez    spmc -> ddr [dir="both"  label="DF7"]
80*3af9b3f0SOlivier Deprez}
81*3af9b3f0SOlivier Deprez
82*3af9b3f0SOlivier Deprez@enduml
83