Genesis常用指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Genesis常用指令
Genesis内部指令大致分如下六大指令:
一、VOF 和VON
关闭和开启错误处理机制
二、SU_OFF 和SU_ON
释放和取得最高权限(genesis)
三、MOUSE
取得鼠标所点的坐标值,会把坐标值放到变量$MOUSEANS内,供使用坐标值是以(x y) 或(x1 y1 x2 y2) 方式返回
用法:MOUSE p|r 提示信息
范例:
MOUSE p “Click on feature to be deleted”
set feature_coordinates = $MOUSEANS
set feature_x = $feature_coordinates[1]
set feature_y = $feature_coordinates[2]
四、AUX
设定当前窗口用,防止脚本执行到其他窗口里
用法:AUX set_group,group=$n
$n为窗口号码
范例:
COM open_entity,job=$JOB,type=step,name=$STEP
set group = `echo “$COMANS”`
AUX set_group,group=$group
五、PAUSE
暂停脚本执行,并显示提示。
(不能显示中文)
用法:PAUSE 要显示的信息
范例:PAUSE Please check it!
六、COM
用来执行LMC(line mode command)命令
用法:
COM 子指令,参数1,参数2,…
返回值有:
$COMANS 存放COM指令的执行结果
$STATUS 如COM指令执行成功则为0,非0则表示执行失败。
注:line mode command指令具体可参考genesis自带帮助文档的0206.pdf,
另外大部分该类指令可通过录制得到
第六类指令最为重要,也最为庞大,其后可接各类子指令,下面列举一些最常用的:
1、info子指令
用来提取Genesis的ODB++资料库的信息,供写脚本使用
注:info子指令具体可参考genesis自带帮助文档的0204.pdf的第六章
其最原始的用法如下:
if ($?GENESIS_TMP) then
set TMP = $GENESIS_TMP
else if ($?GENESIS_DIR) then
set TMP = $GENESIS_DIR/tmp
else
set TMP = D:/genesis/tmp
endif
set IFILE = $TMP/do_info.$$
COM info,out_file=$IFILE,write_mode=replace,args= \!:* ; source $IFILE; rm $IFILE
上面太繁琐,一般都会在$ GENESIS_DIR/sys/hooks/ script_start.csh文件内,用别名命令使其简化为:
alias DO_INFO 'COM info,out_file=$IFILE,write_mode=replace,args= \!:* ; source $IFILE; rm $IFILE'
这样一来,就可用DO_INFO指令后接相关参数即可。
下面举些常用例子:
DO_INFO -t job -e $JOB -d STEPS_LIST
提取当前料号的所有STEP,放到变量$gSTEPS_LIST内
DO_INFO -t step -e $JOB/panel -d LAYERS_LIST
提取当前料号的panel内的所有层,放到变量$gLAYERS_LIST中
DO_INFO -t step -e $JOB/panel -d PROF_LIMITS
提取当前料号panel的板外profile的四边的坐标值
DO_INFO -t step -e $JOB/$panel_name -d SR_LIMITS
提取当前料号panel的板内profile的四边的坐标值
DO_INFO -t layer -e $JOB/panel/$tk_layer.$$ -d SYMS_HIST
提取当前料号panel内,层名为$tk_layer.$$的层上的所有物件的列表
DO_INFO -t step -e $JOB/set -d exists
提取当前料号内set这个step是否存在,如果存在则执行……
if ( $gEXISTS == yes ) then
……
endif
@ layer_num = 2
DO_INFO -t matrix -e $JOB/matrix -d ROW
提取当前料号内工作矩阵的所有行的信息,结果存放在$gROWrow、$gROWside等变量中
下面的循环用来统计内层有多少层
foreach row ($gROWrow)
if ( $gROWside[$row] == inner ) then
@ layer_num++
endif
end
2、常用的恢复初始化窗口状态的相关子指令
COM affected_layer,name=,mode=all,affected=no
COM clear_layers
COM zoom_home
COM display_width,mode=on
COM negative_data,mode=clear
COM display_sr,display=no
COM filter_reset,filter_name=popup
COM clear_highlight
COM sel_clear_feat
COM sel_options,clear_mode=clear_after,display_mode=all_layers,area_inout=inside,area_select=select
COM cur_atr_reset
COM display_grid,mode=off
COM display_grid,mode=off,xgrid=0.1,ygrid=0.1
COM snap_mode,mode=off
COM units,type=inch
3、常用的添加pad的子指令
COM add_pad,attributes=no,x=$pnldrl_x1,y=$pnldrl_y1,symbol=r126.378,polarity=positive,
\angle=0,mirror=no,nx=1,ny=1,dx=0,dy=0,xscale=1,yscale=1
4、常用的添加线的子指令
COM add_line,attributes=no,xs=$tk_x11,ys=$tk_y11,xe=$tk_x11,ye=$tk_y11,
\symbol=r$ltsymbol,polarity=positive
5、常用的添加字符的子指令
COM add_text,attributes=no,type=canned_text,x=$jobdrill_x,y=$jobdrill_y,text=$job_1,
x_size=0.234,y_size=0.328,w_factor=3.2480313778,polarity=positive,angle=0,mirror=no,fontna me=canned_57,bar_type=UPC39,bar_char_set=full_ascii,bar_checksum=no,bar_background=yes, bar_add_string=yes,bar_add_string_pos=top,bar_width=0.2032,bar_height=0.2,ver=1
6、填充对应的子指令
#####加阻流PAD#############
COM fill_params,type=pattern,origin_type=datum,solid_type=surface,min_brush=0.001,
use_arcs=yes,symbol=bm-dumypad2,dx=0.11811,dy=0.11811,break_partial=yes,cut_prims=no,ou tline_draw=no,outline_width=0,outline_invert=no
COM sr_fill,polarity=$polar,step_margin_x=0.07874,step_margin_y=0.07874,
step_max_dist_x=100,step_max_dist_y=100,sr_margin_x=0.11811,sr_margin_y=0.11811,sr_max _dist_x=0,sr_max_dist_y=0,nest_sr=no,consider_feat=no,consider_drill=no,consider_rout=no,des t=affected_layers,attributes=no
7、取得当前工作层,提取该层的相关信息,根据其正负属性来填充
COM get_work_layer
set w_layer = `echo $COMANS `
DO_INFO -t layer -e $JOB/$STEP/$w_layer
if ($gPOLARITY == negative ) then
set polar = negative
COM fill_params,type=solid,origin_type=datum,solid_type=surface,min_brush=0.001,
use_arcs=yes,symbol=,dx=0.1,dy=0.1,break_partial=yes,cut_prims=no,outline_draw=no,outline_ width=0,outline_invert=no
COM sr_fill,polarity=positive,step_margin_x=-0.1,step_margin_y=-0.1,step_max_dist_x=100, step_max_dist_y=100,sr_margin_x=0,sr_margin_y=0,sr_max_dist_x=0,sr_max_dist_y=0,nest_sr =no,consider_feat=no,consider_drill=no,consider_rout=no,dest=affected_layers,attributes=no endif
8、建立一层,并显示该层,然后设为工作层
COM create_layer,layer=in_26x30_top,context=misc,type=signal,polarity=positive,ins_layer= COM display_layer,name=in_26x30_top,display=yes,number=1
COM work_layer,name=in_26x30_top
9、删除层
COM delete_layer,layer=in_26x30_bot
10、关闭当前编辑窗口
COM editor_page_close
11、输出rout层
COM output_layer_reset
COM output_layer_set,layer=$ko_layer,angle=0,mirror=no,x_scale=1,y_scale=1,
comp=0,polarity=positive,setupfile=,setupfiletmp=,line_units=mm,gscl_file=
COM output,job=$JOB,step=panel,format=Excellon2,dir_path=$ko_path,prefix=$JOB.,
suffix=,break_sr=yes,break_symbols=yes,break_arc=no,scale_mode=all,surface_mode=fill,min_b rush=1,units=mm,coordinates=absolute,decimal=no,zeroes=trailing,nf1=3,nf2=3,modal=yes,tool_ units=mm,optimize=yes,iterations=5,reduction_percent=1,x_anchor=0,y_anchor=0,x_offset=0,y_ offset=0,line_units=mm,override_online=yes,canned_text_mode=break
COM ncrset_create,name=_1_tmp__+++_
COM ncrset_cur,job=$JOB,step=panel,layer=$ko_layer,ncset=
COM disp_on
COM origin_on
12、输出gerber274x
COM output_layer_reset
COM output_layer_set,layer=$output_layer,angle=0,mirror=no,x_scale=$scalex,
y_scale=$scaley,comp=0,polarity=positive,setupfile=,setupfiletmp=,line_units=inch,gscl_file= COM output,job=$JOB,step=$sel_step,format=Gerber274x,dir_path=$out274_path,
prefix=$JOB.,suffix=,break_sr=yes,break_symbols=yes,break_arc=yes,scale_mode=all,surface_m ode=contour,min_brush=1,units=mm,coordinates=absolute,zeroes=leading,nf1=3,nf2=5,x_anchor =0,y_anchor=0,wheel=,x_offset=0,y_offset=0,line_units=inch,override_online=yes,film_size_cros s_scan=0,film_size_along_scan=0,ds_model=RG6500
COM disp_on
COM origin_on
13、过滤选择bzp,然后删除
COM filter_reset,filter_name=popup
COM filter_set,filter_name=popup,update_popup=no,feat_types=pad,polarity=positive,
include_syms=bzp
COM filter_area_strt
COM filter_area_end,layer=,filter_name=popup,operation=select,area_type=none,
inside_area=no,intersect_area=no,lines_only=no,ovals_only=no,min_len=0,max_len=0,min_angle =0,max_angle=0
COM get_select_count
set number = $COMANS
if ( $number != 0 ) then
COM sel_delete
endif
COM filter_reset,filter_name=popup
14、用output窗口输出Excellon2文件
COM output_layer_reset
COM output_layer_set,layer=$tk_layer,angle=0,mirror=no,x_scale=1,y_scale=1,comp=0, polarity=positive,setupfile=,setupfiletmp=,line_units=inch,gscl_file=
COM output,job=$JOB,step=panel,format=Excellon2,dir_path=$tk_path,prefix=$JOB.,
suffix=,break_sr=yes,break_symbols=yes,break_arc=no,scale_mode=all,surface_mode=fill,min_b rush=1,units=mm,coordinates=absolute,decimal=no,zeroes=trailing,nf1=3,nf2=3,modal=yes,tool_ units=mm,optimize=yes,iterations=5,reduction_percent=1,x_anchor=0,y_anchor=0,x_offset=0,y_ offset=0,line_units=mm,override_online=yes,canned_text_mode=break
COM ncset_create,name=_1_tmp__+++_
COM ncset_cur,job=$JOB,step=panel,layer=$tk_layer,ncset=
COM disp_on
COM origin_on
15、不保存退出,并交出占用权限
COM check_inout,mode=in,type=job,job=$JOB
COM close_job,job=$JOB
16、输出tgz文件
COM export_job,job=$JOB,path=$tgz_path,mode=tar_gzip,submode=full,overwrite=yes, units=metric,use_placed_comp_only=no
17、在编辑窗口内,把工作层拷贝为另一层
COM sel_copy_other,dest=layer_name,target_layer=slot$layer1,invert=no,dx=0,dy=0,size=0
只列举以上例子,其中很多带变量(以$开头的),注意领会。
碰到以上没列出的子指令,可查询genesis自带帮助文档的0204.pdf的第六章,
或者在Genesis里使用相关功能并录制到对应指令即可。