色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Perl在ASIC中的應用—高級篇(1):正則表達式

454398 ? 2023-02-03 15:52 ? 次閱讀

從今天開始,我們介紹 Perl 在 ASIC 應用中的高級篇。高級篇主要介紹正則表達式、module、package、面向對象、進程等。

正則表達式最常見的有兩個應用,高級查找和替換。而替換的核心部分也是查找。

那么,我們如何定義這個查找(或者說叫匹配)的規則。匹配的基本語法是:


m/.../


匹配規則就寫在 m 開頭的兩個斜杠之間。

定義規則中的特殊字符稱為元字符。元字符有以下這些(只列了常用的,基本夠用了):


分類一:(轉義)


/ 反斜杠加接元字符表示轉義,比如 /+, /*, /?等,表示這些字符本身


/b 匹配單詞邊界


/B 非單詞邊界


/d 數字,就是 0-9 中的任一個字符


/D 非數字


/w 匹配大小寫字母和下劃線


/W 非大小寫字母和下劃線


/s 匹配空白字符,包括空格、制表符等


/S 非空白字符


/n 換行符,ASCII 的 0x0A


/t 制表符


/x /x 后接十六進制數,匹配這個數的 ASCII 符號

分類二:


^ 匹配開頭


$ 匹配結尾


. 區配除換行符以外的所有字符

分類三:(匹配次數)


* 匹配零次或多次


+ 匹配一次或多次


? 匹配零次或一次

分類四:括號(), [], {}


() 圓括號表示取值,把()里的值存到$1, $2, ... , $n 里


[] 表示多選一。如[abc]匹配 a 或 b 或 c。連續的字符可以簡寫,如[a-z],[0-9]


[^] 表示[]里列出的其它字符


{n} 匹配 n 次


{n,m} 匹配 n 到 m 次


| 分組,如 m/bill|mike/,表示 bill 或 mike


? 當?跟在*,+,?等后面時,表示非貪婪模式。如,


my $test = "aaaaabb";


$test =~ m/a+?/;


匹配的結果是"a",而不是"aaaaa"



Perl 的綁定操作符


=~ 表示滿足匹配


!~ 表示不滿足匹配


如:


if($tc =~ m/^tc_/){ ... } 表示如果$tc 變量以 tc_ 開頭,則執行{}里的語句。


if($tc !~ m/^tc_/){ ... } 表示如果$tc 變量不以 tc_ 開頭,則執行{}里的語句。

正則表達式的匹配模式
i 忽略大小寫


m 多行處理,即字符串中的換行符把字符串分為多行。匹配時不能越行


s 單行處理,在這個模式下,元字符 . 可以匹配換行符


x 允許正則表達式換行和加注釋,忽略空白字符


g 查到全局所有可能的匹配,即會匹配多次


e 用于替換,表示替換的新值要先計算,如

s/(ab+c)/&replace($1)/e

表示查換 ab+c,并把找到的結果傳給 replace()函數,用函數的返回值來替換。這種方法可用于復雜的查找替換。這種用法,我在編輯 APR 的 IO 坐標文件時實際用過,比 GVIM 或者 Emacs 的列填充更強大。

下面舉幾個例子:
1. m/(output|input|inout)/s+wire|reg/s*(/[.*/])?(/w+),/ 腳本提取 RTL 端口定義


2. s//s*(/w+)/s*/.$1/t/t($1)/ 可用來模塊例化時,自動連接端口


3. my @testcase = `ls`;


foreach my $tc (@testcase){


if($tc =~ m/^tc_/){


... #查找目錄下的"tc_"開頭所有的文件名,在寫仿真腳本時常用到


}


}

4. if($pwd =~ m///(trunk|tags|release)$/){


... #通過腳本確認當前目錄是否是項目根目錄


}

Perl 正則表達式是非常博大精深的,需要在工作中慢慢積累。所以,今天的練習題多一點,主要是想多提供一些實際使用場景,并自己動手解決問題。

練習題:
1. 用正則表達式從 RTL 里抓取所有寄存器的路徑。(用于自動產生 UVM 寄存器模型)


2. 用正則表達式把門級網表拆分成多個僅包含單個 module 的文件。


3. 用正則表達式把 PR 網表中大小寫敏感的 net 改成大小寫不敏感。(用于 calibre 做 LVS)

下一次,我們將開始介紹 module。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • asic
    +關注

    關注

    34

    文章

    1204

    瀏覽量

    120584
  • PERL
    +關注

    關注

    0

    文章

    14

    瀏覽量

    10401
