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.

How to use Hspice to check out the over-drived MOSFET?

Status
Not open for further replies.

b12345

Newbie level 6
Newbie level 6
Joined
Sep 30, 2011
Messages
11
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Visit site
Activity points
1,381
Dear all,

I want to use HSPICE to figer out whether the MOSFETs in a schematic have been over-drived.
For example, if the VGS, VDS or VGD of a 1.2V mos run up to 1.32V/-1.32V, it is desired that hspice could generate a report about it.
Anyone knows which command can be used to achieve this? And an example will be appreciated.

Thanks for your help
Best wishes.
:)
 

You could try the .MEASURE command.

First define the VGS, VDS and VGD parameters for each MOSFET, e.g.

Code:
.param VGS_m1 = m1_vg - m1_vs	# etc.

then a .MEAS statement for each of these parameters:

Code:
.MEAS TRAN VGS_m1_time FIND VGS_m1 WHEN VGS_m1=3.2
.MEAS TRAN VGS_m1_time FIND VGS_m1 WHEN VGS_m1=-3.2

This should report the times VGS_m1_time when VGS_m1 crosses this voltage level.

Also check the hspice command reference manual.
 

Hi erikl,
I am very very very thank you for your reply, also, I have tried the command advised.
The code shows as below:


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*----------------------------------------------------------
.param VGS_m4 = 'abs(v1(mpm4) - v2(mpm4))'
.param VGD_m4 = 'abs(v1(mpm4) - v3(mpm4))'
.param VGB_m4 = 'abs(v1(mpm4) - v4(mpm4))'
.param VSD_m4 = 'abs(v2(mpm4) - v3(mpm4))'
.param VSB_m4 = 'abs(v2(mpm4) - v4(mpm4))'  
.param VDB_m4 = 'abs(v3(mpm4) - v4(mpm4))'
.MEAS TRAN VGS_m4_time FIND VGS_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VGD_m4_time FIND VGD_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VGB_m4_time FIND VGB_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VSD_m4_time FIND VSD_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VSB_m4_time FIND VSB_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VDB_m4_time FIND VDB_m4 WHEN VGS_m4 = 1.92
 
.param VGS_m3 = 'abs(v1(mpm3) - v2(mpm3))'
.param VGD_m3 = 'abs(v1(mpm3) - v3(mpm3))'
.param VGB_m3 = 'abs(v1(mpm3) - v4(mpm3))'
.param VSD_m3 = 'abs(v2(mpm3) - v3(mpm3))'
.param VSB_m3 = 'abs(v2(mpm3) - v4(mpm3))'  
.param VDB_m3 = 'abs(v3(mpm3) - v4(mpm3))'
.MEAS TRAN VGS_m3_time FIND VGS_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VGD_m3_time FIND VGD_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VGB_m3_time FIND VGB_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VSD_m3_time FIND VSD_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VSB_m3_time FIND VSB_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VDB_m3_time FIND VDB_m3 WHEN VGS_m3 = 1.92
----------------------------------------------------------*/



for m3 v1=v3=0 v2=v4=1.8
for m4 v1=v3=0 v2=v4=2.5

and the report is as follows:


Code dot - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
/*---------------------------------------------------------
$DATA1 SOURCE='HSPICE' VERSION='H-2013.03-SP2 64-BIT'
.TITLE '** generated for: hspiced'
 vgs_m4_time      vgd_m4_time      vgb_m4_time      vsd_m4_time       
 vsb_m4_time      vdb_m4_time      vgs_m3_time      vgd_m3_time       
 vgb_m3_time      vsd_m3_time      vsb_m3_time      vdb_m3_time       
 temper           alter#            
    failed           failed           failed           failed         
    failed           failed           failed           failed         
    failed           failed           failed           failed         
  2.500e+01       1        
---------------------------------------------------------*/



1. Obviously, something is wrong, because only vgs_m4_time, vds_m4_time, vgb_m4_time and vdb_m4_time should be reported.

2. And I don't think it is useful in practice, for the mumerous MOSFET in a schematic.

3. Moreover, a time threshold is needed in the check.
For example,
In time 1n~50n of trans, if vgs_m4_time>1.92V continues 2ns, a warning should be issued.
And if vgs_m4_time>1.92 only continues 1ns for 3 times, it should not be reported.
 
Last edited by a moderator:

Re: How to use Hspice to check out the over-driven MOSFET?


Code - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.MEAS TRAN VGS_m4_time FIND VGS_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VGD_m4_time FIND VGD_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VGB_m4_time FIND VGB_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VSD_m4_time FIND VSD_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VSB_m4_time FIND VSB_m4 WHEN VGS_m4 = 1.92
.MEAS TRAN VDB_m4_time FIND VDB_m4 WHEN VGS_m4 = 1.92
...
.MEAS TRAN VGS_m3_time FIND VGS_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VGD_m3_time FIND VGD_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VGB_m3_time FIND VGB_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VSD_m3_time FIND VSD_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VSB_m3_time FIND VSB_m3 WHEN VGS_m3 = 1.92
.MEAS TRAN VDB_m3_time FIND VDB_m3 WHEN VGS_m3 = 1.92
----------------------------------------------------------*/



for m3 v1=v3=0 v2=v4=1.8
for m4 v1=v3=0 v2=v4=2.5

and the report is as follows:


Code - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
/*---------------------------------------------------------
$DATA1 SOURCE='HSPICE' VERSION='H-2013.03-SP2 64-BIT'
.TITLE '** generated for: hspiced'
 vgs_m4_time      vgd_m4_time      vgb_m4_time      vsd_m4_time       
 vsb_m4_time      vdb_m4_time      vgs_m3_time      vgd_m3_time       
 vgb_m3_time      vsd_m3_time      vsb_m3_time      vdb_m3_time       
 temper           alter#            
    failed           failed           failed           failed         
    failed           failed           failed           failed         
    failed           failed           failed           failed         
  2.500e+01       1        
---------------------------------------------------------*/



1. Obviously, something is wrong, because only vgs_m4_time, vds_m4_time, vgb_m4_time and vdb_m4_time should be reported.
No, you specified 6 m3_time measurements, too, so 12 in total.

But there's still something wrong, I guess - if one of these difference voltages actually exceeded your voltage limit. BTW: Also use a parameter for this limiting voltage - it's easier to change then.

Currently I've no access to an HSPICE license, so can't help you further. Just try a little bit with this .MEASURE command syntax.

2. And I don't think it is useful in practice, for the mumerous MOSFET in a schematic.
Absolutely right!

3. Moreover, a time threshold is needed in the check.
For example,
In time 1n~50n of trans, if vgs_m4_time>1.92V continues 2ns, a warning should be issued.
And if vgs_m4_time>1.92 only continues 1ns for 3 times, it should not be reported.

I wouldn't know how to do this in HSPICE. For SPECTRE we used a C++ command file for this purpose, which then got translated into VerilogA syntax.
 

I'll go ahead to try this command, thank you for your help very much :)
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top