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