91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

芯片實(shí)現(xiàn)碼代碼的部分

倩倩 ? 來(lái)源:IP與SoC設(shè)計(jì) ? 作者:IP與SoC設(shè)計(jì) ? 2022-08-23 14:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

0 緒論

經(jīng)過(guò)了上篇文章的文檔設(shè)計(jì),我們這一章開(kāi)始寫代碼。碼代碼這個(gè)問(wèn)題確實(shí)是一個(gè)必備技能,任何設(shè)計(jì)不會(huì)碼代碼其實(shí)無(wú)法實(shí)現(xiàn)的。

這塊兒流程上包括了兩個(gè)東西。第一個(gè)碼代碼,第二個(gè)是一些必要的代碼檢查,保證代碼不會(huì)出現(xiàn)什么歧義導(dǎo)致實(shí)現(xiàn)結(jié)果和設(shè)計(jì)意圖不一致。具體語(yǔ)法我們就不在這一章講了,寫出來(lái)也是千篇一律,此處就簡(jiǎn)單講講HDL的簡(jiǎn)介,同時(shí)講一下如何提高編碼質(zhì)量,供大家參考。然后簡(jiǎn)單講一個(gè)代碼寫完必要的檢查工序spyglass檢查,這個(gè)工具可以避免大部分低級(jí)BUG。

521f79dc-21fa-11ed-ba43-dac502259ad0.jpg

1 碼代碼

52393af2-21fa-11ed-ba43-dac502259ad0.jpg

1.1 HDL簡(jiǎn)介

此處的代碼主要指的是HDL, hardware design language, 最主流的只有一種:Verilog,以及它的衍生品system verilog。其實(shí)還有兩種語(yǔ)言,VHDL,屬于它的時(shí)代已經(jīng)過(guò)去了, 還有一種Chisel為代表的高級(jí)語(yǔ)言,屬于它的時(shí)代似乎還沒(méi)到來(lái)。所以我們這個(gè)地方重點(diǎn)講講verilog。

verilog 1983年被gateway設(shè)計(jì),1990年gateway被candance收購(gòu)。然后90年代出了第一個(gè)標(biāo)準(zhǔn)Verilog-95,定義了最原始的語(yǔ)法。直到現(xiàn)在,部分公司還是只允許使用95中的特性。2001年公布新一代標(biāo)準(zhǔn),verilog-2001, 這一代標(biāo)準(zhǔn)中加入了generate, 多維數(shù)組等等實(shí)用的語(yǔ)法,現(xiàn)在是verilog使用最主流的標(biāo)準(zhǔn),基本上所有的軟件工具鏈都支持該標(biāo)準(zhǔn),后續(xù)verilog更新了一代標(biāo)準(zhǔn)verilog2005, 不過(guò)這一代標(biāo)準(zhǔn)開(kāi)始向著一個(gè)獨(dú)立的方向演變,最后被合并到了systemverilog 2009。system verilog中提供了interface等等一系列面向?qū)ο蟮姆椒ǎ呀?jīng)廣泛被驗(yàn)證支持了,但是在設(shè)計(jì)實(shí)現(xiàn)中只被支持了少部分特性。具體什么特性允許使用其實(shí)各個(gè)公司都有自己的看法與標(biāo)準(zhǔn),你需要注意一下公司的編碼標(biāo)準(zhǔn)。從我個(gè)人的觀點(diǎn)來(lái)看,如果確認(rèn)新特性沒(méi)問(wèn)題最好用新特性,減少工作量的同時(shí)還能避免代碼出低級(jí)錯(cuò)誤。

verilog代碼長(zhǎng)這樣。下面實(shí)現(xiàn)了一個(gè)十進(jìn)制的計(jì)數(shù)器。

524b8824-21fa-11ed-ba43-dac502259ad0.jpg

1.2 編碼質(zhì)量

