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

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

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

探討下clock的基本定義(上)

冬至子 ? 來源:碼農(nóng)的假期 ? 作者:Clark Zhao ? 2023-07-06 15:31 ? 次閱讀

Clock定義指令

Clock分為兩大類,一類是root clock,其定義指令是 create_clock ;另外一類是generated clock,其定義指令是 create_generated_clock 。在做設(shè)計約束時,如何選擇合適的約束指令和指令option是非常關(guān)鍵的,這將直接影響到工具的行為,如果選擇有誤,將會讓工具的行為不符合自己的預(yù)期。

create_clock ** option淺析**

圖片

圖片

圖1 create_clock介紹

如圖1中所示,列出了create_clock的所有option以及其詳細(xì)的解釋。在這些當(dāng)中加“[]”的為可選項,其它的為必選項。其中比較關(guān)鍵的-add,推薦大家最好是都要加上,防止PAD/port共用,造成clock被覆蓋;-name,推薦大家一定要加上,杜絕系統(tǒng)自動分配命名。

create_generated_clock option淺析

圖片

圖片

圖2 create_generated_clock options

如圖2所示,列出了create_generated_clock的所有option以及詳細(xì)解釋,供大家參考。在這些當(dāng)中,用“}”包起來的可以看做是一組參數(shù),有類似的功能。接下來,重點(diǎn)跟大家探討下create_generated_clock中的一些option的使用區(qū)別。

multiply_by/duty_cycle詳解

首先說下multiply_by選項,其意思是倍頻多少,主要應(yīng)用在PLL的倍頻clock的輸出點(diǎn)的clock的定義,如果其master clock的duty cycle不是50%,然而,經(jīng)過PLL之后,duty cycle往往都是設(shè)計成50%輸出,所以可以配合-duty_cycle選項改變定義的clock的duty cycle。

divide_by/edges詳解

divider_by表示除頻的意思,例如最常見的2分頻電路可以用-divide_by 2定義,如圖3右中波形所示。但是有時,design設(shè)計的divider可能是采用ICG抹掉時鐘邊沿的方式實(shí)現(xiàn)的,如圖3左所示。這時經(jīng)過divider之后出來的波形并不是標(biāo)準(zhǔn)的2分頻波形,這時候就不能直接采用-divider_by 2的方式定義分頻之后的clock,因為如果采用了divide_by的方式定義了,那么其工具認(rèn)知的行為波形,跟design實(shí)際輸出的波形是不符的,如果分頻后的時鐘,應(yīng)用在falling edge觸發(fā)的DFF當(dāng)中,可能就會造成工具timing check錯誤。(此處不詳細(xì)解釋了,大家可自己畫波形思考)

圖片

圖3 divide_by/edges options

invert/preinvt/edge_shift詳解

-invert/preinvert分別表示:先定義clock后clock取反還是先clock取反后定義clock。我通過兩個例子跟大家解釋一下。如圖4所示,將剛才圖3右中clock的定義點(diǎn)修改到register的Q-pin上,如果繼續(xù)使用-divide_by 2的方式定義此clock,那么工具認(rèn)為的DFF/Q的波形應(yīng)該是圖4右所示的。但是實(shí)際上,分析可以知道,design輸出的clock波形應(yīng)該是圖4左所示的波形。

工具在做setup timing分析時,是從launch DFF的觸發(fā)沿到capture DFF的下一個觸發(fā)沿之間的時間,所以基于錯誤的clock定義之后,工具的timing check行為將變成圖4右藍(lán)色箭頭所示的行為。但是實(shí)際design預(yù)期的行為應(yīng)該是圖4左藍(lán)色箭頭的行為。從圖中對比可以看出,工具timing check與designer預(yù)期不符。如果要正確的在DFF/Q pin上定義clock,應(yīng)該加上-invert選項(即-divide_by 2 -invert)。

圖片

圖4 invert option示例

