在激光雷達(dá)中,使用FPGA實(shí)現(xiàn)TDC時(shí)需要手動(dòng)約束進(jìn)位鏈的位置。這里簡(jiǎn)單記錄下。
Efinity從2022.1開(kāi)始支持邏輯鎖定,從2022.2開(kāi)始支持邏輯和布線鎖定。當(dāng)然鎖定布線時(shí)也要鎖定相應(yīng)的邏輯
因?yàn)槭謩?dòng)約束是處于開(kāi)發(fā)階段,Efinity 2022.1,2022.2,2023.1中需要使用.ini文件
在outflow下會(huì)生成一個(gè).qplace文件。用于指示布線的各個(gè)原語(yǔ)資源的分布位置 。
它的內(nèi)容主是
是原語(yǔ)的單元名
表示水平位置,對(duì)應(yīng)floorplan.
表示垂直位置 ,對(duì)應(yīng)floorplan.
表示子塊的位置 。目前只DSP24和DSP12可以有子塊。在一個(gè)block可以指定多個(gè)字塊。
是給block的一個(gè)編號(hào),從0開(kāi)始往下排。
鎖定過(guò)程如下[老的方法]:
stp1:并把outflow下面的.qplace文件得到到工程目錄下(可以修改名字也可以不修改,假如我們修改為carrychain.qplace)。把該qplace文件中想要鎖定的block保留,其余可以刪除。
stp2:在工程目錄下建一個(gè)efx_pnr_settings.ini文件 。
stp3:在efx_pnr_settings.ini文件中輸入
fix_pins=carrychain_prj.qplace
stp4:重新編譯。
以加法進(jìn)位鏈為例 ,上面我們生成了一個(gè)4級(jí)的加法進(jìn)位鏈。具體約束在哪個(gè)位置可以在floorplan中確認(rèn)位置 。
比如這里我們把它的位置約束到第8列??聪旅娴恼Z(yǔ)句,第二行是進(jìn)位鏈的輸入位置用于進(jìn)入進(jìn)位鏈,第3,4,5,6依次約束進(jìn)位鏈的carry_tap[0][x]~FF即可。
之前也有一個(gè)疑問(wèn)是是否應(yīng)該約束加法器,但是資源列表中并沒(méi)有相應(yīng)的資源,而且經(jīng)過(guò)分析也認(rèn)為只需要約束寄存器即可。
#block name x y subblk block number#---------- -- -- ------ ------------carry_tap[0][0]~FF 8 3 0 #0carry_tap[0][1]~FF 8 4 0 #1carry_tap[0][2]~FF 8 5 0 #2carry_tap[0][3]~FF 8 6 0 #3tdc[0].carry_chain_inst/CHAIN_GEN[0].genblk1.EFX_ADD_inst 8 2 0 #2605
約束的效果如下:
邏輯鎖定【新的方法】
(1)在工程目錄下新建一個(gè)efx_pnr_settings.ini文件,并輸入dump_placeloc = on,編譯;在在outflow文件夾下生成一個(gè)<工程名>.out.placeloc文件。
(2)新建文件my_logicloc.placeloc(文件名可以自己定義),把<工程名>.out.placeloc內(nèi)部想要鎖定的信息復(fù)制到my_logicloc.placeloc,下面是以進(jìn)位鏈為例進(jìn)行說(shuō)明
(3)重新編譯,然后打開(kāi)floorplan查看,這里我們把進(jìn)位鏈鎖在第2列。
走線鎖定
從v2022.2開(kāi)始,截止到2024.1目前走線鎖定只適用于鈦金系列FPGA。
布線的鎖定是要和邏輯鎖定一起使用的。
(1)確認(rèn)自己想要約束的路徑
我們從程序上找一條路徑,從send_en_r_lock信號(hào)到lvds_tx_TX_DATA[0]
易靈思推薦使用統(tǒng)一的名字對(duì)需要鎖定的信號(hào)進(jìn)行命名,比如netname_LOCKED,可以方便我們?cè)谀0嫖募锌焖俣ㄎ贿@些信號(hào)。并使用(**syn_keep = “true"*)屬性防止信號(hào)被優(yōu)化。當(dāng)然名字是可以任意的,只要能區(qū)別清楚都是可以的。
這個(gè)鏈路的src是send_en_r_lock,des寄存器是lvds_tx_TX_DATA[0],中間經(jīng)過(guò)的路徑是send_en_r_lock和w_pos_send_lock。這兩條路徑在.rcf.template中都能找到。
(2)在工程目錄下新建一個(gè)efx_pnr_settings.ini文件,并輸入
dump_placeloc = ongenerate_rcf_template = on
編譯之后。在在outflow文件夾下生成一個(gè).out.placeloc和.out.rcf文件。這兩個(gè)文件分別對(duì)應(yīng)布局和布線信息。還有.troutingtraces和.rcf_reference.troutingtraces
(2)把這三個(gè)文件拷備出來(lái),比如放到工程目錄下。
目前的現(xiàn)象是troutingtraces文件如果不修改名字會(huì)每次編譯時(shí)被清除
(3)把你希望約束的cells和nets復(fù)制到自己的.placeloc和.rcf文件中。這里我們命名為my_route.rcf和my_logic.palceloc
在my_rout.rcf文件中添加了下面的語(yǔ)句 ,要注意自己的rcf文件中不能指定outflow文件夾下面的.troutingtraces文件 。該語(yǔ)句從.rcf.template中可以換到
在my_logic.placeloc中添加了要鎖定的起始和結(jié)束位置
(4)并把自己的文件添加到.ini文件中。
loc_assignment =/ .placeloc rcf_file = / .rcf
efx_pnr_settings.ini文件中內(nèi)部如下:
編譯之后查看路徑延時(shí)
% report_path -from send_en_r_lock~FF -to lvds_tx_TX_DATA[0]~FF|D
當(dāng)把把程序屏蔽一部分之后走線延時(shí)能確定下來(lái)(在沒(méi)有完整的使用該功能之前編譯延時(shí)是會(huì)變化的):
測(cè)試程序如下:
-
FPGA
+關(guān)注
關(guān)注
1650文章
22204瀏覽量
626680 -
布線
+關(guān)注
關(guān)注
9文章
808瀏覽量
85737 -
TDC
+關(guān)注
關(guān)注
0文章
41瀏覽量
14141 -
易靈思
+關(guān)注
關(guān)注
6文章
61瀏覽量
5405
發(fā)布評(píng)論請(qǐng)先 登錄
基于DSP技術(shù)實(shí)現(xiàn)數(shù)字鎖定放大器的設(shè)計(jì)和應(yīng)用分析

ad 自動(dòng)布線 如何鎖定GND 讓其他的自動(dòng)布線
添加I/O緩沖區(qū)和IBUFDS一些邏輯被鎖定
快速解決ADF5356頻率鎖定位
基于Altera系列器件的邏輯鎖定方法學(xué)在FPGA設(shè)計(jì)中的應(yīng)
LogicLock邏輯鎖定簡(jiǎn)介
基于MATLAB仿真的鎖定放大器的研究
如何在Vivado中實(shí)現(xiàn)邏輯鎖定和增量編譯工程實(shí)例說(shuō)明

Quartus中的邏輯鎖定與增量編譯

評(píng)論