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