car拜候list的第一個元素
Function
Number: 2
[.precision] = number of characters to be printed
Meaning
n - numeric
lly = cadar( bBox)
"hello""hello""hello"
nth用索引訪問list的某個元素,注意索引從0入手下手
"hello"
Merge two lists with the append function.
3). 節制語句:if(…then…else….),when,unless,case,cond,迴圈語句for,forecah等,控制語句和C語言近似,都是先判定某個變數或運算式是不是為真,然後履行下面的操作,需要注意的是:
nequal
("Number:" 2)
B - Bounding box list (Ignores width and precision.)
>
d - decimal(integer)
輸出到檔/tmp/myFile2.
在版圖設計中,關於座標的list是最長見的,它是一組2維的list,常見的表示方式有:
Arguments
Cadence skill語言簡介
nth( 1 numbers ) => 2
)
A). 建立list有以下幾種根基的方式:
Skill說話的很多地方和C說話差不多,如變數,函數,節制構造,輸入輸出等,詳細的介紹可以參考User Guide,這裏只作簡單介紹。
nil
lowerLeft = 300:400
close( myPort )
for( i 1 3
3.3. Skill List是Skill基於Lisp(List Processing)說話的體現,它是skill資料物件的一個有序荟萃,skill資料甚至程式自己都可以看做是一個list,這是C說話中所沒有的概念。下面是skill list的簡單例子
numeric
[width] = minimum number of character positions
打開~/.cshrc,輸出檔的每一行
length較量爭論list所包含元素的個數
Skill程式就像一個list表,類似Lisp語言,程式的操作就像運算元據(list)一樣,可以生成,修改,求值等
1. Skill說話和Lisp語言的關係
返回的後果是最後一個計較的運算式,因此與/或邏輯操作可以取代繁瑣的if / when等控制語句,例如:C語言中的操作符, a>b ? c=a : c=b; 即c取a b中較大的一個Skill中沒有雷同的操作符,可以用下面語句來完成此操作:
car( cdr( car( cdr( ...]
member( 4 numbers ) => nil
<=
( strcat "Hello" "," " everyone" "!" ) ;類Lisp說話的花樣
string list
' 暗示的list嚴格按字面意思
println( list( "Number:" i) myPort )
cond(
member搜檢指定的元素是不是在指定的list中,它只搜檢頂層元素的元素,返回值是從搜到值最先到結尾的list
)
if( (n == 1 || n == 2) then
SKILL說話支援一套近似C語言的語法,初學者有了一定的C說話根本,入門是很輕易的。Cadence的工具可以通過CIW,Bindkey,Form,Menu等多種體例挪用skill函數,送到skill說話的解釋器來履行各類操作。
Return Value
conversion_code :
Using car and cdr with Bounding Boxes
L - list (Ignores width and precision fields.)
yValue = 400
Sample Logical Operators
("Number:" 1)
Function
=>*Error* strcat: argument #2 should be either a string
Skill語言有n多函數,加上眾多東西的介面函數,可以用不計其數來形容,初學者可能會感應蒙頭轉向,無從下手。其實只要瞭解基本的變數,節制語句,輸入輸出和一些經常使用工具的基本函數就能夠了,大大都函數都可以用到再查閱翻譯入手下手學習skill時可以細心看看SKILL Language User Guide,其他的可以用到時再查閱,這裏列出幾個常常會用到的文檔:SKILL Language Reference -Skill說話相關的函數,Cadence User Interface SKILL Functions Reference-Cadence應用程式圖形介面介面函數,Design Framework II SKILL Functions Reference,SKILL Custom Layout Reference,SKILL Schematic Composer Reference別離是Cadence的Design Framework II,邦畿,電路的介面函數。
car
要害字(其實也是skill的函數)和左括弧之間不克不及有空格,
bBox = '(( 300 400 ) ( 500 450 ))
xCoord( aCoordinate ) => 300
for( i 1 3 print( "hello" )) ;Prints hello three times.
B). 會見list或list中某些元素的方式:
( t ++miscCount )
!=
for和foreach是迴圈節制語句,for和C語言中的根基一樣,foreach經常用於對list的每一個元素作迴圈操作,每一個迴圈順次把各個元素的值賦給一個變數,以下面的例子,你會注意到foreach的返回值是迴圈的list
Operator
urx = caadr( bBox)
C). 關於xy座標或bBox邊界list的拜候
nil && t
x-coord of lower left corner
strcat "Hello" "," " everyone" "!" ;上面的括弧可以省略
)
inPort = infile( "~/.cshrc" )
3.1. Skill的變數不需要事前聲明,Skill第一次用到是會主動生成變數翻譯變數可以由字元、數位、“_” 和 “?” 構成,注意第一個字元不克不及是數位和”?”。由於Cadence所開辟的Skill中的變數、函數都是第一個字母小寫,以_為開首的是Cadence的專用函數,為了避免衝突,建議人人函數和變數定名都以大寫字母開首。
3.2. Skill的函數的調用體例有三種,
運行cdsdoc&, 點擊Search打開Cadence help的搜刮功能,對象會自動啟動一個http服務,同時打開搜刮網頁,啟動辦事後,你也能夠在windows的IE裏輸入http://hostname:9000/search.htm,一樣可以打開搜索頁面,需要注意的是,在C:\WINNT\system32\drivers\etc\hosts檔中需要插手hostname對應的ip,如:
3). 從檔讀取資料:intfile定義輸入介面檔,gets一次從介面檔讀取一行字串,fscanf按照指定的格式從介面檔讀取,close封閉打開的介面
a. 軟體沒回應,比如在CIW中輸入段代碼,軟體沒有反應,什麼結果也沒有,通常爲因為( )或” “不成對釀成的,一般可以通過鍵入 ] 來解決,它透露表現增補完舛訛稱的括弧(可以取代隨便多個右括弧),假如還沒有回應,鍵入 “] 這時候大部分情形下,系統會有回應
Sample Relational Operators
(defun fibonacci (n)
3 < 5
t
3 < 2
( "line" ++lineCount )
car( numbers ) => 1
result = '( 2 3 ) => ( 2 3 )
numeric
<
((or (equal n 1) (equal n 2)) 1)
(1 2 3) A list containing the integer constants 1, 2, and 3
if…then…else的then是不能省略的(除只有一個if,沒有else的情況),
car( ... )
else
)
car( cdr( ... ) )
t || nil
用list號令和 ' 來表示一個bBox,list饬令先計算變數或運算式,然後賦給list,' 表示的list和字面的一樣,不管帳算變數或者運算式的值
and
a = 1 => 1
Skill函數供應兩種默示法,一種是代數示意法,現在大多數說話採取這類體式格局,即 func( arg1 arg2 ...),另一種是首碼透露表現法,近似於Lisp說話,即(func arg1 arg2 ...)翻譯這裏舉個例子作為對比:
5 > 3
t
=> ( "rect" "polygon" "rect" "line" )
"hello"
shapeTypeList = '( "rect" "polygon" "rect" "line" )
ury = cadadr( bBox) )
如: strcat ( "Hello" "," " everyone" "!" ) println( nextLine ) |
)
固然還有其他眾多工具的介面函數,因此Skill需要方便的函數查閱方式,這裏列出3種: Expression car( car( ... ) ) or ( condition3 exp31 exp32 ... ) aCoordinate = xValue:yValue => ( 300 400 ) car( car( cdr( ... ) ) ) && ... abc != "ABc" [-] = left justify ) ;case |
||||||||||||||||
for( i 1 3 println( "hello" )) ;Prints hello three times. numbers = '( 1 2 3 ) => ( 1 2 3 ) |
|||||||||||||||||
( t expN1 expN2 ... ) nil |
打開~/.cshrc,輸出檔中的每個字串 when( inPort Number: 3 upper right corner b = 2 => 2
|