日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Design Compiler指南——施加设计约束

發(fā)布時(shí)間:2023/12/10 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Design Compiler指南——施加设计约束 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????Design Compiler是一個(gè)約束驅(qū)動(dòng)(constrain-driven)的綜合工具,它的結(jié)果是與設(shè)計(jì)者施加的約束條件密切相關(guān)的。在本文里,我們主要討論怎樣給電路施加約束條件,這些約束主要包括——時(shí)序和面積約束、電路的環(huán)境屬性、時(shí)序和負(fù)載在不同模塊之間的分配以及時(shí)序分析。

一、時(shí)序和面積

????????上圖是RTL模塊的綜合示意圖,可以看出在RTL代碼仿真通過以后,就開始將它進(jìn)行綜合,綜合時(shí)需要對(duì)他加入約束和設(shè)計(jì)屬性的信息,DC根據(jù)這些約束將RTL模塊綜合成門級(jí)網(wǎng)表,然后分析綜合出的網(wǎng)表是否滿足約束條件,如果不滿足就要修改約束條件,甚至重寫RTL代碼。值得注意的是,上面提到的僅僅是RTL模塊的綜合過程,而不是整個(gè)芯片的綜合,整個(gè)芯片是由很多這樣的模塊組成的,它的綜合過程與上圖描述的過程有一定的區(qū)別,具體我們將在后面進(jìn)行討論。?

1、定義面積約束

????????因?yàn)樾酒娣e直接關(guān)系到芯片的成本,面積越大,成本越高,因此,集成電路的設(shè)計(jì)總是希望面積盡量小,以減小芯片成本。定義面積約束是通過set_max_area命令來完成的,比如:

dc_shell > current_design PRGRM_CNT_TOP

dc_shell > set_max_area 100

