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