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