加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 控制流
    • 控制流 if
    •  
    • 循環(huán)指令 -foreach
    •  
    • 循環(huán)控制指令 -break
    •  
    • 循環(huán)控制指令 -continue
    •  
    • 循環(huán)控制指令 -while
    •  
    • 循環(huán)控制指令 -for
    •  
    • 過程函數(shù)
    • 過程函數(shù) -proc
    •  
    • 全局變量和局部變量
    •  
    • 正則匹配
    • 正則匹配指令 -regexp
    •  
    • 捕獲變量
    •  
    • 實例講解
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

《數(shù)字集成電路靜態(tài)時序分析基礎》筆記②

2020/11/29
123
閱讀需 7 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

網(wǎng)絡課程《數(shù)字集成電路靜態(tài)時序分析基礎》的筆記

地址:https://www.iccollege.cn/portal/courseDetail/193.mooc

控制流

控制流 if

  • 語法格式:
if {判斷語句}{
腳本語句
}elseif{判斷語句}{
腳本語句
}else{
腳本語句
}
  • 注意,上例中腳本語句得'{'一定要寫在上一行,因為如果不這樣,TCL 解釋器會認為 if 命令在換行出已經(jīng)結(jié)束,下一行會被當成新的命令,從而導致錯誤

  • 例題:判斷一個列表{0 1 2 3 4}的長度是大于 3,還是等于 3,還是小于 3?

?

循環(huán)指令 -foreach

語法格式:foreach 變量 列表 循環(huán)主體

功能:從第 0 個元素開始,每次按順序取得列表的一個元素,將其賦值給變量,然后執(zhí)行循環(huán)主體一次,直到列表最后一個元素

?

?

循環(huán)控制指令 -break

  • 語法格式:break 功能:結(jié)束整個循環(huán)過程,并從循環(huán)中跳出

?

循環(huán)控制指令 -continue

  • 語法格式:continue 功能:僅結(jié)束本次循環(huán)

?

循環(huán)控制指令 -while

  • 語法格式:while 判斷語句 循環(huán)主體功能:如果判斷語句成立(返回值非 0),就運行腳本,直到不滿足判斷條件停止循環(huán),此時 while 命令終端并返回一個空字符串

?

循環(huán)控制指令 -for

  • 語法格式:for 參數(shù)初始化 判斷語句 重新初始化參數(shù) ?循環(huán)主體功能:如果判斷語句返回值非 0 進入循環(huán),執(zhí)行循環(huán)主體后,再重新初始化參數(shù)。然后再次判斷,直到判斷語句返回值為 0,循環(huán)結(jié)束

?

過程函數(shù)

過程函數(shù) -proc

  • 語法格式:proc 函數(shù)名 參數(shù)列表 函數(shù)主體功能:類似 C 語言中的函數(shù)。即用戶自定義的功能,方便多次調(diào)用

?

全局變量和局部變量

  • 全局變量:在所有過程之外定義的變量局部變量:在過程中定義的變量,只能在過程中訪問,退出過程會被自動刪除指令 global,在過程內(nèi)部引用全局變量

?

正則匹配

  • 定義:正則表達式是一種特殊的字符串模式,用來匹配符合規(guī)則的字符串正則表達式的 \w,用來匹配一個字母、數(shù)字、下劃線正則表達式的 \d,用來匹配一個數(shù)字

?

正則匹配 - 量詞

  • \w\w\w\d\d\d 這種寫法過于繁瑣,可以使用量詞表示,常用量詞有三種

  • *和+的區(qū)別:包不包含 0 和 1

  • ?,0 或 1

?

正則匹配 - 錨位

  • 錨位,用來知識字符串中的開頭和結(jié)尾的位置,使我們能夠匹配到正確的字符

?

正則匹配 - 其他字符

  • 常用的其他字符還有 \s 和 .\s 表示空格

  • . 表示任意字符,不確定具體使什么字符就可以用 . 表示。例如一直字符串為"XXX 空格 XXX 空格 XXX"(X 為未知字符)。用 .+\s.+\s.+就可以匹配

正則匹配指令 -regexp

  • 語法格式:regexp?switches?exp string?matchVar? ?subMatchVar subMatchVar...?功能:在字符串中使用正則表達式匹配 switches:-nocase 將字符串的大寫都看成小寫 exp 正則表達式 string 用來表示進行匹配的字符串 matchstring 表示用正則表達式匹配的所有字符串 sub1 表示正則表達式中的第一個子表達式匹配的字符串 sub2 表示正則表達式中的第一個子表達式匹配的字符串

?

實例講解

  • 如何匹配字符串"abc456"

如何匹配一個以數(shù)字開頭并且以數(shù)字結(jié)尾的字符串

?

捕獲變量

  • 通過()可以捕獲字符串,例如捕獲字符串"Snow is 30 years old"中的 30?

  • 一次捕獲多個字符串,例如將"Snow is 30 years old"中的 Snow 和 30 一次捕獲

?

文本處理

主要掌握三個指令 open、gets、close

  • open
    • 語法格式 open 文件 打開方式(r 讀,w 寫)功能 打開文件

    gets

    • 語法格式 gets fileid 變量名功能 gets 讀 fileid 標識的文件的像遺憾,并把該行賦給變量,并返回該行的字符數(shù)(文件尾返回 -1)

    close

    • 語法格式 close fileid 功能 關閉文件

?

實例講解

  • 讀入整個文件過程

  • 一個完整的寫入文件過程

  • 現(xiàn)有文本 file.txt 其內(nèi)容如下。請編寫 TCL 腳本求出所有 slack 值之和吧

set num 0
set INFILE [open file.txt r]
while {[get $INFILE line]>=0}{
if{[regexp {^Slack\s+=\s+(-?\d+\.?\d+)} $line total slack]}{
set num [expr $sum +$slack]
}
}
close $INFILE
puts $sum

相關推薦

電子產(chǎn)業(yè)圖譜