微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > PCB设计问答 > Genesis学习交流 > GEN脚本求助

GEN脚本求助

时间:10-02 整理:3721RD 点击:
内层编号为LX-SIG,其中X是层数,当X是10时,代码 set layertop = ` echo $LAYER4 | cut -c2-3 `
   set num = `echo " scale = 0 ;( $num1 * 10 + $num2 ) " | bc`     中$LAYER4代表当前工作层,$num1是当x是两位时的十分位,$num2是个位,当x=10时,为什么变量layer和num的値老是1呀,x=11时就是对的,就是只要个位数是0,最终值就是错的,请赐教!

奇怪的脚本问题

set num = `echo " scale = 0 ;( $num1 * 10 + $num2 )/1 " | bc`  
加上/1试下

内层编号格式为LX-SIG,其中X是层数,当X是任意自然数时,
set layertop = `echo $LAYER4 | cut -f1 -d'-' | cut -c 2-`
就能取得层序数;
cut用法要去了解透彻才好,unix命令和c shell也是很强大的
BTW:不要去计算,c shell经常省掉前面的0

BTW:不要去计算,c shell经常省掉前面的0,我现在情况是省掉后面的0,BTW是什么意思呀?

你那个表达式当层数是两位数时也能取得层数吗?

我试下吧,应是对的!

试过了,表达式没问题,但当层数是10的倍数时仍然是错的,比如层数是10层数时,上面两个变量的值都等于1,当层数等于20时以上两个变量的值都于2,不知为什么!总之只要个位是0就给省掉了

set layertop = ` echo $LAYER4 | cut -c2-3 `
   set num = `echo " scale = 0 ;( $num1 * 10 + $num2 ) " | bc`  
这两句有什么关联?看不出来啊,把代码发给我看下
不知道你想要达到什么目的

if ( $layer_num < 10 ) then
set layertop = ` echo $LAYER4 | cut -c2 `
set num = ` echo $LAYER4 | cut -c2 `  
endif                                                           
if ( $layer_num >= 10 ) then
set num1 = ` echo $LAYER4 | cut -c2 `
set num2 = ` echo $LAYER4 | cut -c3 `
if ( $num2 != - ) then
   set layertop = ` echo $LAYER4 | cut -c2-3 `
   set num = `echo " scale = 0 ;( $num1 * 10 + $num2 ) " | bc`
else
   set layertop = ` echo $LAYER4 | cut -c2 `
   set num = ` echo $LAYER4 | cut -c2 `
endif
endif
这是你的源代码,其中
if ( $num2 != - ) then
错了,无法比较的
应为if ( $num2 != "- ") then
还是建议下面这种写法比较简洁:
set layertop = `echo $LAYER4 | cut -f1 -d'-' | cut -c 2-`

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top