MLFoMPy 是提取半导体 IV 曲线的主要品质因数 (FoM) 的有效工具
项目描述
这是什么?
这是一个 MLFomPy 教程介绍,您将在其中学习如何使用 MLFoMpy 库的基本功能。
2021 年 9 月 2 日。
MLFoMpy 的源代码可以从https://gitlab.citius.usc.es/modev/mlfompy下载,纯粹是为了作为 Linux 系统的库运行。请注意,以下安装步骤适用于 Debian 派生的发行版:例如,适用于 Ubuntu 16.04 或更高版本以及 CentOS(已测试)。此外,MLFoMpy 已被证明可以在Python 3.6中工作。MLFoMpy 使用了几个需要安装的外部库,以便能够使用该工具的全部功能。这些库的列表如下所示:
安装工具
麻木的
scipy
matplotlib
pytest
概率量表
大多数这些模块将在安装 MLFoMpy 时自动安装。pytest 模块未列为硬依赖项,因此您必须事先安装它。
详细的安装步骤可以在本教程的后面找到,关于 MLFoMpy 库的更多文档可以在 MLFoMpy.pdf 中找到。
一、简介
FoMPy 是一种有效的工具,可以提取半导体 IV 曲线的主要品质因数 (FoM),并为可变性研究提供有用的统计参数。它包括几种提取阈值电压的方法。
在下图中,用户可以看到 MLFoMpy 库背后的基本工作流程:
<figure class="align-center">将数据加载到 MLFoMpy 数据集后,使用库中实现的各种工具,用户能够处理和提取给定曲线的重要参数。
2.安装
首先,您需要在系统上安装pip3。对于 Ubuntu,打开一个终端并输入:
sudo apt update sudo apt install python3-pip
强烈鼓励使用虚拟环境。Python 虚拟环境的主要目的是为 Python 项目创建一个隔离的环境,这样就不会出现与其他项目的模块化依赖问题。为了使用它们,在终端中运行以下命令:
#Install virtual environments sudo apt install python3-venv #Create and name the environment "venv" python3 -m venv .venv #Activate the venv source .venv/bin/activate
请注意,到目前为止,您处于具有有限/隔离版本的 python 的虚拟环境(终端中的通知 (.venv) $)中,因此您必须安装该特定项目所需的所有包(包括您可能已安装在系统中的那些,因为它们可能未安装在虚拟环境中)。
通过 pip3 安装 MLFoMpy
有必要从存储库下载 MLFompy。你得到一个压缩文件,解压后会出现文件夹 mlfompy-main。然后,需要在指示 mlfompy-main 所在路径(/PATH/MLfompy-main)的终端中运行以下命令:
pip install -e /PATH/MLFOMPY
并通过从python3 终端导入库来检查库是否已安装:
import mlfompy
除非出现错误,MLFoMpy 现在已安装在您的虚拟环境中。
注意:大多数包将在 MLFoMpy 安装期间自动安装。如果您遇到一些问题,您可以尝试通过在终端中键入来自行安装所需的模块:
pip3 install setuptools pip3 install pytest pip3 install numpy pip3 install scipy pip3 install probscale pip3 install matplotlib sudo apt-get install python3-tk #optional
3. 快速入门
在本节中,用户可以学习在 MLFoMpy 库中实现的最基本但功能最强大的命令。为此,请先阅读基本命令,或者下载并尝试本页末尾解释的存储库中提供的示例。
基本命令
现在提供了一堆有用的 MLFoMpy 命令。支持的工具包括 mlfompy.extract、mlfompy.plot 或 mlfompy.savetotxt。以下是 MLFoMpy 核心功能的一些快速示例:
为了加载一个在python3 终端内运行的 MLFoMpy 数据集:
import mlfompy
MLFoMpy 实现了一个导入工具,允许用户从各种来源(从文件、存储在内存中的数组等)中提取数据。
1.从文件导入
例如,如果用户希望导入以一般方式存储的 IV 曲线(带有标题加上电压和电流列):
#VG #ID 0.0 3.00E-09 0.1 2.18E-08 0.2 3.77E-07 0.3 2.74E-06 0.4 9.33E-06 0.5 1.87E-05 0.6 2.97E-05 0.7 3.96E-05 0.8 5.43E-05 0.9 5.98E-05 1.0 6.60E-05
创建 MLFoMpy 数据集的一种方法是:
import mlfompy 路径 = './path_to_file' fds = mlfompy.dataset(路径,解析器=mlfompy.file) print(fds.dataset)
2.从数组导入
此外,如果用户已经在数组中加载了 IV 曲线,则该过程类似于前面解释的:
import mlfompy
将 numpy 导入为 np
arr1 =np.array([[0.00e+00, 1.00e-09],
[1.00e-01, 2.20e-08],
[2.00e-01, 3.20e-07],
[3.00e-01, 2.74e-06],
[4.00e-01, 9.90e-06],
[5.00e-01, 2.20e-05],
[6.00e-01, 3.22e-05],
[7.00e-01, 4.16e-05],
[8.00e-01, 5.23e-05],
[9.00e-01, 6.04e-05],
[1.00e+00, 6.60e-05]])
arr2 =np.array([[0.00e+00, 1.00e-09],
[1.00e-01, 2.15e-08],
[2.00e-01, 3.18e-07],
[3.00e-01, 2.72e-06],
[4.00e-01, 9.85e-06],
[5.00e-01, 2.12e-05],
[6.00e-01, 3.16e-05],
[7.00e-01, 4.10e-05],
[8.00e-01, 5.46e-05],
[9.00e-01, 6.15e-05],
[1.00e+00, 6.57e-05]])
arrays = np.stack((arr1, arr2)) #这里把数组放在一起
fds = mlfompy.dataset(arr = 数组,解析器 = mlfompy.array)
print(fds.dataset)
同样对于单个 IV 曲线:
import mlfompy 将 numpy 导入为 np x = ([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]) y = ([1.00e-09, 2.20e-08, 3.20e-07, 2.74e-06, 9.90e-06, 2.20e-05, 3.22e-05, 4.16e-05, 5.23e-05, 6.04 e-05, 6.60e-05]) fds = mlfompy.iv(arr = (x,y),解析器=mlfompy.curve) print(fds.dataset)
请注意,MLFoMpy 的所有操作都取决于 Dataset 的创建方式,因此请尝试根据前面的示例连接多个数组。
3.从VENDES模拟器中使用的JCJB导入[#]_
最后,MLFoMpy 预定义了一个解析器,该解析器读取称为“JCJB”的内部格式。为了从这些文件中加载数据,MLFoMpy 有一个带有解析器输入参数的导入工具。在文件夹“./data/”内,用户必须将所有模拟存储在单独的文件夹中(即“./data/sim_1/current_file_1.txt”、“./data/sim_2/current_file_2.txt”等):
path_data = './data' fds = mlfompy.dataset(path_data, parser=mlfompy.JCJB)
请注意,定义的路径必须指向包含单个 IV 曲线文件的文件夹的父目录。
运行此程序后,将创建一个 MLFoMpy 数据集,并将 IV 曲线存储在其中。可以通过调用 dataset 属性来访问它们:
print(fds.dataset)
4.MLFoMpy 数据集
现在已经实现了 MLFoMpy 数据集,可以定义其他几个参数,例如模拟次数 (fds.n_sims) 或用于归一化曲线的值 (fds.norm)。默认提取方法 (fds.ext_method)、排水曲线集合的偏差 (fds.drain_bias)、漏极偏差值 (fds.drain_bias_value) 和默认插值方法 (fds.interpolation)。所有这些参数都可以像以下示例一样定义/更新(请注意,一旦加载 IV 曲线,其中一些将自动定义,例如模拟次数):
fds.drain_bias_value = 0.66
还可以调用一个预定义的函数来打印所选 MLFoMpy 数据集的属性的当前值:
fds.print_parameters()
5.参数提取
MLFompy 最重要的功能是它允许用户使用不同的方法提取半导体 IV 曲线的最常见品质因数 (FoM)。为了提取这些 FoM,用户必须调用函数 extract。以下示例提取 Fompy 数据集中曲线的阈值电压值V_TH:
vth_array = mlfompy.extract(fds, fom = 'vth')
并将结果写入文件:
mlfompy.savetotxt('./results_vth.txt', 'vth', vth_array)
请注意,由于没有定义提取方法,因此库默认使用二阶导数方法 ('SD')。这可以更改为其他常用方法,如恒流方法、三阶导数或线性外推法(有关如何选择此方法的详细说明,请参见完整文档)。这些提取方法背后的理论和案例结果可以在[ 1 ] [ 2 ]中找到
6.绘制结果
MLFoMpy 还具有内置的多种绘图功能,可以检查提取结果。使用“SD”方法和曲线的二阶导数绘制的简单阈值电压图如下:
mlfompy.plot(fds, fom = 'vth', save_plot='./vth_plots/sd/')
使用 MLFoMpy 时有两个常见的后端可用:“Agg”(默认),仅在将绘图保存到文件(非 GUI)时才有效,“TkAgg”是用于在弹出窗口上可视化绘图的 GUI 工具。请注意,“TkAgg”需要安装包 python3-tk 才能运行。此外,这些图已保存到路径“./vth_plots/sd/”,保持曲线的索引存储在 MLFoMpy 数据集中。
存储库示例
代码中包含一个简单的示例,因此用户可以测试一些基本命令并检查库在其系统中是否按预期工作。抓住这个repostiroty后:
git clone https://gitlab.citius.usc.es/modev/mlfompy cd mlfompy-main
在目录示例中,包含命令示例的名为example.py的文件和包含模拟 IV 曲线集合的文件夹包含在路径“./data”内。
为了测试它,注释并取消注释要在 example.py 和python3 终端类型中运行的行:
python3 example.py
引用 MLFoMpy
如果对您的研究有帮助,请在您的出版物中引用 MLFoMpy:
@INPROCEEDINGS{fompy2018,
author={G. {Espiñeira} and N. {Seoane} and D. {Nagy} and G. {Indalecio} and A. J. {García-Loureiro}},
booktitle={2018 Joint International EUROSOI Workshop and International Conference on Ultimate Integration on Silicon (EUROSOI-ULIS)},
title={FoMPy: A figure of merit extraction tool for semiconductor device simulations},
year={2018},
pages={1-4},
doi={10.1109/ULIS.2018.8354752},
ISSN={2472-9132},
month={March},}
参考
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。