Verilog其實(shí)不是一個(gè)很難的語(yǔ)言,但是由于比較落后,編碼質(zhì)量很多需要人為來(lái)注意。編碼質(zhì)量主要就是兩個(gè)方面考慮。容易出錯(cuò)的點(diǎn)以及提高后續(xù)步驟效率的點(diǎn)。常見(jiàn)容易出錯(cuò)的點(diǎn)大家應(yīng)該都懂,此處簡(jiǎn)單總結(jié)了一下我覺(jué)得需要了解又容易被忽略的點(diǎn),歡迎大家補(bǔ)充。

1.2.1 容易出錯(cuò)的點(diǎn)

·命名有意義,代碼有注釋。這個(gè)任何編程語(yǔ)言都需要注意,我把它列在第一點(diǎn),這是一個(gè)碼農(nóng)最起碼的素質(zhì)。即可以避免自己出錯(cuò),又可以避免接手代碼的人一頭霧水。我也看過(guò)不少代碼沒(méi)注釋,命名還全是tmp1 tmp2 tmp3, 最后結(jié)局只能是自己重寫。

·信號(hào)不要以Reg以及數(shù)字結(jié)尾。這個(gè)點(diǎn)很容易被忽略,綜合時(shí)會(huì)自動(dòng)給信號(hào)加上reg, 到時(shí)候就沒(méi)辦法區(qū)分是你寫的,還是自動(dòng)生成的,非要標(biāo)識(shí)這是個(gè)寄存器可以用ff結(jié)尾。同時(shí),如果多組信號(hào)不要命名為xx1,xx2, 這么做非常容易和xx[1]混淆,建議改成xxa, xxb。

·敏感列表用*,不要用具體的信號(hào)。always實(shí)現(xiàn)組合邏輯的時(shí)候一個(gè)敏感列表always @(列表),這個(gè)列表直接用*,讓綜合去自動(dòng)填敏感列表,把信號(hào)寫進(jìn)去非常容易出錯(cuò)。

·少用magic numer。設(shè)計(jì)的時(shí)候好多時(shí)候需要用到參數(shù),比如fifo的深度,這種東西盡量用參數(shù)表示出來(lái),不同地方引用一個(gè)參數(shù),否則非常容易出現(xiàn)不一致的情況。

·不要生產(chǎn)latch。latch指的是沒(méi)有鎖存的寄存,生成latch會(huì)產(chǎn)生毛刺,所以非必要不允許使用latch。之所以產(chǎn)生latch其原理是你實(shí)現(xiàn)了組合邏輯,但是某個(gè)周期某個(gè)變量值沒(méi)有發(fā)生變化。所以牢記規(guī)律,時(shí)序邏輯值可以不變,但組合邏輯必須每個(gè)周期都賦值。具體點(diǎn)講,實(shí)現(xiàn)組合邏的時(shí)候,case必須有default, if必須有else。

·不要生產(chǎn)組合邏輯環(huán)。組合邏輯環(huán)指的是同周期A變化的條件是B,而B(niǎo)變化依賴于A。相當(dāng)于軟件中的死循環(huán)。功能上就不可能正確,所以設(shè)計(jì)的時(shí)候要記得避免組合邏輯環(huán)。

·異步信號(hào)不要直接打拍。異步信號(hào)需要特別注意。在詳設(shè)的時(shí)候應(yīng)該就要考慮清楚怎么處理。是用多級(jí)打拍,DMUX,異步FIFO等等辦法,總之,不能當(dāng)做同步信號(hào)給直接處理了,否則必出錯(cuò)。

1.2.2 提高后續(xù)效率需要注意的點(diǎn)

·盡量一個(gè)模塊用一個(gè)時(shí)鐘域。主要是為了后端設(shè)計(jì)起來(lái)比較方便,CTS步驟(見(jiàn)后續(xù)文章)較容易。

