RE: [sv-bc] Is member of recursive task/function hierarchically referred?

From: Surya Pratik Saha <spsaha_at_.....>
Date: Mon Jan 30 2006 - 03:53:49 PST
Hi Shalom,
Thanks for the reply. But I have a doubt. Since the recursiveness restriction is
removed from LRM, I am not clear why then the test case is illegal.

On Mon, 30 Jan 2006, Bresticker, Shalom wrote:

> Hi,
>
> The text you quote is erroneous and was fixed in 1364-2005, which you
> should use as reference instead of 1364-2001.
>
> There is no difference in this respect between recursive and
> non-recursive automatic functions.
> See http://boyd.com/1364_btf/report/full_pr/325.html.
>
> In your example, the function inc is recursive but not automatic, so it
> should be illegal.
>
> Shalom
>
>
> > -----Original Message-----
> > From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On
> > Behalf Of Surya Pratik Saha
> > Sent: Monday, January 30, 2006 12:44 PM
> > To: sv-bc@eda.org
> > Subject: [sv-bc] Is member of recursive task/function
> > hierarchically referred?
> >
> > In 1364-2001 LRM, section 12.4, it is mentioned:
> >
> > [...]
> > At the top of the name hierarchy are the names of one or more
> > root modules of
> > which no instances have been
> > created.This root or these parallel root modules make up one or
> > more hierarchies
> > in a design description or
> > description .Inside any module,each module instance (including
> > an arrayed or
> > generated instance),task def-
> > inition,function definition,and named begin-end or fork-join
> > block shall define
> > a new branch of the
> > hierarchy.Named blocks within named blocks and within tasks and
> > functions shall
> > create new branches.
> > Only non-recursively referenced automatic tasks and/or
> > functions create visible
> > branches that can be refer-
> > enced.Recursively called tasks and functions,declared using the
> > automatic
> > keyword and recursively called
> > from within the same task or function,do not create visible
> > branches that can be
> > referenced.See 10.2.1 and
> > 10.3.1 for a discussion of automatic tasks and functions.
> > [...]
> >
> > What I can understand, the member of a directly recursive
> > task/function is not
> > allowed to be hierarchically referenced. If it is mutually
> > recursive, then the
> > member can be hierarchically referred unless the task/function
> > is automatic.
> >
> > It is already mentioned, any member of automatic task/function
> > can not be
> > hierarchically referred.
> >
> > So is the member of a directly recursive task/function allowed
> > to be
> > hierarchically referred, if the task/function is not automatic.
> > If yes, then why
> > recursiveness is discussed here.
> >
> > For e.g., is the following test case legal?
> > module tb;
> >    dut dut();
> >    initial $dumpvars();
> >    endmodule
> >
> >    module dut(input clk, input d, output reg [7:0] q);
> >
> >       //{remote href,local href, not} X {user dotted, implicit
> > dotted}
> >
> >       reg [7:0] \t1.local ; // capture?
> >       reg [7:0] \literal.local ;
> >
> >       function inc (input [7:0] a);
> >          reg [7:0] incprev;
> >          begin
> >             if (a==0)  begin
> >               if (d) incprev=0;
> >                // else reuse global incprev
> >             end
> >             else incprev=inc(a-1)+1;
> >             inc = incprev;
> >          end
> >       endfunction
> >
> >       task t1 (output [7:0] out, input [7:0] in);
> >          reg [7:0] local;
> >          begin
> >             if (in[0]) local=in>>1;
> >             out=local+1;
> >          end
> >       endtask
> >
> >       always @(posedge clk) begin
> >          t1(\t1.local , inc(4));
> >          q = \t1.local + \literal.local + t1.local +
> > inc.incprev;
> >       end
> >
> >    endmodule
> >
> > Regards
> > Surya.
>

Regards
Surya.
Received on Mon Jan 30 03:47:45 2006

This archive was generated by hypermail 2.1.8 : Mon Jan 30 2006 - 03:49:17 PST