tfa_arm_cca_dfd.puml 2.5 KB

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