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

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

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

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

電子工程師 ? 來(lái)源:硬件加速與EDA ? 作者:硬件加速與EDA ? 2021-04-04 11:19 ? 次閱讀

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

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

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

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

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

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

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

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

46476c84-8f64-11eb-8b86-12bb97331649.png

46c611c4-8f64-11eb-8b86-12bb97331649.jpg

471f01e4-8f64-11eb-8b86-12bb97331649.jpg

47875514-8f64-11eb-8b86-12bb97331649.jpg

47cc9304-8f64-11eb-8b86-12bb97331649.jpg

483109e2-8f64-11eb-8b86-12bb97331649.jpg

488f1168-8f64-11eb-8b86-12bb97331649.jpg

49042bce-8f64-11eb-8b86-12bb97331649.jpg

2、自動(dòng)化生成代碼

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

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

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

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

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

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

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

其好處有:

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

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

代碼維護(hù)方便:對(duì)于設(shè)計(jì)代碼的更新或升級(jí),只需要從新運(yùn)行下該工具即可,不需要一點(diǎn)點(diǎn)該寫(xiě)代碼。

使用簡(jiǎn)單:集成大量腳本,使用工具時(shí)只需要運(yùn)行一條命令即可。

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

499ef74e-8f64-11eb-8b86-12bb97331649.png

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

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

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

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

4a3c4f08-8f64-11eb-8b86-12bb97331649.jpg

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

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

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

4a9645a8-8f64-11eb-8b86-12bb97331649.jpg

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

總結(jié)

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

但是,這還遠(yuǎn)遠(yuǎn)不夠智能。

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

在更遠(yuǎn)的未來(lái),是否能夠拋棄掉太糾結(jié)于細(xì)節(jié)的Verilog語(yǔ)言?高級(jí)語(yǔ)言綜合技術(shù)HLS、Chisel、AI自動(dòng)生成代碼和電路是否是更好的選擇?

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

文章出處:【微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    173

    文章

    6006

    瀏覽量

    173983
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1361

    瀏覽量

    111269

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

