Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

PrimeTime provides different Power analysis results for FSDB vs. VCD files

Status
Not open for further replies.

noureddine-as

Junior Member level 2
Junior Member level 2
Joined
Apr 16, 2017
Messages
21
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
255
Hello,

I'm trying to evaluate the power consumption of an FPU. I synthesized the IP for 350nm technology node using Synopsys Design Compiler. Then performed a post-synthesis simulation on ModelSim (with SDF file, generated from Design Compiler, taken into consideration) and I generate a waveform using the dumpfile directives in Verilog/SystemVerilog. After that, I use PrimeTime to evaluate the power by applying the generated waveform to the synthesized circuit.

Now my problem is, in PrimeTime, I get different results (in both averaged and timebased simulation) depending on the waveform format used, i.e. if the waveform is a VCD file (read_vcd command), the result will be different than if the waveform is in FSDB (read_fsdb command). Do you have any ideas why?

Here is an example of the Power report I get when using the FSDB format:
Code:
                        Internal  Switching  Leakage    Total
Power Group             Power     Power      Power      Power   (     %)  Attrs
--------------------------------------------------------------------------------
clock_network           6.440e-03    0.0000    0.0000 6.440e-03 (99.67%)  i
register                2.150e-05    0.0000 3.328e-09 2.150e-05 ( 0.33%)  
combinational           4.971e-08    0.0000 1.446e-08 6.417e-08 ( 0.00%)  
sequential                 0.0000    0.0000    0.0000    0.0000 ( 0.00%)  
memory                     0.0000    0.0000    0.0000    0.0000 ( 0.00%)  
io_pad                     0.0000    0.0000    0.0000    0.0000 ( 0.00%)  
black_box                  0.0000    0.0000    0.0000    0.0000 ( 0.00%)  

  Net Switching Power  =    0.0000   ( 0.00%)
  Cell Internal Power  = 6.461e-03  (100.00%)
  Cell Leakage Power   = 1.779e-08   ( 0.00%)
                         ---------
Total Power            = 6.461e-03  (100.00%)


And here is the one I get when using the VCD format:
Code:
                        Internal  Switching  Leakage    Total
Power Group             Power     Power      Power      Power   (     %)  Attrs
--------------------------------------------------------------------------------
clock_network           8.012e-03    0.0000    0.0000 8.012e-03 (24.63%)  i
register                1.373e-03 3.769e-04 3.328e-09 1.749e-03 ( 5.38%)  
combinational           7.901e-03    0.0149 1.446e-08    0.0228 (69.99%)  
sequential                 0.0000    0.0000    0.0000    0.0000 ( 0.00%)  
memory                     0.0000    0.0000    0.0000    0.0000 ( 0.00%)  
io_pad                     0.0000    0.0000    0.0000    0.0000 ( 0.00%)  
black_box                  0.0000    0.0000    0.0000    0.0000 ( 0.00%)  

  Net Switching Power  =    0.0152   (46.85%)
  Cell Internal Power  =    0.0173   (53.15%)
  Cell Leakage Power   = 1.779e-08   ( 0.00%)
                         ---------
Total Power            =    0.0325  (100.00%)

And both have the same units
Dynamic Power Units = 1 W
Leakage Power Units = 1 W

Now here are a some things that I've already done,
- I converted the FSDB to VCD to see if they are different, the contents seem to be similar. The only difference is the way signals are expressed e.g. in the original VCD file it's like result[0] result[1] ... are independant signals, but int the VCD generated from the FSDB the vectors are like result[63:0].
- When I was doing the post-synthesis simulation, I had several VITAL glitches, the results are functionally correct, but the simulation was slow, so I deactivated those using the "-noglitch option of ModelSim".
- Also here are the directives I use for VCD generation
Code:
   initial
   begin
      $dumpfile("tb_post-synth.vcd");
      $dumpvars(0, "tb_module/dut");
   end
And this one is for FSDB:
Code:
   initial
   begin
      $fsdbDumpfile(tb_post-synth.fsdb);
      $fsdbDumpvars(0, "tb_module/dut");
  end

- - - Updated - - -

To add an other detail, suppose I have the FSDB file generated from ModelSim:
- If i read the FSDB file into PrimeTime using the command <read_fsdb> I get those bizarre results.
- However, when I use <read_vcd> to read the FSDB file, it automatically detects that it's an FSDB file, and then I get the same results as if I had a VCD file from the beginning.

So the question becomes, why does read_vcd read also FSDB files, if the command read_fsdb does that à priori? And why would they give different results anyway?
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top