雖然在圖4示例中,工具的行為跟designer預(yù)期不符,但是分析可知,此時是加緊了工具的行為,即變得悲觀了,可能結(jié)果是浪費(fèi)一些PPA,但是不至于design最終行為出錯。但是如果出現(xiàn)如圖5所示的情況就不一樣了。如果是按照圖5所示的分頻設(shè)計,我們同樣在DFF/Q pin上定義2分頻的clock,同樣僅使用-divide_by 2的方式,那么定義完之后,工具認(rèn)為的clock波形是如圖5右所示的情況,而design實(shí)際的波形應(yīng)該是圖5左所示的情況。這時工具如果繼續(xù)按照圖5右藍(lán)色箭頭去做setup timing check,很明顯是放松了對整個design的行為約束,這樣導(dǎo)致的后果將是,最終timing收斂完成之后,行為跟實(shí)際design的行為不符,完全沒有達(dá)到預(yù)期的timing約束程度,導(dǎo)致整個design失敗。如果design如圖5中所示,我們想在DFF/Q pin上正確的定義clock,需要加上-preinvert選項(-divide_by 2 -preinvert)。

圖片

圖5 preinvert option示例

在圖4,圖5中的clock定義,上面講到的都是如果采用-divide_by的方式如何正確的定義,那么能不能采用-edge的方式來定義呢?以圖5為例,可以替換成-edge并且配合-edge_shift的方式來定義,其定義方式如圖6所示。但是,此處需要注意,-edge_shift,其后面list列表中的數(shù)目要跟-edge中l(wèi)ist數(shù)目完全一致,并且,-edge_shift后面list中的number可以為正,可以為負(fù),如果為正,則表示右移,為負(fù)則表示左移,其是float類型的,表示右移/左移多少個時間單位。

圖片

圖6 edge_shift option示例

圖6中的定義,那么能不能直接用-edges {2 4 6}的方式呢?以及圖4中的示例,能不能替換為-edges的方式定義呢?可以自己思考一下。

敲黑板,劃重點(diǎn)

在此可以跟大家分享兩條基本原則,有助于分析clock定義是否合理。采用create_generated_clock定義的clock,其一:繼承的mater clock的edge一定要正確;其二:跟master clock之間的實(shí)際通路一定要物理上存在,并且要通??偨Y(jié)起來就是,clock定義要按照實(shí)際design來定義,不能想當(dāng)然,如果在不清楚如何使用option時,可以先手畫波形圖,然后按照圖再去選擇option的使用。

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

    關(guān)注

    43

    文章

    447

    瀏覽量

    49752
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1995

    瀏覽量

    61012
  • PLL電路
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    6386
  • dff
    dff
    +關(guān)注

    關(guān)注

    0

    文章

    26

    瀏覽量

    3392
