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

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

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

時(shí)序違例的修正與時(shí)序優(yōu)化的思考方向

電子工程師 ? 來(lái)源:未知 ? 作者:工程師李察 ? 2018-09-15 08:23 ? 次閱讀

時(shí)序邏輯電路示意圖如下。前后兩級(jí)寄存器之間有一個(gè)組合邏輯運(yùn)算電路。

時(shí)序違例的修正與時(shí)序優(yōu)化的思考方向

假設(shè)寄存器的建立時(shí)間要求為tsetup, 保持時(shí)間要求為thold, 輸出延時(shí)為tcq(這些參數(shù)只要工藝庫(kù)或者器件確定了,就是確定的);組合邏輯電路的運(yùn)算延時(shí)為tlogic; 兩級(jí)寄存器之間的clk線路延時(shí)為tclk_delay;clk的隨機(jī)抖動(dòng)為tjitter;tcycle為時(shí)鐘周期。故電路必須滿足如下建立時(shí)間,保持時(shí)間要求:

tsetup_slack=tcycle-(tcq+tlogic) -tsetup+tclk_delay-tjitter>0

thold_slack=tcq+tlogic-thold-tclk_delay-tjitter>0

當(dāng)tsetup_slack要求不滿足時(shí),我們可以選擇增大tcycle。當(dāng)然這就使得電路的整體時(shí)鐘頻率下降,從而速度下降。

從另一個(gè)角度考慮,我們可以通過(guò)減少tlogic來(lái)使得電路的建立時(shí)間裕量滿足要求。 達(dá)到這個(gè)目的,只有兩個(gè)辦法:

第一是優(yōu)化,簡(jiǎn)化組合邏輯電路,使得電路的延時(shí)下降。如果是ASIC設(shè)計(jì),我們可以結(jié)合卡諾圖,布爾邏輯等式代換,狄摩根定律等去對(duì)邏輯電路盡量做到優(yōu)化。如果是FPGA設(shè)計(jì),我們可以結(jié)合FPGA器件的底層單元(例如查找表(LUT))的基本邏輯功能去做邏輯優(yōu)化。

例如,在做ASIC的時(shí)候,要實(shí)現(xiàn)如下邏輯功能:

輸入 輸出
A C D B
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0

經(jīng)過(guò)卡諾圖化簡(jiǎn)得到布爾表達(dá)式如下:

B=C’D+A’D+ACD’

還可以進(jìn)一步化簡(jiǎn)

B=C’D+A’D+ACD’=(A’+C’)D+ACD’=(AC)’D+ACD’=(AC)^D

最后發(fā)現(xiàn)只要一個(gè)與門,后面跟一個(gè)異或門就可以實(shí)現(xiàn)這個(gè)邏輯。

(1)所以我們?cè)趯?a target="_blank">verilog的時(shí)候如果用門級(jí)電路去描述這個(gè)邏輯電路時(shí):

assign B = (A&D)^D;

或者用結(jié)構(gòu)化的方式去描述時(shí):

and(AC,A,C);

xor(B,AC,D);

其綜合對(duì)應(yīng)出來(lái)的電路便可能是最簡(jiǎn)單的,當(dāng)然這跟綜合庫(kù)有關(guān)。

(2)但是如果我們用行為級(jí)的方式去描述這個(gè)邏輯時(shí),例如如下。

always @( * )

if( {A,C,D} == 3b001 || {A,C,D} == 3b011 || {A,C,D}==101 ||{A,C,D} == 3b110)

B = 1b1;

else

B = 0;

那么其綜合得到的電路就是不可控的了,雖然EDA工具會(huì)對(duì)其做優(yōu)化。因此這樣綜合出來(lái)的電路如果不是最簡(jiǎn)的,那么其延時(shí)就大。

所以在描述電路的時(shí)候,如果時(shí)序要求很高,最好要考慮邏輯化簡(jiǎn)和器件適應(yīng)。

第二種方式便是利用流水線技術(shù),使得兩級(jí)寄存器之間組合邏輯電路的運(yùn)算量減少,從而使得tlogic減少。

例如對(duì)于一個(gè)組合邏輯電路,其功能是實(shí)現(xiàn)8bit數(shù)的全加器。我們可以將其劃分成兩個(gè)4bit數(shù)的全加器。如下圖,原本是要實(shí)現(xiàn)兩個(gè)8bit數(shù)A[7:0],B[7:0],外加一個(gè)進(jìn)位位c_in相加的,如下。

assign{c_out,sum[7:0]} =A[7:0] + B[7:0] +c_in ;

