999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

集成電路設計與EDA技術課程專業(yè)能力培養(yǎng)實踐

2023-06-22 02:44:23楊怡雯曾梓萱趙巖李長庚
現(xiàn)代信息科技 2023年2期
關鍵詞:課程教學

楊怡雯 曾梓萱 趙巖 李長庚

摘? 要:Verilog HDL作為描述數(shù)字電路的通用語言,在大規(guī)模設計中一般采用層次化和結構化的設計方法。為了在獲得較優(yōu)的電路面積結果的同時提高綜合后輸出網(wǎng)表的可讀性,使用Python和正則表達式對Verilog代碼進行層次化展平處理,用模塊內(nèi)的設計代碼替換實例化語句。打平層次結構后,設計代碼變?yōu)闆]有層次的、不帶參數(shù)、不帶可選擇配置的扁平鏈式結構,提高了代碼的可維護性。此實踐項目難度適中,有助于學生深入理解Verilog HDL的語法結構和EDA軟件的工作原理,提高了學生的設計實踐能力。

關鍵詞:正則表達式;Python;代碼扁平化;課程教學

中圖分類號:TP39;G434? 文獻標識碼:A? 文章編號:2096-4706(2023)02-0171-04

Integrated Circuit Design and EDA Technology Course Professional Ability Training Practice

—RTL Design Hierarchical Flattening Processing

YANG Yiwen, ZENG Zixuan, ZHAO Yan, LI Changgeng

(School of Physics and Electronics, Central South University, Changsha? 410083, China)

Abstract: As a general language for describing digital circuits, Verilog HDL generally adopts hierarchical and structured design methods in large-scale designs. In order to obtain better circuit area results while improving the readability of the synthesized output netlist, Python and regular expressions are used to hierarchically flatten the Verilog code, replacing instantiated statements with in-module design code. After flattening the hierarchical structure, the design code became a flat chain structure without hierarchy, parameters, optional configuration, which improves the maintainability of the code. The difficulty of this practice project is moderate, which helps students to deep understand the grammatical structure of Verilog HDL and the working principle of EDA software, and improves students' design practice ability.

Keywords: regular expression; Python; code flattening; course teaching

0? 引? 言

電子設計自動化(Electronic Design Automation, EDA)是現(xiàn)代電子系統(tǒng)設計有效的工具[1]。隨著設計規(guī)模越來越大,集成電路尤其是大規(guī)模數(shù)字集成電路的設計過程不僅包含邏輯和電路設計,其所采用的半定制電路設計方法也高度依賴EDA設計工具和設計流程來保證設計的正確性。EDA技術與集成電路相輔相成,先進的EDA技術可以設計大規(guī)模的集成電路,而大規(guī)模的集成電路則又支持更先進的EDA技術開發(fā),兩者在數(shù)字化和智能化的現(xiàn)代電子系統(tǒng)開發(fā)中起著支撐作用[2]。EDA技術應用充分體現(xiàn)了數(shù)字電子設計中自頂向下的演繹過程[3],充分理解軟件工具的行為,有助于提高學生的設計實踐能力。在專用集成電路設計課程的教學中,作者組織學有余力的同學參與科研項目,使用Python完成了EDA工具中讀入RTL代碼時的一個預處理功能——層次化設計的展平處理。

對于較大規(guī)模的設計,一般采用層次化和結構化的設計方法。這種設計方法可以很好地維持設計邊界和層次,符合人的思維方式并利于復用代碼。但是EDA邏輯綜合工具在把RTL描述轉換為門級網(wǎng)表的時候,會以每一個模塊的邊界作為默認的邏輯優(yōu)化邊界,模塊劃分過小或者層次過多的時候,不能獲得最優(yōu)的電路面積結果。若在綜合命令中加入“-flat”選項,綜合工具會將所選擇的層次結構打平后再進行優(yōu)化,在獲得較優(yōu)的面積結果的同時,輸出網(wǎng)表的可讀性較差,會給調(diào)試工作帶來不便。

