allegro skill PinArry 函数解析

;_PinArray(

PadN (焊盘)

Col (列数)

Row (行数)

PitchX (x方向间距)

PitchY (y方向间距)

Pos1 (第一脚的位置)

bRight () bUp () bRowFirst () 这个三个是控制pin放置的方向的,

//这里有个隐含的基础 在skill里面,nil是表示假,t表示真.

bPin1

bPinNum (这个决定了 是不是机械焊盘)

Pin1Offset

PinAngle

PinTAngle

delta

Prefix)

_PinArray(PadN CKTS 2 -Pitch -Pitch 0:0 nil nil nil )

_PinArray(PadNs 2 1 W 0 -W/2:0 t t t t t 0 0 0 1 "S")

_PinArray(PadN 2 1 2.0 0 -2/2:2.71 t t t t t 1)

_PinArray(PadN 2 1 7 0 -3.5:2.71 t t t t t 0 0 0 3)

//pin array 函数

defun(_PinArray

(PadN Col Row PitchX PitchY

\@optional

(Pos1

(0:0)

)

(bRight t)

(bUp t)

(bRowFirst t)

(bPin1 t)

(bPinNum t)

(Pin1Offset 0)

(PinAngle 0)

(PinTAngle 0)

(delta 1)

(Prefix nil)

)

(pTotal = (Col * Row))

for(pRow 1 Row

for(pCol 1 Col

if(bRight

(x = (car(Pos1) + ((pCol - 1) * PitchX)))

(x = (car(Pos1) - ((pCol - 1) * PitchX)))

)

if(bUp

(y = (cadr(Pos1) + ((pRow - 1) * PitchY)))

(y = (cadr(Pos1) - ((pRow - 1) * PitchY)))

)

if(bRowFirst

(pnum = (((pRow - 1) * Col) + pCol))

(pnum = (((pCol - 1) * Row) + pRow))

)

sprintf(pn "%d"

(Pin1Offset + ((pnum - 1) * delta) + 1)

)

if(Prefix

(pn = strcat(Prefix pn))

)

if(bPinNum

if(!((pnum == 1) && !bPin1)

(_CreatePin PadN

(x:y) pn PinAngle

PinTAngle

)

)

(_CreatePinMechanical PadN

(x:y) PinAngle

)

)

)

)

)

;FPM skill by Richard L. version=0.08 fpmontreal@gmail.com

;Tree:Connector/Header

;Desc:XHB250-2*N louis author

;Vendor:

;Count:

;CVG64:bitmap field, not implemented yet.

;Datasheet:

Tabs='(

(2 2.5)

(3 5)

(4 7.5)

(5 10)

(6 12.5)

(7 15)

(8 17.5)

(9 20)

(10 22.5)

(11 25)

(12 27.5)

(13 30)

(14 32.5)

(15 35)

(16 37.5)

(1740)

(1842.5)

(1945)

(2047.5)

)

;courtyard 庭院,我测试了一下应该是器件周围的距离

Courtyard=1.0 pH=4 Pitch=2.5

Width=10;先定义为器件的宽度

foreach(aTb Tabs

CKTS =nth(0 aTb)

A =nth(1 aTb) ;这个参数是获取 Tabs表格中的第二列的数据

sprintf(pName,"XHB250-2X%02d",CKTS)

_PrepareNewSym(pName)

;这个插针是0.6x0.6的,斜角宽度就要到 0.86左右. 现在开孔给的1mm,常规焊盘1.5mm

PadN=_PadTH_Default(1.5 1.0)

;_PinArray(PadN Col Row PitchX/Y (P1=0:0) bRight bUp bRowFirst bPin1 bPinNum P1Offset=0 PAngle=0 TAngle=0)

;

;_PinArray(PadN CKTS 2 Pitch Pitch -(CKTS-1)*Pitch/2:0 0 0 0 )

_PinArray(PadN CKTS 2 Pitch Pitch -(CKTS-1)*Pitch/2:-Pitch/2 t t nil )

;bound

_Layer(lPkgGeoPlaceT)

;shape里面的第二个参数 上下宽度

_BoundHeight(_ShapeRectangle(A+2*Pitch+Courtyard Courtyard+Width) pH)

;silkscreen & assembly

for(i 1 2

case(i

(1 _Layer(lPkgGeoSilkT))

(2 _Layer(lPkgGeoAsmT)))

;这个应该是画第一脚的 三角形的.

_Triangle(-(CKTS-1)*Pitch/2:-Width/2 2 90)

;这里面的第二个参数是矩形的上下宽度

_Rectangle(A+2*Pitch Width);矩阵的中心位置怎么调整?

_Line(list(-(CKTS-2)*Pitch/2:Width/2-0.5 (CKTS-2)*Pitch/2:Width/2-0.5) 1.5);这个第三个参数可以设置 线的粗细.

)

;ref & val

_CreateRefValue(pName 0:-Width/2-tSilkHeight/2)

;_CrossCenter()

axlSetSymbolType("package");哈哈哈,这里一定要注意.之前的cadence 16.6 用fpm 创建的器件封装不能保存.是因为 setup ->design parameter的 design

;drawing type 的类型需要修改成为 package. 用了这个函数接口,就直接讲类型修改了. 后面就可以直接保存使用了.

_SaveDesign(pName)

_MakeDevice(pName 2) ;0-IC 1-IO 2-DISCRETE

);foreach

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值