作者hkrist (豆)
看板Electronics
標題[問題] design compiler synthesis遇到的問題
時間Wed Jan 15 10:01:20 2014
小弟從之前在使用design compiler的時候就有遇到兩個主要的問題
但是無論是上網找或是問同學都沒有找到答案
最近發現有這個版可以發問
Q1:
我將RTL拿去合成後,就我所知跑出來的slack只要維持在正的即可
我曾試過合40ns時slack是0.03,但最後要合到60ns,slack大約26
在post-synthesis simulation時才不會出現timing violation
我想請問為什麼40ns時,slack明明是正的
在模擬時卻會出現timing violation?
Q2:
合成後要另存成_syn.v的netlist檔,但有時候儲存時
design compiler會告訴我有"assign"or"tran"被寫到檔案中
我知道的是合成後不應該有assign出現
這部分也讓我不知道該如何處理
P.S. 最近發現會出現某些module裡有用特別名稱當做prefix的警告訊息
請問這會影響到我合成後檔案的正確性嗎?
還請知道的板友解惑
小弟先說聲謝謝!!
------------------------------------
https://www.dropbox.com/s/wam1g21kpj6m8x3/GSIM.v
因為不知道可能是哪部分coding方式不OK
所以將檔案分享在dropbox上
請各位板友幫我看一下問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.213.128
1F:推 appendixisu:Q1:0.03 太不安全了.30ps,clock tree沒長好就掛了 01/15 10:51
2F:→ appendixisu:Q2:要更換Coding style.或許你可以把那段RTL貼上來 01/15 10:53
3F:→ appendixisu:請大家幫忙看一下 01/15 10:53
※ 編輯: hkrist 來自: 140.114.213.128 (01/15 14:35)
4F:→ hkrist:a大,我想請問Q1的部分主要是想表達0.03~26之間有很大的空間 01/15 14:37
5F:→ hkrist:但是我一直要加到slack=26才能模擬正確,這之間是哪部分有問 01/15 14:38
6F:→ hkrist:題呢? 01/15 14:38
7F:推 appendixisu:那我就要再問清楚一下是 你40ns去和 是用40ns去跑模擬 01/15 15:47
8F:→ appendixisu:那60ns去和 也是跑40ns模擬嗎??? 01/15 15:48
9F:→ appendixisu:剛想到Q2 看可不可以在合成中加入條件 01/15 17:08
10F:→ appendixisu:set_fix_multiple_port_nets -all -buffer_constants 01/15 17:08
11F:→ appendixisu:試試看 01/15 17:08
12F:→ hkrist:a大,我是用多少合就用多少模擬 01/15 19:01
13F:→ hkrist:那行指令我合成時都有打,可是依然會有assign被寫出來 01/15 19:02
14F:推 appendixisu:那這樣挺合理的.代表你兩個Filp Flop之間的Gate太多 01/15 20:00
15F:→ appendixisu:DC最厲害也只能和到40ns剛剛好過timing 01/15 20:01
16F:→ appendixisu:兩個方法解決 第一個是去改DC的條件式 讓她速度優先 01/15 20:01
17F:→ appendixisu:第二就是去改設計 多加一級pipeline 01/15 20:03
18F:推 appendixisu:我再看了一次你的問題!!你的問題好像是STA跟simulatio 01/15 20:16
19F:→ appendixisu:不一致!! 我猜測會不會是sim的timescale設太大以致忽 01/15 20:17
20F:→ appendixisu:略30ps的差異~~ 01/15 20:17
21F:→ hkrist:請問改DC的條件式指的是說mapping effort把timing改成high? 01/16 09:23
22F:→ hkrist:所以在DC中不能在兩個DFF中放入太多的gate?強制我一定要拆 01/16 09:25
23F:→ hkrist:成更多級是這樣嗎? 01/16 09:25
※ 編輯: hkrist 來自: 140.114.86.92 (01/16 09:25)
24F:推 appendixisu:因為兩個FF之間有很多加法器 乘法器 01/16 13:54
25F:→ appendixisu:DC在他的資料庫裡面有各式各樣的加法器 乘法器 01/16 13:54
26F:→ appendixisu:有速度快面積大的 有面積小速度慢的 01/16 13:54
27F:→ appendixisu:但是都有它的極限~所以假設DC都已經選用速度最快的 01/16 13:55
28F:→ appendixisu:但STA仍然只能是0.02 那就達到DC的極限了 01/16 13:56
29F:→ appendixisu:那勢必就一定要改設計 假設你的目標速度是40ns的話 01/16 13:56
30F:推 zxvc:Q1:合成40 ns,跑post-synthesis sim要60 ns,差太多了。建 01/17 10:57
31F:→ zxvc:議原po去trace發生timing violation的那條路徑的波型是不是有 01/17 10:59
32F:→ zxvc:什麼奇怪的地方,例如有很大的delay。 01/17 11:01
33F:→ zxvc:trace的方法就是把那條路徑的各節點波型show出來看。 01/17 11:03
34F:推 zxvc:Q2: assign是因為有些APR tools不支援(ICC?)。ICC用DDC格式就 01/17 11:06
35F:→ zxvc:不用管assign的問題金。 01/17 11:07
36F:→ zxvc: ^多打 01/17 11:08
37F:→ hkrist:感謝上面回答的兩位版友,小弟再嘗試看看你們提供的想法 01/22 11:10
38F:推 ViewMoon:現在所有 tool 都支援 assign 了, 包括 ICC 02/02 10:49
39F:→ ViewMoon:請確認你是用 dc_shell 產出的 .sdf 作 simulation 02/02 10:50
40F:→ ViewMoon:因為你是想討論 simulation 和 synthesis 的 correlation 02/02 10:52
41F:→ ViewMoon:而不是討論 synthesis 為什麼達不到 slack > 0 02/02 10:52