国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

tcl學(xué)習(xí)之路(五)(Vivado時(shí)序約束)

這篇具有很好參考價(jià)值的文章主要介紹了tcl學(xué)習(xí)之路(五)(Vivado時(shí)序約束)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.主時(shí)鐘約束

??主時(shí)鐘通常是FPGA器件外部的板機(jī)時(shí)鐘或FPGA的高速收發(fā)器輸出數(shù)據(jù)的同步恢復(fù)時(shí)鐘信號(hào)等。下面這句語(yǔ)法大家一定不會(huì)陌生。該語(yǔ)句用于對(duì)主時(shí)鐘的名稱、周期、占空比以及對(duì)應(yīng)物理引腳進(jìn)行約束。

create_clock -name <clock_name> -periood <period> -waveform {<rise_time> <fall_time>} [get_ports <port_name>]

??在設(shè)計(jì)中,未約束的時(shí)鐘可以通過(guò)時(shí)鐘網(wǎng)絡(luò)報(bào)告和時(shí)鐘確認(rèn)報(bào)告查看。在打開(kāi)綜合和實(shí)現(xiàn)設(shè)計(jì)后,輸入如下指令:

report_clock_networks
check_timing

??對(duì)于將高速傳輸器(gt)的輸出時(shí)鐘網(wǎng)絡(luò)作為主時(shí)鐘約束,命令如下:

creat_clock -name rxclk -period 6.667 [get_nets gt0/RXOUTCLK]

??對(duì)于一些硬件原語(yǔ)的輸出時(shí)鐘引腳,若與其輸入時(shí)鐘之間沒(méi)有很強(qiáng)的因果關(guān)聯(lián)性,也可以將這個(gè)硬件原語(yǔ)的輸出引腳作為時(shí)鐘源進(jìn)行主時(shí)鐘約束。
??對(duì)于差分時(shí)鐘,只需要對(duì)差分緩沖器的輸入正端(sys_clk_p)進(jìn)行主時(shí)鐘約束即可。若同時(shí)對(duì)正負(fù)端進(jìn)行約束,會(huì)導(dǎo)致不真實(shí)的CDC(clock domain crossing)路徑產(chǎn)生。
??對(duì)于MMCM和PLL,系統(tǒng)會(huì)自動(dòng)生成相應(yīng)的約束文件,不需要手動(dòng)約束。
??在一些時(shí)序路徑中,如一些引腳上的數(shù)據(jù)信號(hào),其同步時(shí)鐘只存在于外部芯片,并不存在于FPGA器件內(nèi)。這種情況下,為了時(shí)序分析的需要也必須定義一個(gè)時(shí)鐘用于描述時(shí)序數(shù)據(jù)引腳的外部時(shí)鐘信號(hào),這個(gè)時(shí)鐘就是虛擬時(shí)鐘。虛擬時(shí)鐘的約束不需要引腳。

create_clock -name clk_virt -period 10

2.時(shí)鐘特性約束

??對(duì)于時(shí)鐘抖動(dòng)的約束有以下兩條 ,其中set_input_jitter只能約束主時(shí)鐘,set_system_jitter對(duì)系統(tǒng)抖動(dòng)進(jìn)行定義。

set_input_jitter [get_clocks <clock_name>] <jitter_in_ns>
set_system_jitter <clock_name> <jitter_in_ns>

??除時(shí)鐘抖動(dòng)以為的所有可能影響時(shí)鐘周期性偏差的因素,都可以使用set_clock_uncertainty命令進(jìn)行約束定義。也稱用戶不確定性。

set_clock_uncertainty -<setup/hold/空出來(lái)表示兩者都有> -from [get_clocks <clock0_name>] -to [get_clocks <clock1_name>] <uncertainty_value> 

??對(duì)于時(shí)鐘延時(shí)約束,有以下命令:

set_clock_latency [-clock <args>] [-rise] [-fall] [-min/max/空出來(lái)表示兩者都有] [-source] <latency> <objects>

3.衍生時(shí)鐘約束

??衍生時(shí)鐘主要是指由已有的主時(shí)鐘進(jìn)行分頻、倍頻或者相移而產(chǎn)生出來(lái)的時(shí)鐘信號(hào),如由MMCM或一些設(shè)計(jì)邏輯所驅(qū)動(dòng)產(chǎn)生的時(shí)鐘信號(hào)。一般Vivado的時(shí)序工具能夠自動(dòng)產(chǎn)生正確的衍生時(shí)鐘,若設(shè)計(jì)者認(rèn)為自動(dòng)產(chǎn)生的衍生時(shí)鐘有誤,也可以手動(dòng)進(jìn)行衍生時(shí)鐘的約束。

