You are currently viewing Instructional Approach to Writing Parasitic Capacitance Rules Files Using Exact

Instructional Approach to Writing Parasitic Capacitance Rules Files Using Exact

Instructional Approach to Writing Parasitic Capacitance Rules Files Using Exact

1. Introduction

The Exact analysis stage extracts the user-required information necessary for the respective parasitic capacitances by probing the Exact database. This is performed via script files written in LISA (Language for Interfacing Silvaco Applications). This article demonstrates a systematic approach for writing analysis script files.

2. Full Working LISA script file

Firstly a full workable analysis script file is detailed; explanatory discussion then follows.

!***********BEGIN LISA SCRIPT***********
!Performs numerical fit to determine near body effect on fringe down
capacitance data. Text
!following an exclamation mark is a comment.
Layouts referred to in the script are Parallel
!Plate.pml (termed PP…) and OneArray.pml (termed OA…).

!Load in the internal database
db = DatabaseLoad(“.”);

!Create capacitance variables and assign capacitance values to them
extract_name(“PP_Ctotal”, “B_gnd”, “Plate”);
extract_name(“OA_Ctotal”, “B_gnd”, “L1p”);

!Decide which combinations are to be examined and included in the tables.
PP_combinations = {1};
OA_combinations = {1};

!create table for parallel plate information
table_PP= select(db, “ParallelPlate”, PP_combinations,
{“ParallelPlatePlateWidth”},
{“PP_Ctotal”});

!change units of capacitance to fF
column_scalar_op(table_PP, “PP_Ctotal”,
table_PP, “PP_Ctotal”, “*”, 1e15);

!save the table for reference purposes
save_table(table_PP, CSV, “PP_a.csv”);

!create table for fringe down capacitance information.
table_OA= select(db, “OneArray”, OA_combinations,
{“OneArrayPlateWidth”,
“OneArrayLayer1Space”, “OneArrayLayer1Width”},
{“OA_Ctotal”});

!change capacitance units to fF
column_scalar_op(table_OA, “OA_Ctotal”, table_OA,
“OA_Ctotal”, “*”, 1e15);

!save output table for reference purposes
save_table(table_OA, CSV, “OA_a.csv”);

!Perform operations on table_OA to obtain fringe down capacitance.

merge(table_PP, “PP_Ctotal”, table_OA);
save_table(table_OA, CSV, “OA_b.csv”);

column_vector_op(table_OA, “PP_Ctotal”,
table_OA, “OneArrayLayer1Width”,
table_OA, “OA_Carea”, “*”);
column_vector_op(table_OA, “OA_Ctotal”,
table_OA, “OA_Carea”, table_OA,
“OA_FD_alpha”, “-”);
column_scalar_op(table_OA, “OA_FD_alpha”,
table_OA, “OA_FD”, “/”, 2.0);

save_table(table_OA, CSV, “OA_c.csv”);
save_table(table_OA, TONYPLOT, “OA_c.str”);

!Equations for fringe down with near body effect.

equationFD=”OA_FD=1.0*K1[0.01]*(1.0-exp(- K2[0.09]*
(${OneArrayLayer1Space}+K3[0.03])))”;

res_OA = (calculate_fit(equationFD)(table_OA)(sum_combinations
(OA_combinations))(“FD_OA.rsm”)(“Downhill-Simplex”));

save_table(res_OA, CSV, “OA_FDcoeff.csv”);

! Header notes
write_parameters(“eg1.xcl”, table_PP, {“\n// Example script
for Exact2 manual\n”});
write_parameters(“eg1.xcl”, table_PP, {“\n\n”});
write_parameters(“eg1.xcl”, table_PP, {“UNIT LENGTH um\nUNIT
CAPACITANCE fF\n\n”});

!Write text for area capacitance expression and
fringe down capacitance expression

write_parameters(“eg1.xcl”, table_PP, {“CAPACITANCE
CROSSOVER PLATE “, “LAYER0”, “ “, “LAYER1”,
“\n\n[\n\n C =”, “PP_Ctotal”, “*area()\n\n]\n\n”});

write_parameters(“eg1.xcl”, res_OA, {“CAPACITANCE
CROSSOVER FRINGE “, “LAYER0”, “ “, “LAYER1”,
“\n\n[\n\n C =length()*”, “k1”, “*(1.0-exp(-”, “k2”,
“*(distance()+”, “k3”, “)))\n\n]\n\n”});

!*************END SCRIPT FILE**************

Main output from the script file: capacitance rule file eg1.xcl

UNIT LENGTH um
UNIT CAPACITANCE fF