硬件描述語言(HDL)是一種用形式化方法來描述數(shù)字電路和設計數(shù)字邏輯系統(tǒng)的語言[4]。由于絕大多數(shù)的數(shù)字集成電路設計以及FPGA設計都以VerilogHDL的代碼為載體,本文針對Verilog HDL語法,在層次化結構的展平處理中,主要完成以下內(nèi)容:用模塊內(nèi)的設計代碼替換實例化語句,主要是模塊內(nèi)代碼信號的唯一化和輸入輸出的替換操作;對于帶有parameter的參數(shù)化設計,將實例化時的參數(shù)變成沒有參數(shù)的設計;對于帶有generate的可配置化設計,實例化時從可配置的代碼中選擇代碼進行提取;對于帶有define和ifdef的宏定義參數(shù),判斷決定代碼保留。經(jīng)層次結構打平后,代碼使用扁平的鏈式結構。

1? 處理對象及工具

“模塊”是Verilog的基本設計單元,在一個模塊中引用另一個模塊,對其端口進行關聯(lián),叫作模塊的例化。在一個頂層設計中實例化子模塊電路,類似于編程中在主函數(shù)調(diào)用子函數(shù)。模塊的例化建立了描述的層次,一個復雜的電路往往通過模塊嵌套形成了復雜的層次結構。而去層次化則類似于編程中將用調(diào)用函數(shù)實現(xiàn)的代碼轉換為不用函數(shù),而是直接在主程序中實現(xiàn)各個函數(shù)的內(nèi)部代碼。經(jīng)過去層次化后,設計代碼變?yōu)榇蚱降?、沒有層次的、不帶參數(shù)、不帶可選擇配置的代碼。在Python中,re模塊就是一個用于處理正則表達式的模塊[5]。鑒于Python強大的文本處理能力,本文采用Python和正則表達式對Verilog HDL代碼的文本進行處理。

正則表達式被提出時,主要用于描述正則集代數(shù)。它是提供計算機操作和檢驗所要抽取的字符串數(shù)據(jù)的一種強大的工具,是一串由特定意義的字符組成的字符串,提供了一種從字符集合中搜尋特定字符串的規(guī)則。正則表達式可以運用于多種操作系統(tǒng)中,目前很多計算機語言都支持正則表達式匹配,如C++、PHP、Java等。

正則表達式最基本的3種功能包括匹配、替換和提取。匹配功能用于判斷文本里面是否有符合要求的字符,將不同的字符按照匹配內(nèi)容的不同進行分組,如在此項目實踐中將宏定義的標識符和內(nèi)容根據(jù)“`”符號區(qū)分。替換功能用于在文檔中使用匹配模式來標識特定文字,然后進行刪除或進行替換,如刪除注釋、端口名和參數(shù)聲明名稱的替換、generate語句中帶有$符號的標識符和begin/end語句的替換。提取功能用于從字符串中提取子字符串,如獲取需要的變量名稱、模塊名稱、判斷語句、模塊內(nèi)容等。Verilog繼承了C語言的多種操作符和結構,其本身就是一系列字符串組成的文本,在信息抽取的過程中完全適應正則表達式的特點。

正則表達式由普通字符和特殊字符組成,在正則表達式中,可以用方括號括起若干個字符來表示一個元字符(特殊字符)。同時正則表達式支持限定符的概念。限定符指定輸入中必須存在字符、組或字符類的多少實例才能找到匹配項,這些限定符可以指定正則表達式的一個給定組間需要出現(xiàn)多少詞才能滿足匹配,因而可以適應一些不確定情況[6]。正則表達式常見的元字符和限定符如表1所示。

2? 處理和實現(xiàn)過程

2.1? 方法總述

首先讀入頂層模塊文件和子模塊文件。如有宏定義文件,則對宏定義文件先進行處理,提取宏定義的名字和參數(shù),在子模塊中進行名字和參數(shù)的替換。對于每一個讀入的子模塊文件,若該子模塊在頂層模塊中被例化,則對子模塊文件進行處理,提取所需內(nèi)容,并在頂層模塊找到例化該模塊的部分,提取對應內(nèi)容進行替換。整體流程如圖1所示。

2.2? 處理宏定義文件

對于需要方便改動的常量和參數(shù),可以使用宏定義的方式來引用。使用宏可以在不修改源代碼的情況下修改設計,在IP核生成和流程測試中很有用,不僅可以保證代碼具有良好的可配置性,還能提高代碼的規(guī)范性和可讀性。由于Verilog中宏定義往往采用一個單獨的文件,提取文件中宏定義的名字和參數(shù),替換掉文本內(nèi)容中的宏定義的變量,進行宏展開。例如,宏定義文件中通過語句“`define `RST_NR 0”來定義參數(shù)“RST_NR”的值為0,依次提取參數(shù)名稱為“RST_NR”,參數(shù)的值為0。再將子模塊中的參數(shù)名稱替換成參數(shù)的值,例如將語句“parameter? nr=`RST_NR”替換成“parameter? nr=0”。

