The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> long mixed mode simulation time in Spectre
https://designers-guide.org/forum/YaBB.pl?num=1187062038

Message started by spanandiyer1979 on Aug 13th, 2007, 8:27pm

Title: long mixed mode simulation time in Spectre
Post by spanandiyer1979 on Aug 13th, 2007, 8:27pm

Hi

I am facing a problem of extremely long simulation times while running a Spectre simulation , consisting of a few differential nand gates ( meaning a few transistors) along with a block in VerilogA(just a delay element). If the blocks involving transistors are simulated separately or the verilogA block is simulated separately the simulation time is acceptable. However it seems to increase exhorbitantly when both of them are integrated together. The verilogA block just consists of a statement with keyword "analog" "begin" and "end". Also the waveforms involved have transition times of the order of 100ps...can anybody help ?

anand

Title: Re: long mixed mode simulation time in Spectre
Post by byang on Aug 13th, 2007, 10:26pm

Hi, Anand,

If you can post your netlist, which seems simple, we'll try to simulate it and let you know the property of the simulation.

byang
www.gemini-da.com

Title: Re: long mixed mode simulation time in Spectre
Post by Visjnoe on Aug 14th, 2007, 4:24am

Dear,

1. Are you experiencing convergence problems, maybe on the interface between transistor-level blocks and verilog-A modules? This might slow you down.

2. You have not introduced a $bound_step() statement in your verilog-A code, have you?


Regards

Peter

Title: Re: long mixed mode simulation time in Spectre
Post by spanandiyer1979 on Aug 14th, 2007, 2:35pm

Hi

I think I might be facing convergence problem as you mentioned. However I am not sure how to solve it.
I have not used the bound_step() function. I am pasting the verilogA code below. the delays are all 50ps.

// VerilogA for pll_thesis, real_trans, veriloga

`include "constants.vams"
`include "disciplines.vams"
`include "../../pll_constants.h"


module real_trans(in , out);

input in ;
electrical in ;
output out ;
electrical out ;

     parameter real tdelay = `VARIABLE_DELAY from [0:inf);
     parameter real trise = `INV_RISE_TIME from (0:inf);
     parameter real tfall =  `INV_FALL_TIME from (0:inf);

     real vout_val;
     analog begin
         
     vout_val =  V(in) ;

     V(out) <+ transition( vout_val, tdelay, trise, tfall);

     end


endmodule

anand

Title: Re: long mixed mode simulation time in Spectre
Post by Visjnoe on Aug 14th, 2007, 3:02pm

Dear,

if you have convergence issues/problems, you would be able to find out by checking the simulator's log file.
Please verify this before we continue.

regards

Peter

Title: Re: long mixed mode simulation time in Spectre
Post by spanandiyer1979 on Aug 14th, 2007, 3:16pm

Hi

I dont see any problem in the log file except that it shows the step is too small...i am pasting part of the log for your perusal...it would be very helpful if you help...

thanks
anand

....


Circuit inventory:
             nodes 83
         equations 417
    ahdl simulator 1    
             bsim4 162  
           isource 1    
          quantity 9    
        real_trans 1    
           vsource 9    

Entering remote command mode using MPSC service (spectre, ipi, v0.0,
       spectre8_22533_37, ).