收藏 人收藏

    評論

    相關(guān)推薦

    clock

    clock信號并聯(lián)電容的作用,機(jī)理是什么,在信號的影響是什么
    發(fā)表于 09-05 22:03

    Stm32_Clock_Init函數(shù)如何定義

    Stm32_Clock_Init,這個函數(shù)我看的一些資料似乎都是突兀的就提出來了,沒有給出是如何定義的,而且我看了看,每本資料添加的函數(shù)庫都不一樣,我的是和資料的就對不上,所以似乎
    發(fā)表于 03-16 00:37

    介紹一STM32L151的clock tree

    首先來看一STM32L151的clock tree, 可以看到TIM2-7是在APB1的, APB1的最大時鐘配置是32MHz, 接下來我的及進(jìn)行一我的項目中的始終配置說明,后續(xù)
    發(fā)表于 07-16 10:03

    基于Stm32_Clock_Init()函數(shù)的流水燈設(shè)計

    原子的第一個例程流水燈中用了 Stm32_Clock_Init()函數(shù),現(xiàn)在來解析一:引用時Stm32_Clock_Init(9);定義(此處省略了跑OS時的代碼)看程序前,請確保理
    發(fā)表于 08-09 08:29

    什么是Clock Tree

    同步博客地址:從STM32開始的RoboMaster生活:進(jìn)階篇 V [Clock Tree]項目&教程倉庫:-STM32-RoboMaster-1.0 什么是Clock Tree?1.1
    發(fā)表于 08-11 08:41

    探討深度學(xué)習(xí)在嵌入式設(shè)備的應(yīng)用

    下面來探討深度學(xué)習(xí)在嵌入式設(shè)備的應(yīng)用,具體如下:1、深度學(xué)習(xí)的概念源于人工神經(jīng)網(wǎng)絡(luò)的研究,包含多個隱層的多層感知器(MLP) 是一種原始的深度學(xué)習(xí)結(jié)構(gòu)。深度學(xué)習(xí)通過組合低層特征形成更加抽象
    發(fā)表于 10-27 08:02

    請教一各位標(biāo)準(zhǔn)單元庫中clock buffer的設(shè)計很復(fù)雜嗎

    buffer的設(shè)計都是這么復(fù)雜嗎?有什么普通的clock buffer結(jié)構(gòu)嗎?搜了一中文的paper,基本很少有講時鐘buffer的設(shè)計。謝謝各位!
    發(fā)表于 06-14 11:44

    ICS307 Clock Generator

    ICS307 Clock Generator。
    發(fā)表于 03-23 10:41 ?0次下載

    探討軟件定義未來醫(yī)療的新藍(lán)圖

    東軟解決方案論壇2021“軟件定義未來醫(yī)療”分論壇正式上線。東軟集團(tuán)副總裁兼醫(yī)療解決方案事業(yè)本部總經(jīng)理姚勇、東軟漢楓董事長兼CEO盧朝霞與醫(yī)療領(lǐng)域的行業(yè)專家、客戶一起,共同探討“十四五”時期,建設(shè)數(shù)字中國戰(zhàn)略背景,軟件
    的頭像 發(fā)表于 01-21 15:41 ?4132次閱讀

    DC/DC評估篇 損耗探討-定義和發(fā)熱

    探討損耗之前,我們先來看一損耗相關(guān)的定義以及發(fā)熱和結(jié)溫。損耗與效率:為了更好地理解,我們來看一效率的定義、以及效率與損耗之間的關(guān)系。效
    的頭像 發(fā)表于 03-01 11:49 ?2094次閱讀
    DC/DC評估篇 損耗<b class='flag-5'>探討</b>-<b class='flag-5'>定義</b>和發(fā)熱

    深入探討軟件定義架構(gòu)及其意義

    在上期文章中,我們了解了現(xiàn)代GNSS模擬中的軟件定義架構(gòu),并與傳統(tǒng)架構(gòu)進(jìn)行了對比,本期文章中我們將繼續(xù)深入探討軟件定義架構(gòu)及其意義。
    的頭像 發(fā)表于 02-08 10:40 ?671次閱讀
    深入<b class='flag-5'>探討</b>軟件<b class='flag-5'>定義</b>架構(gòu)及其意義

    怎樣通過設(shè)置clock group來確認(rèn)各個時鐘之間的關(guān)系?

    今天我們要介紹的時序分析基本概念是 **clock group,簡稱時鐘組。** 定義完時鐘后,我們也需要通過設(shè)置clock group來確認(rèn)各個時鐘之間的關(guān)系。
    的頭像 發(fā)表于 07-03 14:37 ?1438次閱讀
    怎樣通過設(shè)置<b class='flag-5'>clock</b> group來確認(rèn)各個時鐘之間的關(guān)系?

    時序分析基本概念介紹&lt;generate clock&gt;

    今天我們要介紹的時序分析概念是generate clock。中文名為生成時鐘。generate clock定義在sdc中,是一個重要的時鐘概念。
    的頭像 發(fā)表于 07-06 10:34 ?2139次閱讀
    時序分析基本概念介紹&lt;generate <b class='flag-5'>clock</b>&gt;

    探討clock的基本定義

    探討今天的主題,首先需要跟大家一起學(xué)習(xí)clock latency這個基本概念。Clock latency通俗意義是指
    的頭像 發(fā)表于 07-06 15:34 ?3964次閱讀
    <b class='flag-5'>探討</b><b class='flag-5'>下</b><b class='flag-5'>clock</b>的基本<b class='flag-5'>定義</b>(<b class='flag-5'>下</b>)

    淺談相噪儀的抖動

    在說明這幾種定義之前,我們先來對時鐘,也就是clock的周期做一個定義
    的頭像 發(fā)表于 01-08 13:30 ?630次閱讀
    淺談相噪儀<b class='flag-5'>上</b>的抖動