取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

用ECO脚本的方式在网表中插入LUT1

yolanda
Moderator
Moderator
0 1 516

BY Hong Han

注意:本论坛博客所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途 


有时我们需要在设计网表的基础上微调一下逻辑,这样可以无需修改代码,也无需重新做综合,在设计调试中可以节省时间同时维持其他逻辑无任何改动.


这里带大家一起体验一下Vivado 的ECO流程,以vivado自带的Example Design为例, 直接用TCL命令修改网表,在正常的寄存器路径之间加一级LUT.


1. 打开Vivado 界面

2. 打开Example Design "Wavegen":
<1> File -> Project -> Open Example
<2> 选中Wavegen(HDL), 器件选择xcku035

3. 点击左侧Flow Navigator 窗口 Run Implementation 按钮, 完成综合实现.

4. 打开Implemented Design (点击左侧Flow Navigator 窗口 Open Implemented Design 按钮)

5. 选一条两个寄存器之间的路径
运行以下命令,选中打印出的路径,双击可以查看时序报告,F4 键可以打开这条路径的原理图

        %report_timing -from [get_cells 
clkx_spd_i0/meta_harden_bus_new_i0/signal_meta_reg] -to [get_cells 
clkx_spd_i0/meta_harden_bus_new_i0/signal_dst_reg] -delay_type max -name test1

可以看到Data Path的布线延迟是0.504ns

1.png

 路径的原理图

2.png

6.    把目的寄存器的D端从net上断下来

%disconnect_net -net 
clkx_spd_i0/meta_harden_bus_new_i0/signal_meta_reg_n_0  -objects 
{clkx_spd_i0/meta_harden_bus_new_i0/signal_dst_reg/D}

在这里获取操作对象(net, Pin) 的方法: 在原理图中选中对象,然后查看走下角Property 窗口中的NAME 属性

3.png

Pin被从Net上断开后,会在原理图上显示n/c

4.png

7.    创建一个LUT1,并设置LUT的INIT property

%create_cell -reference LUT1clkx_spd_i0/meta_harden_bus_new_i0/my_lut1 
%set_property INIT 2'h1 [get_cells clkx_spd_i0/meta_harden_bus_new_i0/my_lut1]

5.png

可以看到这个新创建的LUT1所有端口(Pin)都是悬空的. 接下来的步骤要将这些pin连接到合适的net上.

8.  把LUT1的输入端口连接到之前断开的net上.

%connect_net -net clkx_spd_i0/meta_harden_bus_new_i0/signal_meta_reg_n_0  -objects {clkx_spd_i0/meta_harden_bus_new_i0/my_lut1/I0}

9.  创建一个新的net用来连接LUT1的输出pin和之前断下来的寄存器D pin

%create_net  clkx_spd_i0/meta_harden_bus_new_i0/my_net

10.  连接LUT1的输出pin和之前断下来的寄存器D pin 到新创建的net上

%connect_net -net clkx_spd_i0/meta_harden_bus_new_i0/my_net   -objects {clkx_spd_i0/meta_harden_bus_new_i0/my_lut1/O clkx_spd_i0/meta_harden_bus_new_i0/signal_dst_reg/D}

    6.png

11.  在Netlist窗口选窗口选中新建的LUT1,将其拖曳到Device中空着的slice LUT bel中

        对应的命令: 

place_cell clkx_spd_i0/meta_harden_bus_new_i0/my_lut1 SLICE_X52Y83/B6LUT

12.  对新的LUT1两端的net进行布线

%route_design -nets [get_nets -of [get_pins clkx_spd_i0/meta_harden_bus_new_i0/my_lut1/*]]

13.检查布线结果确保没有布线错误

%report_route_status

7.png

14.用步骤5的命令重新报一下时序

8.png

15.  生成bit文件

%write_bitstream test.bit

 

1 评论
zhendon
Community Manager
Community Manager

写的太好了