吴忠躺衫网络科技有限公司

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

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

3天內不再提示

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

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

Clock定義指令

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

create_clock ** option淺析**

圖片

圖片

圖1 create_clock介紹

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

create_generated_clock option淺析

圖片

圖片

圖2 create_generated_clock options

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

multiply_by/duty_cycle詳解

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

divide_by/edges詳解

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

圖片

圖3 divide_by/edges options

invert/preinvt/edge_shift詳解

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

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

圖片

圖4 invert option示例

雖然在圖4示例中,工具的行為跟designer預期不符,但是分析可知,此時是加緊了工具的行為,即變得悲觀了,可能結果是浪費一些PPA,但是不至于design最終行為出錯。但是如果出現如圖5所示的情況就不一樣了。如果是按照圖5所示的分頻設計,我們同樣在DFF/Q pin上定義2分頻的clock,同樣僅使用-divide_by 2的方式,那么定義完之后,工具認為的clock波形是如圖5右所示的情況,而design實際的波形應該是圖5左所示的情況。這時工具如果繼續按照圖5右藍色箭頭去做setup timing check,很明顯是放松了對整個design的行為約束,這樣導致的后果將是,最終timing收斂完成之后,行為跟實際design的行為不符,完全沒有達到預期的timing約束程度,導致整個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列表中的數目要跟-edge中list數目完全一致,并且,-edge_shift后面list中的number可以為正,可以為負,如果為正,則表示右移,為負則表示左移,其是float類型的,表示右移/左移多少個時間單位。

圖片

圖6 edge_shift option示例

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

敲黑板,劃重點

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 分頻器
    +關注

    關注

    43

    文章

    447

    瀏覽量

    50075
  • 觸發器
    +關注

    關注

    14

    文章

    2003

    瀏覽量

    61350
  • PLL電路
    +關注

    關注

    0

    文章

    92

    瀏覽量

    6475
  • dff
    dff
    +關注

    關注

    0

    文章

    26

    瀏覽量

    3451
收藏 人收藏

    評論

    相關推薦

    clock

    clock信號并聯電容的作用,機理是什么,在信號的影響是什么
    發表于 09-05 22:03

    Stm32_Clock_Init函數如何定義

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

    介紹一STM32L151的clock tree

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

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

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

    什么是Clock Tree

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

    探討深度學習在嵌入式設備的應用

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

    請教一各位標準單元庫中clock buffer的設計很復雜嗎

    buffer的設計都是這么復雜嗎?有什么普通的clock buffer結構嗎?搜了一中文的paper,基本很少有講時鐘buffer的設計。謝謝各位!
    發表于 06-14 11:44

    ICS307 Clock Generator

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

    探討軟件定義未來醫療的新藍圖

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

    DC/DC評估篇 損耗探討-定義和發熱

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

    深入探討軟件定義架構及其意義

    在上期文章中,我們了解了現代GNSS模擬中的軟件定義架構,并與傳統架構進行了對比,本期文章中我們將繼續深入探討軟件定義架構及其意義。
    的頭像 發表于 02-08 10:40 ?779次閱讀
    深入<b class='flag-5'>探討</b>軟件<b class='flag-5'>定義</b>架構及其意義

    怎樣通過設置clock group來確認各個時鐘之間的關系?

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

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

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

    探討clock的基本定義

    探討今天的主題,首先需要跟大家一起學習clock latency這個基本概念。Clock latency通俗意義是指
    的頭像 發表于 07-06 15:34 ?4512次閱讀
    <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的周期做一個定義。
    的頭像 發表于 01-08 13:30 ?903次閱讀
    淺談相噪儀<b class='flag-5'>上</b>的抖動
    真人百家乐| 龙虎斗网站| 百家乐官网室系统软件| 单机百家乐官网的玩法技巧和规则 | 永利高百家乐官网现金网| 大发娱乐城官网| 博彩百家乐官网在线| 百家乐在线作弊| 太阳城代理最新网址| 顶尖百家乐官网开户| 免费百家乐官网预测软件| 威尼斯人娱乐城游戏lm0| 百家乐官网路纸计算| 百家乐3宜3忌| 大发888破解老虎机| 南京百家乐官网赌博现场被抓| 百家乐路珠多少钱| 大发娱乐城官网| 路单百家乐官网的玩法技巧和规则| 明珠百家乐的玩法技巧和规则| 太阳城金旭园| 金城百家乐官网玩法平台| 百家乐有无技巧| 平谷区| 百家乐游戏机博彩正网| 真人百家乐| 百家乐游戏怎样玩| 皇冠现金网网址| 赌百家乐官网的玩法技巧和规则| 百家乐技巧平注常赢法| 百家乐官网赌博机怎么玩| 代理百家乐试玩| 百家乐官网网络视频游戏| 百家乐开闲几率| 大发888bocai官方下载| 百家乐官网换人| 百家乐园选蒙| 百家乐官网赌场策略| 威尼斯人娱乐成| 扑克百家乐官网赌器| 大发888洗码|