·大的模塊最好reg in和reg out。可以最大程度上避免后端時(shí)序上出問(wèn)題。因?yàn)楹蠖四K與模塊之間不一定是按著放的,寄存器輸出寄存器輸入留出足夠的時(shí)間余量。

·不可綜合的與可綜合的代碼分模塊。設(shè)計(jì)代碼的時(shí)候有時(shí)候可能會(huì)用到SRAM cell, 或者其他硬核IP,再或者designware IP。這些東西最好單獨(dú)封裝模塊調(diào)用。主要是為了后續(xù)代碼可能會(huì)用FPGA或者emulation驗(yàn)證,不可綜合的部件直接替換成邏輯版本。

碼代碼部分內(nèi)容大致就是這些。其實(shí)也不必壓力太大,因?yàn)榇a寫出來(lái)是要經(jīng)過(guò)多輪工具檢查的。尤其經(jīng)過(guò)下面講的spyglass檢查后,想出錯(cuò)也沒(méi)有那么容易(當(dāng)然,一旦出錯(cuò)就是非常隱蔽的錯(cuò)誤,可能流片后都沒(méi)發(fā)現(xiàn)Orz)

2 Spyglass檢查

碼完代碼,其實(shí)我們有一個(gè)非常強(qiáng)力的工具可以避免大部分低級(jí)錯(cuò)誤。這個(gè)工具應(yīng)該是synopsys公司出的。這個(gè)工具的GUI長(zhǎng)這樣。

5275db92-21fa-11ed-ba43-dac502259ad0.jpg

最主要檢查的東西應(yīng)該有兩個(gè),lint檢查一些常用的語(yǔ)法錯(cuò)誤,CDC (Clock Domain Crossing )檢查異步的處理是不是有問(wèn)題。

5287e8d2-21fa-11ed-ba43-dac502259ad0.jpg

lint會(huì)檢查出所有等號(hào)左右位寬不匹配、組合邏輯環(huán)、生成了latch, 端口連接不對(duì)等等問(wèn)題。基本上常見(jiàn)的錯(cuò)誤都會(huì)報(bào)出來(lái),一般它會(huì)采用寧可錯(cuò)殺不會(huì)放過(guò)的策略。所以此處會(huì)爆出一大堆的錯(cuò)誤,需要逐個(gè)check一下有沒(méi)有問(wèn)題。當(dāng)然,好多問(wèn)題也是可以waive掉的,但必須每個(gè)waive都要十分確定能不能waive掉。比如計(jì)數(shù)器,一般計(jì)數(shù)器到溢出就自動(dòng)回環(huán)了,這種時(shí)候lint就會(huì)爆出錯(cuò),你就要檢查一下是不是真的要讓計(jì)數(shù)器回環(huán)。一般spygalss給你報(bào)的錯(cuò)分為四類,fatel, error, warning, info。其中fatel和error是一定不能有的, 有了必然不讓你拿去流片,warning可以適當(dāng)waive,info大多不用管。

CDC會(huì)檢查異步問(wèn)題。主要檢查是不是所有跨時(shí)鐘域的信號(hào)經(jīng)過(guò)了同步,如果spyglass沒(méi)檢查到跨時(shí)鐘域的信號(hào)沒(méi)有經(jīng)過(guò)多級(jí)打拍或者dmux同步會(huì)報(bào)錯(cuò)。再比如A時(shí)鐘域的兩個(gè)信號(hào)同步到了B時(shí)鐘域,然后合并了,這個(gè)時(shí)候也會(huì)報(bào)錯(cuò),因?yàn)檫@兩個(gè)信號(hào)同步過(guò)去以后時(shí)序可能會(huì)發(fā)生變化,要仔細(xì)檢查。再比如要同步的信號(hào)不是寄存器輸出的,這種情況由于存在毛刺風(fēng)險(xiǎn),會(huì)增大亞穩(wěn)態(tài)的概率,所以也會(huì)報(bào)出來(lái)。總之, 你能想到的錯(cuò)誤基本上都會(huì)檢查出來(lái)。

