日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

倩倩 ? 來源:IP與SoC設計 ? 作者:IP與SoC設計 ? 2022-08-23 14:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

0 緒論

經(jīng)過了上篇文章的文檔設計,我們這一章開始寫代碼。碼代碼這個問題確實是一個必備技能,任何設計不會碼代碼其實無法實現(xiàn)的。

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

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

1 碼代碼

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

1.1 HDL簡介

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

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

verilog代碼長這樣。下面實現(xiàn)了一個十進制的計數(shù)器。

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

1.2 編碼質(zhì)量

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

1.2.1 容易出錯的點

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

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

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

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

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

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

·異步信號不要直接打拍。異步信號需要特別注意。在詳設的時候應該就要考慮清楚怎么處理。是用多級打拍,DMUX,異步FIFO等等辦法,總之,不能當做同步信號給直接處理了,否則必出錯。

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

·盡量一個模塊用一個時鐘域。主要是為了后端設計起來比較方便,CTS步驟(見后續(xù)文章)較容易。

·大的模塊最好reg in和reg out??梢宰畲蟪潭壬媳苊夂蠖藭r序上出問題。因為后端模塊與模塊之間不一定是按著放的,寄存器輸出寄存器輸入留出足夠的時間余量。

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

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

2 Spyglass檢查

碼完代碼,其實我們有一個非常強力的工具可以避免大部分低級錯誤。這個工具應該是synopsys公司出的。這個工具的GUI長這樣。

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

最主要檢查的東西應該有兩個,lint檢查一些常用的語法錯誤,CDC (Clock Domain Crossing )檢查異步的處理是不是有問題。

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

lint會檢查出所有等號左右位寬不匹配、組合邏輯環(huán)、生成了latch, 端口連接不對等等問題?;旧铣R姷腻e誤都會報出來,一般它會采用寧可錯殺不會放過的策略。所以此處會爆出一大堆的錯誤,需要逐個check一下有沒有問題。當然,好多問題也是可以waive掉的,但必須每個waive都要十分確定能不能waive掉。比如計數(shù)器,一般計數(shù)器到溢出就自動回環(huán)了,這種時候lint就會爆出錯,你就要檢查一下是不是真的要讓計數(shù)器回環(huán)。一般spygalss給你報的錯分為四類,fatel, error, warning, info。其中fatel和error是一定不能有的, 有了必然不讓你拿去流片,warning可以適當waive,info大多不用管。

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

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

3 總結(jié)

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

審核編輯 :李倩

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

    關注

    463

    文章

    54463

    瀏覽量

    469749
  • vhdl
    +關注

    關注

    30

    文章

    822

    瀏覽量

    131902
  • 代碼
    +關注

    關注

    30

    文章

    4977

    瀏覽量

    74420

原文標題:一顆芯片的前世今生:設計(前端之編碼)

