Home> >

027_DC_sweep_plus_Encryption : Diode DC analysis + Encryption

027_DC_sweep_plus_Encryption : Diode DC analysis + Encryption

027_DC_sweep_plus_Encryption : Diode DC analysis + Encryption

Requires: SmartSpice & Smartview

Minimum Versions: SMARTSPICE 3.38.1.R

  • DC Diode Analysis + Encrypted VA module.
    This diode example shows how to run a DC sweep on this device using a Simple Verilog-A model and then with an encrypted model to get the same results. This shows the power of encryption to protect IP when multiple groups collaborate on a large circuit. The final circuit uses the encrypted model to show circuit performnce but will not show internal details of the model. Encyption through “sencrypt” program can be used to encrypt for various levels from individual lines, through various heiracheal levels like subcircuits to the full input deck contents depending on user requirements. Fabs can use this to protect more sensitive information but still allow customers to run circuit simulations.
    The
    schematic
    shows a simple tst circuit we will use to run the simulations.
    Having run the analysis you will get these set of response curves
    plots
    for the different analysis of .DC .AC and .Disto run.

Simple VA module simulation:
diode.in, diode.va

This shows for the limited parameter set and voltage range you can get the same response
from the Verilog-A module as with the inbuilt simple diode model.

Encrypted VA module simulation;
diode_encrypt.in, diode.en

The encryption was done on windows with command:

  • …….\exe\sencrypt -at -skey=silvaco diode.va diode.en

NOTE:
To protect encrypted file no internal nodes are accessable to maintain confidentiality.
So you can see comparing waveforms you get the same results but in the encryted case information is hidden from the user.

Graphics

schematic.png
common_plot.png

Input Files

distro_test.in

* Schematic name: distro_test
***********************************cs
RP3 VDD NET1 1k
V1 VDD GND DC dclev AC 1 DISTOF1 1 0 DISTOF2 1.5 0
D1 VDD NET1 DFOR
D2 NET2 NET3 DFOR
D3 NET4 NET5 DFOR
R1 NET1 NET2 10
R2 NET2 NET3 2k
R3 NET3 NET4 10
R4 NET4 NET5 3k
R5 NET5 GND 10k

.GLOBAL GND

.SAVE V(NET2) V(NET4) V(NET5) V(VDD)

.param dclev=0.0

.MODEL Dfor D (                 IS     = 6.241691E-4        
+ RS    = 2.755033E-7     N     = 1.4816888       BV   = 11                 
+ IBV   = 1E-3            IK    = 3.5781E5        IKR  = 1.7E-3             
+ JSW   = 1.233925E-9     AREA  = 7.5E-8          PJ   = 1.1E-3             
+ CJ    = 1.01432E-3      PB    = 0.626873        MJ   = 0.373377          
+ FC    = 0.5             CJSW  = 1.67236E-10     PHP  = 0.626873           
+ MJSW  = 0.0748074       CTA   = 1.02351E-3      CTP  = 1.22727E-3        
+ TLEV  = 1               EG    = 1.17            XTI  = 3                  
+ TRS   = 3.222E-3        TLEVC = 1               TPB  = 1.39435E-3        
+ TCV   = -7E-4           TPHP  = 1.39435E-3      TREF = 25                 
+ LEVEL = 3               ) 

.DC V1 0 5 0.1
.AC dec 10 100 100Meg
.DISTO dec 20 100 100MHz

.save all(v)

.end

diode.in

*************************************************
* Verilog-A Diode module
* test to verify that op and dc analysis give
* the same result with the same input voltage
*************************************************

* Verilog-A device
*******************
.verilog "diode.va"

v1        11  0   dc 0.39
r1        11  1   1.0
YVLGdio   1   0   vlg_diode area=1

* smartspice internal device
*****************************
r1s      11  1s  1.0
Diode2   1s  0   my_diode

.op
.dc v1 0.3 0.4 0.001

*.print @YVLGdio[I(anode,cathode)] @YVLGdio[Vd]
*.print @Diode2[i]

.MODEL vlg_diode VLG MODULE=diode IS=1.E-7 N=.85 RS=0.01 
*
.model my_diode D ( is=1.E-7  n=0.85 rs=0.01 )

*.option abstol=1e-12 reltol=1e-10

.end

diode.va

//******************************
//  Simple Diode Module        *
//*****************************cs

`include "discipline.h"
`include "constants.h"

module diode(anode,cathode);
 inout anode,cathode;
 electrical anode,cathode;

 parameter real area = 1 from (0:inf);
 parameter real is=1e-14 from (0:inf);
 parameter real n=1 from (0:inf);
 parameter real cjo=0 from [0:inf);
 parameter real m=0.5 from [0:inf);
 parameter real phi=0.7 exclude 0;
 parameter real fc=0.5 from (0:1];
 parameter real tt=1p from [0:inf);
 parameter real bv=1.0e+100 from [0:inf);
 parameter real rs=0 from [0:inf);

 real Vd, Id, Qd;
 real f1, f2, f3, fcp;
 real ibv;

 analog
   begin
     @(initial_step)
     begin
       f1 = (phi/(1 - m))*(1 - pow((1 - fc), m));
       f2 = pow((1 - fc), (1 + m));
       f3 = 1 - fc*(1 + m);
       fcp = fc*phi;
       ibv = is*bv/$vt;
     end

     Vd = V(anode,cathode);
     Id = I(anode,cathode);

// intrinsic diode.
     if (Vd < -5*n*$vt)
     begin
       if (Vd == -bv)
         I(anode,cathode) <+ -area*ibv;
       else
         if (Vd > -bv)
           I(anode,cathode) <+ -area*is;
         else
//           I(anode,cathode) <+ -area*is*(exp(-(bv + Vd)/$vt) - 1 + bv/$vt);
           I(anode,cathode) <+ -area*is*(exp(-(bv + Vd)/$vt) - 1 + bv/$vt);
     end
     else
       I(anode,cathode) <+ area*is*(exp((Vd - rs*Id)/(n*$vt)) - 1);

// capacitance (junction and diffusion).
     if (Vd <= fcp)
       Qd = tt*Id + area*cjo*phi*(1 - pow((1 - Vd/phi), (1 - m)))/(1 - m);
     else
       Qd = tt*Id + area*cjo*(f1 + (1/f2)*(f3*(Vd - fcp) +
                           (0.5*m/phi)*(Vd*Vd - fcp*fcp)));
     I(anode,cathode) <+ ddt(Qd);
   end
endmodule

diode_encrypt.in

*************************************************
* Verilog-A Diode module
* test to verify that op and dc analysis give
* the same result with the same input voltage
*************************************************

* Verilog-A device
*******************
.verilog "diode.en"

v1        11  0   dc 0.39
r1        11  1   1.0
YVLGdio   1   0   vlg_diode area=1

* smartspice internal device
*****************************
r1s      11  1s  1.0
Diode2   1s  0   my_diode

.op
.dc v1 0.3 0.4 0.001

*.print @YVLGdio[I(anode,cathode)] @YVLGdio[Vd]
*.print @Diode2[i]

.MODEL vlg_diode VLG MODULE=diode IS=1.E-7 N=.85 RS=0.01 
*
.model my_diode D ( is=1.E-7  n=0.85 rs=0.01 )

*.option abstol=1e-12 reltol=1e-10

.end

027_DC_sweep_plus_Encryption

[an error occurred while processing this directive]

027_DC_sweep_plus_Encryption

[an error occurred while processing this directive]

Related Articles