************************************************
Transient Analysis `tran': time = (0 s -> 50 ns)
************************************************
Important parameter values:
   start = 0 s
   outputstart = 0 s
   stop = 50 ns
   step = 100 ps
   maxstep = 200 ps
   ic = all
   skipdc = no
   reltol = 1e-03
   abstol(I) = 1 pA
   abstol(V) = 1 uV
   temp = 27 C
   tnom = 25 C
   tempeffects = all
   errpreset = moderate
   method = traponly
   lteratio = 3.5
   relref = sigglobal
   cmin = 0 F
   gmin = 1 pS
   maxrsd = 0 Ohm
   mos_method = s
   mos_vres = 50 mV

   tran: time = 1.25 ns      (2.5 %), step = 1.688 ps    (3.38 m%)
   tran: time = 1.601 ns     (3.2 %), step = 23.55 fs    (47.1 u%)
   tran: time = 1.813 ns    (3.63 %), step = 330 fs       (660 u%)
   tran: time = 2.052 ns     (4.1 %), step = 8.183 fs    (16.4 u%)
   tran: time = 2.064 ns    (4.13 %), step = 2.563 fs    (5.13 u%)
   tran: time = 2.079 ns    (4.16 %), step = 4.587 fs    (9.17 u%)
   tran: time = 2.096 ns    (4.19 %), step = 1.427 fs    (2.85 u%)
   tran: time = 2.102 ns     (4.2 %), step = 1.164 fs    (2.33 u%)
   tran: time = 2.11 ns     (4.22 %), step = 5.186 fs    (10.4 u%)
   tran: time = 2.119 ns    (4.24 %), step = 29.82 fs    (59.6 u%)
   tran: time = 2.143 ns    (4.29 %), step = 14.98 fs      (30 u%)
   tran: time = 2.195 ns    (4.39 %), step = 12.51 fs      (25 u%)
   tran: time = 2.322 ns    (4.64 %), step = 23.56 fs    (47.1 u%)
   tran: time = 2.442 ns    (4.88 %), step = 35.76 fs    (71.5 u%)
   tran: time = 2.503 ns    (5.01 %), step = 92.79 fs     (186 u%)
   tran: time = 2.53 ns     (5.06 %), step = 2.152 fs     (4.3 u%)
   tran: time = 2.541 ns    (5.08 %), step = 8.327 fs    (16.7 u%)
   tran: time = 2.551 ns     (5.1 %), step = 1.427 fs    (2.85 u%)
   tran: time = 2.553 ns    (5.11 %), step = 297.5 as     (595 n%)
   tran: time = 2.557 ns    (5.11 %), step = 771.8 as    (1.54 u%)
   tran: time = 2.559 ns    (5.12 %), step = 647 as      (1.29 u%)
   tran: time = 2.561 ns    (5.12 %), step = 359.8 as     (720 n%)
   tran: time = 2.563 ns    (5.13 %), step = 345.9 as     (692 n%)
   tran: time = 2.564 ns    (5.13 %), step = 181.8 as     (364 n%)
   tran: time = 2.566 ns    (5.13 %), step = 3.053 fs    (6.11 u%)
   tran: time = 2.569 ns    (5.14 %), step = 957 as      (1.91 u%)
   tran: time = 2.572 ns    (5.14 %), step = 2.023 fs    (4.05 u%)
   tran: time = 2.575 ns    (5.15 %), step = 785 as      (1.57 u%)
   tran: time = 2.578 ns    (5.16 %), step = 9.419 fs    (18.8 u%)

..............

Title: Re: long mixed mode simulation time in Spectre
Post by byang on Aug 14th, 2007, 9:42pm

There might be convergence problem. The time steps are getting too small sometimes:
tran: time = 2.563 ns    (5.13 %), step = 345.9 as     (692 n%)
tran: time = 2.564 ns    (5.13 %), step = 181.8 as     (364 n%)

You can try option method=gear2. This might be caused by trap ringing.

byang
www.gemini-da.com

Title: Re: long mixed mode simulation time in Spectre
Post by spanandiyer1979 on Aug 14th, 2007, 10:46pm

Hi

Thanks for the reply. I added the following statement after the "analog begin" statement : @(timer(0,50p)).

The code looks like this:


// VerilogA for pll_thesis, real_trans, veriloga

`include "constants.vams"
`include "disciplines.vams"
`include "../../pll_constants.h"


module real_trans(in , out);

input in ;
electrical in ;
output out ;
electrical out ;

    parameter real tdelay = `VARIABLE_DELAY from [0:inf);
    parameter real trise = `INV_RISE_TIME from (0:inf);
    parameter real tfall =  `INV_FALL_TIME from (0:inf);

    real vout_val;
    analog begin
        @(timer(0,50p))
    vout_val =  V(in) ;

    V(out) <+ transition( vout_val, tdelay, trise, tfall);

    end


endmodule

This seems to make the simulations run at normal rates.

The input to the module comes from circuit having some transistors and the output goes to a circuit with a bunch of transistors.....but am not sure whether adding the "timer" line will lead to proper  results...

anand

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.