/' ' Copyright (c) 2022, Arm Limited. All rights reserved. ' ' SPDX-License-Identifier: BSD-3-Clause '/ /' TF-A EL3 SPMC Data Flow Diagram '/ @startuml digraph tfa_el3_dfd { # Allow arrows to end on cluster boundaries compound=true concentrate=false newrank=true # Default settings for edges and nodes edge [minlen=2 color="#8c1b07"] node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7] # Nodes outside of the trust boundary nsec [label="NS Client"] ddr [label="External memory (DDR)"] {rank="same" smmu, spmd} # Trust boundary cluster subgraph cluster_trusted { graph [style=dashed color="#f22430"] concentrate=false # HW IPs cluster subgraph cluster_ip { label ="Hardware IPs"; graph [style=filled color="#000000" fillcolor="#ffd29e"] rank="same" gic [label="GIC" width=1.2 height=0.5] smmu [label="SMMU" width=1.2 height=0.5] uart [label="UART" width=1.2 height=0.5] pe [label="PE" width=1.2 height=0.5] } # TF-A cluster subgraph cluster_tfa { label ="EL3 monitor"; graph [style=filled color="#000000" fillcolor="#faf9cd"] {rank="same" spmc, bl31} {rank="same" spmd, lsp} spmc [label="SPMC" fillcolor="#ddffb3"] bl31 [label="BL31" fillcolor="#ddffb3"]; spmd [label="SPMD" fillcolor="#ddffb3"] lsp[label="LSP1" fillcolor="#ddffb3"] } bl2 [label="BL2" width=1.2 height=0.5] } # Secure Partitions cluster subgraph cluster_sp { label ="Secure Partitions"; graph [style=filled color="#000000" fillcolor="#faf9cd"] sp1 [label="SP1" fillcolor="#ddffb3"] } sp1 -> spmc [dir="both" label="DF1"] lsp -> spmc [dir="both" label="DF4"] spmc -> spmd [dir="both" label="DF2"] spmd -> nsec [dir="both" label="DF3"] spmc -> smmu [lhead=cluster_spmc label="DF5"] bl2 -> spmc [lhead=cluster_spmc label="DF6"] bl2 -> sp1 [lhead=cluster_spmc label="DF6"] sp1 -> ddr [dir="both" label="DF7"] spmc -> ddr [dir="both" label="DF7"] } @enduml