0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

逻辑布线锁定 用FPGA实现TDC时的逻辑锁定和布线锁定

XL FPGA技术交流 2024-10-15 11:31 次阅读

在激光雷达中,使用FPGA实现TDC时需要手动约束进位链的位置。这里简单记录下。

Efinity从2022.1开始支持逻辑锁定,从2022.2开始支持逻辑和布线锁定。当然锁定布线时也要锁定相应的逻辑

因为手动约束是处于开发阶段,Efinity 2022.1,2022.2,2023.1中需要使用.ini文件

在outflow下会生成一个.qplace文件。用于指示布线的各个原语资源的分布位置 。

30e94082-8a89-11ef-a79e-92fbcf53809c.png

它的内容主是

是原语的单元名

表示水平位置,对应floorplan.

表示垂直位置 ,对应floorplan.

表示子块的位置 。目前只DSP24和DSP12可以有子块。在一个block可以指定多个字块。

是给block的一个编号,从0开始往下排。

30f98366-8a89-11ef-a79e-92fbcf53809c.png

锁定过程如下[老的方法]:

stp1:并把outflow下面的.qplace文件得到到工程目录下(可以修改名字也可以不修改,假如我们修改为carrychain.qplace)。把该qplace文件中想要锁定的block保留,其余可以删除。

stp2:在工程目录下建一个efx_pnr_settings.ini文件 。

stp3:在efx_pnr_settings.ini文件中输入

fix_pins=carrychain_prj.qplace

stp4:重新编译。

以加法进位链为例 ,上面我们生成了一个4级的加法进位链。具体约束在哪个位置可以在floorplan中确认位置 。

比如这里我们把它的位置约束到第8列。看下面的语句,第二行是进位链的输入位置用于进入进位链,第3,4,5,6依次约束进位链的carry_tap[0][x]~FF即可。

之前也有一个疑问是是否应该约束加法器,但是资源列表中并没有相应的资源,而且经过分析也认为只需要约束寄存器即可。

#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

约束的效果如下:

3120e816-8a89-11ef-a79e-92fbcf53809c.png

逻辑锁定【新的方法】

(1)在工程目录下新建一个efx_pnr_settings.ini文件,并输入dump_placeloc = on,编译;在在outflow文件夹下生成一个<工程名>.out.placeloc文件。

(2)新建文件my_logicloc.placeloc(文件名可以自己定义),把<工程名>.out.placeloc内部想要锁定的信息复制到my_logicloc.placeloc,下面是以进位链为例进行说明

3140fa2a-8a89-11ef-a79e-92fbcf53809c.png

(3)重新编译,然后打开floorplan查看,这里我们把进位链锁在第2列。

316b7a84-8a89-11ef-a79e-92fbcf53809c.png

走线锁定

从v2022.2开始,截止到2024.1目前走线锁定只适用于钛金系列FPGA。

布线的锁定是要和逻辑锁定一起使用的。

(1)确认自己想要约束的路径

我们从程序上找一条路径,从send_en_r_lock信号到lvds_tx_TX_DATA[0]

