Olivier Deprez | 86d1ffd | 2021-06-01 15:37:16 +0200 | [diff] [blame] | 1 | /' |
| 2 | ' Copyright (c) 2021, Arm Limited. All rights reserved. |
| 3 | ' |
| 4 | ' SPDX-License-Identifier: BSD-3-Clause |
| 5 | '/ |
| 6 | |
| 7 | /' |
| 8 | TF-A SPMC Data Flow Diagram |
| 9 | '/ |
| 10 | |
| 11 | @startuml |
| 12 | digraph tfa_dfd { |
| 13 | |
| 14 | # Allow arrows to end on cluster boundaries |
| 15 | compound=true |
| 16 | |
| 17 | # Default settings for edges and nodes |
| 18 | edge [minlen=2 color="#8c1b07"] |
| 19 | node [fillcolor="#ffb866" style=filled shape=box fixedsize=true width=1.6 height=0.7] |
| 20 | |
| 21 | # Nodes outside of the trust boundary |
| 22 | nsec [label="NS Client"] |
| 23 | ddr [label="External memory (DDR)"] |
| 24 | |
| 25 | # Trust boundary cluster |
| 26 | subgraph cluster_trusted { |
| 27 | graph [style=dashed color="#f22430"] |
| 28 | |
| 29 | # HW IPs cluster |
| 30 | subgraph cluster_ip { |
| 31 | label ="Hardware IPs"; |
| 32 | graph [style=filled color="#000000" fillcolor="#ffd29e"] |
| 33 | |
| 34 | rank="same" |
| 35 | gic [label="GIC" width=1.2 height=0.5] |
| 36 | smmu [label="SMMU" width=1.2 height=0.5] |
| 37 | uart [label="UART" width=1.2 height=0.5] |
| 38 | pe [label="PE" width=1.2 height=0.5] |
| 39 | } |
| 40 | |
| 41 | # TF-A cluster |
| 42 | subgraph cluster_tfa { |
| 43 | label ="EL3 monitor"; |
| 44 | graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| 45 | |
| 46 | bl31 [label="BL31" fillcolor="#ddffb3"]; |
| 47 | spmd [label="SPMD" fillcolor="#ddffb3" height=1] |
| 48 | } |
| 49 | |
| 50 | # SPMC cluster |
| 51 | subgraph cluster_spmc { |
| 52 | label ="SPMC"; |
| 53 | graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| 54 | |
| 55 | spmc [label="SPMC" fillcolor="#ddffb3" height=1] |
| 56 | } |
| 57 | bl2 [label="BL2" width=1.2 height=0.5] |
| 58 | } |
| 59 | |
| 60 | # Secure Partitions cluster |
| 61 | subgraph cluster_sp { |
| 62 | label ="Secure Partitions"; |
| 63 | graph [style=filled color="#000000" fillcolor="#faf9cd"] |
| 64 | |
| 65 | sp1 [label="SP1" fillcolor="#ddffb3" height=1] |
| 66 | sp2 [label="SP2" fillcolor="#ddffb3" height=1] |
| 67 | spn [label="SP..." fillcolor="#ddffb3" height=1] |
| 68 | } |
| 69 | |
| 70 | # Interactions between nodes |
| 71 | sp1 -> spmc [dir="both" label="DF1"] |
| 72 | spmc -> spmd [dir="both" label="DF2"] |
| 73 | spmd -> nsec [dir="both" label="DF3"] |
| 74 | sp1 -> sp2 [dir="both" label="DF4"] |
| 75 | spmc -> smmu [lhead=cluster_spmc label="DF5"] |
| 76 | bl2 -> spmc [lhead=cluster_spmc label="DF6"] |
| 77 | bl2 -> spn [lhead=cluster_spmc label="DF6"] |
| 78 | sp1 -> ddr [dir="both" label="DF7"] |
| 79 | spmc -> ddr [dir="both" label="DF7"] |
| 80 | } |
| 81 | |
| 82 | @enduml |