一文详解Vivado的ECO流程

有时我们需要在设计网表的基础上微调一下逻辑,这样可以无需修改代码,也无需重新做综合,在设计调试中可以节省时间同时维持其他逻辑无任何改动。
这里带大家一起体验一下vivado 的eco流程,以vivado自带的example design为例, 直接用tcl命令修改网表,在正常的寄存器路径之间加一级lut。
1. 打开vivado 界面
2. 打开example design wavegen: file -> project -> open example 选中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
路径的原理图
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 属性
pin被从net上断开后,会在原理图上显示n/c
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] 可以看到这个新创建的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}  
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
14.用步骤5的命令重新报一下时序
15. 生成bit文件
%write_bitstream test.bit
原文标题:【干货分享】用eco脚本的方式在网表中插入lut1
文章出处:【微信公众号:fpga之家】欢迎添加关注!文章转载请注明出处。


shell脚本基础知识汇总4
555声控延时台灯电路
高通究竟有何魔力,搭配高通骁龙835处理器的小米6售价2999米粉不嫌高
军用电解电容器的应用可靠性选择
峰会回顾第22期 | OpenHarmony等开源软件在安全关键领域中的应用——以Linux的安全项目为例
一文详解Vivado的ECO流程
xilinx ZYNQ7000系列基本开发流程之PS端
先楫半导体 江苏电源学会,南航研修班成功举办
DIALOG半导体电源管理和音频技术受三星青睐
三星Note 8 将卷土重来 硬件加身,刚出血路来!
汽车线束工厂MES系统的核心作用
多层板工艺
IIC白皮书阐释聚焦工厂应用概念
企业如何借助人工智能改变增长方式
中航光电高压小电流EVH2系列产品介绍
汇川技术助力汽车制造业大批量多品种柔性化生产
SD协会近期宣布了一项名为microSD Express的新标准
怎样学习摩尔斯电码
如何使用SIM900A将传感器数据发送到网站
空闲任务钩子函数详解