本部分主要簡(jiǎn)單介紹了編碼完后要用到的最重要的工具之一spyglass。實(shí)際使用的時(shí)候確實(shí)也要有一定的經(jīng)驗(yàn)積累,什么問(wèn)題可以waive掉,什么問(wèn)題必須改。沒(méi)必要所有問(wèn)題都改掉,耗費(fèi)的精力實(shí)在是太大,但真的存在風(fēng)險(xiǎn)的問(wèn)題必須改掉,否則就可能搞出大事兒。。。

3 總結(jié)

本節(jié)我們講了芯片實(shí)現(xiàn)碼代碼的部分。主要就是verilog以及后續(xù)的檢查。芯片流片是一錘子買賣,所以一定要保證寫的代碼不出錯(cuò),一方面,在本節(jié)講的編碼階段要盡量少寫bug, 另一方面,要經(jīng)過(guò)縝密的驗(yàn)證,最大程度上攔截BUG。

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)注

    460

    文章

    52520

    瀏覽量

    441070
  • vhdl
    +關(guān)注

    關(guān)注

    30

    文章

    820

    瀏覽量

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

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70758

原文標(biāo)題:一顆芯片的前世今生:設(shè)計(jì)(前端之編碼)

文章出處:【微信號(hào):IP與SoC設(shè)計(jì),微信公眾號(hào):IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是零代碼平臺(tái)?

    代碼平臺(tái)是一種無(wú)需編寫傳統(tǒng)代碼,通過(guò)可視化拖拽、參數(shù)配置、邏輯連線即可快速搭建業(yè)務(wù)流程與應(yīng)用系統(tǒng)的工具平臺(tái)。它將復(fù)雜的軟件開(kāi)發(fā)過(guò)程轉(zhuǎn)化為 “搭積木” 式的操作,讓非技術(shù)人員(如業(yè)務(wù)人員、運(yùn)營(yíng)人員
    發(fā)表于 07-12 20:28

    基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)二維識(shí)別方案

    在RV1126開(kāi)發(fā)板上實(shí)現(xiàn)方案設(shè)計(jì)邏輯流程圖,方案代碼分為兩個(gè)業(yè)務(wù)流程,主體代碼負(fù)責(zé)抓取、合成圖像,算法代碼負(fù)責(zé)二維識(shí)別功能。
    的頭像 發(fā)表于 04-21 14:25 ?54次閱讀
    基于RV1126開(kāi)發(fā)板<b class='flag-5'>實(shí)現(xiàn)</b>二維<b class='flag-5'>碼</b>識(shí)別方案

    基于RV1126開(kāi)發(fā)板實(shí)現(xiàn)二維識(shí)別方案

    在RV1126上實(shí)現(xiàn)二維識(shí)別方案
    的頭像 發(fā)表于 04-11 14:48 ?271次閱讀
    基于RV1126開(kāi)發(fā)板<b class='flag-5'>實(shí)現(xiàn)</b>二維<b class='flag-5'>碼</b>識(shí)別方案

    一“”當(dāng)先!看二維模組如何重塑智能門鎖掃體驗(yàn)

    在科技日新月異的今天,智能門鎖正逐步取代傳統(tǒng)機(jī)械鎖,成為現(xiàn)代家庭安全防護(hù)的首選。在這場(chǎng)門鎖智能化革命中,二維模組以其獨(dú)特的識(shí)別技術(shù)和便捷的操作方式,成為智能門鎖的重要組成部分。本文將深入探討二維
    的頭像 發(fā)表于 03-12 16:17 ?454次閱讀
    一“<b class='flag-5'>碼</b>”當(dāng)先!看二維<b class='flag-5'>碼</b>模組如何重塑智能門鎖掃<b class='flag-5'>碼</b>體驗(yàn)

    XL系列433芯片、2.4G收發(fā)芯片 通訊對(duì)說(shuō)明

    戶自定義,一般而言,使用標(biāo)準(zhǔn)的 1527 協(xié)議即可。 1527 協(xié)議的數(shù)據(jù)長(zhǎng)度一般為 24 位,其中前 16 位表示地址,后 8 為表示數(shù)據(jù)。那么也就是前 4 個(gè)十六進(jìn)制位為地址,也就是對(duì)的關(guān)鍵,保證每個(gè)發(fā)送端的地址不同,這樣就能實(shí)
    的頭像 發(fā)表于 12-27 17:06 ?1412次閱讀
    XL系列433<b class='flag-5'>芯片</b>、2.4G收發(fā)<b class='flag-5'>芯片</b> 通訊對(duì)<b class='flag-5'>碼</b>說(shuō)明

    LLMWorld上線代碼翻譯新工具——問(wèn)丫·語(yǔ)翻譯俠,快來(lái)體驗(yàn)!

    01. 工具介紹 aicode.llmworld.net 問(wèn)丫·語(yǔ)翻譯俠 是一款由LLMWorld新推出的代碼翻譯工具,支持各種語(yǔ)言之間的翻譯,包括計(jì)算機(jī)語(yǔ)言到自然語(yǔ)言。 02.
    的頭像 發(fā)表于 12-09 11:11 ?1008次閱讀
    LLMWorld上線<b class='flag-5'>代碼</b>翻譯新工具——問(wèn)丫·<b class='flag-5'>碼</b>語(yǔ)翻譯俠,快來(lái)體驗(yàn)!

    手持式的掃槍連接到工控機(jī)上使用,實(shí)現(xiàn)產(chǎn)品掃

    在當(dāng)今的自動(dòng)化生產(chǎn)線和倉(cāng)儲(chǔ)管理中,手持式掃槍已成為不可或缺的工具。它以其高效、準(zhǔn)確的特點(diǎn),為產(chǎn)品的追蹤、管理和銷售提供了極大的便利。本文將介紹如何將手持式掃槍連接到工控機(jī)上,并實(shí)現(xiàn)產(chǎn)品掃
    的頭像 發(fā)表于 12-04 14:30 ?1113次閱讀
    手持式的掃<b class='flag-5'>碼</b>槍連接到工控機(jī)上使用,<b class='flag-5'>實(shí)現(xiàn)</b>產(chǎn)品掃<b class='flag-5'>碼</b>

    ASCII在編程中的應(yīng)用實(shí)例

    ASCII(American Standard Code for Information Interchange,美國(guó)信息交換標(biāo)準(zhǔn)代碼)在編程中有著廣泛的應(yīng)用。以下是一些ASCII在編程中
    的頭像 發(fā)表于 11-10 09:43 ?1546次閱讀

    如何使用ASCII進(jìn)行編碼

    ASCII(American Standard Code for Information Interchange,美國(guó)信息交換標(biāo)準(zhǔn)代碼)是一種字符編碼標(biāo)準(zhǔn),用于文本電子交換。它主要包括128個(gè)字符
    的頭像 發(fā)表于 11-10 09:37 ?1708次閱讀

    AIC3254的miniDSP編寫代碼和編寫C5502代碼有什么區(qū)別?

    問(wèn)題:AIC3254的miniDSP編寫代碼和編寫C5502代碼有什么區(qū)別,執(zhí)行速度和代碼量來(lái)進(jìn)行分析吧,謝謝回復(fù)
    發(fā)表于 11-06 07:22

    基于圖遍歷的Flink任務(wù)畫布模式下零代碼開(kāi)發(fā)實(shí)現(xiàn)方案

    的過(guò)程。以下是利用Flink的 StreamGraph 通過(guò)低代碼的方式,來(lái)實(shí)現(xiàn)StreamGraph的生成,并最終實(shí)現(xiàn) Flink 程序零代碼開(kāi)發(fā)的解決方案。 一、Flink 相關(guān)
    的頭像 發(fā)表于 11-05 10:35 ?1105次閱讀
    基于圖遍歷的Flink任務(wù)畫布模式下零<b class='flag-5'>代碼</b>開(kāi)發(fā)<b class='flag-5'>實(shí)現(xiàn)</b>方案

    使用實(shí)現(xiàn)CC3220空中升級(jí)

    電子發(fā)燒友網(wǎng)站提供《使用實(shí)現(xiàn)CC3220空中升級(jí).pdf》資料免費(fèi)下載
    發(fā)表于 09-29 10:21 ?0次下載
    使用<b class='flag-5'>碼</b>云<b class='flag-5'>實(shí)現(xiàn)</b>CC3220空中升級(jí)

    二維掃描頭設(shè)備嵌入到閘機(jī)上,實(shí)現(xiàn)掃手機(jī)屏幕完成簽到簽退

    如何嵌入到閘機(jī)上,實(shí)現(xiàn)掃手機(jī)屏幕完成簽到簽退的過(guò)程及其優(yōu)勢(shì)。一、二維掃描頭設(shè)備的嵌入技術(shù)二維掃描頭設(shè)備作為一種高效的信息采集工具,其核心技術(shù)在于快速、準(zhǔn)確地讀取并
    的頭像 發(fā)表于 09-18 15:45 ?763次閱讀
    二維<b class='flag-5'>碼</b>掃描頭設(shè)備嵌入到閘機(jī)上,<b class='flag-5'>實(shí)現(xiàn)</b>掃手機(jī)屏幕<b class='flag-5'>碼</b>完成簽到簽退

    hex文件如何查看原c語(yǔ)言代碼

    直接將 .hex 文件轉(zhuǎn)換回原始的 C 語(yǔ)言代碼是不可能的,因?yàn)?.hex 文件是二進(jìn)制文件,它包含了單片機(jī)程序編譯后的機(jī)器,這些機(jī)器與原始的 C 語(yǔ)言代碼在結(jié)構(gòu)和表達(dá)上存在巨大的
    的頭像 發(fā)表于 09-02 10:37 ?4959次閱讀

    LKT(LCS)代碼移植芯片優(yōu)勢(shì)

    所謂代碼移植就是客戶可以把自定義的程序一部分關(guān)鍵代碼函數(shù)移植到加密芯片中運(yùn)行。用戶采用標(biāo)準(zhǔn)C語(yǔ)言編寫代碼,通過(guò)KEIL C編譯器,編譯并下載
    的頭像 發(fā)表于 08-22 10:03 ?1179次閱讀
    主站蜘蛛池模板: 国产三级在线观看免费 | 亚洲福利一区福利三区 | 久久国产色 | 视频网站免费看 | 在线播放免费 | 国产传媒在线观看视频免费观看 | 国产成人v爽在线免播放观看 | 午夜国产精品视频 | 亚洲综合久久综合激情久久 | 在线免费观看一级片 | 高清在线观看视频 | 男同小黄文| 久久国产精品99久久久久久老狼 | 四虎国产精品免费久久影院 | 天天做天天看夜夜爽毛片 | 狠狠婷婷 | 永久免费观看午夜视频在线 | 中文字幕精品一区二区三区视频 | 国产精品视频网站你懂得 | 久操伊人 | 免费观看黄色网址 | 成人狠狠色综合 | 1024免费永久福利视频 | 三级在线观看免播放网站 | 色综合888| 天堂在线视频 | 久久国产乱子伦精品免费一 | 日产国产精品亚洲系列 | 亚色综合 | 丁香六月激情婷婷 | 韩日色图 | 三级理论在线播放大全 | 欧美www| 成人5252色 | 日本理论片www视频 日本理论午夜中文字幕第一页 | 天堂福利视频在线观看 | 成年人黄色免费网站 | 午夜视频在线观看一区二区 | 国产三级精品在线观看 | 天天插插插 | 91三级在线|