title: Understanding function return values
body: <p>I am trying to understand SystemVerilog <code>function</code> return values from the Language resource manual(Section 10.3.1), but I am having difficulties in grasping the following section.  Can anyone help me interpret it?  I tried looking in different sites but the information wasn't that deep.</p>
  <blockquote>
  <p>In SystemVerilog, a function return can be a structure or union. In this case, a hierarchical name used inside the function and beginning with the function name is interpreted as a member of the return value. If the function name is used outside the function, the name indicates the scope of the whole function. If the function name is used within a hierarchical name, it also indicates the scope of the whole function.<pre><code>a = b + myfunc1(c, d); //call myfunc1 (defined above) as an expression
  myprint(a); //call myprint (defined below) as a statement
  function void myprint (int a);
  ...
  endfunction</code></pre></p>
  </blockquote>