Tamas Ban | ef589bf | 2022-11-30 17:09:43 +0100 | [diff] [blame] | 1 | /' |
| 2 | ' Copyright (c) 2021-2022, Arm Limited. All rights reserved. |
| 3 | ' |
| 4 | ' SPDX-License-Identifier: BSD-3-Clause |
| 5 | '/ |
| 6 | |
| 7 | /' |
| 8 | TF-A Data Flow Diagram including RSS |
| 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 | nsec [label="Non-secure\nClients"] |
| 26 | sec [label="Secure\nClients"] |
| 27 | dbg [label="Debug & Trace"] |
| 28 | logs [label="Logs\n(UART)"] |
| 29 | nvm [label="Non-volatile\nMemory"] |
| 30 | |
| 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 | tzc [label="TZ\nController" 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 | # RSS cluster |
| 58 | subgraph cluster_rss{ |
| 59 | label ="RSS"; |
| 60 | graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| 61 | |
| 62 | rss [label="Runtime Security\n\ Subsystem\n\ (RSS)" fillcolor="#ddffb3"] |
| 63 | } |
| 64 | } |
| 65 | |
| 66 | # Interactions between nodes |
| 67 | nvm -> bl31 [lhead=cluster_tfa label="DF1"] |
| 68 | logs -> bl31 [dir="back" lhead=cluster_tfa label="DF2"] |
| 69 | dbg -> bl2 [dir="both" lhead=cluster_tfa label="DF3"] |
| 70 | sec -> bl2 [dir="both" lhead=cluster_tfa label="DF4"] |
| 71 | nsec -> bl1 [dir="both" lhead=cluster_tfa, label="DF5"] |
| 72 | bl2 -> tzc [dir="both" ltail=cluster_tfa lhead=cluster_ip label="DF6" minlen=1] |
| 73 | bl31 -> rss [dir="both" ltail=cluster_tfa lhead=cluster_rss label="DF7" minlen=1] |
| 74 | |
| 75 | } |
| 76 | |
| 77 | @enduml |