2.3? 處理子模塊文件

對子模塊的文本進行處理。為了便于處理,去掉文本中的單行注釋和多行注釋。此外,要對文本進行內(nèi)容的提取,如圖2所示,具體步驟為:將要處理的①模塊名稱單獨提取出來,方便再頂層模塊中找到對應的內(nèi)容;對帶參數(shù)的模塊進行例化時,為方便進行參數(shù)的修改,應提?、趨?shù)名稱和③參數(shù)的值;信號端口通常采用的是名稱關聯(lián)的關聯(lián)方式,④端口名稱是需要提取出來的;模塊內(nèi)會聲明一些新的變量,為了防止重復調(diào)用相同模塊導致變量名稱重復的問題,也要提取⑤變量名稱進行后續(xù)處理;整個模塊內(nèi)容去除參數(shù)聲明、端口列表和端口聲明,只保留⑥數(shù)據(jù)流語句和行為語句。每一個標號內(nèi)容都對應圖2標號的示例。

當例化多個相同的模塊時,一個個模塊的手動例化會比較煩瑣。用generate語句進行多個模塊的重復例化,可大大簡化程序的編寫過程。generate語句也可允許在細化期間對語句進行條件選擇,根據(jù)傳遞參數(shù)的不同值對執(zhí)行的代碼進行選擇。處理該部分內(nèi)容需要先將整個generate語句部分提取出來,即以“generate”開始至以“endgenerate”結束的部分。該部分的處理難點在于存在多個條件語句和過程結構語句嵌套和并列的情況,造成處理時難以將每個語句begin標志和end標志對應的問題。該問題會讓提取對應參數(shù)所選擇的正確語句變得困難。因此,本文引入利用棧的數(shù)據(jù)結構和計數(shù)器的處理方法,具體流程圖如圖3所示。

為了更加直觀的描述該方法,舉例如表2所示。

該方法將對應的begin和end一一配對,解決了難以選取正確的文本內(nèi)容的問題。依次提取判斷語句的情況,因Python與Verilog中表示“且或非”的方法不同,因此需將判斷語句轉換為Python語法中的語句,如表3所示。

