├── Tutorial
├── Tutorial.runs
│ ├── impl_1
│ │ ├── .vivado.end.rst
│ │ ├── .init_design.end.rst
│ │ ├── .opt_design.end.rst
│ │ ├── .place_design.end.rst
│ │ ├── .route_design.end.rst
│ │ ├── .phys_opt_design.end.rst
│ │ ├── .write_bitstream.end.rst
│ │ ├── .Vivado_Implementation.queue.rst
│ │ ├── vivado.pb
│ │ ├── Add_half.bit
│ │ ├── init_design.pb
│ │ ├── opt_design.pb
│ │ ├── Add_half_opt.dcp
│ │ ├── place_design.pb
│ │ ├── route_design.pb
│ │ ├── Add_half_placed.dcp
│ │ ├── Add_half_routed.dcp
│ │ ├── phys_opt_design.pb
│ │ ├── write_bitstream.pb
│ │ ├── Add_half_drc_opted.pb
│ │ ├── Add_half_physopt.dcp
│ │ ├── Add_half_drc_opted.rpx
│ │ ├── Add_half_drc_routed.pb
│ │ ├── Add_half_drc_routed.rpx
│ │ ├── Add_half_route_status.pb
│ │ ├── Add_half_power_routed.rpx
│ │ ├── Add_half_bus_skew_routed.pb
│ │ ├── Add_half_bus_skew_routed.rpx
│ │ ├── Add_half_utilization_placed.pb
│ │ ├── Add_half_methodology_drc_routed.pb
│ │ ├── Add_half_power_summary_routed.pb
│ │ ├── Add_half_timing_summary_routed.pb
│ │ ├── Add_half_timing_summary_routed.rpx
│ │ ├── Add_half_methodology_drc_routed.rpx
│ │ ├── .init_design.begin.rst
│ │ ├── .opt_design.begin.rst
│ │ ├── .place_design.begin.rst
│ │ ├── .route_design.begin.rst
│ │ ├── .phys_opt_design.begin.rst
│ │ ├── .write_bitstream.begin.rst
│ │ ├── runme.bat
│ │ ├── htr.txt
│ │ ├── .vivado.begin.rst
│ │ ├── Add_half_route_status.rpt
│ │ ├── vivado.jou
│ │ ├── vivado_26744.backup.jou
│ │ ├── Add_half_bus_skew_routed.rpt
│ │ ├── runme.sh
│ │ ├── rundef.js
│ │ ├── Add_half_methodology_drc_routed.rpt
│ │ ├── Add_half_drc_opted.rpt
│ │ ├── Add_half_drc_routed.rpt
│ │ ├── ISEWrap.sh
│ │ ├── project.wdf
│ │ ├── Add_half_control_sets_placed.rpt
│ │ ├── Add_half.tcl
│ │ ├── Add_half_clock_utilization_routed.rpt
│ │ ├── gen_run.xml
│ │ ├── Add_half_power_routed.rpt
│ │ ├── ISEWrap.js
│ │ ├── Add_half_utilization_placed.rpt
│ │ └── Add_half_timing_summary_routed.rpt
│ ├── synth_1
│ │ ├── .vivado.end.rst
│ │ ├── .Vivado_Synthesis.queue.rst
│ │ ├── __synthesis_is_complete__
│ │ ├── vivado.pb
│ │ ├── Add_half.dcp
│ │ ├── incr_synth_reason.pb
│ │ ├── Add_half_utilization_synth.pb
│ │ ├── .vivado.begin.rst
│ │ ├── runme.bat
│ │ ├── htr.txt
│ │ ├── vivado.jou
│ │ ├── .Xil
│ │ │ └── Add_half_propImpl.xdc
│ │ ├── runme.sh
│ │ ├── rundef.js
│ │ ├── ISEWrap.sh
│ │ ├── gen_run.xml
│ │ ├── project.wdf
│ │ ├── Add_half.tcl
│ │ ├── Add_half_utilization_synth.rpt
│ │ └── ISEWrap.js
│ └── .jobs
│ │ ├── vrs_config_1.xml
│ │ ├── vrs_config_2.xml
│ │ ├── vrs_config_3.xml
│ │ ├── vrs_config_4.xml
│ │ └── vrs_config_5.xml
├── Tutorial.cache
│ └── wt
│ │ ├── synthesis_details.wdf
│ │ ├── project.wpc
│ │ ├── webtalk_pa.xml
│ │ └── synthesis.wdf
├── Tutorial.srcs
│ ├── utils_1
│ │ └── imports
│ │ │ └── synth_1
│ │ │ └── Add_half.dcp
│ └── sources_1
│ │ ├── new
│ │ └── half_adder.v
│ │ └── bd
│ │ └── half_adder
│ │ ├── ui
│ │ └── bd_8ef7dec2.ui
│ │ ├── half_adder.bd
│ │ ├── ip
│ │ └── half_adder_Add_half_0_0
│ │ │ └── half_adder_Add_half_0_0.xci
│ │ └── half_adder.bda
├── Tutorial.gen
│ └── sources_1
│ │ └── bd
│ │ ├── mref
│ │ └── Add_half
│ │ │ ├── xgui
│ │ │ └── Add_half_v1_0.tcl
│ │ │ └── component.xml
│ │ └── half_adder
│ │ ├── half_adder.bxml
│ │ ├── half_adder.bda
│ │ └── ip
│ │ └── half_adder_Add_half_0_0
│ │ └── half_adder_Add_half_0_0.xml
├── Tutorial.hw
│ ├── Tutorial.lpr
│ └── hw_1
│ │ └── hw.xml
└── Tutorial.xpr
├── .gitattributes
├── Resource
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg
├── 5.jpg
├── 6.jpg
├── 7.jpg
├── 8.jpg
├── 9.jpg
├── 10.jpg
├── 11.jpg
├── 12.jpg
├── 13.jpg
├── 14.jpg
├── 15.jpg
├── 16.jpg
├── 17.jpg
├── 18.jpg
├── 19.jpg
├── 20.jpg
├── 21.jpg
├── 22.jpg
├── 23.jpg
├── 24.jpg
├── 25.jpg
├── 26.jpg
├── 27.jpg
├── 28.jpg
├── 29.jpg
├── 30.jpg
├── 31.jpg
├── 32.jpg
├── 33.jpg
├── 34.jpg
└── 35.jpg
├── pynqz2_user_manual_v1_0.pdf
├── Document
├── PYNQ-Z2电路图
│ └── PYNQ电路图.pdf
├── PYNQ-Z2参考实验
│ ├── PYNQ-Z2 基础开发实验资料.pdf
│ └── PYNQ-Z2 Python开发实验资料.pdf
├── PYNQ-Z2用户手册
│ └── pynqz2_user_manual_v1_0.pdf
└── PYNQ-Z2板卡文件
│ └── PYNQ-Z2 board file v1.0
│ └── A.0
│ ├── pynq_z2.jpg
│ └── part0_pins.xml
└── README.md
/Tutorial/Tutorial.runs/impl_1/.vivado.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/.vivado.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.init_design.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.opt_design.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.place_design.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.route_design.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.phys_opt_design.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.write_bitstream.end.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/.Vivado_Synthesis.queue.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/__synthesis_is_complete__:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.Vivado_Implementation.queue.rst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/Resource/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/1.jpg
--------------------------------------------------------------------------------
/Resource/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/2.jpg
--------------------------------------------------------------------------------
/Resource/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/3.jpg
--------------------------------------------------------------------------------
/Resource/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/4.jpg
--------------------------------------------------------------------------------
/Resource/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/5.jpg
--------------------------------------------------------------------------------
/Resource/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/6.jpg
--------------------------------------------------------------------------------
/Resource/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/7.jpg
--------------------------------------------------------------------------------
/Resource/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/8.jpg
--------------------------------------------------------------------------------
/Resource/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/9.jpg
--------------------------------------------------------------------------------
/Resource/10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/10.jpg
--------------------------------------------------------------------------------
/Resource/11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/11.jpg
--------------------------------------------------------------------------------
/Resource/12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/12.jpg
--------------------------------------------------------------------------------
/Resource/13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/13.jpg
--------------------------------------------------------------------------------
/Resource/14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/14.jpg
--------------------------------------------------------------------------------
/Resource/15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/15.jpg
--------------------------------------------------------------------------------
/Resource/16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/16.jpg
--------------------------------------------------------------------------------
/Resource/17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/17.jpg
--------------------------------------------------------------------------------
/Resource/18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/18.jpg
--------------------------------------------------------------------------------
/Resource/19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/19.jpg
--------------------------------------------------------------------------------
/Resource/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/20.jpg
--------------------------------------------------------------------------------
/Resource/21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/21.jpg
--------------------------------------------------------------------------------
/Resource/22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/22.jpg
--------------------------------------------------------------------------------
/Resource/23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/23.jpg
--------------------------------------------------------------------------------
/Resource/24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/24.jpg
--------------------------------------------------------------------------------
/Resource/25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/25.jpg
--------------------------------------------------------------------------------
/Resource/26.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/26.jpg
--------------------------------------------------------------------------------
/Resource/27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/27.jpg
--------------------------------------------------------------------------------
/Resource/28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/28.jpg
--------------------------------------------------------------------------------
/Resource/29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/29.jpg
--------------------------------------------------------------------------------
/Resource/30.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/30.jpg
--------------------------------------------------------------------------------
/Resource/31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/31.jpg
--------------------------------------------------------------------------------
/Resource/32.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/32.jpg
--------------------------------------------------------------------------------
/Resource/33.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/33.jpg
--------------------------------------------------------------------------------
/Resource/34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/34.jpg
--------------------------------------------------------------------------------
/Resource/35.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Resource/35.jpg
--------------------------------------------------------------------------------
/pynqz2_user_manual_v1_0.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/pynqz2_user_manual_v1_0.pdf
--------------------------------------------------------------------------------
/Document/PYNQ-Z2电路图/PYNQ电路图.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Document/PYNQ-Z2电路图/PYNQ电路图.pdf
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/vivado.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/vivado.pb
--------------------------------------------------------------------------------
/Document/PYNQ-Z2参考实验/PYNQ-Z2 基础开发实验资料.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Document/PYNQ-Z2参考实验/PYNQ-Z2 基础开发实验资料.pdf
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/vivado.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/synth_1/vivado.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half.bit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half.bit
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/init_design.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/init_design.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/opt_design.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/opt_design.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/Add_half.dcp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/synth_1/Add_half.dcp
--------------------------------------------------------------------------------
/Document/PYNQ-Z2参考实验/PYNQ-Z2 Python开发实验资料.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Document/PYNQ-Z2参考实验/PYNQ-Z2 Python开发实验资料.pdf
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_opt.dcp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_opt.dcp
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/place_design.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/place_design.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/route_design.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/route_design.pb
--------------------------------------------------------------------------------
/Document/PYNQ-Z2用户手册/pynqz2_user_manual_v1_0.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Document/PYNQ-Z2用户手册/pynqz2_user_manual_v1_0.pdf
--------------------------------------------------------------------------------
/Tutorial/Tutorial.cache/wt/synthesis_details.wdf:
--------------------------------------------------------------------------------
1 | version:1
2 | 73796e746865736973:73796e7468657369735c7573616765:686c735f6970:30:00:00
3 | eof:2511430288
4 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_placed.dcp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_placed.dcp
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_routed.dcp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_routed.dcp
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/phys_opt_design.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/phys_opt_design.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/write_bitstream.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/write_bitstream.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_drc_opted.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_drc_opted.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_physopt.dcp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_physopt.dcp
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/incr_synth_reason.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/synth_1/incr_synth_reason.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_drc_opted.rpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_drc_opted.rpx
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_drc_routed.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_drc_routed.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_drc_routed.rpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_drc_routed.rpx
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_route_status.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_route_status.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.cache/wt/project.wpc:
--------------------------------------------------------------------------------
1 | version:1
2 | 57656254616c6b5472616e736d697373696f6e417474656d70746564:1
3 | 6d6f64655f636f756e7465727c4755494d6f6465:3
4 | eof:
5 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_power_routed.rpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_power_routed.rpx
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_bus_skew_routed.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_bus_skew_routed.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_bus_skew_routed.rpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_bus_skew_routed.rpx
--------------------------------------------------------------------------------
/Tutorial/Tutorial.srcs/utils_1/imports/synth_1/Add_half.dcp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.srcs/utils_1/imports/synth_1/Add_half.dcp
--------------------------------------------------------------------------------
/Document/PYNQ-Z2板卡文件/PYNQ-Z2 board file v1.0/A.0/pynq_z2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Document/PYNQ-Z2板卡文件/PYNQ-Z2 board file v1.0/A.0/pynq_z2.jpg
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_utilization_placed.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_utilization_placed.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/Add_half_utilization_synth.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/synth_1/Add_half_utilization_synth.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_methodology_drc_routed.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_methodology_drc_routed.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_power_summary_routed.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_power_summary_routed.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_timing_summary_routed.pb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_timing_summary_routed.pb
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_timing_summary_routed.rpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_timing_summary_routed.rpx
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_methodology_drc_routed.rpx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WangHaoZhe/PYNQ-Tutorial/HEAD/Tutorial/Tutorial.runs/impl_1/Add_half_methodology_drc_routed.rpx
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.init_design.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.opt_design.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.place_design.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.route_design.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.phys_opt_design.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.write_bitstream.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.srcs/sources_1/new/half_adder.v:
--------------------------------------------------------------------------------
1 | module Add_half (sum, c_out, a, b);
2 | input a, b;
3 | output sum, c_out;
4 | wire c_out_bar;
5 | xor (sum, a, b);
6 | nand (c_out_bar, a, b);
7 | not (c_out, c_out_bar);
8 | endmodule
9 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/.vivado.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/runme.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | rem Vivado (TM)
4 | rem runme.bat: a Vivado-generated Script
5 | rem Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
6 |
7 |
8 | set HD_SDIR=%~dp0
9 | cd /d "%HD_SDIR%"
10 | cscript /nologo /E:JScript "%HD_SDIR%\rundef.js" %*
11 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/runme.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | rem Vivado (TM)
4 | rem runme.bat: a Vivado-generated Script
5 | rem Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
6 |
7 |
8 | set HD_SDIR=%~dp0
9 | cd /d "%HD_SDIR%"
10 | cscript /nologo /E:JScript "%HD_SDIR%\rundef.js" %*
11 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.gen/sources_1/bd/mref/Add_half/xgui/Add_half_v1_0.tcl:
--------------------------------------------------------------------------------
1 | # Definitional proc to organize widgets for parameters.
2 | proc init_gui { IPINST } {
3 | ipgui::add_param $IPINST -name "Component_Name"
4 | #Adding Page
5 | ipgui::add_page $IPINST -name "Page 0"
6 |
7 |
8 | }
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.hw/Tutorial.lpr:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/.jobs/vrs_config_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/.jobs/vrs_config_2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/.jobs/vrs_config_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/.jobs/vrs_config_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/htr.txt:
--------------------------------------------------------------------------------
1 | REM
2 | REM Vivado(TM)
3 | REM htr.txt: a Vivado-generated description of how-to-repeat the
4 | REM the basic steps of a run. Note that runme.bat/sh needs
5 | REM to be invoked for Vivado to track run status.
6 | REM Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
7 | REM
8 |
9 | vivado -log Add_half.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source Add_half.tcl
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/.jobs/vrs_config_5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/htr.txt:
--------------------------------------------------------------------------------
1 | REM
2 | REM Vivado(TM)
3 | REM htr.txt: a Vivado-generated description of how-to-repeat the
4 | REM the basic steps of a run. Note that runme.bat/sh needs
5 | REM to be invoked for Vivado to track run status.
6 | REM Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
7 | REM
8 |
9 | vivado -log Add_half.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source Add_half.tcl -notrace
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/.vivado.begin.rst:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_route_status.rpt:
--------------------------------------------------------------------------------
1 | Design Route Status
2 | : # nets :
3 | ------------------------------------------- : ----------- :
4 | # of logical nets.......................... : 8 :
5 | # of nets not needing routing.......... : 4 :
6 | # of internally routed nets........ : 4 :
7 | # of routable nets..................... : 4 :
8 | # of fully routed nets............. : 4 :
9 | # of nets with routing errors.......... : 0 :
10 | ------------------------------------------- : ----------- :
11 |
12 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.gen/sources_1/bd/half_adder/half_adder.bxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Composite Fileset
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.hw/hw_1/hw.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/vivado.jou:
--------------------------------------------------------------------------------
1 | #-----------------------------------------------------------
2 | # Vivado v2022.2 (64-bit)
3 | # SW Build 3671981 on Fri Oct 14 05:00:03 MDT 2022
4 | # IP Build 3669848 on Fri Oct 14 08:30:02 MDT 2022
5 | # Start of session at: Sat Feb 18 00:28:15 2023
6 | # Process ID: 26420
7 | # Current directory: E:/Projects/Tutorial/Tutorial.runs/synth_1
8 | # Command line: vivado.exe -log Add_half.vds -product Vivado -mode batch -messageDb vivado.pb -notrace -source Add_half.tcl
9 | # Log file: E:/Projects/Tutorial/Tutorial.runs/synth_1/Add_half.vds
10 | # Journal file: E:/Projects/Tutorial/Tutorial.runs/synth_1\vivado.jou
11 | # Running On: Albert-G14, OS: Windows, CPU Frequency: 2895 MHz, CPU Physical cores: 16, Host memory: 16556 MB
12 | #-----------------------------------------------------------
13 | source Add_half.tcl -notrace
14 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/vivado.jou:
--------------------------------------------------------------------------------
1 | #-----------------------------------------------------------
2 | # Vivado v2022.2 (64-bit)
3 | # SW Build 3671981 on Fri Oct 14 05:00:03 MDT 2022
4 | # IP Build 3669848 on Fri Oct 14 08:30:02 MDT 2022
5 | # Start of session at: Sat Feb 18 00:31:53 2023
6 | # Process ID: 25432
7 | # Current directory: E:/Projects/Tutorial/Tutorial.runs/impl_1
8 | # Command line: vivado.exe -log Add_half.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source Add_half.tcl -notrace
9 | # Log file: E:/Projects/Tutorial/Tutorial.runs/impl_1/Add_half.vdi
10 | # Journal file: E:/Projects/Tutorial/Tutorial.runs/impl_1\vivado.jou
11 | # Running On: Albert-G14, OS: Windows, CPU Frequency: 2895 MHz, CPU Physical cores: 16, Host memory: 16556 MB
12 | #-----------------------------------------------------------
13 | source Add_half.tcl -notrace
14 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/vivado_26744.backup.jou:
--------------------------------------------------------------------------------
1 | #-----------------------------------------------------------
2 | # Vivado v2022.2 (64-bit)
3 | # SW Build 3671981 on Fri Oct 14 05:00:03 MDT 2022
4 | # IP Build 3669848 on Fri Oct 14 08:30:02 MDT 2022
5 | # Start of session at: Sat Feb 18 00:29:21 2023
6 | # Process ID: 26744
7 | # Current directory: E:/Projects/Tutorial/Tutorial.runs/impl_1
8 | # Command line: vivado.exe -log Add_half.vdi -applog -product Vivado -messageDb vivado.pb -mode batch -source Add_half.tcl -notrace
9 | # Log file: E:/Projects/Tutorial/Tutorial.runs/impl_1/Add_half.vdi
10 | # Journal file: E:/Projects/Tutorial/Tutorial.runs/impl_1\vivado.jou
11 | # Running On: Albert-G14, OS: Windows, CPU Frequency: 2895 MHz, CPU Physical cores: 16, Host memory: 16556 MB
12 | #-----------------------------------------------------------
13 | source Add_half.tcl -notrace
14 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/.Xil/Add_half_propImpl.xdc:
--------------------------------------------------------------------------------
1 | set_property SRC_FILE_INFO {cfile:{E:/Projects/Tutorial/Tutorial.srcs/constrs_1/imports/pynq-z2_v1.0.xdc/PYNQ-Z2 v1.0.xdc} rfile:{../../../Tutorial.srcs/constrs_1/imports/pynq-z2_v1.0.xdc/PYNQ-Z2 v1.0.xdc} id:1} [current_design]
2 | set_property src_info {type:XDC file:1 line:195 export:INPUT save:INPUT read:READ} [current_design]
3 | set_property PACKAGE_PIN M19 [get_ports a]
4 | set_property src_info {type:XDC file:1 line:196 export:INPUT save:INPUT read:READ} [current_design]
5 | set_property PACKAGE_PIN M20 [get_ports b]
6 | set_property src_info {type:XDC file:1 line:197 export:INPUT save:INPUT read:READ} [current_design]
7 | set_property PACKAGE_PIN P14 [get_ports c_out]
8 | set_property src_info {type:XDC file:1 line:198 export:INPUT save:INPUT read:READ} [current_design]
9 | set_property PACKAGE_PIN R14 [get_ports sum]
10 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_bus_skew_routed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | ---------------------------------------------------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:30:19 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_bus_skew -warn_on_violation -file Add_half_bus_skew_routed.rpt -pb Add_half_bus_skew_routed.pb -rpx Add_half_bus_skew_routed.rpx
7 | | Design : Add_half
8 | | Device : 7z020-clg400
9 | | Speed File : -1 PRODUCTION 1.12 2019-11-22
10 | ---------------------------------------------------------------------------------------------------------------------------------------------------------
11 |
12 | Bus Skew Report
13 |
14 | No bus skew constraints
15 |
16 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.srcs/sources_1/bd/half_adder/ui/bd_8ef7dec2.ui:
--------------------------------------------------------------------------------
1 | {
2 | "ActiveEmotionalView":"Default View",
3 | "Default View_ScaleFactor":"1.0",
4 | "Default View_TopLeft":"-505,-259",
5 | "ExpandedHierarchyInLayout":"",
6 | "guistr":"# # String gsaved with Nlview 7.0r6 2020-01-29 bk=1.5227 VDI=41 GEI=36 GUI=JA:10.0 non-TLS
7 | # -string -flagsOSRD
8 | preplace port port-id_LED0 -pg 1 -lvl 2 -x 220 -y 0 -defaultsOSRD
9 | preplace port port-id_LED1 -pg 1 -lvl 2 -x 220 -y 20 -defaultsOSRD
10 | preplace port port-id_SW0 -pg 1 -lvl 0 -x -10 -y 0 -defaultsOSRD
11 | preplace port port-id_SW1 -pg 1 -lvl 0 -x -10 -y 20 -defaultsOSRD
12 | preplace inst Add_half_0 -pg 1 -lvl 1 -x 100 -y 10 -defaultsOSRD
13 | preplace netloc Add_half_0_sum 1 1 1 N 0
14 | preplace netloc Add_half_0_c_out 1 1 1 N 20
15 | preplace netloc SW0_1 1 0 1 N 0
16 | preplace netloc SW1_1 1 0 1 N 20
17 | levelinfo -pg 1 -10 100 220
18 | pagesize -pg 1 -db -bbox -sgen -90 -110 310 140
19 | "
20 | }
21 |
22 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.cache/wt/webtalk_pa.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
11 |
12 | -
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/runme.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Vivado(TM)
5 | # runme.sh: a Vivado-generated Runs Script for UNIX
6 | # Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
7 | #
8 |
9 | echo "This script was generated under a different operating system."
10 | echo "Please update the PATH and LD_LIBRARY_PATH variables below, before executing this script"
11 | exit
12 |
13 | if [ -z "$PATH" ]; then
14 | PATH=E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64:E:/Vivado/2022.2/bin
15 | else
16 | PATH=E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64:E:/Vivado/2022.2/bin:$PATH
17 | fi
18 | export PATH
19 |
20 | if [ -z "$LD_LIBRARY_PATH" ]; then
21 | LD_LIBRARY_PATH=
22 | else
23 | LD_LIBRARY_PATH=:$LD_LIBRARY_PATH
24 | fi
25 | export LD_LIBRARY_PATH
26 |
27 | HD_PWD='E:/Projects/Tutorial/Tutorial.runs/synth_1'
28 | cd "$HD_PWD"
29 |
30 | HD_LOG=runme.log
31 | /bin/touch $HD_LOG
32 |
33 | ISEStep="./ISEWrap.sh"
34 | EAStep()
35 | {
36 | $ISEStep $HD_LOG "$@" >> $HD_LOG 2>&1
37 | if [ $? -ne 0 ]
38 | then
39 | exit
40 | fi
41 | }
42 |
43 | EAStep vivado -log Add_half.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source Add_half.tcl
44 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/runme.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Vivado(TM)
5 | # runme.sh: a Vivado-generated Runs Script for UNIX
6 | # Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
7 | #
8 |
9 | echo "This script was generated under a different operating system."
10 | echo "Please update the PATH and LD_LIBRARY_PATH variables below, before executing this script"
11 | exit
12 |
13 | if [ -z "$PATH" ]; then
14 | PATH=E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64:E:/Vivado/2022.2/bin
15 | else
16 | PATH=E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64:E:/Vivado/2022.2/bin:$PATH
17 | fi
18 | export PATH
19 |
20 | if [ -z "$LD_LIBRARY_PATH" ]; then
21 | LD_LIBRARY_PATH=
22 | else
23 | LD_LIBRARY_PATH=:$LD_LIBRARY_PATH
24 | fi
25 | export LD_LIBRARY_PATH
26 |
27 | HD_PWD='E:/Projects/Tutorial/Tutorial.runs/impl_1'
28 | cd "$HD_PWD"
29 |
30 | HD_LOG=runme.log
31 | /bin/touch $HD_LOG
32 |
33 | ISEStep="./ISEWrap.sh"
34 | EAStep()
35 | {
36 | $ISEStep $HD_LOG "$@" >> $HD_LOG 2>&1
37 | if [ $? -ne 0 ]
38 | then
39 | exit
40 | fi
41 | }
42 |
43 | # pre-commands:
44 | /bin/touch .write_bitstream.begin.rst
45 | EAStep vivado -log Add_half.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source Add_half.tcl -notrace
46 |
47 |
48 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/rundef.js:
--------------------------------------------------------------------------------
1 | //
2 | // Vivado(TM)
3 | // rundef.js: a Vivado-generated Runs Script for WSH 5.1/5.6
4 | // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
5 | //
6 |
7 | var WshShell = new ActiveXObject( "WScript.Shell" );
8 | var ProcEnv = WshShell.Environment( "Process" );
9 | var PathVal = ProcEnv("PATH");
10 | if ( PathVal.length == 0 ) {
11 | PathVal = "E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64;E:/Vivado/2022.2/bin;";
12 | } else {
13 | PathVal = "E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64;E:/Vivado/2022.2/bin;" + PathVal;
14 | }
15 |
16 | ProcEnv("PATH") = PathVal;
17 |
18 | var RDScrFP = WScript.ScriptFullName;
19 | var RDScrN = WScript.ScriptName;
20 | var RDScrDir = RDScrFP.substr( 0, RDScrFP.length - RDScrN.length - 1 );
21 | var ISEJScriptLib = RDScrDir + "/ISEWrap.js";
22 | eval( EAInclude(ISEJScriptLib) );
23 |
24 |
25 | ISEStep( "vivado",
26 | "-log Add_half.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source Add_half.tcl" );
27 |
28 |
29 |
30 | function EAInclude( EAInclFilename ) {
31 | var EAFso = new ActiveXObject( "Scripting.FileSystemObject" );
32 | var EAInclFile = EAFso.OpenTextFile( EAInclFilename );
33 | var EAIFContents = EAInclFile.ReadAll();
34 | EAInclFile.Close();
35 | return EAIFContents;
36 | }
37 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/rundef.js:
--------------------------------------------------------------------------------
1 | //
2 | // Vivado(TM)
3 | // rundef.js: a Vivado-generated Runs Script for WSH 5.1/5.6
4 | // Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
5 | //
6 |
7 | var WshShell = new ActiveXObject( "WScript.Shell" );
8 | var ProcEnv = WshShell.Environment( "Process" );
9 | var PathVal = ProcEnv("PATH");
10 | if ( PathVal.length == 0 ) {
11 | PathVal = "E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64;E:/Vivado/2022.2/bin;";
12 | } else {
13 | PathVal = "E:/Vivado/2022.2/ids_lite/ISE/bin/nt64;E:/Vivado/2022.2/ids_lite/ISE/lib/nt64;E:/Vivado/2022.2/bin;" + PathVal;
14 | }
15 |
16 | ProcEnv("PATH") = PathVal;
17 |
18 | var RDScrFP = WScript.ScriptFullName;
19 | var RDScrN = WScript.ScriptName;
20 | var RDScrDir = RDScrFP.substr( 0, RDScrFP.length - RDScrN.length - 1 );
21 | var ISEJScriptLib = RDScrDir + "/ISEWrap.js";
22 | eval( EAInclude(ISEJScriptLib) );
23 |
24 |
25 | // pre-commands:
26 | ISETouchFile( "write_bitstream", "begin" );
27 | ISEStep( "vivado",
28 | "-log Add_half.vdi -applog -m64 -product Vivado -messageDb vivado.pb -mode batch -source Add_half.tcl -notrace" );
29 |
30 |
31 |
32 |
33 |
34 | function EAInclude( EAInclFilename ) {
35 | var EAFso = new ActiveXObject( "Scripting.FileSystemObject" );
36 | var EAInclFile = EAFso.OpenTextFile( EAInclFilename );
37 | var EAIFContents = EAInclFile.ReadAll();
38 | EAInclFile.Close();
39 | return EAIFContents;
40 | }
41 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_methodology_drc_routed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | --------------------------------------------------------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:30:18 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_methodology -file Add_half_methodology_drc_routed.rpt -pb Add_half_methodology_drc_routed.pb -rpx Add_half_methodology_drc_routed.rpx
7 | | Design : Add_half
8 | | Device : xc7z020clg400-1
9 | | Speed File : -1
10 | | Design State : Fully Routed
11 | --------------------------------------------------------------------------------------------------------------------------------------------------------------
12 |
13 | Report Methodology
14 |
15 | Table of Contents
16 | -----------------
17 | 1. REPORT SUMMARY
18 | 2. REPORT DETAILS
19 |
20 | 1. REPORT SUMMARY
21 | -----------------
22 | Netlist: netlist
23 | Floorplan: design_1
24 | Design limits:
25 | Max violations:
26 | Violations found: 0
27 | +------+----------+-------------+------------+
28 | | Rule | Severity | Description | Violations |
29 | +------+----------+-------------+------------+
30 | +------+----------+-------------+------------+
31 |
32 | 2. REPORT DETAILS
33 | -----------------
34 |
35 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_drc_opted.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | ---------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:29:48 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_drc -file Add_half_drc_opted.rpt -pb Add_half_drc_opted.pb -rpx Add_half_drc_opted.rpx
7 | | Design : Add_half
8 | | Device : xc7z020clg400-1
9 | | Speed File : -1
10 | | Design State : Synthesized
11 | ---------------------------------------------------------------------------------------------------------------
12 |
13 | Report DRC
14 |
15 | Table of Contents
16 | -----------------
17 | 1. REPORT SUMMARY
18 | 2. REPORT DETAILS
19 |
20 | 1. REPORT SUMMARY
21 | -----------------
22 | Netlist: netlist
23 | Floorplan: design_1
24 | Design limits:
25 | Ruledeck: default
26 | Max violations:
27 | Violations found: 1
28 | +--------+----------+--------------------+------------+
29 | | Rule | Severity | Description | Violations |
30 | +--------+----------+--------------------+------------+
31 | | ZPS7-1 | Warning | PS7 block required | 1 |
32 | +--------+----------+--------------------+------------+
33 |
34 | 2. REPORT DETAILS
35 | -----------------
36 | ZPS7-1#1 Warning
37 | PS7 block required
38 | The PS7 cell must be used in this Zynq design in order to enable correct default configuration.
39 | Related violations:
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_drc_routed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | ------------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:30:18 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_drc -file Add_half_drc_routed.rpt -pb Add_half_drc_routed.pb -rpx Add_half_drc_routed.rpx
7 | | Design : Add_half
8 | | Device : xc7z020clg400-1
9 | | Speed File : -1
10 | | Design State : Fully Routed
11 | ------------------------------------------------------------------------------------------------------------------
12 |
13 | Report DRC
14 |
15 | Table of Contents
16 | -----------------
17 | 1. REPORT SUMMARY
18 | 2. REPORT DETAILS
19 |
20 | 1. REPORT SUMMARY
21 | -----------------
22 | Netlist: netlist
23 | Floorplan: design_1
24 | Design limits:
25 | Ruledeck: default
26 | Max violations:
27 | Violations found: 1
28 | +--------+----------+--------------------+------------+
29 | | Rule | Severity | Description | Violations |
30 | +--------+----------+--------------------+------------+
31 | | ZPS7-1 | Warning | PS7 block required | 1 |
32 | +--------+----------+--------------------+------------+
33 |
34 | 2. REPORT DETAILS
35 | -----------------
36 | ZPS7-1#1 Warning
37 | PS7 block required
38 | The PS7 cell must be used in this Zynq design in order to enable correct default configuration.
39 | Related violations:
40 |
41 |
42 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.srcs/sources_1/bd/half_adder/half_adder.bd:
--------------------------------------------------------------------------------
1 | {
2 | "design": {
3 | "design_info": {
4 | "boundary_crc": "0x0",
5 | "device": "xc7z020clg400-1",
6 | "gen_directory": "../../../../Tutorial.gen/sources_1/bd/half_adder",
7 | "name": "half_adder",
8 | "rev_ctrl_bd_flag": "RevCtrlBdOff",
9 | "synth_flow_mode": "Hierarchical",
10 | "tool_version": "2022.2"
11 | },
12 | "design_tree": {
13 | "Add_half_0": ""
14 | },
15 | "ports": {
16 | "LED0": {
17 | "direction": "O"
18 | },
19 | "LED1": {
20 | "direction": "O"
21 | },
22 | "SW0": {
23 | "direction": "I"
24 | },
25 | "SW1": {
26 | "direction": "I"
27 | }
28 | },
29 | "components": {
30 | "Add_half_0": {
31 | "vlnv": "xilinx.com:module_ref:Add_half:1.0",
32 | "xci_name": "half_adder_Add_half_0_0",
33 | "xci_path": "ip\\half_adder_Add_half_0_0\\half_adder_Add_half_0_0.xci",
34 | "inst_hier_path": "Add_half_0",
35 | "reference_info": {
36 | "ref_type": "hdl",
37 | "ref_name": "Add_half",
38 | "boundary_crc": "0x0"
39 | },
40 | "ports": {
41 | "sum": {
42 | "direction": "O"
43 | },
44 | "c_out": {
45 | "direction": "O"
46 | },
47 | "a": {
48 | "direction": "I"
49 | },
50 | "b": {
51 | "direction": "I"
52 | }
53 | }
54 | }
55 | },
56 | "nets": {
57 | "Add_half_0_c_out": {
58 | "ports": [
59 | "Add_half_0/c_out",
60 | "LED1"
61 | ]
62 | },
63 | "Add_half_0_sum": {
64 | "ports": [
65 | "Add_half_0/sum",
66 | "LED0"
67 | ]
68 | },
69 | "SW0_1": {
70 | "ports": [
71 | "SW0",
72 | "Add_half_0/a"
73 | ]
74 | },
75 | "SW1_1": {
76 | "ports": [
77 | "SW1",
78 | "Add_half_0/b"
79 | ]
80 | }
81 | }
82 | }
83 | }
--------------------------------------------------------------------------------
/Tutorial/Tutorial.srcs/sources_1/bd/half_adder/ip/half_adder_Add_half_0_0/half_adder_Add_half_0_0.xci:
--------------------------------------------------------------------------------
1 | {
2 | "schema": "xilinx.com:schema:json_instance:1.0",
3 | "ip_inst": {
4 | "xci_name": "half_adder_Add_half_0_0",
5 | "cell_name": "Add_half_0",
6 | "component_reference": "xilinx.com:module_ref:Add_half:1.0",
7 | "ip_revision": "1",
8 | "gen_directory": "../../../../../../Tutorial.gen/sources_1/bd/half_adder/ip/half_adder_Add_half_0_0",
9 | "parameters": {
10 | "component_parameters": {
11 | "Component_Name": [ { "value": "half_adder_Add_half_0_0", "resolve_type": "user", "usage": "all" } ]
12 | },
13 | "project_parameters": {
14 | "ARCHITECTURE": [ { "value": "zynq" } ],
15 | "BASE_BOARD_PART": [ { "value": "tul.com.tw:pynq-z2:part0:1.0" } ],
16 | "BOARD_CONNECTIONS": [ { "value": "" } ],
17 | "DEVICE": [ { "value": "xc7z020" } ],
18 | "PACKAGE": [ { "value": "clg400" } ],
19 | "PREFHDL": [ { "value": "VERILOG" } ],
20 | "SILICON_REVISION": [ { "value": "" } ],
21 | "SIMULATOR_LANGUAGE": [ { "value": "VERILOG" } ],
22 | "SPEEDGRADE": [ { "value": "-1" } ],
23 | "STATIC_POWER": [ { "value": "" } ],
24 | "TEMPERATURE_GRADE": [ { "value": "" } ],
25 | "USE_RDI_CUSTOMIZATION": [ { "value": "TRUE" } ],
26 | "USE_RDI_GENERATION": [ { "value": "TRUE" } ]
27 | },
28 | "runtime_parameters": {
29 | "IPCONTEXT": [ { "value": "IP_Integrator" } ],
30 | "IPREVISION": [ { "value": "1" } ],
31 | "MANAGED": [ { "value": "TRUE" } ],
32 | "OUTPUTDIR": [ { "value": "../../../../../../Tutorial.gen/sources_1/bd/half_adder/ip/half_adder_Add_half_0_0" } ],
33 | "SELECTEDSIMMODEL": [ { "value": "" } ],
34 | "SHAREDDIR": [ { "value": "../../ipshared" } ],
35 | "SWVERSION": [ { "value": "2022.2" } ],
36 | "SYNTHESISFLOW": [ { "value": "OOC_HIERARCHICAL" } ]
37 | }
38 | },
39 | "boundary": {
40 | "ports": {
41 | "sum": [ { "direction": "out" } ],
42 | "c_out": [ { "direction": "out" } ],
43 | "a": [ { "direction": "in" } ],
44 | "b": [ { "direction": "in" } ]
45 | }
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/ISEWrap.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Vivado(TM)
5 | # ISEWrap.sh: Vivado Runs Script for UNIX
6 | # Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved.
7 | #
8 |
9 | cmd_exists()
10 | {
11 | command -v "$1" >/dev/null 2>&1
12 | }
13 |
14 | HD_LOG=$1
15 | shift
16 |
17 | # CHECK for a STOP FILE
18 | if [ -f .stop.rst ]
19 | then
20 | echo "" >> $HD_LOG
21 | echo "*** Halting run - EA reset detected ***" >> $HD_LOG
22 | echo "" >> $HD_LOG
23 | exit 1
24 | fi
25 |
26 | ISE_STEP=$1
27 | shift
28 |
29 | # WRITE STEP HEADER to LOG
30 | echo "" >> $HD_LOG
31 | echo "*** Running $ISE_STEP" >> $HD_LOG
32 | echo " with args $@" >> $HD_LOG
33 | echo "" >> $HD_LOG
34 |
35 | # LAUNCH!
36 | $ISE_STEP "$@" >> $HD_LOG 2>&1 &
37 |
38 | # BEGIN file creation
39 | ISE_PID=$!
40 |
41 | HostNameFile=/proc/sys/kernel/hostname
42 | if cmd_exists hostname
43 | then
44 | ISE_HOST=$(hostname)
45 | elif cmd_exists uname
46 | then
47 | ISE_HOST=$(uname -n)
48 | elif [ -f "$HostNameFile" ] && [ -r $HostNameFile ] && [ -s $HostNameFile ]
49 | then
50 | ISE_HOST=$(cat $HostNameFile)
51 | elif [ X != X$HOSTNAME ]
52 | then
53 | ISE_HOST=$HOSTNAME #bash
54 | else
55 | ISE_HOST=$HOST #csh
56 | fi
57 |
58 | ISE_USER=$USER
59 |
60 | ISE_HOSTCORE=$(awk '/^processor/{print $3}' /proc/cpuinfo | wc -l)
61 | ISE_MEMTOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
62 |
63 | ISE_BEGINFILE=.$ISE_STEP.begin.rst
64 | /bin/touch $ISE_BEGINFILE
65 | echo "" >> $ISE_BEGINFILE
66 | echo "" >> $ISE_BEGINFILE
67 | echo " " >> $ISE_BEGINFILE
68 | echo " " >> $ISE_BEGINFILE
69 | echo "" >> $ISE_BEGINFILE
70 |
71 | # WAIT for ISEStep to finish
72 | wait $ISE_PID
73 |
74 | # END/ERROR file creation
75 | RETVAL=$?
76 | if [ $RETVAL -eq 0 ]
77 | then
78 | /bin/touch .$ISE_STEP.end.rst
79 | else
80 | /bin/touch .$ISE_STEP.error.rst
81 | fi
82 |
83 | exit $RETVAL
84 |
85 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/ISEWrap.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Vivado(TM)
5 | # ISEWrap.sh: Vivado Runs Script for UNIX
6 | # Copyright 1986-1999, 2001-2013 Xilinx, Inc. All Rights Reserved.
7 | #
8 |
9 | cmd_exists()
10 | {
11 | command -v "$1" >/dev/null 2>&1
12 | }
13 |
14 | HD_LOG=$1
15 | shift
16 |
17 | # CHECK for a STOP FILE
18 | if [ -f .stop.rst ]
19 | then
20 | echo "" >> $HD_LOG
21 | echo "*** Halting run - EA reset detected ***" >> $HD_LOG
22 | echo "" >> $HD_LOG
23 | exit 1
24 | fi
25 |
26 | ISE_STEP=$1
27 | shift
28 |
29 | # WRITE STEP HEADER to LOG
30 | echo "" >> $HD_LOG
31 | echo "*** Running $ISE_STEP" >> $HD_LOG
32 | echo " with args $@" >> $HD_LOG
33 | echo "" >> $HD_LOG
34 |
35 | # LAUNCH!
36 | $ISE_STEP "$@" >> $HD_LOG 2>&1 &
37 |
38 | # BEGIN file creation
39 | ISE_PID=$!
40 |
41 | HostNameFile=/proc/sys/kernel/hostname
42 | if cmd_exists hostname
43 | then
44 | ISE_HOST=$(hostname)
45 | elif cmd_exists uname
46 | then
47 | ISE_HOST=$(uname -n)
48 | elif [ -f "$HostNameFile" ] && [ -r $HostNameFile ] && [ -s $HostNameFile ]
49 | then
50 | ISE_HOST=$(cat $HostNameFile)
51 | elif [ X != X$HOSTNAME ]
52 | then
53 | ISE_HOST=$HOSTNAME #bash
54 | else
55 | ISE_HOST=$HOST #csh
56 | fi
57 |
58 | ISE_USER=$USER
59 |
60 | ISE_HOSTCORE=$(awk '/^processor/{print $3}' /proc/cpuinfo | wc -l)
61 | ISE_MEMTOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
62 |
63 | ISE_BEGINFILE=.$ISE_STEP.begin.rst
64 | /bin/touch $ISE_BEGINFILE
65 | echo "" >> $ISE_BEGINFILE
66 | echo "" >> $ISE_BEGINFILE
67 | echo " " >> $ISE_BEGINFILE
68 | echo " " >> $ISE_BEGINFILE
69 | echo "" >> $ISE_BEGINFILE
70 |
71 | # WAIT for ISEStep to finish
72 | wait $ISE_PID
73 |
74 | # END/ERROR file creation
75 | RETVAL=$?
76 | if [ $RETVAL -eq 0 ]
77 | then
78 | /bin/touch .$ISE_STEP.end.rst
79 | else
80 | /bin/touch .$ISE_STEP.error.rst
81 | fi
82 |
83 | exit $RETVAL
84 |
85 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.gen/sources_1/bd/half_adder/half_adder.bda:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 2
27 | half_adder
28 | VR
29 |
30 |
31 | half_adder
32 | BC
33 |
34 |
35 | active
36 | 2
37 | PM
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.srcs/sources_1/bd/half_adder/half_adder.bda:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | 2
27 | half_adder
28 | VR
29 |
30 |
31 | half_adder
32 | BC
33 |
34 |
35 | active
36 | 2
37 | PM
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/gen_run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.gen/sources_1/bd/half_adder/ip/half_adder_Add_half_0_0/half_adder_Add_half_0_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | xilinx.com
4 | customized_ip
5 | half_adder_Add_half_0_0
6 | 1.0
7 |
8 |
9 |
10 | sum
11 |
12 | out
13 |
14 |
15 | std_logic
16 | dummy_view
17 |
18 |
19 |
20 |
21 |
22 | c_out
23 |
24 | out
25 |
26 |
27 | std_logic
28 | dummy_view
29 |
30 |
31 |
32 |
33 |
34 | a
35 |
36 | in
37 |
38 |
39 | std_logic
40 | dummy_view
41 |
42 |
43 |
44 |
45 |
46 | b
47 |
48 | in
49 |
50 |
51 | std_logic
52 | dummy_view
53 |
54 |
55 |
56 |
57 |
58 |
59 | xilinx.com:module_ref:Add_half:1.0
60 |
61 |
62 | Component_Name
63 | half_adder_Add_half_0_0
64 |
65 |
66 |
67 |
68 | Add_half_v1_0
69 | module_ref
70 | 1
71 |
72 |
73 | 2022.2
74 |
75 |
76 |
77 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/project.wdf:
--------------------------------------------------------------------------------
1 | version:1
2 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:737263736574636f756e74:32:00:00
3 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f6e73747261696e74736574636f756e74:31:00:00
4 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64657369676e6d6f6465:52544c:00:00
5 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73796e7468657369737374726174656779:56697661646f2053796e7468657369732044656661756c7473:00:00
6 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:696d706c7374726174656779:56697661646f20496d706c656d656e746174696f6e2044656661756c7473:00:00
7 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e7473796e74686573697372756e:73796e74685f31:00:00
8 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e74696d706c72756e:696d706c5f31:00:00
9 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c73796e74686573697372756e73:31:00:00
10 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c696d706c72756e73:31:00:00
11 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f72655f636f6e7461696e6572:66616c7365:00:00
12 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73696d756c61746f725f6c616e6775616765:566572696c6f67:00:00
13 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f6c616e6775616765:566572696c6f67:00:00
14 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64656661756c745f6c696272617279:78696c5f64656661756c746c6962:00:00
15 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f73696d756c61746f72:5853696d:00:00
16 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f7873696d:30:00:00
17 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00
18 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f717565737461:30:00:00
19 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f696573:30:00:00
20 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f766373:30:00:00
21 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f72697669657261:30:00:00
22 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f61637469766568646c:30:00:00
23 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f7873696d:30:00:00
24 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00
25 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f717565737461:30:00:00
26 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f696573:30:00:00
27 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f766373:30:00:00
28 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f72697669657261:30:00:00
29 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f61637469766568646c:30:00:00
30 | 5f5f48494444454e5f5f:5f5f48494444454e5f5f:50726f6a65637455554944:3837623333616430663030373461646262666231336536393763616334656663:506172656e742050412070726f6a656374204944:00
31 | eof:680842915
32 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/project.wdf:
--------------------------------------------------------------------------------
1 | version:1
2 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:737263736574636f756e74:32:00:00
3 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f6e73747261696e74736574636f756e74:31:00:00
4 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64657369676e6d6f6465:52544c:00:00
5 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73796e7468657369737374726174656779:56697661646f2053796e7468657369732044656661756c7473:00:00
6 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:696d706c7374726174656779:56697661646f20496d706c656d656e746174696f6e2044656661756c7473:00:00
7 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e7473796e74686573697372756e:73796e74685f31:00:00
8 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:63757272656e74696d706c72756e:696d706c5f31:00:00
9 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c73796e74686573697372756e73:31:00:00
10 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:746f74616c696d706c72756e73:31:00:00
11 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:636f72655f636f6e7461696e6572:66616c7365:00:00
12 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:73696d756c61746f725f6c616e6775616765:566572696c6f67:00:00
13 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f6c616e6775616765:566572696c6f67:00:00
14 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:64656661756c745f6c696272617279:78696c5f64656661756c746c6962:00:00
15 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:7461726765745f73696d756c61746f72:5853696d:00:00
16 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f7873696d:30:00:00
17 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00
18 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f717565737461:30:00:00
19 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f696573:30:00:00
20 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f766373:30:00:00
21 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f72697669657261:30:00:00
22 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6c61756e63685f73696d756c6174696f6e5f61637469766568646c:30:00:00
23 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f7873696d:30:00:00
24 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f6d6f64656c73696d:30:00:00
25 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f717565737461:30:00:00
26 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f696573:30:00:00
27 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f766373:30:00:00
28 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f72697669657261:30:00:00
29 | 70726f6a656374:76697661646f5f75736167655c70726f6a6563745f64617461:6578706f72745f73696d756c6174696f6e5f61637469766568646c:30:00:00
30 | 5f5f48494444454e5f5f:5f5f48494444454e5f5f:50726f6a65637455554944:3837623333616430663030373461646262666231336536393763616334656663:506172656e742050412070726f6a656374204944:00
31 | eof:680842915
32 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_control_sets_placed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | -------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:29:50 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_control_sets -verbose -file Add_half_control_sets_placed.rpt
7 | | Design : Add_half
8 | | Device : xc7z020
9 | -------------------------------------------------------------------------------------
10 |
11 | Control Set Information
12 |
13 | Table of Contents
14 | -----------------
15 | 1. Summary
16 | 2. Histogram
17 | 3. Flip-Flop Distribution
18 | 4. Detailed Control Set Information
19 |
20 | 1. Summary
21 | ----------
22 |
23 | +----------------------------------------------------------+-------+
24 | | Status | Count |
25 | +----------------------------------------------------------+-------+
26 | | Total control sets | 0 |
27 | | Minimum number of control sets | 0 |
28 | | Addition due to synthesis replication | 0 |
29 | | Addition due to physical synthesis replication | 0 |
30 | | Unused register locations in slices containing registers | 0 |
31 | +----------------------------------------------------------+-------+
32 | * Control sets can be merged at opt_design using control_set_merge or merge_equivalent_drivers
33 | ** Run report_qor_suggestions for automated merging and remapping suggestions
34 |
35 |
36 | 2. Histogram
37 | ------------
38 |
39 | +--------------------+-------+
40 | | Fanout | Count |
41 | +--------------------+-------+
42 | | Total control sets | 0 |
43 | | >= 0 to < 4 | 0 |
44 | | >= 4 to < 6 | 0 |
45 | | >= 6 to < 8 | 0 |
46 | | >= 8 to < 10 | 0 |
47 | | >= 10 to < 12 | 0 |
48 | | >= 12 to < 14 | 0 |
49 | | >= 14 to < 16 | 0 |
50 | | >= 16 | 0 |
51 | +--------------------+-------+
52 | * Control sets can be remapped at either synth_design or opt_design
53 |
54 |
55 | 3. Flip-Flop Distribution
56 | -------------------------
57 |
58 | +--------------+-----------------------+------------------------+-----------------+--------------+
59 | | Clock Enable | Synchronous Set/Reset | Asynchronous Set/Reset | Total Registers | Total Slices |
60 | +--------------+-----------------------+------------------------+-----------------+--------------+
61 | | No | No | No | 0 | 0 |
62 | | No | No | Yes | 0 | 0 |
63 | | No | Yes | No | 0 | 0 |
64 | | Yes | No | No | 0 | 0 |
65 | | Yes | No | Yes | 0 | 0 |
66 | | Yes | Yes | No | 0 | 0 |
67 | +--------------+-----------------------+------------------------+-----------------+--------------+
68 |
69 |
70 | 4. Detailed Control Set Information
71 | -----------------------------------
72 |
73 | +--------------+---------------+------------------+------------------+----------------+--------------+
74 | | Clock Signal | Enable Signal | Set/Reset Signal | Slice Load Count | Bel Load Count | Bels / Slice |
75 | +--------------+---------------+------------------+------------------+----------------+--------------+
76 |
77 |
78 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half.tcl:
--------------------------------------------------------------------------------
1 | #
2 | # Report generation script generated by Vivado
3 | #
4 |
5 | proc create_report { reportName command } {
6 | set status "."
7 | append status $reportName ".fail"
8 | if { [file exists $status] } {
9 | eval file delete [glob $status]
10 | }
11 | send_msg_id runtcl-4 info "Executing : $command"
12 | set retval [eval catch { $command } msg]
13 | if { $retval != 0 } {
14 | set fp [open $status w]
15 | close $fp
16 | send_msg_id runtcl-5 warning "$msg"
17 | }
18 | }
19 | namespace eval ::optrace {
20 | variable script "E:/Projects/Tutorial/Tutorial.runs/impl_1/Add_half.tcl"
21 | variable category "vivado_impl"
22 | }
23 |
24 | # Try to connect to running dispatch if we haven't done so already.
25 | # This code assumes that the Tcl interpreter is not using threads,
26 | # since the ::dispatch::connected variable isn't mutex protected.
27 | if {![info exists ::dispatch::connected]} {
28 | namespace eval ::dispatch {
29 | variable connected false
30 | if {[llength [array get env XILINX_CD_CONNECT_ID]] > 0} {
31 | set result "true"
32 | if {[catch {
33 | if {[lsearch -exact [package names] DispatchTcl] < 0} {
34 | set result [load librdi_cd_clienttcl[info sharedlibextension]]
35 | }
36 | if {$result eq "false"} {
37 | puts "WARNING: Could not load dispatch client library"
38 | }
39 | set connect_id [ ::dispatch::init_client -mode EXISTING_SERVER ]
40 | if { $connect_id eq "" } {
41 | puts "WARNING: Could not initialize dispatch client"
42 | } else {
43 | puts "INFO: Dispatch client connection id - $connect_id"
44 | set connected true
45 | }
46 | } catch_res]} {
47 | puts "WARNING: failed to connect to dispatch server - $catch_res"
48 | }
49 | }
50 | }
51 | }
52 | if {$::dispatch::connected} {
53 | # Remove the dummy proc if it exists.
54 | if { [expr {[llength [info procs ::OPTRACE]] > 0}] } {
55 | rename ::OPTRACE ""
56 | }
57 | proc ::OPTRACE { task action {tags {} } } {
58 | ::vitis_log::op_trace "$task" $action -tags $tags -script $::optrace::script -category $::optrace::category
59 | }
60 | # dispatch is generic. We specifically want to attach logging.
61 | ::vitis_log::connect_client
62 | } else {
63 | # Add dummy proc if it doesn't exist.
64 | if { [expr {[llength [info procs ::OPTRACE]] == 0}] } {
65 | proc ::OPTRACE {{arg1 \"\" } {arg2 \"\"} {arg3 \"\" } {arg4 \"\"} {arg5 \"\" } {arg6 \"\"}} {
66 | # Do nothing
67 | }
68 | }
69 | }
70 |
71 | proc start_step { step } {
72 | set stopFile ".stop.rst"
73 | if {[file isfile .stop.rst]} {
74 | puts ""
75 | puts "*** Halting run - EA reset detected ***"
76 | puts ""
77 | puts ""
78 | return -code error
79 | }
80 | set beginFile ".$step.begin.rst"
81 | set platform "$::tcl_platform(platform)"
82 | set user "$::tcl_platform(user)"
83 | set pid [pid]
84 | set host ""
85 | if { [string equal $platform unix] } {
86 | if { [info exist ::env(HOSTNAME)] } {
87 | set host $::env(HOSTNAME)
88 | } elseif { [info exist ::env(HOST)] } {
89 | set host $::env(HOST)
90 | }
91 | } else {
92 | if { [info exist ::env(COMPUTERNAME)] } {
93 | set host $::env(COMPUTERNAME)
94 | }
95 | }
96 | set ch [open $beginFile w]
97 | puts $ch ""
98 | puts $ch ""
99 | puts $ch " "
100 | puts $ch " "
101 | puts $ch ""
102 | close $ch
103 | }
104 |
105 | proc end_step { step } {
106 | set endFile ".$step.end.rst"
107 | set ch [open $endFile w]
108 | close $ch
109 | }
110 |
111 | proc step_failed { step } {
112 | set endFile ".$step.error.rst"
113 | set ch [open $endFile w]
114 | close $ch
115 | OPTRACE "impl_1" END { }
116 | }
117 |
118 |
119 | OPTRACE "impl_1" START { ROLLUP_1 }
120 | OPTRACE "Phase: Write Bitstream" START { ROLLUP_AUTO }
121 | OPTRACE "write_bitstream setup" START { }
122 | start_step write_bitstream
123 | set ACTIVE_STEP write_bitstream
124 | set rc [catch {
125 | create_msg_db write_bitstream.pb
126 | set_param chipscope.maxJobs 4
127 | open_checkpoint Add_half_routed.dcp
128 | set_property webtalk.parent_dir E:/Projects/Tutorial/Tutorial.cache/wt [current_project]
129 | set_property TOP Add_half [current_fileset]
130 | OPTRACE "read constraints: write_bitstream" START { }
131 | OPTRACE "read constraints: write_bitstream" END { }
132 | catch { write_mem_info -force -no_partial_mmi Add_half.mmi }
133 | OPTRACE "write_bitstream setup" END { }
134 | OPTRACE "write_bitstream" START { }
135 | write_bitstream -force Add_half.bit
136 | OPTRACE "write_bitstream" END { }
137 | OPTRACE "write_bitstream misc" START { }
138 | OPTRACE "read constraints: write_bitstream_post" START { }
139 | OPTRACE "read constraints: write_bitstream_post" END { }
140 | catch {write_debug_probes -quiet -force Add_half}
141 | catch {file copy -force Add_half.ltx debug_nets.ltx}
142 | close_msg_db -file write_bitstream.pb
143 | } RESULT]
144 | if {$rc} {
145 | step_failed write_bitstream
146 | return -code error $RESULT
147 | } else {
148 | end_step write_bitstream
149 | unset ACTIVE_STEP
150 | }
151 |
152 | OPTRACE "write_bitstream misc" END { }
153 | OPTRACE "Phase: Write Bitstream" END { }
154 | OPTRACE "impl_1" END { }
155 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/Add_half.tcl:
--------------------------------------------------------------------------------
1 | #
2 | # Synthesis run script generated by Vivado
3 | #
4 |
5 | set TIME_start [clock seconds]
6 | namespace eval ::optrace {
7 | variable script "E:/Projects/Tutorial/Tutorial.runs/synth_1/Add_half.tcl"
8 | variable category "vivado_synth"
9 | }
10 |
11 | # Try to connect to running dispatch if we haven't done so already.
12 | # This code assumes that the Tcl interpreter is not using threads,
13 | # since the ::dispatch::connected variable isn't mutex protected.
14 | if {![info exists ::dispatch::connected]} {
15 | namespace eval ::dispatch {
16 | variable connected false
17 | if {[llength [array get env XILINX_CD_CONNECT_ID]] > 0} {
18 | set result "true"
19 | if {[catch {
20 | if {[lsearch -exact [package names] DispatchTcl] < 0} {
21 | set result [load librdi_cd_clienttcl[info sharedlibextension]]
22 | }
23 | if {$result eq "false"} {
24 | puts "WARNING: Could not load dispatch client library"
25 | }
26 | set connect_id [ ::dispatch::init_client -mode EXISTING_SERVER ]
27 | if { $connect_id eq "" } {
28 | puts "WARNING: Could not initialize dispatch client"
29 | } else {
30 | puts "INFO: Dispatch client connection id - $connect_id"
31 | set connected true
32 | }
33 | } catch_res]} {
34 | puts "WARNING: failed to connect to dispatch server - $catch_res"
35 | }
36 | }
37 | }
38 | }
39 | if {$::dispatch::connected} {
40 | # Remove the dummy proc if it exists.
41 | if { [expr {[llength [info procs ::OPTRACE]] > 0}] } {
42 | rename ::OPTRACE ""
43 | }
44 | proc ::OPTRACE { task action {tags {} } } {
45 | ::vitis_log::op_trace "$task" $action -tags $tags -script $::optrace::script -category $::optrace::category
46 | }
47 | # dispatch is generic. We specifically want to attach logging.
48 | ::vitis_log::connect_client
49 | } else {
50 | # Add dummy proc if it doesn't exist.
51 | if { [expr {[llength [info procs ::OPTRACE]] == 0}] } {
52 | proc ::OPTRACE {{arg1 \"\" } {arg2 \"\"} {arg3 \"\" } {arg4 \"\"} {arg5 \"\" } {arg6 \"\"}} {
53 | # Do nothing
54 | }
55 | }
56 | }
57 |
58 | proc create_report { reportName command } {
59 | set status "."
60 | append status $reportName ".fail"
61 | if { [file exists $status] } {
62 | eval file delete [glob $status]
63 | }
64 | send_msg_id runtcl-4 info "Executing : $command"
65 | set retval [eval catch { $command } msg]
66 | if { $retval != 0 } {
67 | set fp [open $status w]
68 | close $fp
69 | send_msg_id runtcl-5 warning "$msg"
70 | }
71 | }
72 | OPTRACE "synth_1" START { ROLLUP_AUTO }
73 | OPTRACE "Creating in-memory project" START { }
74 | create_project -in_memory -part xc7z020clg400-1
75 |
76 | set_param project.singleFileAddWarning.threshold 0
77 | set_param project.compositeFile.enableAutoGeneration 0
78 | set_param synth.vivado.isSynthRun true
79 | set_property webtalk.parent_dir E:/Projects/Tutorial/Tutorial.cache/wt [current_project]
80 | set_property parent.project_path E:/Projects/Tutorial/Tutorial.xpr [current_project]
81 | set_property default_lib xil_defaultlib [current_project]
82 | set_property target_language Verilog [current_project]
83 | set_property board_part tul.com.tw:pynq-z2:part0:1.0 [current_project]
84 | set_property ip_output_repo e:/Projects/Tutorial/Tutorial.cache/ip [current_project]
85 | set_property ip_cache_permissions {read write} [current_project]
86 | OPTRACE "Creating in-memory project" END { }
87 | OPTRACE "Adding files" START { }
88 | read_verilog -library xil_defaultlib E:/Projects/Tutorial/Tutorial.srcs/sources_1/new/half_adder.v
89 | OPTRACE "Adding files" END { }
90 | # Mark all dcp files as not used in implementation to prevent them from being
91 | # stitched into the results of this synthesis run. Any black boxes in the
92 | # design are intentionally left as such for best results. Dcp files will be
93 | # stitched into the design at a later time, either when this synthesis run is
94 | # opened, or when it is stitched into a dependent implementation run.
95 | foreach dcp [get_files -quiet -all -filter file_type=="Design\ Checkpoint"] {
96 | set_property used_in_implementation false $dcp
97 | }
98 | read_xdc {{E:/Projects/Tutorial/Tutorial.srcs/constrs_1/imports/pynq-z2_v1.0.xdc/PYNQ-Z2 v1.0.xdc}}
99 | set_property used_in_implementation false [get_files {{E:/Projects/Tutorial/Tutorial.srcs/constrs_1/imports/pynq-z2_v1.0.xdc/PYNQ-Z2 v1.0.xdc}}]
100 |
101 | set_param ips.enableIPCacheLiteLoad 1
102 |
103 | read_checkpoint -auto_incremental -incremental E:/Projects/Tutorial/Tutorial.srcs/utils_1/imports/synth_1/Add_half.dcp
104 | close [open __synthesis_is_running__ w]
105 |
106 | OPTRACE "synth_design" START { }
107 | synth_design -top Add_half -part xc7z020clg400-1
108 | OPTRACE "synth_design" END { }
109 | if { [get_msg_config -count -severity {CRITICAL WARNING}] > 0 } {
110 | send_msg_id runtcl-6 info "Synthesis results are not added to the cache due to CRITICAL_WARNING"
111 | }
112 |
113 |
114 | OPTRACE "write_checkpoint" START { CHECKPOINT }
115 | # disable binary constraint mode for synth run checkpoints
116 | set_param constraints.enableBinaryConstraints false
117 | write_checkpoint -force -noxdef Add_half.dcp
118 | OPTRACE "write_checkpoint" END { }
119 | OPTRACE "synth reports" START { REPORT }
120 | create_report "synth_1_synth_report_utilization_0" "report_utilization -file Add_half_utilization_synth.rpt -pb Add_half_utilization_synth.pb"
121 | OPTRACE "synth reports" END { }
122 | file delete __synthesis_is_running__
123 | close [open __synthesis_is_complete__ w]
124 | OPTRACE "synth_1" END { }
125 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.gen/sources_1/bd/mref/Add_half/component.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | xilinx.com
4 | module_ref
5 | Add_half
6 | 1.0
7 |
8 |
9 |
10 | xilinx_anylanguagesynthesis
11 | Synthesis
12 | :vivado.xilinx.com:synthesis
13 | Verilog
14 | Add_half
15 |
16 |
17 | viewChecksum
18 | fc555e18
19 |
20 |
21 |
22 |
23 | xilinx_anylanguagebehavioralsimulation
24 | Simulation
25 | :vivado.xilinx.com:simulation
26 | Verilog
27 | Add_half
28 |
29 |
30 | viewChecksum
31 | fc555e18
32 |
33 |
34 |
35 |
36 | xilinx_xpgui
37 | UI Layout
38 | :vivado.xilinx.com:xgui.ui
39 |
40 | xilinx_xpgui_view_fileset
41 |
42 |
43 |
44 |
45 |
46 | sum
47 |
48 | out
49 |
50 |
51 | std_logic
52 | xilinx_anylanguagesynthesis
53 | xilinx_anylanguagebehavioralsimulation
54 |
55 |
56 |
57 |
58 |
59 | c_out
60 |
61 | out
62 |
63 |
64 | std_logic
65 | xilinx_anylanguagesynthesis
66 | xilinx_anylanguagebehavioralsimulation
67 |
68 |
69 |
70 |
71 |
72 | a
73 |
74 | in
75 |
76 |
77 | std_logic
78 | xilinx_anylanguagesynthesis
79 | xilinx_anylanguagebehavioralsimulation
80 |
81 |
82 |
83 |
84 |
85 | b
86 |
87 | in
88 |
89 |
90 | std_logic
91 | xilinx_anylanguagesynthesis
92 | xilinx_anylanguagebehavioralsimulation
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 | xilinx_xpgui_view_fileset
102 |
103 | xgui/Add_half_v1_0.tcl
104 | tclSource
105 | CHECKSUM_f64a5dae
106 | XGUI_VERSION_2
107 |
108 |
109 |
110 | xilinx.com:module_ref:Add_half:1.0
111 |
112 |
113 | Component_Name
114 | Add_half_v1_0
115 |
116 |
117 |
118 |
119 |
120 | zynq
121 |
122 |
123 | /UserIP
124 |
125 | Add_half_v1_0
126 | level_1
127 | module_ref
128 |
129 | IPI
130 |
131 | 1
132 | 2023-02-17T15:48:50Z
133 |
134 |
135 | 2022.2
136 |
137 |
138 |
139 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.cache/wt/synthesis.wdf:
--------------------------------------------------------------------------------
1 | version:1
2 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d70617274:7863377a303230636c673430302d31:00:00
3 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e616d65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
4 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d746f70:4164645f68616c66:00:00
5 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e636c7564655f64697273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
6 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67656e65726963:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
7 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d766572696c6f675f646566696e65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
8 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e737472736574:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
9 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7365755f70726f74656374:64656661756c743a3a6e6f6e65:00:00
10 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d666c617474656e5f686965726172636879:64656661756c743a3a72656275696c74:00:00
11 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d67617465645f636c6f636b5f636f6e76657273696f6e:64656661756c743a3a6f6666:00:00
12 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d646972656374697665:64656661756c743a3a64656661756c74:00:00
13 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d696e6372656d656e74616c5f6d6f6465:64656661756c743a3a64656661756c74:00:00
14 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
15 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6c696e74:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
16 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66696c65:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
17 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64617461666c6f77:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
18 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64617461666c6f775f73657474696e6773:64656661756c743a3a6e6f6e65:00:00
19 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f6970:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
20 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d72746c5f736b69705f636f6e73747261696e7473:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
21 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f6c63:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
22 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6f73:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
23 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d62756667:64656661756c743a3a3132:00:00
24 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66616e6f75745f6c696d6974:64656661756c743a3a3130303030:00:00
25 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73687265675f6d696e5f73697a65:64656661756c743a3a33:00:00
26 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d6f6465:64656661756c743a3a64656661756c74:00:00
27 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d66736d5f65787472616374696f6e:64656661756c743a3a6175746f:00:00
28 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6b6565705f6571756976616c656e745f726567697374657273:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
29 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d7265736f757263655f73686172696e67:64656661756c743a3a6175746f:00:00
30 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636173636164655f647370:64656661756c743a3a6175746f:00:00
31 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d636f6e74726f6c5f7365745f6f70745f7468726573686f6c64:64656661756c743a3a6175746f:00:00
32 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d:64656661756c743a3a2d31:00:00
33 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d:64656661756c743a3a2d31:00:00
34 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f647370:64656661756c743a3a2d31:00:00
35 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f6272616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00
36 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6d61785f7572616d5f636173636164655f686569676874:64656661756c743a3a2d31:00:00
37 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
38 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f726574696d696e67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
39 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f73726c65787472616374:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
40 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d617373657274:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
41 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d6e6f5f74696d696e675f64726976656e:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
42 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d73666375:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
43 | 73796e746865736973:73796e7468657369735c636f6d6d616e645f6c696e655f6f7074696f6e73:2d64656275675f6c6f67:64656661756c743a3a5b6e6f745f7370656369666965645d:00:00
44 | 73796e746865736973:73796e7468657369735c7573616765:656c6170736564:30303a30303a333473:00:00
45 | 73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f7065616b:313332332e3634384d42:00:00
46 | 73796e746865736973:73796e7468657369735c7573616765:6d656d6f72795f6761696e:3931322e3834344d42:00:00
47 | eof:4184897404
48 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_clock_utilization_routed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | --------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:30:19 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_clock_utilization -file Add_half_clock_utilization_routed.rpt
7 | | Design : Add_half
8 | | Device : 7z020-clg400
9 | | Speed File : -1 PRODUCTION 1.12 2019-11-22
10 | | Design State : Routed
11 | --------------------------------------------------------------------------------------
12 |
13 | Clock Utilization Report
14 |
15 | Table of Contents
16 | -----------------
17 | 1. Clock Primitive Utilization
18 | 2. Global Clock Resources
19 | 3. Global Clock Source Details
20 | 4. Clock Regions: Key Resource Utilization
21 | 5. Clock Regions : Global Clock Summary
22 |
23 | 1. Clock Primitive Utilization
24 | ------------------------------
25 |
26 | +----------+------+-----------+-----+--------------+--------+
27 | | Type | Used | Available | LOC | Clock Region | Pblock |
28 | +----------+------+-----------+-----+--------------+--------+
29 | | BUFGCTRL | 0 | 32 | 0 | 0 | 0 |
30 | | BUFH | 0 | 72 | 0 | 0 | 0 |
31 | | BUFIO | 0 | 16 | 0 | 0 | 0 |
32 | | BUFMR | 0 | 8 | 0 | 0 | 0 |
33 | | BUFR | 0 | 16 | 0 | 0 | 0 |
34 | | MMCM | 0 | 4 | 0 | 0 | 0 |
35 | | PLL | 0 | 4 | 0 | 0 | 0 |
36 | +----------+------+-----------+-----+--------------+--------+
37 |
38 |
39 | 2. Global Clock Resources
40 | -------------------------
41 |
42 | +-----------+-----------+-----------------+------------+------+--------------+-------------------+-------------+-----------------+--------------+-------+------------+-----+
43 | | Global Id | Source Id | Driver Type/Pin | Constraint | Site | Clock Region | Load Clock Region | Clock Loads | Non-Clock Loads | Clock Period | Clock | Driver Pin | Net |
44 | +-----------+-----------+-----------------+------------+------+--------------+-------------------+-------------+-----------------+--------------+-------+------------+-----+
45 | * Clock Loads column represents cell count of net connects that connect to a clock pin. Internal cell leaf pins are not considered
46 | ** Non-Clock Loads column represents cell count of non-clock pin loads
47 |
48 |
49 | 3. Global Clock Source Details
50 | ------------------------------
51 |
52 | +-----------+-----------+-----------------+------------+------+--------------+-------------+-----------------+---------------------+--------------+------------+-----+
53 | | Source Id | Global Id | Driver Type/Pin | Constraint | Site | Clock Region | Clock Loads | Non-Clock Loads | Source Clock Period | Source Clock | Driver Pin | Net |
54 | +-----------+-----------+-----------------+------------+------+--------------+-------------+-----------------+---------------------+--------------+------------+-----+
55 | * Clock Loads column represents cell count of net connects that connect to a clock pin. Internal cell leaf pins are not considered
56 | ** Non-Clock Loads column represents cell count of non-clock pin loads
57 |
58 |
59 | 4. Clock Regions: Key Resource Utilization
60 | ------------------------------------------
61 |
62 | +-------------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+
63 | | | Global Clock | BUFRs | BUFMRs | BUFIOs | MMCM | PLL | GT | PCI | ILOGIC | OLOGIC | FF | LUTM | RAMB18 | RAMB36 | DSP48E2 |
64 | +-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+
65 | | Clock Region Name | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail | Used | Avail |
66 | +-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+
67 | | X0Y0 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2500 | 0 | 1000 | 0 | 60 | 0 | 30 | 0 | 60 |
68 | | X1Y0 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 3200 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 40 |
69 | | X0Y1 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1200 | 0 | 400 | 0 | 20 | 0 | 10 | 0 | 20 |
70 | | X1Y1 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2600 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 40 |
71 | | X0Y2 | 0 | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1200 | 0 | 400 | 0 | 20 | 0 | 10 | 0 | 20 |
72 | | X1Y2 | 0 | 12 | 0 | 4 | 0 | 2 | 0 | 4 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 50 | 0 | 50 | 0 | 2600 | 0 | 850 | 0 | 60 | 0 | 30 | 0 | 40 |
73 | +-------------------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+------+-------+
74 | * Global Clock column represents track count; while other columns represents cell counts
75 |
76 |
77 | 5. Clock Regions : Global Clock Summary
78 | ---------------------------------------
79 |
80 | All Modules
81 | +----+----+----+
82 | | | X0 | X1 |
83 | +----+----+----+
84 | | Y2 | 0 | 0 |
85 | | Y1 | 0 | 0 |
86 | | Y0 | 0 | 0 |
87 | +----+----+----+
88 |
89 |
90 |
91 | # Location of IO Primitives which is load of clock spine
92 |
93 | # Location of clock ports
94 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 基于PYNQ Z2开发板与Vivado 2022.2的FPGA开发板使用教程
2 |
3 | ## 0. PYNQ Z2配置
4 |
5 | 见官方文档: https://pynq.readthedocs.io/en/latest/getting_started/pynq_z2_setup.html
6 | SD卡系统镜像文件在http://www.pynq.io/board.html下载, 使用Win32DiskImager烧录即可.
7 |
8 | ## 1. Vivado下载与安装
9 |
10 | **下载**
11 |
12 | 前往XILINX下载中心: https://www.xilinx.com/support/download.html
13 | 首先进行账户注册, 注册完成后选择"Xilinx Unified Installer 2022.2: Windows Self Extracting Web Installer (EXE - 209.61 MB)"下载.
14 | 下载时提示"U.S. Government Export Approval", 可以按照以下信息填写:
15 | Company Name: Massachusetts Institute of Technology
16 | Address 1: Massachusetts Institute of Technology
17 | Location: United States
18 | State/Province: Massachusetts
19 | City: Cambridge
20 | Postal Code: 02139
21 |
22 | 点击Download下载.
23 |
24 | **安装**
25 |
26 | 安装时按照默认配置即可. 在安装路径处选择安装文件夹. 注意安装时所需的磁盘空间至少120GB, 安装完毕后将占用磁盘100GB以上空间. 下载文件时会出现警告, 多次重试即可.
27 |
28 | ## 2. 配置开发板文件
29 |
30 | **配置文件**
31 | 前往PYNQ官网: https://www.tulembedded.com/FPGA/ProductsPYNQ-Z2.html
32 | 选择PYNQ-Z2 Board File下载. 解压压缩包, 复制第二层pynq-z2文件夹.
33 | 打开Vivado所在路径, 进入Vivado\2022.2\data\boards文件夹. 新建board_files文件夹, 并将pynq-z2文件夹粘贴进去. 如图.
34 |
35 | 
36 |
37 | **约束文件**
38 | 前往PYNQ教程网站: https://pynq.readthedocs.io/en/latest/overlay_design_methodology/board_settings.html
39 | 选择Download the Pynq-Z2 Master XDC constraints下载约束文件, 解压备用.
40 |
41 | ## 3. 新建项目
42 | 打开Vivado, 选择"Create Project", 输入项目名称与路径. 选中Create project subdirectory, 点击Next.
43 |
44 | 
45 |
46 | 选择RTL Project, 点击Next.
47 |
48 | 
49 |
50 | Target language与Simulator language均为Verilog, 点击Next.
51 |
52 | 
53 |
54 | Add Constriants中选择左上角蓝色+, 点击Add files. 选择上一步下载的约束文件(后缀名为.xdc). 选中Copy constraints files into project, 点击Next.
55 |
56 | 
57 |
58 | 选择Boards, 选择pynq-z2(如果上一步配置文件配置正确的话应该会出现), 点击Next.
59 |
60 | 
61 |
62 | 点击Finish. 项目新建完成.
63 |
64 | 
65 |
66 | ## 4. 新建IP(Intellectual Property)
67 |
68 | 点击左边栏IP INTEGRATOR-Create Block Design, 命名完毕后点击OK
69 |
70 | 
71 | 
72 |
73 | 进入Sources菜单, 右键Design Sources, 点击Add Sources.
74 |
75 | 
76 |
77 | 选择Add or create design sources, 点击Next.
78 |
79 | 
80 |
81 | 点击Create File, File type选择Verilog, 命名后点击OK.
82 |
83 | 
84 |
85 | 点击Finish.
86 |
87 | 
88 |
89 | 自动弹出引脚定义页面. 以半加法器为例, 拥有两个input(a, b)与两个output(sum, c_out). 点击OK.
90 |
91 | 
92 |
93 | 进入half_adder.v, 粘贴以下代码并保存(Ctrl+S):
94 |
95 | ```Verilog
96 | module Add_half (sum, c_out, a, b);
97 | input a, b;
98 | output sum, c_out;
99 | wire c_out_bar;
100 | xor (sum, a, b);
101 | nand (c_out_bar, a, b);
102 | not (c_out, c_out_bar);
103 | endmodule
104 | ```
105 |
106 | 
107 |
108 | ## 5. 准备运行
109 |
110 | 进入Diagram菜单(或点击half_adder.bd), 将half_adder.v拖入框中.
111 |
112 | 
113 |
114 | 右键一个引脚, 选择Create Port, 命名(建议命名为对应的外设名称)后点击OK. Ctrl+S保存.
115 |
116 | 
117 | 
118 | 
119 |
120 | 点击左边栏Run Synthesis, 以默认配置运行.
121 |
122 | 
123 | 
124 |
125 | 可在Design Run中监测进度. 等待一段时间.
126 |
127 | 
128 |
129 | 完成后弹出如下菜单, 选择Open Synthesis Design.
130 |
131 | 
132 |
133 | 进入I/O Ports菜单, 根据User Manual第20页所示的引脚定义配置. 此处以input为两个开关, output为单色LED为例.
134 | I/O Std参考约束文件13,14,27,28行
135 |
136 | ```Verilog
137 | #set_property -dict { PACKAGE_PIN M20 IOSTANDARD LVCMOS33 } [get_ports { sw[0] }]; #IO_L7N_T1_AD2N_35 Sch=sw[0]
138 | #set_property -dict { PACKAGE_PIN M19 IOSTANDARD LVCMOS33 } [get_ports { sw[1] }]; #IO_L7P_T1_AD2P_35 Sch=sw[1]
139 | ...
140 | #set_property -dict { PACKAGE_PIN R14 IOSTANDARD LVCMOS33 } [get_ports { led[0] }]; #IO_L6N_T0_VREF_34 Sch=led[0]
141 | #set_property -dict { PACKAGE_PIN P14 IOSTANDARD LVCMOS33 } [get_ports { led[1] }]; #IO_L6P_T0_34 Sch=led[1]
142 | ```
143 |
144 | 修改为LVCMOS33.
145 |
146 | 
147 | 
148 |
149 | Ctrl+S保存, 弹出警告页面, 选择OK即可. 保存约束文件页面选择保存到之前的约束文件, 点击OK.
150 |
151 | 
152 |
153 | 再次Run Synthesis, 完成后在弹出的页面选择Run Implementation, 默认配置, 点击OK. 完成后在弹出的页面选择Generate Bitstream, 默认配置. 完成后在弹出的页面选择Cancel.
154 |
155 | 
156 |
157 | ## 6. 运行
158 | 将PYNQ-Z2通过Micro-USB连接到电脑并开启电源. 开机后在Vivado左侧边栏选择Open Hardware Manager. 点击Open Target-Auto Connect, 连接开发板.
159 |
160 | 
161 |
162 | 点击左侧边栏Program Device, 选择XILINX芯片进行烧录. 默认配置. 点击Program.
163 |
164 | 
165 |
166 | 烧录完成后程序自动运行.
167 |
168 | ## 7. 保存至SD卡并运行
169 |
170 | 上一步中通过Vivado进行烧录的方法并不能在开发板中永久保存你的代码. 下面的方法可以永久保存代码并运行代码.
171 |
172 | **连接网络**
173 |
174 | 将网线插入开发板与电脑(可以使用USB转RJ45转接线连接)并开机. 开机后在电脑控制面板-网络和 Internet-网络连接, 右键网口所在的网络适配器, 选择属性.
175 |
176 | 
177 |
178 | 在IPv4中配置IP地址为192.168.2.x(x表示任选), 子网掩码为255.255.255.0, 点击确定.
179 |
180 | 
181 |
182 | 打开电脑浏览器, 地址栏输入192.168.2.99:9090, 进入jupyter notebooks. 默认密码为xilinx
183 |
184 | 
185 |
186 | 打开电脑文件资源管理器, 地址栏输入\\\pynq, 密码与用户名均为xilinx. 进入\xilinx\jupyter_notebooks并新建文件夹, 名称任意.
187 |
188 | 
189 |
190 | **导入Bitstream**
191 |
192 | 进入Tutorial.runs\impl_1, 将.bit文件拷贝至上一步新建的文件夹中.
193 |
194 | 
195 |
196 | 返回浏览器, 进入上一步新建的文件夹, 点击New-Python3, 复制下面的代码:
197 |
198 | ```Python
199 | from pynq import Bitstream
200 |
201 | bit = Bitstream("Add_half.bit") # No overlay Tcl file required
202 |
203 | bit.download()
204 |
205 | bit.bitfile_name
206 | ```
207 |
208 | 
209 |
210 | 其中Add_half.bit为你的Bitstream文件名. 保存, 点击运行, 等待开发板载入代码. 载入代码后jupyter notebooks进入不可用状态, 无法再进行控制. 若想停止代码运行并恢复jupyter notebooks, 点按开发板上的SRST并等待重启即可.
211 | 之后每次重新上电, 运行该notebook即可, 无需重新烧录代码.
212 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/Add_half_utilization_synth.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | -----------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:28:58 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_utilization -file Add_half_utilization_synth.rpt -pb Add_half_utilization_synth.pb
7 | | Design : Add_half
8 | | Device : xc7z020clg400-1
9 | | Speed File : -1
10 | | Design State : Synthesized
11 | -----------------------------------------------------------------------------------------------------------
12 |
13 | Utilization Design Information
14 |
15 | Table of Contents
16 | -----------------
17 | 1. Slice Logic
18 | 1.1 Summary of Registers by Type
19 | 2. Memory
20 | 3. DSP
21 | 4. IO and GT Specific
22 | 5. Clocking
23 | 6. Specific Feature
24 | 7. Primitives
25 | 8. Black Boxes
26 | 9. Instantiated Netlists
27 |
28 | 1. Slice Logic
29 | --------------
30 |
31 | +-------------------------+------+-------+------------+-----------+-------+
32 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
33 | +-------------------------+------+-------+------------+-----------+-------+
34 | | Slice LUTs* | 1 | 0 | 0 | 53200 | <0.01 |
35 | | LUT as Logic | 1 | 0 | 0 | 53200 | <0.01 |
36 | | LUT as Memory | 0 | 0 | 0 | 17400 | 0.00 |
37 | | Slice Registers | 0 | 0 | 0 | 106400 | 0.00 |
38 | | Register as Flip Flop | 0 | 0 | 0 | 106400 | 0.00 |
39 | | Register as Latch | 0 | 0 | 0 | 106400 | 0.00 |
40 | | F7 Muxes | 0 | 0 | 0 | 26600 | 0.00 |
41 | | F8 Muxes | 0 | 0 | 0 | 13300 | 0.00 |
42 | +-------------------------+------+-------+------------+-----------+-------+
43 | * Warning! The Final LUT count, after physical optimizations and full implementation, is typically lower. Run opt_design after synthesis, if not already completed, for a more realistic count.
44 | Warning! LUT value is adjusted to account for LUT combining.
45 |
46 |
47 | 1.1 Summary of Registers by Type
48 | --------------------------------
49 |
50 | +-------+--------------+-------------+--------------+
51 | | Total | Clock Enable | Synchronous | Asynchronous |
52 | +-------+--------------+-------------+--------------+
53 | | 0 | _ | - | - |
54 | | 0 | _ | - | Set |
55 | | 0 | _ | - | Reset |
56 | | 0 | _ | Set | - |
57 | | 0 | _ | Reset | - |
58 | | 0 | Yes | - | - |
59 | | 0 | Yes | - | Set |
60 | | 0 | Yes | - | Reset |
61 | | 0 | Yes | Set | - |
62 | | 0 | Yes | Reset | - |
63 | +-------+--------------+-------------+--------------+
64 |
65 |
66 | 2. Memory
67 | ---------
68 |
69 | +----------------+------+-------+------------+-----------+-------+
70 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
71 | +----------------+------+-------+------------+-----------+-------+
72 | | Block RAM Tile | 0 | 0 | 0 | 140 | 0.00 |
73 | | RAMB36/FIFO* | 0 | 0 | 0 | 140 | 0.00 |
74 | | RAMB18 | 0 | 0 | 0 | 280 | 0.00 |
75 | +----------------+------+-------+------------+-----------+-------+
76 | * Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1
77 |
78 |
79 | 3. DSP
80 | ------
81 |
82 | +-----------+------+-------+------------+-----------+-------+
83 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
84 | +-----------+------+-------+------------+-----------+-------+
85 | | DSPs | 0 | 0 | 0 | 220 | 0.00 |
86 | +-----------+------+-------+------------+-----------+-------+
87 |
88 |
89 | 4. IO and GT Specific
90 | ---------------------
91 |
92 | +-----------------------------+------+-------+------------+-----------+-------+
93 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
94 | +-----------------------------+------+-------+------------+-----------+-------+
95 | | Bonded IOB | 4 | 0 | 0 | 125 | 3.20 |
96 | | Bonded IPADs | 0 | 0 | 0 | 2 | 0.00 |
97 | | Bonded IOPADs | 0 | 0 | 0 | 130 | 0.00 |
98 | | PHY_CONTROL | 0 | 0 | 0 | 4 | 0.00 |
99 | | PHASER_REF | 0 | 0 | 0 | 4 | 0.00 |
100 | | OUT_FIFO | 0 | 0 | 0 | 16 | 0.00 |
101 | | IN_FIFO | 0 | 0 | 0 | 16 | 0.00 |
102 | | IDELAYCTRL | 0 | 0 | 0 | 4 | 0.00 |
103 | | IBUFDS | 0 | 0 | 0 | 121 | 0.00 |
104 | | PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 0 | 16 | 0.00 |
105 | | PHASER_IN/PHASER_IN_PHY | 0 | 0 | 0 | 16 | 0.00 |
106 | | IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 0 | 200 | 0.00 |
107 | | ILOGIC | 0 | 0 | 0 | 125 | 0.00 |
108 | | OLOGIC | 0 | 0 | 0 | 125 | 0.00 |
109 | +-----------------------------+------+-------+------------+-----------+-------+
110 |
111 |
112 | 5. Clocking
113 | -----------
114 |
115 | +------------+------+-------+------------+-----------+-------+
116 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
117 | +------------+------+-------+------------+-----------+-------+
118 | | BUFGCTRL | 0 | 0 | 0 | 32 | 0.00 |
119 | | BUFIO | 0 | 0 | 0 | 16 | 0.00 |
120 | | MMCME2_ADV | 0 | 0 | 0 | 4 | 0.00 |
121 | | PLLE2_ADV | 0 | 0 | 0 | 4 | 0.00 |
122 | | BUFMRCE | 0 | 0 | 0 | 8 | 0.00 |
123 | | BUFHCE | 0 | 0 | 0 | 72 | 0.00 |
124 | | BUFR | 0 | 0 | 0 | 16 | 0.00 |
125 | +------------+------+-------+------------+-----------+-------+
126 |
127 |
128 | 6. Specific Feature
129 | -------------------
130 |
131 | +-------------+------+-------+------------+-----------+-------+
132 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
133 | +-------------+------+-------+------------+-----------+-------+
134 | | BSCANE2 | 0 | 0 | 0 | 4 | 0.00 |
135 | | CAPTUREE2 | 0 | 0 | 0 | 1 | 0.00 |
136 | | DNA_PORT | 0 | 0 | 0 | 1 | 0.00 |
137 | | EFUSE_USR | 0 | 0 | 0 | 1 | 0.00 |
138 | | FRAME_ECCE2 | 0 | 0 | 0 | 1 | 0.00 |
139 | | ICAPE2 | 0 | 0 | 0 | 2 | 0.00 |
140 | | STARTUPE2 | 0 | 0 | 0 | 1 | 0.00 |
141 | | XADC | 0 | 0 | 0 | 1 | 0.00 |
142 | +-------------+------+-------+------------+-----------+-------+
143 |
144 |
145 | 7. Primitives
146 | -------------
147 |
148 | +----------+------+---------------------+
149 | | Ref Name | Used | Functional Category |
150 | +----------+------+---------------------+
151 | | OBUF | 2 | IO |
152 | | LUT2 | 2 | LUT |
153 | | IBUF | 2 | IO |
154 | +----------+------+---------------------+
155 |
156 |
157 | 8. Black Boxes
158 | --------------
159 |
160 | +----------+------+
161 | | Ref Name | Used |
162 | +----------+------+
163 |
164 |
165 | 9. Instantiated Netlists
166 | ------------------------
167 |
168 | +----------+------+
169 | | Ref Name | Used |
170 | +----------+------+
171 |
172 |
173 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/gen_run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_power_routed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | ----------------------------------------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:30:19 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_power -file Add_half_power_routed.rpt -pb Add_half_power_summary_routed.pb -rpx Add_half_power_routed.rpx
7 | | Design : Add_half
8 | | Device : xc7z020clg400-1
9 | | Design State : routed
10 | | Grade : commercial
11 | | Process : typical
12 | | Characterization : Production
13 | ----------------------------------------------------------------------------------------------------------------------------------------------
14 |
15 | Power Report
16 |
17 | Table of Contents
18 | -----------------
19 | 1. Summary
20 | 1.1 On-Chip Components
21 | 1.2 Power Supply Summary
22 | 1.3 Confidence Level
23 | 2. Settings
24 | 2.1 Environment
25 | 2.2 Clock Constraints
26 | 3. Detailed Reports
27 | 3.1 By Hierarchy
28 |
29 | 1. Summary
30 | ----------
31 |
32 | +--------------------------+--------------+
33 | | Total On-Chip Power (W) | 2.150 |
34 | | Design Power Budget (W) | Unspecified* |
35 | | Power Budget Margin (W) | NA |
36 | | Dynamic (W) | 2.000 |
37 | | Device Static (W) | 0.150 |
38 | | Effective TJA (C/W) | 11.5 |
39 | | Max Ambient (C) | 60.2 |
40 | | Junction Temperature (C) | 49.8 |
41 | | Confidence Level | Low |
42 | | Setting File | --- |
43 | | Simulation Activity File | --- |
44 | | Design Nets Matched | NA |
45 | +--------------------------+--------------+
46 | * Specify Design Power Budget using, set_operating_conditions -design_power_budget
47 |
48 |
49 | 1.1 On-Chip Components
50 | ----------------------
51 |
52 | +----------------+-----------+----------+-----------+-----------------+
53 | | On-Chip | Power (W) | Used | Available | Utilization (%) |
54 | +----------------+-----------+----------+-----------+-----------------+
55 | | Slice Logic | 0.005 | 2 | --- | --- |
56 | | LUT as Logic | 0.005 | 1 | 53200 | <0.01 |
57 | | Signals | 0.028 | 4 | --- | --- |
58 | | I/O | 1.966 | 4 | 125 | 3.20 |
59 | | Static Power | 0.150 | | | |
60 | | Total | 2.150 | | | |
61 | +----------------+-----------+----------+-----------+-----------------+
62 |
63 |
64 | 1.2 Power Supply Summary
65 | ------------------------
66 |
67 | +-----------+-------------+-----------+-------------+------------+-------------+-------------+------------+
68 | | Source | Voltage (V) | Total (A) | Dynamic (A) | Static (A) | Powerup (A) | Budget (A) | Margin (A) |
69 | +-----------+-------------+-----------+-------------+------------+-------------+-------------+------------+
70 | | Vccint | 1.000 | 0.060 | 0.041 | 0.018 | NA | Unspecified | NA |
71 | | Vccaux | 1.800 | 0.089 | 0.072 | 0.017 | NA | Unspecified | NA |
72 | | Vcco33 | 3.300 | 0.555 | 0.554 | 0.001 | NA | Unspecified | NA |
73 | | Vcco25 | 2.500 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
74 | | Vcco18 | 1.800 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
75 | | Vcco15 | 1.500 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
76 | | Vcco135 | 1.350 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
77 | | Vcco12 | 1.200 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
78 | | Vccaux_io | 1.800 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
79 | | Vccbram | 1.000 | 0.001 | 0.000 | 0.001 | NA | Unspecified | NA |
80 | | MGTAVcc | 1.000 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
81 | | MGTAVtt | 1.200 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
82 | | MGTVccaux | 1.800 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
83 | | Vccpint | 1.000 | 0.036 | 0.000 | 0.036 | NA | Unspecified | NA |
84 | | Vccpaux | 1.800 | 0.010 | 0.000 | 0.010 | NA | Unspecified | NA |
85 | | Vccpll | 1.800 | 0.003 | 0.000 | 0.003 | NA | Unspecified | NA |
86 | | Vcco_ddr | 1.500 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
87 | | Vcco_mio0 | 1.800 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
88 | | Vcco_mio1 | 1.800 | 0.000 | 0.000 | 0.000 | NA | Unspecified | NA |
89 | | Vccadc | 1.800 | 0.020 | 0.000 | 0.020 | NA | Unspecified | NA |
90 | +-----------+-------------+-----------+-------------+------------+-------------+-------------+------------+
91 |
92 |
93 | 1.3 Confidence Level
94 | --------------------
95 |
96 | +-----------------------------+------------+--------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
97 | | User Input Data | Confidence | Details | Action |
98 | +-----------------------------+------------+--------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
99 | | Design implementation state | High | Design is routed | |
100 | | Clock nodes activity | High | User specified more than 95% of clocks | |
101 | | I/O nodes activity | Low | More than 75% of inputs are missing user specification | Provide missing input activity with simulation results or by editing the "By Resource Type -> I/Os" view |
102 | | Internal nodes activity | Medium | User specified less than 25% of internal nodes | Provide missing internal nodes activity with simulation results or by editing the "By Resource Type" views |
103 | | Device models | High | Device models are Production | |
104 | | | | | |
105 | | Overall confidence level | Low | | |
106 | +-----------------------------+------------+--------------------------------------------------------+------------------------------------------------------------------------------------------------------------+
107 |
108 |
109 | 2. Settings
110 | -----------
111 |
112 | 2.1 Environment
113 | ---------------
114 |
115 | +-----------------------+------------------------+
116 | | Ambient Temp (C) | 25.0 |
117 | | ThetaJA (C/W) | 11.5 |
118 | | Airflow (LFM) | 250 |
119 | | Heat Sink | none |
120 | | ThetaSA (C/W) | 0.0 |
121 | | Board Selection | medium (10"x10") |
122 | | # of Board Layers | 8to11 (8 to 11 Layers) |
123 | | Board Temperature (C) | 25.0 |
124 | +-----------------------+------------------------+
125 |
126 |
127 | 2.2 Clock Constraints
128 | ---------------------
129 |
130 | +-------+--------+-----------------+
131 | | Clock | Domain | Constraint (ns) |
132 | +-------+--------+-----------------+
133 |
134 |
135 | 3. Detailed Reports
136 | -------------------
137 |
138 | 3.1 By Hierarchy
139 | ----------------
140 |
141 | +----------+-----------+
142 | | Name | Power (W) |
143 | +----------+-----------+
144 | | Add_half | 2.000 |
145 | +----------+-----------+
146 |
147 |
148 |
--------------------------------------------------------------------------------
/Document/PYNQ-Z2板卡文件/PYNQ-Z2 board file v1.0/A.0/part0_pins.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/ISEWrap.js:
--------------------------------------------------------------------------------
1 | //
2 | // Vivado(TM)
3 | // ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6
4 | // Copyright 1986-1999, 2001-2013,2015 Xilinx, Inc. All Rights Reserved.
5 | //
6 |
7 | // GLOBAL VARIABLES
8 | var ISEShell = new ActiveXObject( "WScript.Shell" );
9 | var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" );
10 | var ISERunDir = "";
11 | var ISELogFile = "runme.log";
12 | var ISELogFileStr = null;
13 | var ISELogEcho = true;
14 | var ISEOldVersionWSH = false;
15 |
16 |
17 |
18 | // BOOTSTRAP
19 | ISEInit();
20 |
21 |
22 |
23 | //
24 | // ISE FUNCTIONS
25 | //
26 | function ISEInit() {
27 |
28 | // 1. RUN DIR setup
29 | var ISEScrFP = WScript.ScriptFullName;
30 | var ISEScrN = WScript.ScriptName;
31 | ISERunDir =
32 | ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 );
33 |
34 | // 2. LOG file setup
35 | ISELogFileStr = ISEOpenFile( ISELogFile );
36 |
37 | // 3. LOG echo?
38 | var ISEScriptArgs = WScript.Arguments;
39 | for ( var loopi=0; loopi> " + ISELogFile + " 2>&1";
106 | ISEExitCode = ISEShell.Run( ISECmdLine, 0, true );
107 | ISELogFileStr = ISEOpenFile( ISELogFile );
108 |
109 | } else { // WSH 5.6
110 |
111 | // LAUNCH!
112 | ISEShell.CurrentDirectory = ISERunDir;
113 |
114 | // Redirect STDERR to STDOUT
115 | ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1";
116 | var ISEProcess = ISEShell.Exec( ISECmdLine );
117 |
118 | // BEGIN file creation
119 | var wbemFlagReturnImmediately = 0x10;
120 | var wbemFlagForwardOnly = 0x20;
121 | var objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate, (Systemtime)}!//./root/cimv2");
122 | var processor = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
123 | var computerSystem = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
124 | var NOC = 0;
125 | var NOLP = 0;
126 | var TPM = 0;
127 | var cpuInfos = new Enumerator(processor);
128 | for(;!cpuInfos.atEnd(); cpuInfos.moveNext()) {
129 | var cpuInfo = cpuInfos.item();
130 | NOC += cpuInfo.NumberOfCores;
131 | NOLP += cpuInfo.NumberOfLogicalProcessors;
132 | }
133 | var csInfos = new Enumerator(computerSystem);
134 | for(;!csInfos.atEnd(); csInfos.moveNext()) {
135 | var csInfo = csInfos.item();
136 | TPM += csInfo.TotalPhysicalMemory;
137 | }
138 |
139 | var ISEHOSTCORE = NOLP
140 | var ISEMEMTOTAL = TPM
141 |
142 | var ISENetwork = WScript.CreateObject( "WScript.Network" );
143 | var ISEHost = ISENetwork.ComputerName;
144 | var ISEUser = ISENetwork.UserName;
145 | var ISEPid = ISEProcess.ProcessID;
146 | var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" );
147 | ISEBeginFile.WriteLine( "" );
148 | ISEBeginFile.WriteLine( "" );
149 | ISEBeginFile.WriteLine( " " );
156 | ISEBeginFile.WriteLine( " " );
157 | ISEBeginFile.WriteLine( "" );
158 | ISEBeginFile.Close();
159 |
160 | var ISEOutStr = ISEProcess.StdOut;
161 | var ISEErrStr = ISEProcess.StdErr;
162 |
163 | // WAIT for ISEStep to finish
164 | while ( ISEProcess.Status == 0 ) {
165 |
166 | // dump stdout then stderr - feels a little arbitrary
167 | while ( !ISEOutStr.AtEndOfStream ) {
168 | ISEStdOut( ISEOutStr.ReadLine() );
169 | }
170 |
171 | WScript.Sleep( 100 );
172 | }
173 |
174 | ISEExitCode = ISEProcess.ExitCode;
175 | }
176 |
177 | ISELogFileStr.Close();
178 |
179 | // END/ERROR file creation
180 | if ( ISEExitCode != 0 ) {
181 | ISETouchFile( ISEStep, "error" );
182 |
183 | } else {
184 | ISETouchFile( ISEStep, "end" );
185 | }
186 |
187 | return ISEExitCode;
188 | }
189 |
190 |
191 | //
192 | // UTILITIES
193 | //
194 | function ISEStdOut( ISELine ) {
195 |
196 | ISELogFileStr.WriteLine( ISELine );
197 |
198 | if ( ISELogEcho ) {
199 | WScript.StdOut.WriteLine( ISELine );
200 | }
201 | }
202 |
203 | function ISEStdErr( ISELine ) {
204 |
205 | ISELogFileStr.WriteLine( ISELine );
206 |
207 | if ( ISELogEcho ) {
208 | WScript.StdErr.WriteLine( ISELine );
209 | }
210 | }
211 |
212 | function ISETouchFile( ISERoot, ISEStatus ) {
213 |
214 | var ISETFile =
215 | ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" );
216 | ISETFile.Close();
217 | }
218 |
219 | function ISEOpenFile( ISEFilename ) {
220 |
221 | // This function has been updated to deal with a problem seen in CR #870871.
222 | // In that case the user runs a script that runs impl_1, and then turns around
223 | // and runs impl_1 -to_step write_bitstream. That second run takes place in
224 | // the same directory, which means we may hit some of the same files, and in
225 | // particular, we will open the runme.log file. Even though this script closes
226 | // the file (now), we see cases where a subsequent attempt to open the file
227 | // fails. Perhaps the OS is slow to release the lock, or the disk comes into
228 | // play? In any case, we try to work around this by first waiting if the file
229 | // is already there for an arbitrary 5 seconds. Then we use a try-catch block
230 | // and try to open the file 10 times with a one second delay after each attempt.
231 | // Again, 10 is arbitrary. But these seem to stop the hang in CR #870871.
232 | // If there is an unrecognized exception when trying to open the file, we output
233 | // an error message and write details to an exception.log file.
234 | var ISEFullPath = ISERunDir + "/" + ISEFilename;
235 | if (ISEFileSys.FileExists(ISEFullPath)) {
236 | // File is already there. This could be a problem. Wait in case it is still in use.
237 | WScript.Sleep(5000);
238 | }
239 | var i;
240 | for (i = 0; i < 10; ++i) {
241 | try {
242 | return ISEFileSys.OpenTextFile(ISEFullPath, 8, true);
243 | } catch (exception) {
244 | var error_code = exception.number & 0xFFFF; // The other bits are a facility code.
245 | if (error_code == 52) { // 52 is bad file name or number.
246 | // Wait a second and try again.
247 | WScript.Sleep(1000);
248 | continue;
249 | } else {
250 | WScript.StdErr.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath);
251 | var exceptionFilePath = ISERunDir + "/exception.log";
252 | if (!ISEFileSys.FileExists(exceptionFilePath)) {
253 | WScript.StdErr.WriteLine("See file " + exceptionFilePath + " for details.");
254 | var exceptionFile = ISEFileSys.OpenTextFile(exceptionFilePath, 8, true);
255 | exceptionFile.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath);
256 | exceptionFile.WriteLine("\tException name: " + exception.name);
257 | exceptionFile.WriteLine("\tException error code: " + error_code);
258 | exceptionFile.WriteLine("\tException message: " + exception.message);
259 | exceptionFile.Close();
260 | }
261 | throw exception;
262 | }
263 | }
264 | }
265 | // If we reached this point, we failed to open the file after 10 attempts.
266 | // We need to error out.
267 | WScript.StdErr.WriteLine("ERROR: Failed to open file " + ISEFullPath);
268 | WScript.Quit(1);
269 | }
270 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/synth_1/ISEWrap.js:
--------------------------------------------------------------------------------
1 | //
2 | // Vivado(TM)
3 | // ISEWrap.js: Vivado Runs Script for WSH 5.1/5.6
4 | // Copyright 1986-1999, 2001-2013,2015 Xilinx, Inc. All Rights Reserved.
5 | //
6 |
7 | // GLOBAL VARIABLES
8 | var ISEShell = new ActiveXObject( "WScript.Shell" );
9 | var ISEFileSys = new ActiveXObject( "Scripting.FileSystemObject" );
10 | var ISERunDir = "";
11 | var ISELogFile = "runme.log";
12 | var ISELogFileStr = null;
13 | var ISELogEcho = true;
14 | var ISEOldVersionWSH = false;
15 |
16 |
17 |
18 | // BOOTSTRAP
19 | ISEInit();
20 |
21 |
22 |
23 | //
24 | // ISE FUNCTIONS
25 | //
26 | function ISEInit() {
27 |
28 | // 1. RUN DIR setup
29 | var ISEScrFP = WScript.ScriptFullName;
30 | var ISEScrN = WScript.ScriptName;
31 | ISERunDir =
32 | ISEScrFP.substr( 0, ISEScrFP.length - ISEScrN.length - 1 );
33 |
34 | // 2. LOG file setup
35 | ISELogFileStr = ISEOpenFile( ISELogFile );
36 |
37 | // 3. LOG echo?
38 | var ISEScriptArgs = WScript.Arguments;
39 | for ( var loopi=0; loopi> " + ISELogFile + " 2>&1";
106 | ISEExitCode = ISEShell.Run( ISECmdLine, 0, true );
107 | ISELogFileStr = ISEOpenFile( ISELogFile );
108 |
109 | } else { // WSH 5.6
110 |
111 | // LAUNCH!
112 | ISEShell.CurrentDirectory = ISERunDir;
113 |
114 | // Redirect STDERR to STDOUT
115 | ISECmdLine = "%comspec% /c " + ISECmdLine + " 2>&1";
116 | var ISEProcess = ISEShell.Exec( ISECmdLine );
117 |
118 | // BEGIN file creation
119 | var wbemFlagReturnImmediately = 0x10;
120 | var wbemFlagForwardOnly = 0x20;
121 | var objWMIService = GetObject ("winmgmts:{impersonationLevel=impersonate, (Systemtime)}!//./root/cimv2");
122 | var processor = objWMIService.ExecQuery("SELECT * FROM Win32_Processor", "WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
123 | var computerSystem = objWMIService.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", wbemFlagReturnImmediately | wbemFlagForwardOnly);
124 | var NOC = 0;
125 | var NOLP = 0;
126 | var TPM = 0;
127 | var cpuInfos = new Enumerator(processor);
128 | for(;!cpuInfos.atEnd(); cpuInfos.moveNext()) {
129 | var cpuInfo = cpuInfos.item();
130 | NOC += cpuInfo.NumberOfCores;
131 | NOLP += cpuInfo.NumberOfLogicalProcessors;
132 | }
133 | var csInfos = new Enumerator(computerSystem);
134 | for(;!csInfos.atEnd(); csInfos.moveNext()) {
135 | var csInfo = csInfos.item();
136 | TPM += csInfo.TotalPhysicalMemory;
137 | }
138 |
139 | var ISEHOSTCORE = NOLP
140 | var ISEMEMTOTAL = TPM
141 |
142 | var ISENetwork = WScript.CreateObject( "WScript.Network" );
143 | var ISEHost = ISENetwork.ComputerName;
144 | var ISEUser = ISENetwork.UserName;
145 | var ISEPid = ISEProcess.ProcessID;
146 | var ISEBeginFile = ISEOpenFile( "." + ISEStep + ".begin.rst" );
147 | ISEBeginFile.WriteLine( "" );
148 | ISEBeginFile.WriteLine( "" );
149 | ISEBeginFile.WriteLine( " " );
156 | ISEBeginFile.WriteLine( " " );
157 | ISEBeginFile.WriteLine( "" );
158 | ISEBeginFile.Close();
159 |
160 | var ISEOutStr = ISEProcess.StdOut;
161 | var ISEErrStr = ISEProcess.StdErr;
162 |
163 | // WAIT for ISEStep to finish
164 | while ( ISEProcess.Status == 0 ) {
165 |
166 | // dump stdout then stderr - feels a little arbitrary
167 | while ( !ISEOutStr.AtEndOfStream ) {
168 | ISEStdOut( ISEOutStr.ReadLine() );
169 | }
170 |
171 | WScript.Sleep( 100 );
172 | }
173 |
174 | ISEExitCode = ISEProcess.ExitCode;
175 | }
176 |
177 | ISELogFileStr.Close();
178 |
179 | // END/ERROR file creation
180 | if ( ISEExitCode != 0 ) {
181 | ISETouchFile( ISEStep, "error" );
182 |
183 | } else {
184 | ISETouchFile( ISEStep, "end" );
185 | }
186 |
187 | return ISEExitCode;
188 | }
189 |
190 |
191 | //
192 | // UTILITIES
193 | //
194 | function ISEStdOut( ISELine ) {
195 |
196 | ISELogFileStr.WriteLine( ISELine );
197 |
198 | if ( ISELogEcho ) {
199 | WScript.StdOut.WriteLine( ISELine );
200 | }
201 | }
202 |
203 | function ISEStdErr( ISELine ) {
204 |
205 | ISELogFileStr.WriteLine( ISELine );
206 |
207 | if ( ISELogEcho ) {
208 | WScript.StdErr.WriteLine( ISELine );
209 | }
210 | }
211 |
212 | function ISETouchFile( ISERoot, ISEStatus ) {
213 |
214 | var ISETFile =
215 | ISEOpenFile( "." + ISERoot + "." + ISEStatus + ".rst" );
216 | ISETFile.Close();
217 | }
218 |
219 | function ISEOpenFile( ISEFilename ) {
220 |
221 | // This function has been updated to deal with a problem seen in CR #870871.
222 | // In that case the user runs a script that runs impl_1, and then turns around
223 | // and runs impl_1 -to_step write_bitstream. That second run takes place in
224 | // the same directory, which means we may hit some of the same files, and in
225 | // particular, we will open the runme.log file. Even though this script closes
226 | // the file (now), we see cases where a subsequent attempt to open the file
227 | // fails. Perhaps the OS is slow to release the lock, or the disk comes into
228 | // play? In any case, we try to work around this by first waiting if the file
229 | // is already there for an arbitrary 5 seconds. Then we use a try-catch block
230 | // and try to open the file 10 times with a one second delay after each attempt.
231 | // Again, 10 is arbitrary. But these seem to stop the hang in CR #870871.
232 | // If there is an unrecognized exception when trying to open the file, we output
233 | // an error message and write details to an exception.log file.
234 | var ISEFullPath = ISERunDir + "/" + ISEFilename;
235 | if (ISEFileSys.FileExists(ISEFullPath)) {
236 | // File is already there. This could be a problem. Wait in case it is still in use.
237 | WScript.Sleep(5000);
238 | }
239 | var i;
240 | for (i = 0; i < 10; ++i) {
241 | try {
242 | return ISEFileSys.OpenTextFile(ISEFullPath, 8, true);
243 | } catch (exception) {
244 | var error_code = exception.number & 0xFFFF; // The other bits are a facility code.
245 | if (error_code == 52) { // 52 is bad file name or number.
246 | // Wait a second and try again.
247 | WScript.Sleep(1000);
248 | continue;
249 | } else {
250 | WScript.StdErr.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath);
251 | var exceptionFilePath = ISERunDir + "/exception.log";
252 | if (!ISEFileSys.FileExists(exceptionFilePath)) {
253 | WScript.StdErr.WriteLine("See file " + exceptionFilePath + " for details.");
254 | var exceptionFile = ISEFileSys.OpenTextFile(exceptionFilePath, 8, true);
255 | exceptionFile.WriteLine("ERROR: Exception caught trying to open file " + ISEFullPath);
256 | exceptionFile.WriteLine("\tException name: " + exception.name);
257 | exceptionFile.WriteLine("\tException error code: " + error_code);
258 | exceptionFile.WriteLine("\tException message: " + exception.message);
259 | exceptionFile.Close();
260 | }
261 | throw exception;
262 | }
263 | }
264 | }
265 | // If we reached this point, we failed to open the file after 10 attempts.
266 | // We need to error out.
267 | WScript.StdErr.WriteLine("ERROR: Failed to open file " + ISEFullPath);
268 | WScript.Quit(1);
269 | }
270 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_utilization_placed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | -------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:29:50 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_utilization -file Add_half_utilization_placed.rpt -pb Add_half_utilization_placed.pb
7 | | Design : Add_half
8 | | Device : xc7z020clg400-1
9 | | Speed File : -1
10 | | Design State : Fully Placed
11 | -------------------------------------------------------------------------------------------------------------
12 |
13 | Utilization Design Information
14 |
15 | Table of Contents
16 | -----------------
17 | 1. Slice Logic
18 | 1.1 Summary of Registers by Type
19 | 2. Slice Logic Distribution
20 | 3. Memory
21 | 4. DSP
22 | 5. IO and GT Specific
23 | 6. Clocking
24 | 7. Specific Feature
25 | 8. Primitives
26 | 9. Black Boxes
27 | 10. Instantiated Netlists
28 |
29 | 1. Slice Logic
30 | --------------
31 |
32 | +-------------------------+------+-------+------------+-----------+-------+
33 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
34 | +-------------------------+------+-------+------------+-----------+-------+
35 | | Slice LUTs | 1 | 0 | 0 | 53200 | <0.01 |
36 | | LUT as Logic | 1 | 0 | 0 | 53200 | <0.01 |
37 | | LUT as Memory | 0 | 0 | 0 | 17400 | 0.00 |
38 | | Slice Registers | 0 | 0 | 0 | 106400 | 0.00 |
39 | | Register as Flip Flop | 0 | 0 | 0 | 106400 | 0.00 |
40 | | Register as Latch | 0 | 0 | 0 | 106400 | 0.00 |
41 | | F7 Muxes | 0 | 0 | 0 | 26600 | 0.00 |
42 | | F8 Muxes | 0 | 0 | 0 | 13300 | 0.00 |
43 | +-------------------------+------+-------+------------+-----------+-------+
44 | * Warning! LUT value is adjusted to account for LUT combining.
45 |
46 |
47 | 1.1 Summary of Registers by Type
48 | --------------------------------
49 |
50 | +-------+--------------+-------------+--------------+
51 | | Total | Clock Enable | Synchronous | Asynchronous |
52 | +-------+--------------+-------------+--------------+
53 | | 0 | _ | - | - |
54 | | 0 | _ | - | Set |
55 | | 0 | _ | - | Reset |
56 | | 0 | _ | Set | - |
57 | | 0 | _ | Reset | - |
58 | | 0 | Yes | - | - |
59 | | 0 | Yes | - | Set |
60 | | 0 | Yes | - | Reset |
61 | | 0 | Yes | Set | - |
62 | | 0 | Yes | Reset | - |
63 | +-------+--------------+-------------+--------------+
64 |
65 |
66 | 2. Slice Logic Distribution
67 | ---------------------------
68 |
69 | +------------------------------------------+------+-------+------------+-----------+-------+
70 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
71 | +------------------------------------------+------+-------+------------+-----------+-------+
72 | | Slice | 1 | 0 | 0 | 13300 | <0.01 |
73 | | SLICEL | 1 | 0 | | | |
74 | | SLICEM | 0 | 0 | | | |
75 | | LUT as Logic | 1 | 0 | 0 | 53200 | <0.01 |
76 | | using O5 output only | 0 | | | | |
77 | | using O6 output only | 0 | | | | |
78 | | using O5 and O6 | 1 | | | | |
79 | | LUT as Memory | 0 | 0 | 0 | 17400 | 0.00 |
80 | | LUT as Distributed RAM | 0 | 0 | | | |
81 | | LUT as Shift Register | 0 | 0 | | | |
82 | | Slice Registers | 0 | 0 | 0 | 106400 | 0.00 |
83 | | Register driven from within the Slice | 0 | | | | |
84 | | Register driven from outside the Slice | 0 | | | | |
85 | | Unique Control Sets | 0 | | 0 | 13300 | 0.00 |
86 | +------------------------------------------+------+-------+------------+-----------+-------+
87 | * * Note: Available Control Sets calculated as Slice * 1, Review the Control Sets Report for more information regarding control sets.
88 |
89 |
90 | 3. Memory
91 | ---------
92 |
93 | +----------------+------+-------+------------+-----------+-------+
94 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
95 | +----------------+------+-------+------------+-----------+-------+
96 | | Block RAM Tile | 0 | 0 | 0 | 140 | 0.00 |
97 | | RAMB36/FIFO* | 0 | 0 | 0 | 140 | 0.00 |
98 | | RAMB18 | 0 | 0 | 0 | 280 | 0.00 |
99 | +----------------+------+-------+------------+-----------+-------+
100 | * Note: Each Block RAM Tile only has one FIFO logic available and therefore can accommodate only one FIFO36E1 or one FIFO18E1. However, if a FIFO18E1 occupies a Block RAM Tile, that tile can still accommodate a RAMB18E1
101 |
102 |
103 | 4. DSP
104 | ------
105 |
106 | +-----------+------+-------+------------+-----------+-------+
107 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
108 | +-----------+------+-------+------------+-----------+-------+
109 | | DSPs | 0 | 0 | 0 | 220 | 0.00 |
110 | +-----------+------+-------+------------+-----------+-------+
111 |
112 |
113 | 5. IO and GT Specific
114 | ---------------------
115 |
116 | +-----------------------------+------+-------+------------+-----------+-------+
117 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
118 | +-----------------------------+------+-------+------------+-----------+-------+
119 | | Bonded IOB | 4 | 4 | 0 | 125 | 3.20 |
120 | | IOB Master Pads | 2 | | | | |
121 | | IOB Slave Pads | 2 | | | | |
122 | | Bonded IPADs | 0 | 0 | 0 | 2 | 0.00 |
123 | | Bonded IOPADs | 0 | 0 | 0 | 130 | 0.00 |
124 | | PHY_CONTROL | 0 | 0 | 0 | 4 | 0.00 |
125 | | PHASER_REF | 0 | 0 | 0 | 4 | 0.00 |
126 | | OUT_FIFO | 0 | 0 | 0 | 16 | 0.00 |
127 | | IN_FIFO | 0 | 0 | 0 | 16 | 0.00 |
128 | | IDELAYCTRL | 0 | 0 | 0 | 4 | 0.00 |
129 | | IBUFDS | 0 | 0 | 0 | 121 | 0.00 |
130 | | PHASER_OUT/PHASER_OUT_PHY | 0 | 0 | 0 | 16 | 0.00 |
131 | | PHASER_IN/PHASER_IN_PHY | 0 | 0 | 0 | 16 | 0.00 |
132 | | IDELAYE2/IDELAYE2_FINEDELAY | 0 | 0 | 0 | 200 | 0.00 |
133 | | ILOGIC | 0 | 0 | 0 | 125 | 0.00 |
134 | | OLOGIC | 0 | 0 | 0 | 125 | 0.00 |
135 | +-----------------------------+------+-------+------------+-----------+-------+
136 |
137 |
138 | 6. Clocking
139 | -----------
140 |
141 | +------------+------+-------+------------+-----------+-------+
142 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
143 | +------------+------+-------+------------+-----------+-------+
144 | | BUFGCTRL | 0 | 0 | 0 | 32 | 0.00 |
145 | | BUFIO | 0 | 0 | 0 | 16 | 0.00 |
146 | | MMCME2_ADV | 0 | 0 | 0 | 4 | 0.00 |
147 | | PLLE2_ADV | 0 | 0 | 0 | 4 | 0.00 |
148 | | BUFMRCE | 0 | 0 | 0 | 8 | 0.00 |
149 | | BUFHCE | 0 | 0 | 0 | 72 | 0.00 |
150 | | BUFR | 0 | 0 | 0 | 16 | 0.00 |
151 | +------------+------+-------+------------+-----------+-------+
152 |
153 |
154 | 7. Specific Feature
155 | -------------------
156 |
157 | +-------------+------+-------+------------+-----------+-------+
158 | | Site Type | Used | Fixed | Prohibited | Available | Util% |
159 | +-------------+------+-------+------------+-----------+-------+
160 | | BSCANE2 | 0 | 0 | 0 | 4 | 0.00 |
161 | | CAPTUREE2 | 0 | 0 | 0 | 1 | 0.00 |
162 | | DNA_PORT | 0 | 0 | 0 | 1 | 0.00 |
163 | | EFUSE_USR | 0 | 0 | 0 | 1 | 0.00 |
164 | | FRAME_ECCE2 | 0 | 0 | 0 | 1 | 0.00 |
165 | | ICAPE2 | 0 | 0 | 0 | 2 | 0.00 |
166 | | STARTUPE2 | 0 | 0 | 0 | 1 | 0.00 |
167 | | XADC | 0 | 0 | 0 | 1 | 0.00 |
168 | +-------------+------+-------+------------+-----------+-------+
169 |
170 |
171 | 8. Primitives
172 | -------------
173 |
174 | +----------+------+---------------------+
175 | | Ref Name | Used | Functional Category |
176 | +----------+------+---------------------+
177 | | OBUF | 2 | IO |
178 | | LUT2 | 2 | LUT |
179 | | IBUF | 2 | IO |
180 | +----------+------+---------------------+
181 |
182 |
183 | 9. Black Boxes
184 | --------------
185 |
186 | +----------+------+
187 | | Ref Name | Used |
188 | +----------+------+
189 |
190 |
191 | 10. Instantiated Netlists
192 | -------------------------
193 |
194 | +----------+------+
195 | | Ref Name | Used |
196 | +----------+------+
197 |
198 |
199 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.xpr:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 | default_dashboard
242 |
243 |
244 |
245 |
--------------------------------------------------------------------------------
/Tutorial/Tutorial.runs/impl_1/Add_half_timing_summary_routed.rpt:
--------------------------------------------------------------------------------
1 | Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
2 | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3 | | Tool Version : Vivado v.2022.2 (win64) Build 3671981 Fri Oct 14 05:00:03 MDT 2022
4 | | Date : Sat Feb 18 00:30:19 2023
5 | | Host : Albert-G14 running 64-bit major release (build 9200)
6 | | Command : report_timing_summary -max_paths 10 -report_unconstrained -file Add_half_timing_summary_routed.rpt -pb Add_half_timing_summary_routed.pb -rpx Add_half_timing_summary_routed.rpx -warn_on_violation
7 | | Design : Add_half
8 | | Device : 7z020-clg400
9 | | Speed File : -1 PRODUCTION 1.12 2019-11-22
10 | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11 |
12 | Timing Summary Report
13 |
14 | ------------------------------------------------------------------------------------------------
15 | | Timer Settings
16 | | --------------
17 | ------------------------------------------------------------------------------------------------
18 |
19 | Enable Multi Corner Analysis : Yes
20 | Enable Pessimism Removal : Yes
21 | Pessimism Removal Resolution : Nearest Common Node
22 | Enable Input Delay Default Clock : No
23 | Enable Preset / Clear Arcs : No
24 | Disable Flight Delays : No
25 | Ignore I/O Paths : No
26 | Timing Early Launch at Borrowing Latches : No
27 | Borrow Time for Max Delay Exceptions : Yes
28 | Merge Timing Exceptions : Yes
29 |
30 | Corner Analyze Analyze
31 | Name Max Paths Min Paths
32 | ------ --------- ---------
33 | Slow Yes Yes
34 | Fast Yes Yes
35 |
36 |
37 | ------------------------------------------------------------------------------------------------
38 | | Report Methodology
39 | | ------------------
40 | ------------------------------------------------------------------------------------------------
41 |
42 | No report available as report_methodology has not been run prior. Run report_methodology on the current design for the summary of methodology violations.
43 |
44 |
45 |
46 | check_timing report
47 |
48 | Table of Contents
49 | -----------------
50 | 1. checking no_clock (0)
51 | 2. checking constant_clock (0)
52 | 3. checking pulse_width_clock (0)
53 | 4. checking unconstrained_internal_endpoints (0)
54 | 5. checking no_input_delay (0)
55 | 6. checking no_output_delay (0)
56 | 7. checking multiple_clock (0)
57 | 8. checking generated_clocks (0)
58 | 9. checking loops (0)
59 | 10. checking partial_input_delay (0)
60 | 11. checking partial_output_delay (0)
61 | 12. checking latch_loops (0)
62 |
63 | 1. checking no_clock (0)
64 | ------------------------
65 | There are 0 register/latch pins with no clock.
66 |
67 |
68 | 2. checking constant_clock (0)
69 | ------------------------------
70 | There are 0 register/latch pins with constant_clock.
71 |
72 |
73 | 3. checking pulse_width_clock (0)
74 | ---------------------------------
75 | There are 0 register/latch pins which need pulse_width check
76 |
77 |
78 | 4. checking unconstrained_internal_endpoints (0)
79 | ------------------------------------------------
80 | There are 0 pins that are not constrained for maximum delay.
81 |
82 | There are 0 pins that are not constrained for maximum delay due to constant clock.
83 |
84 |
85 | 5. checking no_input_delay (0)
86 | ------------------------------
87 | There are 0 input ports with no input delay specified.
88 |
89 | There are 0 input ports with no input delay but user has a false path constraint.
90 |
91 |
92 | 6. checking no_output_delay (0)
93 | -------------------------------
94 | There are 0 ports with no output delay specified.
95 |
96 | There are 0 ports with no output delay but user has a false path constraint
97 |
98 | There are 0 ports with no output delay but with a timing clock defined on it or propagating through it
99 |
100 |
101 | 7. checking multiple_clock (0)
102 | ------------------------------
103 | There are 0 register/latch pins with multiple clocks.
104 |
105 |
106 | 8. checking generated_clocks (0)
107 | --------------------------------
108 | There are 0 generated clocks that are not connected to a clock source.
109 |
110 |
111 | 9. checking loops (0)
112 | ---------------------
113 | There are 0 combinational loops in the design.
114 |
115 |
116 | 10. checking partial_input_delay (0)
117 | ------------------------------------
118 | There are 0 input ports with partial input delay specified.
119 |
120 |
121 | 11. checking partial_output_delay (0)
122 | -------------------------------------
123 | There are 0 ports with partial output delay specified.
124 |
125 |
126 | 12. checking latch_loops (0)
127 | ----------------------------
128 | There are 0 combinational latch loops in the design through latch input
129 |
130 |
131 |
132 | ------------------------------------------------------------------------------------------------
133 | | Design Timing Summary
134 | | ---------------------
135 | ------------------------------------------------------------------------------------------------
136 |
137 | WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints WPWS(ns) TPWS(ns) TPWS Failing Endpoints TPWS Total Endpoints
138 | ------- ------- --------------------- ------------------- ------- ------- --------------------- ------------------- -------- -------- ---------------------- --------------------
139 | inf 0.000 0 2 inf 0.000 0 2 NA NA NA NA
140 |
141 |
142 | There are no user specified timing constraints.
143 |
144 |
145 | ------------------------------------------------------------------------------------------------
146 | | Clock Summary
147 | | -------------
148 | ------------------------------------------------------------------------------------------------
149 |
150 |
151 | ------------------------------------------------------------------------------------------------
152 | | Intra Clock Table
153 | | -----------------
154 | ------------------------------------------------------------------------------------------------
155 |
156 | Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints WPWS(ns) TPWS(ns) TPWS Failing Endpoints TPWS Total Endpoints
157 | ----- ------- ------- --------------------- ------------------- ------- ------- --------------------- ------------------- -------- -------- ---------------------- --------------------
158 |
159 |
160 | ------------------------------------------------------------------------------------------------
161 | | Inter Clock Table
162 | | -----------------
163 | ------------------------------------------------------------------------------------------------
164 |
165 | From Clock To Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints
166 | ---------- -------- ------- ------- --------------------- ------------------- ------- ------- --------------------- -------------------
167 |
168 |
169 | ------------------------------------------------------------------------------------------------
170 | | Other Path Groups Table
171 | | -----------------------
172 | ------------------------------------------------------------------------------------------------
173 |
174 | Path Group From Clock To Clock WNS(ns) TNS(ns) TNS Failing Endpoints TNS Total Endpoints WHS(ns) THS(ns) THS Failing Endpoints THS Total Endpoints
175 | ---------- ---------- -------- ------- ------- --------------------- ------------------- ------- ------- --------------------- -------------------
176 |
177 |
178 | ------------------------------------------------------------------------------------------------
179 | | User Ignored Path Table
180 | | -----------------------
181 | ------------------------------------------------------------------------------------------------
182 |
183 | Path Group From Clock To Clock
184 | ---------- ---------- --------
185 |
186 |
187 | ------------------------------------------------------------------------------------------------
188 | | Unconstrained Path Table
189 | | ------------------------
190 | ------------------------------------------------------------------------------------------------
191 |
192 | Path Group From Clock To Clock
193 | ---------- ---------- --------
194 | (none)
195 |
196 |
197 | ------------------------------------------------------------------------------------------------
198 | | Timing Details
199 | | --------------
200 | ------------------------------------------------------------------------------------------------
201 |
202 |
203 | --------------------------------------------------------------------------------------
204 | Path Group: (none)
205 | From Clock:
206 | To Clock:
207 |
208 | Max Delay 2 Endpoints
209 | Min Delay 2 Endpoints
210 | --------------------------------------------------------------------------------------
211 |
212 |
213 | Max Delay Paths
214 | --------------------------------------------------------------------------------------
215 | Slack: inf
216 | Source: a
217 | (input port)
218 | Destination: c_out
219 | (output port)
220 | Path Group: (none)
221 | Path Type: Max at Slow Process Corner
222 | Data Path Delay: 10.146ns (logic 5.444ns (53.656%) route 4.702ns (46.344%))
223 | Logic Levels: 3 (IBUF=1 LUT2=1 OBUF=1)
224 |
225 | Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
226 | ------------------------------------------------------------------- -------------------
227 | M19 0.000 0.000 r a (IN)
228 | net (fo=0) 0.000 0.000 a
229 | M19 IBUF (Prop_ibuf_I_O) 1.533 1.533 r a_IBUF_inst/O
230 | net (fo=2, routed) 1.366 2.898 a_IBUF
231 | SLICE_X113Y135 LUT2 (Prop_lut2_I0_O) 0.152 3.050 r c_out_OBUF_inst_i_1/O
232 | net (fo=1, routed) 3.336 6.387 c_out_OBUF
233 | P14 OBUF (Prop_obuf_I_O) 3.759 10.146 r c_out_OBUF_inst/O
234 | net (fo=0) 0.000 10.146 c_out
235 | P14 r c_out (OUT)
236 | ------------------------------------------------------------------- -------------------
237 |
238 | Slack: inf
239 | Source: a
240 | (input port)
241 | Destination: sum
242 | (output port)
243 | Path Group: (none)
244 | Path Type: Max at Slow Process Corner
245 | Data Path Delay: 9.886ns (logic 5.186ns (52.462%) route 4.700ns (47.538%))
246 | Logic Levels: 3 (IBUF=1 LUT2=1 OBUF=1)
247 |
248 | Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
249 | ------------------------------------------------------------------- -------------------
250 | M19 0.000 0.000 r a (IN)
251 | net (fo=0) 0.000 0.000 a
252 | M19 IBUF (Prop_ibuf_I_O) 1.533 1.533 r a_IBUF_inst/O
253 | net (fo=2, routed) 1.366 2.898 a_IBUF
254 | SLICE_X113Y135 LUT2 (Prop_lut2_I1_O) 0.124 3.022 r sum_OBUF_inst_i_1/O
255 | net (fo=1, routed) 3.334 6.356 sum_OBUF
256 | R14 OBUF (Prop_obuf_I_O) 3.530 9.886 r sum_OBUF_inst/O
257 | net (fo=0) 0.000 9.886 sum
258 | R14 r sum (OUT)
259 | ------------------------------------------------------------------- -------------------
260 |
261 |
262 |
263 |
264 |
265 | Min Delay Paths
266 | --------------------------------------------------------------------------------------
267 | Slack: inf
268 | Source: b
269 | (input port)
270 | Destination: sum
271 | (output port)
272 | Path Group: (none)
273 | Path Type: Min at Fast Process Corner
274 | Data Path Delay: 3.009ns (logic 1.585ns (52.679%) route 1.424ns (47.321%))
275 | Logic Levels: 3 (IBUF=1 LUT2=1 OBUF=1)
276 |
277 | Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
278 | ------------------------------------------------------------------- -------------------
279 | M20 0.000 0.000 r b (IN)
280 | net (fo=0) 0.000 0.000 b
281 | M20 IBUF (Prop_ibuf_I_O) 0.309 0.309 r b_IBUF_inst/O
282 | net (fo=2, routed) 0.375 0.684 b_IBUF
283 | SLICE_X113Y135 LUT2 (Prop_lut2_I0_O) 0.045 0.729 r sum_OBUF_inst_i_1/O
284 | net (fo=1, routed) 1.049 1.778 sum_OBUF
285 | R14 OBUF (Prop_obuf_I_O) 1.231 3.009 r sum_OBUF_inst/O
286 | net (fo=0) 0.000 3.009 sum
287 | R14 r sum (OUT)
288 | ------------------------------------------------------------------- -------------------
289 |
290 | Slack: inf
291 | Source: b
292 | (input port)
293 | Destination: c_out
294 | (output port)
295 | Path Group: (none)
296 | Path Type: Min at Fast Process Corner
297 | Data Path Delay: 3.111ns (logic 1.675ns (53.858%) route 1.435ns (46.142%))
298 | Logic Levels: 3 (IBUF=1 LUT2=1 OBUF=1)
299 |
300 | Location Delay type Incr(ns) Path(ns) Netlist Resource(s)
301 | ------------------------------------------------------------------- -------------------
302 | M20 0.000 0.000 r b (IN)
303 | net (fo=0) 0.000 0.000 b
304 | M20 IBUF (Prop_ibuf_I_O) 0.309 0.309 r b_IBUF_inst/O
305 | net (fo=2, routed) 0.375 0.684 b_IBUF
306 | SLICE_X113Y135 LUT2 (Prop_lut2_I1_O) 0.046 0.730 r c_out_OBUF_inst_i_1/O
307 | net (fo=1, routed) 1.060 1.791 c_out_OBUF
308 | P14 OBUF (Prop_obuf_I_O) 1.320 3.111 r c_out_OBUF_inst/O
309 | net (fo=0) 0.000 3.111 c_out
310 | P14 r c_out (OUT)
311 | ------------------------------------------------------------------- -------------------
312 |
313 |
314 |
315 |
316 |
317 |
--------------------------------------------------------------------------------