Tcl与Design Compiler (二)——DC综合与Tcl语法结构概述
本文如果有錯,歡迎留言更正;此外,轉載請標明出處?http://www.cnblogs.com/IClearner/? ,作者:IC_learner
1、邏輯綜合的概述
synthesis = translation + logic optimization + gate mapping .
DC工作流程主要分為這三步
Translation : 翻譯,主要把描述RTL級的HDL語言,在約束下轉換成DC內部的統(tǒng)一用門級描述的電路(Generic Boolean Gates)(DC自己的庫表現(xiàn)),以GTECH或者沒有映射的ddc形式展現(xiàn)。
Logic optimization :邏輯優(yōu)化, 就是把統(tǒng)一用門級描述的電路進行優(yōu)化,就是把路徑調整一下,門給改一下等等。
Gate mapping :門級映射,把優(yōu)化了的統(tǒng)一門級描述,DC用別的廠商的工藝庫把電路給映射出來,得到一個.ddc文件。這個.ddc文件可以包含許多豐富的信息,比如映射的門電路信息與網(wǎng)表、.v格式的網(wǎng)表、延時信息(sdf)、工作約束(sdc)等信息。(.ddc不能用文本編輯器打開)。.ddc這個包含的網(wǎng)表文件是實際意義的網(wǎng)表文件,而.v這個形式的網(wǎng)表問價是用來做后仿真的文件。
延時信息的得出:線負載模型、拓撲結構模型(現(xiàn)在)。
?
2、DC的啟動方式
啟動DC的方式有三種:
·GUI:DC的圖形化界面格式。用圖形化界面跑一下DC。(大規(guī)模設計不可能用這種方式)。
啟動方式是:$design_vision
我們可以通過 man design_vision或者design_vision ?-help來查看DC的啟動選項:
?
例如,可以使用$ design_vision ?-topographical_mode啟動design compiler,意思是:-topographical是啟動DC的拓撲模式,-topo是簡寫。關于什么是拓撲模式,為什么要啟動拓撲模式,后面會有相關的敘述。
?
此外,還有下面的啟動方式:
·dc_shell: DC以命令行的格式啟動:$dc_shell
我們可以通過 man dc_shell或者dc_shell ?-help來查看DC的啟動選項,不過我們可以發(fā)現(xiàn),這些選項是一致的,是告訴我們如何啟動DC,啟動DC的時候可以加載哪些選項。
·Batch mode:批處理模式,也就是,前面那兩種方式只是把DC啟動起來,還沒有真正地工作(即編譯工程),前面兩個方式需要通過source命令把腳本寫進去以后,DC讀取才真正工作。而這種批處理模式是,在啟動的同時,告訴DC執(zhí)行哪些腳本,例如:
$dc_shell -topo -f run.tcl | tee -i run.log
意思是:使用拓撲模式啟動DC,啟動的同時執(zhí)行run.tcl腳本文件,并且把啟動過程中顯示在終端的信息記錄到run.log中。| ?tee ?-i就是寫進信息的管道命令,講dc_shell -topo -f run.tcl 執(zhí)行后顯示的信息(輸出結果),流入到run.log文件中。這樣子是為了在DC啟動失敗的時候,通過查看啟動信息,進而排除錯誤。
本教程這三種方式在后面都有流程介紹,本教程以命令行和批處理為主,其中dc_shell主要用來介紹DC的相關命令,此外命令行和批處理模式是現(xiàn)在設計的主要操作方式。
?
3、DC-Tcl語言的基本結構
下面介紹常見的tcl語言語法,這些語法在進行編寫tcl腳本的時候比較常見。
Tcl的語法比較簡單,依葫蘆畫瓢就可以知道寫的是什么了。
我們在dc_shell的環(huán)境下,介紹tcl的一些簡單語法(即啟動DC,在dc_shell里面運行tcl文件):
?
?
通過編寫example.tcl中的內容,來記錄一下tcl的語法:
·設置變量
example.tcl的內容為:
?
?
意思是:設置name這個變量,這個變量的值為ICer;
設置num這個變量,這個值為 0;
echo是打印的意思,$表示引用,分別是打印name中的值,打印num中的值.
我們可以檢查一下是否有語法錯誤,使用dcprocheck命令:
?
?
運行一下,打印出了name和num這兩個變量的值:
?
?
·if-else語句:
?
?
與C語言、Verilog語言不一樣,這里的條件是用大括號{}來進行包括的,然后要執(zhí)行的內容也是通過{}來表示的。特別注意,{}的使用都有空格間隔開
檢查沒有錯誤,進行執(zhí)行:
?
·switch 結構
?
puts也是顯示/打印的命令,執(zhí)行后的結果如下:
?
還可以添加默認的選項:
?
執(zhí)行后,顯示:
?
·while循環(huán)
?
執(zhí)行的結果如下:
?
·for循環(huán)
?
運行的結果如下所示:
?
for循環(huán)的格式跟C語言一樣,也有三個選項,初始條件,停止循環(huán)條件,變量遞增選項。
Continue跟C語言一樣,不執(zhí)行本次循環(huán)。
?
·數(shù)組(列表)與數(shù)組(列表)的遍歷
?
首先,39行那里創(chuàng)建了一個名字為names的數(shù)組(列表),數(shù)組(列表)的內容有5項。
Foreach則是逐個遍歷,查看數(shù)組的內容。首先把names這個列表的內容一次放進num_list這個變量里面,然后一次查看
附注:foreach_incollection對物集(collection)遍歷。關于物集這個概念在后面會有說到,這里先提及一下,有一個初步印象。
執(zhí)行結果如下:
?
·子程序的定義和調用:
調用要在dc_shell中調用:
?
?
·最后是文件的處理:文件的讀寫
寫:
執(zhí)行的結果如下所示:
?
Data.txt里面就有hello tcl
讀:
注意gets的用法,執(zhí)行后的結果如下:
?
?
Tcl的基本語法結構差不多就是這樣了,Tcl的使用需要結合Tcl自帶的一些命令,比如說自己的函數(shù)、錯誤處理、正則表達式等,此外還要結合DC的命令,總之就是具體問題具體分析。
?
總結
以上是生活随笔為你收集整理的Tcl与Design Compiler (二)——DC综合与Tcl语法结构概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: guava Lists.transfor
- 下一篇: 从编译安装Keepalived 到 配