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

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

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

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

一鍵獲取邏輯設(shè)計(jì)中的所有跨時(shí)鐘路徑

Spinal FPGA ? 來源:Spinal FPGA ? 2023-09-15 14:06 ? 次閱讀

編 者 按

之前在玩FPGA時(shí),對(duì)于一個(gè)系統(tǒng)工程,當(dāng)邏輯電路設(shè)計(jì)完成之后,一般會(huì)先拿給Vivado/Quartus先去跑一般綜合,然后去獲取所有的跨時(shí)鐘路徑,在ASIC里,基本也是拿EDA工具去分析獲取。今兒個(gè)搞個(gè)小demo,看在SpinalHDL當(dāng)設(shè)計(jì)做完后,如何一鍵提取整個(gè)工程里所有的跨時(shí)鐘路徑。

這個(gè)Demo會(huì)依賴spinal.lib.tools.DataAnalyzer,此次測試在1.9.3版本上進(jìn)行。

獲取跨時(shí)鐘路徑

得益于SpinalHDL對(duì)時(shí)鐘域嚴(yán)格的劃分,在SpinalHDL中,如果存在跨時(shí)鐘域,那么必須顯示的添加Tag進(jìn)行標(biāo)示,否則在生成電路時(shí)將會(huì)直接報(bào)錯(cuò)。以BufferCC為例:

class BufferCC[T <: Data](val dataType: T, init : => T, val bufferDepth: Option[Int], val randBoot : Boolean = false) extends Component {
def getInit() : T = init
val finalBufferDepth = BufferCC.defaultDepthOptioned(ClockDomain.current, bufferDepth)
assert(finalBufferDepth >= 1)

val io = newBundle {
val dataIn = in(cloneOf(dataType))
val dataOut = out(cloneOf(dataType))
}

val buffers= Vec(Reg(dataType, init),finalBufferDepth)
if(randBoot) buffers.foreach(_.randBoot())

buffers(0) := io.dataIn
buffers(0).addTag(crossClockDomain)
for(i <- 1until finalBufferDepth) {
buffers(i) := buffers(i - 1)
buffers(i).addTag(crossClockBuffer)
}

io.dataOut := buffers.last
}


因?yàn)槭强鐣r(shí)鐘域,所以buffers(0)必須添加Tag標(biāo)簽crossClockDomain,那么基于此,我們完全可以找出整個(gè)工程里的所有跨時(shí)鐘路徑的源節(jié)點(diǎn),目的節(jié)點(diǎn)。


下面給出一個(gè)demo:

importspinal.core._
importspinal.lib._
importspinal.lib.tools.DataAnalyzer

importscala.collection.mutable.ArrayBuffer

object Test extendsApp {
def getCrossClockFanIn(signal: BaseType, clockDomain: ClockDomain): ArrayBuffer[BaseType] = {
val signalList = ArrayBuffer[BaseType]()
for(srcSignal <- DataAnalyzer.toAnalyzer(signal).getFanIn) {
??????if(srcSignal.isReg) {
if(srcSignal.clockDomain != clockDomain) {
signalList.append(srcSignal)
}
} else{
signalList ++= getCrossClockFanIn(srcSignal, clockDomain)
}
}
signalList
}

def reportCrossClockSignal(toplevel: Component) = {
toplevel.walkComponents { c=>
c.dslBody.walkDeclarations {
casesignal: BaseType=>{
if(signal.hasTag(crossClockDomain)) {
val fanInRegList = getCrossClockFanIn(signal, signal.clockDomain)
for(reg <- fanInRegList) {
??????????????println(s"src reg:${reg.getDisplayName()}	 hierarchy:${reg.component.getPath(".")} src clock:${reg.clockDomain.clock.getDisplayName()}	dst reg:${signal.getDisplayName}	hierarchy:${signal.component.getPath(".")} dst clock:${signal.clockDomain.clock.getDisplayName()}")
}
}
}
case_ =>
}
}
}

val report = SpinalSystemVerilog(newStreamFifoCC[UInt](UInt(8bits), 512, ClockDomain.external("clka"), ClockDomain.external("clkb")))
reportCrossClockSignal(report.toplevel)

val report1 = SpinalSystemVerilog(newStreamCCByToggle[Stream[UInt]](Stream(UInt(8bits)), ClockDomain.external("clka"), ClockDomain.external("clkb")))
reportCrossClockSignal(report1.toplevel)
}


