( ESNUG 351 Item 5 ) ---------------------------------------------- [5/4/00]

Subject: (  ESNUG 348 #8  )   Run Synopsys DesignPower w/ Cadence NC-Verilog

> We are using Synopsys DesignPower and Cadence NC-Verilog, in order to
> perform power estimation of our ASIC's - but we are having problems -
> perhaps some of your readers might be able to help us out.
>
> The problem relates to the backward SAIF file, written by NC-Verilog
> through the $toggle_report PLI supplied by Synopsys (the file contains
> switching activity for all ports).  It seems like some input ports are
> dropped, but not all.  When read into dc_shell, and running report_power,
> these "dropped input" are having default 50% switching activity (no
> annotation), which was the way I initially discovered the problem.
>
> The ports, which are in the rtl2saif output file, are all monitored
> except for one data_valid and in[0].  Why does this happen with
> NC-Verilog 3.0 PLI version 3.3 but this does not happen with either VCS
> or Verilog-XL 3.0 simulators?
>
>     - Hans M. Pedersen
>       Oticon A/S                                 Hellerup, Denmark


From: [ A Synopsys DesignPower CAE ]

John,

Monitoring behavior is simulator dependent.

Although my answer to this question is based on Pedersen's design that he
e-mailed to me, this answer applies to many in his situation.

In his particular case, Pedersen's data_valid (a single bit) in HDL is
connected to port 'in' of Pedersen's "XYZ" instance.  His port 'in' is
defined inside the "XYZ module" as a bus width of 3.  Pedersen's data_valid
is connected to in[0].  Since the other 'in' bits are not used, NC-Verilog
internally represents the port 'in' as a single bit object, which is
interpreted by our PLI as 'in'.  But inside Verilog-XL or VCS, Pedersen's
port 'in' is represented as a 4-bit bus object, which is interpreted by our
PLI as 'in[0], 'in[1]', etc.

Our PLI monitors the in[0] and checks whether the in[0] exists.  Our PLI
checks the rtl2saif (forward SAIF) output file and NC-Verilog for in[0].  A
mismatch occurs since in the rtl2saif output file the port is represented
as in[0] and in NC-Verilog the port is represented as ?in?.  Our PLI then
writes out the backward SAIF file.  Since port is interpreted by PLI as 'in'
under the NC-Verilog environment, our PLI fails to find the name 'in' in
rtl2saif output file and therefore the port name is not written out to the
backward SAIF file.  In Verilog-XL or in VCS, the in[0] port is represented
with a matching name so our PLI is able to monitor and, check in rtl2saif
and write out in the backward SAIF file information about that port.

Pedersen's Workaround:

 1) Remove 'in\[0\]' line in the rtl2saif file; then data_valid is captured.
 2) Change 'in\[0\]' to 'in' inside the rtl2saif output file; then
    data_valid and in are both captured.

Hope this helps.

    - [ A Synopsys DesignPower CAE ]


 Sign up for the DeepChip newsletter.
Email
 Read what EDA tool users really think.


Feedback About Wiretaps ESNUGs SIGN UP! Downloads Trip Reports Advertise

"Relax. This is a discussion. Anything said here is just one engineer's opinion. Email in your dissenting letter and it'll be published, too."
This Web Site Is Modified Every 2-3 Days
Copyright 1991-2024 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |

   !!!     "It's not a BUG,
  /o o\  /  it's a FEATURE!"
 (  >  )
  \ - / 
  _] [_     (jcooley 1991)