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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Perl語言在代碼自動生成中的應(yīng)用實例

OpenFPGA ? 來源:硬件加速與EDA ? 作者:硬件加速與EDA ? 2022-04-10 15:09 ? 次閱讀

1、如何使用Verilog HDL描述可綜合電路

Verilog 有什么奇技淫巧?我想最重要的是理解其硬件特性。Verilog HDL語言僅是對已知硬件電路的文本描述。所以編寫前:

對所需實現(xiàn)的硬件電路“胸有成竹”;

牢記可綜合Verilog HDL與電路結(jié)構(gòu)一一對應(yīng)的關(guān)系;

確認(rèn)電路指標(biāo)是什么:性能?面積?

硬件思維方式,代碼不再是一行行的代碼而是一塊一塊的硬件模塊;

達到以上幾點,就可以確保寫出行云流水般的高質(zhì)量代碼。

關(guān)于代碼與硬件電路的對應(yīng)關(guān)系,參見如下圖片,引用自Synopsys官方文檔:

34204150-b657-11ec-aa7f-dac502259ad0.png

3435109e-b657-11ec-aa7f-dac502259ad0.jpg

344209de-b657-11ec-aa7f-dac502259ad0.jpg

3452fe06-b657-11ec-aa7f-dac502259ad0.jpg

3470c940-b657-11ec-aa7f-dac502259ad0.jpg

3480087e-b657-11ec-aa7f-dac502259ad0.jpg

34935d98-b657-11ec-aa7f-dac502259ad0.jpg

34a70690-b657-11ec-aa7f-dac502259ad0.jpg

2、自動化生成代碼

如果一定要有奇淫技巧的話,那么代碼自動化生成技術(shù)就一定可以配得上這個稱號。

近十年來,數(shù)字集成電路規(guī)模和復(fù)雜度飛速提高。這給數(shù)字集成電路工程師帶來了不僅是腦力上的勞動的增加,更多是體力重復(fù)性工作的增多。傳統(tǒng)的手工代碼的編寫存在很多弊端:

對于模塊的代碼工程師,要面對許多設(shè)計文件。而這些文件之間可能相互不一致,給代碼的編寫帶來了很多的困擾。

代碼工程師需要將這些文件中的很多設(shè)計信息體現(xiàn)在代碼中,其中一些信息是充分性的謄寫。這不僅帶來了很多枯燥復(fù)雜的工作量而且人工參與過多也容易引入很多粗心帶來的錯誤。

由于各個模塊連接信號之多導(dǎo)致信號文件的手寫工作量很大。每個信號文件小則幾千行大則上萬行信息。而且一旦有信號連接的變動需要相應(yīng)修改多個模塊的信號文件。

如果設(shè)計文件改動相應(yīng)的設(shè)計文件很容易出現(xiàn)哪幾處忘記改動的問題。

而腳本語言又有著強大的處理文本的能力。將腳本語言應(yīng)用于數(shù)字電路設(shè)計中,作為設(shè)計文檔和EDA工具的黏合劑,能夠大大增加設(shè)計的速度。具體方法為:使用腳本語言從設(shè)計文檔中提取有用的信息來生成想要的Verilog HDL代碼,從而大大減少了IC設(shè)計者的工作量,并提高了代碼的質(zhì)量。

其好處有:

很好的設(shè)計一致性:保證了設(shè)計概念一旦變動即設(shè)計文檔稍加修改,對應(yīng)的VHDL代碼就會相應(yīng)的改變,不需要工程師手動改變代碼。

兼容性強:該自動生成代碼工具中設(shè)置了一個配置文件,供設(shè)計工程師的配置修改。對于不同的項目,通過修改配置該文件可以直接是代碼相應(yīng)變化,有一定的靈活性。此外,該自動生成代碼工具已經(jīng)應(yīng)用于兩個以上項目中,實踐證明有很好的兼容性。

代碼維護方便:對于設(shè)計代碼的更新或升級,只需要從新運行下該工具即可,不需要一點點該寫代碼。

