為便于說明,這里我們給出一個應用案例。DFX設計中有兩個RP:count和shift。每個RP下分別有兩個RM,即count下有count_down和count_up兩個RM,shift下有shift_left和shift_right兩個RM,如下圖所示。
標準的DFX流程會形成兩個configuration,如下圖所示。config_1為static + count_up +shift_right,config_2為static +count_down + shift_left。在此基礎上形成兩個Design Runs,其中parent run為impl_1,child run為child_0_impl_1,如下圖所示。
執行impl_1,直至生成布線后的.dcp文件,共4個。top_routed.dcp:整個設計布線后的.dcp文件(static + count_up + shift_right)top_routed_bb.dcp:靜態區布線后的.dcp文件(static + count_blacbox + shift_blackbox)此時,靜態區布局布線信息被鎖定,每個RP被當作黑盒子。u_count_count_up_routed.dcp:RM count_up布線后的.dcpu_shift_shift_right_routed.dcp:RM shift_right布線后的.dcp
Abstract Shell流程和標準的DFX流程至此操作是相同的。接下來Abstract Shell流程就需要對每個RP生成相應的Abstract Shell。此時需要用到的文件是top_routed.dcp。打開該文件執行命令write_abstract_shell,如下圖所示。
以圖中第19行代碼為例,write_abstract_shell會首先通過命令update_design -blackbox將RP count的RM換為黑盒子,之后鎖定相關靜態區與之的接口信息以及RP count的位置信息,并生成相應的.dcp文件即ab_sh_count.dcp。這個過程中還會執行pr_verify命令(這些命令都被包含在wrtie_abstract_shell中,不需要單獨執行)。
打開ab_sh_count.dcp,可以看到Netlist窗口下顯示的信息除了靜態區部分cell之外就是RP count對應的黑盒子u_count,同時左側Physical Constraints窗口表明RP count的位置信息已經被鎖定。
同樣地,也要生成另外一個RP即RP shift對應的Abstract Shell文件:ab_sh_shift.dcp。接下來分別用這兩個AbstractShell文件生成各自RP下新的RM對應的.dcp文件。例如,對于RP count,添加ab_sh_count.dcp,添加count_down綜合后的.dcp文件count.dcp,執行布局布線,生成相應的.dcp,相關命令如下圖所示。
同樣地,需要生成RP shift下新的RM對應的.dcp。由于這兩個操作只需要各自對應的Abstract Shell,故相互獨立互不干擾,從而可并行執行,縮短編譯時間。
最后,生成相應的Partial Bitstream文件。比較簡單的方法是直接利用Abstract Shell方式生成的.dcp文件生成對應的Bitstream。例如:利用abstract_shell_count_down_routed.dcp可生成count_down對應的Bitstream文件。
對比標準DFX設計流程和AbstractShell流程如下圖所示。
編輯:jq
-
RM
+關注
關注
0文章
14瀏覽量
36390 -
DCP
+關注
關注
0文章
30瀏覽量
17214 -
DFx
+關注
關注
0文章
35瀏覽量
10526
原文標題:Abstract Shell流程分析(2)
文章出處:【微信號:Open_FPGA,微信公眾號:OpenFPGA】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論