/' ' Copyright (c) 2021, Arm Limited. All rights reserved. ' ' SPDX-License-Identifier: BSD-3-Clause '/ /' TF-A SPMC Data Flow Diagram '/ @startuml digraph tfa_dfd { # Allow arrows to end on cluster boundaries compound=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)"] # Trust boundary cluster subgraph cluster_trusted { graph [style=dashed color="#f22430"] # 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"] bl31 [label="BL31" fillcolor="#ddffb3"]; spmd [label="SPMD" fillcolor="#ddffb3" height=1] } # SPMC cluster subgraph cluster_spmc { label ="SPMC"; graph [style=filled color="#000000" fillcolor="#faf9cd"] spmc [label="SPMC" fillcolor="#ddffb3" height=1] } 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" height=1] sp2 [label="SP2" fillcolor="#ddffb3" height=1] spn [label="SP..." fillcolor="#ddffb3" height=1] } # Interactions between nodes sp1 -> spmc [dir="both" label="DF1"] spmc -> spmd [dir="both" label="DF2"] spmd -> nsec [dir="both" label="DF3"] sp1 -> sp2 [dir="both" label="DF4"] spmc -> smmu [lhead=cluster_spmc label="DF5"] bl2 -> spmc [lhead=cluster_spmc label="DF6"] bl2 -> spn [lhead=cluster_spmc label="DF6"] sp1 -> ddr [dir="both" label="DF7"] spmc -> ddr [dir="both" label="DF7"] } @enduml