Home About Demos ESNUGs
SIGN UP! Feedback Photos Trip Reports
ESNUG
( 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 ]






Top Home  

"This here ain't no one's opinion 'cept my own."
This Web Site Is Modified Every 2 to 3 Days
Copyright 1999-2009 John Cooley.  All Rights Reserved.
| Contact John Cooley | Webmaster | Legal | Feedback Form |