通過以上代碼進行替換后將再進行判斷,提取為真語句后的標識符,截取該標識符之間的內(nèi)容,即為所需,對于表2中的示例,若“st==1”為假,則截取“q_r<={bw{1'b0}};”。最后需將標識符還原成begin和end語句。對于嵌套和并列的generate語句,也可采用上述標識符的方法來區(qū)分不同的“generate”和“endgenerate”。

2.4? 處理頂層模塊文件

對頂層模塊進行文本處理。出于同樣理由的考慮,去掉文本中的單行注釋和多行注釋。每讀入一遍子模塊,就對頂層模塊處理一遍,如圖4所示,具體步驟為:根據(jù)讀入的子模塊的①模塊名稱,對頂層文件中該模塊的內(nèi)容進行截取,即⑦模塊內(nèi)容,所有的替換處理都是針對該子模塊中⑥數(shù)據(jù)流語句和行為語句的內(nèi)容;對于帶參數(shù)例化的模塊,考慮到參數(shù)例化存在只重置部分參數(shù)的情況,將需要新寫入的⑧新參數(shù)名稱和⑨新參數(shù)值提取出來,根據(jù)⑧新參數(shù)名稱進行對照,用⑨新參數(shù)值替換掉②參數(shù)名稱,未作替換的參數(shù)采用原來③參數(shù)的值替換掉②參數(shù)名稱;模塊例化通常使用按名字進行例化的方式,因為這種方式不考慮順序,不容易出錯,提取出例化模塊的端口名稱,即⑩例化端口名稱,對應④端口名稱將其一一替換成⑩例化端口名稱,而在實際的項目中,往往會看到未連接的端口,這些未連接到例化模塊中的端口按高阻態(tài)處理,防止在替換過程中報錯,對應的實例名按照空字符存進對應的位置,如④端口名稱“rst_n”所對應的⑩例化端口名稱空字符“”;對于模塊內(nèi)變量的聲明,為防止多次調(diào)用同一子模塊而出現(xiàn)的聲明名稱重復的問題,在每次調(diào)用子模塊時都為該名稱添加包含調(diào)用次數(shù)字符的后綴,以對模塊內(nèi)的變量進行唯一化處理,例如當頂層模塊第一次調(diào)用子模塊時,子模塊中的⑤變量名稱需要被替換成加了后綴的?新變量名稱;在所有的名稱和值替換完成之后,處理完畢的⑥數(shù)據(jù)流語句和行為語句替換掉頂層模塊中的⑦模塊內(nèi)容,完成該子模塊的去層次化處理。每一個標號內(nèi)容都對應圖4標號的示例。

圖4? 頂層模塊處理步驟

3? 結? 論

EDA軟件屬于當下的“卡脖子”技術之一,如何在本科階段培養(yǎng)學生對集成電路設計以及EDA軟件設計的興趣,也是當前教育教學改革的熱點話題。本文通過RTL設計的層次化展平處理,在難度適中的項目中涉及數(shù)字集成電路的結構化設計方法、HDL語法、數(shù)據(jù)結構、正則表達式、Python語言等內(nèi)容,讓學生在實踐中深入掌握并靈活運用課堂上所學到的知識,并對EDA軟件的工作原理建立了初步的理解和認識,從而提高學生的設計能力,增加學生的自主學習空間與學習自由度,培養(yǎng)學生的探究能力、創(chuàng)新能力,為日后的工作和科研打下良好的基礎;是對提高集成電路設計以及EDA技術課程教學效果、提高學生專業(yè)實踐能力的有益探索。

參考文獻:

[1] 孫進輝.EDA技術在數(shù)字電子實驗設計中的合理應用分析 [J].實驗室研究與探索,2018,37(2):199-202.

[2] 丁家峰,李新梅,尹林子,等.EDA技術中自頂向下方法的教學與實踐 [J].電氣電子教學學報,2020,42(6):91-95.

[3] 丁家峰,李新梅,孫克輝,等.“EDA技術與應用”課程教學改革與創(chuàng)新 [J].電氣電子教學學報,2017,39(6):47-49+59.

[4] 羅杰,康華光.兩種硬件描述語言VHDL/Verilog的發(fā)展及其應用 [J].電氣電子教學學報,2002(4):1-5.

[5] 馬彤鑫.基于Python的正則表達式獲取字符串信息 [C]//第三十四屆中國(天津)2020'IT、網(wǎng)絡、信息技術、電子、儀器儀表創(chuàng)新學術會議論文集.中國天津:天津市電子學會、天津市儀器儀表學會,2020:299-300.

[6] 張靜,張妍.正則表達式及其在信息抽取中的應用 [J].電腦知識與技術,2009,5(15):3867-3868.

作者簡介:楊怡雯(2001—),女,漢族,陜西西安人,本科在讀,研究方向:電子信息。

收稿日期:2022-09-06

基金項目:湖南省教學改革省級課題(HNJG-2021-0302);中南大學教學改革校級課題(2021jy063)

猜你喜歡
課程教學
小學數(shù)學教學應注重培養(yǎng)學生的應用意識
人間(2016年26期)2016-11-03 17:23:08
淺談微課在PHOTOSHOP課程教學中的實踐
會計專業(yè)課程教學國際化的探索性研究
高職物流專業(yè)“物流費用結算實務”課程開發(fā)研究
中國市場(2016年36期)2016-10-19 04:54:40
高職院校醫(yī)學檢驗技術專業(yè)提高課程教學質(zhì)量的探討
科技視界(2016年21期)2016-10-17 18:59:36
《供應鏈管理》課程教學改革
科技視界(2016年20期)2016-09-29 12:45:30
主站蜘蛛池模板: 中文纯内无码H| 亚洲男人的天堂网| 九色国产在线| 毛片久久网站小视频| 欧美三级自拍| 亚洲成人网在线观看| 色男人的天堂久久综合| 欧美一级99在线观看国产| 色偷偷男人的天堂亚洲av| 久久精品视频一| 综合色在线| 91久久精品国产| 91小视频在线播放| 欧美亚洲综合免费精品高清在线观看 | 国产免费久久精品99re不卡| 亚洲天堂首页| 日日碰狠狠添天天爽| 人人妻人人澡人人爽欧美一区| 一级福利视频| 99久久精品无码专区免费| 亚洲成a人在线观看| 免费国产在线精品一区| 五月综合色婷婷| 亚洲欧美日韩中文字幕在线一区| 99无码中文字幕视频| 国产毛片不卡| 毛片在线播放a| 在线播放真实国产乱子伦| 日韩国产精品无码一区二区三区| 久久精品人人做人人综合试看| 不卡无码h在线观看| 亚洲妓女综合网995久久 | 天天综合网在线| 国产打屁股免费区网站| 国产极品粉嫩小泬免费看| 一本二本三本不卡无码| 国产精品成人久久| 欧美日韩中文字幕在线| 无码国产伊人| 亚洲综合久久成人AV| 内射人妻无码色AV天堂| 亚洲欧洲日产国产无码AV| 伊人久久久久久久| 天天躁夜夜躁狠狠躁图片| 免费aa毛片| 国产一区二区三区在线观看视频 | 日韩色图区| 久久 午夜福利 张柏芝| 亚洲 欧美 日韩综合一区| 超清无码一区二区三区| 亚洲精品国产综合99久久夜夜嗨| 亚洲精品成人片在线观看| 理论片一区| 亚洲大尺码专区影院| 亚洲中文无码av永久伊人| 最新加勒比隔壁人妻| 国产综合网站| 精品视频在线一区| 一本大道AV人久久综合| 婷五月综合| 四虎永久免费网站| 免费在线看黄网址| 亚洲另类色| 亚洲成人精品| 高清不卡毛片| 经典三级久久| 色噜噜综合网| 在线精品亚洲一区二区古装| 91色老久久精品偷偷蜜臀| 狠狠色婷婷丁香综合久久韩国| 国产精品粉嫩| 国产精品一区不卡| 网久久综合| 99偷拍视频精品一区二区| 国产不卡国语在线| 婷婷色丁香综合激情| 99在线国产| 免费看a级毛片| 国产亚洲欧美在线专区| 本亚洲精品网站| 99成人在线观看| 久久亚洲国产视频|