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