[ Skill ] 圆形平面螺旋电感怎么画?

https://www.cnblogs.com/yeungchie/

目前(2011年),在射频IC设计中最广泛使用的片上电感就是平面螺旋电感,通常用最顶层的金属层来实现,电感的中心点由下面一层的金属线引出。它可以有许多形状:方形、六边形、八边形、圆形等。其中,圆形螺旋电感在给定的金属线宽度和电感值下电阻损耗最小,Q值最高,但很多布线工具和生产技术都难以实现。

下面是在 virtuoso 中绘制圆形电感的方法

本质是通过增加 polygon 边数量来实现的,因此也可以用来绘制任意边数的螺旋电感。

  • code
/************************************
*                                   *
*   Program   :  ycCreateInd.il     *
*   Language  :  Cadence Skill      *
*   Author    :  YEUNGCHIE          *
*   Version   :  20.08.29           *
*   MainFunc  :  ycCreateInd        *
*                                   *
************************************/
procedure(ycCreateInd(lpp radius width space @optional rings(2) sides(360))
	prog((pi steps step A deltaA rad r1 r2 deltaR x1 y1 x2 y2 o1 o2 points1 points2)
		
		radius *= 1.0
		width  *= 1.0
		space  *= 1.0
		rings  *= 1.0
		sides  *= 1.0
		
		defMathConstants('ycMath)
		pi = ycMath.PI
		
		steps = rings * sides
		
		A = 0
		deltaA = 360.0 / sides
		r1 = radius
		deltaR = (width + space) / sides
		
		step = 0
		while(step <= steps
			
			rad = pi * (A + deltaA * step) / 180.0
			
			r1 = radius + deltaR * step
			r2 = r1 + width
			
			x1 = cos(rad) * r1
			y1 = sin(rad) * r1
			x2 = cos(rad) * r2
			y2 = sin(rad) * r2
			
			o1 = x1 : y1
			o2 = x2 : y2
			
			points1 = append1(points1 o1)
			points2 = append1(points2 o2)
			
			step++
		)
		
		points = append(points1 reverse(points2))
		dbCreatePolygon(geGetEditCellView() lpp points)
	)
)
  • describe
    用于创建平面螺旋电感。
    txl_lpp 指定用于绘制的Layer,通用格式 "layerName" 或 list("layerName" "purpose")
    n_radius 最小半径
    n_width 电感线宽
    n_space 线间距
    n_rings 线圈匝数
    n_sides 单匝边缘数量(error时可以适当减小,60左右就看起来挺圆了)

  • example

ycCreateInd("MET1" 10 2 1)

原文地址:https://www.cnblogs.com/yeungchie/p/13443373.html