星期六, 9月 11, 2010

Synopsys Design Compiler Primer

這篇只是單純做個紀錄。最主要還是要感謝 ycma 寫了一個 sample script,我只是從中學習到一些事 XD。

其帢從 shell 底下打 design_vesion 就可以進入 GUI 畫面,但是每次進去都有重覆要設定的,而且重覆修改程式之後每次都用 design_version 的話並不是一個好動作,而 design compiler 提供一個 dc_shell,Synopsys 公司用的都是 tcl script,所以如果會撰寫的話會可以省下相當多的重覆性工作。

那麼寫 dc_shell command 會很困難嗎 ? 其實不會,design_version 打開後執行相對應的動作,都可以看到相對應的指令顯示在最下方,照抄就可以了。根據這個簡單有效的方法(還有記得參考本身的 doc),很快就可以寫出如下的 script


set COMPILEFILE {decoder.v reg.v reg_entry.v}
set MAINMODULE "RegisterFile"

set search_path {., /cad/celllib/CBDK90_UMC_Faraday/CIC/SynopsysDC/db}
set target_library {fsd0a_a_generic_core_bc.db}
set symbol_library {fsd0a_a_generic_core_bc.sdb}
set link_path {fsd0a_a_generic_core_bc.db}
read_file -format verilog $COMPILEFILE
current_design $MAINMODULE
create_clock -name "clk" -period 10 -waveform { 0 5 }  { clk }
compile -exact_map

report_timing
report_area

exit

其實 tcl 蠻好懂也蠻難用的 (汗),這個 script 也算的上是一目了然,大抵上來說讀入三個 Verilog File ,指定主要 Module 為何,指定 clock 訊號線,然後 Compiler 接著報告出 slack time 與晶片使用面積為何。

如果想要知道指令更多的 option,可以在 dc_shell 使用 man ,如果我今天想要知道的 report_area 的話,那麼會出現如下畫面

dc_shell> man report_area
2.  Synopsys Commands                                        Command Reference
                                  report_area

NAME
       report_area
              Displays area information for the current design or instance.
...

可能有需要我才會去查更多的細節吧,暫時先這樣子做個非常粗略的筆記嘍 XD


---
這篇是寫給自己看的,不然品質實在是不怎麼樣 XD