看板 Electronics 關於我們 聯絡資訊
※ 引述《karyuuissen ()》之銘言: : 我想先問關於blocking和nonblocking assignment的問題 : 1. 像以下這種2個if的是同時做嗎? : always@(posedge clk) begin : if(condition1) : A <= B; : if(condition2) : C <= D; : end Register 的 output 都是同時變化 : 2. 兩個一樣的always分開寫是誰先誰後?舉例如下: : always@(posedge clk) begin : A <= B; : end : always@(posedge clk) begin : C <= D; : end 不重要 Register 的 output 就是同時變化 : 3. 同上一個問題,若分別在不同的.v檔下,但clk是連起來的,如: : //test1.v : always@(posedge clk1) begin : A <= B; : end : --------------------------- : //test2.v : always@(posedge clk2) begin : C <= D; : end : 這樣的話又是誰快? : 如果always裡面同時有blocking又有nonblocking的情況我就更搞不清楚了... 同一個 clk domain Register 的 output 就是同時變化 A 和 C 就是 Register 的 output B 和 D 是 Register 的 input : 4. wire的assign和always@(*)分別是等號右邊和判斷式變了就變的 : 那誰會比較先做? : 像是: : assign A= (B==C)? D:E; : 和 : always@(*)begin : B = F; : end A 的值既然跟 B 有關 A 的值穩定所需要的 delay 就會比 B 長 沒有什麼誰先做誰後做的問題 你寫出來的 code 會 mapping 成相對應的邏輯電路 critical path 上串的邏輯閘就會決定你的 timing 如果你看不懂這段話 那我想要讓你明白不是件簡單的事 請去修門課再來 : 最後想問有關FPGA合成電路critical path warning的問題... : 要怎樣才能減少這些warning? : 明明一個posedge觸發間if..else和case的層數以及運算都很少了 : 它還是會產生critical path或setup和hold time不夠的情形 : 難道只能一直去改code的寫法直到沒有warning為止嗎? : 抱歉問了這麼多問題XD : 因為project的架構太大,時序搞混會讓bug很難找出來.... : Thx critical path warning?? critical path 應該是看 slack 是不是正的 你的 warning 到底是指什麼?? improve timing 的方法有好幾種 用比較好的 tool 有可能有幫助 例如 synplify premier 比 synplify pro 好 tool 的選項設定也可能會有影響 這個我只會 Try and Error .... 當然最快的方法是分析你的 critical path 上有哪些邏輯閘存在 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.112.2
karyuuissen:感謝... 我warning已經debug完了^^ 01/04 02:20
CompileUltra:大哥 premier只比pro多可以和routing tool結合做 01/06 00:35
CompileUltra:physical synthesis亞 就好像你會說dc topo比dc還會 01/06 00:36
CompileUltra:壓 timing 麻 不見得把 01/06 00:36
zxvc:針對樓上兩句:DC Topo要用到DC Ultra,所以會比DC壓得好 XD 01/06 05:21
zxvc:但DC Topo跟DC Ultra+WLM比起來,只差在DC Topo估的timing 01/06 05:24
zxvc:比較準、...。但timing optimization的能力應該是大同小異。 01/06 05:25