1*7006f208SZelalem/' 2*7006f208SZelalem ' Copyright (c) 2021, Arm Limited. All rights reserved. 3*7006f208SZelalem ' 4*7006f208SZelalem ' SPDX-License-Identifier: BSD-3-Clause 5*7006f208SZelalem '/ 6*7006f208SZelalem 7*7006f208SZelalem/' 8*7006f208SZelalemTF-A Data Flow Diagram 9*7006f208SZelalem'/ 10*7006f208SZelalem 11*7006f208SZelalem@startuml 12*7006f208SZelalemdigraph tfa_dfd { 13*7006f208SZelalem 14*7006f208SZelalem # Arrange nodes from left to right 15*7006f208SZelalem rankdir="LR" 16*7006f208SZelalem 17*7006f208SZelalem # Allow arrows to end on cluster boundaries 18*7006f208SZelalem compound=true 19*7006f208SZelalem 20*7006f208SZelalem # Default settings for edges and nodes 21*7006f208SZelalem edge [minlen=2 color="#8c1b07"] 22*7006f208SZelalem node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7] 23*7006f208SZelalem 24*7006f208SZelalem # Nodes outside of the trust boundary 25*7006f208SZelalem nsec [label="Non-secure\nClients"] 26*7006f208SZelalem sec [label="Secure\nClients"] 27*7006f208SZelalem dbg [label="Debug & Trace"] 28*7006f208SZelalem logs [label="Logs\n(UART)"] 29*7006f208SZelalem nvm [label="Non-volatile\nMemory"] 30*7006f208SZelalem 31*7006f208SZelalem # Trust boundary cluster 32*7006f208SZelalem subgraph cluster_trusted{ 33*7006f208SZelalem graph [style=dashed color="#f22430"] 34*7006f208SZelalem 35*7006f208SZelalem # HW IPs cluster 36*7006f208SZelalem subgraph cluster_ip{ 37*7006f208SZelalem label ="Hardware IPs"; 38*7006f208SZelalem graph [style=filled color="#000000" fillcolor="#ffd29e"] 39*7006f208SZelalem 40*7006f208SZelalem rank="same" 41*7006f208SZelalem gic [label="GIC" width=1.2 height=0.5] 42*7006f208SZelalem tzc [label="TZ\nController" width=1.2 height=0.5] 43*7006f208SZelalem etc [label="..." shape=none style=none height=0.5] 44*7006f208SZelalem } 45*7006f208SZelalem 46*7006f208SZelalem # TF-A cluster 47*7006f208SZelalem subgraph cluster_tfa{ 48*7006f208SZelalem label ="TF-A"; 49*7006f208SZelalem graph [style=filled color="#000000" fillcolor="#faf9cd"] 50*7006f208SZelalem 51*7006f208SZelalem bl1 [label="Boot ROM\n(BL1)" fillcolor="#ddffb3"]; 52*7006f208SZelalem bl2 [label="Trusted Boot\nFirmware\n(BL2)" fillcolor="#ddffb3" height=1] 53*7006f208SZelalem bl31 [label="TF-A Runtime\n(BL31)" fillcolor="#ddffb3"] 54*7006f208SZelalem } 55*7006f208SZelalem } 56*7006f208SZelalem 57*7006f208SZelalem # Interactions between nodes 58*7006f208SZelalem nvm -> bl31 [lhead=cluster_tfa label="DF1"] 59*7006f208SZelalem logs -> bl31 [dir="back" lhead=cluster_tfa label="DF2"] 60*7006f208SZelalem dbg -> bl2 [dir="both" lhead=cluster_tfa label="DF3"] 61*7006f208SZelalem sec -> bl2 [dir="both" lhead=cluster_tfa label="DF4"] 62*7006f208SZelalem nsec -> bl1 [dir="both" lhead=cluster_tfa, label="DF5"] 63*7006f208SZelalem bl2 -> tzc [dir="both" ltail=cluster_tfa lhead=cluster_ip label="DF6" minlen=1] 64*7006f208SZelalem} 65*7006f208SZelalem 66*7006f208SZelalem@enduml 67