[問題] design compiler synthesis遇到的問題

看板Electronics作者 (豆)時間12年前 (2014/01/15 10:01), 編輯推噓8(8033)
留言41則, 4人參與, 最新討論串1/1
小弟從之前在使用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

01/15 10:51, , 1F
Q1:0.03 太不安全了.30ps,clock tree沒長好就掛了
01/15 10:51, 1F

01/15 10:53, , 2F
Q2:要更換Coding style.或許你可以把那段RTL貼上來
01/15 10:53, 2F

01/15 10:53, , 3F
請大家幫忙看一下
01/15 10:53, 3F
※ 編輯: hkrist 來自: 140.114.213.128 (01/15 14:35)

01/15 14:37, , 4F
a大,我想請問Q1的部分主要是想表達0.03~26之間有很大的空間
01/15 14:37, 4F

01/15 14:38, , 5F
但是我一直要加到slack=26才能模擬正確,這之間是哪部分有問
01/15 14:38, 5F

01/15 14:38, , 6F
題呢?
01/15 14:38, 6F

01/15 15:47, , 7F
那我就要再問清楚一下是 你40ns去和 是用40ns去跑模擬
01/15 15:47, 7F

01/15 15:48, , 8F
那60ns去和 也是跑40ns模擬嗎???
01/15 15:48, 8F

01/15 17:08, , 9F
剛想到Q2 看可不可以在合成中加入條件
01/15 17:08, 9F

01/15 17:08, , 10F
set_fix_multiple_port_nets -all -buffer_constants
01/15 17:08, 10F

01/15 17:08, , 11F
試試看
01/15 17:08, 11F

01/15 19:01, , 12F
a大,我是用多少合就用多少模擬
01/15 19:01, 12F

01/15 19:02, , 13F
那行指令我合成時都有打,可是依然會有assign被寫出來
01/15 19:02, 13F

01/15 20:00, , 14F
那這樣挺合理的.代表你兩個Filp Flop之間的Gate太多
01/15 20:00, 14F

01/15 20:01, , 15F
DC最厲害也只能和到40ns剛剛好過timing
01/15 20:01, 15F

01/15 20:01, , 16F
兩個方法解決 第一個是去改DC的條件式 讓她速度優先
01/15 20:01, 16F

01/15 20:03, , 17F
第二就是去改設計 多加一級pipeline
01/15 20:03, 17F

01/15 20:16, , 18F
我再看了一次你的問題!!你的問題好像是STA跟simulatio
01/15 20:16, 18F

01/15 20:17, , 19F
不一致!! 我猜測會不會是sim的timescale設太大以致忽
01/15 20:17, 19F

01/15 20:17, , 20F
略30ps的差異~~
01/15 20:17, 20F

01/16 09:23, , 21F
請問改DC的條件式指的是說mapping effort把timing改成high?
01/16 09:23, 21F

01/16 09:25, , 22F
所以在DC中不能在兩個DFF中放入太多的gate?強制我一定要拆
01/16 09:25, 22F

01/16 09:25, , 23F
成更多級是這樣嗎?
01/16 09:25, 23F
※ 編輯: hkrist 來自: 140.114.86.92 (01/16 09:25)

01/16 13:54, , 24F
因為兩個FF之間有很多加法器 乘法器
01/16 13:54, 24F

01/16 13:54, , 25F
DC在他的資料庫裡面有各式各樣的加法器 乘法器
01/16 13:54, 25F

01/16 13:54, , 26F
有速度快面積大的 有面積小速度慢的
01/16 13:54, 26F

01/16 13:55, , 27F
但是都有它的極限~所以假設DC都已經選用速度最快的
01/16 13:55, 27F

01/16 13:56, , 28F
但STA仍然只能是0.02 那就達到DC的極限了
01/16 13:56, 28F

01/16 13:56, , 29F
那勢必就一定要改設計 假設你的目標速度是40ns的話
01/16 13:56, 29F

01/17 10:57, , 30F
Q1:合成40 ns,跑post-synthesis sim要60 ns,差太多了。建
01/17 10:57, 30F

01/17 10:59, , 31F
議原po去trace發生timing violation的那條路徑的波型是不是有
01/17 10:59, 31F

01/17 11:01, , 32F
什麼奇怪的地方,例如有很大的delay。
01/17 11:01, 32F

01/17 11:03, , 33F
trace的方法就是把那條路徑的各節點波型show出來看。
01/17 11:03, 33F

01/17 11:06, , 34F
Q2: assign是因為有些APR tools不支援(ICC?)。ICC用DDC格式就
01/17 11:06, 34F

01/17 11:07, , 35F
不用管assign的問題金。
01/17 11:07, 35F

01/17 11:08, , 36F
^多打
01/17 11:08, 36F

01/22 11:10, , 37F
感謝上面回答的兩位版友,小弟再嘗試看看你們提供的想法
01/22 11:10, 37F

02/02 10:49, , 38F
現在所有 tool 都支援 assign 了, 包括 ICC
02/02 10:49, 38F

02/02 10:50, , 39F
請確認你是用 dc_shell 產出的 .sdf 作 simulation
02/02 10:50, 39F

02/02 10:52, , 40F
因為你是想討論 simulation 和 synthesis 的 correlation
02/02 10:52, 40F

02/02 10:52, , 41F
而不是討論 synthesis 為什麼達不到 slack > 0
02/02 10:52, 41F
文章代碼(AID): #1IrUloBF (Electronics)