procedure PROPAGATE(signal S: inout std_logic_vector (0 to 10)) is\nbegin\nfor I in 1 to 10 loop\nS(I) <= S(I-1);\nend loop;\nend;\n\nsignal S: std_logic_vector(0 to 10);\nbegin\nS(0) <= '1';\nPROPAGATE(S);\n\n\nOnce the S0 is initialized, the PROPAGATE should be fired. I expect that it\nwill drive S1..10 assigining S1 <= S0. The update of the S will call\nPROPAGATE once again and S2 will be driven by known S1 value in the next\nsimlulation loop. And so on, until all bits of the vector are filled. My\nsimulator fails to understand this. Where is the mistake? Seems that\nsinthezier is still able to decrypt my message. Sometimes it throws warnings\nthough depending on the function in S(i) <= FUNC(S(i-1)). I do not see a\nbetter way to propagate signal between the stages.