高效碳基测试运算模块
Project description
高效碳基测试运算模块
gTixi适用于高效碳基芯片测试的函数库
由魏楠和李若铭开发
联系开发者:lxwk1spectre@foxmail.com
gitee项目:https://gitee.com/lxwk1spectre/gdevsample
功能介绍
该模块主要用于芯片开发过程中的各种数据处理。包括从测试文件中提取数据,对曲线进行各种基本操作,以及各种类型器件的性能参数提取。
使用说明
安装gTixi库
在命令行中输入 pip3 install gTdev
一个简单的使用范例
import pandas as pd
import gTdev#导入gTdev模块
#读取文件,测试文件已经放到同文件夹的data目录下,支持同时放入多个文件批量处理
testFiles = gTdev.gtfile(location='./data',X_Axis='GateV',Y_Axis='BulkV')
#gtfile的返回值为list,list里的元素为gTdev.gtfile.curve
#提取参数
result = []#用于存储提取到的参数
for curve in testFiles.curves:#对每个提取到的曲线分别处理
#根据curve的x,y实例化反相器
inv = gTdev.inverter(curve.x,curve.y)
#提取反相器的转换阈值电压,增益,回滞,噪声容限-高,噪声容限-低,并放入result中
result.append([curve.name, inv.Vm, inv.gain, inv.hys, inv.NMH, inv.NML])
#添加表头,转化为pandas的DataFrame格式化输出
result = pd.DataFrame(result,columns=['name',"Vm","gain","hys","NMH","NML"])
print(result)
文档
文件处理
曲线:curve
- class
- 用于存储单条曲线数据的类
curve(x, y, name='', info={})
- x,y
- list
- 曲线的x轴数据和y轴数据
- name
- str
- 曲线的名字
- info
- dict
- 曲线包含的其他信息,例如输出特性曲线的Vgs等信息
curve.curve
- turple
- 值为(self.x,self.y)
curve.x, curve.y, curve.name, curve.info
文件解析:gtfile()?
- class
- 从excel文件中获取特定列的数据
gtfile(key='.xls',location='./',X_Axis='GateV',Y_Axis="DrainI")
- key
- str
- 过滤excel文件的关键字
- location
- str
- 搜索文件的目录
- X_Axis, Y_Axis
- str
- X轴、Y轴的列名
- absY
- bool
- 提取曲线数据时,是否对Y取绝对值。
gtfile.files
- set
- str
- 被过滤出来的文件名
- gtfile.files.add(str)
- 手动添加文件
- gtfile.files.clear(str)
- 清空所有文件。
gtfile.curves
- list
- curve
- 提取到的曲线
gtfile.getFile()
根据self.key和self.location获取文件。文件会被保存到self.files中,可以使用set类的所有操作,比如使用self.files.add("/b.xls")手动添加文件。
gtfile.getcurves(absY=True)
根据self.X_Axis和self.Y_Axis获取曲线。
- absY
- bool
- 在提取Y_Axis时,默认会对Y的值取绝对值。设置为False时,Y轴数据不会取绝对值。
在实例化gtfile类时,会自动运行getfile()和getcurves()函数进行提取曲线,一般不需要使用这两个函数进行手动添加。
gtfile.cutcurve(start,end)
根据start和end的值,对曲线进行截取
通用: gTdev.gtdevCommon
物理量: gTdev.gtdevCommon.physicalQuantity
- class
- 用于存储提取出的参数的类
physicalQuantity(num,unit)
- 根据物理量的值和单位初始化物理量
physicalQuantity.num
- float
- 物理量的值
physicalQuantity.unit
- str
- 物理量的单位
physicalQuantity.str()
- 用于print物理量实例,默认保留4位有效数字,输出格式为 "{:.4g}{}".format(self.num,self.unit)
晶体管 gtmos
gtmos.transcurve
分析转移曲线的类
transcurve(Vgs:list,Id:list)
- Vgs, Id
- list
- 源漏电流与栅压
transcurve.Ion, transcurve.Ioff, transcurve.OOR,
transcurve.Vth, transcurve.Gm, transcurve.SS
实例化类之后,不需要进行任何操作,即可直接读取电学参数,相应的计算会在读取的时候自动进行。
返回值为physicalQuantity。可以直接print(output)或者使用output.num读取数值进行进一步计算。
- 提取方法
- Ion:饱和电流
- 曲线的最大值
- Ioff:关态电流
- 曲线的最小值
- OOR:开关比
- log(Ion/Ioff)
- Vth:阈值电压
- Gm:跨导
- 跨导的定义是dVgs/dId
- 这里取的是跨导的最大值,
- 以相邻两个点的斜率作为该点的导数dy/dx|x=x1 = (y1-y2)/(x1-x2)
- SS:亚阈值摆幅
- 定义:亚阈值区域中dVgs/dlog(Ids)
- 对数坐标中求导,找到斜率最大的Vgs点
- 在跨导最大的点两侧,将斜率大于0.85最大斜率的所有点作为线性区
- 对线性区的点进行线性拟合的斜率即为亚阈值摆幅
- Ion:饱和电流
transcurve.vthMod
- int
- 提取阈值电压的方法
- 1:线性反向延长法
- 求斜率,以斜率最大点左右,斜率大于0.8倍最大斜率的所有点为线性区
- 线性回归,然后反向延长,与x轴的交点作为阈值电压
- 0: 印刷电子学法
- 将电流开根号
- 一下步骤同线性反向延长法
- 2:最大跨导法
- 以跨导最大值的Vgs作为阈值电压
- 1:线性反向延长法
transcurve.getVth(mod=None)
- 根据指定的计算方法,重新计算阈值电压。
反相器 gtInv
gtInv.inverter
分析反相器参数的类
inverter(vin:float,vout:float,vdd:float)
- vin
- 输入电压
- vout
- 输出电压
- vdd
- 工作电压
inverter.Vm, inverter.NMH, inverter.NML
inverter.hys, inverter.gain
实例化类之后,不需要进行任何操作,即可直接读取电学参数,相应的计算会在读取的时候自动进行。
返回值为physicalQuantity。可以直接print(output)或者使用output.num读取数值进行进一步计算。
- 提取方法
- Vm:转换阈值
- 反相器曲线与y=x的交点的Vin作为转换阈值
- NMH, NML:噪声容限
- 反相器曲线上斜率为-1的点有两个,分别为(xH,yH)和(xL,yL)
- NMH = xH-yL, NML = yH - xL
- hys: 回滞
- 反相器曲线与 y = (max(Vout)+min(Vout)) / 2 有两个交点
- 两个交点的差作为回滞
- gain:增益
- dVout/dVin的最大值作为反相器增益
- Vm:转换阈值
版本迭代
1.1.0
- 230628
- 优化了亚阈值摆幅的算法,如果关态附近电流波动太大,会尝试用不同的limit切除一部分数据,最终判断出最合适的线性区,再进行亚阈值摆幅的提取。
- 将优化关态波动的算法应用的阈值电压的提取,和最大跨导的提取上
- 曲线增加cut函数,可以截取一部分曲线进行分析。
1.0.0
- 230601
- 正式上线
0.0.3
- 230522
- 初始版本发布。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.