spm_dfd.puml 2.3 KB

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