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