• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > ISE時序約束筆記7——Path-Specific Timing Constraints

    ISE時序約束筆記7——Path-Specific Timing Constraints

    作者: 時間:2015-03-17 來源:網(wǎng)絡(luò) 收藏

      時鐘上升沿和下降沿之間的

    本文引用地址:http://www.czjhyjcfj.com/article/271120.htm

      周期約束可以自動計算兩個沿的的約束——包括調(diào)整非50%占空比的時鐘。

      例:一個CLK時鐘周期約束為10ns,能夠應(yīng)用5ns的約束到兩個寄存器之間。

      不需要特定路徑應(yīng)用到這個例子中。

      

    點擊看大圖

     

      相關(guān)時鐘域的約束

      為一個時鐘進行周期約束——以這個周期約束確定相關(guān)的時鐘。

      執(zhí)行工具將根據(jù)它們的關(guān)系來決定如何處理跨時鐘域。

      DCM有多個輸出:

      ——確定DCM輸入時鐘的周期約束

      ——執(zhí)行工具將會從這個周期約束推導(dǎo)出其輸出的約束

      ——所有的約束將會和原始的周期約束相關(guān)

      不相關(guān)時鐘域的約束

      在這個例子中,周期約束不覆蓋到處于兩個時鐘域之間的任何延時路徑。——這是默認(rèn)的處理方式。

      你必須添加一個約束覆蓋到相關(guān)時鐘域之間的路徑中。——例如,頻率相同,但是CLK_B有一些相位偏移。

      在兩個不相關(guān)的時鐘域你就必須添加一些同步電路。

      

    點擊看大圖

     

      約束兩個時鐘域之間的路徑。

      ——使用Groups by NETs選項為CLK_A和CLK_B定義groups,如果你為每個時鐘添加完周期約束,這個步驟將自動完成。

      ——在這個寄存器的groups之間指定快速/慢速例外約束。

      

    點擊看大圖

     

      多周期路徑約束

      多周期約束應(yīng)用在連續(xù)幾個時鐘周期內(nèi)寄存器不需要更新的情況。

      ——總是至少需要一個時鐘周期才更新。

      ——通常的,這樣的寄存器由時鐘使能信號控制。

      一個分段計數(shù)器就是這樣的一個例子。

      ——COUT14每隔4個時鐘周期才更新一次。

      ——這些寄存器間的路徑就算是多周期路徑。

      

     

      False 路徑

      False路徑選項將用于防止約束覆蓋到特定路徑

      優(yōu)先級

      從高到低為:

      1. False路徑——將會覆蓋任何其它的約束路徑

      2. FROM THRU TO

      3. FROM TO

      4. 管腳指定OFFSETs

      5. Groups OFFSETs(由寄存器或者PADS生產(chǎn)的groups)

      6. 全局PERIOD和OFFSETs——最低優(yōu)先級約束

      這里特權(quán)同學(xué)提醒大家注意的是,通常類似下面這樣的計數(shù)器絕對不可以歸為多周期約束:

      reg[15:0] counter;

      always @ (posedge clk or negedge rst_n)

      begin

      if(!rst_n) counter <= 16’d0;

      else counter <= counter+1’b1;

      end

      雖然我們想想似乎counter[1]也是2個clk變化一次,counter[2]也是4個clk變化一次……但是,我們想想看,如果從counter=1到counter=2沒有在一個clk完成,那么肯定就會影響到counter=2到counter=3的變化,對吧?所以,這樣的計數(shù)器不能算做多周期約束例外。

      提綱里描述的多周期例外的計數(shù)器應(yīng)該是這樣一個模型:

      reg[15:0] counter;

      always @ (posedge clk or negedge rst_n)

      begin

      if(!rst_n) counter[1:0] <= 2’d0;

      else counter[1:0] <= counter[1:0]+1’b1;

      end

      always @ (posedge clk or negedge rst_n)

      begin

      if(!rst_n) counter[15:2] <= 14’d0;

      else if(counter[1:0] == 2’b11) counter[15:2] <= counter[15:2]+1’b1;

      end

      上面兩個always塊里的數(shù)據(jù)互不干擾,并且都正常工作,只有下一個always塊檢測到前一個always塊里的counter[1:0]==2’b11時才進位加1。

      寫到這里,特權(quán)發(fā)現(xiàn)單從功能上來說,這兩個例子是沒有差別的,說白了,任何一個計數(shù)器都可以建模成后面的形式。或者說,我的問題其實沒有說明白,反而被自己的例子給駁倒了。

      呵呵,換個角度思考這個問題,到底什么時候是多周期例外,什么時候不是?這個其實還是要看情況的,如果你的系統(tǒng)實時性較高,可能會在某一特定的時鐘周期用到16位計數(shù)器的計數(shù)值(如a = (counter == 16’hffff)?1b’1:1’b0; ),那么這個計數(shù)器的高位就不能算作多周期例外。而如果比如在我的一個工程里,有這樣的計數(shù)器用法:cuonter[2:0]沒16個clk的后8個clk需要自增加(從0到15),而高位counter[18:3]當(dāng)然只有在16個clk變化一次,因為這里counter是用于作為一個地址產(chǎn)生器,也就是說,我的地址是每16個clk的后8個clk用到,那么這里的counter[18:3]就是一個8clk的多周期例外實例。

      說白了,還是要具體問題具體分析。

    塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
    電容屏相關(guān)文章:電容屏原理


    關(guān)鍵詞: ISE 時序約束

    評論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 灵武市| 永德县| 涟水县| 华蓥市| 木兰县| 米林县| 黔南| 富裕县| 论坛| 山东| 周至县| 泰来县| 高要市| 兴安县| 金溪县| 淮北市| 屯留县| 余庆县| 邯郸市| 襄汾县| 江油市| 会宁县| 沅江市| 高唐县| 肥城市| 壤塘县| 增城市| 湘潭市| 凌源市| 麦盖提县| 纳雍县| 九江县| 通河县| 康定县| 射阳县| 仲巴县| 库伦旗| 沛县| 家居| 通榆县| 久治县|