Package: gTdev
高效碳基测试运算模块gTixi适用于高效碳基芯片测试的函数库由魏楠和李若铭开发联系开发者：lxwk1spectre@foxmail.comgitee项目：https://gitee.com/lxwk1spectre/gdevsample功能介绍该模块主要用于芯片开发过程中的各种数据处理。包括从测试文件中提取数据，对曲线进行各种基本操作，以及各种类型器件的性能参数提取。使用说明安装gTixi库在命令行中输入 pip3 install gTdev一个简单的使用范例importpandasaspdimportgTdev#导入gTdev模块#读取文件，测试文件已经放到同文件夹的data目录下，支持同时放入多个文件批量处理testFiles=gTdev.gtfile(location='./data',X_Axis='GateV',Y_Axis='BulkV')#gtfile的返回值为list，list里的元素为gTdev.gtfile.curve#提取参数result=[]#用于存储提取到的参数forcurveintestFiles.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)文档文件处理曲线：curveclass用于存储单条曲线数据的类curve(x, y, name='', info={})x,ylist曲线的x轴数据和y轴数据namestr曲线的名字infodict曲线包含的其他信息，例如输出特性曲线的Vgs等信息curve.curveturple值为(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")keystr过滤excel文件的关键字locationstr搜索文件的目录X_Axis, Y_AxisstrX轴、Y轴的列名absYbool提取曲线数据时，是否对Y取绝对值。gtfile.filessetstr被过滤出来的文件名gtfile.files.add(str)手动添加文件gtfile.files.clear(str)清空所有文件。gtfile.curveslistcurve提取到的曲线gtfile.getFile()根据self.key和self.location获取文件。文件会被保存到self.files中，可以使用set类的所有操作，比如使用self.files.add("/b.xls")手动添加文件。gtfile.getcurves(absY=True)根据self.X_Axis和self.Y_Axis获取曲线。absYbool在提取Y_Axis时，默认会对Y的值取绝对值。设置为False时，Y轴数据不会取绝对值。在实例化gtfile类时，会自动运行getfile()和getcurves()函数进行提取曲线，一般不需要使用这两个函数进行手动添加。gtfile.cutcurve(start,end)根据start和end的值，对曲线进行截取通用: gTdev.gtdevCommon物理量: gTdev.gtdevCommon.physicalQuantityclass用于存储提取出的参数的类physicalQuantity(num,unit)根据物理量的值和单位初始化物理量physicalQuantity.numfloat物理量的值physicalQuantity.unitstr物理量的单位physicalQuantity.str()用于print物理量实例，默认保留4位有效数字，输出格式为 "{:.4g}{}".format(self.num,self.unit)晶体管 gtmosgtmos.transcurve分析转移曲线的类transcurve(Vgs:list,Id:list)Vgs, Idlist源漏电流与栅压transcurve.Ion, transcurve.Ioff, transcurve.OOR,transcurve.Vth, transcurve.Gm, transcurve.SS实例化类之后，不需要进行任何操作，即可直接读取电学参数,相应的计算会在读取的时候自动进行。返回值为physicalQuantity。可以直接print(output)或者使用output.num读取数值进行进一步计算。提取方法Ion：饱和电流曲线的最大值Ioff：关态电流曲线的最小值OOR：开关比log(Ion/Ioff)Vth:阈值电压见VthModGm:跨导跨导的定义是dVgs/dId这里取的是跨导的最大值，以相邻两个点的斜率作为该点的导数dy/dx|x=x1 = (y1-y2)/(x1-x2)SS:亚阈值摆幅定义：亚阈值区域中dVgs/dlog(Ids)对数坐标中求导，找到斜率最大的Vgs点在跨导最大的点两侧，将斜率大于0.85最大斜率的所有点作为线性区对线性区的点进行线性拟合的斜率即为亚阈值摆幅transcurve.vthModint提取阈值电压的方法1：线性反向延长法求斜率，以斜率最大点左右，斜率大于0.8倍最大斜率的所有点为线性区线性回归，然后反向延长，与x轴的交点作为阈值电压0: 印刷电子学法将电流开根号一下步骤同线性反向延长法2：最大跨导法以跨导最大值的Vgs作为阈值电压transcurve.getVth(mod=None)根据指定的计算方法，重新计算阈值电压。反相器 gtInvgtInv.inverter分析反相器参数的类inverter(vin:float,vout:float,vdd:float)vin输入电压vout输出电压vdd工作电压inverter.Vm, inverter.NMH, inverter.NMLinverter.hys, inverter.gain实例化类之后，不需要进行任何操作，即可直接读取电学参数,相应的计算会在读取的时候自动进行。返回值为physicalQuantity。可以直接print(output)或者使用output.num读取数值进行进一步计算。提取方法Vm：转换阈值反相器曲线与y=x的交点的Vin作为转换阈值NMH, NML：噪声容限反相器曲线上斜率为-1的点有两个，分别为(xH,yH)和(xL,yL)NMH = xH-yL, NML = yH - xLhys: 回滞反相器曲线与 y = (max(Vout)+min(Vout)) / 2 有两个交点两个交点的差作为回滞gain：增益dVout/dVin的最大值作为反相器增益版本迭代1.3.0230125增加了listpara和paraname功能增加了提取噪声的功能1.2.0231008增加了稳定性曲线名添加了文件名以示区分不同的文件可以修改sheetName以适应不同的规范1.1.0230628优化了亚阈值摆幅的算法，如果关态附近电流波动太大，会尝试用不同的limit切除一部分数据，最终判断出最合适的线性区，再进行亚阈值摆幅的提取。将优化关态波动的算法应用的阈值电压的提取，和最大跨导的提取上曲线增加cut函数，可以截取一部分曲线进行分析。1.0.0230601正式上线0.0.3230522初始版本发布。