看板 Electronics 關於我們 聯絡資訊
各位前輩大家好, 小弟是初心者,現在遇到一個問題,試了很多寫法沒辦法解, 想請益一下, 目前在synthesis後gate level的模擬會跑出hold time violation的警告, 我只知道可以塞buffer讓Td增加就可以解, 但是計數器電路的buffer我不知道怎麼塞, 想請教各位前輩解惑一下,謝謝。 這是警告訊息: Warning! Timing violation $setuphold<hold>( negedge CKN &&& (flag == 1): 932871 PS, negedge D:932955 PS, 0.152 : 152 PS, 0.106 : 106 PS ); File: ./umc18_neg.v, line = 6843 Scope: TEST.RM.counter_reg_1_ Time: 932955 PS 這是我的計數器程式碼: always @(negedge CLK) begin if (RESET==1'b1) counter <= 6'b0; else if (IN_VALID==1'b0) counter <= 6'b0; else counter <= counter + 6'b1; end 再麻煩各位前輩不盡指教>< 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.143.165.12 ※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1463579427.A.82B.html
hsujerry: 手動在gate level RTL塞buffer看看? 或起初就用gate去兜 05/18 22:05
hsujerry: 還是說testbench中的flag轉態跟CLK切齊? 那樣直接灌進去 05/18 22:11
hsujerry: 似乎可能造成violation,太久沒碰了~ 05/18 22:14
kyo547896321: synthesis用的script裡面可以加指令直接修hold time 05/18 22:56
kyo547896321: 吧 05/18 22:56
darky897: Counter裡面有hold time violation?好像不太可能 如果發 05/18 22:59
darky897: 生應該只能增加clock cycle time了吧 05/18 22:59
Baneling: hold time在前段處理意義不大.... 05/18 23:02
MAXI: fix_hold 05/19 00:52
hsnuyi: APR時才需要加buffer... 你這是設計問題 05/19 10:07
hsnuyi: 再者你IN_VALID是enable signal吧? 為啥要這樣寫... 05/19 10:09
impression: 改成posedge試試呢? 05/19 11:23
wait: IN_VAILD跟CKN 錯開 05/19 12:21
koyin: 感謝各位幫忙,我找出原因了,我的data跟VALID都是負緣 05/19 15:30
koyin: 把counter改正緣觸發就可以了>"""< 05/19 15:30
ggyy940: always @(posedge CLK, RESET) 05/22 21:50