使用簡單:集成大量腳本,使用工具時只需要運行一條命令即可。

本文將舉一個Perl語言在代碼自動生成中的應(yīng)用實例,下圖為一款SoC芯片中全芯片的時鐘控制電路框圖:

34f35676-b657-11ec-aa7f-dac502259ad0.png

時鐘控制模塊實現(xiàn)配置PLL參數(shù)、選擇輸出時鐘源、時鐘分頻、時鐘門控、bank切換、輸出時鐘等功能。3G、4G是系統(tǒng)通訊單元,向時鐘控制單元申請時鐘。PLLs是時鐘源,是時鐘控制單元的輸入。時鐘控制單元有七大主要模塊,分別為時鐘源控制模塊、bank切換模塊、分頻模塊、時鐘門控模塊、多路選擇器模塊、寄存器、3G4G時鐘握手模塊。時鐘源控制模塊控制時鐘源的大小、開關(guān)。bank切換模塊使時鐘控制單元能正常工作在不同的電壓下。

時鐘控制單元的的工作機理如下:首先,外部模塊向時鐘控制單元請求時鐘,并修改并寫寄存器狀態(tài);時鐘源控制單元根據(jù)寄存器中的內(nèi)容配置時鐘源Plls,并提供了所有的時鐘源。然后,分頻器完成這些時鐘源預(yù)分頻的操作,并將其作為多路選擇器的時鐘源。而多路選擇器則從輸入的時鐘源中選擇輸出主時鐘。主時鐘通過分頻模塊產(chǎn)生所有的分頻使能信號,這個過程中,需根據(jù)寄存器所配置的分頻數(shù)來輸出不同的頻率的時鐘。同時,根據(jù)系統(tǒng)的實時需求,通過由SPCU控制的bank選擇器完成門控時鐘的實現(xiàn),降低系統(tǒng)的功耗。

以上是時鐘控制模塊的功能分析,那么如何通過代碼自動生成技術(shù)來實現(xiàn)呢?

(1)首先,我們把這些模塊梳理下,形成一個自頂向下的層次結(jié)構(gòu),如下圖。如圖中所示,頂層模塊完成對底層模塊的連接,底層模塊實現(xiàn)時鐘控制單元的功能。

350b0d5c-b657-11ec-aa7f-dac502259ad0.jpg

針對代碼自動生成問題,對于頂層模塊來說,承擔(dān)的功能是自動地將底層數(shù)十個模塊連接起來。對于底層模塊來說,需要根據(jù)不同的功能定制需求,來自動化地生成所有功能性的代碼,然后被頂層調(diào)用和連接。這樣的話,就存在兩個問題:[1]自動生成頂層模塊?[2]自動生成底層模塊?

(2)頂層模塊:通常來說,對于一個復(fù)雜的SoC芯片,會有萬數(shù)量級的信號需要進行匹配和連接。而能夠自動生成的信號文件中的信號連接有兩個特點:一是信號命令規(guī)律性強二是信號的連接關(guān)系可以從設(shè)計文件中體現(xiàn)。滿足了這兩點,便可以實現(xiàn)信號文件的自動化。

(3)底層模塊此處即可體現(xiàn)Perl腳本強大的數(shù)據(jù)處理功能,針對該問題,將腳本劃分為三類:提取腳本、生成腳本和集成腳本三種。提取腳本用來從輸入文件中提取有用的設(shè)計信息到存儲單元中;生成腳本從存儲單元獲得有用信息來生成各個功能模塊的代碼;集成腳本將所有的腳本集成在一個腳本里,方便統(tǒng)一化使用。以下是代碼生成的腳本流程圖:

351e075e-b657-11ec-aa7f-dac502259ad0.jpg

