Syntax Driven 2D Structure Export from 3D Structures and Extraction of 2D Volume Data Maps



This article demonstrates a new feature of TonyPlot3D. This feature enables the automated, syntax driven export of 2D structure slices from 3D structures. Also demonstrated in this article is the subsequent extraction of 2D volume data maps with regular spacing using a combination of EXTRACT commands, system commands and loops.

EXTRACT is a powerful extraction language built into DeckBuild that allows the measurement of physical and electrical properties in a simulated device. The result of this could be a single value, such as a thickness, or a two-dimensional curve, such as concentration versus depth for process or gate voltage versus drain current for device. There are a number of significant features of the EXTRACT statement such as mathematical manipulation of extracted data, customized expressions, standard routines as well as variable substitution.


The Structure

In this example a simple MOSFET structure is used. The sample structure is shown in Figure 1. The structure is taken from standard example mos2ex04.

Figure 1. Sample structure from standard example mos2ex04.

Before extracting a 2D map of the chosen volume data the 2D slice must be exported from the 3D structure. A slice can easily be taken manually via the TonyPlot3D GUI. However, for automated routines with a high volume of structures or where further data extraction and/or manipulation is desired on the volume data, it is far more efficient to export the 2D slice via syntax inside the deck. A TonyPlot3D set file is required. The set file defines the x,y,z location of the 2D slice that is to be exported and is easily created by the user from the TonyPlot3D GUI.

The set file used in this example is defines such that the coordinates generate a 2D structure on the Y, Z plane through the MOS channel as shown in Figure 2.

Figure 2. Visualization of the location of the 2D slice to be exported as defined in the TonyPlot3D set file.


The 2D Slice Export

To run the export routine, the following syntax is used in the deck:

tonyplot3d mos2ex04_2.str -set cutplane.set -cut 2D_Slice.str

mos2ex04_2.str is the 3D structure that is loaded in. –set calls in the set file, in which the location of the exported plane is defined. cutplane.set is the actual set file generated by the user. –cut is the flag that signals that the following name is to be used as the name for the exported slice which in this instance is called 2D_Slice.str.

Shown in Figure 3 is the slice that is exported to file.

Figure 3. 2D_Slice.str – the slice that is exported to file by the presented syntax.



2D Volume Data Extraction

The next phase is the extraction of a 2D map of a chosen volume data. There is an in-built feature of the EXTRACT statement that will export a map (2D.CONC.FILE). However this exports the data in three columns only (x y c where c is the value of the volume data and x y are the coordinates) and the map is dependent on the mesh grid locations. Therefore if the mesh is irregular then so too will the x y co-ordinates be in the map file.

The method shown here uses a combination of 1D EXTRACT statements, LOOPS and system commands. Essentially a 1D cutline is taken in the y-direction. Data points are then taken at regular intervals, defined by the user, along the 1D cutline using a loop statement and appended to file. This gives a column of data at regular intervals. A second loop statement then shifts the location of the 1D cutline along by a distance defined by the user and the process is repeated. With each shift a new column is started in the data file to which the extracted values are appended.

In this example we will extract a 2D regular map of potential contours from the exported structure. The exported structure from Figure 3 is shown in Figure 4 displaying potential contours.

Figure 4. 2D_Slice.str - showing potential contours which are to be extracted as a 2D map.


Below is the syntax used to extract the 2D map

# Generate XY data on a regular grid

# The range of the x-data
set x_start = 0
set x_end = 1.1

# The step size in the x - direction
set x_delta = 0.1

# The range of the y-data
set y_start = 0
set y_end = 1

#The step size in the y - direction
set y_delta = 0.1

# The file to read data from and write
# data to.
set data_in = “2D_Slice.str”
set data_out = potential_map.dat

# Calculate the number of steps require
# in the x and y directions
set num_x_steps = 1 + \
($x_end - $x_start) / ($x_delta)
set num_y_steps = 1 + \
($y_end - $y_start) / ($y_delta)

go atlas

# Housekeeping – delete output data file
# if it already exists in the work folder
system rm -f $data_out

# Loop over the rows
set y = $y_start
loop steps=$num_y_steps

set y1 = $y
set y = $y1 + $y_delta

# Loop over the columns
set x = $x_start
loop steps=$num_x_steps

set x1 = $x
set x = $x + $x_delta

# Read in the exported 2D slice
extract init inf=”$’data_in’”

# Extract a data point from the 1D curve
extract name=”data_point” y.val from \
curve (depth,impurity=”potential” \
material=”Silicon” \
mat.occno=1 x.val=$”x1”) \
where x.val=$”y1”

# Append data point to file
system echo -n ‘$”data_point” ‘ >> $data_out

# Loop round to extract next data point
# from 1D cutline

# End the current column, add a new-
# line to the data file.
system echo ‘ ‘ >> $data_out

# Loop round to step along and take
# next 1D cutline



The extracted space separated 2D map data is displayed using Sedit, Silvaco’s text editing tool as shown in Figure 5. The generated data file then can be used in third party plotting or data analysis and manipulation tools.

Figure 5. Extracted space separated 2D map data displayed in Sedit.



We have demonstrated a new feature in TonyPlot3D. This feature enables the user to export 2D slices from 3D structures via in-deck syntax. We have also demonstrated how to extract a 2D map of volume data using Silvaco’s powerful in-built extract routines from such an exported slice.


Download PDF version of this article