create_generated_clock -name <generated_clock_name> -source <master_clock_source_pin_or_port> -multiply_by <mult_factor>\
                       -divide_by <div_factor> <pin_or_port>

4.IO接口約束

??IO接口的時(shí)序約束主要包括set_input_delay和set_output_delay,輸入輸出約束差不多,主要約束如下:

set_input_delay -clock<args> -reference_pin<args> -clock_fall -rise -max -add_delay <delay> <objects>
#下面對(duì)命令進(jìn)行解釋
-clock 用于指定約束引腳的同步時(shí)鐘(源時(shí)鐘),其后的<args>即需要指定的同步時(shí)鐘名稱,這個(gè)時(shí)鐘可以是設(shè)計(jì)中事先定義的主時(shí)鐘或虛擬時(shí)鐘。
-reference_pin 用于指定延時(shí)值<delay>的參考時(shí)鐘,其后的<args>即需要指定的參考時(shí)鐘名稱。該項(xiàng)是可選項(xiàng),不指定該選項(xiàng),則指定延時(shí)值的參考時(shí)鐘就是-clock指定的同步時(shí)鐘。
-clock_fall 指定輸入延時(shí)約束取值相對(duì)于同步時(shí)鐘的下降沿。若不指定,默認(rèn)為-clock_rise
-rise 指定約束信號(hào)相對(duì)時(shí)鐘的邊沿關(guān)系是上升沿,也可以用-fall指定為下降沿
-max 設(shè)定最大延時(shí)值,也可以是-min最小值。若不指定,則是最大最小值都包括
-add_delay 用于多組參考組合的輸入引腳約束
<delay> 設(shè)定延時(shí)值
<objects> 指定約束的目標(biāo)輸入引腳名稱

??關(guān)于輸入延時(shí)的計(jì)算如下:

set_input_delay(max)= -Tc2j_pcb(min) + Tco(max) + Td_pcb(max)
set_input_delay(min)= -Tc2j_pcb(min) + Tco(max) + Td_pcb(min)
其中c2j_pcb代表時(shí)鐘源在pcb上的走線延時(shí),d_pcb為數(shù)據(jù)在pcb上的走線延時(shí),co為外部芯片數(shù)據(jù)引腳輸出數(shù)據(jù)所經(jīng)過(guò)的延時(shí),查芯片手冊(cè)可以獲得。
set_output_delay(max)= Td_pcb(max) - Tc2j_pcb(min) + Tsu
set_output_delay(min)= Td_pcb(min) - Tc2j_pcb(min) - Th 

5.時(shí)鐘例外約束