在這個(gè)Demo中,采用了StreamFifoCC以及StreamCCByToggle來做演示。兩個(gè)模塊的跨時(shí)鐘域路徑分析結(jié)果如下:

StreamFifoCC

srcreg:popCC_ptrToPushhierarchy:toplevelsrcclock:clkb_clkdstreg:buffers_0hierarchy:toplevel.popToPushGray_bufferccdstclock:clka_clk
srcreg:pushCC_pushPtrGrayhierarchy:toplevelsrcclock:clka_clkdstreg:buffers_0hierarchy:toplevel.pushToPopGray_bufferccdstclock:clkb_clk


StreamCCByToggle

srcreg:pushArea_data_validhierarchy:toplevelsrcclock:clka_clkdstreg:popArea_stream_rData_validhierarchy:topleveldstclock:clkb_clk
srcreg:pushArea_data_readyhierarchy:toplevelsrcclock:clka_clkdstreg:popArea_stream_rData_readyhierarchy:topleveldstclock:clkb_clk
srcreg:pushArea_data_payloadhierarchy:toplevelsrcclock:clka_clkdstreg:popArea_stream_rData_payloadhierarchy:topleveldstclock:clkb_clk
srcreg:popArea_hithierarchy:toplevelsrcclock:clkb_clkdstreg:buffers_0hierarchy:toplevel.outHitSignal_bufferccdstclock:clka_clk
srcreg:pushArea_targethierarchy:toplevelsrcclock:clka_clkdstreg:buffers_0hierarchy:toplevel.pushArea_target_bufferccdstclock:clkb_clk

完全符合預(yù)期~

getCrossClockFanIn

該函數(shù)的作用用于針對(duì)指定信號(hào)其所有的扇入驅(qū)動(dòng)中不在一個(gè)時(shí)鐘域的寄存器。輸入?yún)?shù)有兩個(gè):

  • signal:待搜索信號(hào)

  • clockDomain:signal信號(hào)對(duì)應(yīng)的時(shí)鐘域

    這里面存在一個(gè)遞歸調(diào)用,通過調(diào)用DataAnalyzer中的getFanIn,獲取signal信號(hào)的所有扇入,對(duì)于其扇入信號(hào)類型,存在以下三種情況:

  • 扇入類型為寄存器,和signal不屬于同一個(gè)時(shí)鐘域,那么將信號(hào)添加到匹配列表中

  • 扇入類型為寄存器,但和signal屬于同一個(gè)時(shí)鐘域,則不做任何處理

  • 扇入類型為非寄存器,那么遞歸調(diào)用getCrossClockFanIn進(jìn)一步搜索

reportCrossClockSignal

該函數(shù)的作用是對(duì)于傳入的toplevel模塊,會(huì)便利搜索其中所有帶有crossClockDomain標(biāo)簽的信號(hào),通過調(diào)用getCrossClockFanIn進(jìn)一步得到其相應(yīng)的跨時(shí)鐘域路徑。在得到跨時(shí)鐘域路徑后,這里僅做了信息打印,讀者有需要可自行擴(kuò)展,比如生成針對(duì)單bit信號(hào)的約束,對(duì)于多比特信號(hào)的約束等。

寫在最后

這里僅能針對(duì)SpinalHDL代碼中的電路進(jìn)行分析。

審核編輯:湯梓紅

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

    關(guān)注

    1636

    文章

    21841

    瀏覽量

    608487
  • 邏輯電路
    +關(guān)注

    關(guān)注

    13

    文章

    496

    瀏覽量

    42861
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1759

    瀏覽量

    132199
  • 邏輯設(shè)計(jì)
    +關(guān)注

    關(guān)注

    1

    文章

    41

    瀏覽量

    11672
  • Vivado
    +關(guān)注

    關(guān)注

    19

    文章

    819

    瀏覽量

    67291

