Files
lab-rv32i-freertos-c-event-…/doc/assets/a5-flow.svg
T

41 lines
12 KiB
XML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="530.8752px" preserveAspectRatio="none" style="width:572px;height:530px;" version="1.1" viewBox="0 0 572 530" width="572.2296px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="243.3178" x="163.0133" y="20.9262">A5 FLOW — ALL-ready wait and reusable barrier</text><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 5.0,5.0;" x1="45.2013" x2="45.2013" y1="59.5924" y2="494.0507"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 5.0,5.0;" x1="123.1015" x2="123.1015" y1="59.5924" y2="494.0507"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 5.0,5.0;" x1="193.3078" x2="193.3078" y1="59.5924" y2="494.0507"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 5.0,5.0;" x1="406.8119" x2="406.8119" y1="59.5924" y2="494.0507"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 5.0,5.0;" x1="535.6838" x2="535.6838" y1="59.5924" y2="494.0507"/><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="75.9767" x="7.6938" y="30.758"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="62.5125" x="14.426" y="48.799">Coordinator</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="75.9767" x="7.6938" y="493.089"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="62.5125" x="14.426" y="511.13">Coordinator</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="60.589" x="93.2878" y="30.758"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="47.1248" x="100.02" y="48.799">Worker A</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="60.589" x="93.2878" y="493.089"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="47.1248" x="100.02" y="511.13">Worker A</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="60.589" x="163.4942" y="30.758"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="47.1248" x="170.2263" y="48.799">Worker B</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="60.589" x="163.4942" y="493.089"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="47.1248" x="170.2263" y="511.13">Worker B</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="74.0532" x="370.2662" y="30.758"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="60.589" x="376.9983" y="48.799">EventGroup</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="74.0532" x="370.2662" y="493.089"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="60.589" x="376.9983" y="511.13">EventGroup</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="50.9717" x="510.6788" y="30.758"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="37.5075" x="517.4109" y="48.799">Verifier</text><rect fill="#FEFECE" height="27.8728" style="stroke: #A80036; stroke-width: 1.4425955368108925;" width="50.9717" x="510.6788" y="493.089"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="37.5075" x="517.4109" y="511.13">Verifier</text><polygon fill="#8095A1" points="395.752,85.5417,405.3693,89.3887,395.752,93.2356,399.599,89.3887" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="45.6822" x2="401.5224" y1="89.3887" y2="89.3887"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="126.9484" x="52.4143" y="84.3656">02 wait READY_ALL; block</text><polygon fill="#8095A1" points="395.752,113.4145,405.3693,117.2614,395.752,121.1083,399.599,117.2614" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="123.5824" x2="401.5224" y1="117.2614" y2="117.2614"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="75.9767" x="130.3145" y="112.2383">03 set READY_A</text><polygon fill="#8095A1" points="395.752,141.2873,405.3693,145.1342,395.752,148.9811,399.599,145.1342" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="123.5824" x2="401.5224" y1="145.1342" y2="145.1342"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="112.5225" x="130.3145" y="140.1111">04 sync(SYNC_A); block</text><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="193.7887" x2="234.1813" y1="173.007" y2="173.007"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="234.1813" x2="234.1813" y1="173.007" y2="185.5094"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="194.7504" x2="234.1813" y1="185.5094" y2="185.5094"/><polygon fill="#8095A1" points="204.3677,181.6625,194.7504,185.5094,204.3677,189.3564,200.5208,185.5094" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="200.0399" x="200.5208" y="167.9839">05 observe READY_A|SYNC_A; A Blocked</text><polygon fill="#8095A1" points="395.752,209.5353,405.3693,213.3822,395.752,217.2291,399.599,213.3822" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="193.7887" x2="401.5224" y1="213.3822" y2="213.3822"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="61.5507" x="200.5208" y="208.3591">set READY_B</text><polygon fill="#8095A1" points="56.2612,237.408,46.6439,241.255,56.2612,245.1019,52.4143,241.255" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 2.0,2.0;" x1="50.4908" x2="406.3311" y1="241.255" y2="241.255"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="156.762" x="62.0316" y="236.2319">06 READY_ALL; clear READY bits</text><polygon fill="#8095A1" points="395.752,265.2808,405.3693,269.1277,395.752,272.9747,399.599,269.1277" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="45.6822" x2="401.5224" y1="269.1277" y2="269.1277"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="98.0965" x="52.4143" y="264.1046">sync(SYNC_C); block</text><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="193.7887" x2="234.1813" y1="297.0005" y2="297.0005"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="234.1813" x2="234.1813" y1="297.0005" y2="309.503"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="194.7504" x2="234.1813" y1="309.503" y2="309.503"/><polygon fill="#8095A1" points="204.3677,305.6561,194.7504,309.503,204.3677,313.3499,200.5208,309.503" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="117.3311" x="200.5208" y="291.9774">07 coordinator Blocked</text><polygon fill="#8095A1" points="395.752,333.5288,405.3693,337.3757,395.752,341.2227,399.599,337.3757" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="193.7887" x2="401.5224" y1="337.3757" y2="337.3757"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="115.4076" x="200.5208" y="332.3527">sync(SYNC_B) = final bit</text><polygon fill="#8095A1" points="56.2612,361.4016,46.6439,365.2485,56.2612,369.0954,52.4143,365.2485" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 2.0,2.0;" x1="50.4908" x2="406.3311" y1="365.2485" y2="365.2485"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="63.4742" x="62.0316" y="360.2254">08 SYNC_ALL</text><polygon fill="#8095A1" points="134.1614,389.2743,124.5441,393.1213,134.1614,396.9682,130.3145,393.1213" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 2.0,2.0;" x1="128.391" x2="406.3311" y1="393.1213" y2="393.1213"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="63.4742" x="139.9318" y="388.0982">09 SYNC_ALL</text><polygon fill="#8095A1" points="204.3677,417.1471,194.7504,420.994,204.3677,424.841,200.5208,420.994" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282; stroke-dasharray: 2.0,2.0;" x1="198.5973" x2="406.3311" y1="420.994" y2="420.994"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="139.4509" x="210.1381" y="415.9709">10 SYNC_ALL; clear sync bits</text><polygon fill="#8095A1" points="524.6239,445.0199,534.2412,448.8668,524.6239,452.7137,528.4708,448.8668" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="193.7887" x2="530.3943" y1="448.8668" y2="448.8668"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="90.4027" x="200.5208" y="443.8437">workers complete</text><polygon fill="#8095A1" points="417.8718,472.8926,408.2545,476.7396,417.8718,480.5865,414.0249,476.7396" style="stroke: #8095A1; stroke-width: 0.9617303578739282;"/><line style="stroke: #8095A1; stroke-width: 0.9617303578739282;" x1="412.1015" x2="535.2029" y1="476.7396" y2="476.7396"/><text fill="#000000" font-family="Monospace" font-size="10.579" lengthAdjust="spacingAndGlyphs" textLength="105.7903" x="423.6422" y="471.7165">11 final bits = 0; PASS</text><!--MD5=[e8bb2d9237abd3c38ae5ad217dfe73d7]
@startuml
scale 520 height
skinparam backgroundColor transparent
skinparam shadowing false
skinparam defaultFontName Monospace
skinparam defaultFontSize 11
skinparam sequenceArrowColor #8095a1
skinparam sequenceLifeLineBorderColor #8095a1
title A5 FLOW — ALL-ready wait and reusable barrier
participant Coordinator as C
participant "Worker A" as A
participant "Worker B" as B
participant EventGroup as G
participant Verifier as V
C -> G : 02 wait READY_ALL; block
A -> G : 03 set READY_A
A -> G : 04 sync(SYNC_A); block
B -> B : 05 observe READY_A|SYNC_A; A Blocked
B -> G : set READY_B
G - -> C : 06 READY_ALL; clear READY bits
C -> G : sync(SYNC_C); block
B -> B : 07 coordinator Blocked
B -> G : sync(SYNC_B) = final bit
G - -> C : 08 SYNC_ALL
G - -> A : 09 SYNC_ALL
G - -> B : 10 SYNC_ALL; clear sync bits
B -> V : workers complete
V -> G : 11 final bits = 0; PASS
@enduml
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 25.0.4-ea+4-1-Debian
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: null
--></g></svg>