首页 > 其他分享 >connect 脚本

connect 脚本

时间:2024-07-15 17:42:32浏览次数:5  
标签:脚本 obj1 obj2 list Hline connect xVBP yHBP

`procedure( ContInOrder()
prog( ( OBJ1 OBJ2 obj1 obj2 Vline Hline HW VW HBP VBP xHBP yHBP xHEP yHEP xVBP yVBP xVEP yVEP
Space1 Space2 Space3 Space4 LeftDown LeftUp RightUp RightDown TechFile CGroupId
MyViaOptions Window Num1 Num2 BigNum SmallNum NEWVIAS)

OBJ1 = geGetSortedSelectByLine()
OBJ2 = geGetSortedSelectByLine()
Setlist = mapcar('list OBJ1 OBJ2)
F1=car(OBJ1) L1=cadr(OBJ1)
F2=car(OBJ2) L2=cadr(OBJ2)
foreach(Set Setlist
if(caar(Set)~>objType == "pathSeg"
then obj1 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon( caar(Set))) )
dbDeleteObject(caar(Set))
else obj1 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon( caar(Set))) )
);
if(caadr(Set)~>objType == "pathSeg"
then obj2 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon(caadr(Set))) )
dbDeleteObject(caadr(Set))
else obj2 = car(leConvertShapeToPathSeg(leConvertShapeToPolygon(caadr(Set))) )
);if ***IC617 SKILL BUG.Delete extra pathSeg ***
if(xCoord(obj1>beginPt)==xCoord(obj1>endPt) && yCoord(obj2>beginPt)==yCoord(obj2>endPt)
then Vline = obj1 Hline = obj2);if
if(xCoord(obj2>beginPt)==xCoord(obj2>endPt) && yCoord(obj1>beginPt)==yCoord(obj1>endPt)
then Vline = obj2 Hline = obj1);if

HW = Hline~>width/2 VW = Vline~>width/2
HBP = Hline~>beginPt HEP = Hline~>endPt
VBP = Vline~>beginPt VEP = Vline~>endPt

xHBP=xCoord(HBP) yHBP=yCoord(HBP)
xHEP=xCoord(HEP) yHEP=yCoord(HEP)
xVBP=xCoord(VBP) yVBP=yCoord(VBP)
xVEP=xCoord(VEP) yVEP=yCoord(VEP)
Space1 = expt((xHBP-xVBP) 2) + expt((yHBP - yVBP) 2)
Space2 = expt((xHBP-xVEP) 2) + expt((yHBP - yVEP) 2)
Space3 = expt((xHEP-xVBP) 2) + expt((yHEP - yVBP) 2)
Space4 = expt((xHEP-xVEP) 2) + expt((yHEP - yVEP) 2)

cond(
(min(Space1 Space2 Space3 Space4) == Space1
dbSetPathSegPoints(Hline list(xVBP-VW yHBP) HEP)
dbSetPathSegPoints(Vline list(xVBP yHBP-HW) VEP)
; println("1") shape L
);
(min(Space1 Space2 Space3 Space4) == Space2
dbSetPathSegPoints(Hline list(xVBP-VW yHBP) HEP)
dbSetPathSegPoints(Vline VBP list(xVEP yHEP+HW))
; println("2") shape F
);
(min(Space1 Space2 Space3 Space4) == Space3
dbSetPathSegPoints(Hline HBP list(xVBP+VW yHEP))
dbSetPathSegPoints(Vline list(xVBP yHBP-HW) VEP)
; println("3") shape _|
);
(min(Space1 Space2 Space3 Space4) == Space4
dbSetPathSegPoints(Hline HBP list(xVBP+VW yHEP))
dbSetPathSegPoints(Vline VBP list(xVEP yHEP+HW))
; println("4") shape 7
);
);cond
;CorePoint = list(xVBP yHBP)
LeftDown =list(xVBP-VW yHBP-HW) LeftUp =list(xVBP-VW yHBP+HW)
RightDown=list(xVBP+VW yHBP-HW) RightUp=list(xVBP+VW yHBP+HW)

TechFile = techGetTechFile(geGetEditRep())
CGroupId = cstFindConstraintGroupIn(TechFile "virtuosoDefaultSetup")
MyViaOptions = viaGetViaOptions(CGroupId)
Window = deGetCellView()
NEWVIAS = viaGenerateViasInArea(Window list(LeftDown LeftUp RightUp RightDown) MyViaOptions)
/*************Delete extra Vias***********/
BigNum = max(MetalLayerNumber(obj1~>layerName) MetalLayerNumber(obj2~>layerName))
SmallNum = min(MetalLayerNumber(obj1~>layerName) MetalLayerNumber(obj2~>layerName))

for(j 0 j=length(NEWVIAS)
;println(nth(j NEWVIAS)>viaHeader>master>shapes>layerName)
if(setof(x nth(j NEWVIAS)>viaHeader>master>shapes>layerName
MetalLayerNumber(x)<SmallNum-1||MetalLayerNumber(x)>BigNum+1);setof
then dbDeleteObject(nth(j NEWVIAS))
);if
);for
/Delete extra Vias*/
);foreach
);let
);procedure

/**********Number***********/
procedure(MetalLayerNumber( MetalLayerName )
let((MetalList MetalNum)
MetalList=list("Active" "Poly" "Contact" "MET1" "Via1" "MET2" "Via2" "MET3" "Via3" "MET4" "Via4" "UME" "TopVia" "TTOPME" )
for(i 1 length(MetalList)
if(nth(i-1 MetalList)== MetalLayerName
then
MetalNum=i);if
);for
MetalNum
);let
);proc

hiSetBindKey("Layout" "1" "ContInOrder()")

`