原文標(biāo)題:一鍵獲取邏輯設(shè)計(jì)中的所有跨時(shí)鐘路徑

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    vivado約束案例:時(shí)鐘路徑分析報(bào)告

    時(shí)鐘路徑分析報(bào)告分析從個(gè)時(shí)鐘域(源時(shí)鐘)跨越到另
    的頭像 發(fā)表于 11-27 11:11 ?6006次閱讀
    vivado約束案例:<b class='flag-5'>跨</b><b class='flag-5'>時(shí)鐘</b>域<b class='flag-5'>路徑</b>分析報(bào)告

    方便快捷:PADS的一鍵快捷功能:一鍵灌銅,一鍵檢查DRC

    傾情奉獻(xiàn)給大家,非常實(shí)用的快捷功能一鍵灌銅: [hide] [/hide]一鍵檢查連通性:[hide][/hide]一鍵檢查安全間距::[hide] [/hide]一鍵清除Error標(biāo)
    發(fā)表于 11-07 15:06

    電信一鍵免流量軟件電信一鍵免流軟件app

    ,獨(dú)家年技術(shù)完成開發(fā)的,經(jīng)過測試,全國使用沒有地區(qū)限制,全免支持所有軟件完全免流量,該軟件采用一鍵免流模式,簡單方便,真正的一鍵免流!
    發(fā)表于 07-19 10:37

    proteus漢化軟件 一鍵漢化

    ` 本帖最后由 電子工程師2014 于 2016-8-21 18:34 編輯 proteus漢化軟件一鍵漢化選好安裝路徑一鍵漢化`
    發(fā)表于 08-21 13:51

    邏輯設(shè)計(jì)是什么意思

    偏硬件:接口電路的門組合電路;偏軟件:算法、接口控制器實(shí)現(xiàn)的狀態(tài)機(jī)群或時(shí)序電路。隨著邏輯設(shè)計(jì)的深入,復(fù)雜功能設(shè)計(jì)般基于同步時(shí)序電路方式。此時(shí),
    發(fā)表于 11-10 06:39

    stm32的ISP一鍵下載的原理是什么

    三種工作模式boot 0boot 1啟動(dòng)方式0X內(nèi)部FLASH10系統(tǒng)存儲(chǔ)器11內(nèi)部SRAM ISP一鍵下載電路上面的圖1是正點(diǎn)原子精英版的ISP一鍵下載原理圖,圖2是mcuisp燒錄軟件。先看圖2我標(biāo)出來的序號(hào)1
    發(fā)表于 01-27 07:04

    規(guī)模集成時(shí)序邏輯設(shè)計(jì)

    規(guī)模集成時(shí)序邏輯設(shè)計(jì):計(jì)數(shù)器:在數(shù)字邏輯系統(tǒng),使用最多的時(shí)序電路要算計(jì)數(shù)器了。它是種對(duì)輸入脈沖信號(hào)進(jìn)行計(jì)數(shù)的時(shí)序
    發(fā)表于 09-01 09:09 ?13次下載

    組合邏輯設(shè)計(jì)實(shí)例_國外

    組合邏輯設(shè)計(jì)實(shí)例_國外:
    發(fā)表于 12-16 15:08 ?24次下載
    組合<b class='flag-5'>邏輯設(shè)計(jì)</b>實(shí)例_國外

    Java如何獲取文件的路徑

    Java 開發(fā)我們經(jīng)常要獲取文件的路徑,比如讀取配置文件等等。今天我們就關(guān)于文件的路徑和如何讀取文件簡單地探討下。
    的頭像 發(fā)表于 02-22 15:03 ?5452次閱讀

    成品電路一鍵開關(guān)電路

    一鍵開關(guān)電路,電路通過了仿真,并已經(jīng)用于小批量產(chǎn)品。
    發(fā)表于 03-09 15:11 ?24次下載

    PLC一鍵啟停不同方式的程序編寫

    采用位邏輯指令結(jié)合PLC工作原理實(shí)現(xiàn)一鍵啟停的程序編寫。 怎樣才能開始掌握PLC一鍵啟停不同方式的程序編寫呢?
    發(fā)表于 03-14 11:39 ?1401次閱讀

    一鍵開關(guān)電路的好處?生活一鍵開關(guān)電路有哪些?

    一鍵開關(guān)電路的好處?生活一鍵開關(guān)電路有哪些? 一鍵開關(guān)電路是指個(gè)電路設(shè)計(jì),可以用個(gè)按鈕或
    的頭像 發(fā)表于 10-22 15:18 ?2569次閱讀

    變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵順控有區(qū)別嗎?

    變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵順控技術(shù)雖然都涉及到“一鍵順控”的概念,但它們?cè)趹?yīng)用范圍和具體實(shí)現(xiàn)上有所不同,因此變電站一鍵順控系統(tǒng)和開關(guān)柜一鍵
    的頭像 發(fā)表于 07-31 13:34 ?782次閱讀
    變電站<b class='flag-5'>一鍵</b>順控系統(tǒng)和開關(guān)柜<b class='flag-5'>一鍵</b>順控有區(qū)別嗎?

    一鍵斷電開關(guān)的種類有哪些

    內(nèi)部的小電流控制大電流,達(dá)到弱電控制強(qiáng)電的目的。 特點(diǎn) :快速、安全,能夠切斷所有連接的電源,適合需要快速切斷電源的場景。 應(yīng)用場景 :家庭、辦公室、工廠等需要一鍵控制多個(gè)電源的場景。 2. 智能開關(guān)式一鍵斷電 定義 :隨著智能
    的頭像 發(fā)表于 09-13 16:45 ?1784次閱讀

    開關(guān)柜一鍵順控在一鍵停電、一鍵送電的作用

    蜀瑞創(chuàng)新為大家科普,開關(guān)柜一鍵順控技術(shù)在一鍵停電和一鍵送電中發(fā)揮了快速響應(yīng)、減少人為錯(cuò)誤、提高安全性、簡化操作流程、降低操作風(fēng)險(xiǎn)、提高送電成功率等綜合優(yōu)勢,對(duì)于提升電力系統(tǒng)的運(yùn)行效率、安全性以及自動(dòng)化水平具有重要意義。
    的頭像 發(fā)表于 02-27 09:13 ?127次閱讀
    主站蜘蛛池模板: 亚洲欧美在无码片一区二区 | 午夜色情影院色a国产 | 69日本xxⅹxxxxx18 | 2019欧洲hd| 老女老肥熟国产在线视频 | 日本19xxxx撤尿 | 古装性艳史电影在线看 | 久久人妻无码毛片A片麻豆 久久人妻熟女中文字幕AV蜜芽 | 免费无遮挡又黄又爽网站 | 国产乱码伦人偷精品视频 | 99久久精品久久久久久清纯 | 久久精品国产亚洲AV未满十八 | 亚洲精品嫩草研究院久久 | 欧美乱子YELLOWVIDEO | 免费精品国偷自产在线在线 | 青草国产超碰人人添人人碱 | 第一次玩老妇真实经历 | 青草国产在线视频免费 | 色一欲一性一乱一区二区三区 | 国产成人拍精品免费视频爱情岛 | 综合亚洲桃色第一影院 | 久久国内精品视频 | 最新国产麻豆精品 | 欧美ZC0O人与善交的最新章节 | 各种肉黄浪荡故事集 | 丰满少妇67194视频 | 一个人在线观看视频免费 | 久久久久毛片免费观看 | 国产亚洲欧洲日韩在线三区 | jyzzjyzzz视频国产在线观看 | 色戒西瓜视频 | 岛国大片在线播放高清 | 有人有片的观看免费视频 | AV天堂AV亚洲啪啪久久无码 | 好男人在线视频 | 美女内射少妇一区二区四区 | 高清欧美videos sexo | 总攻催眠受的高h巨肉np | 国产精品久久人妻无码蜜 | 国产不卡一卡2卡三卡4卡网站 | 影音先锋av333资源网 |