如圖所示,輸入的文件都是excel和文本形式,Perl腳本首先讀取技術(shù)文檔,從中解析出時鐘模塊所需的連接、頻率、時鐘域等信息,基于此信息建立一個數(shù)據(jù)庫。然后,根據(jù)實際芯片的具體需求,即配置文件,生成相應(yīng)的自動化控制模式和需求。最終,依據(jù)配置文件和數(shù)據(jù)庫,完成所有所需verilog代碼的生成。需要注意的是,并不是所有的代碼都可以自動生成,有些結(jié)構(gòu)特殊的電路,只能通過手工編寫來完成。所以,自動編寫通常完成較為規(guī)整的、有規(guī)律性的代碼,手工書寫作為補充。這樣即可保證得到高質(zhì)量的代碼。

總結(jié)

Perl語言強大的正則和hash能力成就了代碼自動生成技術(shù),在這個領(lǐng)域,其他腳本語言黯然失色。當(dāng)然,使用Python也可以同樣的功能。

但是,這還遠遠不夠智能

短期內(nèi),如何使得代碼生成技術(shù)更加友好,更方便移植和管理?如何更加徹底地剝離人工干預(yù)的工作,腳本自動決定哪些電路需要自動生成的代碼?

在更遠的未來,是否能夠拋棄掉太糾結(jié)于細節(jié)的Verilog語言?高級語言綜合技術(shù)HLS、Chisel、AI自動生成代碼和電路是否是更好的選擇?

原文標(biāo)題:書寫Verilog 有什么奇技淫巧

文章出處:【微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭菁
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • SoC芯片
    +關(guān)注

    關(guān)注

    1

    文章

    613

    瀏覽量

    34947
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4801

    瀏覽量

    68735
  • Perl語言
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    5294

原文標(biāo)題:書寫Verilog 有什么奇技淫巧