文章出處:【微信號:IP與SoC設計,微信公眾號:IP與SoC設計】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深入解析HCS300代碼跳變編碼器:安全與高效的完美結(jié)合

    深入解析HCS300代碼跳變編碼器:安全與高效的完美結(jié)合 在電子設備的設計領域,對于安全且高效的遠程無鑰匙進入(RKE)系統(tǒng)的需求與日俱增。Microchip Technology Inc.推出
    的頭像 發(fā)表于 03-25 15:45 ?213次閱讀

    用匯編給CH32寫了一個本機代碼FORTH實現(xiàn)

    碎片問題,所以想著換個retro一點的東西,起初看了一下上個世紀的單片機/微機basic實現(xiàn)非常節(jié)省內(nèi)存,但是實現(xiàn)起來有點復雜,后來看有人在單片機上用FORTH,所以自己拿匯編從頭實現(xiàn)了一個原生
    發(fā)表于 03-19 10:47

    模組介紹

    模組又稱條碼掃描引擎、嵌入式條碼識別器等,是一種集成了條碼掃描和解碼功能的小型化設備組件。它通常被嵌入到各種手持終端、固定式掃描器、自助服務終端等設備中,用于實現(xiàn)對條碼信息的快速、準確讀取。以下
    的頭像 發(fā)表于 01-24 00:05 ?1003次閱讀
    掃<b class='flag-5'>碼</b>模組介紹

    有哪些常見的二維模組類型?

    二維模組是集成了掃描引擎、解碼芯片、光學組件的核心模塊(也叫二維模塊),可直接嵌入自助終端、工業(yè)PDA、智能閘機等設備,實現(xiàn)二維的快速
    的頭像 發(fā)表于 01-24 00:00 ?972次閱讀
    有哪些常見的二維<b class='flag-5'>碼</b>模組類型?

    代碼ATE測試系統(tǒng),輕松完成LED電源模塊的自動化測試

    LED 電源研發(fā)測試及報告周期從 2 天壓縮至 30 分鐘,通過零代碼搭建實現(xiàn)測試方案靈活調(diào)整,內(nèi)置智能數(shù)據(jù)分析模塊自動生成圖表,大幅提升研發(fā)測試效率與數(shù)據(jù)價值。 二、客戶背景 客戶簡介:專注于 LED 電源研發(fā)與生產(chǎn)的專業(yè)電子科技企業(yè) 核心業(yè)
    的頭像 發(fā)表于 12-22 19:50 ?514次閱讀
    零<b class='flag-5'>代碼</b>ATE測試系統(tǒng),輕松完成LED電源模塊的自動化測試

    掃鐳射雕用什么掃槍?

    在電子制造、汽車零部件等行業(yè),鐳射雕(DPM的常見形式)因耐磨、耐高溫的特性成為產(chǎn)品追溯的核心標識。但金屬、塑料等材質(zhì)的反光、曲面凹凸,加上鐳雕可能存在的模糊、低對比度問題,讓普通掃
    的頭像 發(fā)表于 11-20 15:30 ?863次閱讀
    掃鐳射雕<b class='flag-5'>碼</b>用什么掃<b class='flag-5'>碼</b>槍?

    代碼實現(xiàn)茶吧機自定義語音控制定制

    代碼實現(xiàn)茶吧機自定義語音控制定制 前言 茶吧機集成離線語音控制,核心是通過自然語音交互替代手動操作實現(xiàn)全方位體驗升級 —— 既無需起身即可完成燒水、調(diào)溫等操作,省去傳統(tǒng)多步按鍵調(diào)試的繁瑣,又依托
    的頭像 發(fā)表于 10-17 16:43 ?1474次閱讀
    零<b class='flag-5'>代碼</b><b class='flag-5'>實現(xiàn)</b>茶吧機自定義語音控制定制

    自助柜如何集成掃模組,以及如何選擇掃模組?

    在智能自助設備日益普及的今天,掃模組已成為自助柜實現(xiàn)便捷操作的核心部件。那么,自助柜該如何集成掃模組?又該如何選擇合適的掃模組呢??自助柜集成掃
    的頭像 發(fā)表于 10-11 15:10 ?567次閱讀
    自助柜如何集成掃<b class='flag-5'>碼</b>模組,以及如何選擇掃<b class='flag-5'>碼</b>模組?

    工業(yè)物聯(lián)網(wǎng)平臺有哪些低代碼應用

    多協(xié)議支持:主流平臺(如領方案、AIRIOT)內(nèi)置200+工業(yè)協(xié)議驅(qū)動包(如MQTT、Modbus、OPC UA),通過JSON配置實現(xiàn)協(xié)議轉(zhuǎn)換,支持自定義協(xié)議擴展。例如,領方案支持“即插即用”設備接入,10分鐘完成設備上
    的頭像 發(fā)表于 09-24 14:49 ?755次閱讀

    測試小白3分鐘上手,零代碼自動化測試平臺,15分鐘搭建自動化測試方案

    還在為不懂代碼、搭建測試方案耗時久而發(fā)愁?ATECLOUD 零代碼自動化測試平臺,專為自動化測試量身打造,小白3 分鐘就能輕松上手,15 分鐘即可完成自動化測試方案搭建,徹底打破傳統(tǒng)測試的技術(shù)壁壘與效率瓶頸。
    的頭像 發(fā)表于 09-22 17:52 ?1059次閱讀
    測試小白3分鐘上手,零<b class='flag-5'>代碼</b>自動化測試平臺,15分鐘搭建自動化測試方案

    代碼自動化測試平臺ATECLOUD功能詳解

    平臺通過三大優(yōu)勢顯著區(qū)別于傳統(tǒng)系統(tǒng): 1.零代碼快速構(gòu)建:無需編程即可實現(xiàn)測試方案搭建; 2.即插即用設備生態(tài):兼容主流測試儀器,降低集成門檻; 3.全維度數(shù)據(jù)智能:定制化報告模板與數(shù)據(jù)分析中心為行業(yè)獨有功能。 自動化測試平臺 二、核心價值:業(yè)務流程整合與
    的頭像 發(fā)表于 08-20 17:32 ?1597次閱讀
    零<b class='flag-5'>代碼</b>自動化測試平臺ATECLOUD功能詳解

    模塊廠家怎么選?二維模組詳解

    你是否發(fā)現(xiàn),從超市自助結(jié)賬的POS機到小區(qū)的智能門禁,從快遞柜的取件掃到地鐵閘機的乘車識別,二維模組早已滲透到生活與產(chǎn)業(yè)的每一個角落。作為所有掃
    的頭像 發(fā)表于 08-18 15:58 ?992次閱讀
    掃<b class='flag-5'>碼</b>模塊廠家怎么選?二維<b class='flag-5'>碼</b>掃<b class='flag-5'>碼</b>模組詳解

    什么是零代碼平臺?

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

    嵌入式二維器的幾大實用場景及解決方案

    、智慧零售:全渠道消費體驗的基石在自助收銀與移動支付場景中,嵌入式掃器通過微型化設計與多制兼容能力,實現(xiàn)高效交易閉環(huán)。例如遠景達物聯(lián)網(wǎng)的LV5300掃模組采用
    的頭像 發(fā)表于 07-01 14:21 ?1140次閱讀
    嵌入式二維<b class='flag-5'>碼</b>掃<b class='flag-5'>碼</b>器的幾大實用場景及解決方案

    芯知識|廣州唯創(chuàng)電子WT2003H語音芯片播放功能解析與應用指南

    一、連播放功能的核心價值連播放(組合播放)是語音芯片將多段獨立語音片段無縫拼接為連續(xù)語句的技術(shù)。廣州唯創(chuàng)電子WT2003H系列通過高性能32位處理器(主頻120MHz)和優(yōu)化的固件算法,
    的頭像 發(fā)表于 06-27 09:19 ?1228次閱讀
    芯知識|廣州唯創(chuàng)電子WT2003H語音<b class='flag-5'>芯片</b>連<b class='flag-5'>碼</b>播放功能解析與應用指南
    玛曲县| 阿克陶县| 东阿县| 巫溪县| 延吉市| 稷山县| 宜黄县| 泰兴市| 罗源县| 修武县| 息烽县| 衡南县| 临澧县| 龙岩市| 南昌县| 龙川县| 慈溪市| 长岛县| 蓬莱市| 开江县| 渭南市| 新巴尔虎左旗| 永新县| 竹北市| 汶川县| 马边| 正安县| 山阴县| 屏东市| 孟州市| 江达县| 库伦旗| 玉树县| 阿拉尔市| 织金县| 高雄市| 诸城市| 白城市| 屏山县| 太康县| 正定县|