标签:脚本,obj1,obj2,list,Hline,connect,xVBP,yHBP
From: https://www.cnblogs.com/jinzbr/p/18303651

相关文章

  • 脚本管理AWS-EC2
    这里使用pythonSDKboto3,文档:https://aws.amazon.com/sdk-for-python/https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html安装pip3installboto3配置cdmkdir.awsvim~/.aws/credentials[default]aws_access_key_id=YOUR_ACCESS_KEY......
  • 运维脚本备忘录
    shell巡检#!/bin/bash#Debian12.5exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/binsource/etc/profileif[$(id-u)-gt0];thenecho"Executethescriptatroot"exit1fi#获取IP地址IPADDR=$(hostname-I......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • SFTP一键添加脚本 (Duplicated 2024-07-15 12:39:10)
    創建腳本vimonekey_for_sftpuser.sh腳本內容#!/bin/bash#获取当前日期和时间CURRENT_DATE=$(date'+%Y年%m月%d日%H:%M:%S')echoecho"——————————————————————————————————————————————————————"echo"••......
  • 按键精灵,魔兽世界自动寻路实现脚本及思路
    软件umi截图插件,excel,按键精灵,神梦dll思路先移动一段距离通过计算斜率,换算成角度,判断最终转向脚本Function对接umiocr(图片路径)DimURL,JsonData,json,username,password,base64URL="http://192.168.1.40:1224/api/ocr"Import"SmHTTP.dll"SetSm......
  • 如何理解electron 的预加载脚本
    在Electron应用中,预加载脚本(PreloadScript)是一个非常重要的概念,它允许你在渲染进程(web页面)和主进程之间创建一个安全的桥梁。预加载脚本运行在Node.js环境中,但位于渲染进程的一个单独的上下文中,这意味着它可以访问Node.js的API,但无法直接访问DOM。这种设计使得预......
  • 【Playwright+Python】手把手带你写一个自动化测试脚本
     如何使用代理方式打开网页 在playwright.chromium.launch()中传入proxy参数即可,示例代码如下:1、同步写法:fromplaywright.sync_apiimportsync_playwrightproxy={'server':'http:/127.0.0.1:8080'}defrun():withsync_playwright()asp:......
  • 【JavaScript脚本宇宙】解密六大Node.js消息队列库:选对工具,事半功倍
    从Bull到NSQ:探索Node.js消息队列库的全貌前言在现代软件开发中,消息队列是一种常见的通信模式,用于实现异步任务处理、解耦系统组件、以及实现可靠的事件驱动架构。Node.js作为一个流行的后端开发平台,有许多优秀的消息队列库可以供开发者选择和使用。本文将介绍六个流行的No......
  • 【Python】自动化抢票脚本【某麦网】
    1.脚本介绍1.1背景介绍在这个数字化时代,演唱会、体育赛事和各种活动的门票销售往往在线上进行。由于热门活动的高需求和门票的有限供应,抢票成为了一场激烈的竞争。许多粉丝和爱好者经常因为手速不够快或网络延迟而错失购票机会。为了提高抢票的成功率,自动化抢票脚本应运......
  • VPS测试脚本,网络线路,路由测试,流媒体服务器测试脚本
    ​收集了一些服务器测试脚本,测试性能,网络以及解锁Netflix等服务。记录收集一下,特此记录。 yabs测试脚本wget-qO-yabs.sh|bash老外比较爱用的服务器性能测试脚本。一键查看独服硬盘时间wget-qhttps://github.com/Aniverse/A/raw/i/a&&basha一键查看独立服务器通电......