《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業界動態 > <>也不好使—assignAllByName

<>也不好使—assignAllByName

2022-10-01
來源:Spinal FPGA

  從校園畢業從事邏輯設計也有三年時光了,對于邏輯設計,最大的感受就是在設計中DFX的重要性。無論你自己的設計多么牛逼,仿真多么到位,全面的DFX仍舊是必不可少,尤其是跨部門多團隊合作里,好的DFX能夠在系統上線及運維上有極大的幫助。在一些系統設計里,我們往往會對模塊的各路數據接口添加狀態信息DFX以及一些輔助性能分析的工具。這里以Axiite4為例,我們以如下模塊作為待監控模塊:

  

1.png

  這里我們假定對inPort端口添加一些監控信息,我們設計如下模塊作為AxiLite4總線的一個通用監控模塊(只是舉例說明,非真實應用):

  

2.png

  這里我們定義了一個AxiLite4Mon的Component,監控aw,w,b,ar,r五路通路的狀態。這里值得注意的是對于AxiLite4Mon而言,alite接口的所有信號都是輸入。故其書寫形式為in(AxiLite4(32,32))。也正因如此,當我們在BundleTest中去例化AxiLite4Mon時你會發現采用<>對alite接口進行連線時生成RTL時會報錯:

  

3.png

  原因無他,對于AxiLite4Mon的aite接口而言,其全部為輸入信號,而對于inPort接口而言,其既有輸出信號又有輸入信號,從而導致工具無法推斷具體的連接關系。

  對于SpinalHDL了解的小伙伴也許能夠想到,這里把AxiLite4Mon定義擴展為Area而非Component:

  case class AxiLite4Mon(alite:AxiLite4,state:Bits) extends Area{

  state:=alite.aw.fire##alite.w.fire##alite.b.fire##alite.ar.fire##alite.r.fire

  }

  此時在BundleTest中例化就可以寫成:

  AxiLite4Mon(io.inPort,io.state)

  誠然,這種方式從SpinalHDL的角度來講更簡潔,但對接口做一個好的DFX監控不是像這里的這么簡單一行代碼。而且尤其當合作中有人采用Verilog來作為開發語言時最終你生成的代碼功能代碼和這些DFX代碼混合在一起給人看起來代碼過長,難以閱讀(當然我基本不直接閱讀生成的RTL代碼)。因此像這種總線接口的DFX代碼,個人還是傾向于采用Component進行封裝。

  》assignAllByName

  像上面的問題,如果你手動對alite接口展開賦值那我也不攔著,只能說沒學好SpinalHDL。在SpinalHDL里這些復雜的接口都集成擴展于Bundle。但凡你打開過Bundle的代碼實現,你就會發現這里面有一個assignAllByName的方法實現很符合我們的需求:

  

4.png

  我們在Bundle中聲明的信號接口都存儲于elements中,elements的定義形式為:ArrayBuffer[(String, Data)]。這里僅需要根據定義的信號名字找到對應的接口信號進行連接即可,這也是assignAllByName所做的事情,相信有點兒Scala基礎上面的代碼并不難理解。此時像上面的代碼我們就可以輕松實現了:

  

5.png

  這才是SpinalHDL的正確書寫形式。

  除了assignAllByName,Bundle中也定義了下面兩種用于連線賦值的API:

  6.png

  assignSomeByName相比于assignAllByName,其允許that中的部分信號為null,而bundleAssign則可以讓我們自定義連接賦值函數。

  通過這些,相信能基本滿足日常代碼設計需求。




 

更多信息可以來這里獲取==>>電子技術應用-AET<<

圖片.jpg


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 亚洲黄色第一页| 国产精品成人久久久| 九九免费久久这里有精品23| 99久久免费国产精精品| 日本最刺激夫妇交换影片| 亚洲男人的天堂网站| 色欲香天天天综合网站| 国产精品无码一区二区三级| 一本到在线观看视频| 日韩毛片在线视频| 亚洲熟妇av一区| 精品精品国产高清a级毛片| 国产成人精品免费视频大全五级| 99国产精品免费视频观看| 成年网在线观看免费观看网址| 亚洲а∨天堂久久精品| 琪琪see色原网中文| 国产一区二区福利| 日本亚洲精品色婷婷在线影院| 天天干天天插天天射| 中文字幕在线视频一区| 朝鲜女人性猛交| 亚洲精品无码mv在线观看网站| 美女网站一区二区三区| 国产成人片无码视频在线观看| 97久久天天综合色天天综合色hd| 成人乱码一区二区三区AV| 久久婷五月综合| 欧美三级在线观看黄| 亚洲精品无码专区在线在线播放| 精品国偷自产在线视频| 国产人妖ts丝丝magnet| 884hutv四虎永久黄网| 夜夜燥天天燥2022| 一级做a爰片性色毛片黄书| 日本伦理电影网伦理在线电影| 亚洲一区二区三区在线观看蜜桃| 波多野吉衣AV无码| 免费吃奶摸下激烈免费视频| 18精品久久久无码午夜福利| 好大好湿好硬顶到了好爽视频|