易灵思推荐使用统一的名字对需要锁定的信号进行命名,比如netname_LOCKED,可以方便我们在模版文件中快速定位这些信号。并使用(**syn_keep = “true"*)属性防止信号被优化。当然名字是可以任意的,只要能区别清楚都是可以的。

31ae02dc-8a89-11ef-a79e-92fbcf53809c.png

这个链路的src是send_en_r_lock,des寄存器是lvds_tx_TX_DATA[0],中间经过的路径是send_en_r_lock和w_pos_send_lock。这两条路径在.rcf.template中都能找到。

31b8d1da-8a89-11ef-a79e-92fbcf53809c.png

(2)在工程目录下新建一个efx_pnr_settings.ini文件,并输入

dump_placeloc = ongenerate_rcf_template = on

编译之后。在在outflow文件夹下生成一个.out.placeloc和.out.rcf文件。这两个文件分别对应布局和布线信息。还有.troutingtraces和.rcf_reference.troutingtraces

(2)把这三个文件拷备出来,比如放到工程目录下。

目前的现象是troutingtraces文件如果不修改名字会每次编译时被清除

(3)把你希望约束的cells和nets复制到自己的.placeloc和.rcf文件中。这里我们命名为my_route.rcf和my_logic.palceloc

在my_rout.rcf文件中添加了下面的语句 ,要注意自己的rcf文件中不能指定outflow文件夹下面的.troutingtraces文件 。该语句从.rcf.template中可以换到

31e2442a-8a89-11ef-a79e-92fbcf53809c.png

在my_logic.placeloc中添加了要锁定的起始和结束位置

320761ec-8a89-11ef-a79e-92fbcf53809c.png

(4)并把自己的文件添加到.ini文件中。

loc_assignment = /.placeloc
rcf_file = /.rcf

efx_pnr_settings.ini文件中内部如下:

322c77c0-8a89-11ef-a79e-92fbcf53809c.png

编译之后查看路径延时

% report_path -from send_en_r_lock~FF -to lvds_tx_TX_DATA[0]~FF|D

324a27fc-8a89-11ef-a79e-92fbcf53809c.png

当把把程序屏蔽一部分之后走线延时能确定下来(在没有完整的使用该功能之前编译延时是会变化的):

32723a76-8a89-11ef-a79e-92fbcf53809c.png

329a0fba-8a89-11ef-a79e-92fbcf53809c.png

测试程序如下:

32addfe0-8a89-11ef-a79e-92fbcf53809c.png

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21532

    浏览量

    600100
  • 布线
    +关注

    关注

    9

    文章

    757

    浏览量

    84252
  • TDC
    TDC
    +关注

    关注

    0

    文章

    35

    浏览量

    13745
  • 易灵思
    +关注

    关注

    5

    文章

    42

    浏览量

    4821
收藏 人收藏

    评论

    相关推荐

    基于DSP技术实现数字锁定放大器的设计和应用分析

    调制技术向激光二极管注入正弦波电流进行频率调制,调制频率的倍频信号作为参考信号,锁定放大器锁定所关心的二次谐波信号,采用DSP设计的锁定
    发表于 07-31 14:52 1771次阅读
    基于DSP技术<b class='flag-5'>实现</b>数字<b class='flag-5'>锁定</b>放大器的设计和应用分析

    ad 自动布线 如何锁定GND 让其他的自动布线

    我吧期间摆放完了, 想自动布线: 我自己手动画好了 VCC, GND 想最后用覆铜, 其他线准备用自动布线。发现自动布线只能锁定已经画好的, 没画的GND不能
    发表于 08-19 08:51

    快速解决ADF5356频率锁定

    最近使用ADF5356 | 小数N分频锁相环 (PLL)实现信号源,FPGA控话制SPI,始终不能锁定,初始化配置899MHZ没问题,但是更改N,F值不能锁定,按照手册更改各种参数和配
    发表于 11-18 20:47

    请问Altium中pcb板手动布线锁定后该怎么解除锁定

    pcb板手动布线锁定以后怎么解除锁定
    发表于 07-04 05:35

    基于Altera系列器件的逻辑锁定方法学在FPGA设计中的应

    Altera 公司出品系列器件所用设计软件――Quartus®II,提供了一种其独有的优化方法:逻辑锁定(LogicLock)。本文介绍了一种在实际工程中应用逻辑锁定的方法,并
    发表于 09-03 08:39 11次下载

    相序锁定电路

    相序锁定电路
    发表于 02-17 20:28 817次阅读
    相序<b class='flag-5'>锁定</b>电路

    800Hz单音锁定锁定式火警电路图

    800Hz单音锁定锁定式火警电路图
    的头像 发表于 06-10 08:57 1832次阅读
    800Hz单音<b class='flag-5'>锁定</b>式<b class='flag-5'>锁定</b>式火警电路图

    CD4066B的锁定触摸开关

    CD4066B的锁定触摸开关 当
    发表于 10-09 16:30 1547次阅读
    <b class='flag-5'>用</b>CD4066B的<b class='flag-5'>锁定</b>触摸开关

    LogicLock逻辑锁定简介

    LogicLock逻辑锁定简介 本节介绍Quartus的一个工具LogicLock,会在后面的实例里面介绍LogicLock的具体使用。 逻辑锁定方法学
    发表于 02-08 14:39 2130次阅读

    基于MATLAB仿真的锁定放大器的研究

    研究了锁定放大器的实现原理, 并根据该原理 MATLAB的 SIMULINK工具箱对锁定放大器进行了建模和仿真。仿真结果表明 锁定放大
    发表于 07-08 16:31 28次下载

    如何在Vivado中实现逻辑锁定和增量编译工程实例说明

    本文针对Vivado中实现逻辑锁定和增量编译进行的工程实例介绍,文中有对应工程的下载地址。友情提示:(1)增量编译只允许修改当前工程不超过5%的时候才有效,一般应用于较大工程添加修改
    的头像 发表于 07-06 10:32 6999次阅读
    如何在Vivado中<b class='flag-5'>实现</b><b class='flag-5'>逻辑</b><b class='flag-5'>锁定</b>和增量编译工程实例说明

    Quartus中的逻辑锁定与增量编译

    逻辑锁定功能可以将FPGA中的代码模块在固定区域实现,优化时序性能,提升设计可靠性。 增量编译功能,可以使设计更快速时序收敛,加快编译速度。
    的头像 发表于 05-25 11:22 1391次阅读
    Quartus中的<b class='flag-5'>逻辑</b><b class='flag-5'>锁定</b>与增量编译

    锁相环锁定时间取决于哪些因素?如何加速锁定

    重要的参数。锁定时间越短,PLL就能更快地响应频率的变化。因此,减少锁相环锁定时间对于实现高效的电路设计非常重要。 锁相环锁定时间取决于以下因素。 1. 滤波器:锁相环的滤波器可以影响
    的头像 发表于 10-30 10:51 1888次阅读

    Cache内容锁定是什么

    锁定”在cache中的块在常规的cache替换操作中不会被替换,但当通过C7控制cache中特定的块时,比如使某特定的块无效时,这些被“锁定”在cache中的块也将受到相应的影响。
    的头像 发表于 10-31 11:31 639次阅读

    安川伺服参数锁定了怎么解开

    安川伺服系统是一种广泛应用于工业自动化领域的高性能伺服驱动器和电机系统。在某些情况下,用户可能会遇到伺服参数被锁定的问题,导致无法修改参数。本文将详细介绍如何解除安川伺服参数锁定的方法,以及相关
    的头像 发表于 06-06 12:31 1129次阅读