??進(jìn)行時(shí)序例外約束的原因:時(shí)序分析工具默認(rèn)的時(shí)序檢查方式可能與工程實(shí)現(xiàn)的實(shí)際情況不符合(通常是約束過(guò)緊,可能導(dǎo)致時(shí)序失?。?。因此,設(shè)計(jì)者需要額外增加一些約束命令,用于調(diào)整既有的時(shí)序檢查方式,以保證時(shí)序工具的時(shí)序檢查與實(shí)際情況一致。
??進(jìn)行時(shí)序例外約束的典型例子:1.異步時(shí)鐘域路徑,通??梢允褂脮r(shí)鐘分組約束或虛假路徑約束以及多周期約束。2.某些邏輯的時(shí)序單元并非每個(gè)時(shí)鐘周期都及進(jìn)行數(shù)據(jù)采樣傳輸,此時(shí)可以使用多周期約束,適當(dāng)放寬這些路徑的約束 。3.有時(shí)設(shè)計(jì)中希望對(duì)時(shí)序路徑施加更緊的約束,以獲得更大的時(shí)序余量,此時(shí)可以使用最大/最小延時(shí)約束。4.某些組合路徑是靜態(tài)的(賦值不變)或不需要進(jìn)行時(shí)序約束,此時(shí)可以使用虛假路徑約束忽略這些路徑。

5.1多周期約束

??多周期約束語(yǔ)法如下:

set_multicycle_path <path_multiplier> -setup/hold -start/end -from <startpoints> -to <endpoints> -through <pins/cells/nets>
#
-start和-end用于指定約束命令的周期參數(shù)是以源時(shí)鐘還是以目標(biāo)時(shí)鐘作為參考時(shí)鐘。

??對(duì)于源時(shí)鐘和目標(biāo)時(shí)鐘同頻同相的時(shí)序路徑分析,是否使用-start和-end是沒(méi)有頭差異的。
??保持時(shí)間的時(shí)鐘周期數(shù)=建立時(shí)間的<path_multiplier>參數(shù)-1-保持時(shí)間的<path_multiplier>參數(shù)。在一般情況下,若只對(duì)setup進(jìn)行set_multicycle_path約束,則保持時(shí)間的<path_multiplier>參數(shù)默認(rèn)為0,也就是保持時(shí)間的時(shí)鐘周期數(shù)默認(rèn)和建立時(shí)間的<path_multiplier>參數(shù)相差一個(gè)時(shí)鐘周期。那么僅對(duì)setup進(jìn)行約束,則建立時(shí)間和保持時(shí)間關(guān)系同時(shí)向右移動(dòng)<path_multiplier>參數(shù)-1個(gè)時(shí)鐘周期,若加上對(duì)hold的<path_multiplier>參數(shù)約束,則保持時(shí)間關(guān)系會(huì)向左移動(dòng)hold的<path_multiplier>參數(shù)個(gè)時(shí)鐘周期,從而達(dá)到多周期約束的效果。
??下面給出示意圖。
??當(dāng)約束僅為set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]時(shí),圖形如下:
tcl學(xué)習(xí)之路(五)(Vivado時(shí)序約束),tcl學(xué)習(xí),學(xué)習(xí),tcl學(xué)習(xí),fpga開(kāi)發(fā)??當(dāng)約束為set_multicycle_path 2 -setup -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]和set_multicycle_path 1 -hold -from [get_pins data0_reg/C] -to [get_pins data1_reg/D]時(shí),圖形如下:
tcl學(xué)習(xí)之路(五)(Vivado時(shí)序約束),tcl學(xué)習(xí),學(xué)習(xí),tcl學(xué)習(xí),fpga開(kāi)發(fā)??對(duì)于同頻異相的時(shí)鐘,在默認(rèn)情況下時(shí)序工具會(huì)尋找與clk1相鄰最近的clk2時(shí)鐘上升沿,并以clk1和clk2相對(duì)時(shí)間最短(時(shí)序要求最高,即最壞情況)的一組時(shí)鐘沿的時(shí)序路徑進(jìn)行分析。此時(shí),使用如下約束命令進(jìn)行調(diào)整:

set_multicycle_path 2 -setup -from [get_clocks CLK1] -to [get_clocks CLK2]

??對(duì)于慢時(shí)鐘域到快時(shí)鐘域或者快時(shí)鐘域到慢時(shí)鐘域有異曲同工之妙,需要注意的是-start和-end的確認(rèn),下面給出這兩種情況的通用約束方法。

#慢-快
set_multicycle_path N -setup -end -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -end -from [get_clocks CLK1] -to [get_clocks CLK2]
#快-慢
set_multicycle_path N -setup -start -from [get_clocks CLK1] -to [get_clocks CLK2]
set_multicycle_path N-1 -hold -start -from [get_clocks CLK1] -to [get_clocks CLK2]

5.2虛假路徑約束

??所謂虛假路徑,是指該路徑是設(shè)計(jì)中的非功能路徑或沒(méi)有任何時(shí)序要求的路徑。做虛假路徑約束的原因:可以減少編譯時(shí)間,同時(shí)騰出有限的布局布線資源,用于提升整體的時(shí)序性能。常見(jiàn)的虛假路徑包括:1.已經(jīng)做過(guò)同步處理的跨時(shí)鐘域路徑。2.上電后只做一次初始化寫(xiě)入寄存器路徑。3.復(fù)位或測(cè)試邏輯路徑。4.某些實(shí)際并不存在的時(shí)序路徑。例如,設(shè)計(jì)中的兩個(gè)異步是哦只能怪域之間的數(shù)據(jù)通信已經(jīng)使用雙寄存器鎖存等方式進(jìn)行同步了,就可以使用虛假路徑約束關(guān)閉這兩個(gè)時(shí)鐘之間的數(shù)據(jù)路徑檢查。約束的基本語(yǔ)法如下:

set_false_path -setup/hold -from <node_list> -to <node_list> -through <node_list>
#對(duì)于兩個(gè)或多個(gè)相斥時(shí)鐘做約束推薦用法
set_clock_groups -group CLKA -group CLKB

5.3最大/最小延時(shí)約束

??最大延時(shí)約束將覆蓋默認(rèn)的建立時(shí)間分析的最大路徑延時(shí)值。最小延時(shí)約束將覆蓋默認(rèn)的保持時(shí)間分析的最小路徑延時(shí)值?;炯s束語(yǔ)法如下:

set_max_delay <delay> -datapath_only -from <node_list> -to <node_list> -through <node_list>
set_min_delay <delay> -from <node_list> -to <node_list> -through <node_list>

??其中,-datapath_only只能用于含有-from選項(xiàng)的set_max_delay約束命令中。該選項(xiàng)會(huì)將時(shí)鐘偏斜考慮移除,同時(shí)會(huì)將約束路徑的保持時(shí)間檢查設(shè)置為false路徑,相當(dāng)于同時(shí)對(duì)此路徑自動(dòng)生成了set_false_path -hold約束。也就是說(shuō),若對(duì)同一路徑進(jìn)行set_min_delay約束,將會(huì)被忽略。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-661972.html

到了這里,關(guān)于tcl學(xué)習(xí)之路(五)(Vivado時(shí)序約束)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • FPGA時(shí)序約束--實(shí)戰(zhàn)篇(讀懂Vivado時(shí)序報(bào)告)

    FPGA時(shí)序約束--實(shí)戰(zhàn)篇(讀懂Vivado時(shí)序報(bào)告)

    目錄 一、新建工程 二、時(shí)序報(bào)告分析 1、打開(kāi)時(shí)序報(bào)告界面 2、時(shí)序報(bào)告界面介紹 3、時(shí)序路徑分析 三、總結(jié) FPGA開(kāi)發(fā)過(guò)程中,vivado和quartus等開(kāi)發(fā)軟件都會(huì)提供時(shí)序報(bào)告,以方便開(kāi)發(fā)者判斷自己的工程時(shí)序是否滿足時(shí)序要求。 本文將詳細(xì)介紹如何讀懂Vivado時(shí)序報(bào)告,包括報(bào)告

    2024年02月12日
    瀏覽(23)
  • FPGA的時(shí)序分析、約束和收斂(6)----如何讀懂vivado下的時(shí)序報(bào)告?

    目錄 寫(xiě)在前面 1、建立工程與添加時(shí)序約束 2、時(shí)序報(bào)表 ????????在之前的文章中寫(xiě)了一些時(shí)序分析的基礎(chǔ)概念,同時(shí)還說(shuō)了文章中提到的公式根本就不需要記憶,因?yàn)榫C合工具vivado會(huì)幫你把所有時(shí)序路徑都做詳盡的分析,你所需要做的就是理解概念。 ????????光說(shuō)不

    2024年02月12日
    瀏覽(27)
  • tcl學(xué)習(xí)之路(二)(vivado設(shè)計(jì)流程管理)

    對(duì)于vivado的實(shí)現(xiàn)階段有以下步驟 1.設(shè)計(jì)初始化階段 init_design 2.設(shè)計(jì)優(yōu)化 opt_design 默認(rèn)執(zhí)行 3.功耗優(yōu)化 power_opt_design 4.布局 place_design 默認(rèn)執(zhí)行 5.布局后功耗優(yōu)化 power_opt_design(post_place_power_opt_design) 6.布局后物理優(yōu)化 phys_opt_design 默認(rèn)執(zhí)行 7.布線 route_design 默認(rèn)執(zhí)行 8.布線后物理

    2024年02月11日
    瀏覽(23)
  • 【ug903】FPGA時(shí)序約束學(xué)習(xí)(4)-如何約束跨時(shí)鐘域(Clock domain crossing,CDC)

    【ug903】FPGA時(shí)序約束學(xué)習(xí)(4)-如何約束跨時(shí)鐘域(Clock domain crossing,CDC)

    時(shí)序約束系列: 如何約束時(shí)鐘 主時(shí)鐘、虛擬時(shí)鐘、生成時(shí)鐘、時(shí)鐘組、時(shí)鐘不確定性 如何約束輸入輸出延遲 輸入延遲、輸出延遲 如何約束時(shí)序例外 多周期路徑、輸入輸出延遲、虛假路徑、最大最小延遲 如何約束跨時(shí)鐘域 總線偏斜 跨時(shí)鐘域(Clock Domain Crossing,CDC)約束適用

    2024年02月08日
    瀏覽(46)
  • Xilinx FPGA SPIx4 配置速度50M約束語(yǔ)句(Vivado開(kāi)發(fā)環(huán)境)

    Xilinx FPGA SPIx4 配置速度50M約束語(yǔ)句(Vivado開(kāi)發(fā)環(huán)境)

    qspi_50m.xdc文件: 等同于圖形化配置方式:

    2024年02月22日
    瀏覽(99)
  • vivado 如何添加時(shí)序約束

    vivado 如何添加時(shí)序約束

    一個(gè) FPGA 設(shè)計(jì)除了管腳分配以外,還有一個(gè)重要的約束,那就是時(shí)序約束,這里通過(guò)向 導(dǎo)方式演示如果進(jìn)行一個(gè)時(shí)序約束 點(diǎn)擊“Run Synthesis”開(kāi)始綜合 彈出對(duì)話框點(diǎn)擊“OK” 綜合完成以后點(diǎn)擊“Cancel” 4) 點(diǎn)擊“Constraints Wizard” 5) 在彈出的窗口中點(diǎn)擊“Next” 6) 時(shí)序約束向?qū)?/p>

    2023年04月10日
    瀏覽(23)
  • Vivado時(shí)序約束基礎(chǔ)

    Vivado時(shí)序約束基礎(chǔ)

    ? ? ? 今天這篇博客,筆者向大家簡(jiǎn)單介紹Xilinx FPGA中的Vivado時(shí)序約束基礎(chǔ)知識(shí),也為后續(xù)的學(xué)習(xí)打好鋪墊。 Xilinx Design Constraints (XDC) 概述 ? XDC 在本質(zhì)上就是Tcl 語(yǔ)言,但其僅支持基本的Tcl 語(yǔ)法,如變量、列表和運(yùn)算符等等,對(duì)其他復(fù)雜的循環(huán)以及文件I/O 等語(yǔ)法可以通過(guò)在

    2024年02月10日
    瀏覽(21)
  • Vivado操作之時(shí)序約束介紹

    Vivado操作之時(shí)序約束介紹

    目錄 一、前言 二、時(shí)序約束界面 三、時(shí)序約束介紹 四、參考 ????? ?任何一個(gè)FPGA工程都需要設(shè)置相關(guān)的時(shí)序約束,下面將介紹Vivado中如何進(jìn)行時(shí)序約束操作以及各種約束的使用方法。 ???????? 在一個(gè)工程運(yùn)行到IMPLEMENTATION后,進(jìn)入到左側(cè)的Flow Navigator窗口,點(diǎn)擊IMPL

    2024年02月05日
    瀏覽(25)
  • vivado 一文歸納出時(shí)序約束

    vivado 一文歸納出時(shí)序約束

    對(duì)于時(shí)序路徑來(lái)說(shuō),一共有4種時(shí)序路徑,如下圖: (1)從上游芯片最后一級(jí)觸發(fā)器的時(shí)鐘發(fā)送沿有效到FPGA中第一級(jí)觸發(fā)器的輸入。 (2)FPGA內(nèi)部從上級(jí)觸發(fā)器時(shí)鐘發(fā)送沿有效到下級(jí)觸發(fā)器的輸入。 (3)從FPGA最后一級(jí)觸發(fā)器的時(shí)鐘發(fā)送沿有效到下游芯片第一級(jí)觸發(fā)器的輸入

    2024年01月20日
    瀏覽(4)
  • Vivado約束添加方法:一文全面解析IO和時(shí)序約束

    Vivado約束添加方法:一文全面解析IO和時(shí)序約束

    FPGA開(kāi)發(fā)離不開(kāi)IO約束和時(shí)序約束,IO約束用于確定輸入/輸出端口的物理端口和電氣特性,與芯片和電路設(shè)計(jì)有關(guān)。而時(shí)序約束則用于設(shè)定FPGA設(shè)計(jì)中的時(shí)序特性,以確保系統(tǒng)能夠在預(yù)期時(shí)鐘頻率下正常運(yùn)行。本文將介紹vivado中常見(jiàn)的設(shè)置約束的方法。 IO約束,實(shí)際上是將工程的

    2024年02月02日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包