文章出處:【微信號(hào):HXSLH1010101010,微信公眾號(hào):FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA Verilog HDL語(yǔ)法之編譯預(yù)處理

    Verilog HDL語(yǔ)言和C語(yǔ)言一樣也提供了編譯預(yù)處理的功能?!熬幾g預(yù)處理”是Verilog HDL編譯系統(tǒng)的一個(gè)組成部分。Verilog
    的頭像 發(fā)表于 03-27 13:30 ?249次閱讀
    FPGA <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>語(yǔ)法之編譯預(yù)處理

    一文詳解Verilog HDL

    Verilog HDL(Hardware Description Language)是一種硬件描述語(yǔ)言,用于從算法級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建?!,F(xiàn)實(shí)生活中多用于專用集成電路
    的頭像 發(fā)表于 03-17 15:17 ?821次閱讀
    一文詳解<b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>

    淺談Verilog和VHDL的區(qū)別

    Verilog和VHDL是兩種廣泛使用的硬件描述語(yǔ)言(HDL),它們用于描述和模擬數(shù)字電路系統(tǒng)的行為和結(jié)構(gòu)。這兩種語(yǔ)言的主要作用是幫助工程師
    的頭像 發(fā)表于 02-17 14:20 ?549次閱讀
    淺談<b class='flag-5'>Verilog</b>和VHDL的區(qū)別

    數(shù)字電路編程語(yǔ)言介紹

    數(shù)字電路編程語(yǔ)言是專門(mén)為描述和模擬數(shù)字電路而設(shè)計(jì)的編程語(yǔ)言。它們通常具有以下特點(diǎn): 硬件描述語(yǔ)言(HDL) :大多數(shù)數(shù)字
    的頭像 發(fā)表于 01-24 09:39 ?430次閱讀

    Verilog 電路仿真常見(jiàn)問(wèn)題 Verilog 在芯片設(shè)計(jì)中的應(yīng)用

    在現(xiàn)代電子設(shè)計(jì)自動(dòng)化(EDA)領(lǐng)域,Verilog作為一種硬件描述語(yǔ)言,已經(jīng)成為數(shù)字電路設(shè)計(jì)和驗(yàn)證的標(biāo)準(zhǔn)工具。它允許設(shè)計(jì)師以高級(jí)抽象的方式定義電路的行為和結(jié)構(gòu),從而簡(jiǎn)化了從概念到硅片的
    的頭像 發(fā)表于 12-17 09:53 ?826次閱讀

    Verilog 與 ASIC 設(shè)計(jì)的關(guān)系 Verilog 代碼優(yōu)化技巧

    Circuit,專用集成電路)設(shè)計(jì)是一個(gè)復(fù)雜的過(guò)程,涉及到邏輯設(shè)計(jì)、綜合、布局布線、物理驗(yàn)證等多個(gè)環(huán)節(jié)。在這個(gè)過(guò)程中,Verilog被用來(lái)描述數(shù)字
    的頭像 發(fā)表于 12-17 09:52 ?599次閱讀

    Verilog與VHDL的比較 Verilog HDL編程技巧

    理解。 VHDL :VHDL 的語(yǔ)法更接近于 Ada 語(yǔ)言,它是一種更正式的語(yǔ)言,具有豐富的數(shù)據(jù)類型和結(jié)構(gòu)。VHDL 支持?jǐn)?shù)據(jù)流、行為和結(jié)構(gòu)化三種描述方式。 2. 可讀性和可維護(hù)性 Verilog
    的頭像 發(fā)表于 12-17 09:44 ?1071次閱讀

    數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL

    數(shù)字系統(tǒng)設(shè)計(jì)與Verilog HDL 1.兼職職位 ,不坐班,等待公司分配任務(wù),時(shí)間自由 2.薪資: 200-5000不等具體協(xié)商 3.要求:國(guó)內(nèi)985/211院校在讀或畢業(yè),或者國(guó)外前100的院校 4.英語(yǔ)水平:四級(jí)500+
    發(fā)表于 11-06 17:57

    Verilog硬件描述語(yǔ)言參考手冊(cè)

    一. 關(guān)于 IEEE 1364 標(biāo)準(zhǔn)二. Verilog簡(jiǎn)介三. 語(yǔ)法總結(jié)四. 編寫(xiě)Verilog HDL源代碼的標(biāo)準(zhǔn)五. 設(shè)計(jì)流程
    發(fā)表于 11-04 10:12 ?4次下載

    Verilog HDL的基礎(chǔ)知識(shí)

    本文繼續(xù)介紹Verilog HDL基礎(chǔ)知識(shí),重點(diǎn)介紹賦值語(yǔ)句、阻塞與非阻塞、循環(huán)語(yǔ)句、同步與異步、函數(shù)與任務(wù)語(yǔ)法知識(shí)。
    的頭像 發(fā)表于 10-24 15:00 ?871次閱讀
    <b class='flag-5'>Verilog</b> <b class='flag-5'>HDL</b>的基礎(chǔ)知識(shí)

    FPGA Verilog HDL代碼如何debug?

    ,它們是同時(shí)存在的。但在實(shí)際的物理系統(tǒng)中,由于信號(hào)傳播的特性、電路元件的影響等因素,可能會(huì)表現(xiàn)出一定的差異。但這種差異并非簡(jiǎn)單的先高頻后低頻的順序,而是受到多種復(fù)雜因素的綜合影響。 例如,在高頻電路
    發(fā)表于 09-24 19:16

    FPGA芯片架構(gòu)和資源有深入的理解,精通Verilog HDL、VHDL

    、計(jì)算機(jī)相關(guān)專業(yè),具有良好的專業(yè)基礎(chǔ)知識(shí)。 2.工作年限不限,有工作經(jīng)驗(yàn)或優(yōu)秀應(yīng)屆畢業(yè)生亦可。 3.對(duì)FPGA芯片架構(gòu)和資源有深入的理解,精通Verilog HDL、VHDL編程語(yǔ)言,熟悉時(shí)序約束、時(shí)序分析
    發(fā)表于 09-15 15:23

    FPGA Verilog HDL有什么奇技巧?

    技巧或許可以被視為“奇技淫巧”,但需要注意的是,在實(shí)際應(yīng)用中應(yīng)遵循良好的代碼規(guī)范和設(shè)計(jì)原則: 利用 generate 語(yǔ)句生成重復(fù)的模塊或邏輯:可以根據(jù)條件動(dòng)態(tài)地生成電路結(jié)構(gòu),提高代碼的靈活性和復(fù)用性
    發(fā)表于 09-12 19:10

    FPGA設(shè)計(jì)中 Verilog HDL實(shí)現(xiàn)基本的圖像濾波處理仿真

    今天給大俠帶來(lái)FPGA設(shè)計(jì)中用Verilog HDL實(shí)現(xiàn)基本的圖像濾波處理仿真,話不多說(shuō),上貨。 1、用matlab代碼,準(zhǔn)備好把圖片轉(zhuǎn)化成Vivado Simulator識(shí)別的格式,即每行一
    發(fā)表于 05-20 16:44

    有什么好用的verilog HDL編輯工具可用?

    有什么好用的verilog HDL編輯工具可用?最好能集成實(shí)時(shí)的verilog HDL語(yǔ)法檢測(cè)、自定義模塊識(shí)別觸發(fā)等功能,最好能夠免費(fèi);
    發(fā)表于 04-28 11:00

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品