作者windsfk (風)
看板Electronics
標題[問題] 使用Design Complier合成
時間Tue Jun 23 18:30:51 2015
前輩們好
我正在將一個電路管線化
這個電路是由很多加法 減法 乘法組成
原電路沒有插入dff(我自己寫的延遲module)
插入後的電路有加入延遲元件
在合成後time path的確是變少了
可是加了延遲元件再合成後area 還有power 居然變少了
好煩惱 不知道問題出在哪
有沒有前輩有遇過
實驗結果跑不出來 急需幫助 拜託各位前輩了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.73.204
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Electronics/M.1435055456.A.ECE.html
1F:推 Baneling: 用primetime px去跑power比較準吧 @@ 06/23 18:53
2F:→ windsfk: 那也是design complier的功能嗎? 06/23 18:54
3F:→ windsfk: 可是我多加了延遲元件Area居然變小 百思不得其解 06/23 18:55
4F:→ windsfk: 或是我未加延遲元件前合成被亂加東西? 06/23 18:58
5F:推 Baneling: 你就直接report_area去看comb跟seq各自的面積不就好了? 06/23 19:04
6F:→ Baneling: 照理來說你加入dff做retiming, seq的面積(數量)應該是會 06/23 19:05
7F:→ Baneling: 增加, 但要是如果comb的面積有大幅度的變動 那area跟pow 06/23 19:05
8F:→ Baneling: er會有改善也是有可能的(但還是要看你架構怎麼寫) 06/23 19:06
9F:→ Baneling: 另外面積不要看繞線的部分 因為很不準 -.- 06/23 19:06
10F:→ windsfk: 面積部分我只看cell area 但加了45個DFF 面積居然下降2W 06/23 19:20
照前輩說的分comb seq來看
加延遲前 122973 + 0 =122973 加延遲後 83891 + 23524 =107416
這樣來看是因為加了延遲 把原本comb的部分併成seq 然後面積優化過才會產生這結果摟
這樣我看面積差別 122973 跟 122973+23524 這樣比較合理嗎?
※ 編輯: windsfk (140.115.73.204), 06/23/2015 19:37:10
11F:推 Baneling: 為何是122973+23524? XD 06/23 21:30
12F:→ windsfk: 未加延遲的comb 加上 上延遲後的seq? 06/23 21:52
13F:→ windsfk: 這種情況面積還有功耗該怎麼比較呢 06/23 21:53
14F:推 Baneling: 應該是122973比107416吧~ 你原本一整塊comb就必須要在 06/23 21:55
15F:→ Baneling: 1個clock之內運算完畢, 你切pipeline之後 假設切成N級完 06/23 21:56
16F:→ Baneling: 成運算 那你的comb的運算時間就有可能大幅增加 自然area 06/23 21:57
17F:→ Baneling: 就有可能會下降(不用這麼高速的運算單元) 你也可以用 06/23 21:57
18F:→ Baneling: report_design這個指令去確認你的設計使用到的DW librar 06/23 21:58
19F:→ Baneling: y中的運算單元 架構或者總量都可以比對 06/23 21:59
前輩請問有辦法 調整模擬方法 讓加延遲後 變成 122973 + XXX 嗎?
我感覺前輩的意思是加了延遲元件 於是加法乘法那些comb元件可以使用較慢的(小面積)
有辦法不改變這些comb元件 只多加延遲元件面積嗎
※ 編輯: windsfk (140.115.73.204), 06/23/2015 22:21:59
20F:推 Baneling: 我沒有這樣試過 XD 為何有效能較好的電路不用 用比較不 06/23 22:29
21F:→ Baneling: 好的電路呢... 06/23 22:29
我的研究題目是再不同的critical path限制下插入不同數量的暫存元件(pipeline)
然後假如限制70單位時間 那有演算法作成68單位時間 然後盡量用少的暫存元件
我是假設插入暫存元件越多會導致面積成長(不好) 但現在居然插入暫存元件
面積還變小 有點完蛋了.......該怎麼辦哪....
※ 編輯: windsfk (140.115.73.204), 06/23/2015 22:34:23
22F:推 Baneling: 我有點不太懂你的意思 不過聽起來你的研究方向是EDA? 06/23 22:42
23F:→ windsfk: 是的...EDA.. 06/23 22:44
24F:→ windsfk: 簡單來說就是 我限制time 盡量少用暫存器 想省area 06/23 22:44
25F:→ windsfk: 沒想到用了暫存器的架構面積還比較小... 06/23 22:45
26F:推 Baneling: 我不太懂你的意思 你是比較 1.完全沒使用暫存器的設計 06/23 22:49
27F:→ Baneling: 2. 有使用暫存器的pipeline架構? 06/23 22:50
28F:→ windsfk: 對 沒用暫存 比上 有用暫存 其他部分完全相同 06/23 22:55
29F:→ windsfk: 有用暫存cell面積小... 06/23 22:56
30F:推 Baneling: ㄜ 應該說你的訴求是什麼 @@ 我有點不太懂 06/23 23:10
31F:→ windsfk: 訴求是希望減少AREA POWER (從減少暫存器作起) 06/23 23:13
32F:推 Baneling: 減少哪裡的暫存器? 如果是純comb電路 他是沒有暫存器呀 06/23 23:18
原本設計是沒暫存器 但隨著critical path 的限制會需要進行管線化(插暫存器)
我的演算法會盡量以critical path 為限制 盡量切少層pipeline(插少一些暫存器)
藉以減少面積 功率成本
※ 編輯: windsfk (140.115.73.204), 06/23/2015 23:30:46
33F:推 Baneling: 那根據你的演算法所最佳化的設計需要比較對象是? 06/23 23:34
34F:→ windsfk: 未加入暫存前的電路<-- 和這個比 06/23 23:39
35F:推 Baneling: 那面積跟功耗都變好不是很好嗎? XD 06/23 23:41
36F:→ Baneling: pipeline跟邏輯最佳化通常是一起進行的 而你的問題應該 06/23 23:42
37F:→ windsfk: 不可能阿QQ 我再C平台設計的 盡量用少暫存器完成管線化 06/23 23:42
38F:→ windsfk: 但合成後卻加了暫存面積沒變大 那我fully pipeline就好 06/23 23:42
39F:→ Baneling: 是希望只進行pipeline而不做邏輯最佳化 這有點怪異 @@ 06/23 23:42
40F:→ windsfk: 我verilog code的加法乘法都用assign寫 我正再試著用 06/23 23:44
41F:→ windsfk: gate level的寫法試試 這樣加了暫存器它應該也不會改我 06/23 23:44
42F:→ windsfk: 架構 06/23 23:45
43F:推 Baneling: 我剛也有想到說你直接去改合成好的gate-level netlist 06/23 23:45
44F:→ Baneling: 不過這樣很怪異... XD 建議先跟指導教授討論一下 06/23 23:45
45F:→ windsfk: Q__Q 感謝您了 7月想口試阿 嗚嗚嗚嗚 06/23 23:47
46F:推 bxxl: 我覺得你看到的現象是正常的,原本的假設錯了吧 06/24 08:33
47F:推 bxxl: 這也不代表fully pipeline最好,可是加上前幾級pipe效果最好 06/24 08:37
48F:→ bxxl: 後來就邊際效應遞減,但是dff的area線性增加. 06/24 08:38
49F:→ bxxl: 所以最佳點會是中間的某一點 06/24 08:38
50F:→ windsfk: 謝bxxl大 合成40多次的確有這樣的感覺 隨著層數增加 06/24 13:33
51F:→ windsfk: 面積也變大 我有些鑽牛角尖了 必須要解釋這一現象才是 06/24 13:34
昨天真是有些絕望了 萬幸有來PTT發問 版上高手多且熱心
感謝你們
※ 編輯: windsfk (140.115.73.204), 06/24/2015 13:36:59
52F:推 mmonkeyboyy: 你是改hdl來實現嗎? 如果是這樣的話 n.... 06/25 01:35
53F:→ mmonkeyboyy: 很有可能是你寫code問題或是一開始假設就錯了 06/25 01:35
54F:→ mmonkeyboyy: 你可以google hdl compiler結果的一些討論 06/25 01:36
55F:→ mmonkeyboyy: 會有告訴你為什麼有些時候你寫code少gate多 06/25 01:36
56F:→ mmonkeyboyy: 寫code多 gate少 pipeline竟然很神奇的沒效 06/25 01:37
57F:推 weop388: 你的timing constraint可以提供一下嗎 06/29 19:00