現(xiàn)在變成了前面一個(gè)全加器實(shí)現(xiàn)

assign {c_out1,sum1[3:0]} = A[3:0] + B[3:0] + c_in ;

后面一個(gè)全加器實(shí)現(xiàn)

assign{c_out,sum2[3:0]} = A[7:4] + B[7:4] + c_out1 ;

最后再將sum1,sum2合并得到sum,如下。

assign sum = {sum2,sum1};

時(shí)序違例的修正與時(shí)序優(yōu)化的思考方向

第一個(gè)全加器算出{c_out1,sum1[3:0]} = A[3:0] + B[3:0] + c_in 之后,在時(shí)鐘有效沿到來(lái)時(shí),將c_out1,sum1[3:0],A[7:4],B[7:4] 送到中間一級(jí)寄存器暫存;然后第二個(gè)電路做{c_out,sum2[3:0]} = A[7:4] + B[7:4] + c_out1 運(yùn)算,并將結(jié)果sum1,sum2合并得到sum。這樣一來(lái)每?jī)杉?jí)寄存器之間的全加器變成了4bit的全加器,電路延時(shí)肯定得到降低了。從而tlogic降低。

當(dāng)然還可以進(jìn)一步優(yōu)化,使得流水級(jí)數(shù)更多。一般來(lái)說(shuō)保持時(shí)間不會(huì)出現(xiàn)違例情況,因?yàn)榧拇嫫鞯妮敵鲅訒r(shí)tcq,一般要大于thold。如果出現(xiàn)違例,從式子

thold_slack=tcq+tlogic-thold-tclk_delay-tjitter>0

我們可以考慮適當(dāng)增加tlogic,或者后端布局布線時(shí)去減少tclk_delay。

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

    關(guān)注

    13

    文章

    490

    瀏覽量

    42452
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

    119205
  • 時(shí)序
    +關(guān)注

    關(guān)注

    5

    文章

    370

    瀏覽量

    37186