收藏 人收藏

    評論

    相關推薦

    Linux grep命令詳解

    Linux grep命令是一種非常常用的文本搜索工具,它可以在給定的文件搜索匹配的字符串,并輸出匹配的行。grep是全稱“global search regular expression print”,可以識別正則表達式,并使用正則表
    的頭像 發表于 12-25 09:39 ?148次閱讀

    詳解nginx正則表達式

    前言,我這里驗證的nginx-v1.23.2單機環境下的nginx正則表達式、location路徑匹配規則和優先級。
    的頭像 發表于 12-03 09:59 ?262次閱讀
    詳解nginx<b class='flag-5'>中</b>的<b class='flag-5'>正則表達式</b>

    Verilog表達式的位寬確定規則

    很多時候,Verilog中表達式的位寬都是被隱式確定的,即使你自己設計了位寬,它也是根據規則先確定位寬后,再擴展到你的設計位寬,這常常會導致結果產生意想不到的錯誤。
    的頭像 發表于 10-22 15:41 ?548次閱讀
    Verilog<b class='flag-5'>表達式</b>的位寬確定規則

    通過工業智能網關實現中間變量表達式的快速配置

    ,出現告警可能是多個變量達到條件而觸發的,就需要對中間變量進行配置。 對此,物通博聯提供基于工業智能網關實現中間變量表達式的快速配置操作。用戶可以根據生產現場的應用需求,靈活配置中間變量表達式,實現多參數、多條件
    的頭像 發表于 10-08 17:10 ?269次閱讀
    通過工業智能網關實現中間變量<b class='flag-5'>表達式</b>的快速配置

    nginx正則表達式和location路徑匹配指南

    前言,我這里驗證的nginx-v1.23.2單機環境下的nginx正則表達式、location路徑匹配規則和優先級。
    的頭像 發表于 09-29 16:02 ?854次閱讀
    nginx<b class='flag-5'>中</b>的<b class='flag-5'>正則表達式</b>和location路徑匹配指南

    求助,以下恒流源電路Io的計算表達式怎么計算?

    這個恒流源電路Io的計算表達式怎么計算,求給出詳細計算過程
    發表于 08-22 08:16

    TestStand表達式中常用的語法規則和運算符使用

    TestStand也有自己的語言嘛?回答這個問題之前大家可以想一下使用TestStand時有一個和語言密切相關的屬性。沒錯那就是表達式(Expressions),在這篇文章,小編
    的頭像 發表于 08-15 18:10 ?1577次閱讀
    TestStand<b class='flag-5'>表達式</b>中常用的語法規則和運算符使用

    Java表達式引擎選型調研分析

    1 簡介 我們項目組主要負責面向企業客戶的業務系統, 企業的需求往往是多樣化且復雜的,對接不同企業時會有不同的定制化的業務模型和流程。 我們在業務系統 使用表達式引擎,集中配置管理業務規則,并實現
    的頭像 發表于 08-15 14:25 ?376次閱讀
    Java<b class='flag-5'>表達式</b>引擎選型調研分析

    鴻蒙原生應用元服務開發-倉頡基本概念表達式(二)

    }, ${y}\") } } 運行以上程序,將輸出: 1, 2 3, 4 5, 63.迭代變量不可修改 for-in 表達式的循環體,不能修改迭代變量,例如以下程序在編譯時
    發表于 08-09 14:26

    鴻蒙原生應用元服務開發-倉頡基本概念表達式(一)

    程序能夠表達更復雜的邏輯,倉頡,這種用來控制執行流的語言元素就是條件表達式和循環表達式
    發表于 08-08 10:27

    求助,有關表達式選項卡(ADS)的問題求解

    你好。 我看不到表達式選項卡的某些變量值。 數組的大小顯然是 256,但我最多只能看到 100。 請問問題出在哪里? 謝謝。
    發表于 06-03 06:23

    mapgis屬性篩選表達式

    篇文章,我們將詳細討論MapGIS的屬性篩選表達式,包括語法、操作符和函數等。 屬性篩選表達式是一種MapGIS中用于指定要素選擇條件的代碼。它由一組操作符、函數和屬性字段組成,用
    的頭像 發表于 02-25 10:58 ?1683次閱讀

    西門子博途的算術表達式

    算術表達式既可以是一個數字值,也可以是由帶有算術運算符的兩個值或表達式組合而成。 算術運算符可以處理當前 CPU 所支持的各種數據類型。如果在該運算中有 2 個操作數,那么可根據以下條件來確定結果的數據類型。
    的頭像 發表于 01-24 11:36 ?1041次閱讀

    你還不會gvim正則表達式?一文搞懂!

    gvim正則表達式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。
    的頭像 發表于 01-19 16:47 ?1230次閱讀

    機械能守恒定律三種表達式

    。 機械能守恒定律可以用三種不同的表達式來描述。首先是最常見的“動能和勢能之和不變”表達式。一個封閉系統內,如果沒有外力做功,那么系統中所有物體的動能之和和勢能之和將保持不變。這意味著一個物體的機械能不會因為內
    的頭像 發表于 01-16 16:58 ?1432次閱讀
    主站蜘蛛池模板: 国产精品久久久久久精品...| 国产精品99AV在线观看| 国产精品亚洲精品爽爽| 日本G奶乳液汁| CHINA末成年VIDEO学生| 免费看毛片的网址| 97国产视频| 男女作爱在线播放免费网页版观看| 中文字幕亚洲欧美在线视频| 九九热最新视频| 诱人的女邻居9中文观看| 久久国产成人午夜AV影院无码| 影音先锋xfplay影院av| 精品无码久久久久久久久| 影音先锋av天堂| 麻豆COMCN| 99在线国产视频| 色色色999| 果冻传媒MV免费播放在线观看| 亚洲综合国产精品| 毛片免费观看视频| 成年妇女免费播放| 小SB几天没做SAO死了H| 久久青青草视频在线观| VIDEOSGGRATIS欧美另类| 五月丁香婷姐色| 九九在线精品视频| 99久久爱re热6在线播放| 色婷婷激婷婷深爱五月小蛇| 国产亚洲人成网站在线观看播放| 伊人AV一区二区三区夜色撩人| 农村脱精光一级| 国产精品系列在线观看| 一级做a爰片久久毛片潮喷动漫| 暖暖日本手机免费完整版在线观看| 动漫美女喷水| 伊人狠狠丁香婷婷综合尤物| 暖暖日本大全免费观看| 国产午夜精品片一区二区三区| 51久久夜色精品国产| 天天躁日日躁狠狠躁AV麻豆|