久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3020|回復: 0
打印 上一主題 下一主題
收起左側(cè)

時序約束中 跨時鐘域的時鐘約束

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104287 發(fā)表于 2016-1-31 03:49 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
一直做了好久的時序約束,包括源同步輸入數(shù)據(jù)、源同步輸出數(shù)據(jù)以及SDRAM端口的約束,做完這些之后 TimeQuest Timing Analyzer 還是有紅色的 slack 也就是值是負的 不滿足時序約束:如圖:
仔細看其中的錯誤信息都是dcfifo中錯誤,當初還以為altera的ipcore需要特殊的約束呢或者是ipcore有問題,但是這種想法是不對的,fifo這種ipcore是很常用的不應該出問題。一天看到what is false path?于是就百度開始查,看到這樣一篇博客關于FALSE PATH的理解:
[size=15.714285850524902px] 對FALSE PATH的理解
[size=15.714285850524902px]
[size=15.714285850524902px]
最近做了一點FPGA方面的工作,在用QuartusII對代碼進行綜合時四處查找資料,總算是對FALSE PATH有了一點點的理解,總得來說,F(xiàn)ALSE PATH就是我們在進行綜合分析時,不希望綜合工具進行分析的那些路徑。寫出來和大家一起討論。
在QuartusII的一個培訓文檔里面解釋了什么時候要用到FALSE PATH:
1.           從邏輯上考慮,與電路正常工作不相關的那些路徑,比如測試邏輯,靜態(tài)或準靜態(tài)邏輯。
2.          從時序上考慮,我們在綜合時不需要分析的那些路徑,比如跨越異步時鐘域的路徑。
下面舉例說明:
先看圖1,MUX_1和MUX_2是兩個多路選擇器,MUX_1的使能端C接到時鐘clk,MUX_2的使能端C接到clk的反。于是可以發(fā)現(xiàn)MUX_1的S1端口是不可能經(jīng)過MUX_2的S1端口到達MUX_2的D端口的,同理MUX_1的S2端口是不可能經(jīng)過MUX_2的S2端口到達MUX_2的D端口。于是我們就不希望綜合工具對這兩條路徑進行分析,就是說這兩條路徑就是我們所說的FALSE PATH:
set_false_paths –through Mux_1/S1 –through Mux_2/S1
set_false_paths –through Mux_2/S2 –through Mux_2/S2
[size=15.714285850524902px]
[size=15.714285850524902px]
[size=15.714285850524902px]

[size=15.714285850524902px]圖1
[size=15.714285850524902px]
再看圖2,模塊test_logic表示一個測試邏輯,它并不真正實現(xiàn)我們電路的功能,只是為了測試電路功能。所以我們就不希望綜合工具對這這些路徑進行分析,就是說這些路徑就是我們所說的FALSE PATH:
[size=15.714285850524902px]  
[size=15.714285850524902px]
[size=15.714285850524902px]  
[size=15.714285850524902px]圖2
[size=15.714285850524902px]
[size=15.714285850524902px]
set_false_path –fall_from clk1–to [get_pins test_logic|*|datain]
set_false_path –from [get_pins test_logic|*|clk] \
-to [get_pins test_logic|*|datain]
set_false_path –from [get_pins test_logic|*|clk] -to [get_ports test_out]
然后看圖3,reg1的輸出和reg2的輸入跨越了不同的時鐘域clk1和clk2,我們不希望綜合工具對這這些路徑進行分析,就是說這些路徑就是我們所說的FALSE PATH:
set_false_path –from [get_pins reg1|clk]–to [get_pins reg2|datain]
[size=15.714285850524902px]
[size=15.714285850524902px]
[size=15.714285850524902px]
[size=15.714285850524902px]  
[size=15.714285850524902px]圖3
[size=15.714285850524902px]
[size=15.714285850524902px]最后我們看圖4,clk_100和clk_66仍然是兩個不同的時鐘域,這也是FALSE PATH:
set_false_paths –from [get_clocks clk_100] –to [get_clocks clk_66]
set_false_paths –from [get_clocks clk_66] –to [get_clocks clk_100]
實際上,這兩條FALSE PATH可以用一條命令來代替:
set_clock_groups –exclusive –group {clk_100} \
–group {clk_66} –group {clk_200}
這就涉及到set_clock_groups 命令了,我們以后再說。
[size=15.714285850524902px]
[size=15.714285850524902px]
[size=15.714285850524902px]
[size=15.714285850524902px]圖4對這兩句有感而發(fā)
set_false_paths –from [get_clocks clk_100] –to [get_clocks clk_66]
set_false_paths –from [get_clocks clk_66] –to [get_clocks clk_100]
設計中fifo前端時鐘域是cmos_pclk在TimeQuest Timing Analyzer ->Core Cock Setup:pll_c0為(Launch Clock),后端時鐘域是pll_c0在TimeQuest Timing Analyzer ->Core Cock Setup:pll_c0為(Latch Clock)

這兩個是跨時鐘域時鐘,于是根據(jù)文中總結(jié):對于跨時鐘域的處理用set_false_path,約束語句如下:
set_false_path  -from  [get_clocks {cmos_pclk}]  -to  [get_clocks {pll_c0}]
set_false_path  -from  [get_clocks {pll_c0}]  -to  [get_clocks {cmos_pclk}]
ok完美解決 沒有紅色錯誤, slack都為正值。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕精品一区二区三区精品 | 羞羞视频一区二区 | 一区二区在线观看av | 免费在线黄色av | 免费爱爱视频 | 天天天操天天天干 | 国产成人精品a视频一区www | 最新中文字幕第一页视频 | 亚洲精品久久久一区二区三区 | 性高湖久久久久久久久3小时 | 亚洲成色777777在线观看影院 | 国产在线一区二区三区 | 日韩在线观看一区 | 午夜影院 | 亚洲国产精品一区二区三区 | 一区二区日本 | 国产精品亚洲综合 | 日韩午夜电影在线观看 | 欧美中文字幕在线观看 | 国产区精品视频 | 欧美成人免费 | 成人欧美 | 成人一区二区三区在线 | 99久久影院 | 国产一区二区自拍 | 一区不卡在线观看 | 超碰97人人人人人蜜桃 | 国产三级日本三级 | 91看片官网 | 在线看亚洲| 一区二区日韩 | 伊人久麻豆社区 | 欧美国产日韩在线观看成人 | 嫩草视频网站 | 成人一区二区三区视频 | 国产三区在线观看视频 | 国产精品夜色一区二区三区 | 米奇7777狠狠狠狠视频 | 日韩视频区 | 成人一级视频在线观看 | 日本黄色短片 |