原文標(biāo)題:時(shí)序違例的修正與時(shí)序優(yōu)化的思考方向

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    優(yōu)化高速接口的時(shí)序裕量

    本文將對(duì)源同步定時(shí)如何優(yōu)化高速接口時(shí)序裕量進(jìn)行討論。時(shí)序預(yù)算是對(duì)系統(tǒng)正常工作所需時(shí)序參數(shù)或時(shí)序要求的計(jì)算。
    發(fā)表于 03-20 10:46 ?2559次閱讀
    <b class='flag-5'>優(yōu)化</b>高速接口的<b class='flag-5'>時(shí)序</b>裕量

    靜態(tài)時(shí)序的分析原理及詳細(xì)過(guò)程

    靜態(tài)時(shí)序分析是檢查IC系統(tǒng)時(shí)序是否滿足要求的主要手段。以往時(shí)序的驗(yàn)證依賴于仿真,采用仿真的方法,覆蓋率跟所施加的激勵(lì)有關(guān),有些時(shí)序違例會(huì)被忽
    的頭像 發(fā)表于 11-25 11:03 ?9682次閱讀
    靜態(tài)<b class='flag-5'>時(shí)序</b>的分析原理及詳細(xì)過(guò)程

    UltraFast設(shè)計(jì)方法時(shí)序收斂快捷參考指南

    資源利用率、邏輯層次和時(shí)序約束。 2時(shí)序基線設(shè)定:在每個(gè)實(shí)現(xiàn)步驟后檢查并解決時(shí)序違例,從而幫助布線后收斂時(shí)序。 3
    的頭像 發(fā)表于 11-05 15:10 ?4888次閱讀
    UltraFast設(shè)計(jì)方法<b class='flag-5'>時(shí)序</b>收斂快捷參考指南

    vivado:時(shí)序分析與約束優(yōu)化

    能夠有一些時(shí)序問(wèn)題,我們?cè)偻ㄟ^(guò)時(shí)序分析的方法對(duì)它進(jìn)行優(yōu)化。我們這里把原本的100M時(shí)鐘改成了200M時(shí)鐘,具體步驟如下: 一:更改時(shí)鐘之后進(jìn)行綜合,并打開timing analysis 二:通過(guò)
    發(fā)表于 08-22 11:45

    出現(xiàn)時(shí)序違例的原因及解決辦法

      如果出現(xiàn)了時(shí)序違例,我們會(huì)關(guān)注兩點(diǎn):  為什么會(huì)出現(xiàn)時(shí)序違例?  如何解決?  首先我們要搞清楚時(shí)序是在哪個(gè)階段
    發(fā)表于 01-08 17:10

    時(shí)序約束與時(shí)序分析 ppt教程

    時(shí)序約束與時(shí)序分析 ppt教程 本章概要:時(shí)序約束與時(shí)序分析基礎(chǔ)常用時(shí)序概念QuartusII中的時(shí)序
    發(fā)表于 05-17 16:08 ?0次下載

    后端時(shí)序修正基本思路

    后端時(shí)序修正基本思路,后端對(duì)時(shí)序的影響從0.18開始,在整體影響中的比重也在隨著工藝的變化而變得敏感。
    發(fā)表于 10-26 09:28 ?2852次閱讀
    后端<b class='flag-5'>時(shí)序</b><b class='flag-5'>修正</b>基本思路

    基于FPGA時(shí)序優(yōu)化設(shè)計(jì)

    現(xiàn)有的工具和技術(shù)可幫助您有效地實(shí)現(xiàn)時(shí)序性能目標(biāo)。當(dāng)您的FPGA 設(shè)計(jì)無(wú)法滿足時(shí)序性能目標(biāo)時(shí),其原因可能并不明顯。解決方案不僅取決于FPGA 實(shí)現(xiàn)工具為滿足時(shí)序要求而優(yōu)化設(shè)計(jì)的能力,還取
    發(fā)表于 11-18 04:32 ?3193次閱讀

    時(shí)序約束的步驟分析

    FPGA中的時(shí)序問(wèn)題是一個(gè)比較重要的問(wèn)題,時(shí)序違例,尤其喜歡在資源利用率較高、時(shí)鐘頻率較高或者是位寬較寬的情況下出現(xiàn)。建立時(shí)間和保持時(shí)間是FPGA時(shí)序約束中兩個(gè)最基本的概念,同樣在芯片
    的頭像 發(fā)表于 12-23 07:01 ?2050次閱讀
    <b class='flag-5'>時(shí)序</b>約束的步驟分析

    如何閱讀時(shí)序報(bào)告?

    生成時(shí)序報(bào)告后,如何閱讀時(shí)序報(bào)告并從時(shí)序報(bào)告中發(fā)現(xiàn)導(dǎo)致時(shí)序違例的潛在問(wèn)題是關(guān)鍵。 首先要看Design Timing Summary在這個(gè)
    的頭像 發(fā)表于 08-31 13:49 ?5890次閱讀
    如何閱讀<b class='flag-5'>時(shí)序</b>報(bào)告?

    一文知道時(shí)序路徑的構(gòu)成

    更為具體的時(shí)序報(bào)告信息如何從中獲取,或者如何根據(jù)時(shí)序報(bào)告發(fā)現(xiàn)導(dǎo)致時(shí)序違例的潛在原因呢?
    的頭像 發(fā)表于 09-04 10:24 ?1729次閱讀

    Vivado時(shí)序案例分析之解脈沖寬度違例

    BY Hemang Divyakant Parikh 有多種類型的時(shí)序違例可歸類為脈沖寬度違例。 - 最大偏差違例(詳見(jiàn) 此處 ) - 最小周期違例
    的頭像 發(fā)表于 11-19 13:48 ?5335次閱讀
    Vivado<b class='flag-5'>時(shí)序</b>案例分析之解脈沖寬度<b class='flag-5'>違例</b>

    如何降低面積和功耗?如何優(yōu)化電路時(shí)序?

    1、如何降低功耗? (1) 優(yōu)化方向: 組合邏輯+時(shí)序邏輯+存儲(chǔ) (2) 組合邏輯: ??(a)通過(guò)算法優(yōu)化的方式減少門電路 ??(b)模塊復(fù)用、資源共享 (3)
    發(fā)表于 02-11 15:30 ?2次下載
    如何降低面積和功耗?如何<b class='flag-5'>優(yōu)化</b>電路<b class='flag-5'>時(shí)序</b>?

    FPGA時(shí)序約束:如何查看具體錯(cuò)誤的時(shí)序路徑

    ? ? 1、時(shí)序錯(cuò)誤的影響 ? ? ? 一個(gè)設(shè)計(jì)的時(shí)序報(bào)告中,design run 時(shí)序有紅色,裕量(slack)為負(fù)數(shù)時(shí),表示時(shí)序約束出現(xiàn)違例
    的頭像 發(fā)表于 03-17 03:25 ?712次閱讀

    時(shí)序約束出現(xiàn)時(shí)序違例(Slack為負(fù)數(shù)),如何處理?

    時(shí)序約束出現(xiàn)時(shí)序違例(Slack為負(fù)數(shù)),如何處理?
    的頭像 發(fā)表于 07-10 15:47 ?4608次閱讀