DC课程笔记-数字逻辑综合工具-DC Environment Attributes
文章目錄
- 課程內(nèi)容筆記46:57開始至末尾
本節(jié)來(lái)源網(wǎng)絡(luò)視頻筆記
主要介紹DC的時(shí)序timing約束
課程內(nèi)容筆記46:57開始至末尾
移除設(shè)計(jì)
remove_design -hierarchy查看所有的design設(shè)計(jì)
list_designs重新讀入設(shè)計(jì):
analyze -format verilog [list top.v counter.v fsm_moor.v] elaborate -architecture verilog top此時(shí)可以不用link,也不用current design
雖然都進(jìn)來(lái)了,但是應(yīng)該檢查讀進(jìn)來(lái)的設(shè)計(jì)是否有問題,要在綜合之前檢查。前面兩個(gè)命令會(huì)檢查語(yǔ)法錯(cuò)誤,至于check_design有無(wú)遞歸設(shè)計(jì),或者引腳連錯(cuò)。
check_design通常,如果進(jìn)行check_design進(jìn)行檢查時(shí)候,會(huì)返回一個(gè)值如果是0那么就會(huì)有錯(cuò),所以我們定義了如下腳本,同樣如果我們進(jìn)行l(wèi)ink的時(shí)候,link也會(huì)返回一個(gè)值,如果這個(gè)值是0,就代表link有錯(cuò)。exit就代表退出DC
if {[link]==0} {echo "link with error";exit } if {[check_design]==0} {echo "Check designing with error! ";exit;}為了確保在添加約束之前,約束是干凈的,需要把之前的約束給清楚掉。所以建議,reset_design,此時(shí)你的設(shè)計(jì)是非常干凈的,因?yàn)榇藭r(shí)還沒有約束。
reset_design此時(shí)開始創(chuàng)建約束,下面創(chuàng)建了一個(gè)時(shí)鐘周期的約束,如果沒有-name那么默認(rèn)這個(gè)時(shí)鐘的名字就等價(jià)于這個(gè)端口的名字,都叫clk_i,當(dāng)然還可以加-waveform [list 0 5],對(duì)于單沿觸發(fā)一般影響不大
create_clock -period 10 [get_ports clk_i]下面還要輸入input delay,外面留6成,里面留4成,并且需要指定你相對(duì)于哪一個(gè)參考時(shí)鐘
set_input_delay 6 -clock clk-i [all_inputs]由于輸入時(shí)鐘端口不需要做一個(gè)delay,因此需要把輸入時(shí)鐘端口的delay給排除掉
remove_input_delay [get_ports clk_i]此時(shí)設(shè)置輸出端口的延遲,相對(duì)于時(shí)鐘端口clock clk_i
set_output_delay 6 -clock clk_i [all_outputs]在DC進(jìn)行綜合之前需要對(duì)所有的路徑添加約束,除了跨時(shí)鐘域的可以設(shè)置為false_path。如果你不添加完成,他如何選擇合適的cell,所以必須要全部添加約束。用check_timing檢查有沒有漏掉的時(shí)鐘約束
check_timing此時(shí)約束路徑全部有了之后,可以跑一個(gè)簡(jiǎn)單的綜合
compile在綜合完畢后,可以先看一下有沒有違規(guī)的地方。
report_constraint -all_violators此時(shí)線負(fù)載模型、驅(qū)動(dòng)、面積等等都沒有約束。此時(shí)約束條件是比較寬松的。
如何檢查自己的tcl約束腳本是否正確。
dcprocheck filename.tcl總結(jié)
以上是生活随笔為你收集整理的DC课程笔记-数字逻辑综合工具-DC Environment Attributes的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux如何显示文件数目的技巧比较两个
- 下一篇: DC课程笔记-数字逻辑综合工具-DC S