文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    perl語言IC設(shè)計的應(yīng)用

    實際的IC設(shè)計作為輔助手段被廣泛采用講了perl語言IC設(shè)計的幾個應(yīng)用,主要在Veri
    發(fā)表于 01-11 15:06

    Perl語言電路設(shè)計的應(yīng)用

    設(shè)計,電路仿真是設(shè)計的關(guān)鍵。而一個完備而準(zhǔn)確的測試文件,則是電路仿真的基礎(chǔ)。Perl語言電路設(shè)計的應(yīng)用
    發(fā)表于 01-11 15:19

    福音|代碼自動生成工具來襲

    定義的數(shù)據(jù)點生成對應(yīng)產(chǎn)品的設(shè)備端代碼自動生成代碼實現(xiàn)了機智云通信協(xié)議的解析與封包、傳感器數(shù)據(jù)與通信數(shù)據(jù)的轉(zhuǎn)換邏輯,并封裝成了簡單的API
    發(fā)表于 12-20 17:00

    什么是代碼自動生成工具

    自動生成服務(wù)。云端會根據(jù)產(chǎn)品定義的數(shù)據(jù)點生成對應(yīng)產(chǎn)品的設(shè)備端代碼自動生成
    發(fā)表于 11-03 06:04

    Simulink 自動代碼生成原理分享

    相似。代碼生成過程,會按照右邊的模板,將標(biāo)注的 %占位符會變成模型的真實信息,生成左邊的代碼
    發(fā)表于 05-31 11:19

    Perl語言入門教程

    Perl語言入門教程 引言 Perl是一種非常簡單、應(yīng)用廣泛且反響很好的腳本語言。它可用于各種任務(wù)(例如,您可以使用它創(chuàng)建DOS批處理文件或C外殼腳本的等效文件)
    發(fā)表于 07-30 14:08 ?3280次閱讀

    MPLAB? X IDE自動生成配置位代碼

    我們?nèi)粘=佑|到的PIC?單片機用戶,有些用戶經(jīng)常會遇到如何在項目程序編寫配置位設(shè)置代碼的問題。所以這里向大家介紹一下使用MPLAB? X IDE
    的頭像 發(fā)表于 06-07 13:46 ?5083次閱讀

    C語言中隨機數(shù)的生成代碼

    C語言中隨機數(shù)的生成完整代碼
    的頭像 發(fā)表于 02-20 09:21 ?1w次閱讀

    關(guān)于自動生成高效的代碼的方法分析和分享

    基于模型的設(shè)計流程和自動代碼生成汽車等行業(yè)基本上已經(jīng)是標(biāo)準(zhǔn)手段,然而在大多使用 MATLAB 語言的通信和數(shù)據(jù)分析領(lǐng)域,
    的頭像 發(fā)表于 09-12 11:48 ?3372次閱讀
    關(guān)于<b class='flag-5'>自動</b><b class='flag-5'>生成</b>高效的<b class='flag-5'>代碼</b>的方法分析和分享

    Perl語言入門(第四版)

    Perl語言入門(第四版)免費下載。
    發(fā)表于 05-12 10:54 ?0次下載

    c語言代碼自動生成工具,MCU代碼自動生成工具介紹

    自動生成服務(wù)。云端會根據(jù)產(chǎn)品定義的數(shù)據(jù)點生成對應(yīng)產(chǎn)品的設(shè)備端代碼自動生成
    發(fā)表于 10-28 17:36 ?8次下載
    c<b class='flag-5'>語言</b><b class='flag-5'>代碼</b><b class='flag-5'>自動</b><b class='flag-5'>生成</b>工具,MCU<b class='flag-5'>代碼</b><b class='flag-5'>自動</b><b class='flag-5'>生成</b>工具介紹

    【C語言應(yīng)用】如何用C代碼生成一維碼?

    【C語言應(yīng)用】如何用C代碼生成一維碼?
    的頭像 發(fā)表于 08-25 12:42 ?2463次閱讀
    【C<b class='flag-5'>語言</b>應(yīng)用】如何用C<b class='flag-5'>代碼</b><b class='flag-5'>生成</b>一維碼?

    淺談PerlIC設(shè)計的運用

    Perl腳本能夠高效批量化操作,降低錯誤率,提高效率。如批量生成verilog代碼,快速生成仿真testbench,verilog代碼
    發(fā)表于 11-14 12:34 ?1577次閱讀

    搞芯片怎么能不懂perl語言呢?

    各位ICer工作的過程當(dāng)中,無論是前后端,都會使用各種常見的腳本語言如:shell,python,perl,tcl等等用于文件的處理,case測試,工具環(huán)境的調(diào)用和搭建,雖然隨著Python的發(fā)展以及
    的頭像 發(fā)表于 03-15 14:01 ?612次閱讀

    如何自動生成verilog代碼

    介紹幾種自動生成verilog代碼的方法。
    的頭像 發(fā)表于 11-05 11:45 ?353次閱讀
    如何<b class='flag-5'>自動</b><b class='flag-5'>生成</b>verilog<b class='flag-5'>代碼</b>
    主站蜘蛛池模板: 巨爆乳中文字幕爆乳区| 国产99精品视频| 偷窥自拍性综合图区| 青青草原社区| 男同志china免费视频| 校园男男高h小黄文| 琪琪伦伦影院理论片| 女人张腿让男人桶免费| 门事件快播| 男人边吃奶边挵进去呻吟漫画| 老湿机一区午夜精品免费福利| 旧里番ovaの催○セイ活指导| 久久偷拍免费2017| 久久福利影院| 伦理片午夜在线视频| 麻花豆传媒剧国产免费mv观看| 久就热视频精品免费99| 老阿姨儿子一二三区| 美女被黑人巨大进入| 女子初尝黑人巨嗷嗷叫| 免费在线观看一区| 欧美.亚洲.日韩.天堂| 欧美日韩中文在线字幕视频| 日本xxx在线观看免费播放| 欧美日韩一区不卡在线观看| 日本邪恶少女漫画大全| 国产精品久久自在自2021| 最美白嫩的极品美女ASSPICS| 看免费人成va视频全| 超碰公开在线caopon| 亚洲精品国产自在在线观看 | 国产成人精品电影| 国产a视频视卡在线| 国产免费阿v精品视频网址| 国产小伙和50岁熟女23p| 九九视频在线观看视频6| 麻豆精品2021最新| 日本漫画大全无翼乌| 亚洲AV色香蕉一区二区9255| 在教室轮流被澡高H林萌| 99re这里只有精品国产|