RE: [sv-bc] SVDB 1619 Examples

From: Clifford E. Cummings <cliffc_at_.....>
Date: Mon Oct 15 2007 - 05:29:05 PDT
Hi, Shalom -

More on the pipe2.v example below.

If Synopsys says that they intend to support synthesis of this 
construct, and not just ignore the default assignment, then I can approve.

In pipe2.v, your analysis below is correct for Verilog-2001 (you 
could replace the initialization with an initial block assignment), 
but in SystemVerilog, the initialization basically happens before 
time-0 and cannot cause a time-0 event, just like VHDL. I don't think 
all vendors have made this change between V2K and SV syntax (some 
have and I consider it to be a good change).

pipe2.v is the closest I could get to the new syntax and I wanted to 
see what Synopsys would do for this example. If I am not mistaken, 
Synopsys gives errors for initial blocks in RTL (other tools ignore 
the initial blocks - generally bad) so I wanted to see if Synopsys 
still gave errors for initializations. Synopsys does not error, but 
warns that the initializations will be ignored. Now the question is, 
if we pass 1619 will Synopsys infer the default assignment logic or 
ignore it. If the answer is they will continue to ignore default 
initializations, then I would remain opposed to 1619, otherwise I 
would support it. My opposition is to adding a new way to generate a 
mismatch between pre-synthesis and post-synthesis simulations; 
otherwise, I like the feature.

I would like to see Synopsys on record to support the feature in DC 
before passing it.

Regards - Cliff

At 08:55 PM 10/14/2007, Bresticker, Shalom wrote:
>Cliff,
>
>Again, the cases are not similar. No one argues with you about today. Of
>course, DC does not implement 1800-2008 today. Five years ago, it did
>not implement SV either. And in 2001, it did not implement 1364-2001
>either.
>
>In pipe2.v, you have
>
>   logic        pu1 = 1'b1;
>
>That is like
>
>   logic        pu1;
>   initial
>         pu1 = 1'b1;
>
>and initial procedures are not synthesized.
>
>In pipe3.v, "a 1619 equivalent", you have
>
>   input        d, clk, rst_n, rst2_n='1);
>
>But it is not equivalent. rst2_n in this case has a default port
>connection value. I think maybe now I am beginning to understand your
>difficulty.
>
>1619 does not propose something like a port pullup. What is a pullup? In
>a pullup, you have a fixed internal driver to '1. When the port is
>driven from outside, it overrides the pullup as long as the drive is
>strong enough. If the driver from outside stops driving, the pullup is
>felt.
>
>1619 is different. It is just a shorthand for writing port connections.
>It means that in a port connection, if you wrote
>
>pipe3 pipe3 ( ..., .rst2_n(cucu), ...) ;
>
>then rst2_n is connected to cucu, and the '1 does not exist. If cucu is
>not driving, i.e., it is 'z, then that is what rst2_n gets. However, if
>you omitted rst2_n from the list of connections, then it would be as if
>you had written
>
>pipe3 pipe3 ( ..., .rst2_n('1), ...) ;
>
>This latter is certainly synthesizable.
>
>Regards,
>Shalom
>
> > -----Original Message-----
> > From: owner-sv-bc@server.eda.org
> > [mailto:owner-sv-bc@server.eda.org] On Behalf Of Clifford E. Cummings
> > Sent: Monday, October 15, 2007 1:23 AM
> > To: sv-bc@server.eda.org
> > Subject: [sv-bc] SVDB 1619 Examples
> >
> > Hi, All -
> >
> > Attached is a tar-file with three 2-flop pipeline models.
> >
> > pipe1.v has reset going to the second flop but not the first.
> > Synthesizes fine.
> > pipe2.v has different resets going to the different flops.
> > The first flop reset is internally tied through a continuous
> > assignment to a variable initialized in the declaration (the
> > closest I can get to
> > 1619 with current coding styles) while the second reset comes
> > in through a port. Try synthesizing that model and tell me
> > what you get (I used DC and warnings about ignored
> > initializations and both flops disappear).
> > pipe3.v is the 1619 proposed equivalent to pipe2.v
> >
> > This is why I am concerned.
> >
> > Regards - Cliff

----------------------------------------------------
Cliff Cummings - Sunburst Design, Inc.
14314 SW Allen Blvd., PMB 501, Beaverton, OR 97005
Phone: 503-641-8446 / FAX: 503-641-8486
cliffc@sunburst-design.com / www.sunburst-design.com
Expert Verilog, SystemVerilog, Synthesis and Verification Training


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Oct 15 05:30:19 2007

This archive was generated by hypermail 2.1.8 : Mon Oct 15 2007 - 05:30:38 PDT