????????上面的例子給PRGRM_CNT_TOP的設(shè)計(jì)施加了一個(gè)最大面積100單位的約束。100的具體單位是由Foundry規(guī)定的,定義這個(gè)單位有三種可能的標(biāo)準(zhǔn):

  • 一種是將一個(gè)二輸入與非門的大小作為單位1;
  • 第二種是以晶體管的數(shù)目規(guī)定單位;
  • 第三種則是根據(jù)實(shí)際的面積(平方微米等等)。
  • ????????至于設(shè)計(jì)者具體用的是哪種單位,可以通過下面的一個(gè)小技巧得到——即先綜合一個(gè)二輸入與非門,用report_area看他的面積是多少,如果是1,則是按照第一種標(biāo)準(zhǔn)定義的;如果是4,則是第二種標(biāo)準(zhǔn);如果是其他的值,則為第三種標(biāo)準(zhǔn)。

    2、同步設(shè)計(jì)的特點(diǎn)

    ????????同步時(shí)序電路是DC綜合的前提,因此這里有必要先討論一下同步時(shí)序電路的特點(diǎn)及目標(biāo)。這里所討論的同步時(shí)序電路的特點(diǎn)是——電路中的信號(hào)從一個(gè)受時(shí)鐘控制的寄存器觸發(fā),到達(dá)另一個(gè)受時(shí)鐘控制的寄存器。而我們要達(dá)到的目標(biāo)是——約束電路中所有的時(shí)序路徑,這些時(shí)序路徑可以分為三類:輸入到寄存器的路徑 、寄存器到寄存器之間的路徑以及寄存器到輸出的路徑。他們分別對(duì)應(yīng)與下圖所示的標(biāo)號(hào)為N、X和S的電路。

    ????????假設(shè)在上面的電路中,我們要控制觸發(fā)器FF2到FF3之間的時(shí)序,即X電路的延時(shí),那要通過什么方式讓DC知道呢?顯然一個(gè)直觀的辦法就是定義系統(tǒng)的時(shí)鐘Clk,如果我們定義好了Clk的周期,那么DC會(huì)自動(dòng)的盡量保證從FF2觸發(fā)的信號(hào)能在一個(gè)周期內(nèi)到達(dá)FF3寄存器。假如周期是10ns,FF3觸發(fā)器的建立時(shí)間(setup time)是1ns,那么留給X電路的延時(shí)最大只能有10-1=9ns。

    3、定義時(shí)鐘

    ????????在電路綜合的過程中,所有時(shí)序電路以及組合電路的優(yōu)化都是以時(shí)鐘為基準(zhǔn)來計(jì)算路徑延遲的,因此,一般都要在綜合的時(shí)候指定時(shí)鐘,作為估計(jì)路徑延遲的基準(zhǔn)。定義時(shí)鐘的時(shí)候我們必須定義它的時(shí)鐘源(Clock source),時(shí)鐘源可以是端口也可以是管腳;另外還必須定義時(shí)鐘的周期。另外有一些可選項(xiàng),比如占空比(Duty Cycle)、時(shí)鐘偏差(Clock Skew)和時(shí)鐘名字(Clock Name)。定義時(shí)鐘采用一個(gè)語句create_clock完成——

    dc_shell > create_clock -period 10 [get_ports? Clk]

    dc_shell > set_dont_touch_network??[get_ports? Clk]

    ????????第一句定義了一個(gè)周期為10ns的時(shí)鐘①,它的時(shí)鐘源是一個(gè)稱為Clk的端口。

    ????????第二句對(duì)所有定義的時(shí)鐘網(wǎng)絡(luò)設(shè)置為don’t_touch,即綜合的時(shí)候不對(duì)Clk信號(hào)優(yōu)化。如果不加這句,DC會(huì)根據(jù)Clk的負(fù)載自動(dòng)對(duì)他產(chǎn)生Buffer,而在實(shí)際的電路設(shè)計(jì)中,時(shí)鐘樹(Clock Tree)的綜合有自己特別的方法,它需要考慮到實(shí)際布線后的物理信息,所以DC不需要在這里對(duì)它進(jìn)行處理,就算處理了也不會(huì)符合要求。

    4、約束輸入路徑

    ????????

    ????????從上圖可以看出,我們所要定義的輸入延時(shí)是指被綜合模塊外的寄存器觸發(fā)的信號(hào)在到達(dá)被綜合模塊之前經(jīng)過的延時(shí),在上圖中就是外圍觸發(fā)器的clk-q的延時(shí)加上M電路的延時(shí)。當(dāng)確定這段延時(shí)之后,被綜合模塊內(nèi)部的電路延時(shí)的范圍也可以確定下來了。加入時(shí)鐘周期是20ns,輸入延時(shí)是4ns,內(nèi)部觸發(fā)器的建立時(shí)間為1.0ns,那么就可以推斷出要使電路正常工作,N電路的延時(shí)最大不能超過20-4-1.0=15.0ns。

    ????????設(shè)置輸入延時(shí)是通過DC的set_input_delay命令完成的——?

    dc_shell > set_input_delay -max 4 -clock Clk??[get_ports A]

    ????????如上面的語句指出了被綜合模塊的端口A的最大輸入延時(shí)為4ns。-max選項(xiàng)是指明目前設(shè)置的是輸入的最大延遲,為了滿足時(shí)序單元建立時(shí)間(setup time)的要求。另外還有一個(gè)選項(xiàng)是-min,它是針對(duì)保持時(shí)間的約束使用的。-clk是指出這個(gè)端口受哪個(gè)時(shí)鐘周期的約束。

    5、約束輸出路徑

    ????????上圖中,信號(hào)在被綜合模塊的觸發(fā)器U3里觸發(fā),被外圍的一個(gè)觸發(fā)器接收。對(duì)外圍電路而言,它有一個(gè)T電路延時(shí)和外圍觸發(fā)器的建立時(shí)間。當(dāng)確定了他們的延時(shí)之后,被綜合模塊內(nèi)部的輸出路徑延時(shí)范圍也就確定下來了。假如,時(shí)鐘周期20ns,輸出延時(shí)5.4ns,U3觸發(fā)器的clk-q延時(shí)為1.0ns,那么輸入路徑S的最大延時(shí)就是20-5.4-1.0=13.6ns。

    ????????設(shè)置輸入延時(shí)是通過DC的set_output_delay命令完成的——

    ?dc_shell > set_output_delay -max 5.4 -clock Clk??[get_ports B]

    ????????上面的語句指出了被綜合模塊的輸出端口B的最大輸出延時(shí)為5.4ns。-max選項(xiàng)是指明目前設(shè)置的是輸入的最大延遲;-clk是指出這個(gè)端口受哪個(gè)時(shí)鐘周期的約束。

    ????????至此,模塊的面積、時(shí)鐘、輸入輸出延時(shí)都施加了相應(yīng)的約束。在施加了這些約束之后,可以使用下面的幾個(gè)命令檢查約束是否施加成功——

    • report_port –verbose 報(bào)告在當(dāng)前設(shè)計(jì)中所有的輸入輸出端口屬性和施加的約束值
    • report_clock 報(bào)告當(dāng)前設(shè)計(jì)中定義的時(shí)鐘及其屬性情況
    • reset_design 刪除當(dāng)前設(shè)計(jì)中所有的屬性值和約束(通常用在約束腳本的第一句)
    • list_libs 列出內(nèi)存中所有可用的庫

    二、環(huán)境屬性

    ????????在上一節(jié)中,我們主要討論了怎樣電路中加入時(shí)序約束,如設(shè)置clock周期、設(shè)置輸入輸出延時(shí)等,但是僅僅靠這些約束還是不夠的。因?yàn)檫€要考慮到被綜合模塊周圍環(huán)境的變化,舉個(gè)例子說,如果當(dāng)外界的溫度變化,或者電路的供電電壓發(fā)生變化時(shí),延時(shí)會(huì)相應(yīng)的改變,所以這些方面也是必須考慮到的。類似的上一節(jié)僅僅約束了輸入輸出的延時(shí),而沒有考慮到他們的電平轉(zhuǎn)化時(shí)間(transition time),這些是有輸入輸出的外圍電路的驅(qū)動(dòng)能力負(fù)載大小決定的。另外,電路內(nèi)部的互連線的延時(shí)也沒有估計(jì)在內(nèi)。這一節(jié)我們主要討論怎樣給電路施加這些環(huán)境屬性。

    1、設(shè)置輸出負(fù)載

    ????????為了更加準(zhǔn)確的估計(jì)模塊輸出的時(shí)序,除了知道它的輸出延時(shí)之外還要知道輸出所接電路的負(fù)載情況,如果輸出負(fù)載過大會(huì)加大電路的transition time,影響時(shí)序特性。另外,由于DC默認(rèn)輸出負(fù)載為0,即相當(dāng)于不接負(fù)載的情況,這樣綜合出來的電路時(shí)序顯然過于樂觀,不能反映實(shí)際工作情況。

    ????????設(shè)置輸出負(fù)載是通過DC的set_load命令完成的。該命令有兩種用法,一種是直接給端口賦一個(gè)具體的值,另外則結(jié)合另一個(gè)命令load_of指出它的負(fù)載相當(dāng)于工藝庫中的哪個(gè)單元的負(fù)載值。

    ????????例如下圖,給OUT1端口設(shè)了一個(gè)負(fù)載為5的值。這里的單位也是由Foundry提供,具體的單位,可以通過report_lib命令查看,一般而言是pf。

    ? ? ? ? 采用第二種方法從下圖中可以看出,第一條語句說明OUT1端口接的負(fù)載值是my_lib中and2a0單元的A管腳的負(fù)載值。第二條語句則多用了TCL語言的表達(dá)式的語法,它說的是,OUT1相當(dāng)于接了三個(gè)inv1a0單元的A管腳的負(fù)載值。一般后面的這種方法用的多些。

    2、設(shè)置輸入驅(qū)動(dòng)

    ????????與設(shè)置輸出負(fù)載類似,為了更加準(zhǔn)確的估計(jì)模塊輸入的時(shí)序,我們同樣需要知道輸入端口所接單元的驅(qū)動(dòng)能力。在默認(rèn)的情況下,DC認(rèn)為驅(qū)動(dòng)輸入的單元的驅(qū)動(dòng)能力為無窮大,也就是說,transition time為0。

    ????????設(shè)置輸入驅(qū)動(dòng)是通過DC的set_driving_cell命令完成的。set_driving_cell是指定使用庫中的某一個(gè)單元來驅(qū)動(dòng)輸入端口。該命令是在輸入端口之前假想一個(gè)驅(qū)動(dòng)單元,然后按照該單元的輸出電阻來計(jì)算transition time,從而計(jì)算輸入端口到門單元電路的延遲。

    ?dc_shell > set_driving_cell -lib_cell and2a0 [get_ports IN1]

    3、設(shè)置工作條件

    ????????工作條件包括三方面的內(nèi)容——溫度、電壓以及工藝。在Foundry提供的工藝庫里,它的各個(gè)單元的延時(shí)是在一個(gè)“標(biāo)準(zhǔn)”(nominal)條件下得到的,比如說溫度25.0度、工藝參數(shù)1.0和工作電壓1.8V。一旦工作條件發(fā)生了改變,電路的時(shí)序特性也必將收到影響,以上三方面的因素對(duì)電路時(shí)序的影響如下所示:

    在較為先進(jìn)的工藝中,會(huì)出現(xiàn)溫度翻轉(zhuǎn)效應(yīng),即低溫反而導(dǎo)致delay更大,所以在使用庫的時(shí)候,要詳細(xì)閱讀庫的說明。

    ????????從圖中可以看出,單元的延時(shí)會(huì)隨著溫度的上升而增加;隨著電壓的上升而減小;隨著工藝尺寸的增大而增大。以上的這些工作條件的變化,Foundry在建庫的時(shí)候已經(jīng)考慮到了,因此它在工藝庫中提供了幾種工作條件的模型(operating condition model)以供設(shè)計(jì)者選擇。這些工作條件一般分為三種:最好情況(best case)、典型情況(typical case)以及最差情況(worst case)。我們?yōu)榱艘院竽苁闺娐氛5墓ぷ髟谏厦娴娜N情況下,在綜合的時(shí)候就必需要將他們考慮進(jìn)來。一般綜合只要考慮到最差和最好兩種情況,最差情況用于作基于建立時(shí)間(setup time)的時(shí)序分析,最好情況用于作基于保持時(shí)間(hold time)的時(shí)序分析。

    ????????在默認(rèn)情況下,Design Compiler不會(huì)自動(dòng)指定工作條件,我們可以先通過report_lib命令來列出在當(dāng)前的工藝庫里提供了哪幾種工作條件——

    ????????然后指定需要用到的工作條件,在做建立時(shí)間分析的時(shí)候需要用到最差情況的條件:

    ?dc_shell > set_operating_conditions -max "slow_125_1.62"

    ????????如果我們既要分析建立時(shí)間,又要分析保持時(shí)間那么就要同時(shí)指定最差和最好情況:

    dc_shell > set_min_library?core_slow.db -min_version core_fast.db

    dc_shell > set_operating_conditions -max "slow_125_1.62" -min "fast_0_1.98"

    ????????其中core_slow.db和core_fast.db分別是最差和最好條件下的工藝庫文件,第一句話先用set_min_library設(shè)定作保持時(shí)間檢查的庫,第二句話則分別對(duì)應(yīng)了兩種時(shí)間檢查需要用到的工作條件。

    4、設(shè)置連線負(fù)載模型

    ????????在DC綜合的過程中,連線延時(shí)是通過設(shè)置連線負(fù)載模型(wire load model)確定的。連線負(fù)載模型基于連線的扇出,估計(jì)它的電阻電容等寄生參數(shù),它是也是由Foundry提供的。Foundry根據(jù)其他用這個(gè)工藝流片的芯片的連線延時(shí)進(jìn)行統(tǒng)計(jì),從而得到這個(gè)值。

    ????????下面是一個(gè)負(fù)載模型的例子

    ?????????這個(gè)例子可以通過命令report_lib得到,它是ssc_core_slow這個(gè)工作條件下的一個(gè)名為160KGATES的負(fù)載模型。其中時(shí)間單位為1ns,電容負(fù)載單位為1pf,電阻單位為1kΩ。從圖中可以看出單位長(zhǎng)度的電阻以及電容值,DC在估算連線延時(shí)時(shí),會(huì)先算出連線的扇出,然后根據(jù)扇出查表,得出長(zhǎng)度,再在長(zhǎng)度的基礎(chǔ)上計(jì)算出它的電阻和電容的大小。若扇出值超出表中的值(假設(shè)為7),那么DC就要根據(jù)扇出和長(zhǎng)度的斜率(Slop)推算出此時(shí)的連線長(zhǎng)度來。

    ????????事實(shí)上,在每一種工作條件下都會(huì)有很多種負(fù)載模型,各種負(fù)載模型對(duì)應(yīng)不同大小的模塊的連線,如上圖的模型近似認(rèn)為是160K門大小的模塊適用的。可以認(rèn)為,模塊越小,它的單位長(zhǎng)度的電阻及電容值也越小,負(fù)載模型對(duì)應(yīng)的參數(shù)也越小。

    ????????設(shè)置輸入驅(qū)動(dòng)是通過DC的set_wire_load_model命令完成的。

    dc_shell > current_design addtwo?

    dc_shell > set_wire_load_model -name 160KGATES

    ????????如上面的語句,則設(shè)置了addtwo這個(gè)模塊的連線負(fù)載模型為160KGATES。

    ????????另外我們也可以讓DC自動(dòng)根據(jù)綜合出來的模塊的大小選擇負(fù)載模型,這個(gè)選項(xiàng)在默認(rèn)下是打開的。如下圖所示,當(dāng)綜合出的電路的面積小于43478.00時(shí),使用5KGATES的模型,屬于43478.00和86956.00之間時(shí),使用10KGATES的模型。

    ????????以上討論的情況是一個(gè)模塊內(nèi)部連線的負(fù)載模型的估計(jì)。如果連線連接的是不同的模塊,那么它的負(fù)載模型又將怎么估計(jì)呢?這就要用到連線負(fù)載模式(set_wire_load_mode)這個(gè)命令了。

    ????????連線負(fù)載模式一共有3種,圍繞(enclosed)、頂層(top)以及分段(segmented)。如上圖所示,一根連線連接了B2和B2兩個(gè)模塊,這兩個(gè)模塊都位于TOP下的SUB這個(gè)子模塊中,

  • 圍繞模式是指連接B1和B2的連線的負(fù)載模型用圍繞它們的模塊的負(fù)載模型代替,即用SUB的負(fù)載模型;
  • 頂層模式是指用頂層模塊的負(fù)載模型代替;
  • 分段模式顧名思義,分別根據(jù)穿過的三段的模型相加得到。
  • ????????如果要設(shè)置成圍繞模式,可以使用如下命令?

    dc_shell > set_wire_load_mode?enclosed

    當(dāng)然,約束中時(shí)序約束還有很多需要詳細(xì)了解,會(huì)在其他文中介紹。。。

    總結(jié)

    以上是生活随笔為你收集整理的Design Compiler指南——施加设计约束的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 美女扒开尿口让男人爽 | 久色精品 | 久久久啊啊啊 | 三级理论电影 | 国产成人精品白浆久久69 | 看av的网址 | 精品国产91久久久久久 | 精品人妻一区二区三区久久夜夜嗨 | 色哟哟视频网站 | 国产三级第一页 | 天堂а√在线中文在线新版 | 成人黄色在线观看 | 欧美日韩乱 | 国产又大又黄的视频 | 激情小说激情视频 | 麻豆视 | av在线地址 | 伊人色网 | 97色伦影院| 黄色网址在线免费观看 | 国产乱人伦精品 | 国产视频一区在线播放 | 色吧在线观看 | 亚洲永久免费网站 | 绿帽h啪肉np辣文 | av一级黄色片 | 丰满岳妇乱一区二区三区 | 婷婷麻豆 | 永久精品视频 | 男人的天堂影院 | 日韩成人不卡 | 国产99久久九九精品无码 | 永久免费无码av网站在线观看 | 麻豆69xxnxxporn | 成人爽站w47pw | 国产乱国产乱老熟300部视频 | 无码人妻aⅴ一区二区三区有奶水 | 性生交大片免费看3p | 人物动物互动39集免费观看 | 久久躁日日躁aaaaxxxx | 草草地址线路①屁屁影院成人 | 欧美三级韩国三级日本三斤 | 午夜不卡在线观看 | 亚洲乱码国产一区三区 | 日本三级韩国三级三级a级中文 | 亚洲精品国产成人av在线 | 在线中文字幕播放 | 青青草福利| 玉足女爽爽91 | 亚洲国产精品久久久久爰色欲 | 96超碰在线| 国产精品久久久久影院老司 | 日韩一二三区在线观看 | 亚洲天堂中文字幕在线观看 | 在线观看视频免费 | 日韩欧美在线观看一区二区 | 精品国产成人av | 中文字幕日本一区二区 | 欧美a级片视频 | 亚洲色欧美 | 六月丁香婷婷激情 | 花房姑娘免费观看全集 | 欧美a久久 | 少妇精品无码一区二区 | 精品96久久久久久中文字幕无 | 日韩人妻精品一区二区 | av乱码| 少妇人妻偷人精品视频蜜桃 | 91视频最新入口 | 国产伊人一区 | 国产一区二区三区在线观看免费 | www.亚洲色图.com | 日本一区二区三区在线观看视频 | 亚洲成人二区 | 婷婷五月小说 | 日韩欧美偷拍 | 超碰国产一区二区三区 | 欧美激情视频在线观看 | 亚洲产国偷v产偷v自拍涩爱 | 久久人人爽人人爽 | 国产黑丝精品 | 99视频只有精品 | 亚洲自拍偷拍综合 | 久久91精品| 大乳村妇的性需求 | 亚洲欧美中文日韩在线 | 亚洲欧美日韩第一页 | 深夜视频免费在线观看 | 一级片在线免费观看 | 国产欧美一区二区精品忘忧草 | 精品乱| 免费精品视频在线观看 | japanese在线| 成年免费视频 | 国产精品丝袜视频无码一区69 | 亚洲无码乱码精品国产 | 免费看国产黄色片 | 麻豆成人免费 | 尤果网福利视频在线观看 |