vivado -mode tcl和vivado -mode batch有什么區(qū)別?
同樣的Tcl腳本,我們可以采用Vivado Tcl模式運(yùn)行,也可以采用Vivado Batch模式運(yùn)行,如下所示:
vivado-mode tcl -source user.tcl
vivado-mode batch -source user.tcl
從Tcl角度而言,兩者并沒(méi)有本質(zhì)的差別,只有一些細(xì)微差別。細(xì)微差別如下:
-mode tcl會(huì)打開(kāi)Vivado tcl shell,運(yùn)行結(jié)束后仍然在Vivado tcl shell下;
-mode batch也會(huì)打開(kāi)Vivado tcl shell,但運(yùn)行結(jié)束后會(huì)返回native shell下;
-mode batch模式下可以通過(guò)選項(xiàng)-tclargs設(shè)置參數(shù),例如:
vivado -mode batch -sourcescript.tcl -tclargs "FPGA=115-2"
同時(shí),batch模式下未知命令不會(huì)被送給OS去執(zhí)行。
如何導(dǎo)出更詳細(xì)的資源利用率報(bào)告?
在Vivado圖形界面下,我們可以通過(guò)命令report_utilization生成資源利用率報(bào)告。在這個(gè)報(bào)告里可以看到每個(gè)模塊的資源利用率,如下圖所示。有時(shí)我們需要將報(bào)告導(dǎo)出來(lái),此時(shí)可以在下圖所示界面點(diǎn)擊鼠標(biāo)右鍵,選擇“Exportto Spreadsheet”就會(huì)生成一個(gè)Excel文件,該文件里會(huì)詳細(xì)顯示每個(gè)模塊的資源利用率信息。
此外,我們還可以通過(guò)選項(xiàng)-spreadsheet_depth管理需要查看到的層次,最頂層算1,如下圖所示。使用-spreadsheet_file時(shí)需要和-name一起使用。
如果只是看總體資源利用率,那么就可以直接用report_utilization添加-file選項(xiàng)。
如何獲取被復(fù)制的寄存器?
降低扇出的一種方法就是復(fù)制寄存器。通常,工具會(huì)根據(jù)時(shí)序需求對(duì)驅(qū)動(dòng)高扇出net的寄存器進(jìn)行復(fù)制,新生成的寄存器名字中會(huì)包含關(guān)鍵字rep,如下圖所示。如果我們?cè)O(shè)計(jì)中存在由原始寄存器作為起始單元的時(shí)序例外約束,那么就要確保該約束同樣作用于新生成的復(fù)制寄存器。盡管我們可以通過(guò)關(guān)鍵字rep來(lái)鎖定這些復(fù)制的寄存器,但這種方法仍然過(guò)于繁瑣。好在命令get_cells本身就提供了選項(xiàng)-include_replicated_objects,這樣添加該選項(xiàng)即可獲得原始寄存器外加新生成的復(fù)制寄存器。
如何限定約束的作用域?
假定有這樣一個(gè)場(chǎng)景:模塊A內(nèi)部包含一些多周期約束的路徑,同時(shí)模塊A本身在設(shè)計(jì)中被多次實(shí)例化。如果把模塊A當(dāng)作頂層描述其中的多周期路徑約束將非常方便,這樣避免了設(shè)計(jì)層次的干擾。而實(shí)際情形是模塊A并非頂層,如果針對(duì)模塊A的實(shí)例化逐一添加該約束,那么這個(gè)過(guò)程將會(huì)較為繁瑣且容易出錯(cuò)。有沒(méi)有其他辦法呢?想想Vivado自帶的IP,很多IP都自帶約束,同一個(gè)IP無(wú)論實(shí)例化多少次,我們只會(huì)看到一份約束文件。這是因?yàn)檫@些約束文件都被限制了作用域。如下圖所示,顯示了IPFIFO生成的約束文件的作用域,這個(gè)作用域是通過(guò)屬性SCOPED_TO_CELLS和SCOPE_TO_REF來(lái)指定。通過(guò)其一就可指定作用域。這里SCOPE_TO_REF值為模塊A本身的名字,而SCOPED_TO_CELL的值為模塊A實(shí)例化的名字,注意兩者含義的差別。采用此方法我們就可以將用戶約束文件限定其作用域?yàn)橹付K。需要注意的是有些約束依賴于外部時(shí)鐘,比如多周期路徑約束,set_multicycle_path跟的數(shù)值為時(shí)鐘周期個(gè)數(shù),工具要將其轉(zhuǎn)換為絕對(duì)時(shí)間ns,就要知道時(shí)鐘周期具體數(shù)值,因此還要指定該約束文件的處理順序,這可通過(guò)屬性PROCESSING_ORDER指定,將其值設(shè)置為L(zhǎng)ATE即可。
launch_runs時(shí)的jobs和thread有什么區(qū)別?
Launch Runs時(shí)會(huì)彈出如下圖所示的對(duì)話框,其中可以讓用戶選擇“Number of jobs”,其含義是指當(dāng)同時(shí)執(zhí)行多個(gè)Run時(shí)可使用的本地CPU核的個(gè)數(shù)。而thread線程數(shù),則需要通過(guò)Tcl腳本設(shè)定,
set_paramgeneral.maxThreads 4
-
寄存器
+關(guān)注
關(guān)注
31文章
5294瀏覽量
119813 -
命令
+關(guān)注
關(guān)注
5文章
676瀏覽量
21965 -
腳本
+關(guān)注
關(guān)注
1文章
387瀏覽量
14811 -
Vivado
+關(guān)注
關(guān)注
19文章
804瀏覽量
66221
原文標(biāo)題:幾個(gè)常見(jiàn)問(wèn)題
文章出處:【微信號(hào):Lauren_FPGA,微信公眾號(hào):FPGA技術(shù)驛站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論