From 9ff70b584824ec1999b61f732368e5745361ee44 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Tue, 15 Mar 2016 02:15:18 +0100 Subject: [PATCH] added SDSoC platform for 7020 --- .../zturn-7z020/arm-xilinx-eabi/lib/libxil.a | Bin 0 -> 897946 bytes .../zturn-7z020/arm-xilinx-eabi/lscript.ld | 285 + sdsoc-platform/zturn-7z020/boot/fsbl.elf | Bin 0 -> 420331 bytes .../zturn-7z020/boot/generic.readme | 10 + .../zturn-7z020/boot/standalone.bif | 7 + .../hardware/prebuilt/bitstream.bit | Bin 0 -> 4045674 bytes .../hardware/prebuilt/export/z_turn20.hdf | Bin 0 -> 404241 bytes .../hardware/prebuilt/hwcf/apsys_0.xml | 44 + .../hardware/prebuilt/hwcf/partitions.xml | 4 + .../hardware/prebuilt/swcf/devreg.c | 65 + .../hardware/prebuilt/swcf/devreg.h | 13 + .../hardware/prebuilt/swcf/portinfo.c | 137 + .../hardware/prebuilt/swcf/portinfo.h | 31 + .../z_turn20.srcs/constrs_1/new/system.xdc | 203 + .../sources_1/bd/z_turn/hdl/z_turn.hwdef | Bin 0 -> 379587 bytes .../sources_1/bd/z_turn/hdl/z_turn.v | 2007 + .../sources_1/bd/z_turn/hdl/z_turn_wrapper.v | 224 + .../sources_1/bd/z_turn/hw_handoff/z_turn.hwh | 3298 + .../bd/z_turn/hw_handoff/z_turn_bd.tcl | 300 + .../doc/proc_sys_reset_v5_0_changelog.txt | 104 + .../sim/z_turn_proc_sys_reset1_0.vhd | 138 + .../synth/z_turn_proc_sys_reset1_0.vhd | 144 + .../z_turn_proc_sys_reset1_0.upgrade_log | 16 + .../z_turn_proc_sys_reset1_0.veo | 74 + .../z_turn_proc_sys_reset1_0.xci | 66 + .../z_turn_proc_sys_reset1_0.xdc | 49 + .../z_turn_proc_sys_reset1_0.xml | 1204 + .../z_turn_proc_sys_reset1_0_board.xdc | 2 + .../z_turn_proc_sys_reset1_0_ooc.xdc | 58 + .../doc/proc_sys_reset_v5_0_changelog.txt | 104 + .../sim/z_turn_proc_sys_reset_1_0.vhd | 138 + .../synth/z_turn_proc_sys_reset_1_0.vhd | 144 + .../z_turn_proc_sys_reset_1_0.upgrade_log | 16 + .../z_turn_proc_sys_reset_1_0.veo | 74 + .../z_turn_proc_sys_reset_1_0.xci | 66 + .../z_turn_proc_sys_reset_1_0.xdc | 49 + .../z_turn_proc_sys_reset_1_0.xml | 1204 + .../z_turn_proc_sys_reset_1_0_board.xdc | 2 + .../z_turn_proc_sys_reset_1_0_ooc.xdc | 58 + .../doc/proc_sys_reset_v5_0_changelog.txt | 104 + .../sim/z_turn_proc_sys_reset_3_0.vhd | 138 + .../synth/z_turn_proc_sys_reset_3_0.vhd | 144 + .../z_turn_proc_sys_reset_3_0.upgrade_log | 16 + .../z_turn_proc_sys_reset_3_0.veo | 74 + .../z_turn_proc_sys_reset_3_0.xci | 66 + .../z_turn_proc_sys_reset_3_0.xdc | 49 + .../z_turn_proc_sys_reset_3_0.xml | 1204 + .../z_turn_proc_sys_reset_3_0_board.xdc | 2 + .../z_turn_proc_sys_reset_3_0_ooc.xdc | 58 + .../doc/processing_system7_v5_5_changelog.txt | 113 + ...ocessing_system7_v5_5_processing_system7.v | 3938 + .../processing_system7.txt | 1 + .../z_turn_processing_system7_0_0/ps7_init.c | 13094 ++ .../z_turn_processing_system7_0_0/ps7_init.h | 137 + .../ps7_init.html | 142745 +++++++++++++++ .../ps7_init.tcl | 863 + .../ps7_init_gpl.c | 13085 ++ .../ps7_init_gpl.h | 137 + .../ps7_parameters.xml | 629 + .../sim/z_turn_processing_system7_0_0.v | 726 + .../synth/z_turn_processing_system7_0_0.v | 1197 + .../z_turn_processing_system7_0_0.upgrade_log | 22 + .../z_turn_processing_system7_0_0.veo | 200 + .../z_turn_processing_system7_0_0.xci | 1134 + .../z_turn_processing_system7_0_0.xdc | 712 + .../z_turn_processing_system7_0_0.xml | 48500 +++++ .../z_turn_ps_7_axi_periph_0.upgrade_log | 16 + .../z_turn_ps_7_axi_periph_0.xci | 341 + .../z_turn_ps_7_axi_periph_0.xml | 4459 + .../z_turn_ps_7_axi_periph_1.upgrade_log | 16 + .../z_turn_ps_7_axi_periph_1.xci | 341 + .../z_turn_ps_7_axi_periph_1.xml | 4459 + .../doc/proc_sys_reset_v5_0_changelog.txt | 104 + .../sim/z_turn_rst_ps_7_166M_0.vhd | 138 + .../synth/z_turn_rst_ps_7_166M_0.vhd | 144 + .../z_turn_rst_ps_7_166M_0.upgrade_log | 16 + .../z_turn_rst_ps_7_166M_0.veo | 74 + .../z_turn_rst_ps_7_166M_0.xci | 66 + .../z_turn_rst_ps_7_166M_0.xdc | 49 + .../z_turn_rst_ps_7_166M_0.xml | 1204 + .../z_turn_rst_ps_7_166M_0_board.xdc | 2 + .../z_turn_rst_ps_7_166M_0_ooc.xdc | 58 + .../doc/util_vector_logic_v2_0_changelog.txt | 56 + .../sim/z_turn_util_vector_logic_0_0.vhd | 92 + .../synth/z_turn_util_vector_logic_0_0.vhd | 98 + .../z_turn_util_vector_logic_0_0.upgrade_log | 16 + .../z_turn_util_vector_logic_0_0.veo | 66 + .../z_turn_util_vector_logic_0_0.xci | 47 + .../z_turn_util_vector_logic_0_0.xml | 443 + .../doc/util_vector_logic_v2_0_changelog.txt | 56 + .../sim/z_turn_util_vector_logic_0_1.vhd | 92 + .../synth/z_turn_util_vector_logic_0_1.vhd | 98 + .../z_turn_util_vector_logic_0_1.upgrade_log | 16 + .../z_turn_util_vector_logic_0_1.veo | 66 + .../z_turn_util_vector_logic_0_1.xci | 47 + .../z_turn_util_vector_logic_0_1.xml | 443 + .../doc/util_vector_logic_v2_0_changelog.txt | 56 + .../sim/z_turn_util_vector_logic_1_0.vhd | 92 + .../synth/z_turn_util_vector_logic_1_0.vhd | 98 + .../z_turn_util_vector_logic_1_0.upgrade_log | 16 + .../z_turn_util_vector_logic_1_0.veo | 66 + .../z_turn_util_vector_logic_1_0.xci | 47 + .../z_turn_util_vector_logic_1_0.xml | 443 + .../doc/xlconcat_v2_1_changelog.txt | 64 + .../sim/z_turn_xlconcat_0_0.v | 164 + .../synth/z_turn_xlconcat_0_0.v | 165 + .../z_turn_xlconcat_0_0.upgrade_log | 16 + .../z_turn_xlconcat_0_0.veo | 81 + .../z_turn_xlconcat_0_0.xci | 126 + .../z_turn_xlconcat_0_0.xml | 1936 + .../doc/xlconcat_v2_1_changelog.txt | 64 + .../sim/z_turn_xlconcat_0_1.v | 136 + .../synth/z_turn_xlconcat_0_1.v | 137 + .../z_turn_xlconcat_0_1.upgrade_log | 16 + .../z_turn_xlconcat_0_1.veo | 67 + .../z_turn_xlconcat_0_1.xci | 111 + .../z_turn_xlconcat_0_1.xml | 1906 + .../doc/xlconcat_v2_1_changelog.txt | 64 + .../sim/z_turn_xlconcat_0_2.v | 196 + .../synth/z_turn_xlconcat_0_2.v | 197 + .../z_turn_xlconcat_0_2.upgrade_log | 16 + .../z_turn_xlconcat_0_2.veo | 97 + .../z_turn_xlconcat_0_2.xci | 142 + .../z_turn_xlconcat_0_2.xml | 1968 + .../doc/xlconcat_v2_1_changelog.txt | 64 + .../sim/z_turn_xlconcat_1_0.v | 190 + .../synth/z_turn_xlconcat_1_0.v | 191 + .../z_turn_xlconcat_1_0.upgrade_log | 16 + .../z_turn_xlconcat_1_0.veo | 94 + .../z_turn_xlconcat_1_0.xci | 139 + .../z_turn_xlconcat_1_0.xml | 1962 + .../sources_1/bd/z_turn/ui/bd_24d8caf0.ui | 17 + .../sources_1/bd/z_turn/ui/bd_35e35d22.ui | 78 + .../sources_1/bd/z_turn/z_turn.bd | 1685 + .../sources_1/bd/z_turn/z_turn.bxml | 252 + .../sources_1/bd/z_turn/z_turn_ooc.xdc | 15 + .../ea79928f/hdl/src/vhdl/cdc_sync.vhd | 1261 + .../066de7cd/hdl/src/vhdl/lpf.vhd | 444 + .../066de7cd/hdl/src/vhdl/proc_sys_reset.vhd | 455 + .../066de7cd/hdl/src/vhdl/sequence.vhd | 521 + .../066de7cd/hdl/src/vhdl/upcnt_n.vhd | 153 + .../processing_system7_bfm_v2_0_afi_slave.v | 978 + .../hdl/processing_system7_bfm_v2_0_apis.v | 825 + .../processing_system7_bfm_v2_0_arb_hp0_1.v | 151 + .../processing_system7_bfm_v2_0_arb_hp2_3.v | 151 + .../hdl/processing_system7_bfm_v2_0_arb_rd.v | 154 + .../processing_system7_bfm_v2_0_arb_rd_4.v | 254 + .../hdl/processing_system7_bfm_v2_0_arb_wr.v | 152 + .../processing_system7_bfm_v2_0_arb_wr_4.v | 265 + .../hdl/processing_system7_bfm_v2_0_axi_acp.v | 93 + .../hdl/processing_system7_bfm_v2_0_axi_gp.v | 309 + .../hdl/processing_system7_bfm_v2_0_axi_hp.v | 346 + .../processing_system7_bfm_v2_0_axi_master.v | 679 + .../processing_system7_bfm_v2_0_axi_slave.v | 935 + .../hdl/processing_system7_bfm_v2_0_ddrc.v | 268 + .../hdl/processing_system7_bfm_v2_0_fmsw_gp.v | 300 + .../processing_system7_bfm_v2_0_gen_clock.v | 58 + .../processing_system7_bfm_v2_0_gen_reset.v | 225 + ...sing_system7_bfm_v2_0_interconnect_model.v | 662 + .../processing_system7_bfm_v2_0_intr_rd_mem.v | 99 + .../processing_system7_bfm_v2_0_intr_wr_mem.v | 105 + ...processing_system7_bfm_v2_0_local_params.v | 239 + .../hdl/processing_system7_bfm_v2_0_ocm_mem.v | 223 + .../hdl/processing_system7_bfm_v2_0_ocmc.v | 189 + ..._system7_bfm_v2_0_processing_system7_bfm.v | 2010 + .../processing_system7_bfm_v2_0_reg_init.v | 2924 + .../hdl/processing_system7_bfm_v2_0_reg_map.v | 156 + .../processing_system7_bfm_v2_0_reg_params.v | 10519 ++ .../hdl/processing_system7_bfm_v2_0_regc.v | 118 + .../processing_system7_bfm_v2_0_sparse_mem.v | 317 + .../hdl/processing_system7_bfm_v2_0_ssw_hp.v | 443 + ...processing_system7_bfm_v2_0_unused_ports.v | 433 + .../ad955ff5/fixedio.xml | 10 + .../ad955ff5/fixedio_rtl.xml | 106 + .../hdl/verilog/processing_system7_v5_5_atc.v | 409 + .../verilog/processing_system7_v5_5_aw_atc.v | 298 + .../verilog/processing_system7_v5_5_b_atc.v | 413 + .../processing_system7_v5_5_trace_buffer.v | 310 + .../verilog/processing_system7_v5_5_w_atc.v | 244 + .../ad955ff5/hpstatusctrl.xml | 10 + .../ad955ff5/hpstatusctrl_rtl.xml | 106 + .../processing_system7_v5_5/ad955ff5/jtag.xml | 12 + .../ad955ff5/jtag_rtl.xml | 79 + .../ad955ff5/usbctrl.xml | 10 + .../ad955ff5/usbctrl_rtl.xml | 58 + .../5ac42227/hdl/util_vector_logic.vhd | 140 + .../xlconcat_v2_1/21a398c4/xlconcat.v | 276 + .../zturn-7z020/vivado/z_turn20.xpr | 155 + sdsoc-platform/zturn-7z020/z_turn20_hw.pfm | 77 + sdsoc-platform/zturn-7z020/z_turn20_sw.pfm | 27 + 190 files changed, 295893 insertions(+) create mode 100644 sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lib/libxil.a create mode 100644 sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lscript.ld create mode 100644 sdsoc-platform/zturn-7z020/boot/fsbl.elf create mode 100644 sdsoc-platform/zturn-7z020/boot/generic.readme create mode 100644 sdsoc-platform/zturn-7z020/boot/standalone.bif create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/bitstream.bit create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/export/z_turn20.hdf create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/apsys_0.xml create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/partitions.xml create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.c create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.h create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.c create mode 100644 sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.h create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/constrs_1/new/system.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.hwdef create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn_wrapper.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn.hwh create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn_bd.tcl create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/doc/proc_sys_reset_v5_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/sim/z_turn_proc_sys_reset1_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/synth/z_turn_proc_sys_reset1_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0_board.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset1_0/z_turn_proc_sys_reset1_0_ooc.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/doc/proc_sys_reset_v5_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/sim/z_turn_proc_sys_reset_1_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/synth/z_turn_proc_sys_reset_1_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0_board.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_1_0/z_turn_proc_sys_reset_1_0_ooc.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/doc/proc_sys_reset_v5_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/sim/z_turn_proc_sys_reset_3_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/synth/z_turn_proc_sys_reset_3_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0_board.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_proc_sys_reset_3_0/z_turn_proc_sys_reset_3_0_ooc.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/doc/processing_system7_v5_5_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/hdl/verilog/processing_system7_v5_5_processing_system7.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/processing_system7.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.c create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.h create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.html create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.tcl create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.c create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.h create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_parameters.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/sim/z_turn_processing_system7_0_0.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/synth/z_turn_processing_system7_0_0.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/doc/proc_sys_reset_v5_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/sim/z_turn_rst_ps_7_166M_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/synth/z_turn_rst_ps_7_166M_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_board.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_ooc.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/doc/util_vector_logic_v2_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/sim/z_turn_util_vector_logic_0_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/synth/z_turn_util_vector_logic_0_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/doc/util_vector_logic_v2_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/sim/z_turn_util_vector_logic_0_1.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/synth/z_turn_util_vector_logic_0_1.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/doc/util_vector_logic_v2_0_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/sim/z_turn_util_vector_logic_1_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/synth/z_turn_util_vector_logic_1_0.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/doc/xlconcat_v2_1_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/sim/z_turn_xlconcat_0_0.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/synth/z_turn_xlconcat_0_0.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/doc/xlconcat_v2_1_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/sim/z_turn_xlconcat_0_1.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/synth/z_turn_xlconcat_0_1.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/doc/xlconcat_v2_1_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/sim/z_turn_xlconcat_0_2.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/synth/z_turn_xlconcat_0_2.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/doc/xlconcat_v2_1_changelog.txt create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/sim/z_turn_xlconcat_1_0.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/synth/z_turn_xlconcat_1_0.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.upgrade_log create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.veo create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xci create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_24d8caf0.ui create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_35e35d22.ui create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bxml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn_ooc.xdc create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/lib_cdc_v1_0/ea79928f/hdl/src/vhdl/cdc_sync.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/lpf.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/proc_sys_reset.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/sequence.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/upcnt_n.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_afi_slave.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_apis.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp0_1.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp2_3.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd_4.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr_4.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_acp.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_gp.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_hp.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_master.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_slave.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ddrc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_fmsw_gp.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_clock.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_reset.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_interconnect_model.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_rd_mem.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_wr_mem.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_local_params.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocm_mem.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocmc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_processing_system7_bfm.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_init.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_map.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_params.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_regc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_sparse_mem.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ssw_hp.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_unused_ports.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio_rtl.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_atc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_aw_atc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_b_atc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_trace_buffer.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_w_atc.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl_rtl.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag_rtl.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl_rtl.xml create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v create mode 100644 sdsoc-platform/zturn-7z020/vivado/z_turn20.xpr create mode 100644 sdsoc-platform/zturn-7z020/z_turn20_hw.pfm create mode 100644 sdsoc-platform/zturn-7z020/z_turn20_sw.pfm diff --git a/sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lib/libxil.a b/sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lib/libxil.a new file mode 100644 index 0000000000000000000000000000000000000000..2f73a1c7b47e05ca188f31550fa0f71329eb34ff GIT binary patch literal 897946 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𝕀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 KB<*u +Application: + +1. Copy the contents of this directory to an SD card +2. Set boot mode to SD + Jumper J1 NC + Jumper J2 1-2 +3. Insert SD card and turn board on diff --git a/sdsoc-platform/zturn-7z020/boot/standalone.bif b/sdsoc-platform/zturn-7z020/boot/standalone.bif new file mode 100644 index 0000000..32a161e --- /dev/null +++ b/sdsoc-platform/zturn-7z020/boot/standalone.bif @@ -0,0 +1,7 @@ +/* standalone */ +the_ROM_image: +{ + [bootloader] + + +} diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/bitstream.bit b/sdsoc-platform/zturn-7z020/hardware/prebuilt/bitstream.bit new file mode 100644 index 0000000000000000000000000000000000000000..794afeee92bb311ecf7dcdf1ba486239860ce535 GIT binary patch literal 4045674 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%0A(*NqxdZ8*AS>ZiMj;t7F_=yf@g;1z4h4HC2}<@$ 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

e0#T+y9*%qDu>yq~}@6 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

SIt? z(u_c;u>k7_X)XX5Qb_Dfiuc;RVlPe@t2GE9=8j`B;N6lcriP@V@Sr>J1|$}Fx>wle z(4bO6_o=Y-ivGHOZ+}&|ltG=1tt`7GRram=rl;5x ztaA#Nq=LZ|E^DrZH!=B4bZvn3wR>l$diCVjo<9$wh>h!l4Z3UHv%Qi{K7lzQW~4Se~K3o8f^dH3FD* zK$DNOb1;@l+_-}df&JstqK?khu$boOBqp-muOAl(-ceZ77M5&_FgZMj{Q>#L5fDQA zL;Tz`Iyp6Ey25=zf@^CW9f6|!q(W(uE|szMlz^~gEJG^8@hoVE88%vCJ`C#>Y%V!3 zMG7Atv-VQ}7>;)%a1#y`;s97ofo#babU$ySEIV8d7l#0ot<_uX5OM8h&rS3o0eRo(fX>Fa|bvofp_> zjSV#_))TK&JmV?8EI)Ydpu|V8wO-MBLF1ICM&>x$Yb^zM)C1Xq26ijcI1PY=4s4Me z!Ko>Pba`X$=)f|-)x=m>8#Ql#pw(Ps3s`qgKHT_1bVfKB5sffAJC4CXO^Z+pCCC<+ zokU+897nZzF7F)(NBiAtlUcIf3GG2dI}Lzb#$+8&uPjicoabwj09OJ83DD;p#|29( zIUYzF8i>SH6<=~GZ{>;5-35`F;(HAbAZJPy7Pp9K5xK6Lc7Pk2M{szh8|~nhwk-(F zCPL2$@hmz5RtQxA;(HJ@3;@I=;*ZjNY99tbMZPM)p$PZ&#vTu&l?!!WI2Qd$^u^zh z3vas>hyNf#V8U?VU=+(w|k^o0UdOIt(vhCLb={tF}QVT^7TNQ_5ZLY~20MZ{2Z$=sQZ|tKN0omk8Ise@9?{MJ){tKT*A@H^kC7e#RA`~|RH3W5tRa6SJz1i}2fV?M0cBCK;1 z_x!+zub+PWFIL`v;>=gScjmvGzF^^3KGKiFO5+26`~5S2^WD4Od+)*tjS$~^<+b|5 z+vJ1q{n^U1U;6DYe7;t%he4^-H@^GWa`eNKpZ`Lo^2DF)zxeo$ANzQ?bs&1r_doWr zkN@t@OB=sgDV;g9zuIUlRQ}=F{WD*9RVDoT;r+uGJ-$$08Yx$ITz=;7DwQvOX#d+k z@PS)@GT3o_^m4GTIRJ@RY+>E5qhe&!R6#{c*IJ4*d`MuTH6IGEs4rsi zAdizJF+d+$)ZFbQ*o*l(LTm^z2}6veKmWny>np$W7kBU4{o1Y9UjL3Cy2>|G5Pnp@((ln@#tlq8gzPq#WnWH(NnLz z;I^Tm#`p1b?J1ZJ&))F88~U(f&^+!7!7$bvogR89?`Hk^-4CSNEPn14&#S)Wfww$x z11)$YqUTrBl;^E(b~$(j7i*$6@sOzFS_sc>1ChnqMP4J>5WM}h$)}%QSXdn3wLa|Y zwsEq-*|QNzxfjR~!h zjAMe^8q*vTTC;^dOt_d}p9Z=1I3{@5xXYM~(qhvih{^ZO1Ldb)OEJMAv5#WXXxwzu zsZ)IuG*143&NjrKe&wwc6Fj!O(G=a1>OsqxyyXFkiCxd*nFsQfc>6)w99ewmFEx?V4RN0kidoK z?57cvuVB61L^>v4`O43XH-^l54%35;N_T!K)pE<2Jn$BpyOz70yD~AsT1YX8oi7^` ztdUG&g7dD?^xS2eDU1o`E)$dG)YQfE&7^&Ik;$dNTD+5z*9V$)hqxA-qHV>U=pP~Z zjmG{UPUUbqNAjK9j6HGdPgvKuU|J3CrS*u^7rWNctyBDC+BV!4S2tokVL1{9&3ec3 zQt-DzUO)Hxy;y%JXClHfa`j;UzDm7v zaIzkmXWM7+<{J?CL3_ZCPK9yj&8(kv^(g1L2Y(^piwj(vFn^2Eug97{+@jPwsUC9Z z%i?yi@S|5^dv2*8C416yy<1>s?AdtT6I?PJGL3He!tGc`NPWCrE!;j9iD~As9?@;% zE%k-lvEjVlk=7g1T1f2Kgpb*F@FaH|VKIT-Jmi&Ww;r;p%sR$@gE!Idj>6qH)=&Hy zwFf6$_m)qc__N*b-1mS5kleqFd{TR~e(^^7lOgCkpjiABd zKAa~K1$*5wbeE`%vWVsk{F|M<;RdX)8k#tD(@9LTr;XI6bdKrB+B??ec;NuH8^@sf z(8|O^Lv>WZu@#H)|KZ4smzQVXZq{AF+Duhq7d}H)n&GwC#sx3sAB9xxS~)c_8w7hW z|G^0zp>dkqXxz~_aNv$R1ezh~bJUNE;O;i^2z>uTV}xQoVxm;~G{w!tR~`A9_f9e`x5` z#7VqkqbVjp#!^#EaGnpE7`pnDjmaS19#Nl|p}iRHzjx%t3y%!HEI3SS;S$<4`()*t zshBL=*DE|(nKdzK?6JqYm;Hf>37uFq8lykxVlw=sxM(|KLfAI`v9V;#dGAMz8jWvY zNSgC`ipdSLS5I7b9gUO5*Qgh>KmGS#-^iF8_{wAUog<~AaZDOVZexT}F)4k2s4;Qs zIG5+Sg25EaPb7ErhiW?9UykDcSXQ+g6vIpyaIVOF=#srJ;k~-KY8c!bi z<`FC|wa71@n&30ICyz7`6TE?>@pfpa-Irlb8wQ4iGh%|#{kfG-t>B{XNil&pPTavU zp`=3o8{b57y77GDvlu5XCI_&`ATBdAshC{z_kRz|4V$|T4EMR1ToK1)xsr*Aox2*R zCT==e5EI6iwwdcwta9Y$F2n?@dJz*|vpg{oiP@L(+~s1zZ{R>omWPj&j$qz#o)AJh zgBw1wOfdnPZ+|<*WSWlZm~J>ANQhejRTLl(?8z5om1_-OQDkAh)5y6ZHsSGiZT_MQ zteITCGynZY{LvErW1>G|5|5nP6`^9)=g|*5@5z5+U_tN6z@44yaGN+V(jO~un)I}@ zx9b(>O&)zTWWD&L)4SZROEh|X=aK$&OQ&0QeInK^f(4fBhw@f@MsC+V@^>BylWO(h zB?U+6?RY#qrhEZC5RIKkkzNka8My5=0-O}>*PEBbbo+fD-l@dA`i4-Lu#VL}|6k?v) zgj3dXj^#;WEF=V9hXt^<>w;zv z3Mu{4q|*$S6{pcXa-$?#9)wA8bh z=#->2wbM1%YVXV0OB7KkTAWfum?a%|tt}Ftyr-gzVKaEW2CEowF0(VG@>a=8ER72rMXS3}|w^!p9 zT-rb-9ZQP~%DO;CqQG4Z#Cq;9aVi#}fGvQ6bP(e|Hq~tu!(q;XU{_rsB}j7$2|pQx z=Ut3r1urxYq`Ysn$pOaN;Jg0xJxX>-BDbULaXH28F~av610kfj^*)I3Pz!SIEX_}_qK=tuLI$f=)Sp)<23TZg64&jkD27oTms=(L~a`UnQX6MLlSu?DH+A{40 zb7Y05{;K$^GG?%axky~A`|u=dZE6y|qCTKvUx*r1$2@Gu3@1izbVvi{&0TF{q)kR? zZqVS)cuWjIfsHjtS;kdXRT#R@R!jQr{Ma_M<(HHxAX_peN&|@`)th9WQcw_SO2~Uy z=aOcm70K|Ak-^47YTWcWcQu?o5xlTWk%nbNJSSApS`m)i0`U~1He{Z$<-KbLW}_)n zyBVpd*hcEcC~h)Uhl?te=5-x;Q#oyR@vzWo9{XX6jmw$43fwo1{T9H$!t6e=sfz1s zXqAS4t?;NAzI6$WGAI**2^kbfW_%@GqA3wFq*6kS2;hf{Wot)DNSMRlZJ;B=h;t<5 zaZCw!_dhyn6cWp{@W5jkPk|)2VxWra88dj+C@JRL=8+^vI_8s7Eb6IX_lDp{q^suk z59E+J&S@zRxsy~NZH+{DiTnaRvP~*2Nm4+Voh0-j-xIW+anfUXTY-j+bqaK;Yy16`@U4$(cD&7)dTwj>p4|G3B-#a%FXt8?E9|=8mscZ8Njg zrWT{08UgfZc0m5f$QdRO!JPjq)&FIt*oiGb@Q>JX~p*%NnhKuhkY%h7;2@Un<(s`F@#~!xGK$au&5tr7mm4nO13WE`1)BKW zT11a4M|-RR+ovj}ifobRonM!C(mT5@a(oixtSF>oVp&Ka&y?L|h%>XiLdhJ(fi&YD zX_E^YK1^j{LPLgi2=37c*Y`X8DW_Ths`tcu_7q|%NgcEO~95EF_ID{?mH*C zrb$8#5dJiR@Y5MwB8;A}GItQVn8ske$3!fanSydsn=29r5(x>UP^sY!0aK_r6c(Wq%aie4n6ZT@=#mF)9)!Mbxf-Y@h5svB(r! zIL%qLW}}~Jt#cYp8-o1_d4@C#@Irarq)OT8=vavQ^APc#kF#vWYAo|?@`?3!87k*^ zr<7dKND00rdLvJPCGH*YsAOYG7;DE#gsh;FQ)4p5g;;Vy0Mm@MW18iWQ#n^X=G(u~ zv4ZAp;hPw+!Dd zH-@Rym}El=HHobXKnM&z5@^nyoJ2j+u3zf0g4x$mi5tbGM4#xFGh+B4LzZ(!ox}vB z1l}JN&}kQr@iNed#n=p40_18?55qdyVZVF=f<-tc@F^xEHQK^*_(X&~!iejLN%`fA zWPqVZeTbIISch4gCrJW?PL)ZM=msRN-M00ko@S|;}ZwI<@ za+C$eXf^4M9UW_FO#_p@!-xWMOY=)hT2zNFXjJ8FlU>$L{;f zk^M8nxG2PDVMXcIfn&EG9-FxaF{z7SariEb6HJJ~{l^xbc()ii-WT9r6zbhIPn*c1P)d>ApA*8n8g{=s8U)c1VxcpqX(ylEXvECJFm#vueO zclj240<^qs>)rQEzpWBnf5m=VgX+w);Zdk zVD6%Ef{#!pF~N5qpSXXZ|2W#J6O8w7slEJH%cbM>a^;CSVzQ+kQB1`BFD-xTOZyMT zF}eSd%HapfPtAASj@V$DoZ}U(+ac~7BCGbb^DV2c%Fm+?oxbTN z-haqV)8CPeZ@aEB{VaY_qxt7s^ZarJ2V{_uCvD~VBHt-lqcJ@VHthd4p822Ij4>(y zY^uAx6&Z`uLpR;jpfOF9;AD84x|pP%`_AYslaE1;pKYv7O#ZQP8=i}9eCON!%by;f zSvG4Xi~7^EY^}!0;5T}1+Erl8Xq?bDm55q|MDV&s=+8DLM~>KLsG+1W6T5_Gqt;0% zZo|Fs#&>QO?E_aAY{C!5MvVtoq zy63+#Wv-}*cXGOzVczDUCQV8YW<@05ZzSakj;ZEv2*fctp4(9*fEdeQZr zYTNaLZXIE4Zq_x5=tfa}CC*C@LSgz8TbP1fCwUNmFXszA@C(pP1;XT5`bd0g-J;oc zw~o=;N4CCMCy8~BXzoW`y>djnS(ivMqMHqm(+q7dFin1=(A-a#!&H%do?t|m`E;7% z2rN#A=itrRd-yY{h)b&qMaS=Wf~CD!L(IfnI+=u2TtZa3eAr1g>9 zSL=_q^)>i~z>fX8b&C#L$J6>s_@AaVpkz<-D+l*I0LWfR{b4>L{)IvpUe|F;+??Wa zSHbejvnOwQ;4Kej;^j;z56)bF_3*HL2Lte$_!iIbeq zIR(Dud^M1xITBNx5MWPVdHvCp>;Q zCRq53@i0Dv_e~&&1-`>b;{<7LoM1WZg#G3^84e9&oKU?N3aw2{isvpfP8x^_#lRtk z&(-H*GRrYp=5a#bU9|7lFyn;3$LQ)(j&E#dV$v8I#yClRuQ6?0Q050_c*GVc*HBbZ ziXUg=@-OTJxj zZzoUtjKPAl!}l4#>&h;7Hpl^T@Jt{%S4JPGh)bnsB1J(cz1DnhF&s3fl!3J~)V9sP+r7C5WE~msODjvP9^;zpyTz32LN7-L$Wl8gdBk4BF z3i7=`?RafEj%?E;$<`CyNXPCL$SGSB#ndx-zv>rLj%wC8d;?%r20U^L~@& z+m%zEm3X41rEAOOaT_XEr6oqZ1EgBZ)yuLnW)+o!n9UcsKRUZ}=UdB6p-XLvn zjnkq|W!=eOmHNtGc2hC+{0BWMijBmb666xU9OZ&e+CtRhNMl_PyU^^_22GR9$ldoX zm)MFDNl74)Bt*4AnkAIdE+4T_6U(GIrLPTSsn4-!9rd(hFFW9m}L66IL3;2x$0uDrInbndvlLyqe$-^%wfvUSX!;eb<6(l5f2PCW6>OHOFN zgBAW)P%7GWVA_#*En~_`p-ewRI^?Mbk02>0vOBt2PXeudM%nZ?HtMBN)b*sfUOd58 z_Gq6mPi@53D>51|+5J-G)hQlsinb|b(V@t-WzNX0gwOWF7)hby{*{BJY)zSE+i=aj zHalQZlg>>$owG^dijJSTZsR6{Cq7 zIyN&A04uE{XBAttE|?mHdTHB2&b=)(Y9)*kMajHJEj8}kCL}hQQm~h6^Kk|WdQR7N z(`;!bCutfx7K=bX+hvDth<4tttZ5e!pCmNkrj8Fbry{)xfcTg0z%FhxO zYP6ARMH9E#FEe%$Q`U5#Wu-c5FHHtTFgTyFX~Sqb9_ePk*p`UU#Zo|T${jYfa&VC%{ zG0~(g*}OO*6gA-F5F$^gPO$=w<2EM_V~Z3UMe7_jNjYF>%0z)uEOaOPZnvFWY;wBr zf41!)wp8<^5^6>d#(@Rr9u-wWyk@by?dRu&l6w~-07d9@#z&J8W;#HM|K;Mj>s8b= z9ZfJP;#`<}LdXXgMW}^R$bN$KxidNLNSZ8A|D2OX3thBBW@)=p)3Zbb1rcv?34c3L z8gv20gcLdehg{rq>le3v=*}P5(|AwgxktbKzyI*QX#T!(AJ1K#`hof(Vxs$nzLR1S zkw0PFio19yh~Rmwxqj+VaeVfesISQC{j7)QzJ9EWq*qa*hcr(5O1y5kQ=8nxdM0M0 z(pa}`J=Op6FEm?f5@9&NE8d2tCBV|DabjW;+;i(!EBpRr?{D34`5iz1(qFp$>iZ%w zRE`8yPWdNSO{C+P(4$$on9$m6s_}NjL=A`&kKfHPIc{STxR}uRpqSi+m>}!aCb>LM zi0^N-=<&Oa-R8ngV2sc1|riN)EK*%f?Q=oFss%{*`2!m)k+x*O9X4_&oU zRPlU~;hse+TJA0;6)`Y7I6FA%W6}!99_70pZ(X57Os>D|Cd?T4$YEn(wlrHpOuF6i z&vKlk)-ty4{CTWdgSl&_u{b+Ei{+Zv8Y$o5I{&zQ<8k=dmUQpsv z0mtOX+C`Alp;g?7b&N({y#z}9-!lWTv$N)f8T`?`#VUQHavO?#|0JkK3&z^4Z=A$m zPjJp~(B-aOtbcURKXE;`9@5n9Dz){xvONo^etU z8_LJA+tChxH`3;0Zyf2@+nnMV+Z)+tN|W_|z4ay84`rw<$VrXGubQz`7 zr@OCBmgXGwjk$K=$hr=O;6 zM@&YihY7N^iiugbWn)nglUW-RhrG3S?0KKBew?_Nh?7IZ)A(FsyymTIOj?Z-v*vUe z-}%E*(g}P}6<0#|ZevW1Tuh98tUm7xtB;AByAYGsq`l9sDKRI2Yw@I2_?>AJ2{PV+8d4nBh$j6W+uz|E}xG7m;1>yGZa{yE^d!xTTRh&5C48lZ*m45OWkt2!Ndv zXLxtV1i6#9${$`*8b0*HOUBc~kId<^UeNm%Y_8{UeO%W2w6Q}DL*k8n!aI33hkpd6 zykzoVCGmSBMK|_?b{ER}?iJ+6C^z1FNh`ST-G)?aU1W53BiBIe-qw~zW9`xXgaT#$ zI0A`w(mG@yZSCXS$y?+?NFmHCFErI>QfdXc;<6BP=q7&5D=Sq|qDM)kIhcwSNytZW!}t7dgQ4jtY`k~Sz?FM96u68Z5VR-bdJwztuoHg!?@gA;YEMmt-WkA1Pc6* z6wTTu^9};?)e9xoR8sh_k%K~;hAOx3f{*Y^Q9NO$WSxtO+CbuniuB8o=|@hOu&vd@ z|2na1QEFYeMFk_)aX(dCJ1BK41D#PRHgkU6q?W2H`8Gm;3`eLikX#@J6eM?%TqGi+ zX-b{GNnr(&j(;(MV^Yc%Toy=I>M_5t-eZN7d8fWRy~|Tovqfpxj&`U*VjGbUYCGv4Ks|V<~reIKxeSpbP>?tP~ z;^M7MqMSh6%8Pk9cv{y8gs{y;IOQsUO`TpfDUAoX0%=Yqr}>1W8ow&Ar?P3=oH}S* zlcZ&oHS)U9lf;`^+T}{)TQ#si#U;oLX>F`5Yqy*@ShBFjDH853d^q0fO%TZ1RMxS+ z`@)5`zunh}EtSB%FM1je5B6qAXSg&|!}c3(Vw3;Vq{8N^R3%t~owpKNnuR~lgOB*V z2Glls5n458iqeCWC`l=(swqub*&>TcRX~ZgvRW%qI<`)V$_9aZD-`~rXOy+1ma45! z=j)jLH7`vzC}fqha`{qog-(*7$iR3Pc;;1_BJM+rofIeS%<1!&_^^!G6BVSquhNZi zV#vFd~-Q#KtBqip$1r%yOYf<}B!`91w+s z-Exnel5?G@PKK+b;IYmX6-?;oh?>hcndy%+Y?Zge%GC+Tqhd~BFs{%H1yVu;N=PbN z;x)j6PEMl;^H~i)r=na=Q>rN;QhZ%#%1tS6l*)?D*|R1gcbiMZF`-4mLOVRP5mTzs zCzEs5I%z`V;va5ltgWW0PPT^ZpwC+8In!^Fj#^bBNo+%H%8}rQ!kB>_q-9+%8zsGbyefkX%Vv&QRGaSJBHNm6p93t%uvBvDaiE1s0KO%y+ny$_JOusEC!CQYOWzY0XG7 zDa}<;N@C_NmT|Y!Iy7E~X=?6LiJDr__}4r2^WS&d*Hci_&r#g&0!buCWyvYeB3Dgy zjYMfY_sF^ktquhOP3hwQk++h0f#tIs;jE-K>a5mQ=`N#f!#`=Q-POsP z0)=f>_>dw^PMWumiV7tu-bCga+pMSPulgdSj%ZZibzI1aLYu=q{m)PbKCh%;{Y2 zpwoGQ;|p@CqZ2uuu7e#3}oO87ToPkW5(GFe{8>7&Gg6!~{ zTcF)l5wEMLR~Cnp%1IrR6y!V~QGxgIL=9e9p-~Y-lrb@)OiE*qZ0O{BiZzN;SC78& zVg*t;p^Db8Ne)qhQy#obPf;-o6G@05bqccsJI<&Rt>g1~ zY;R{TY^mK;qrn%$vzs2`i__F_xP`iEZ$9L`w&g2JZPjg+rZ1^oysfp+y1o8vv{hUm zCiS@?9E(O~Ft%I{b%eXvigNrYNmWUBC(q|phsafOev#uljv7rFGV&SIZa5RmoxXE^ z;b%JAbg84-bc-1{Gyy`k!p28@kG&uZO%l;JYyAe-4)^i|9Hi&A+`0Q zEg|40!jT1!{WyA@U*jf1+yJgmAr{Cfme=xBR>ksGXXwtk=zxoy!wTqeyt} zFyKmE>=?fqmh^KpADK!zBX!y?@(cg43!@e$A;kji*IMXvVy$xm!%iaWV?TzU$2}~R zc)Ji0sEFmlQXk&+@iQpvveKleK7!lFW{62t&}4_2nkwT9t0nBGRGjDimA=;qr6n6V zvs*)I6^5tUu+y;^Jl|oUn9%Wr0;I_=>eWJ>nwNv%o(PrkZNLvyp=Up~$!@ceOS-je zvePyux)woax2ef05on#1Q|AQVz&Lr8`^-En?%GmWLA*RMzbhrBszQDfaR7mYU;w^jeLv>9OLbF|QoK1I2iZwYfuU z9h1}}%gv3YBt9k_lg7Hl#0Dk(Jb5YAy;@IjFX`ue9vhe#tE$*U~+j5 zOUJsH#P&|nW&Q$*3BD$T6C%xjdEtqC1us>=`g#3KlH)sy;yks}O180U!ACD8Z;W$L&g-jD(~iHHh0W z#SHJ{x!kNJ#HqE3iS>)~b?4W(QuA-4_HKN}#j$S-T#1$bBEYMHm0ciPt73 zv$Mr9$&VAPG{yODqwARP0ovR;InN?<=&_CNuwA=}L%E@fLe6VBDUWbVg?VA*(MNOo zal`l1{j3b_Gn~!{&j+S_$yYbJn-9x_)CKMO@vx*)_^8QCrwq2?-Hv~F47R#v_2Ion zE}ltFaTPgmq!KwqbS4Z^oNm&j`l9tdhXfpXL~zwmNNk6MbGD$8;}k!CB_VO7T!C|3 zI$A+io-ty^>1DI(tR!yeyFV7ouse4{pX|=Aot12-OzE2K(voyJRY^FxN(;H%EMc+P za<~1OWi~0kYvHg+$PrCXqyZ61Zma@m@bv$=*MOVGoXAF~l#d%1A?GM!fN%!HLX(&m)fTTO2A_im=UNq7+88J^UP2+a zH(QY(qfgD?@RV~#W)xs+%WRSq8Iv~UGBIA$((uRE)ZJ>Fg^FtNrWzcW2k?;L)xib> zlj5-zdxPCPfwG5cf=mF?1s10gQ$HnGUD53--PV?5*ebfMoKzlYr8(Df*+l~iXww(X z4AJ91nvWE!>3E?9WUYunX+4eQs#(Llz08^A*-rYreQW;WZ?)E)V~sBMFX#sNyHT!Z8u*NK1+jNCP~+d}I!ZbOq$`@Cd47DKUyN%QBad#tiV&b?UYn~=Ft4zTeAeR|~MkGVMZ)4HHVu1qsn#3h{{Cj*M)2=?n^bcZ8LwBbs&I=5K9OJ z;)7*-d&~ugiHtRFl~GvohB4-?Dy_eK(8A=I@f`sQVc8R zE8_JW$%1{D#2IK!DRy$VWJrTWoI;9<7&SH|dI8Yx-`MDlkkkP)7`Q7{nvBYm`1DM; z#2S_&F=GJ3MUx~7Dk4&Ne8L8^kAzv$#HM1M)oxy{RIn}U-`g~B3Uiglm5IX8AK@{h zdBmu4MJjY{6fCWNih>bUMpQ6%USL%E51V0w(lf7lILi%-q<2 z!lA*hZS=NqJkksB%pAqtLQ%#2BRS5T`1s=Pt%!lW7$`Efc|jB|{m&b{8Q9}B`jDQ2 z6!l3`lB2YdRndTXfzjZfZ1e^#nlmYTNr#0yh!L2&HrIM8)jz11G*TKh5f5sWrbB~6m-JP{3D~@VVshDqZksnMM@%Bbgm7hgzM@yEfqFM$^7wX+iRSAQ z86pad)Y>$?`zP9w)ZEoBCdE%ZZhp+R{lrH1k=7-m4+mX8+&V>^zR?}D>lEXdxOIw@M)h=Q2#+(j|T&s_*zJa^5` z_VqOyGk6CM^@+c%fxBDf$|1hXbxG*Hn~1{^$?=bJw^ol2QmK0GdyCF4(VH!{-(4Ku zGQ;0{H0xlEYOT}XUTcSI<*%aP3F{ge8+`M`LJB_BKDpfYokYa{pu#?E> zR=?t0A{8Y{<|s)MZ1HZ|RD{yX;aTY+S+#*|TeH2Es~QlE7l0?zJWD0x zY7ClFX+_H9+OkC%d8RkJBxKuSS+Z{=`odDigXp?i&esL*F_D~n^Rmfy>!MB$=Jrnq z4CXYm-_r6G5P0&$WvH~M@)#i%w}30348dNKplQFzSj9}z%UIM@SZtCQLFI-Pip?NS z4}OUbrTK#XIk+4il;dz>C{ zi`7}FB9>~<8UyA>aw=y?XE>3MQcfGQ+^d+Qf@V%}+EY@F z?`iZ@Z5@oY+bMHxNuESFB%C;`b7tp&wau~TD9x;KTYbmZ*kRA^RErwPM$`VCSS9jw zMNN#tLQt`Y)E`0xWiT&%%k#LXa!J#m2)5IG@oMUnzS^{z;%uFRT@F2dimH<;Y) zp^N%~?KkqY)|REP*N4u75d9Fvu)3-wYa(FI@N+_1oi_nkZAEJ5Ct}GAl-e6w8#2RqQ4S%8q|g}B@fU*mLePm_ZURK}kK(y3 z;f)3H3cmumnktsFF}>D;D!K13y85V6Om6rWYuib;yrP|UgLMiUj=QxAgCl`JJ#KG_vJfd0s2OBbCYuCL(~v zAX}u9!=OcxPJ%gtl#p!1exH$r;8S`h;x0OQ%08oKBj*p_TO>Qv6{lJ2d|P4rYu(Cf z{4E-c7X@y)AI>_!dvR1<8<_?^McY7cK}hfP=`z)19!XlBE*tMQH44ofg6~FP#wO3$ zPIYCQt$X=hS$^|yh)Es2sZIxCMU0_jFBShtR30Rq7W8TZAa7#V5>Mz;L~k-8%9-PX zb#O)gEU_SC1s&-V6KA^SdF4;n+~pcN#M9k(%43zQ00o9h{FW{ih;0B(+m>ovz>9GV zZ!&y05%`hD@vIGkd5&X@xxv`PWZp##?Xlbifbw7~#SGtF9Ab}7#a@e&$Ou<4PRbj; zKE7ysNOnKQ0>1b6-Z$TK?D@lE*BlmMjlsY;`JeX(*WNWx`!%5+*6J`1fB~I4Q%*Z` zFrvlw8KJLnJn2b;8()+&rq(_psPR2V{*I%yi}lnOvb&h{;mqf^N8)01M3cN7!4J_Y zV$yfQRNZ{(BGv*|2gG}Cy{GbgI2O#>n1mFQ<6@hM3C|}K6NB;Q+lqfOJ=*BM!zF6~ z{>ebzaYHvKCU(u9Xty@3W8Yt>1{)ODtZ1v^%8Oz{0heiew#lkX;`LvFw}_E`Rwsak~ai-8#oAkh1O$ zQGUBvc;%IdiN$srr(T~Qt;+m}J{C+1I0OqlPT zxyqMb>Pnj|Uu8_H+c(*E#N9F9V?<1_obK52-(&lDIhMfZH77(PydE?iG+w(c3|G1N)q(e|vSts}dfZIegX;oQ zDW(dfiAV~`j7bxD=Th%AI{QppIR86tOG`IpIlaH3jGmXcpRpX03{^AShB0yfdhCG; zKiQ^+YS#6*&o?{hERoj4Y*VW(TWsa1DuPxj$d#z#A5rg->%9gy)O8a3|8kouu~A~v zZhI4}H7%u^L^$n^ zmtJ)4n_Jh-q^Zda9GA*-zlCeu!spl6pLgdG=oSIlt>MPo?Yd#(`_Ow2bnjKpqZ*h0 z)MoCivYn$tgDVSh$Vv+{x+IjO2_zEXI3r`prcZYEc5h{qY>(a~{WwS6xcD6TT@$y; zddZHHbv=(;lkMou$>p!>&3-djtHMsSj+8F6-^9XaH*w#5*E|9q0gr%3z$4%h@CbMW zJOUm8kAO$OBj6G62yAi$s=-=xaAhr=cpnylUH`ZiP{_4#;(d4oJOb;E0N=Y`lbLzF zyI%d-^=@&!+S_Lu((BdU+O<=C$J+VYXix6RM_t?zr!Lm6TB=rEvsK0NpSRMa9!h9w zl2ND(*A3J9(ZzPPlUhlsoxRa@9TCa)l$sK=DBDLbY@XH`i-OcV^;e)M5T$H)%*6VX zG?w*Jki8hMg>6BDguFq&IR=StEgFw~=(yBlAzM)4@YHH;==zcC)j*!8k)l1 zsaRSOLdQ(LAe}&?KtCeQX_99nVU_EgUHaE+)?i2M+_ci6MYk`zJZ~nc&rLpZbB_**3S32 z)iw2uo6AbUja;^7-H>bMX?2bw#y*lR)UOsZ>`1N7-C5T%Yc7DX?9tUl|E$Lfo7FtR zG-l5VP)flNh#DGy>(XIXZ*_oaNA`*8|qq0wEsp(u(5sOn}N% zZQ2@Z=c#QMnvdbuoQ@|lh5xW~GvEp~SIFr{q&RKPt$01MIAmp^xxMgD*P~h2MrL|a zPHOXvGOf!Srgd={CtVEibi9eN$`)EG@`h`~$H(}d{Gpd4&-GMeJ&k+EFr@Cqb8M8k z5I^gl$9`AuNfuQlzbW6a+4>hnc15yOy&`qbvbFQKcAk3P2w%Y?aNZ-JXbX5gJI^-d z7tXW(cHdpqz3Jw%EdB20>W}Y@N5CWC5%36j1U4B0dXx31>+W3idtIBJcZQmJ-13gi zCf=ME?z!+L2HkhfBj6G62zUg}9|WdF^?bb7MF8jj2zUN~-l3=X^UHa96Tfg>mpfXt&K~VjCnGWr^qf$|vSHbgV1>(F~#-ovR0$}XA1quGhPyB>Z z_w@$Jlpj4Ss#8%UjV`K8p+6$}s1P$Zq4%1kp+eH8Zn%f_pX9V4G27TL3se~qwJd^2 z+Pv_5Rl&sBk$F1`CA2{_{*onyDg!I~w1S|lA6_!K;e|%7NuJ`_4oO#J{E4T!GEN!2 zL{5VXIWQ@4TzrWX3t&F|lChhSl}-ia3$SEEu|ANTwM($gX2DI7(LQky;*k8eCG#+B zc(2L1KTY-u5@*+>%n9mbEW&$*coP*QB_Sp8pW-ERHhCt)r8RN6rG;@D+jUv!p%$5j z)t#R;o&ooHP65RrqD0v(ad~FLFl#wdu8_&439C&rst$~7rAMCvdRh&6X9~s8e~qo0 zo^g}0s(ryVrP`ZWZFg2Mc5d@trTB4(N>*&FkcL93tZAQRv*NSZ`{-HA)sUv0rE5|b z+m2)RkzLoah8u7TfFcmKe!fwKI0}PW<1Pm~q2qQ!jxjdzz}969I3A^&ITB1=-wG zi?}x#vOnxkDy@-eriYy^UCop=&I7b7=G1A&Qj?h^3&q0)=e#i~ThhiLmY@3qP$VE_ zo0bAT3|3Xp&mazdKZj*uRRt*)Lh&|InSN(M7Au>zcGT7&a=oZxHnO{q)?!kG>`>Vm zj5ONnNux9pkm7VxB-pXE4$a1D^k}O+@8a`jZFUwG11EQ4mn&CTeLk70nvRWa z8F4U?a6KWE_d+T~aD{UH!q%onk_lEEz*Gb0xR~yLb5mFsi~gE}GjGkno|I9l|0!vv z*xtP}?asATO_$` z_KK<)j+C~02sWSzQ_Zza%Efb^$ljXh!@ZU6$Y8@eadu4T?&=p?#fz!(*o7(ksW=ST zJx+>##6zVlsTflCLd^~(2^f80!~Fke?|q;vJI*@6x>r}~r`NLe)Rx|JAHztvT-AQ)Xpm^|LI_v~kvasu%tde+4 z$o9d8Ny5y|F=ImpmW3V6F_SZJSZja3ud437@4mlM>tDC;C%vlgUsZkeeN}b;yj$=3 zxUm6^k5$?t6R-u-JbO#CFv{9D!sBI4T}@+a;EKaRh=g+ zSp0MV+kszXiyjj{BSbDtVz8v*ZYifMWhe;XFQ$aFOgs3c16#^%PLik*Jy;3ju(eJ& zJ@|b=C8wY;{x+v2?zXKZ*2P(8`E{yyF@-hNyAFjeh5Ht%&wDd9m)a&J-zXw59uSYuj=vrXlX=-B#hO`+{M$ z5;vA^(siZw{zvH9wz{oM=pl?90pjk{v}4K55Wq4TXM=^gTu>yEw!aNNVev^sDD9sV}H}2~K~~VHpTHSiBkm0H*uc(azfKTI#B8+m&eHSy6*8 zLf)d`7$Q!6+Chm9wyepzwJW%|n1|wlAL#YwUHjj*vc-5YzQ*5)Z>LZ{8(Z+LsthgE zesp0$sY4%ideRnU9RWSJ9fj)^^yL~f*O#7a{E-E9*0O*cN1`Z-+1GR)_?nOnNUc;v z!Bp-l>5@iq1Jd=!qufd?PB2j>GnF)1lc{cYL*`;Kz1C3EQ*)s4oKzW;9zF}=EuAN8(`!f8rl+v3 zmh&VyypMdNG3jfbtSzb|Yl~C7?!9d0i5{rktkg`R2Jk4oGU%DlBj)TW&%=zG7Cvb& zr>q}{Y6tpJE9&3@fv)8uwePo4=H&F!f%oHqz>_%d`q^R~ooLOc+PXr2dpfhdpWXE{ zy{?TyDD@;!W9jAtA4(nv!^J?^>wHO1Gf>b@df=80Ro*3y`C zs_D|>%YhVk5vqo^C!fpq2f9OSEPNi~*A0o%{gnxKIYQ1-l_7&P(MZ}tI01-fh&j&Z9&-B`lcyYi=&AT71BIcNV=a1hd5#Zgtfdur zr$2Doo%ccd`X7@#!bz4!z0uGU@f!{Dny1y+G1r{EagxZu1?&&B%;mfooVrG`G0^=+ zQv3QtPV$%pwDW#OXLmdj=>@72{@Y;ljgu#rl=|?kH)^s6-W_S4M@423Cu_!j_+5CU z0`h@dNh|x|Q^_e!`V_SRIx+Vki}5V7A-%w)AMiGzuJ&LZTQ`g#wsA^8(N`~Wl)J{&KI&mB%lM@Y>s zY7D$1$1yp)Bif>*+o}e&khfLp!7N%`q@}n7Zh+fk9K^D1z<|iBPkZS_XX`v31sm)- z8Xn)ibK&)v)w>6Am_$C;C?fs}v1wn0d+4yej9gX`K7r2X!~^8RV^PY{F3)7k5*8B* zWqGrqSpl`*KL?qqZW5+9p`M)8;`tn{0-pGhSR9a`^Q%^_%bQ@B55KFaYt_NbJ{nz7 z)@hB8riUPF4S3q|o70quo*Igfrx0uk3u-D@50bC2Z8_Vd;m++uQ9q50!_+~O6Idp( zNO-!^FVy>0^m?|deuS-k98keN+S&|8NDadsrqt)bsi72KMObz0WvLODmWsTzNgKs%!iIysG=)rM3uw}_3TZa!#N zuYtCm<>|WsP7&o)-cdQvct+O@MK1;tjs)XtNP5+z(Lb$LsP-=w)DIhD_8D{<6}YY# z^vg1Fb9X8qGCwpw``nA zN}YmqA6nxM2;;0VnuYa3f*i}b=EG8!tjz$k@k+WDT?`(>P~$@bxaJ#&-Qty`f^nx3 zQwciGh67Yfz??lwfg8G#(;fIJAg6{@egsD-o$@w>h+)2D?DI$~3zV(#gSLl|0ro|z zvLaX-+)xJGBluV+Wg)3Kr2~Jx{O4*BJh9e#As>(u256Lbs12MLY9x?{%QbME15qHT6*>e- zfS}6DK-S~=Hmf6O`rH@b6TxU&P2i&|HddB1W`#`mpm5rxFM#z`=PZLBdczvJLoleQ z73?nZJJJ;k(IP$upLU?hoOTk~M92=|nY+W|%WkG5hI3o2rob`*jJphLm!;6j1@(el zCiSK@h#=QN>os$%tgJsi3B%VQK5$loZGdUy?ty2Vl{_T6YHaWLt+6%AP>86Y_E_PX zz@|qm_Ju;)E;(^PPalW#4yUe+&)1Pj6RsWIv6yud7;bSC2eJR(;<>>UYqbnEasVQB zxw64@Hx`wyqNu`PT|}xDF3rxf@V8t$@vLX3qTlt??$FTWlZ$JuGkS( z(Mw~K=ta%gd`SbHeQW|B>^5D>%h=k6!ECT3?4UUrbXvP+)vX*hN?rRaPMPLfeCVd| zM-K29p3l{4$z*`2E~}WsFi7_)L!N;4dCv?jclVV><2q8lZmU+XCUE^iIoyNRY(UJ5 zc}@s^ZLWd*D%i8Ea8hq+?+$`ar16{w3&vEOg2v#~TEo`phgP^GS25ag(ytOb$Mwsi z*b@#cnlb>RXM;=J1}4)OZ-z#$Zp-4}0Yp9){aFM^rKqh8Df6y+(5e zHAt8W#0nP$&IgE%;%Ad#$utojYaqNE4p6#6;rHf#Q0?HpZSTyJt;Z?A7!2w!XDY|(>6qQ=e zPrKr6LNBexvEDaf)mxhSZDtps7{j(CS_yVX&PZRwc4kG^cJ`v9MfWDqzNRo31W#_MY>27 z5Njky@QIG#Si_!X?l7db9U^#&j_U!nBr#4UdTUTe2Q+x{albUn+h9^3*a2L)IS2s~ z)zD?FLC4O3pxs|?7*htkEl|KuWL1J3%aj%M*cfne{>R?t&BXbKMZA8&-n5APmmo#9 zlR$g>0Bd0>KI%HegtW= z$*n243pOHJsvqc~39-}Q@7ba8o2*sn($E|fprYs89F}BZO4|8K<8F0a@9bJJQ^BWVXhh? zP~V5k8A24RgZ8-KOAU!pE`XxZJ;}}vTJ%s68?@?KG=p&ORs6E&$sv1W3Aa#c*2t|C z7K0XG?Cjac_hV@OPoH}5Q~zpw@_&XqEc?iM)J{P4>^OXm<6viCOpY%teoZ~SI*0SF z>;3W{*M{QX#7{4c#m5kn{cl!QuOKF)>ZO+u1pClK*4Awl?b$;zvJda6{MxUr44=5; z7iFFxCZBrcrygAzP)mr(S+!^6kM*B@{PW;S` zkA3>=Z~nZxrvAmV@vra8=1HW_o?ZEvs*Uaa)Y}hT`2&-0aINiJOvcq&Tyl4g31l3^ z@ms5v7i!uV+*`po0*6VW-ik~0T72^O_?vHcF{#wz%E}6YP(O2qF-hl%J(H+kvtOxv z-w*skh{>VlpBfsTi6;@0Dr#FtOwf9dm{`Q+XTSDKmB=i;;f?k~cDVj8A7)IhQv0k~ zRKLH!5^k@uD-Ncf8ePH}@}g3&Y;Z46sA;=%9yn8weRZR+%%8vI%eQ>l?bp2boaEfg z81^&z{N8)PQIM;%t-7dV5~XQmtbK7oZfzcz2aQGM0u_fvM(_192AVc=Pe za6@W(iF+L@GkAuc58Wr)?_a#LG5*`t+3Iu5spsg*m!?7E{u=ww%K;3?v~ALT`(jpZ zW3q;>kU(#rPSk$1`w5*?p1V_VPicIT?Rq<;Z}^Uj`xxVYX4JdzfCqk$f84s7El$sN z1PVUyWJ9p;x}OdjHM8^p?jObXDSH5Y84vpx?|XLXfrCFibdEW7nJ1Mvz7P6ve5~+Q zANfe6?K^9aKL&D^ynY~*>!f>+vil~nUy*js-6Cd9wX6XStWRb7R{y^^a zlf&E>-Mb1ic@c|^a31QEi*#F(+tOn|I5`M;^@tb{#hUML#5)~@PL9Ny{A9rApCd)! zen))0^0|280I1|Df5;b^k+gjx^+f6kDIbmhx}%3a=knx%b3Cf1Ag!*(q*s|3CWKW3LZm`w z3HY6$izsuXFKl#kEil2#pJPL+@n;YOFl4Gwkd;bEb^z0XAJ{?ODR+9>Ww2ts&|e9> zpYd?0*#xAes7Ts$HZ36~Ni}nX-6M&3b(ts=x%v(9v)gEIN`!5U0pF&Dv)4t}dlpyWYy_Qap&7n+)6zxo+Xpl>{Cw z@GONv2H>}w+A%>H{53<7h7|FaPqSi1X^%GNoR@i^89hOJjlPr%wKe_xQ74B>18sz% zVOJ-qW{%@`Pvw{k@A4@}fOektWjIM<+_cF&j_+A`P#M4{!SS7;aX^2!06l__u5qHM zmau`P@#znoef{Y=E#0KtOf`v$#K4agIbwds%-I68ZP(#90DIlqM@?>b2yV@^=ynJ0 z$x26Sr7WUXS5{=fFt8Pl^2+Jat1Yr8$i?G)xpp;2p0HEm#G*YtA+COI)Z7o7GURs8b|nHB$V+ z3LM2X`Atx>)Ka`y0%#y?sGuaW<|KAxu(MeRs(B2xi2G&0ZVxu?Fc`G)&|k{a10pt( z`oz7M)#g|U$^sJXHIW?Fxkq8e&IDqt^$B`Ut3#LAMt5+U&|~2MShGm5^z;fcxDsb( zgCLW55+YojR(L4l6HT8)lX(8pwZs&2Nht^&)B~cSw}a3;8Z0bn;%J)Y`f$TnV~vB?uD?$u}=J}x{?D7Z-#EivIyH?6%2v!rWCB&V8M zkW|TY8rI=fdBltQ&)j%UM|J-N+i0dHY6$tsAoN}1xs`(|YfcOYQ`EHuB0`*i!VPEO ziJW~Fw<$z}S}IAbmX*s=Ii3(r-Vo>sK?ON2PAuo1v@?V!P~mdSOYrf5hK4~ypd82x zCe=|#Xk^YjEAxb0iw}m?B5^gYari+WtgwZZPi!C}hXfxL*n#XLZ>}Nz!q1ho$kGUr zrJ1<4um2~+J=lOChw+*N(_e%Ek=2Zk93?q5L9wi`Kpq@rmBK%OhaN3hNSdf7>!4w= z5)zE0Oe`DVQL0vf2*HvcphvfA>iv)n;v|`BT2e!l&vyf?|GE??Whj`3X1`Hlz1S`a z!lNfZOS+*X-?tRkxJnMS8D)TaOCpWq$tQhpz)r!YrW@CX*!52oWY!S#mlV{Ht8EJe zAJDN~AeRo*?e4Nt;x-&4$uAL|4^koN|MA-YjsVbi7(wm0kHu8Vy(#VTXl- z#OGOt%Xq5>gti&?BC*zHF0w)vH~BiQ{5NTc9NTL66d!d2iHqwZ$pjnaVq6{oZ3juB zW4kyJufUxe5wytr0Cdm|kO<0XO^+zBWO-tPm;maXKgMT%D{-`_>TG_<6|k~l9j6qU zdm6P`@W!%HXyFTKBR!RiQr=pzU~U8!r7!(;XI=GcukD;1oDJrI52&;`!(kObFgOMO z0@fzV2(zwu8D@u6!!|@LTqLtmQp4MaIBC)?d_5makirV}VNJr?uTmPg1B-wR!ANX} z(U_5FyaBBwu}EV$EWvLSsL3R#hx{00qhsS~-^<98oinExoPt%McahGOZAfzU)1eqT zmG2kkghY!xD>`|plR3T!LxRO*$S9nzt^+WXH5>8AcKAR%f@24A3(_KArVc^wD}sPI z7Nmh3fKy?I2*uf4VHx^g37G^X-4h$T-HednDaXemKG+Xm4e^w|__ayL2(`kAd( zBuHZ(hPCTYLAxD^618DfhseU=$mNPDvKEf1IG1CBM6wp?J*=UM(F(iBDTjDRfT#uLaKKTbKI4G1hH$*GzgrlHgau%1(B zM-D6~NC?M${I(Fst%i<`<3SoVt#ORuSYD(erj2pO7e@uNNF|YG27r1RG&a`fQ zB$G(e;=;im}};6NO9SD5wR5zCf&_oiapS&{)w zsGtQLMwW;h{v#QC+TyG{NorAI5hHNPo;LUe0}wf=TSO8cmmpdNc}{hAp?mLXwa3Dp z7QIC-kjn!fPVvGttK3$rf~eRR?1ZX64nKx+sY-XmsT;-zkoX+6Sdi&R32f>Vp~)tc zXi%Z9G}1N(Q`jG{U)u;#%Wv5lD8j0w0oKuFW&Dy#jRF*+bw^y`UL3|4S@WDPlnkUL;sOxnl;nX3 zdRv_D{bt(+EF2_P%b9dC!R-Mnw4@xrjuf7fCBj-YG7>+V+=}akK6^sne@Uz5hYWta zW-?|>l0{UBi^gPT(jr#QpLLvU*VN#{RW%diq`5K|R}9KV-iAU%P(h?t_DxW(p~91C zLaUnN7g8J*@sIUR`1!k|1;wo(ugsr!(F*5VtWo}Umg8moA@O~-6j+J~dsXeMt*J*o z9M8S&$9T84Pk@&UFHAH(Yz(x;t&+qd$0dG!<5iU;6m1h6{NB(I zT9t+uti@Xn?VhS_&>)5{|XeWaIG)`3f#z|LY1-LG(iT zy4-+x>6&{=vuaVqL^!aM{L>9gx?O`M;{J1g-_{@OgAr!G93-?l)38J-OOJ}=Fj_g9E!Zp_Z_n0P|m+2@!Y-VuorE2Kx<6aUg>7p+BU`n4?V9l zChM6eA$~hGPincftJ&jsoNt*YU1Rdv?RU#OiC#k<3TEu`J;} zwRAIczXy<~+f8!Hn!)WSyc1u&IDRp2*4{#jwgxyw1ovN0$$rJJ)cw6M_wLF2K$DL> zoU*s>p2B+(?^~+heDFi+WA~~0%?W;xHB{Ow=YGUD;hmA(pLp;?Zhs=n1is&|n9BWr z%l-J4O7<~^eT^;c9GM>(8Q|2uIceqIOo{K(qk{BeHG zk?j{Ms5Fsl*o!za^6IM!d){Asapc4r_QO$u{2Oj~@x`gBwY3Wu&SNLm=+x}&$cW#Q z^$Omb2WvX-BV9W(KQJ=DbHy?y^8;(s`1BnU?sPwK;?-C2a>6NziQfk|IyyDQm~huC zkLirb{r8_ZfgFAw1&tpt=n@mvm|tBz&S7>*$3(_wI!8Ds@(|`ok)PKAKEJ9K@mcP7 zo^YQi7MTIIHa0eLg0!oW^JHwy?^Kk%)to1OKj|wtmw;NAdD56azIt3CC}m8rZcStT z>N_TGo(v3do=8lZ=E>L?=LvKqCi!{7m|&g5^=T*Q^X5*c;+`K*c#o}_yY-9Aekfm2A{98hU1%FBXeV|lDmF3Q>twCq1r z3b#}!AJU$GpWBx>{@0F={%XpTzxH`}52Nf~jMDcqCbG{F-vmD)<+dP+G|$%}6RO4@ zLJR9g$k(2)gRo6bJ+NmauML_TC;4Plw&(B|Z=ch7cj8k1v?03LDK#itF!I~@O;DY1h2L36??T5)HJmPb|f6?u0M7c*@Io8zyjA|BwZh<^6 z;Kkgk41!DgrMcm;Vv~znFdw-P=UN6EI5WXO@d~sN#qHaq7a5f?njlK5>=h`B_O~1}&I8D+0k!6U5H0CSEHMx3WA(dethm zihuop@k-2%jAqYh&8X4@u5p|4IvC@8FMBsrRflL~t`Mg9O$CJ&Bk=H=x|-N5@4c`$h*!#l8>jm*^Z zSTJ2vHH6Hx(0>C2dNq zrzAH*)RfQV=`>;aF~zl7zD*}UlC+cQaX%XjX`-!**|_f*nqe^D$vbRP(hx{TU=m6TRDB80@kN47Xse{qBAIQEY&pi`m%^Xg>>hc7W^Md7L-S`0xJad;=yK3sF zExuMGEkfqU3@hs7=?+>JI<(&4Loky1+>3G|mPf zUzl51yA;Ofa!yi}X~@pco9Q!9c_<22aaBkQB%jus-*dm_Tkk*J)9h z-XFkPG02KKZHIU9Q;D+owEgN{7m~((6zCMGTAJ@Ia67zdaQXMcXxr7k8V(z2{ znG8QiN)6N`KM$dFo_A4rzR`XvGR`I|x)wI;v}+6CS<>>sQVk4n)sMOyX|O(@YmvHC z&>l%B>sslmT=B7D<(e+FM)U`fT9YhTwGycz^@J8vEgmRVobWEjkIpQKva%~w$L~;R z=S-4ue)8Sj5;_q{46ehOhFC%98ak|W`?CLSOhI;^Qg&qf_c&@wo5xGSnA3kB9enHt5{A8s7=juh~}k- z8|PMAbg6+3Smgpwr;Yx9X$4E-qm;}cI)`^h{ggt@PouGgVS3aqs6F|%7|MQEWX8JT`_A!p(9Jkc`7_2uF{~6VIqA9TDuh3U067t(BWJO_6b6Q zlif<5ORmW6b!ZXh^wy7}HdYAdrC@=P=DBVP#*G>H`Hbw(n&IyZOvVb&sZeJC(K&^6 z&8tPRF?<(NvJWyGV=9_ejdN|=D$uMrXYe}P8IVO*64;9siu)5};p$}aKDc13z&2HE zm7~QH7#iScU9h;SCMU5Ec}%-LU``mQ;s>~$;tl!Wk`?KdSQ&*w4r`tPwuNAdt#fR# z$rgTlBcLWH!N@hXh5F?rryHZM0S2>YevI&PvY@lU+|^esY=*o+IlC;n$Bn6W3EGpc zgvEP%S%Zo3#VenN*Q5Y5HGI*6ZI;O?M{8u(p}RB9byN&If}lj*+&uKvt?Edz)!2lV zbRt+JSLkkl@OVG0dAgYxpp_VIx2`isFvPU`X%!X&Q*I#{7lMYnlg6ufCIr_aa-DDMd3ze3NR)0Fpf<0# z>3D1HMaOn*QWTLye%QnZW4?zD5UQ|3WyuwPo8g;`S=(Hp6^0dWI{TPL^O2f0R*jF; z#u0{!nyn;nm0_7^jLE@hR;hR4On4Z|_>bbqs0PXnRqnFxvJ+jasX6kt1gusT&Eez0 z0>#>86_Maq)ddnSORxtIXe@a)!K{cgTE*_!9bXDrPL?q@f?1{TpFtpS|C86`d9Vn@ zfJ&BlnO@UFXJ=5fagVxf5lZ%|xT3E^XK+cvD%h*q3-pmtRXqkB+$?IY5lWi{b^*?} zdu&>twcLRR1`s8`YmtiDA?TR&cQ`>ThVYHmp+kq_>|7YvC#a@rPv4%uOY0HYCdLFk zN$UmzlC<56yYaLQ_uUet(T_*!+0`ZW@hcC0Ve;0A%7G7E`H`QPJ+l1udmA5G#5}3L z@5#!&*9{E~UtL!XsPBmuDv!UQhdw_1%@vHh>XFCLs~3iE+p^=L%oB?-5P;pl-BA~l z-a{cy&`qcfjB~FlqIhWN(9jUiBz;-d#~M?p{85TJBqu9K)=Ab~4AS~MUEiD3Vh%5u zhkq4)yQGDuutKgzzazZ-w;=uh9 zllw<*xX{DYxgPRO7f)1i)My7TCU`LWep#d$6MB4V4SO0?YfSFH|B{J`+`oG9`TOyF zI(m2Fh92Xmc3V65Y$b1^dcJK;=4!9_@v-(%wm)~8ds4c_WQ}iXl$o-t=gEk~WbFA_ ziOKAV8@fDq&YoYHEfyqq5aw_~n{S>m>9KYpCMdzEY++0^e!2q3V;=hixVMmq7QV20 zB`BZi-zo20%!x- zU#`eN`kav$hjAZbz6MXv2HPN$zJ+~@+z*MLgycO@;mdm%NAMm-yq6J!RQ4~jzOe7n z?`s?<{U*Gpk+N+8H!nBb)ZFp80atjc!*S)xrkHKGp^GUvHOftg*bl`0KT4fH|6g9+ zGm29acchRvI?L)b4TQcO;tINc*Awe0(ot?+l(I;(R2wKg@n zHoA6U?U`q|$2Y{}*>s*kycx@h$1Gss@cQZOz!@2V5)0fUXIeq+ekF~3IEc9*r z^IS~Sg|)FU?(xMA-`^X2RaGvGgthC!8sC@OB_?XUF^R3~YccQSfuL8Ecj6cI9Q__< zxX%(#@NkJEWb6*#)ftgDL{7eb*Ix;zOt#zu->%U_qV7zLVOw`9wZL56sP94=Cn5(w zs$BaQBG{dYpW}TSw+c;sM{ic~F(dd>1{{|%C*i1&lH2^}IHKwk!(#Yj>M&CLBgGF> zha=O5gqJw!jOZ8@dx`P6WTKhr+_ZDG@hD`-r!%wOzgo4q@6t{LL{Af6t?qGFA2))&D&IN z)>}tsecM@dQIgc3?P_W1lGnE3D^^dtQ!mt@Emto9O78n05eBK|cieBpw_;tSGURWX)zS?5M)FE~<9tI>nqklhyjT|mctS`ez6~Hwn z9x6zhNT`Ws1tz&7A+=6VBjYDOhqQ3ObRw1&$iLuL2{Vg~!;I*;CR`bxdKSB>n*{45 zOj~_c+XJk#phk~<+8GfUmJ!1(w*bnm3M^%@oYOB-s1Ch3>!L7}aao#sa($Uri|V^@ zE}-G}dilF_i~%t&WI~sLKu@_vZ(~@JX;(a+8;AH%<#`k+fPl!u#N7wOzs4 zYOEG&YDDvAB&_C3^WX>F(70Euu^0Ql*={pwrEk;u%nyUq4mm|nsT2u?5U32;-S;Zj z>5S_zU1VH5-JwbjZU@?B^lW89X=NSFDZs0d!BvGpr9PpjufSPxB(I;^XQEY0DgPF@ zc+}Rj#}os#AK>^8dJbu`Gf757&|>b3pnsDjwa{7wMESup+sHBx1U@<+ibHEVpg4~D zZBtul8Xe!HCL{bJ6jv==w*w=9;`zS1@+*$M+|!LZaTEP=oB^mEk4<`n0EVTP-)&Ve zPk2C-3z$8B0Dfmk7mUs-rKCR(Xq@bDid)X5t|FO?*pysm320h@G9bPUQOqI#WBX}fa z#>gCz8r}K)aJf2d(7)>~rbB^PodRxdGvnj6^XDzuvS{&)#le3LNSSY~2XsxN0j&*w zW21K6Ol|QP4jN7DBKf2 zYG!5^)Zh@#yB_toB5L{Pg;6R4x2Rn%OPj0?S?4Ym+dy^4F;CudeC7DeO#Jz`Jvj5d zpLzR_-1DZdpZ~(inZNwd@aTJH9vyjfq%y*HBwYVPoy@zuV$!LX+s8kSN1Tu7U(++j z{NLa6;LQEsc<_C<-SEb*-*Rf^0}muuTxl4SkwM-my6*W-R!L0cc2g&fOM%}spjSIv zydk~L)vZJFW$5w~QpDs>g=|SKmo=-UV>`ycL(k9s>7V`CpFQ{7bAR})|M;J=w-?xR zN`33EzV%1n0QUUzzxVv_KneG|zOiFQZgRtNPYu_@RfFk|Z^#4fPBD|XYS>`%)Owqh zcYr8W59LCA?#3H_^WsLs=IYeLoyMnve)SzVrHc0besvn(z(?a(Ro`(Pt`x^V7n4@| z-@^BxL~8tV%oX^de!QjkKvk1U{ygJ#!xG(1N?H6y*a#bFo7lh-cn=EcY1)Jw?aBL2 zGQHYk(zj^*<7s(U?kfBM4$9+M0;#X&--D7o5sMuBn+)Y+$1J~psn}m$0gW8A%lUPN zwUrwuk*k4Q!CV*M_m7s)t2cx~$9#R@uPVEUV=@iIlLXL9?1yg^eY^OE8}$PC@zRZx z7$nwy^_PVnxbVZ{NrAV0}G|K1Y|`cW?jUxSSQPb40+ z%MBurYcu{!;))248 zLVynnDe@U$Mw4c0z$G70`?y0ukT$MT$!Up@23#P_%qgPyQ%qNp8{$HdgFoOpPdhGB za{VVSmnWHg*;F^wgxXeBjMPaM6vi0vKs&BW9Ur11Q0yS&o^+XRqH=^0JS#1vmb7!S zkcymDCZ+R8GZz&8wF+?U?|}61Z6b4oMuyK(M@edOc&>&#H`Sv-2|nR(mP1xPNQtJ9 zNLB7?$zL-;=1wt&QZ0wXlCjP_G*ggd3{JRpfNj!sHuQJ06H10WRAhs(ChfHGGLtxr zoeEk`bok$Tm3CQ|E_qYiYZ$4_rLJDVQO5A&SV%K0W%Wd&oQ4%#*4`Yqi0YJ)VJWL$ zq({*p4tc0n%gRM6C(&vm$bm&U%CYx-KBt^&dIYBtMOJ~13p7bBJgxX>Y}Por)W*jb z@|o<4pYXE4v(Ur=P|_@M@kqO=jEIi<+&VH-PcZ`x?I@q6qA(?Mi~<@PGBguFn`yI> zN%7DFmGFcCGv3H@`XMLtk0D+{MN~OOhO*LmYHBGs^mSL9vV42Q@yWBOk_Jh>uFQ&x z%qJQv-Ykyt2XK(HzzmwcO(oWu?&6GkEpJ(KwX%>X%cnGe5C_C*0G+}evAd4)gDX9gdhFC_ULG`*n9fl0&c~OKKfttFC>i7d*rvUjhK87+KX$6MS z(L#);>*}&k$Kq#`r{87Oim^Dswolt5gP>Rr5ZMT6vWL~lN4U;IV2NQ+1s5OEsFuv8 zKNOT=QN~sLA;*f)mDP%M7}TtGJm^P?_$hoKt)VQ$M=1RwdVoKd8kJa+z(@p$9JM;T zQman`2i*`3G;6?61D?ELrQtzz#dxrP0u>_}>sc2VYHJu^iJ(d&ZL4?=6drQ0j>}YF z2B{S+LCgq9C)6U|r-8Eg?2F09gHK40D1&-6%RsG;hpLWXU@C*<;hW^CMACd>@CVg<~O_j&Sa-k|PO>#f3|vt~Izz+K4dW!O|$3;Hq2jLG19sld8Z&@oTRS z7?@qa#LdD2nHMI8UZy<+BdJS-R}Dq8h6Bc&0|*_+JPR5nq-fA%ZIN_MJPryHgx}XJ zc~b?@u=oJ1q)3YLz;}63TBKECspuQTnO|b1Y91rCUBp$r#p2|=T!o|xn*FLQYnG{5 zy9krzjB&+R!wTGR9sPB%s3xsS0-_DrtQ+1EQ9=plsUaa_74pU++5p6hY!hmWiMkS2 z#6aObr>&9U-cIF7PAz~QT8V9pKE+mpT(Qc^@1<+x_>b|?31^J67))RqA>=Tmh6AX0 zu*?%>m^DGZ4^4tRVM)knfO;&=yJ_v7Bc-&KSQE$2dU%4qaBl)}?m|zs*oAvs$+Y;2 z^>N5*^$B1{@d>Aw$3=o?B<|)9NzlR$R)+pToI{;9O!L(+Z{QQaDrFQB{3pKHv!px@ zwZyn5PGxjkbPPNw;135+6s9fQ!5+5tO9_G zTKP{{c3H2Kg)$J^ToqQhD@?6V+CF72MVQpoB2?qVVsK(C)$}q(*^|mz2sy?USI|qu z+diol?J@OjsC7(gMp?0<*%a>)2$eFDW(hUPLr(AEz$B^5$vLx#rYs_b9FqiQF{e`+ z$`Wy7%Z)y!GvLl($kDH&jAx0VCi6r+2?b8<6?)p>D!|A9gxJMM14|+CO{EMsi&9dM zVpp4`%~Zv@g)(qazpOGelcpm@b?~p`8uZhHi&(o{DI6tZXF>8M;`oDu+?5Q*90S9` z1n0{5Pk@GN9N~9Kihb>(nu<`y$l9gOsF6xl;avfUUxGH_ZalbLnOs2*qqR8|>ql|$ zUWDN*$&-;a7N+_(apq1+RaOi;5LX6VY!j3Oj^dak)P+s}zX68x5kErZr)3cKooi^C zoOS}dMn@9yfYUx_DG%9oC2wPcf9ddeM$HWHrHRj~PefY1L*12JZB2a^<{zy*hw`=9 z#8>0^pTQnHbLYFAF^Sn`Qs|_KSJYq`R&|?+%#fK@vuYe411njMrxsU1V-TYl=Ek-* z7=IDmNEyR@0QJh%xUy7+$M`Fy1hj0j#Cd?rMOJNp027X-53&XiD|oyR^$*WFItqN0 z$RPGtDB!g1Y^K=`>s$o$H5F=KRPt32wOTb9H|hw_BCV#8+JKGjB(&1v1F+8Gg#GqV zeL7%$phmZIyVRs^N#%^!^$S3zf+Q zb#r8-po*g-%2tiu-2$8TCA^F z)+$R6EQ!w~37-Rixs}NuHn(yBFPt*dmANEtV92Wjk%kaZnURYxWrc#-S|xR5P!$VsT=XEU=GB zJON^ohfGiok{Ra45xI2i_8ie2br&|>bs&wUm1z~PI@Oq&0pB`gLdGl@=oT&qYtFYH z!`F!#Eb{T0L1J*80*IL)M9NYi3c@hrj1UUSQULBtfu$AhAEcu7BfRhhWEJMCklCMS zTtQ2XC`ao3-!2C+Tor2QTpj7@ECWeW?v^C7-CI=475&?unCkoxbXlL&j&$q2n9h#7WFV^eO!q^Xk^0w8Wh24 z;IqhKwd`z#7^7d12C2$%K@!oqh6#wXu z%qAdos>R2pS%8F$WXUbFGuA{T};!wr=!igj9Z`&Zyf@m0?0K@%XAmCZ#0Gxl3BVc_VGSYCD0P|IcN}Ae}H0?07- zy!dFWOpSeqVW?_-@Hj3mngS{H*aY<%T$dzPD+?3t%E}7*+xUpK)<$MU4OD7B{O&^s z)Xef*G14$cX0V9qxRzMefFl}snFu1CsF#kQCiP*J!4-c34(iG{9kInK7Mb1;Mn;A< z;=2&07ALQ$kWJJz5|GhZjGjtuZ~%NWS9^dz)-iY6dlx>nfBd+ftRKfIu(Fs2ld-|c zGQTt;V73_kCy?R4j+FoiMqtE1lZ77QBVghD$i_mW`S@>eeZrX72=6WNI(=u4SI%0z zh$8inL32?ZKRAGxj18MTb^(~$V_!y0h9CRrNB^H^zjiiSUHOi~OP~MNd%p1Re(*;= z_BUs5`orPxxcV>7{+Dk&{qWd-df7JW^)nAW{v*|^&qPD^rBCDgGW)RWrdT!nHPpzM z^tSbE^{wNTWw-cu>CqQqW8E&EdHE$&Tt9OrvTVVg`Sb$YJ~OcQ>_@(kj4WR>y7VJI zdh(}k{>iK22h|VU{*yoXsY74*;PD^*l?UoCL9c$MKKaMDzV`08avvT>Yv7dc{7bOn>@X^o7Mw{DznN$-CP)BLgj1hy4k`0q7DGRKuLn{tOCGN* zVx`H}F3o!CHbH%+Hf(OQWWcwdURkkAk3IU4^UtoFjlQ_@=7B?R|GN*o{lMHmJ@-~M z`Ho*1tj|LweCUZEQOk%)^zx_amxmwDS{(m}s2g?mwzY%rf>k1?_Jq5Ajk`-k5;6<6jElLRq2_s~mK`)?|@KL%?N6E*O& z%MCRCbHkVsupdos74-Uz=kVLqqId7PdjWSmH9tQ$Fgk^wvYx*IZ$7DxRmZ~bz_!hs zes6yZo=wf$nD0;E!^h%2L>FTk|A0ZCaY6HX^YeJ_A8$WNAuI1#^P}^rY%7s`AKJAO z>=Hc*$-PhAasK>iiHRD$;lhgpr^l+#gnqTnn_{B=pj|T;#mn26?@!?Sn9S8?M+Qen z2an^$f1`tgqdfZ>9Dtv_-u(QD6X(}@#e}~Ry~U94L%XIzzeJDo%-^I<#g6~2eY7Q|` zE+#ycav&jLP#o#?rlw@=>Jby}4e&6)N2UzEwrkF(m-a1H8eX^TEl%!ijQ=+IK7a0BRr}skN&KEW8*ll^>TI=zcJ+pG)#oyMDp#}ajP8u# ztATL8ud@;)&Zg>fA!q$MsigE#HU8VIfHqYd)sw~iE>-(3oy7a6o8NnK^3L?VC#+BH zn|1F$*^fL1&96%l6GHlq520&Dok}Vban0B}oP2%hea|jEkT2oti&3AeH@qK(dP$`k zGe5|8g!p%d;C&}IAN>6O{pmYGo?W{6;7<>oqaNR@!u(AmL+7$K4*$hEZ1sK4O1Hzr zCf_F8egM9BQxcyHe7yhUW|rf-Sq^^wd-k{Fc%R9^4<+aLev^anwSRBQ$f5v?jaDMpbaG^}#2<7FD*Q}pWloD3)6}s2d%vZmZAYBkC zX@w8|Vuyq52aG7WRN|Z~q;t4OO%tn`Y7#XQ{VD3^LU}5#4g3jd?U~H^S@1bVWCC3DP0CB9G5qz zwwaV~Y;vshrbCW*@u&_}*nl86*XHiwnN-kXL4_hK|3E0VpgKTjNrwXM*ijQRX`+OH zLXI0O)|BP=qS`wN#d~Y^(lFf=bPyKXI~oMY?Y>{ksG_1s923J(AS-(`>v>NXbXU+S z)b1PcnU>soO4+>Ha^QwMYT*P)`@C&m+pBI0S4%B2w1MHfV5YgX#)=#PLB9W2NjM9& zfn(?m-*C{X<~VzS+AXj=Vh_TtzDHQ@BCtEA6_jdF~&>rRAtb!0cpvbBo>_y zf7GOqw8H`oGUWzoK5y2iwo*oFY4~!hS@{}p%R?pMj8W-AU_oQGm9OQHg7`Q}DRNwC z77O4}i&HlX02@20sE2<%n*ba+KH2guI?xjhWfRC{C1KwD7l{l~;WNc|x*i8p*=d{L zPubh-tc}$40mxS%S2b!up8l}`JjnyzRzmv`sPj$QJmGK+2fIxvFdI;d4YPPg9^28x zJ-GVa(2DL3+)dBJL^T*YDKz!X3Onf0(Y%xd$QZILmwgYu;0#tANgnWJvj3tot0Tzr zd6Fl3;?lS?p{H)E0-vQv4Vtx>Aa=cGbZY7`$SgXhgHUqUsAKIr)+Fjm*sfC8LO^N- z(UKZTE%UgGs2SiqPRy})0$S32XB@T8G~a%^qFC949dgWJuNLx9%6cS?2rVZR z2RAN-TfveQO0RbS>fBGVe+xRIF7+QOI3h%-c3$9vS-@P zV?7IXQqXxpzGghZ1TewMFb|H4zOZqk=(wCmHR)!INk0RP{ZENn&Jm98k>=Z{YMkoJ zti@Q62MAPlDd!yr1J!n)RD{zemBeYE@A&nD76K-IIBawlv$B^E!fi_9dk!0k0cdblJNIGWYw!FJpdtk8e3{fS?g-x z`7(tBpt}RS!!u*}xTZ5ZLZu2hbYNvJU>GC`Kq)qbvlz2p7ygDJB}tVN<_4d}3Fm3R^3!uXcu--JB6T{MIpC{X7dq3EQxvi{aSZKmkN3Lb? z8zimGG25Vg>me>=dT6yNxMi&NOOIVv*4;prZoRp4^9TP?XW8~huvQ(N;qRt#n9CT$ zv3pXPtKGOytaEprmmyGk1FW*NY=A$Lhy2P3rLUd)ESu8a-e$My@a2l-WlGF9=>(`%_#;Lt z8A~eh(07d7=J?pLxWiD3s~jpVF?nQp`D}f#ftWmgesX;5Uw1Zh{A-hPFuiN^GNfpmkDsO~UmX=*pJ&Vo7Dmne;TW>o2 zGY`HGj==wphXh-DW$n6#Hs)aoF^L8n(Px%_^Zd<^EdL*QSu;Mo<7?ONFG)-u^D&7K z6D=`ORm24I1%P={|Htn?S*=Z0z5`yj?88-8N=)_~zWaaw;}ie<3wU?M?uPk!|6K3< z?YG>0cXX(;wFkb^S+?C0_jGWlR_EvO1UDZ3&gAZi@3HE{{c3bB++4}Ty9^64S(BK& zc8SEK`#v~{$y%G3oMuc;@BWzF?&isBw{xC!i%IQ+yJt9ckIB>&=E)i#QV($d{lvyj zfA+JlzIyuAz}>BRm?x3Mq}$r1?%O?m=)QJIOl0Fgu-M0>Iyg8mfE}F!ykl&FaL01& z`QypqOwoY5uqP0_ecV&Xy@5q}MvvW@;X8w|5BMVbB(6T>+Sb!EzHc}$#v}CDLkIeR z(+hUiu5wt7>lW8%geF>)z`g&OXp6$21eTx^S?mgFa+Y)!;>~g?<#nI8J-2N}@ zV8pJW3u{xdCo8oc$C9a0{AG+;IiAc~udu`%@P#Lbgzo#H$h7?@h?6%)TpRYv60)b5GNCJYGN zGU@|(#!$lR!UK_U-3d$^jEcY=U{8-nY2Pk&RvcC9TZ#g7$J)%wS3tfCAb-sR?}2&TZm zQ!HvIU9;MiC=}QnvS>zeEVZ`MZZ5QHWt`~8GrT7zW3s1~D471#x@+l7+_`C!DeZbp z_hn(y<(ZbgD(I+WJ4!kVIxSZ&AhLI+SXPtKsa#Qc+h{E<8Ke#qvhQT%|Lt3~&xfas zRA^)+>bq`wHGEjed07)pJ#K_*N;J<5#zbSi3q(^rTT5i7!QMV#?Cw64Hc`c7b@}Be zT*9~(gURjN)MDCC_PYmp!7iLfy>kb+_$w$q3g}$_xz*XVs)%xNtC=L z*i)nfKjd=5GD;?Vt^@y)$h*WOs$7G80=okmhIYii7py7Lfgkc?g2YQce>CvZ+z7@r z{c1)yof2wNx1Bz@MKHo(+FHMpi9(t<9@7j1Az*xtELMB}y?ix9p8EtWl!TxNCeP?h zq*_fXDVInlNpg6`r4Asyhi`;*$%4yFz81&YD(2ZgISX0O17cbCFRoEu#(js&p=Gtmkhj*-j zqt|^x+D~g8tMdYm7?UbFjJ)xbN91@Db?Fl=YuRYmm~<8P@W#cI?NN1qVk>G)E&iBx z2PbEG@%pYVRFwlOIMWOhR?6|z{y$9*q14P=;a<6>KZZb25o6 zegPHd}Py1Hyf_W=1PWIe9on-GvJq?ZD;AF zDjB_EyDSgR3wcYsNy-W54TY7qW68AO<$+Y%|Da^CbIwae?q<@qS7oM`!tRr|daacM ztFyuAx)A^Ot-OouT-$cnTW9w*t4(dD4R80c`tnWmP+x}kQt_ z?*QG;>e9xn{k!45u!Uj#Gy`9|*m85IStUnpu>ZLlb`5&vZ|oLR{JS+$bL91_49n{e z{BOqX(vIie8oNs^+yb+%{O`7)(u=7wJqeckWhvFMN@$pl!b?*y_D^?<-8djLIk)1d zE>VF(Ce5(j(xDC8A-}J>;nG`L&>c#8o{ep(4Lef#*z%4v+rH5z|HH5b)H>T|+gEZK zaDQtT^`R*yIG*rqxJyhf*PtAJ+wO^pT)Sr{zmc-pH!~fq%(OcwT#D?mUG&@NG1scp z%f}zV+BF%tqmn=E-9hxll6LR>-C%8ccSKnF6YVCJHAT` zWlXv_rxcYQC_T{Rfy37{k-M3&yVG?IgG? z_$}Y0Mla<0)gsNwb`mwxxJ!4^j%{jtSFc^g@2QIPHu4DM%r3Xq6lpZKOP(gURjN)MDCC_PYmp!7iLfzkt|2TBi=9w+-yC zlw3ypg+~9c9dhNSHG9m}w6tjzZh1vXj}{WsLt&G|z3kYeW-fzjVm17~T?XAKyHI*y zYdv7E-A%t`yS05SYcD;}(F479mTlKDzLy;xJMcOb9Dez7=rm4*_2tkH*N4M@aq0KP z@OlwHdsjl~fzkt|2TBj@pa*u*dmT3H1-=gL_=ZcD1xpX~^g!(`JymwSg1PM8wz2D7 zUK&_>V8=Z$`g=QW!bKZkF1m)@Rl((PZv{TRjK2HbT_dElru0DRfzkv0dEoH#{psyy zExVhI+kkClOg7-OEiO{~&Mj_W8>+W#qx_xQZSZv2MCpOj1EmK_4_rzfs9kX>S=-*$ z%kBM)hrisupO+N3e0c1V3Rh`t>4DM%r3Xq6lpZKOPv`&u#Pua4DM%r3Xq6lpZKOP(gURjN)MDCC_PYmp!7iLfzkt|2VS2Zc-OyvefGQT_3O(67rO=UnzOGjf9?L> zmhWfWl`-0#?*cSUzIuKAp0mAnpsDw}g=l^*yZo)k-4d5e){cwa0=VaAFWIh_hL;}L zHV<6?r<>H2*`#{PYDy36LJy4oi(P0`UnX7bk+iQyN~O{R;(_vbQVxXD1HC;^9#4Av zsMIJuP(gURjN)MDCC_PYmVB;RBnT?n2UQ)hu ziiUK^yK9%y?eM@cX(V0>`F6BwcrJzL~zXib~=5v9Z#{+Fmzw{Lq$k)jbJcj79O7 ze-TY53IV@NpSQo^CoaM<{S>vS}At<`EFz0=%dtc_o1_Xm8Jk#DZjY>T3)9m4!w1YJDwin*U^sYM;9k? zF^=%MAKgn!=itLzXs_MEx-aLd`@3e`bsoqrb()sRU1w)$(B9*0xw>wxyNJqY-=cJGP}G&F?eWmL@OVMh@S9 zN!o6A((0|gRW$U!?qu&Svh7G;WCdmM(gXc@;PC(0pWg1%GGfx$?lY{k=rZ)c*6j(> zTj?!6rWF7G?7a<~T*Y-KdhYGpqdPr==FX@k21%frW)RIl#F!B=PsXUGX~cx(c^fe! zvoFFLFyUeCKAz$T%OMV`ZVyf)6K8DL4NjbF8)JjVSxa$e$?(MJXkw){`8r7M(^>OOdsZ;;@y7zWf_mY;dl-8d{ckn+> zBhZ@3;U}1@bBogEk1ZAGVyP6f-sz=OzS6q8erKgEn0NWEsEn3*>uAZ0!Bs73)*OtI zTE@O0m;+Q+WWfk@{pNyItdIgl^ErCILdM!+&vFF1K5({HfERc-!{;R}Sp=3Ef#8~@ zE@8>^E7q(X4y+>Da`bGii~_CFHd)H=z**Af=7V2OepR0TN-rsJOQ<}LapL6FYCMx? z+hhs*ja6+Cun1TLECLpR6+|Gmf@LqL=q%1j3Xgggq@*P?2OC<_tT`CX54x5aBDh$67$cx%5tu~uvIE#+oV-m!rEaG zI2#bS=;vC`%5(j7$>zm;2f5UTFI%tsSc@zI76FTZMIc0A^VrftA(l$LSTfB^W$~Q# zcK(Msi_S|>%q!Qqo$2g7JGXjUd+kW;^~u$^wed_)-tr4)BHco=qJ?a+rdR|l0u}*_ zfJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|rxBJlQ4%$l^!33`Kt(CNN61rR8s2NH>aP{<`uS5r(1MA}(mPhP-oZ^PT6}Hc%0xsh&xS1mErCGK z-j*<9-p7DMOPIg7Myy-n{las!wx&&1_3}L@IGmPyX`)VJ_v&BcFKVUDxizEZG!3(= zlbye5nd-^8SQ3sB5y@5p5yScxfh9m-Z43Q=yjp_#S(O%n#Xulvty@pme!t^lw5rvy z*a)mWf3Y>rTc4VD&Q+Gtwn^(XXp5~U&Z_)9lQV4gi`JZBhNTl%P;J`;AOx-R`beQs zY@47>ELj9B0u}*_fJIr^Mdfei?`Of2V781Y-Wpq zMZh9p5wHliX3m#ok1Zp_vg*zoPjzkY7sbF5V-Ko%WA1w*3xWY7J)@V;Jlw*Bt>&mBj+Y| zj!R9SLH%dGkDAFj19kHdH9O8*Y2W!gDsj3j-T(D;5-XZ6YD#xV*2HR4YS^nGxMk1T zR|^bIcZDA3mIbVf{;y>z=8OvwXPjg8WC)hy9mV|NGS8%{qJTrI{*$kZ{;*QtRt$(% zG-|1BTKno!m#`rHweN0RQuvEVM1j@kx7gm)xd6QC&qD-XoeK=hFC%J;RF#NcOE7qx z)qLMosjUsP3<6umTgH?#Gh`J%%XjTMGbma@TDF80OJ>BDcP*LfB~t9-6^ol$BIQ=C zMW87H!8J|Ut;|$xoOU>{3aRVxSyw6j@#0oRLT?X0H-E3OWqzNrv2QHh?=|AC zZC)g6a@B@w*mc2Lnc8rjP)%ey46j?jccaT1eRByewftOcXnh&``;4vFM(yGG_;Ya& zTkRZH8(!gdQoV0qVGC^W76Bj-9r%lU2BkJU8%U}qp*CE@t_#-6)Q0PXnnb)G80MMe ziPW5Fo->x`&v#`ws{}1HyF>sik-zr0mPqlUsa2sS5&En6gZQw97i|m!EAKU(J_51w zhFJ?N0v&}a1}!#YH+(|U5UrZM>O!r)=k6>#N4DTT;??|SW{ZuJux>@;i-9nH4vd#i zF1T42OF?6oFy|K4VyU-!ECTaK;G*A{f8M3esg}Bc7S+GD)S`w(X0855#Hgm$Z(#&l z`(D^R2X3-jxN}(3DhRajc}B%XYKH^o5ZN|qy~e)isn)ZpYLRnJ{tjL1{3cDcCBl%x zSyE>;pIe+!4vc7TLdfu76FSuBLXU9M1EuXGRLE(GV-J1yQ4tM`g+T% zJQK3yu6{HkfmbRE+#)GV|m$?p~Uwn#IoM zy}L%^OdDr%YQ$~OB481)2v`Ix0u})vpl{_`4~cl~Z#T`faVBRasvyHc&yhWmYrnq| zAkU*rHIFb5mu25OI zMMhxD`HQS@>C~yEQ{7scFZ!p}vZt9f$}o+0F1)Wli`Ek~%DK=YM32HCz5!_)8@pOjHXz(=w_#=NCHD^5!ak zwjWf9{p(ZwECQTUUWRMEK_dZzNT=ylaB36^aU zum~^$dU?3ukyQjn^j(pSeydio;T{8KYRh{*(y9h8fn9P5bS{C)4z&bIms_O_3q0M8 zp*lmumRdftx52Dc@l)WZ#IDJgu*n7xS}c1011)BdHOC@g5wHkY1S|qAi9qzQ(vrqC zHEP{IH)XGGrfTi#dB4`$_F3yz1p?x1uSM*>v%Ln*?2ld~MSe4x*5w7Vb!}UqWpn(d zf(4ec1liX;y#z|FN{hg$5fG}nlCD;D-mD&t6aQbN0SQudQViMN{1TbmEFeZI zDo(v0sn{IZ&}g%+qc*>}&2yDM9VQD*rxNZ}3PhA59MW`M#N84iCQckT=?LOL)XX@T zb@D3}r?u~@*c{o=XtS=PVK%jSuJWhDWTELm+LA@UB481)2v`Ix0u}*_fJML}U=gqg zSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_ zfJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481) z2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn* zi-1MIB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZhA^1Od_hhfTPaWf8ClSOhEr z76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML} zU=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix z0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MI zB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe|z#?D~un1TL zECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY1S|p;0gHe| zz#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZMZh9p5wHkY z1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqgSOhEr76FTZ zMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix0u}*_fJML}U=gqg zSOhEr76FTZMZhAkAOt$Tw2OPNVQN$=+$wmnwP9|6bL6IvY-xUe#nmvXQaCxVymoXG`|ZA1{lgYFSEIC55c{ zZ*#B6yyp&Q?qyg>i$E(P(DCVoS#_?=@e4!g%yK8*QY%02*{N2E4O;|O9ReG^T3e+h z8z-{16dOJ@0_VT$)aj>7ozpFqU35+dqfNI6SOhEr76FTZMZh9p5wHkY1S|p;0gHe| zz#?D~un1TLECLn*i-1MIB5>9sAkWb9`N;bZoM9mlH{~?C5`4ph2uOxkGkKHVn1i{? zK*2JUaq1#YV?p=Y#_V(3?I;_wAwIX9O)@SoODt`1bNKxH6c#8L=l*77VO3W(6s67d zxv5!B=_KRoV8u~LH~g6{3#ssr!>ftBYGqC{9;$-%p|$a-e|LrnUZuZRLs6cZ^1$L) zEvH#L%4z+%Be1bIlAY6The-IG_0^fwTo9dJKI+vx0?a7b_yLdFqjKt+#lzfFJBwjJ zg>h4kajOyv<@0uXDV8?9937dO%H`p16&jM+=_fn&Z=BBRFONY0yUMIpWRh_ z=A6Hw%(gHiYvSvIv|&^=W3VVaV3bKo7_W(2&C?{&vgVCI@0U&1XwHfJrV7vYG10VA z%sgeSXU(CvzgIrbL|Pe!4lkHMnx2W<)5=U(b0BS=W8tFtlcu zL^bA16JFS=5j{5=UDnkI$k}n=c1S$cnBLg#UR7Y#t|!$hu58FWefYl;S|Ql4owGuI zb5BGgs^T}7vs{aSMZh9p5wHkY1S|p;0gHe|z#?D~un1TLECLn*i-1MIB481)2v`Ix z0u}*_fJML}U=gqgSOhEr%ZPw0bzzl#C+=_*zu}(~oaRuF*o6Rmm*X_MpTO=fk*A6- zE#1U%rDo31*F^N3WaUMDwGj`usBHZ9lO|0)DRe*~O;ZzJ=Xp}>;&jE%sVFZ@5qV*x zBHzRo!*y!5IW301*>uP-fzSHY6UUj$ew8GG=3=)>vJ$L@n8h)^LJBT;Yc-w;nXZ=b z=m_Exmm-tGVM8M{f`F{Vrgcn)oXA(mDMFcP2~b^lsnN`FrJ2>%fOLh&+%MAvI387wc7^i!(2qP7 z1!nQhoK`QzF=OK_nQGW9yWGTB%uc6HojqUE6xE^k)w`9%%9$;2vLRQJIqMj3gM!$C zY7Wf`oqF5M=rEE35_~b$OBtTjo^cIlc2~@vw4jvcb(&q}T>DU+26V`%9Md<$)S8I* zDDy-GuWEi#4OT;;I!3jkWQL$&NMIjXEg|1(RP7nnP_2zs?gZFeTZO+WRnxsXKFgV_ zDr-W_H>9+uuoiF+oxtUhWS;QgowwU{+`#EWyw3pcQ5>=!F3w@-;ehkVz|pIH8%kA3 zP|VW;o{q8Q93nl(vF|i#Yv$L}L>N`|>}80_nliW#alFb?h*e32L0Mse1BhG`NB66y zR77S8u;fG}uVFS?lm@-`d~=t@nePeJb2uUiQs& z76?T~M)hc@wgD!zvms4$BVObiQI17dm^t*K@~SYf9N-u56v7fI3O#y)<3w9Pkw8_r8Qjx^@57GLn_G30!hM+I}65sx(8i4^;hK9;P^cpM37HZ4(lEBb2wMtQYa zRXDw~K8+0k+jxK_6r&4SPEi~%}s!>X}jq$hF^a=y_!1;HS-%aay&d|;v(G7c@&Xg$77$?eTJl8Af+ZT76NaaM~fj} zLIQG-%xhPNk!l7Fvl^(ebd%kuV%_Lyc5r3pKs+S>d6$OfPz&E1W$ zD3UcXu89hBM;7a5ArdSZU7<+mMLJBB^C{?Iln~BwyDG_Aa0jN9wZGM+;&f1mksB(H zaPOrxC_`!4hXmgzOq4u_QDs?rw8$VXw!V96B)q`H^WV#rGOiv&B)_HT06s#z(Ni@O8 z>ZpBZ2($nr>gThYqIA+MsLY)a) znBZKbvnHpmryG$br3+5s(WW@iK&ldNlCzSwS_4tP#kAvNUI9WphYX;)$-Cp(r~7HT zH11G84F*YGC^Y%pY%(3jU92d$4MQ5HB3BFxEpsY|%PfWh2vh1iGF_rE8egWbTSG zN4`XWo0WY_%@J@VkkmJN4tjZ@n)^TLUPhsfa{Q$q+!!&A8^TbCZjd7u?uf}# zm6#38AAtx(2HlY0rxj4oBYcxg7!N?(rLMO%l@Cyir zQNy%uv>*VNB<{Cxbx=PrVt6mQ=?`~zig(AI1DB^g>I{OESv-&yjFZ4PG529E#RBOG zBce|<9TmFJ%u(Y$YX_%Lnj*BQVjxV6NMQJZQ`L#)>6k^ z{VMJ8vxxt$@&jLbMG z6S1cc9=Yu8pFJ(a4|xi0a$f2Ea2KO}>=@FzLX^tqou?2SD|7tj z_l;3k*U->IU+wNr9qN9Dd8eZKHaUL$RI=xC+Ekg_B=$03-*@}r-~JxP$q6cd_4T2# z8_Un^+j)4?&@o_L)@^`?_Okh=!ZFAZ{ma8+gx+5M%-_HG;@sNgBu2>b<7S-LHkqy8 zU3zI5b4cvvDas25=4V0wC)?2zkGy|rhR4yCT)hV^JIBTD;_pO znbUbunUQ}w`Ew@y9#V{9HmdL)6UDGi;y*&#Mm(z^O>H#kDr}QRKd$9a;{$e7KSQih+iGbSj@#&MZYq#TMc5D_kr7M1@D|#M5n;bXy!A*-; zCF6v5x{+6OGsdS`;i` z`b9?=A1_;*#%JR<=39I@>?NATra6?2_bW5&X7r(&T5sgL-E+`43pT7{DahP9hBuHR z^y>1Fl{2C z>q3_04UIsW!zMq=%J46%1u{^_oN-97tOS>HaA;b`IBx!Q2A$3!VT=r2=8Uid;#tL{ z3msZ?N7id}>Z3Ylc0<-Agii<&$D~I&BcD?_%$LN)wP4Bm*Mpu;na$b!sTpN!QFC&H zku(&Q$-aI}(d>{bI3lPIE|)EFF$wMRc&X-Kma#~NsmAw^i}|9G%JFzbS17!wUKJUH zj2SihtEt@EL7{~C9WqW;xIj3Y!{i~(ml**Ci4PEwhdB=;bwbPN6-W9p9|JF!z*pQ?nN+O8et9WP}geiQEh&h}$iLkFZngPe;R|t9fLMia;N!3RiVp7N1 zRXSuGi88a5a%&P6BPiyt#MN0N*Z4+Ty;4TQP<`lmFe5x=D8U{}nfW34JJlSKz*Ryb zRnnl~G=6lE@L5+@=d9*n9aXEO4x4_IMGCjgBrb`omP~$uF=76AbnxXOL!fn3b*6Mi zsokY ziRSV#LMBiVh3axi3V$3oq~HlE$&!{Y>Qu~v!pLzdBgJ{lXhvk=WJ+gO8D*>=)kTM9 z2495sP{X=#M>-=ec7gCBs8DJjE?cK9G#n!BbFFx-baCZ5EF6uo#>|+=a=^4g zQt6<^Lsq${q?Y1_;c{4m?-@+k4PFw2LBVN(hml17Btn7HiODJnW&K(e=PF{bRA34M z?px>&x;(ZT!^oG=h3+-!>#5E>sB?Z}vDU5KrV3Cxr9#Wj=4P7e?YU%lR}%3 zatm%=w@F?jmM0IASbFrIr{#@<^J`iSXM-wib0>0i65lx>BoRS~%VBaMhc$tYNX&W4 zM^ERmr_jrbeJYoSgg*^Osl4J%!~RzU-*d$;7{n0=$34PI$;~7%$N^py4Q+X^Za3EjX@Q8;)8R?!*uQ(DRz7~@hnL?y+ z0s&(mHxthnur9;)f`s-3;ckVAu~7O_I^ETkEoh;l?q*;Mp56F69YCC4a3Cba6|hi} z9??joJQq)sZu>ah13(g(^Hq$O6IypWz90?TBfSBPlU=Se03Jpy)cd%Fz}Z#^l?09R z_)yT=FHjEwAxLS{5bETH2BPRNic@fK!l4ub$`RO?>hrD56P(1BOG1}{uSt(T6-KIF zsMrZPkzW;9tdQ;;0=5g(NkXge*(Kae3Dip>CUG7FVXiNDI>h0q2ApEZ5q`>}qVP-T zbS3UzjJ)sWOTN(hwV0qz!KLbwq0uV|!fmkZ%l2XV7g}cRU!rV12NJqIR^buFB|8`< zNO#Azka2{gU^Bo@^^&|;Vjhzsoe;22KtL$tYguk>K(Afh!=#Cu5frkufWr|Hadf?- z$m07-tHhloNa7AO13$}^W(LRuh!_?{#C^qMXsbw?eg^CzUb1C)!J#HE5(B=EKPBr#wy39x+*8^<@Z{QlFI zGAt~^KKfMLW1JBnHWMKZ>cnup)aG;T1ah;4e*V+}=;1Y0(1cj;Hgs@ zMBtH&3!k6-RC~JEFvJgxnj}P|3HBi%ILJk~CM!oH;z}9PH^Artyw**y30j2?AX{W% zC>(lb-sOglh~-SYd5%bKK0ff!N7W`65l}i(f*6mB3W>0u+^s=Ey9n^TqT5d6%)=EL z8X~Hgqe+DR1Xl$24~V1Ln2Q%KJmc{4qREqCz06zK)dS@M9!zZ920~3^^fz_r7 z12Tjolflu%CPRs_oQvU5oZ<#s#2JFHniZe9oHPs7w$m&kXUdkypcGJH^Kb`G5|{4( zY@Z>;^;K-JG6oCn6+;32RLLA%7}zYS$v{}OS#TMVQmp}T@`jBx$~MJfIp&-amtv>q zeu;Nk{JjETqUoRkXG`^9CXbmW8-vaHv`+XlNsnb+uBb^2!+I^p)Llco@GHctHK>Mk zImQN2lVx#&r~=odN+OKrO@gYX0P{!`vrS1SC;&2{Lr{bqc=b_%U9%e;p4CEJELV5$j_c7neq}qse5jH#?f!JBn~Nn;m8Uz=q^# zE=cCG>>-Tv(7C<2T;S!Hvbn7EazRe!g3;0BhFmi6Mw15yM@P3qG7BD)H#&L{vFsk! zm&0Ec4&|gIFmrpedr|Iac5e=%rrf<;ZnCD_&j-erYa0~gW37BnDa4DCZ@FS?%$u< zdguO&6Z^5A+_QfQ>&do(pV@ZrFK^qncH6*?E8ntq$F_SBObrY`YT(X}%lD_mz`*`@ z4kUKmi?sw3?torTIxxlS^#r+61F4Q}JO}UCarE*XQ(P`mA5XEHxOiZS+F2>e1CxwH=v}^(Y@c2+7gh?W23%liR-gZ7BQL z*ukGYA7w)ym%WS29?eE&A24N)VL?RMW25UwH(=$+V## z@LzrLi9b0$oc*(&JNh5H0=)l9KfI-e_myiikKDVfPHs8!;vH_Hf04^>hSx&s(oEk{ z@?5F42MPB1E!7+;lIJD2b`^9bGx+@)2&-cxSMhI>x|}FZbjxQFAqd5*@0U1_ z&Wo@n#1#S+U3qbj=I4d>=t(io0hJH+aio!Ebizfy%W5p~OylyD8922nVPbqwZ9)iy zB;ZT@-HB^lr*fRR3KxeN+K_^-^P`|77ikLDc*t@QOCdZ?1d1LbsI1!wjSZyF5!N4um@S0dqognWtZV|w1`3mz6>dN(gbT;OC_HUnLr?m zU_T=OBc^qaW)73o?j+pDaHUWPMDXEhl&%nCGWJLvCZ~H)l85jpDZ|mON33Ti)sIWw zpKP>C^K~T1Ai_+MA4V(uD1KVMx|N_&RMawLCBn63GVjKOuBXr(PBE!Li5Urn$|??N zvxE-SIYKA_3CRMHUL(Nh@pXQI<0(WG-p})gZagaRiVTSopXm4n0WO!428Tbs=9c%M zHp@|j`CXCLt7?hsYQEQBR0hEN(8mGJQ%2_cdQ z2RVTTsUZ=D1?0JQ$QP=TB~Ef+cfK3D5=%PK1*;z|$~yRyas6IZ_5hXCrTM^Q=|M)-7ziYwehAP;|7%6{0n;1`e^6D7MKpax4kRRmRL&3?sqA(RTgvOAnMuikLEIh@+ zjtuWO{E_i6q=q2?eTuyX$Rk}kX=xl)t5(!TOjv1;r!8){aX$kH476eYVH*LCfCq|j zWGIk@b7k~GtUr4}lv_yP(<^*VBM{W2xJ9rd6@F?OcTD5htM`GjGThT+CvTVu(NvI~CG<K>_h<2CiQ^j0-u47>jd_e7#OMNX1=GR++(tr3iT?M1WUXqHPq$M}WIC zrUI|W*kjk$?)VaG^!D@QFyb43S@Z{{rrESojtF)ZlK_z+5$TRNPFTJ`;U#RygD-HQ|A>GmnvewX!f)Cl zw9lauX)VY{A3&NSH-+(mOaFm`u7!V|&UjzjBorzLy7XAs7E%@wKd+zf7V*>$ zZJu&yEqU9`0&$+HklE1WyTfV(h2r8hQ(zE|!Zs$Cr1l--JLVNCSg3`*bn2oy4zzhQ zG)5fM#1J!TMdM+-nu?HQ2~Y+V!OTI@%ogC}G#?e5;H5fhMp6nxg!~*oGvK>yJ+wLX z0NnKoEswO=$Kn~HZ&Oww8(70`H*$+kicdvjZyoKrrteGin z!ImTx;!L3&;Nh6i-9>SvkY)zA!ETPa64k~UZ8Az1d&3}r+{ohN6SWai(k}`s-iA^n zb#Px-c$|^fW1)~ln}54VH0V*gPzousL?jjV3wxzDywAeRvHS#fQ5A9dfHsp*d?j z?8$~1_%2*+R>-dL=2X=h`DF^0P+=fA*$x0bUI9RJFjeApP%bSUnZVD;=#@j~AA!_hMD>eD7E`dxt{&&(Ovr0;@VthT{Td z#PC~aJ=F82Vp;^(WIgD>y%zcp8eIwuKJFhd8O95QsNI3X6!;$W#5l_Q8N`}EbEvHm zTrRf_6~z6C7vBEiQHsrvYBjqRXa}FA_))yTH)jDSM)3hLj?830_F$^PH38 zN;f@1bQzClO*nZ9GS5#4C|pqzf}{ky9y)=*h$2rh6adJ*fI54VS-PydEl@y3J(ufoF(=)yUM8d`zmAOl9k=B1 zODA_ecV$juoskb^-Ce%w{|IICd2%`vbo~UdpCqSmd*Um-$&oa6_fPPzp!#p=O{g>_ z@mj!T8+dgy!u;LjCMT!5AVMJx;^js>fwEFoH(>?{D0!R>7DQ1UViqCd*Ac=l?U&c z>fdwVqc?y5-uJ%r!@oTI;{TJs{;ysi82Q$#fA;ua{LkXo|LBW9|C29Xd)v=km)QO& zey^j=|CI->`@6$ef8)Xj@trFLhu;6e{<{jrJ=;F5V2sL>y6;23`=MKpe(U@XZtwT~ z4d+#s`^Z*2k8x#Nu4Ot-4i@^}zAgRl*Z=O3wzhZ-T?&uIr#F+^WOq6jJLn!cxW{+a zMD^_8Hi_4?$<2GO*>H2mWn1okLv7phd!K#%wZHu4XWnz|FFgC&vu`}`z>jahyOrPn zm2W(I@V!6zo5KhH#nfo;Z9mxi$i2N^d-V$kU;l9a$U{HfR=o9-KfmLZ7t^=?{(pMQ zPd>Ku_G>Qp#S_5T_jkT=-EZyOQND0J+C-sEI<_B7q<3%Y!w^y2CWkM&=#4#VZan{k z$^H(ElNoK|nR=eSvQg!h%fEDNY-lKT=+;|fxXol58Z`bq-J!9{_tLV4!-r!|E=M>N z)!pruJ9mza;rA6T%*MR!;y{-X{Z}kE^-TEt8f8rTUESUBSm`9TCcrlQeo5EZ)Y#O} zkYYh(!dFL~MZFbyr?uDa=|*X(^VZQYkg11IMq1r*!aaaHcNp0&$zXjNiXt z8ro_6`MH1@zuQoya@UC)PNGc?-2cooQ|0b%{wCq$7aoeOdGo;i_~8ufS@%E1(o@fr zO{N<@~`FMHiIDSjUw2Aqx4CEMk?yFspI$2I6xJ_z*wWeAwhfbCbnKmh3 zUDr?QrCKjmzLd&TK6jC^#p7X{96x!I$4S&C<)MFg{c3dlTW{S5 zjYH+wiE3%}p`Sj*Pn@8!t6A$=Lt~c$m@)hg(#fbz7G`>R#@tnYJ%={Am1)Lr=9lAHPKz38!PbwPo4@ybNopml|1(g+mYQ?Wq>h|(RD zKg-(0)bEljH*PVZxw&IBHg=*r{tW-V6@LDzZVfRS25WHWqFAhai1{bFV=w1k-WMC( znaiEL^+%9db0CozE0@P|`*OJ*J23Z^qdP#%T|>o(&Hb1{-hHWO@H}IF?~HX#m7k*c z(KT-_gE-!dR5NCUcWFzn{r4UI!m|}q=MWg9TgFbjc=Q?EM`0O%dDb==(r9(j%P$+) zPP`a7l8k)%(DG zhvG+Z7f>l{)28y&n&0@-AEQYsyg8U&BhuP!A_ju>HO8JcxG&z_9qW#FkBxowqZlbo zFc}2i5$%lOi9(N)SU0{CA%?#ketYiLIL1lh+0-GLqOlmp4#pO4ziRru9w&;-Un0fN zBKr2sC`K@T)Z300Y)VnSriq$~_HSW2aR0GCJQMS7=QerqXg8H7|9w|E)}&2#>NXkr z3C}B6a+_$1y@=ru!|b&$_Hx&)ambwa;nX1>Cof~{gyRHL84JTjn^b=C zY4(S)Lc_<>{*4(rGBC<%8;s5)>Th)9JYYw*BJYE>@rbYesO%c~+H{xsxXE*ejjvre zksYqo9N4zJv{f5WJq!4x(B-ShiYUG{WJKo|;TOTGoMS{f=c$}2L_XGx_&B^;f0qj5 zCOxf+*hdGRbHP@heXS$%5q141#XZ=d1%5hzBuwY`&(Mv#XL6=--cj3vGF6x!`s0Xd zeNFv5@-yX)tvbw3SXTvpYY`)+Ny6nTgNsA1(1Gw-L~5SlaCn*}v^?{elZGqc3v6V- zW(SjoP^Ljs+hZ)nj}zl?Wtc02FmmD(FwTiQ_{-2=W2a=6cu%85I&0hmD!mn+^7nM|+&@^2AecWMw!_`TlqdEGsXRKeajjaA|1Ak2PLP82q2 z%wGhGlteyMuG8fEMz9( zD)jeBV3R?-^M91k)1O9&k#7f|TXqt5WN;Utz&9@%IKg_^W_Fg)Zf zAp$L!v>xZ$OHS+h4aXg4o)RSC>-9kjgr36Ivk~&JpR1p~?M^_L_xysC$F48o+^IK2 z1}RCbYXTBX!We^)!i5&Wq+oF4T9`IQTm|R@QcJ+mBtqYKth0_(U2K67XGZ?ioy@|q z0=+N7l>h){!U|(NDG8$m&lF74K$Uf1wNZq=uTv$*WAuK>FA$+7$Yafz#6%A*S{$%J zhG`msm_*c>b~cIvI6vooT&HaM9vk2xzhb@cA?g7xcogILP+?y~ucJJV*53p+-QiF6hzH4` z4cHUeh8-N(#V0Y$3f_b#L4kPCbMpe7$4N=t(mHWeAeZJ_J^#)gi9;+H4Z3H^UWxDF z&FK9R0{TWsFyB|mMlO%Z6{dOvc=BP(3}N>snngrL@+ym#(rLQU&;))TM|muP;G*J0 zBF@XPB-|eXegG=~J=y`2mh0%5UkT+DZlicA>*N^*X!b;J2|3-Qo`}|Eun!VDm6Mo9 zkmk_iI8!AHvQP1Elel?|OyTvWP-H)Hr}6=M&IQVEy9C;jm>c_)bcJkF-XxOq##$IA zVIj5SGz&kNDz<%6(gums7OEdMW$-kDT{7Atj34lsqB{^zas3suK=r^G-r~A4R3{?P z4a%_2g%w;Uq+q10C>=40i!BaG3UV?3?B*Ow+s+wFI#mndeoF#B?C$v!R2DTCoHhyf zF8-_ox6F!!B6)aiDn_#5u~$&`L9^qY$iGblPCwn`i=2mF&=~OjK1@X9?BYS! z9t-pbwP-a5xQb!Cvr77%54lCY>!M_QJyEG$^m>5pP12k0U(*lm|;{S5O> z?R!yK=4KTK0Tj&60z*St*s1MPEUCvn<{KvFD*R_~7RnVKe{YP7-sr{gyBaR7_40`c zXmhZj?3Rufe@^x1RY2ELPUQ<-B>h3^jP>?;(Bo+=Heb{A@$U4WPyv&t|9hCbay^~0 z&3y`qv2J&qE^~a`5lE7J08vcGCxpVX;VK2g+)@yW9XaA2>3+Y&+?eL}dkRAoaKlP+ zl5&FDeAl}!#drIZPGW5uN0O4-L0d8E3Rgs?6(+Q8GGwBlh-4I4BtP4rN9p+Ea4~ZQ zyujk0%MWcRaJpm%?nktXfNm(9qy{qs9?q6{81q-9C?ycZAvOTR#7gk}0XYs!%nj>J zPC~{48um8f5Y}x7yEmahAsrW!h|v4dRt`xnM&e4|KsbgWP>^suPjb(7y+I^UH?EHp z?&J(^xhxi%gdQciE#Mnnp<5rTOInl& zps1%d7!-be0@f2$!gUIRY*Z=)RROuWTmces=TAzFXjKdw6%@GzUqF}?1_1>+B#@D7 zSw!b2Nqs`)i!Pourd5F^9!G){G?AZd+lt_p|6A!Ne*A_BeTsX9`uKFdh!fzh5`ywr zV}isH_Y0{<@Cdj5LHWI}CB6#WGCrIU_7@o;vyJ&=B>V;XhnOQiIGCnXqTzTXms zK(H|i$-aznu;?QhYY~~XA7@+05L(TUi~=eOETeyyEKPbNd}G`>squ5U^8gR*_r&xA zmLUZXZGx|~X+up=Q(SOx6UEVjx0}3&-ME8W0bVI%#o=49&i5q{4c7YHwu*!+dmU$O zuaGD}L5c&&{`Ya*CEbJfDBM!y9G6}i34uNo+KVR)eh{310zG$jDgkB0FFPIK%1PWO z%WkjOvyIy0lz}8anqy9d4F7bOg0Qo`Uj(>^#~@N*BWFkszS;oOF6(Ov@(NhAVR9kJ zWyh)1r~CpBmPf0`c>>{z{iu!#)8MOEmLs^U{p$%e?yaTar&Iw?9K20eaI@e{76QKP z-++0c2bOx&V^XTf%KeF(*oUEvp0Q6y$1z6ZuYV?zvKp*KOraU?L|?h9S2 zu0@ni;It^PoW2N+OpV~%!w1uylRm)6vbo#^(bF(L2{ve$9mKf>m^@QC;d+2lav#=m zs5L60pEZ5Xf-c&*-SPXqi=CYBB*Y-@c7t`eT?@KtQ*RRbe3==B3R;t)X_Sg(1Z7~J z)9SoI*U@DSyO_f0AK8pAqd~GTqci)*y#k58U{Tl22H>JVys{Hsx1XdO2HvN&HQ;L+ z!Pw!|hzsCz-v2fJJ{wmZ$p>#DPdv}_ypnmK zDV-kgnl#Cqi;Ya{&#f`D zNr8Bd{4~B0g!Ac{5+;gbhL;RlJs0W4mEkoT4U+)O+}(_FU1J1O zs5d-RvRV^_(4BQA7EbaVD#y|7(Crymiu)-@@hYPf9@BBL&zB)t8#j5^-^oc_n1X|U zetQ+rI5U*F5Y&VWW)!ngMi_hqB9bPcl&mQ;O04**5^CLma-}pC%Tb1TS;MLUAi%^CbXRlZ<>7Ig8;1$$o}a)0c>MMV;SP%wSjyGQmDc)6Ev6mZ7x-@4 zXZ83x0>QF)mRDgBItmsyImlN~v;n;WLYgXKVZ7ecW!1Az4oG zwJ9omEzaLV26B;zmk}5}E?@^eh}i`J$Ds+uaX6!t4lr&MNm}Pl#y;?TTl|IHj{a5$ zx1;afuJqq?d9uUtKjd%TwI+7+F>+HLJ(n94_v{+SDY?7xm3mW`;f(1I;;ij9<$PH6 zmVzCBH5%)~m*7w^h{5Lr^NGU4A4dyJQc1kzx5@m){^m5dGa3sMnec9K6n(D5y`l$= zgwd~Jc<%Ir8&w+&)i%4h!>VgBr4#UoYih@_3ZX}=EOqo;w++>~!sVt&Q-S+C{=Kal zb}YOKF($lg%z&H_n#ojunyei@iZvOLp``MkS9Nh7Y)b`(hdg_ z!3Iv&5*%M~D&R+q(4+qTyAQnarK|q#@VC}}=o`DIzV>ULo4~Y1ZJ%G0c-nP(db|Sg z0X?V`#)-3LeepvRYw$rxsUz`B z9d9jv^KI9?T0Z=l-}&NqH$Hn}-<$7!b^L)}`t1I{`RQvveB+IO`qCqx{JXx7eDkxP z##x60@sgsHz53DbyjpnpA0|HW>(A#) zFP$vD?cjg7(%*Z{CeKS>Ht~VqdV2k3-}ve$ANK#?3;ubZ@~_Ht4kWKgAA5h{`8`iP z|8_h|ahqVX(&sNqZ0N+EN5xf9a5$_s!vTEp^gv!>Y)ejzw+?Tx0cVp?z3xm?m7R)AO7R^sbAW2+3WAV zfBQeb?Y$p;MEvc?|Kq`0f>Sk%#}v`^3Y~|JkRHz4X+Y7e0CUW7l3A^VfHt_xm6C^W@RXAN<~ji^b1> zzO(m_;=BLRPmRVe`?nqbD;xaWjSseY6PSHt_;S#;M6xrEfyV8T2k6`;)YXGFF^|9; z1u1qgKbrtYR)WNV?(US{hkN6V_2uuIWiRc?lXY@8X0b5i?Nh8X%YHVi_rc>c5$vJA z0q5k758`~nXFdb2);ESNKiwcsf9*9s_vT!|VZlxpCCWp`Pnf;)<@nI?v9Y`F=Cgf# zu5oNkL8Ls@-K}VFaB6C7tP7S54c&b=PHVw6dsw}#?iyBQDBN$KisB9a)i_hzf;510 zhVi2~Lq+pzljApLvF8^!pTN-`(4j+&{aB?%~}SO`A;dIC=TR4T`dqL$m0)3->)ZS%Nls5rpu`*Iqjhjne(OO1YTd zP7b2o#(13Qxl6Z6S63M)vCWBw@)X<3ZG!W_C(W!ydbF4`sO#Un`|TBdQ6LqLmna_k zU026js!fKA=E*B-UdV4?UwC)~izpX9nT1bi!xKrq#U=QEY((_q4KUaIo*F$@g({-6 zgvQS$9|J!lF!AI(^6s2?^y!`(`5bo7S27b%PvEg4m8I>E;++iMZ3Vr)hZ|cgGc22# zc=QRRZ_VH<3Rw;+@a&{*c?zBv+TcN#wvp424^*i`562Madn}#8zJMb5HDu~k!&uf} zfTs#Bkk1vS@xzSo#d$^;yDKu{p78u3;zlk!zZl5kdqWw`5Ao~1Qtn;!mF+ju{QP&K6uyVsnZ+q`*f?-6w&+#z z7zwkU@QLr{^bfP9G?!mmZaG2U;}Y&aoH{hrH8iwu=dD1!tK7BoN8ez6`I(G<39r0osJWlK@y=bTgo) zYp*ryLDVKYao#b~QJyNFTfxWC9IOiNN}5@jgi`% zw#=H+Tz+Y}=*)VYh)Zzl7WXH)!CUbVz~jWU$>F!q<3zk%4&}5ZXs~*VD&quadXHzb zottQ^3!jkSSF~A9;jgG&ksAR+xqejU$9j)M;& z_(-j!tB|k#jLwJh-tmP{HlNsyxAYC?6!9V?I=A>>V%X>msS9wnn!M^sp$k#7smcp;PXb>Pv~tP?uS zF{*?k9w#YwLRSZu$iW+6{4vGwXGmzTt|ppe()+?xc#=8#!{AWI#fS@Cr*VWbxFjwn zk1lp&j=)WoK$wdX&LH^f$fXSzXSEEc@Hchm=$&+zi*mdSwIO8}vSZer1hTz zLz71zCKreaLVzbHax`D0B>c-5i&!^Ya2*L96ZACr=;N-?S~&-oPXc>ov<;K`^rFJp zgS}P4c$yAlQYR>qKEIor#w!K3RvLZK#c|#-!W;pe&m#uwQAZ}OCx=An!&?Bcwnh?~ zVN!VGYK0uOQ&m!hGHEV2d_`oqf+YnKkYrMeDPLP%x(pKL>r|12d#;CT^AC*JB!nNQ zUSvLo^FcXk3m(LlFM)IF3byc@D8C@l8l{XNd@$vj{iT81li;*TmrMU&MM#(ykWvo~ z`5I_>{f{-924bDc3c~DdSq0BXrfQjbC^l~GYepW?ZFK#Dgi;s9AtbHIVSWLcI>GJ z;T-^QcJzhkihH(_bUr~2fQaKZ%i)c~qdYTh4)XFjL|nWp#6=InQNiQ{_GxTIG$>NG zTX$^pxDM7Na$_$){fvZi{69i*{7K3=0rZeF?BJV5sM{~W#A!$2oIbh+S4S#Hq51+2 z2;28qL4`bo_!1$f(GS@R_oPQPYlF^;goOxnkSE(p6!@uRKY1VCk=9Q?uv zT1fInNbwYouHb&izYXGy>LiVGX0*?4r<5I!E8l4s{H_09fTD(-ew5z+x5S^DdkVj* z!P~luc|ngkPmm(lN3tUzPHqXGM?(%n0&VH%yWycb@SQ}CN|*^{Ua@ULpjC4Wpr?=v zJ6Z4@+yc)o#QQq1zXQ#WoJ#V5kzjHzw@}2gh6q}mxym#EbXSQ}G(~XkQ7XBX zbyR5>&29Kah4fpnm)^$~Z9p6k{Je+L z3&ptTN7?*yoaX*Xz_bE>!wzR-XyXO^Zbgr4=QeU3>>{U|cqb>cxM<7udb7>|BtC+; zM?waL1lJK^CI-fZEDt6o_?!p|JrjXjk5q+y%7Cm*RkaZgR~eF{hKyN}d74*WGTJD> zGy<&nAC6LRGw})Z$PD;td=`_7^}3SVz#;xfk%V^zga?5lB?n!hE9X2sttcNA6zJ-@ zkn)d{8e~BIG$aExO?Y#bcuA*^2cHCv({UYv-buiRgBrYRwwvzYTeFh8{r{)#ZQvv; zuEXAQt804i^bWgshG8|V7P-0^R=uOuYWR>$5EeB}@2WwoxLM62q^zOYUeQ)o>hs>JTcTwpi!JC9QX@5>4;A=e@3DhxEgKO|%-Wcl zJdAr-wf(QP==3@-8z-e3R^6UF;)og0wu<*5dM}KNPYi360-0FE&R!7UH#*oRTw+C(Y;G>Y39_cVB?G^r?OQ%Ft2dD46|So3=4WM-H_ZJxoI!4*rq zlVC&!Vp&xm0(e9XP8&F)Yd;ojA(VPJ0M)odWtu{qbGo7vioezdrIxSSQA`c@@-h5l z#M}#47};{;MAr#H--`qG)>2;Oz~)4q&4WE0>K`yJnzSjLhM1VEVgt_FVXykiN}r}b zp=A(!RInNoWjJ%bcn8+j(%{rUIK$@MhsHwS9fBx8b3C)oC8bAU3u#4t9ir1E@9 z4e<>*&t{)0$?oLbL&w7U(ico`pxjt#Y`H!0^+&0EiA;C1B<*=(+a7^1G3c3eu{SSf z`L)!mJZ6ZF*^^2GtmPIV#>3aWu0Dc(&_WakmTiIlzDtqHzIeTO0~b7 z;7>&?sHf9g4o1JmG=j+5TF$hYVK2I7SzDe8mN7DYKDp7$J;)2gJ!Z&OG*{?MhRXcX zK(ZN=IKJ{ErQsP{E|^&-g*JuHPf2>a^c;PBc{Z83d>~TxW;U=RuPgL0DP!50(qw1I zK9tiXRK&2cM~4#S$|M^0p7x9a?`#qh_AE+r8`_mxXO@QrL_eb|aGYd?$F{qvk9SR3 zmxXJIVMDjph#6L4&fG8S(C-AXJ^Tm4bs(T-X4PI0QU_x#gtd-Q94#d;FF1+|GLYV! za{Z!UMj>OQN>pb&gU4ttqqZ=VT7o9%G4hJF#223qCE3)hO~`v3EJ<6x)nWJR)J_T? zY-rvn1rxl#ot?1$m?VyA;{l2Q-MJ^rT#Tmd660#-F4M?2v#)YoD-;I zJT%h}Z_NiHXaJ>r$n`#K>!6h|R5ti)kY>a=Zu6RU4%+f*23&M{w50&{IM>mg@Z4fdnj5>MJ% zQJIYR`$d~B+A$iXL8IM+7BY1p&9tEpiXC zV2h;|?b|>Of2!h0E{H!eaPTxR0S;U2g)xb^x-`U_d-=+Q%u}aHpN}WNEv7Isp@ylo zrOy^PksAlk-4rrE*HX4ZEFo&lH#N<}bgi^BwzWW`mumH)u{ONXmPgbX}PHLN8$`KO@FP}@# z;1tNDNN0fZz4;hoF8mm1M`pD!Cn}zd!mNtT9-N?~Su~l?>}F{xSMzqs$+42R+1%yM zXBRsui`Bi{JTD2E?$AmK%z0pI9W}MYN{?xqn*I_42?@jxD$6O)l(L2;>H=SdB!*)# zA&f$(-)k{6Hqh2v4qxep zJi$o0q&*m)TnnL0?9|iItF)QOpIwgA@WQ1y=RzOKLr75=03Ywu+o@tqE};aV9zEPAuRyu`|&!uOOkQNSb9#16C#bD2!{Czy@!@fTXkJY070 zxUu*8d8gli%8xD#5~2;o14{hytbrv2?Q0giobywE-$5d6q z+OniRo9(aJz)z&egho5g9-d7N$sq)x#+?v44#L!G%YOtfhBXd<Oe;bqb)icFEy_ zy;S@LYm-m@>{TVp(0M8wiZ9uvS0CV^8ntwmjoLJFr^~RP${+LWrgGke2~U})({RBq zCO~9J+ysI9o3zb)18KMM6jP5$_qnf%Rl2TtGgzipcR;+1c> z@|~N%`sD)?S9Ygf^&6l2^)t`)qnrc^Z(+VSN~5E{lrh+aOeMX z%i!PsNV?Olzpt50{^Un~{#*a3^vAzbz4PDw-|xNb^KX9Ndu9KP+c#bFYk%^gukZVR z@A;vtfBfkmzxCZ8_>pTq_Vdqg+GuxP(0R>yGriM4x$xw}CHKdjvp4T}%Y|pY`PO$m zmv)~0W1dZ;w7@^Pr1x7lzWcZTuXm>RKXR~I{PecT{vmX7AW1@0MpEh@V%}3s)@PW- zq&=<=V>8!D(E1ZzNwwJ0K`kun^i0^7(#ajm=%gqQ@}&YAJ1e(6^1BDO?K(WU`7a(h z?}t8iWZ_r;?8nc$+rRn4|LN9Wdh&<2)MrcRo@$sjt_t6Bd@>p)$cF$9(iZA`8$+&WEkYNuX)Rs z+0)Mak@fb_!ELj5NpdLago3X+;k5QHZJD8-%pPJ>XVl49^n^1%8R_no*2y^0`pR2h zbOop4TystRgCE?x@u8^|R)PZTk-MUK(xjOqw~c$7@IFzXdp|3#gq@IYtp;Lw zN0X5PFi}vv?>~GeovduM>sSzsPAnHX*VC&`bS3jOsuMjhDA&n~>ST5Q1^czs#d7B-qVHZd zNOG!*tbZ|`T!XCH!+6^HFQSuYVh$$$T=BmD@WJm;PgXYm_D}EKdkuAIq?7aiN3N5H zqE6V0NFHL2#(Nb0{FyvgPo0JsH<-dSajErk&gD?!9E?xdJ>LhijU7 zse10u74Q2GA6#Lv%}app+xf@|I$8Nk_7z?;{m}W>#Avi#aui!qQthl6ojj#l_&R5p z>K;bfo1vi*glLw2Ch8=%U8<9OJ^gCir8;2&e$>h1dE13fnmLKFPV%-Z?piwh3~kq_ z?vBzK8|OT%VHyih0k-iYT4iue5lp0`EFn0vh>XnnR^lvABb#B&xcdkOD# z@hMUkAB*FTx?PIrGV%as^jvY|Ka=}QP4`DCG4=#qfL&>9S}N#1#^J8fp255gwm zC~ZBj@pGD%x~Xxsk-w%9($L^)I85< zIHu+)%E0B}>U9E)@V=9rPKfh2bi|JN+R>iB7o&0gV*C~$1NRVha!WjSQJ7%p9z-$Y z_?)$Pi_*|D7jrY8x{v(L$e$;^e0Vl0W#*ap`*0N-6*s*f9@M-g-!r*O{pTLZ{n_9+ zt9u|dEz(pSjLo?JQPX<=QKhqK)BAn+2MClwnkwDBGwSPC zVoxJaJ*E5b3I*MTukGMl59+?Jr)Z5{)#l9ExT|^Svj;)=OZGR3R)CYCzr^tU-H4Ho>)y2M) zZ1^ah>q&6aFn$^2*HxWIkD{MkC$xRBo{V(TdRl4jJRWzflS|~t)CZqJC%bPX@Pu~p zIP%|qTgk&?l8>p@ay#~4HJ5U{(&a<|zx1{xnw9Y$LEKBc6vS-^2C}#+4?V4(wHV{C z;)8O=){^I)m(t43cIi@|(_B*jRotxf)+G-~@UlE@TzR|~G54g$!!_R9h@kXpYy4xn z8Xtesi+Ldrl6cY?(XIIrKX|X<$7r|?XI>$Az@3`#$Y1yV1u)d?MYCERnQml`{de_X zGPE67z*f0FV6eCF>D*k6pVQ-g?~gt(@C;7t@(@iAn@iOYeJ51GtXN|Dm>Mp}rBEmK z6jzOVT|IpKN1q(a;W^KB92{1^>U1%+Ri|CG{dFxbsAB~v=srd@4I-mvjxLN5#5Z2# zQ1dBrcJy`F^(BOIS!YEL(>G%3r8w)j8@Uvlx-#5QH6A-LSXO0i0YTOH<+c9I!xiM` zobF|G;AZ|(*$+OSHaFl9*hM(gM2%KP_o3 z>H-LlTMFf59^7yHr=MHG$gMaksY<--`*wvcwc1LE_T#q@OIv_@=51cftA2r7usftE z@v?uC=U-!GA!-hrj|)ni(bU+}z+FM7a7s;ScG!t>bJ)lMt&>?7zG6UfLJ-BOtJ(op3TE6EK7E22+EmBT-RNgopYW`VUY%#Rke4>EFqRTlW~0Z`NkM4}GMGr_3DHFuUOsD;gO5j7 z2cJGWSI)&}5nVcEEJ92$anN@%P#;L?f+Y6EkhIX6vRjQen@U|GhT;uJZh?{`Er*-0 zRmsEHG*4s*o9C{kjBM(9`5jHxRaGiI>{)41iy~_(`?OCCYD-qve5ExP@a6C|X=jZ%&HOvK zr{T`SEvaZQ;Au%k_yeA{QaM+!kW@3lS0TSgYkrGpnwRecP|ATAVbwPBi-uz4sj9O< zn#!OS>TYC!aHrvlC#)J(W>_EU)o;Xsb$F^gO`I^y6QbBD!I>>2cVGv>m6KyqPZDwJ zcK5k}F?rumFcU7@uC4cdd#!%*SwajAzQ>BIFiFYvb;{-z*~UYv!Av&`#s*!Ac?PMr z33)py1X8o-m^ImywPiHdpZ8?`!#Y6~g) zJ?2hgZTSQ-G}a^-U}j0IQ<|ag8e)As344uSI4S73(}}XK(mbvqbqBpM5v))~2L?AK z)@$Q#`o>M~N&1Hd;&5rSGIy3lvQN}?o24sszo@i=E(l`Zp+(c)5!YEL6#FjVv2la; zv!2bL{h6TYcvq|yB@`#b&-PlyI;-s+4NXY0#Fvm7UyRhY^aC`7Vn7p2j#~9xT#ZdD!kIqi};A)^#D~Ms)JfS2gpxR*N zRS0TrRAaQxK`M@Za)IG~aWFAR$*l!49)Zx1V`y@*Opii*WB~`#i)n>XfEv-x$}F#A zoivpCh%;af90|emT?)9T@XWFDQ5=Nhy2Ka<@p(3bdeZc%oPh$^2NksCv$K1;EC<4$ zM;~8tOSWcw>eH(_xTkA#zU!0ryq`65fp4|@Za>(|mE|C~*#(o_Yju=25Jb}Ovd33M z_i-<$x(!w0NH7Wd2wS>Z+vjX6XrY`XG?A8^Bb#yQ(mda#iL~?B9U<(XRE|(;n#@Bd zm5I=!ER7|lemyWJSWKhK39l>F5761tv7B#6~LaMsny zZQWVQsuvZ@j1+<$dRmAgly~8??%ASy7yjpVB+SQ_!w(XcXz-*+0=^MG`Jwa zWx?WPI?7AHCEfhxiH7$L-hh%)OCBdT18%*>e$@UK!Z>go60ofC!|Cu@1F1IhBhY$+ z%mo>z1|B>y;lz?s5U+KYZ3@1J=s7FXX#PAh6aPrq90ITMkZNHdK;$%qlEp1gyRb#v;YCNwH19a>=8CzhW%QPKYaWt)<`NO>m!MbPk%gAR--%)3uG`g__F4X0Y|H4eN!I6W}?y{D%SFn)4o*6)A%;m)OLcG=-XqcG+SV8P7}Bcq|MVYk3!ZF+2Lj%%sv!XM&$(aiehH;eb5#AJazHWOkSs z2AKl~W1^WfeA-p($xZTDY7wzQS7vC3sV9sc6v>*3abmEk@)Wc+A?Q26s@z9-_7wOh z)q5~K3bfLts1h;oY)UCeT_~Y6 z8nUF1RD|-U8ui{g2{_OA#^%1%fqXIFUFZFt>}Qg@6kh&$m&A`ssKDYF5@ zqz)CaWjX~fWm-pgpUGmJZ_!2Y~uqw5bK7pu)QP#E02pyX%>5|jC(+V<{yY8b5 zyN>W~M(3??l-5$Jqf1*v2}wAVCVnRpeb901m@qVFGsq5de|r%o#2b%%ePFe57IY9G zN4+eCGMQ3fLyd3JXBm$}g5F+H(6Sg6K`LWY6C5c?MWz0U>-Q|p0JD)n*$C}(cR`=M zN^puHca_1a+1iqRPg`S@EMw$4o7VcF!Xpwi#Zj-1rA#a8gimq(zz=E}g;d_K(ormM zsPhd=oy|00DPM(1UQcq(8PnCerjYaGwRr1a^+=+w3>h#?C6N$;H7*uWWRd=)r+otu~>h$NZ*W)cE6t#Fer z)HzOVce}(Ly-f-aH!1rQsa&@RVby-tXw!;&WSM6%rDTfq!-cky)qMg=O@fz}NXL6v zjKxFd($01N*HPH=DLLd~a=8PXlc?E5>n#%i$;HtP|$@CiF!lF+RP=g`a^$4_R z!+5P*W(t!x)SPMV`d&N!AYc+^3V&bkp2@P;a-Wrq?=$p4?zK!V?aSSnY_o2iJe-)C$6Ne#iatdz zl(9&H)$1q%v^CW8(YN&c9uT!0SV!T}Vii)U-JUqU*cK>Q>`_AUJ#iZ-K*7T+5A}0p z#PJl|NMi6O8GwQieBy)JJp{d4Oik}2jNJM%-$_<;^qs&&2D#_Z&5dS9#iLnInZ)OQ z`5i|XU--0h-*{Id3H5{z4q~+lJ&j75JZD3ZSxfh?{$Obp7!{T2U%LIS^<69fs=I6!|9h)kFq?#l}MO25_+jHwEZdl`r zc85nyCvSgp(Q1g29C2U8>goL==2*OWq=*qBGDwUX#)=eYHB8vgDmZ(em6{*m1@&W4w_^t{dh9i?e|o#XeYC( z6BO#-{cdI^yg0HgnLUTY1S>wsL{*+dyR#o9y-n9b)`WR2?@hweJNw8`uPIg=39_^ZeQ|AG6 zhJUVi^$2=87n>W4b5_sxDz?XmIQ66Ft&B z>gp{;>+#r}-3vY_S+Hav!z6PFG7qWow%~Lheh6KH7~?W+%KEoc6cjxN)JBrrOtaM` zPyMZDPx<+|snpVWGfbSNVmc@!#>W)eLNyKix%8QfR9&K0rKoMkxGG_JrQl5)OtvZi z8VAMyI26txBeOz130e&8;RpY8{^B3F`xn|DyYN>&Ryg;c-tbd@`p6$Wc7P9Q{GU8{>sx>S_a3c3&9ROG^JXDc)m-^GQ23|Hg;KxBu9`|E(`QbLU?@ckpfRyz*a_-}|2b z`qYM>`=8frxcb-bY!Aa7R@%SZ4gP`O8&3S4htF-Kzk1hQn{WPB!Ofhr?e+tm?qMml zU$s!W``13v|JC#zpS>*2c5Z7gKUvzg$5m%9aTAdEY&s`Q=~ui|rS` zru2q4|NSR3v+c=GzoEUKS!7c1)kC3_+}dCXI`!^3&?t3~&yM5rm`Ys|e zlz|+=$b8w2AKYLTC)n^x5ja67>(5}%U$HdFB<~OcOn&Ce&;HyGO?~D!KXLHhZTFbz zb^qQ;2VQsIFCV;n>(3qf)yv-Re?OgVoLR``OUa(8$=j>7CpTUHfp7eS zLjzMiwBxlu_mdZ2c-rP4IQ`NmpE1?tBWM4v6Lhlf3){MVk=x9=B&be0>$Y{jnpPkE z^c(IQNRZ?J`yMHtG;M7{QG{Nv5RBHrpG2LNtE}2RVf|`zMUEKG>tTf`>rr*P;YK;1 zU4ru3*G~Vswe*p^JmmZhd{$P5!_W1;H2mq%1LPxLiv9jKzq#j|rONqD-Q0+pKQ%t_ zv3ZTsWc~6}GQD_yV9(rUx$B|5E03of^r7qLH7ySQ+j~UzUVQQ1z3J|p*;1)c4_G&H z=GlARLq523uH!QrdgKV{!bu<+aaX|O3er zHh@t$>5sy5tXJ-SYMrdCtmoa)ah)upg(JC6IPvN6$2nJt(@9nyk0%}OodBBT51m9t z(Vl#+$AgTp!UEuxa9k(Xs7~Y(bn==vaim{_wK`FcN@ers@4AcaqAELd64OFFW1Z-U zCkh)k7Csowkxo`*jZRjM9+kqugNhbqI#z>5D9I5`T2EJrXHJcE^4!TfS$PJXj6!8) zFNfY~^zRp}to-F)szk==FD`Dp=166waPh^+n^O}xSBaCA&&1G4 zuAg`!ro~BI$mGby7auwD=8r_K*h~3@>Lk(g8sGDtBglEA6Q~|pdH(3ipR@L!BQ{^4 zllAft8}pJC_EJj1nNuUF|9L!jNNMk-a%eqapTOR{o+-}WBOA5cecu2UXuGuHj$z|9 zE9Yz5wX(u0d1{TGKt|hzPV%-Z;%>a+3T?Zlr-#EuS#7&khT3AxE2Wa^WMvVZ6ux|7 z+od|qb+S=)awKoNR3|YlD$H0Xda7B3(i3$x$2vK&?K;w1fj6yQr_c!k)`;jt&o>(D zWKnH6wSv=a2^z;ODTE z$E$J1VwV9#WxqV~2oIvRE_E+BteOlY!i(agAld6*}Vyabv39M6QU z=h2D@>;;;z-R5g+61#1GnEyv5&pYt`oGE;3|3biD+Xw+f?yVfgY&V>g33jlbR6 zdouPak{O2Ar+o|DJsS5~1PE^2x47kI+qt&eyGdzr<|F$U)B1JYqZc$L?EN>(iRU$5 zo9|DQn%@VZgYYb33$BKI;95p!+K8~YgJnUGsaTN=BkjA6edd8?>-l}$Ho()8wT zwuf|IB&@=7&ZCBJd4zqE#NTpr@t)CsNIm~i^H}G4MSzM;{najy56GMXj`t{Z3<~l5 z>t~*s8kLg0qAig2#Eg&Dz*`S;Qg4sb`Zn&3=U3C(apD}*NGXSnuUB(S|D&`PXP-R^ zQh&I5=J|`iC2P4NHeAYI=oNLf43As)*?NjRn$>h4QQ70LrQpQZrJ-2Z}ei^b>>KN0WCy4z}XDyzbw zFN->X-V1bc*4~v>oxtZRoVD^s_SvK5T)JpSPi{PGtC%qTc6C$kYWb!MxR_n>*suSEnJpn~~=J~0|PpT(6H==yUQ{&fE zg`iR75B@;s4}0IL_BDZWmb?)@kJl5hR41B9{!{!IDH^MOF?5VILQ%9=8uX+?(%?F= z?Kz(Acyu(S4slj{j-#rTT4?$`7_t|#p6R-I@)i9ltP#q(&g znemT-$U5eWI)U4@Vvi_iouw^au9LNlo%Q$|nP)^zM0v*=LyHz=KH?~{mD?juBzU5G zmGdz_t7d$HXM3iW;$?gCBJLOSKRKS_1?ZgYf3jQgG`*AkPj;UQ?^N_z<@NX0;<}e9 zFDLP+kLq5)^V)PZT-}0^`$f?~g=D#)`+YjEacq}q}S?DQW zC#0LyPM|+dFE^*zPk)?u9wbFv4O`3O3uvC4#v1opdZT#gWG%gG>F-YBapczYNtfz* zJRCuPci>Q|c6-sx?*l?=cm+bP{ir1 z*IkHpQt65}M}3f8P%&IQ?q`})OFgCuDWg=F)R_t3;}y1h-@-l=eb%Mxv;zJSJaZR9 zdN@43HRyWhW0F<(AWM!U;<|`Dkf)=W!d zb;*cxM9HM!r8SB?54Ej@%Mf8}Zf{sc33aX*d`a)dkt ze~b3@ia2TjW9*cyE2NZ2_3LtBdW|*y%|@F{cGs&9z%D|jmcGlhP5fvm3%6J!Fe{a~ z_G8ser2_M`|1u$ZDnq2f>q&&p&lo0u`q}{VehM)*DRJe?f>_5SN#Gl;Ijx>fYb6V$ zzzS5XLEYPOw+amRV)V-+Q0E92O>vYiyN<@W4>1+3O_>ZlDC$-UnB0Ld`iHEV~F!D3H&|w77)W-ucJYf+;9YLN>*sS!? z^2j@6p9L)m_-Dy%KZHIZyasIR>&=;ulWL#JQ86soYs(d}+WXNro%m+7=w7nfN|0m9 zv+YA?pGSPtO7G){UQ>B8F-a|owr^&nK}qP~J0ph@zCa*{2+@}8FL8ohJWBEw1_VOp0drg212fAibgOZLEBwS@}lh(@16xw@FHA` z7ygEt>|#Rdc8Q`Y;F(*&?NFo$Q3~Z4gFT0d?u;(uW5Uw`Gbp-~1X?a8Y>)%Xwkogz zIfXU|0rLkAxzLf%h6<}w8tg#~eD=KW8ZwZNvlw7mmRKq3&9z7;khsKlU#V+cAhPAK zsPuClStRFXQnO&uepSe^$=saF^egUnJP4otvhOTIFDYd`a=;Fud(%n>nYhGFh%MM; zy22_NLT-m=i#bkjmHFI@dn{SxG=j@5Nf}XykDhsBnZ)3U91Ds$pMK=-LB{K=+!4@- zJCfuY*8}gBivZqk9#dJLD8bCK5Mh$bBIt=ZSZSdMsNd%7IXlHJmh_1{@|vO?N~ceE^pgc3GRpgAKV1id|O0 z1vkuwPUG~6HGy=4E;b6EMPnu1T@^LO4kfciw-EpvzhAC)huQ7?NHcKh!qs&cIL9IW!mtG><7%u=f^6|Opqe+204$+5nqo0ye z?o0#8Le%(XNW|AQl&_!=!ZPJhW~4*I+(m54v2Z!=;=0ay?N9i4Gg)?8^=%-QI|Hr2 zY{D`WG5uCoK%15tiyteFsuL1>2AP^EQ<)M9Mz8~|nmIAwO|L__qDnfnkkC|MpF7QG zZ8A^$vA>ntYR8$Kw0OnFq@{Zj=R54nnAb$lQJp5$`H-}2jj+K)s5*fw%`40JC=KGz zNM^`bwKhAj!NNa*K6y~I28TL_XKLE4VZmdzY{SGA89byx3#F4f{;3m7(W98Fs-X)0 zyp@3@E>+Hr0|9>xI}Vyqgk0=|xft&8bTL4&y^VP<(huelOzaU6m4b`+wYQKsvgZ=@ zbFl1fhPWNShVkM_D~7XGz$JlfN?RN6L!Pv3nadT`eQ)Y?MQ>w%l2TW)S?@BJ_DrBI z2gW*gB;m|tGEB-=Z(A;F_=Oe|^#3z)Y!VUgC!1|EArfM;A;Fe}`h815V%qcoVOAWC49tbCV~IFci>AgoC9Kt3j$on@!YX>S zd7SX4cI^`;>R6y`)zIvCy`vE+s+-XC0v4z4b+qdmkJX*iF?YKDm-xhx4zZ3&7tvFY z?4-wFn}+iQM^xmQ#HHEz2fplsP;BrlEF{rvU)5YF1MsS}{DDdw=zEuhFRasawoS$$ zL5nN}nCj_cl9AaYJ4dvoq?MVfypI~$oP#cns>l#5&5upeWbsU}DP-xSEIIsGXz3k$ zXNZV=h%v4GJvqkoNcMO?J^q(ukC!Io(o z>`2?QM2lIONvSww(iEL{^Q1QAijFeqdSSm@E;isGf9v;;=%Y6_tszY3BWvEt_VZ>q zFKW`a9;F_!+pd9T0&<$4;f&@1b*iR0i1DF@saXp5$P__)R8+S%gjqU^CoQyx_1yL#cG5zRRR##LDg3>}R0QQP`vkbLCi~ zTurin79+HX8El)FVmc7GkN&rOAehTbw?iz!=fYhk8BX@84hTQFljWwyyXlGxoZe%m z7-Pvfp0;aC>Aa@-O5t6|V1M!@D(Eo1B1=kjyJ%Q`X#T{^HRjTQ5R@~=&eXfjegshd z!XRluIUuLEZ{40GEQp^@vYVF5P99A9Q}^@QL6u9kZHwi3un?Se#8|Y4lONAG8OpSZ zfn4e?lncEMe5fx`^e7-m#S0xN1xyms*Zp16Bz6)n640}$Ch?k z@d??*o8;b5gCke1{@uiZ&H_E#Ox|a<3gfM$k65;vIvplEOls{$S3W_9J>@Q_9qn(b zxpp{{v&w%ZNU23sTU=(ql@^k-*=e<3LfR<*Y!OY|$2j_QeRA>+{p49?$uYy3*i`jY z|777q2?s*Ln+)d7LGd!r#Ik>&&S@Sd3G(W7zEC_jkvm<{FNH_gI>s4}N&RkW4;t%C zZILZ5o195+x0d#J*LDwWCk--;*g^67Xh5>6O`NMm4YkJd2r4!-@zwC$jafrajv_%gt(Tf=69Z;?U3xujnj~DrY~{() zMkSo^($X|2j{tKOAtvI|893t{H+hp>n{x7TCY#vhp!uZ1j=a>fJ)qeCtfh^!E?fOF zZA|&-cG}Ex=29QTW_(c{!rpP?zgw=7LraZha>mmV&dz7vdhfIgXwo4piyo#%#g=T5 z-HWrjaz;BF-9wyYMQVaJizG>(od_i*Q3=58yf@;S7cfT88p#}K)5o|jIgh;#_zIdz zZc%e&&wbY1Nm2nyfs4#WRD?-{(vZZp5%L{TIf6T+Aw32czK!%XF4dXD6B*EkrS*6o z*cH%e#@}_4-R=n(uEx}LE@_!2Psu{K`7~0jF_BbCl#+l?YtT|N&+a)yR z&o@blJkqJkKp`LT$={ zJdewv5?KX(H1pSm5GaudD>ihPV_0RI5EvPiOZ9c!0_8Quq*cQw#Csm|c)Z+w{C=D^ z=#1lOC;7<9yv&QEKcY7Hydz1vB-ouM;fF>gF(Ke=syv9HV0OOckVdm8wn%Wo- zOb;HnyE3vLxLMqpd{k=?S#uV7a%r6!LzH=R1ig=F<*IPxF7hg|CF2Q2U2$;H5J%g| zH$U>IxsyX)(p@Q4s&1Zp#X0UJV_cxfq|Tltv`8d9m#kThBh zmr4tc8N__+#rSKj;qQ8qU@Uwm48dddLd+d-u~6Eew;klC%1HpqV@)oC$4FD}d7jsw zkmqfc(hcNUY3B6QR#L}Fd3OH0$g>IvX2|oxMLS+n5o-dMuUqDuOw0A<=JG!7^?H4I zdAYu?IXk=D%x0VQXv{7zH*NFEW|IfH3iW2)+h*4E&1`vj_JZaGS#jT%Xx~C){1oi+ z^3Av+J*eNbTyHKj6!Tv2Y+mJ?mL{LgPW(K+mCcM#n{>a{X0w^AFY~O)&TNLKoWHB~ z<^1iw5~9mDZGo|wO~?78UH>Df?`rytH1eOPQHej#(?DK4?p|J$dVPl6?mHpRyGK0E zZd#M)O)<~=PMzmXv*g(>&)$?R-+aOB@|EOy-zd)*t9fpc=Y4Q6%JUkrzqB<-jVO*! zHBkk*VjoJsHv*5TJ(u+w7%OVLBhVbebW0>i64>rlBUdLO~(}n{Qv6GPa`~Xq_#UDuim7GE187^8A zlAyQJF$FwtVJzWrGi&0R8vPc7FsrF5Eq?Ja7%uWDOI#thVk2@KW2!~zMGtOZDl%+J z&11z@$Y*Vd5m*mdq^i%k+z>C*3LcC9Dg zqYP~l89G>OX)MLYF#_nV0UfmUaR(j|`uOmXBqP4fQp6@vCf;W0z|_FrK3%;I&aP!pm*R#> z%4B^}%8WIkj`qFM%)w)^OaByadQ1qRksKJ)#My7+8~MBl??Lt$cb6lqxsQERpjsrp zOIY~)!VNcEUwQMw8y2dx^QF>7m4(-th06XLDqAb`C)&2&aKpmFXa2#$!s~bJxMjzV z4Lf#RwBw=;AKI~FVZ)C73rBAFv$GfWzir{qDzfmp8}`#~-bi0U>wA6P1Ye{L@j?aq zP_As)@s{%*UbyI@U;fO$_{?AY!>hM{`!jDk@>>gU*>TYie*4C+ZT-0<~hFS>BY z+y3E)KY!%w-}s3eZoHA$KX$`)mCwI!$HEc#d)@lYl_StQyZUE`x3+Hh)QG<$^e3-6 zbKxTk=WTz>jUQfk%Z9h?c*~AUHr%-5!#jR>$9X$`>xOr4t?Ylxn-{)*(?tva?Z$=8 zP3g|6r9rD)NQPe@ObxO}k>k&E+d#&+b(ozqRQDdoOO@y7$&^ zRd(L|Ki>T#(0t97<(tW}=J`i=-wI9geD#&fSM7Nxd495)X_l9FK1ZHsBRRc!vQB7o z-}0unG~c*q_r7Pz^YRDwEkC>bB*8Z?@2g)K`%p#JJm0LcYTD&1j%9nXewWom`wIIt zFLHW!ZmTT4`kdm{$G>yo{HXg%g?Feez!V#F}%_eAkF{=k#^{c8^^A}a{>kn!ol}MrZx^Grg!JCQd~VGdB2fE7&K=QJJ@7z(%1hgGqRX&tH zbZhW2;x)R}ss1Cr3~pdmCed|@+XF6ohIVes*nGfUuK{{?M>MwvAFxC>4W^#)(Tk>Y zC?UE>;k$CT(=lztSGOpBbgwaaBNXXK2)T(R;;DPk3XGW4BtB+Ug5n|h*FG>%#cN#L zA#}E;(OeVv`V-?0e4h50)_~X=f8ax&hT`LPn$}wXQQE6{X{9mG15rGAz)@({;#YZC z1dn5xVTKr9P3}_vw!;OC{joZAe@7S&M<^as?P|U_m~jvfwH3VV>Np$V)JqP=86N2{ z66dLB4JP#$$K`m|g@F{{i0$%>+B`)+UyC7n3t-Ok0JXvL3x@M|d-2ZWkHb}>S zp-so}nNTIthdn7k*NDqprZ`KZSb1F53X86Ex-=88#^AB!yyre~EmX1K3RG~V$7O1o zr-C36#VyN>MHbOkuxAraJ-M_{xRkt!c@MOU?!DM+yd|v3*+_%;@wE?-YK3p%x@6u{ z9L%Ls*Ei8X3$rK_WvN0DPTRv-PVN*MohQv_J?+7O&>*SB2je5=EPIA zOqbdLyex|7Ojns)+AN%=;Z!PSi-hvBB4`!s^NfHuGzOQFjtpZh;A&bd@iRn^Dh)oF z=<&6wrj}<63-BmcP|M!{!VBW)dq%BEde>T{5?1hBFstCA%P9`lF=(NLktKN3x0s4s zP%oa?TI@O*=Ss?Qu4ay_n`neD6s8lWc)Cg@xm(RYByz#d_o)d~9G>)NW#t5cCP|^~ zrdivNC6Ui`#-p+V&%=^^QZ{|+gYc#2Lla8+bnyGiy$$$w5{D3BP(tzvSf8cr*9m0} zEhy*Ve`w|r?pA)4xxS~x(;PUid9Hf0Cvi~{L;O%1FIxMQK&9x!8y{ol_&)kM8ET+j zCxeR~fjer<9U>2|s&wQt4iIf)6mkTYtAY)&s_*}XD9yM1ELLx_DjJCQ&lUoe4Gg7gYOI&(|f%8;o^ zWOKWOCXR_9vM|?!7YWWu=A79k?PKX|FnvCJb|~G;B1Vy8wjp0Awq?**^z(cu_zRQ_ z(rF+|xS4GS%19wVnvZTm(FRJ(pgqK{Ib{t_XvkqMjdU&}UxrRuGt6r(2ca%Y^epv4 z13NyXr{Jxg7jZ6av ztzPeT=uc)nx##6w){|x1*eO~=cq}dTGz{oB1R2d7;DgRJ`->Vs9Po{RWz!(*IV9p! z&+`0fp8nFp6oW~UmX)F}5wsB6hbhuAU&UFBEYXLYx3e-nNX^%6>f7EOs8G7fM@&V| z%*r)zP`GDtAGfrWq{gH5$(d9}_ zg(Tid7mM@p?Jg3n%9M_A0WeKr!inc&!@)X@31(&9pMm-UXK~no&&R|OU4!O%1w(}Z zEr%bNDV{^fq)B|4lud0)OXCDew=|!Q+LtBXK{9giG-hIl^z4|VPv2q6jIdNHvy)`T z2OF^8Bpq5+wfRJO^J?RQilUG?7DwR+B;C?UVtF;UnZ*?qvkb^>Oh-8yK^+K%!Xf+bbc^T#?5*0j&0T(T| zJU{}D0wv5li&GLpokVrKEvAGkb6dfEnv_k&ON>X9V31Wn#RH1e( z^DfLeUS~~qWoX?6oSCsryAiiE*#d3x_3pdArqSY&A&!ooX=KlGKJ5ly0XXm}bRr;kK_zM;|%R8Kk9o>cyOtP_ehZ zG?3z%%qFGvnqCO3cD^e~`fcOneyCiQrWb@gOgLe#W9I4LJ(+JtUVEk^wwj>hp%x8o za>!zE+Pg(aTr#rJI6-XefQ#Jas2{|VRz*UN8uba@tNGCD2tA0RnE8;@<~mL~!@E3A zMnAJj+R+0m5NU9H0#%YQ%^+#p)E#89Mx()|jc{9sir#m%FM{Mh?i;2wPrhnhFZb4y z(1|O%d943)i>?s%vTj z(}*1c3#LJ$xuoYA3`iH60p)g$A+1w@9r-Em3hdtCUMCv;Nk#(7BR~}hjusoMA_OiV zwISeEpX@-_Xq{E&#Vk=@rQ;2`a9#dR7apfe=6+dZCMRi&=HRY5+qi(y$9$bfs*Pbn z8LNkxTH?P}6ZgBEnQ+IF<;!=D6s-^Prp971m31BY9a1}Ms~IXMb4z^~Y_?_Rf7a%e zE=Mk-n-0yG8|4em66?_y$x=~|cu;0S*J@4@P6-TJC8%Aj7gxh(az&qhgDCn7*-)}| znPoIOK=6ZJ$2%LW-Mu8@T{=JIJlUN{P&wGZ{F7R4Q4-uO79)*oxl{T~&9GlmaUy`Q zS|P@MBeMs(QqWc_M$j=rU$+Y=g3GV8r7yOrm0Uo;exC_0h}ZF2)}`0!GcE~1f<7_| zG)k6+M(!9Me7N9~A+0Ozau`&Ge2mQ0e0p{e+bN5?t#nvEbz2f>+0PWOb1yqvr-O8~ z95$&jXa!8KGgE1ZFPL!lwXN!1Vi^biQg@DOF(uWSbn1)_V7n>|dfc+vKR1}OG*Kb_ zH}{3PwhOe?G#lYhO@qN+dO+wFWF~X)HE=W`nuaTfo^#rNz&{C5W zVt5#VJSd4)NQxf1jKIbj${#Z51>ZTycSoRTXwkw!k}g0;U|2kIwelo3eL9l^Qg9>d z3k@B<1EdxKTpU$7^Nr||;mM$82kF3(UJl>|wP{VtqH+da&Sl8fikbb9W3f1$GB2VejmKDc$#(={vek~oLu{+c(}^963jVA4Ka zk7nFzcDlKPVl*sIC(bwxpGy8tNgA!BsWS)_rrx2eH-ghI4>kp_#(lkTx$y_|$e50c zmJ(5h;5^NhP&NurH?jE1Fr5VowF?jeiT}VP==fk9o5!=+jC6VLMNc7C_w4R+ zo5UR~(26aoD9b`r!-YVD?Id%p!BHxzQgTuupDoLg&A*hCmq9~V%7i2g?pV^~_NX*_ z&Ue%ku=75`d5Au>s8q?=xtL3B*m?rc8lTZ@))`lwkFH(;N2P^KC8 zE2aC}_q`p%b=$TW#1NYL7KPB^nKBZy*_Nf?n5)Zf*oW=8xo$P-$Py2d!asxC1a5t= zAz_igGsVQh#u%e_%P{b8g>{gx!&6HvJ0c)Tgj8kWJxzz2i9o;IFVjP4r>M9*m$8E@ zGU*{tp1I*ej3$qWh8Bv!Iz<#4QgQMxsmIJLX$GW520YTi-GXs-NCR6F` z9TQ2pMG6I-$({hFv;<>9Qf9(?E6)8&BBz&1S8O%UXoDWE=4<+I`(4063fD9Ry&$%oe^$&lU=OV3Yw=+ z7My2;9c{`m;H+_ZwFqs=|Hs|iz{yoy2fpW4-)`M$4VpW{00RbG-D<>0D0Z6>F)txe zP1A@$!Eu8$Hg<5-Qe+}K&PKLzM6%daHzVAVAsK;UlTB2X>eQ)o>g(QHABfY$AW`!R zgn3D6AvxmQP*N|X*3}bo^OhRSCaeQmU3nv5j>-5+>VsJ~6KmdRE4~kV0p@U!%+W=V~u0wv;| z_%>F^M`vTeixjI97F|zm<&NcIb*d3*#hY~02(82Kgj0r8iNkyMhSJawm3gpEcvYH^ z!2le;SMtqHkpUA z7=y=!vU*KAucnW}F)tAqMMRmugzPayGHJGJWD;E?j;#yozk|{^7B;d*)oxY&N^) z>)nD}wPAi#in9FNWPE;DTE`qG?f+W*&W)dK#z&&IIa07u&U}i7h9tbc_UleJhnS+> zFnzovEhpAV)Zr~7tu(5QJ!#|CPP(D9t2u^wPROCO9#-dQAwF=`wbn=XboL-6XUCe; zk)4aUxT)K&SWhLFq4A3MbU4OV*i;$&)&s|j$!rcaSacWLNUD}Gs9el@vsDLer)AX# ze@`Xwg(jn7Yo`orW-YNcFHL&F;*eCp+?Gq+TtyVF;oFb$9(7|wOyrsxTHpf)(lFYK zF<&z+4Ll|AV0%({vEC@!(PfFa^DZnmV(YKEWraDM&iRwDM0)$}vDr1ncz)y9QNMQX zwIlCYQ#ARUeN{zvesc49tC`|{Y)qQ<-x|NLYF%#G5w14*u-TBlGmYnsY-8=PXMyk7 z{&_U=o1-`QO@%r6*<>#2Hk`AQ1v6CfIVa3Mqn_L+Bl>*sR{KtEj7iydhxbj?){OJr z!dSmtAFG_o$vlRsRjIy{AcmGS?M3x$YP-j+=pc9wA}B?BHggF|wAb>fwnwpgvNJUt zTb0~+W?VGWO$K;KUq_53g+h|d+Iv}O{5)j4nVRlDP)7Fk=@8+FF`{vh9e*BFWe(Y1%z2>(b z?0@H5M;=-K-~AvxOsX?_=64_d%cnp0)JLED-oN>F|M$Mw|M;%&eSGB2uYKsNfA{C_ z>HqY{fA8Dh`|9WZ?CRrh{+;zd{>bmW;hfJubH<*({gS!*p8ka&_{w*hANb$y`IQfS zv#P9d#`!$@0Ra)&%YY_(Dczg z4{aE^um72Ee&-Ya^q$-JcJ`-_eD)9bUGX!&@ZI6bM~kZt{OXW&+D+H;>2H1A`qoE2 zbl2_Q_{BeX=b!4f`=RmS1Mk1*;qP7e+&_HoC(ikBaqIh*Py3%Mwpv_0v+qD>elGGK zeEwtK{LQ~U{vUqKH+%j*x2n6W-W)DAiVsb{{(6^e%T2yx|2jS`-?ieGs^7cNZrl0Z z<%j3YTV+WckgT_fDSq+R34J z|M-Qg-dy;hue|?z7ykJ3)!+1V2Y&&hfAQ_VceD`Q_U_ z_L_5E`^k^LYt8riU;6wd&wuvpukQNRv(J6tiGy!y=k zijKW+{nxMCy?Z{=x$6y^Z+1K0`wQ2+t@_0;Ouui%-+ZuA?L73RU)l5O_dRgup7CG$ z#}D0n^WMq)ryly%Z-4s_lK*^3Z)E4g#i4Unt={tL53ITAr<#|HT(-aXj!h;yt4S9n zZ~o)xFFW(Qxm)J%&cEsSM}PU&_0d)`lk$CMGu7D5`qRc*-e z*^y0~pc4KryG%A!^Gi>7&F~K%Tu8^g2%Og1*ix-d&1UC6yPc!MQ#y8Y*6n}#by0Pv zT-Xr&S^EurLNf$#@UPH?&-O?2mI=dhxo*~T^!9AET9uK}rzPQnlPVbbsgdZaGV`ui z>%1$U`q^-uie9L)0O3^K{)RtN&U^fTKIP$LS?Y*C#Yni|>jhvh?jDgPfFZTws)u^ya$5^F(@CwT1Vo~>?? z+1yj``Zsb$zc@0oWlM3(`bK|b&5w?ZtY5$Ly~Qn@axj3AP5Jekjz8PL+kXk2%x=kT z3TLJ3DZ}MM+~xsav)t%1dPsHBKMto`(8>DQS8?42IvF`hC)v@)BU(pZ1~}3&et*;Y=k#Rd7r^q_ErjSyLSI(Nv(KWFzUpMxt~cKHG&*5^5{v4@ zp^-!mS_fL6xe^~kElw$@(GTa1@7glkf8@~nZtGW;FTV!+r6 zasSUJpV@^@au@Yy`_CD@%!0$`(aC^+rKX3`|B*T}$mgD2zeV!sq~HG=GAdqhfy|bBY0`mS4V+qLTv?gq)Azv;R4oBGdgf#Bz_xT3m#p?)veQ@bR;<=IW4-RKGF zyAJhXADwV3(Ie<2kDu~ydH(sS_5D}%r|P?AH}#k5M2}|&W~cNF^OuI#=BEBBi_QA3 z^$oN*5-M*9zU;E&o2sYK$s>=PxZ{MH7B#l4Uq3awe!WEHsVm?6^zcB_suP_R#atB> zL$IGUzI2hHK9beCg--H2f4Of@)=7>fVDw$8ll-i#{MlXf78ibi?h1RL6D~PfAV%Ny zw9t1g_%*-v^iz6iiRvT~)yb}1RdjOg+oWILb?qC=rDc1qes}!s=OYd?}8F_cUKXeR1dyNf=-T~q!Z5c24<(~^+A@WwCv#g z$`?m+;dcm3wVxT>HPXWw{K6d{-0dM}Z|80gwWmAd9YwDPza?Db&DqeuoM7$}(K|`Z z2DR0%>9O&1$4EWduyt-M+!dmChH&S|SgN&znu?QML)XVWp$IYMH{lDAR-^ybX2Hdr`PhQp==# zAv}HpJq;gI_o-lO$3s`a2b>)Pn}B2nrQknrGDg%Ypa4D`KXi)=cZ_V{ev-@AlK(9( zyYGa%M}q&ogL_N3BjoalIJ=`n?=jIkK_D}(>7l#fy^pnSSvy?b@NTu^!pAh8cU2$W z%Eu|qE~6iRSn01FHXE1=|6`!}F!zq=JtM>BY+g^zaFMbJ_l?|I_%O+w@~&wo9*#c@ zes)huC*w`a1Wp}0+@rF9zqQkq_-sOw9W;c ztY3fe$WuDgcp>P$4yu!98AHeugs&i~n|@li#Th#wx`afU2Y>70k1=4+t4D>!IWCb8i|t(P;_)%8SM?!V(&b zVM`og(zwLG;Cv~aEW~HF7JJ~LeucbM7XAOHbdq*8xBPS5FfyVw`h_q%`@|Exsm+Z( zO?w#OrAMeUPyYV!wId@uTTDH9&(ze&R1(?=Q!PJ8?n51 z1q9`2eF$|TdY*Z39kfhmi{Xn27j?N9@(LV}9DG%%-}&e68ezh>*hUwV>KywCok5R2 z&3rJcB}8WJWc_-s_d!l7#;l!aIzBVf^)HM|8luk~hsv|Fqg!?r4=(6r_SuDYlA#1M zbaD)BE%E;BAdN_HFt{eLN!ZY z_*!u~nb$psiGHP|pDEUYy}0L(_>?ys(8;>t$XEH|-`dkM*XzLUp?Cn#pf6&^@?mDmjmc;}H`2N9e_?QM>2v%F^EZFkk zWW6)+`+<#Rk_ zeXzTOymZf_Tf_~t{D6k;og|IMhcZnji+-5U@Vi8sOVSex5bm)EpKfP1OE&>{&hnYu zfDK)%v4IYL<*|;BaLsoi9>;@|b|HLVM{|lt>KB4PIUw{7*`$aFmVod(COxqyqn+@P zz<>k9Gr?AOQyk%zhjgaz3ZBUpR*j!4drW@b$+Z?gzF~Qn$cnW-!A(fKz3vQC+oZWl z=Vsw0yd=(%$2Q}XWSaN3R}sL}c$2nWtW65)wP-caj4Qn8b4EG0Qt#>h9RkdDo+O%t zbVI(1>BO6BF)dFFE>Pg9#W+hyVJ&Gq+%+p4K~?xBu>sr;lgLKfG>JnCtWrHT2PG%5 zF4498X=zymAYR?9#Ry?YMP!>{Kc#FVE`tSo;5~&^T?~sTcPV_>YZ4Yoi63DBvR#Mj z)P+(}mM>m`MiGJ&! z7P-<^E+UQY!TA|;CAL7@N*#yG{+zV~w-MQD9P+IZ`^rFH;%1<>#h1=!Ur`6aS%nTB zJ|Br!R|2k6{Fquuru^_tYm|bEG{o~EAoD9;7Hc(J15?(r5*Xum$WNb7CRmu^)eS+_ zkG)%x^bB!lU(RvE0#h2}H0!VeU6Ity@K!X-wW<<5bZtVuNrxY`TFf<2Ki8Q3zmC#F z&S%Y01tv@vQ>4o|^q8>W`5*=X0Xc@J@8u}t|FA7-QDZa#3zn?>TAlU35O$9kt}wA|K_Vef+h-;h$Jm zXZc*`cG$QZD&&zQaz8o8BA;fVj;XQ(V7}A}xFHF9PhsQIphI>4-MBJ zW@d$ShQovjvVq3e+nzMK_G6)5X%57DN24IH%+K=^ak^YYt9?V}@TSId5VsUP5@K;c z4be!;U1SccV4`x)k<7`SNS1rP>@&XT48W{Q_}e%U>={%6^1YLB zzuQh3ZZrNg^Uvs^@#NAaY}}5*pXZ%TB+_mY+ZbxeYBsg9S{;RN#eg|_0gu!fL46&m z&CnvD#8F&rwMhvEy@H4AQ9=Z47j@L-)i@=%g;2BLh=M|NxrZZp+!pqqWEBDoYos0! zbt#y0T1vnp*u=H*p2=DQ<76layVaEIXk7Q;dYZkr0a<-%OZPfABKqcPG~~21NZoSh zlRcgJxaE90SL`io)hqN05cNk{lb_REgr~&AJq?4(VX08dWtGfyoJM(q=Y0z$YJL-P zm>MykIP{&ebL|eqqwl$FvRfR(x5}jil@Gxqx6rUuGQu@XsOJNGfi>P2;l{^suKS3? zTnmf?$V_{b|5e!}6!* z3&FNSsIo2{U0vbW1{IK~rD`ilswIX#zn}}H$&c!sDa_$S7(iEKcrXlJ{}S zLg>ca7-gTQv0cTB+m!1z#91hH%jsw;F4k^2-VJ@ej7nt5XX{Y6kZSu##tcN~N|bX& z!|J$f$Pb?kIo-w)Ell+8?ZakL%oz!=&}U2DeaOryPd#&480 zQb}1GYwkdWP^cyCb}5-~^Re^jVq-*T%i6jsaVxZ11y`4n6Ibz!{hET(QrJ<-!Fujk zJOO#@B~A-YrlYo&o;9>Bxh5`y?Gvd9LAsyDA<>rur}9u7eojRLSSdQSxq}8WHpB%s zAS}=abjV`HI)IXncA8^~uoaXcj(+UUY3ug{%oxK*u%SBZLVeje6mOlYk)w;$n9*w@ zBzCK%sp>Y@NNnTi01aQvYHwxCxfb({CwzQ&qU+!D={9#S`$fmmG@TfkP@l-vLw0|K z!z?AfYK;1?Yfsr;DzsfF)=~Is)>azRnHH&+#n$7Nx)Wue#S0wQ9Xl6IPFtVE<1ILo z-EqyOt|NIc#$}>Sv7(y2o`$B}TQ;O#6Ve)5p%$hB9rmocL`q4Uxp|mjU@CoLM03&w zi`gHZ7lBih3|M&Mk;r_-4gwm%9uxIvv@&(5j0eeZ>ENq?>8&~<)57SOld%%jKUWB9x$+f7u&@58ldfJ)LuI9%bx@c$}gDAf zA$47itE4M?S-#|`X4)6P#Z^ch-z4jSe8BRsmxqqHIWPntKt~*G4Pg^l6e=f9C;DM0 zR$FQkVgugkjI68jb4IAh$5=XVoFz}EIcbhKG;8+osl#~CjePQ@hMC#u_m;NX`juQ(>9q zV>M)zrp}aW@B$KJcGz9o76WbF^a9fL?Nu&zGzrHis}^J(YtGBcPP4c(q6cK~gH*>7 zF%G3P4AF!{IzL8MVN}tK6s+bHe(D2!FlF%GHWJe#C+Sw1S6=F<8;Pws8B405QI3F& zL^8%ByhE@?IO0t`bzOlXH3n7i}xc{Tm}`Q=GP| zbzRz!7(ttOrYl~q<&Bf|2b_s+LKd`izUFy$=dw2S=MGey7?=8V5*f&`cYYlmRK=C( zxLQ{UEB(yo#QIOOWNj@&HiP30pKXpgW^$1)_YijyyEWE)eQkVZ&*?cG!yM+noxMe6 zh90(GNvZdB=HH(g{dHHhZ*`HlJ(oTHcJfFmz&OwNW_nGs@v28d-|gWjAI(Y0x4=N7 zc|AOd6}7DGL(WC1J6Z;EBQ0PIWus2%SZ5ps)4!JldK8Uwj&39A(FvGN?7JPu?mn;K zWT!K79O20-CJ(e9s)H0Q7`_-$8;omu&%Pezp%<+zuj@JX!>^Nf?%gc+-IZ|jTMur| z>#$ko4ZN1~-8x%EBikL$`N_?)Gcw#Db7r{8i#>lulN=@Yedef{j&jNyuxv|1K9L+V z8=^`YJ283cKtr?^#Br-`1%+MXd%s_+Z;m5pq&Yr}RL_+d2{Dev@jCaJ;-`^X!cLfU zWg{}@T}nS^ko^R$xY%lFPq`tqc26l+9NkKN8cj{PR++n_=$R|;mtKo9#plK~bCG;I za#B|EWh+tCEYdT2kIR!Au@N*`7*xz039{lfamyk)FH2hc}Z}J2T`5q6-Vv%l)j_bW_E1RuEJL+VX69&7^lQD1vQ?%*F!kt6qEUnl zYoj99Xu4jJJYk4Vkg1IzSx%GdlU_7RT|XDU@~~M7A+P*;ZaJa8!dx^%Od8QXmOG|H zE~;~drwiS8ic}aYG!AhWs2_|7h}iN%b6OC{Zh2JcimS#h^6*dZXykTSB0rro)MbOf zeYDU^qj%?=A)~NWfTVzP&^qi~ujhW)X=#9{G;9-Fx|`Q@#KLI}vnB@9Lz`YEDS03A zA?T$5bW5E6gtxSldYXWTIN^rggHSXj^lRey_3%U98tc_j@D%47@zPQ?VbecH-k?X4 zv-PAPtJJ0Y4&6%hV^_4}76S9SYM2hIO8bIOvA*3g)K$2?)6$<=#2crTqI8-=YtJw> ziC@<-yq!7sF0>pAZ$g&yu3((r3C_tirnUl4K-p@3CTYU&r=?d~tKo8{t8@N=iCi3` z-5$?7wr3JEDNTtTTa4q2m3eP&7c@#14KA@b5lQub^j@^^3IcUY@E}!$9ba`=y zWRMRPjC%>k+Vmy(U7OXV0lcx&qS3`rDL~ZUQ6{{NlBzDlcsWx^Q@WX9Q>2{Rc!+MZ z?j6>gG1D7Rj92B*L8vK19%g}N2&B<^PvUt~*?90q-i{y=?dp<>S9$Sx7|H$8kaL)_ z5?2ZgGwo!pM;!ZPycn$&Cym1u%b<~LKeBr$lA4^sDc;)rXnR}jTj};Aj<=C>T5^#M z&(KJXUR<Y*f4! z;tuIe?8FkMRgw8yG;=RgU7NUw_N~>j#S2_s!G(Z9fFe2uf567}5$tMM*6CQ3%gUbj9$+hVWpplgDP{*~8a7bFj zJB(CT@Jgxbc$0mN<&y|4DdLfjsHAKm8OsglIogtf^4X*>sWc6*ax3aLze`w}9viyv zQC?K>dV|geBFpnm&Zc(2;YY=Vv^rBh37iw>HN>hhB>N`4V|{xF@bzJy+{8b@(P|zM zG4|2aGugLv5UyG9(l!QrQLU1&nO;H8pmR6$Q{klsdO;$|s3F3JUxd8=cW9_yBbSn)Q z=*@E~eu_X4rrjD|-Nvgclz@<<=DIVziNtq3DXi#HmU%ChHZH|7jmzr+4&Jti6*nF6 znnnD*NTb@K#Uh~MXPic%DaXx>SdHKXBiLF+6)YINu0Uo+#w@aAQ(!%+mcq+X>%eeu zj*YyeCya1N)GQFebwNRUE!e|WP_y1Vk6n1yH|*Tp=F}NSxpUDGBp&)B*Cf+oPBD#3 zBCNILQ6BFdF1juX$EZdTtY8F!ST7CGal}S$C#1S|n$(&R^?4={o>GWA89busq?&z5 ziK~I;ibt%M_T};D5!2*3uGBk!3>IQl3(wIaH4`dd5+*m=W*o`&S=94b7Vq{4Np33@ zW}S`Leyt~SM|d02`=7K7&Ze(pu#*)f3{5ZqzNlmsdRzm%m|7-h(oFJhe=TQ!bP3g( zIT?Fn({6}wOQC>l%w#=AU5=u{CbV&s#hnEJbQb?12j!9 zw#2ALqQE3oDu!1LV)pI*xm|YSQyAJ2JP=L|4$r_aq)0CZK?9^(fbjm-duQQH2`zzu zbOLiRX7PGWFw0YmhFR+* zbZ@vRiuZv@{U#!&L|UDAoCGKPU$V?E88IOCqWF^oB0U>G^%`gRj+&+&m00}nb^Wy6aGE8>dr z^e50l!fWYCuN>=O4P)h#*bZZlvdMgGFvLs-&Mf4ucE^jES|-V1WPa7gfRPy*-I&Ah zWTCd!Rt;2^Ek6bPK~xL!(s%{6?FrlCR9-Y3b4lJJUi}#~@Ho&e2w4-gWGCs+ZW z%^cleEgBixQj&{NCp(yL1k&qxt;9aEvH3*i=q=2KLb`uEAEJDgBI6(u*}K~9m1zwm zW;Q9_j8062J&h{Dj24 z$qlZQ46PlLx5w9>)p1hzLTRkDro^J#^lDS(R6Bb~B!9)k)wXL42d|QgtmdlOdiV$e zXC7!qqTEsbMv9jaC*o`{mUUevT+(lv@_xrODhN*g2=OzaGTXS{EhjJ4c!=#hgI z^K}`bDQMSUk_zFe+(&9ylk>eWw-rBp9Rfn|ZqoI{Dlf|dL#QhDg43I}SXZaRD;9kP z%+4}f)p=KU*vvDXOiw@WQi3SZ_|124!{Cp^D;bgIVQcbUS!33Ost7$02LJ82r!EZ& z4ht8Y%su<%C)4fzZWFJGP{lg3oU4NGLr zv@Oj*teN~93;D6~EvZ}-KkAyzV^7$g@IWRipLm`5L*87-vVYA4BxjK+vQ(wq*CHPO z9xQRzIrSjMAk(AQTSVPRCLO4W>A`MJWi63q@PtTerQOsnUMHt)E|4(9mVyop|z(Kk&`p-}COBoyo?UhgRQf zj{U*q$9|_3uj9GK?%C7anG9|I?dbMqrM-G=?PM!Gi(Q87ZOh+mRyWqJj>fI5zJAr} zJyGiKlj5HL^5xFq=lz$z@X;Un58u4-eK)oqUj8db>XX<13Hd(iOIJVo&bfxSZ@T!< zea`!qFMROq%FIvy@Q)1t)c@fh;L_neBRi^_{ZQ>wul>3C2a=(E!!)dyhrG1ss3hk1 zp8Le-iZ}kqInS;b-v1?=Uiqz$UHH8>A9~XlNj-;7P<*D7+vgtJyL!XkXlo?B)Q?TS zZ~5MDpZ(BvZ+^c2x8Gg=t`Gm!@4fnWzjXLpYx@88kwok|NgJH9{<;W z`Q@K|>gL9O`pccauzK|~kA2|B|Hn73=6U@3^b=*#V zu=(}&L)TXx%Ef23xs}_mIBRopby`?G5;vrjzGgBPHPFdW^vN&!#(zBEKl1bqH|+m~ z_doPYyNd;Ma^)B5O>vJ#%luC~(DRdz@4oZCW1e2)jyv90X>7>fws!f?`E_2#es$y> zhreisdY>5nnf;X{y64Whm)D5K@`w!V+BKD9G3rwc+F?y=wfe#}_1QZ4+uk-@HwSgi z>Wi1H+MUlmw`I#!S6y})@f}@y`_x{|pf9@P@RL%$|KKB=HnH!GJV*1RdAWKt*X1a_Gx6aPSXGJS1rS$l*|Kv%Q2TOImMhR>86+pUa_NK5pcj?+x zWsOoq%cXzu#qp|8lG%|fSkJ1fZD-3xMyGsv7pwE(%ZKEo2ryb4&1a<>nR@G6XIcFk za$yBOnL~5aCiWOgF31Rf_D9cJZOm?3@MmjwM@Ck>T8Oz!GX-F`zL3l5>`W(pnaxZ8 zjf*;AN8Ag9p6R6j^av~HbzS+%(VlEBdY?Q;%u|ig8CM-d89acNcA>_zEvkrK6yeXK_bUr ztdssBnPm^y37t$$P33Z`6WxDF1sxe)pXnrzj^ORIFwjXK%4n2b3_*mAEtKOV$kt@{ zpH_{q&*23+0k!|y+vG7eJUqo-NMO)T4vuUIWa3YLvV4E{FzqDlMSSGYBZvA|KmC;I zgjyENtxL@KZZ`8c}Cb}%Y-xQyQo95*mnh;Xy3&yMs@;TJ^GaP zUB{1qw$tk!JopdC2YuHTO*<>AUccv)3%SEvbD$IL4XM2fr__lGuFodfA6NytWZGP>oFJUTf@KR)QYPUuAYKz2q`Z%@{V;+eys6M`{cS)ZH!oEXr(n~R7b?6&`y3Pyvz$xqzq+cOeXPF^f@ihGK zz^`~?;D_+(u#eFU_AT0Ynmv3;T!JF+O#tF~B9yS#P^5Mud~Uo`few5AKCAiKK%e)= zg#TncIl>sv4FbwTk9~*fWWruYaJr)V3xf@<0k2^nVYW9C9(ytV1G-mo0Utcl^;q$v zW$2L(j)JZG6OSmJft`iJ(*esK&FRkA0cOz~C__@5J5dIBWIto_xaMo);^SJzg#Ce8 zIQ~KWf~{0v9y*t6{Elj{>yo{=ky}_3g}^r8zdlRvQ?+l&@c78t*{S|C!!x>{5$}d9 zKHfjrw^$E*`}hbC9oAT}*N_KB_6)NBlD&rPAtWg1ijVX&*D|lyJ%np1kH+&JzMeXn zxt2R+_UVB?%5r2o=d$Zz^$GbItN4A%<4t@3~F6>hrAKxy1d?uF4&2wMA_1b*=iCf&g z9K=-K5M+~NJZipSf8~EP+5W|w3m?`po=+JU_c;#sUuJ%;S~)HB!-FLovFR`Llz{BL}9!G9{dk4_lVISOJIv$WBue?dR! zWMueLpI^YwAG+x#dUMrDKj?%J{@}q(C%S`Qb+T*MuBYgEN70FnxKo#1HX6c5z<-^FpaqehO78_a$#z-NR+fe@ zb-zqrgQ!6}Q9(7RnHl5{O--Hk(Y=4P;6J53(8=s5=RwSl%G3o@1D&jTJx^>_)8wAg zb`o?#o8C#IniATHMxhIB6+tIY;q9wV6gVp+v=er$X6*!ZL+@ABd_{mx*mk+J@0zM> z4*yJ0ouGiJXB$&ji*9S~&(>)tK_^~E!;|Grkx&PlK~D-l8RwtL$v;1tKTXop#h*HP z?&4F2zcAFwPlg~?!#WihGnMRvniOjq5iiES0=$`}_^*H-uc<2JL$Vj;D}EtA<>LQs zNKcdD3*#H7!Ox=4w66$FtXu>pG`C)CohI2T(o|b6wpOjJ8lTzqV4of@!_V-VFGtTP z-BZ&urG^G$ce;n0&?#=L>%-1xvVKI{v&mjl%%HObGP}Pe`|& zXQ3E30h~-2uV8&5uhgWhvHHFqQ}N}(>oF9O9=wLt#ariPyEnBJ8s6g%h>!8TzV7u& z%60MkrmgU4Brfs}mDA>Jk*^!pOT0$BlR8Uank05iadl0%yC2R?jeJ)*VofZMC9;aI z2g!<>G@Im5vxGx7aXq`Ctn07-D@kj*>@6-An^1I6gkC6rn@bvdqJ?RO03$x$VTgQ1 zkV}otOxiQw0Dxa&O@k*`aaIJ%> z+%ho8!I+e7UIjsfvSeHVA0^gQ!F-{io$ZStL-j8Te^CI4tX$I%&I9n+`U_zEz=5b$rFOuBeqjdK z14Ss`266ik5Qt?YHH^J)VI4-sj#7}qZ%{BWc>Rr~D;9+o!OQvOgmu!EM#{W~dZkY! ze@IqMAM>nf#$4LtS+`apW`f37$W$H1#ZN1z0_GyhbMMI zVbY^<4^gvpUrZc00S9HxDZT_VlRz#64Dr!RM1K)?Ho6dYY9q^W5a)wEAIwx-u+?CV zLy(-x4=1Ho18A}B(1(!VKK%qbO(0u#i1}kM=8;H8)|Dov1E*w6mNW-v_mz|y?-@!h zv1Jx-$v&6@PR31w{*N`4*DGTW_`4HHnv<@ug&?Fw2HsmNK2nw1P;Dfnfoa`IK zk|13`06!Hw@SO-%3=P*<-2-(JoseOwL2WgecUQQN9tKU{l!8tC~IaJO0L zs!VIRLKQqdVe4878E*25J=75>gm6X6nyDpGxJrRq-i^j)SYV%LJ=Eh8m9O>jq~%z4 zPa-94#|u=RIg(zd)j%`0VWVidg@QJcmzB7r$f@j28)aQru1km6ziBCimV?D&+78A0 zXdgW+uEW-DtqfTkk(_hXm9bb6tkPKt$rg4J=en)?h9XeDKR~eq$Q*VFg+Y|EvjkeW zz4}$CfDe4DOYy@Vj?8T}W}Z&Qvt1$3iaiIoaRa8@kWM&|0`%ybw90l7;~Z%8W1(?g zNK;hMT2ONH!QCN#9D0)l_Qz?6ftmB!ZF`mj*cK0xKAm4dPvf;l&7mEy zD{ZZxL3XTKq&)&Lzjo5~d(z1A&7L!`E0W#^6F$B@Dp#~GlsNX7k?gg!9(E1YvWi4c zu3(x6%&9w;t1OpA*nI3s7spXWy814f zrFXPRB;T3b&g7>9m%eTccc!+}@eV0F;H2G{rkNHRtmd+&vBAX+X$cDuO*<4%Dz$s9 zw9Blt()pb@)3oJe5`p*%b3l$GpND4(YRfJj@|IPj6#fD6ER?jw1kornFArK^s>%r@ zb*he*!h+u|4aBYaL`%b5U?@Xt3?hs!*u2|E&e8QYE%J30&BCgPScnIWl%?bJO)0l* zNV?5V^J+DkrZTb|Qk)FYc1Bk= z(dRQhQ12Q4HKs~0Hc3^txM#@EXT23JmBM-do^*&1XY^R)33OsrIb?3hH)Y)hZ`P$m z0PJv;qAyG`p+HB+P#K_!AgOu9GL2;dJ>!T?@AoAlwX_glhT3{Xf&`)55qfKjx+~E zY8#nTA4_rW+P&{$cX}6ty`_yhSx58((X-fiP$_H?Tog$cqM!6A}bDo+dT8G z|Msv*`x@oz>(GA+fo4$0e2&-U=+yOCUt8)}PhT|jrB-CYgK5efepGw%WropEM z_k!Ty5BkX>&`NNe&`cJ-5UaMLJ9T8>7Hw34+c8(nTm!5KTc5s&;OD6Q><7>|{v*!O zxGqwPI#CX}PUBGuoKir@#ncCPog;t=;NI-xjN>fubNRel5aIItK4k2-a1C5x{ zY5IIR;X{Q7kM*ro=6o@B5HT8H4^Xv~mT^(+ea$ffuCVoS(0@`zcf&_Pk@K7 z;G+d(c4jS@Cn0OASOlvnF&JYogB{|*u>=^(JV~#DFBoeW=n{{UZZaEYI&wdF)@M`? zK!t7{gCU=skES}PJaAPf@C!#rqF}HKJ}DpL?B6+%>(1 zz!}qEKVN_7b?|z1iT-;X6=FVio1@LS-P6^{1FvhON2Pefg!I->iQEjiUss*p=WHWX zJF@zh02ki-%1c4B7^njY>k19kVLTWnD^zzHnZgphaa1}=wF-fbhaYWb`lqP0&g_J+QcKq|NlzEl3J~z{?(~hLc zAg&LvmifnIM#G~a{(?$0#Hox43v<4tLcg!N3@Ql`3xL zMSQGg zXpnCf@uG|sE=LCB-B0Qexs1kIdHSSf=!_z&i;?N&Mi$vgiL9WpJ8ivzjb!vRF$66KXMGfa8~d z$Mr*2?OcE5J;wgFL8K7fx%>E9$P^Z{0oBNKYite8AuVaAcYw&X`Uo)%2PA})3{aC{AFl5IpS7&9z^0v zmMBYX9X(AzQcGcRK1HarVt24TjHz9QrwUeCM*$VXsqTb#N2|y68-e9TLo?GIzJRLs zzXW*o!B<)el^}nqbG1a?<=(Ys^42Tjg9m@)3U|ZiM5eDmgaJSa|MdUEa;y8HH9vI4 zkAe4^Tim;Lpp_d>w3Cb?^oHd|cgvc~Z~d{kg9m^37I!1`xCRHv>(^-2ahQYGhNB7h zmzVt5t+z6s{P2zb#&3hS9et?ERe%3NAUWri7DS&-!j#AH3hhP&w;9>Y&aS)FZQsFL znOoy{4kQ)Zjc@$-#}%IX)>lN-A@X<6d_x_N{}J%Ng7p6t-suWZ zbYRdE8nx*Si#l%M52M`Ts1@RZv4Fo|FT@xZTnlva3-Lv|bfs6UG2E#QUKGXuwm7Xe z{$MZO5wd&HKTZAO?UN!ujMm;Bmo*$Bm9VO7Z{1()b15gPp}Ixj~uu`f`FU16BwhE*!?t-n_W3{yVCY-ScSKb_|}iLrb7y^+`0F*AJi*EP20co`uD|D;Hhu!__| zyp64KMr0eW!L3*+5EoaRb<9jXPU6&Utiz-QkH4)Zrtu_g8r*`h)?vCz z?-*ZgO?<@F$Wd24@@1=FoH2@St!ZvcVk=E$&~**zplA8wb!>x}WBSMqUKtE4Wxo01 z;lJYC5pQ9f475~Qk@Xuw%;|tuPm+TD8plUF+ht;HrOUGZjl_6qlTVKjYgkbn`-0Vc zPYY4NFu@F;h=lFT{AG}ZQ|2*&^0o{&t-;)td=DyPE9BH3E0btp&2X-enkiQAj*UrS z8xKyGa@u4~ly@;rM+r#4_gF)}WLBDjeyW8YjK>C~vhao*)H99dG*&k9>MK^&3%RMQ z!7#Nex7VyGyKNg*nlf6ua(sJSD3qgB*77~+(rh7IxOqiPZD#~E%?nAdq)u^&wjm9x z0#*v<2E8K1QMP8;trSz(&b=mZmowt7tci7eu$6+DhBL&v>SxoO8_RE--X_~QJJr^v zO*5*CsTa8EWt_(lcs9;7X@*oIsYm(=z!q#?Oq0+;WaY}7WZ(z(DJZ}E?6IxVo)mU1Bw8hP-W}PJuBukX%*f0;}lZtHn($dV$W`C0M0G$K|X>zeqQrD^#tXnWMB29K0IUSxXI+EaW@C16iL&^X+b z(0D#wh8RxCaYdJ-a`9(|J<%>gBAkc|9!UbYf&J3fe6$d^=*R+scRrqvTKE;qQVDzs zj}?noL5qU3rQS$AD%E@DSauRcEwAf$y-f398^Ie$;kE=knw+sY7ul?kXfG1Iz%j>H zV8IvYMp0B!0!>{Bt1F53QTx(TDx;R~yMdOj@YUgUd@7AtOqM@*Y7IO9aCC?=Xv=w9~?Kcsw;ANZc$(7 z$BC;-1y$T5<(#Ll_TI^1c6nPu=lDAa&6=)n70cfd+R+^3Um-xbpZ*yC@rlT z3aK2$v;ma_0BZ|^jRlIz>}2TT9n)GujiKP7{JctXK63Es+m3h=M$u4%PqS&{b5Z_M zGEU?Qa>p;O3|0P@*QLH&q^aHCw5yOtB70StH4frjT#xVIz0{ELVLg6LKfRNvM^){5 zG0rAkq&K-gO?=DJ`vs;OvMsOYR`Z;fh_&+;;*mU#f1cEG$28Si7&NNU$2d_`(g!RH zhgg>8&AjZ?b3LQ`Vvc{d7XJ-% z{!qjf8&#-usR<2P&HJ%fJWGM*=YO9i^mI?k3YZ;jH+<8|Nh1p5DECFoi=Sa=oS}@< zX|h>lx}&w52Y_?wv}WAV&{H=^rZPD_I7OjGAqpIh-Z#`;4b7CI9Auysf)?L!B5gt} ze`XLx0fOvw8Z*e($TX7}V@Xfl1TUzDk;aR!cR}J>9Vxu2A)W}6cPi5eL~TveXc5v~ zQpIMzN$YqW&Pt+nn3dWNngBYb0!6Wj<{U1u8wht%p4k~Se>#cjPQ*`ch+XQ%G<=tS`-6w0EZ2@n(kQ zYrg5+@)lFI;eJ=y>)eTl_Q-VVz!piW~0Zf2r5)9%DhY^rx9 zdE|+(;?$M(D9VDH*3q9vS7GsEn;2F=<7P<^iH9$kY*ZTW@LK&kwkW%=kG(GWWV_Bx z4Sv#!ZEmFsI63I%P2?Rt(nRQmCSo^-Tr3yROpnPp=gt|Y!fT=c27B>)#-f>sEMODX z?AcPFRckG^a4^>@)-6KUZ}oW}cjNo@R!K0EaT=svE>&{Q`+A3K6*fpMzDTyytKP(d zzSxb!ZCrwscz=~>y*O92)GrS%L_48I_yz3dViLdTvWqU|8_rMoV}W<|h6=zKn?=#5 zsKZh*D6clK0NxND+`bptPFHIcBkAzywM17Hr2#?q@5lw7bYmJKW}5ZF;T@!2e|tZrPotPbR-*sjp`>X-N)D(3CVcpVWOV-EDNvy;Jj_ z=vF;~n?sE97RiGWZ)SI1Ju6aJdpS+*DPP6SOiBPka+W7VIj1tkl^kU(WKqYsbR*Vo zI^G%r_QamPB8&UynJyF;ZWh3KbvaS1rl!Tg#9V!Z$4+}#by+n<+Yea1#DQpGvkli0 zTi5i|HSLNlGo>}%*wr}%7;JjBM$>@9Qd5uW(z9g-VjNfRA$l(rpBkxZKI2lSa}KF% zHv^7WPPB)zOrX2u7q}zH883`Q!wximr?d^IW%15+69!``mD}wJnTyNb7ZWB(i2}o(g-AVOOunzzo(biE9lX<;)5*u8afWZT&NV&*NanF5K`T22Fr<2vc9ng??u21=RX z(ABUPl{_7;{KK(ao>ZJAt82rHds>Jw&=s59Kb#!MiEE^uQE7U5n=#4dvOg|&K$hz8 zvAR5#x=Q7-nu?zXkzxs|H8f!34~i+i?%W4Jw9BByhQ31Q?S_1odGjHG0X|db4}OpP;C+x5ad>*K%Xcukj^PZmGcaT%l&{Oj*_*A@TI&X3TCS z>R8h>BW~W$7ig3+an0=v)bz&g?tRPJ(z$YZI%GL^>b~=?@$6OEH|hN4tL7)HmGduc zT(XTp=iQ}oDNtWK#nqPa{uP4@n3xngbB6%(23(k^ga8|2UBJ`McmZtY7+C6YYS6AD zwb68{*p>xwYC1cP^;cB%#~Z0bcsiSHr4jofwn|&cdQFosTS;UM2=Z=rD$r`ZcUEcF zCCghsKUE?EoTPUaoTKtGenbweb|e>hu%gHk%{pt7LZH&{rCvR5DS0khAtN47%sw$j zAe=ge<$2*G=_XMG|NT$`Rm)F`>4!O$1iV|a#iOs#f%5qIXN$6;C&}D4Mhp|%$Z~dg zR8K!_V;}qTY1lM19|~VZS&qJ?oyr}?bt`423WaoK0UaPL=c9t$;hTQmnsgg;7USe} z;O5#%wz3IK6R=fFFA3R@qmq4DAby~e2Conq*o$mn)<+v{a;$2zox+{wqWh!y>!4&(s~$vA zi<2l9YLtIRI-E-N?B%20(jMrS)4ja5RQKpCL%!)szZ%_AUWbC@*&_A z7*3nQ>Jx}~Ii>%E|76!(#>;>?e{y8-4Z=)@xPlTen~}#5dOev|4;i$1^W+gNTW8P! z~L*naNmdLJ!B<}JvqM==!H z^Eg0w3>`~~IIT*lsg%xrB9uANUp2zk^# zpxFk9DHNT(bSA1Li!$j$iJ5duihBNaB8?2$6|s{_bU-5Bo54VPzc|OgcVY@X8`s(ri)u4DA4_p+MjbB;mJZ)9^ja|Obb~8_8N4Vx0gfnx ziEa30K==t@R)UlQm@o5Y)yFv<>8&;pt+Qn$V>yXonrD_o&&~il>hZRlSQTJRGl|nX zCXtWt`GzmlX#-ys4+);lIA20_kW?q*j@&mlsn7ioNLqvq(>}m*Rf8xG*w9xoPBYim zTR@!aN!y0HZqbm;#95Zgtr^0QwMqPKm+VwF_>bfOIkjQOr*Y1B#o#6B4)nxM>(qLt zK8=X_hnZGWhQ~vFjFEgsj#_U@K{4mmL4`C4@;s1 ze+hknfZs9YLHwC|7r2RovNcqn_hYRE<6xfzWTHX~mSPSZ3w~ss0a1#VLBece0sMkv zslAwNY2eGci<)F0mjU9*zL!kxUl_9_z$}UL6#qn&4Kegv!H$dzw&SfLHHjg32`WQA zbd(!ph@%=%7mdMizR0{Hs`%9Q!TLX`dmA{ps_Ve>yj!nIuS+fZb<-#f2)JEpixMby zLnDX8Uh8&Ih(>0d(no{Vld(!z>%mTb8Nm>XaTxnnQHYWtxW&i}&Lo+V1_zL{hGa-~ z*7!Fr6ve?_CddxK$xiSH$H_W&63Y?FB#ynk|8rke>k~n2Z+7-{*SlZmo_p>&_v^iP z&$|@Nz%PD*8w4uDp?DroR>!lDM@p5fh^-5+pmzXGS zUeq4tMdPh9vA8_9(>RHn5aIFfa~sw=_lJDKmKT<}iOXd4>U48)q)b(#%3p3}1oPsN zRyyIO3H;H5H;@Frm9jmM) zqsy8yc1MNtpo%38U-3)NRyK{JuYhH=VZH9E&G(!NqN% zcvxf&8yu##Nh=ea&L&4_+AUHlG7jfCd}3J=c$H|uxE9Y!(6_bN{B)YJQlTj^gE^se zv2{|r(n>7xXUck=4cBPv?^1^R;v!Iz4y8G+P?q z@ZPiVY4p=U^cv6m4aOXvY8%r+Idb3eS9d?L>Ap{XyU~97=EuKy%c|t7?|SrYZ(a4@ ze&x?zvcLP-qWRsI|Hkiq(%rM{#{DZ+@4Dc!CBOAR?!jlyi?X_c<4z0Z4{r=Dw%Qyeqw}0wCKYnTPlA&8$ z6Ze<*KDf9Nx0=3b;>#}mzwcPP?Qj3?{jFD%cJ;A0UuIwWji2AVZo`$Wjvsj6U%vm9 zXQ{L=H5yID|Y_*k-7H1 z^`Cn3^K(aJ{mbP~DTN^L|6t9P5dqsj0EucecFPu7V)p%b!tewj|B z!2L(2lcDaR;>yZLm;b?Hv$vKEfBB~NSKs;Q&;Qn{&;G=(EW6>cKl|t3`>9|2rT^o} zLqD?l$!~mkYT*1!f8lRFf6s&W?7n~TvoC)2=YRLfCw6V$f8(cLyzh^A&-kyCIy$ME z8{gfo6eqV|vugG~f2H%D58r&};LN3^yT(Uu`tWyO_~4yCzHGGkwYPuj!%IK)#J`{W z>+b*ll}~*AKMY=b?ZmRt3-(I#wSQB-;kPe+_#MBz^pb%KzIo`;`&a&(orU+dT1|$Y zMd!`^?O%WRZuhsZG+r$}zW1Y_xXi!jL#yxp(9}15ciq;%{>y*fJ)#o5Z|AK~Z`<9t z_woCuuKnBZ-2IKe`4{_+2=Rsca-)Z(ylHoN-x2Tav-|IR9GyJAH-7S`=ej2O+=|O1 zu)J@a(aw?EDX^m|FWe%WaqvTe+LozPDA6*)Uq6y>z{=26tyV1BD{@t4f|TzDvq@Cr z^<0!${l0UalS1-Cc~2&O^Xf7t?9p!%^O@LL{oZnIvc`CZsZVWcvbJS%&D4+{kFgq3 zo`Wx@X1yi?o|8%RtFptxC%!FP+p>i@6ujA?HB-;e4srU+M-+EJT=7^%lm)eO)=GKcv9vW0K->!pbMeVBj#`s?TC zf2ca?@p1ODsUqKf-U4j@&`D;@jKR`Qy2Md+O1P-^RCz z=leR@qB`N=3%=5Qica*C(u$|0AD2UiID?|bH@VSCPR~RMe;YSu=Ur5H%%c-+L)o{2 zRo2iSlIy{now{N5>Yh$iD_U|dzv9haOaq!9ewj~RbGA+I?11f=mRtBnJUYp}04qT!bQpRdzyTaR$@4AuTW*=Zcz!nb!l^pZ&%_VS zfA4#z=){Vnq3t++EGzSk2o@pmh3fES_&0+7x;W_M3><$_jP?f|yGlFW^p@NX#;&I> zdA>Jx@vUo`o_@bNKf6Q6E?x!ctwB%6$vaLNyHqEf1;p5OicYlVvy5aXik#$I`UlWS zo^z10KXM+>bXqk!(Xp%FPmpyOyK*lKO+6pRE|}F*mu9&tC*iMJz2%kz7t?wex53i*o96gsCqm{KYhb+;@lI>QssGdmbLGmPAH34JgeuUoC(|pDCk2dr8nA+ zd#}}N+_v*@Dx3|HofVQCRJT}NI3t8JHuMY;v-H;1-ls=yDE?}t^)znstL##}{YH6u z?@TP~7HDwR3R@A@_QSZGiz1auYwuq2?7ubSEs}RqZ(?{qPFbzu+I}55kECCAyT}}k#hIn=&u+0(|{eyDNRvb#AmB%Bda>YX7HKdkAi1`7}CIV!6L4dpC*l)RfcSHvvP zXtl3h7K5ua^}G>@%9LSx=ZrvG^DbQqPkQFcsGhB|?Curd7ed``hxRhkQ|I5!a|H4c z{>)p$xh2a!vlM#J{R})QZ%-3ep8LG&c_&J*UzgswCu6I*ZrgtM0e=D zxMRoQq2FEdU&0)6n#_))6F6H~Uoitbk0t}wiIsFuz8XtwIsfdyDJY9uaHoT6SPMYqLi-gUwT6V~{ZYHbabu)xR`U!lVI26ej z;@P?s@Hg@xGt{9+uhO%740W$%<>ts&aTrQj4P*DnOVHPV72bK0{9~QWJsqu|-mqE9 zV;$=mKfo7U&6l|={HbA$r_h6s*|2U4wth99@?_;`{^)_oX@0)380fhkUDwX&+n%fG z;MpqS;>X#Wx*D45e}FjhEdHY&%_F@!9K`MCg+(pvHe75fJ3U@HHX%s7#;U7jr|Oa~ z@I+Yi_2`t>dI`Lf3Q#^+9-f5F00F;Gk2gO~>zd)0qut^=nVqBWs@n|t%J9!SeyF@* zuxG(E;lX=I=p_e-=##;n2w2fSiDiF@WvM+VVx4uE@@4UZ)(9a2Ja6ZnxIY+!#=8rp zKtBBDCRddTKF5Ba65_0iB_;kdvKc%DOj6iDN|Ln`0yRi^XDA0c^~9bhK!tec@$|Ma zRhtuRaREm@XWI@5iF3Ry=N*hFX0lCUUk9CVL98b`9Cho`H5KnFQaKV!)$%477QFI_ z+qKY02J2EcRfIhwC3x$?f8B^2p=2jrIRtZ6nK3YGD(p|XLf$w)rY923V@1P|>AAsY z^_qz`q_R^W!&$&HMwXKlws<-VH;9lp(kl~EF*&()I^;AtV=7`|tQAYhT@k2cJZ&u{ zQ$j)agjFo@mdWt3S#0pcK4QX0q~SF9somMf*45{aU< zsigp3>Dc!btSxP*$knh`%2mYTPMWp0gw#q9tH7_ego>@(3fdoqmJ}A5@myu(x=FFu zQN{{$YtG5G^B3i|$*osUm`GMoj&kMT|2i^E$fD~Ulq~*jyu#O*01;RH#aZzCzCLnF zPD6;=`+lT`C4|&B2U`+;iUq)nlfxbvUMo@|&b9(Qs^8~~e$V?kIOV%>nuUbtRAInw zd5G*9!{zt6AXvvQD^L!1h!UhhR%A*eXOoPn&W$+b1Rg!vJa2n-&yk19Va6Kv8i@lz zT4_?o;=)5zgC_QibtrPbgeV_ijEp7fFk4nNPH}h(nvct=XSid8L*gCnRlK9^PzF(P zH&5wo5?B|L1tJ~n#)Q8vWqWG=JZj2oOr{q_dM%jK1XZ5CmkVw`yb#iOP0_PJGAt+B z|JAPvS*lKe8iFsPT?qCr%QLib8_{+ZT~V8Ci(DUCkzh$jt+ZyC4x~9Ysm_h_W}HGw zqZzXN$Q|p!X-1Z?ANQt~TmT`Rl&2HfGaL$7pNrxKK1>p@yJIgA6uRu4KEI)&9gjwG zIX-JU-MDJ~H0ivK1_zXA_<|_9YFeunxvQ{noHldmQ zfmr4t#2d|W_K?;#mGdJHphD#TG}8Z1~aiSVoyVzKBl<08$T zv?b=(>6mkdHex#_=j*0z8$5-x(P+lIAlEpRKVd6{txj7fp3%Md?MJLFc51isGoa0;F=4rm^6l}1R)_^>Z?aBUd$l8-|$LPoo6f>q*hIu|o! z$YBw?527#PS8nErVTafH>TpCenZC|r-O!Ll>@!2c;wn&Q%Uu<`lz1t$hv5(*=vdYT zC-J)e9%0Pw%Cr8kPnYGrz4sc-yerb6LXOiVD2dZgJjKMdVVYyaZYEaOZja2-d6w}+ zGHqRPy^+M(8qJn=X@q~DBaVKJ^W$)Z*G|l)+$_UZd&-$=4t&*lAw~ma*7gF&Xt7$qH zMW({0Nm=?)9z^d0JEcw1vF7yi@+grQq0oFqCSqkPeUn{b3za6)Dx|S>-bmd}h#n)f zt=4h2o!WRn&s1p{2A!y&+hyufR>A{u(o|!(1~M;-c{nNLBmI=LNx9i8JRNry6;Moc4XVSiql+gDH+NSzI ze{ZVg9&JAW40<@EBK+w9<`72!>cilHs8U%Ww>dF&CUMC#YQzo&IUS>Qps-|UOORIV z91|+-Eh>%FJ=@=#jN-vEg7z9GJ{lm`1#9SVj619bob5oKQX=%omDcWX>(GniJ+iL8 zFUfcO4Etb{sGOJNUOq{#m5JgJ)WC=~8XGq!F=F0C{JSG->q>ANwv92p83iQcPMdZm zV&f1C2*>CsHjY4%O)%!HU$`jI(|?jdn+47mo93_Hy*@8%r`W!hVFE?N-AL zw98V8ijifTWv$hhp1dJ|gEPRN5p%YPJ{C-?H*PST0+CFF@U+(DFW7=Gp-P}V=TRi5 z2E?dtm+J(VnMT<{@0S0bPFA~U2~ z2pLcy8?h#hi6WBLU3|#$Ax1~2;HBA=WUR)xOi6yX6p$!;e|2V&#s75)HJ_2gO;lnG z8K|_4Ic*7f_|&H35T>z1$m@1SrXf6JM54MC+0|B(#E>3VQE^hPCE*p++?@3^CFltH zh)@Q+ku}D^-FueQw6S=u;%icv9=X-Uv7P96sZT?Ubyw``&bSpu3RWC4r$3scSd}rB z(xjtO=PaJ*=uxcN4Hts113|!N$Dz&&ib352IK65_%$EbyFS^TFkOmD?yr$)f7P(BQ z+^lY5lWy64!i%3g;Oi3-cO%Z;V*oNzN=BO7!#cCz4uQYt9-8YTBZ=!UigAxJ$6Z_% zjSoC3If@@%lt?SLi~+GDmom&R=f3>$naORGAV1ZO%RB3H@>X~_(sci`Ik>g5ZK6`H zJz}o;h2)xtW_~f7cT-X95lAWN<3b9@yZ9ZQ=bWWJ)stBFhEH31Jt} zF!=*$Oio>mm5N@|nXl)VWoVo&g45%LNQ|>g4Y^@Ph-yHdU_;?e&2h^Rk=sWDGTKPT zDuw;Y+)8_sZzgv9+0-$6FK4;jDb#0ZirpNIICb@OtP||wH`#YP8qG)=op+O%N1`b4 zp5cG5i5@WfOJuM)_rLi#nsM)&d#)+6*KpXv+vB>G^pcv;KjxM+y0TTAcS~S&d5sp4 zB(9xA^>nwn;GW^+e7Pr`8T_5RylY!^W2^9^!yUnzt{k0j+>#X?E7KFVP5O#G7?n0p z*Dj7mit#p~Ye#!87>&9|T)O@cLQ3kF47)1Lc{<1|RR6UuLGy?Mfd8{#`P1Vp5tfU| z5@H-ao|Jx#h@~xr}o z4gitO)2s=**Tl6k2ZL(6+yZy$z?))Y#W9}D;P4l@x*#GuVkzRaK?k98gUf2H9H|V3 z(?UNY%ja-BKXnzHn3mN;CK+I!mP68-asFzdQZb1W39A+j_}C{b&MYhot6?u!=o3@E zwJ~Y9mUKi;y`*`jSn z6E|+Inruq@Ad%AXMyHdtO>HbI?YQrhqdJ|s$k!yA@M4kcxDA}P7SP7bboXm8O6 z#@Z1f{)#lJlG;iY$Kxxy#wH`OeA0A&&HK&(RcJ<9Qp=9YukN-~N(R~k&ZeDua@`oF zjZr(Az`8M}2tIEBz1IQcd~P7!_c8DzzYK8I+s}TQYf18&j#HQ2uDo2BL!6Uo<1~SG zhmxsqKc8bB)uZ+HD`Ao^5C3>w#Fsq7t{k0?V*mYpey6; z8V^kJW1%G7Ns6V6+C*D%Ow>t|wdDcsaLB}e2Fin1uc>o!@Fm&$>8q5ZBLE0ZT^VBM zg5_}8p-Ex)e0V-Y4$lnXW4PqAr7$VPkQNGRw3-Nxz z2Vt$}Yl7Y}#Nw?YFdETaW46;f4O+5A_+o2~Fle~Md7_DtdnC=W_z7QjIl9{@NxV9e zc*dr50a^5K#ZI?%)#t23JfT5zXO}=!!Qi4JBP+pZiqV%GuBawEKBOztHN{gd5IejP z>Sad2=qQd^{8>mi0y-{$pT22=E}TT0G)K!%S~o$Ob*$iUeFN+WRgfrr$XmG4x8o#` zWEw8GLfGSL(!+sFMd~{pTrUE*@9o88&gqfLB=vEO1gFB;!r|FR4{eTIp$z9$TjG!# zz@2!tNj3R7sewVX)BAGbOcak2BQ+kYIuwyf54&HB{EO1k$-#`NZNX-+pc#M@WRo!$ zYuKk`q#5W$0mRPhb4_R|kd8V5=lW3^3UoYC%9;%h7kaddr1=z>*VjhXFBQF?Jj4ZR+i*F(tC-N|TKo)bAMq0nBKhM}#< zVM*hp>hQD!iMs$L`Qt|(Sql1MBuh$fR0;{;-4wi#QbvW(6ji5M-? z4x<3Um|wVK^0;KGOy;^db6dc#VH4%kd9^-%2#EkqJ= z0v7VyEG~qRt-4O5(4*}M-7;7aW0lRhK-du!`UV*SSljcQ?w~lYagpWXvv~;LYeUq_ z@LCw82k_w6?MhKs{^zpPJI`|<`fX17ZRO2v4h64^3H7fyxQCeJu-V`nYh!m~D8Xw&-ie!@kQa$^)R z-_CJK9m}H?jQpeCB1;k0U4=o`QV57&A4v2K0>(LUBJQ1b8==T@t0S`E%IJQ2j($#X zP+IMRlNg;?c$o7MXn^02SYm@^Hw;mtg&q)Gk|~$~5{Zrwl0{n7S;1$q49b+A`A@lO z{3!qu|BVIQ;K?EbUeFac(P7Grv3nX=8geX(Y2(I6~2cY9vzj!ure z%kssMxvny;(b_Wn(d2Q8AD6liJ?I^d6j}{WlHZvJNg?j&70%Q-8~7|TYCtv$?4F9% zOV@e?$dIB2jB8SqxeGb_VRVw3vRRQd>e^BYQR@SbAO3fT-}2d+QeoZn_V?Y`_~N#9 zBfWCpx{<5fU*Go58=qzQ&G60KM|YKPhGsmvoA)M-Ufso8?I(psuCi8Uw%M6?zV(AM zvTf_ueS166$}c^+^8Uyc%P$^iFG(K$%!l9eo^2nyF?#xU?ag0oyw~_fQt_bV9B|9)Rj<+pCKt#wsEg7FW-OO-o5Q)sYwPM{iHTH@X7@Q?ET34 z#mBLwtiE|*m%p>U?|fcW$6Mq?ip3SNbyGPoBRHlnz(Xq#)hJH~JPNqc9d z{=V`0pNwvoJ^nex_G67)7ZJ_6&$LWf8_{;HSW8QV*gP=w{lKSZrphCp3EZqK-oV! zl*`q&@Qmny-ZzzsL+q%Zto50@;)GI>rtXlo(=icXKwOSUM zTZlRVz5S!v{_&~HWvDh8Eaf0GoGT7v<;b>U%q4mB%Kq4l_(^+C-A(L3XMg`Ds6u`9 z$#oC@eo6g2{qR4Mi%!@%f0|C%E#242{QLnRFFS%x)-34cLm!eU)yd1bmvcuq9?O4s zUWzXd9?#{U+4srWd2AjfKfuOsjMLBw8>TM(c6huQi)xn};@ zcjxoRhgRp0iR}OH8ovMwveKRRQ16(S7H=6`79CyC$^7c$$NJ-KKYc;Q^yj1VQ6EnpFe(V{(nTBuyg)2odipUOeZo`JTR|gSJ27i37xd*1A~lRFATph zv@v%)j9qK;$DSNs|4-4$^XTNSRQN$Bj9utt&FryPY45lTI$;|=V;2yqaY!F7i)j75 zvFqsSlWO{O&%SXhc9g}IfyY3Px~bb;z|ZP@iv6S7OD@<$ zs@PrwoW|cKe#5!a1v|t(Ud(4t`}lpAG}lj8cPmeM)OK(ywuWPO#(OiH!qVE4;P8`dpOP zXIsDwOp`D0vQ==QMVV@ASv|RI&9}f~yFr=QKdK!gc8$cNlhM)JrDxx$c9eGq9+mFH zw?Vhe9`8Q>g56`!{_(ENUUF?eUitd}67FEYnV&xz=G*wtshspj{BHNu_|ro=YXAd! zQCp#N!Sg4EtaG8gW*Rg23Fwbd{g}Mk$uqz)6TVPY+o{u_kN~G(zvICJ_l+M7vSW!*-t#l&E$N^k7?BFiTnrcCw-mztguXq>Q`9kCrqdR z|L!NW-Awq0P8+*s^I27OE`9?L*0%pxItl!o)~>(9>WbSTEYoUiZ-dw+@GEX7I^@Og(D%ISwQ z{H2rXvRgH?32cm>FS7m}JzB%Xbtjh<-|qUMIH3$1cuaK$|ESh?D!5?|o{Bu|+Mc`J{Vw~+^$<*@K-_u`Wf_Woc-1DfTvZHW36 z^5?9mLONKe}@#fJ=hEGCP9_KX% z-Zfl>P6s?n)pGjz3Gjl#bNzlHtR=%mVsZR>%iiE4K$5e;A%MqH9v_3%m>3B=3j%Qj z#rT3)%WopX0*^FnGg7fBh}3n%fku8QAML|q?`6UU1TspyRf_ei*!7I!_7U>@R1y4QG8tQW_h$OPA0l?4U9b*vsN z?W8Uf6<+ozZNT~o?|6-JlcoPbtxQ}D>qiQMY<|`Eb6VN1#>zTgun;y%)5<|;iEM+r zx;T7q6qFBz6E2l!)CzHtu@$lS*;2|c`^)&ybSJO|Xx@s`_?+&cB_1Ckg6Z12B-H6v{NyE>4ZZ&Z%m0 zieMt+O7&V@D)Qb^$>b^}d}NA7CLALaIJM~*f)Y6g@8d2m- zg2Nk3B$`$NJC!>kHe3+CsOld4Gx1LF!oR+Is3gl7T zo2ann11eAu<_O(ul~fVgM2HSAy^M>v_ipoiS?B@UY?ID(4O$l66=?^$Yr@1$&MhnR zjc8uSWY&$L92rbUYG!6}v(z<@jL>-#XP8?Svwa5BdRMe;F?ZyLPxwPsfm7W~K|KIA zS5rb4tvY(x8-^%S)HxFH$Jwlr@@a&AAe4fA_>CLGI?w3HA1kW4K((g z9|&?mXZ(8#;J*>EMN}dy4-JodL2RBhYN3&PXokPu+=ov~&?9`n*OYQ(;Nv=v?I4)x z9`ZaD?Q1rYZkfFM^mA!q*<>iw)_r?*mfk zVqq3?Vr8I~6+O_N6To>KWCWho+OWwIX?r!d`{)&flAgT`u3 zx$}rnX*7-?Uq^#uTq@JV^GP(P@1kPalk3ti7?R$>C8DSta!;MK9G}5Q8i%uoTIL7> zXPa(3fL*CC<{7|z!L!?B9J1rFBQrX1*UMbol`o2(YBZgQYY_hj{JK()I$T4aMppxl zlAdj+k8tQ&WIFES9%BZ#Ql@GCi(G^8cFt^-k4w|NBFgtCWH+O2Ix{xB+5H;ZH~q}D zEWA4g?u7TsX=8YEcsRs{K4Q)eHbjSOtX>3jcF@k4f!D$@c|kH@p<-NDznucIq3hWqF5BuO6u(DBE5^wht3F(7^C7&J2y8L+x2789FNsza?@xM*PW-fJnR&=(s7z#XBX{mbS{F= zRPqxLZtxUtQ{If(D016c)7sh!QPa*v*27>yxty@;oIt0Tq%&;Ir@Yq#1Qk$1try3lY=JXO7z)GUlEJj6dqY|lCK=P8G+=M+L16%xVMtjM70NuHcTd&mGk%Yo0 ztVf+Q4@apjZ%eR-AJr348S*S8#&Ut$X1Nr8X7Xih}3k+;UsOA}X#_a-$zYTR5I z1STB+2<&-@AH9N_%&A0vAaGiZ1<+b&pt|<_0lHSr0HFgxw*8*R zwI=m4-1TC7T#cZhd}fs5L#~VBI#5!Ldc|iTV&1sGM;5|es8ykw!8G$xjB=ZdoZ!=C zEeX~_&EcD&pLs)!b6q@jd|=Q|i-Uq3kr7MREo$x3^aEPTv&L1xUc9>G)8|YD(W|KJBxVrhJ}F-ZBdmke z_53V9I)|0W)pyI)6NqCnnRB-5(uugofPt>DCFm(O`54y@a`2t}p?@?%%$7ZWrp9<> z%F7_g+S{VsoRZ{NMqRKZljOQi{u6B4bZI<@#ka9C_5dx1gz|)OOFO1wrl$!fpCCv+yX)CTxzp`(S}nu4X2qL zBNs~~nT$y6jz*R`mmqgu$1=a#cymDu+RF|41n$bXvb+asxY3f$46t&V%9#@j9h!HIkJ0|SW{SDwHFz8;VO}Fnc(=8 z=A1hs6EnXhS4R`2Y{zbshUk2^nfhDL=U%t&CtU3dwmbZg40oPwi>-_4rb&A-Wm5j@ zf>Vq%Rwtqv;Meh8gV{yL5TNEYJ&PjbMm5B%J6{k(Hb;u*#}H-eSbj(hl?n1`A2-eo zULy_aJ-tY(!YGD}nFi8Ud_)$BXISuY{igkImF14IBaE{Wic8+h(-nWPoWGvHvP*2Z z;Y*8ym9FvHPm;Q@QOh(Mkc*nwOm|0JDzr+9w45U>1z*4E2Is|1R%P0x$(LYfqdOF@ zM^hX2KG1a274yOK#k^hC=29BTFNsvDe8KIxXlBf!E++0=t(`8DftI~mMp`e%jrFF) zL~?D!rgOD7d5HDlz!(1L(tITzTf`mxk*lSBo?qs*si$Kr#9dMUCyDH%s~tYSGOo*0 zn$8;lM-_l@QBMZ8?+Gr1`VoeR?F)%vlp>10!GKv(EU$^NUbOgjxl~RPwJ&s|s%yH5 z`jK6}7E6VBhOTBd>1Z3f$mONN_X(0(G~8N(?K}&yDD^@C12-@xyBLI;7DYaCY9RnN zq1Pbpdqqy6kcb1Nwq z$Qsd^8+3`R^L zHjRnFB^1O>vR3N#;9PpMWOfS#Q2m4$C&t3QN5HrlutY`-&NAc%X1X3DvX%iOGLG*A zNZd@sq7RS!%H$UBjrHUb?+(TcvOFOo(nxcs99~tq$}>N2cnIRy1yvl9mCNp)NqnIT zJLAmH&WlLhOXLu~gN`E-Z-?E)e%%p!RaHjQz4k{(=2BmxB(FMeTFT)6py3-)lC#p5 z2Vn6Ue~(N)&}vq0ljYG9_7O%WvE3zgJK*Wt1s2Y^x$yxO8fN7eM&xN%a^n(apqcgx zk>3D1v_X?JXi`Q~NpmKrU7FX$MNy-9M=Ttx^D_wZiq9Syw+)J>|xox2BWU_(U z-M~m~jBkf+j-yA#Bs11d?(>vIPQE+B`8a9PZ7Cfn-7CIpLLKzLLCAPJ>BW~sTB`nW zLr?ECeRu9UKkmSfZ={7Zp4ACdK_AA2nk9AuS*6ukC=icjxwkA{_SXsgK!6N_AR0X? z(E_z*NHKb=ACO?17#$-pGQ@{u5$0%$u=Os@ijWkua!grholj)FW*xHSIXAM2oS0CP z;@m^7!@yy%ap$uJ?~S2ly5nU1?M|#xkGSg;hb9iCGu*7ZL5Ml2RVN0C_om+Bp2BNM zYDsFP1S{Z(W3+nE#_8zv_?Yp7m&Q^jrJg;W;AE9B$$8C55muc=<8%!gO{`O!#GboD z3Q}Ta9sr;$y@m{($)H?YZ>abS%w?cjLsvH?ZiWMzXR4z8aN4ip{(xY~ADu!Yl)@Mh zB5R0_cSeV~$D?LOH`7MlWd8Q3B`bO*5Y)Bk|ZAUu=ld zH_O;ED%zr{6!j2F`Xikp&juu9XGt$N2T4ugv z+isNarF1=~GE-P;F{u%5OUb5lVi%9Y-z9N0d!ZULeGGd6SP@)3@TmHnUVb15TGfk| z#y?NNc|a0KMwBF0qk9n*ZZT**U?O% zNFVBwG)mKB^EQM(F+oG$;~~$dgC3U-X9x^(kKMa}1Ob^qVM3`X5_f!QX!({mRxa}A z|8814-|@u*+NoVKp86Rrp^@&5;J%EvG7;OAk+l$T1eJ)#WBBC+x1rA!yOMsM4;6Lv zYjx+T*^iF3J~hrJajvbk-uoNg)T|h)HD(;?JS$tuI)M6`f?Qbk+|ux+c}>yWjN&FR zul^r0L4jIr2ijkQ{ui{Zr+>m#n}BgS~f7cZX7cGE`3#b8_Mj;`b+KMihOC zX-&_BfN&xyLKb~V7c=b4u_2yM0w9MBybc)>S#NwCZt7*p{ovY6I6)zya;ozT5K1p| zXcclV(OE>8UkLSzTwq!A^~+PA)d+xR54w&nXa0q3)@V&S3==*IoM<}b_sF(2n1RR9 zU&bb$6JU8#_5%Vvy$@bJp8ng)>Y*KlhtiDRiD^d-l08euSZ>m}mT_wP;N$*5!4TSm zc)vzTG-A@i=(S?jv7(`0(Byb}G8Ppk5?i%{tIVVno2wsU!QE}JI=U^sD7vDUZf(W( zT6FQ36DFCEI2~yqCTA&p(_QkTwX%d+Mc!Tv&ENaz=ADIl(@*pdo;cvz}DLcdK~iP76s|E#=`#9gK@~_OY3f6^vas%`lSB#IbJps=0x5 zT8?-rcV+p&Sj8|36?8!P9FzxBmaTrGa{+e;j#V1M`TYH%BSo>*+OwPUHOW$?Z zuRQ(XpL+N!m-*ehUvvY9XTR~aUwh<<&rN*tiMwxoaMkX&@4W26-~7@`E7Cvul$-IMQm*C)TJg8c!2Z2;LgO<~%E z8ux~=i+&RCG(h8?bnouO>|*Q!8m6&q-McQGNaMl5r_ss5PhB~he%hb6w0*z!liP1! z`mTSvV(Ew0t@z2yt}mLSvn$hEe)j0jWh+1TsVlGi<6F=B(f7Rd@{50Q&1b*-Dc61B z>JL5tufOu)Cq8oCAO7j*c9a>r7Jcr?ON;L)6o!9fU$VRFto!nk4}R#gCJ3F8}&=R_}lC@#s51@}M>uYWX?Vrb? z`+>tA^MI)~ax%4X1pBnJQOVAn`R;eI z$vRCZ^Qx1LQ(JcbyB$09h)ZUN!3CYXFpo}7oCn#K4i;5y;CZ?0D7(E^ujY!yZ7&t6>Ga{27#&?tT+wK_$e06qF-$^j^j+;wzHj-!)f=g`Ug?8c*|E%QUi@@h}12hOQZ*ek3$d4{R*WS!_)g8WhX zg03>148J`8GCDb`R*~5sqMW~c_OJfxL=C<_U;ar<-OdV`PUh!>PPD--^b^&|mMv3T ze(%4blOeSUShGfLPeVW9SQwFw{4!9TbUNHiF{K_o3j3>9L+8MO>77G`Hb41q7x1p>gz-(Nz33Y%{9Zr z$H=Alft<>$$G?WBhBnUc*fKkH?6}%f1{}rI6Ee4Kd4_|gdVdEF&`)3_$_JNCc6fZw;`2qULzcN0xC$pkD z`Sv{erIprdK_|!)om8J>?Ba|wxq%a}bnFsVwcYO5ss|Wny4^fF$!(zrzqU?>b`-Jj zJ+AhY${SMU6tsmVztSVW z)t!-o&0uymB6JB>wzfyY8H(z1AGfyeav%TFR_qALTM2nuvUa*X@`%#X_;5~Rus=Lu zH>h@n8ee7Kk6k1qRe8!x;BJ$rM(iT9l%A8;7U_#QwNEVSIgF>+9cupGd5pN(Ig6Ha z7`KJGmX?Aa&TYgE=_lbo67Z3Q)_Ebm7l!BW7gYA}>w`{i!v?U-LvVG8u8R20ntnUB zd^nsv*uHiZ<=>9YANw%X_HQ#XUV8g;?Yqbq;`I#09zC@w93fp;%FpQ8h`gFfX1H0n z{kaBbDy|6UGh)y9u!gZgM1B{2>-Kg-%QBgLAT*ud9LiGrLhK5IJ>ekdCLZF<$IleV z%lV0M{4f|T<)H1{Qj6Ju1Mr5F`=QN&N9^r-b z)6Z{I`^Tq|K|j71rpO;M=vWottaDXZcV+2$b=KsvK=`ge4r>}_kFS=#bMzbTYt^Z# zuYC<$weSr9O%G$>EZ>mWILyew>0(10H|mjNLw6~S^if6$#aROfZ4!sFZ$c2m+J`w{ zV^-4C@J)!5bTX@_Ur((GI^m6hu5+f=6v?AP>D0{lm2;ii3zM^@zaBV7 z`qW@L{`}N~=@fF&Wl#O4;&1=ZYv-EXIJo9yo#b-!&!Cev zr-|%`5bUpGUqdIH#+MZ`e_UO35_n)fx4D%^E?;N&4=$YXnId4$LBXbqid=8 zqeuCAgZ7uBYGqicg9B|nj}f_WV0HK=1Z5Bp8o0C1Jag>W)EX??a%`=So_XfwmsKZO zKlx7HjF$$!lON2<@Lvy1=4zkd@qS+?`Pr$L-Cb-pv#O1s`^dR<^7ntw zdD7tNAMgxz!$BUIjDA>G-UeiF_Oa_UoxH6-b_JbiULCuN@(tJF>k`%Kf=+s47bk!p zKe}<4mFUpyUFd{p)d?jo`i{z8^+r!UKrfma>U|SpK_^;k)>-rOI(AJ>4FfuMX>L}* z#kaLe14oN8I9#=CQJRlJa+NTm-(lD^P1#x&yDEKK}6LG0Tlsx06!QhUT& zvY4kx*dr>hxS%N^=wYXr*)jIhg;OAipIMx_SzRbM*fI9&HqAq6@){&q11p7wTz`pVM z$2v~KM+ieV*!;D5Dg@ozG#*#ep=$-V_yAiYKHB$ZZqlXz>DH@z6Kf870wU>?-zu$EZph2N7Vg= zKzG4qcZWaXLm_YA!ZTj5^w)J*6K}!5B7TU^y2`BEN-=P|1GQH|hog z0ePX1L0rV?HK)EFxK!ViP?b}_o)iL?${Q#0KF2o1>70=`7uO}K3%nDOoQ;I-9Pkgb zg?Pd)*SF!eKt8L=!msp){TJPd<~$>jqi@V0W$xxWtrc&iL*itP^5vAO?ncyzy)_5D0f^^lDV9<^SiLNll z1(v9;H7-{-*F}{av6Iz&4U83NFh}Jo5u~D0jw`TTD%$vzD|s)EAg;^bEOq>^3kxW* zSG@*M@n_OrNYzdZxNr@Z3fCqQRTRy~#teif(h8}e=x|5o3FCn#_lKayt%{<@4t&jF zTv}0&3;Q3E(7Bkzl&ne%mvMqX{Dee`Zj6SM6(on(d6}d6xE3X+EqrX>FSg(!-=r{5 zn#8foeX!+jQbtYU!HvwvVwU8D0kau826<8$-a@2Uz_<&j@v`uy|8cA>J+JZy*s5l1 zlh;+yaLSwb@Coq_ccaqm#>8l&RnB8)ifqK0Bvj?aEJI((vlUI#yr!QURI?el-~>&> znHGr7HBKi`ae7sj^aeai+c;XK|!{?war&b4AKW=tdDSZsewJag+>G+~DL3UMCRiFFbHgJMXE=X-A zIX=_6Ja9nFR5TZtrX{Mzn<7Uz7p;zrJPLi8yV_MbW9?07_GvaXJw%p!F-wnf4fYWXc-BKctvV`bZ@jA@dXlrp&;x;dB zr7{;tN=%u$^s5dec(K6TIihym=0!Q|y_t+H`@BZI=bK^L9;rt%+SF#$l?I{xW#vnW zu;(vkR2-)tzd?YZ9=M(x^&`Z)zCY-uM3p>0_*?+?T&f6QnbMnS+Y+A8)O1qo3b;9k zB&>Q_UlZqbIQL?2ljr=+oyR$+#(H^9p1sSH=J_D~o*8i0rya~~^l+P@-Px@x^) zAVRu~?Nrc;bc|yQfJn>vDw$~JF&oW>lZNty*F=Y>Jsa(($LC~E3?fWvW8x&mM6IYA zGM4bT(23DQ3JFQSwfnm z?Sn)W4YlXW(!|1(5QB%=!~5Y0(h|mFo3$o`83J9W3fcg3dy$rUy%eHqiWFlR@pJcf zig9eJ^$0TT%WmSBAD27=$$D2@kDJ!T4a!8r)Y+!fk%#r0XHum)yuL7aH@MQ+ynHlf67^2D6gzdO-K1wHqtw?deQM@+* zt&?!P)>MVO0FI*kLP&)p7Lfy9FUTx&X2f}snncvSMmrY{$wg=aZk&u^KS*kTF=O3k z$0*?@2r~*v8BLF|-wqwSB-Y2uyb&;S&6&W<;NvO#(^Iw~O;Bg$j?_+@YtlgFm3r(e zbZJk7nN!ozl=0HSXA+~j#3vQlV8vBt8{}Tkm_^%Gvu-*xp#*zfQ1!zF5w^iHjpjb) zYxDqdb=evnNG7J|%5hR~SR*Cg?1yP>J*_mKZh~_jnZt9OKj2di{H#W0bH#W#R-;+C z(YbozAvf$N#Au!lMVEd=Qh4k7t4pI`In$iHn-!VQEEE(Fwrwrou&< zUM19tm;wQZ9>)1WlPw0iLyG_{j}cJHxe*;snwo~K!`1i|ZbDo<_Q1#p`o|!CC$M~%FzQYe_CK292{~ZiGZ&XAxnhzjk7YYR$CI4nR7;1Uif?` zwjm}m9(RLqbhe3I8m$l`>++s8w=y2dq^{$gwjm2ij*)Vn_+=4`V%#K}OlO>p@SYne zr3Xe`)r|bq?jT%z{c;`wgk=C*< zAzAPA8X0U5XyGJ8#(_h35i&xCU%G9DZMwRTy>z9?c+c9hPW+v^sSKB)ES3p8CCGA# z{iuA6pbHdqqjn8{Q+Zo!8#$s6%N~TcyQ&z!C`CV)s5wfgn`Jw>H#+S_{8)cOhh5wo z+--3V6mF*6$0OQ<0o&NTvvzRu*Xi}9DW7Ot9=~|7fKIH}nC!}hQ+F-DGeL#&+TeRh zilr1S5lTxz!(Kfe$#Y&tpcF3Nmo&b~uL6gTB+N2IuA(tU5?w3x4rEIDum}A8-WNyg zVJ5=T{YfBD%29Eq7NW)?(81?VKqwxN^2_Gg>Qe&ENc{`&xrZ)Lq_gn_6NI)}y7u zX<>5MTyvX>yvV8@_!+A08@CWbe^(Oong*(vVz$vwFi0-F)KGgYSGQ_fXsIdg{j1e8bztUQzvFl8YbIKGYT8+TI-<>pCmmY+$q) zy-r5mbnNyoN@mi*?aTq3#jr?^xS5pSfLE7nXN6}wC`?ICHLR8TB=;Xv+ zfINUlpj1M=uK}hxEcMvWFlH#|VDD(dnu)*ZYRn>l?-S@;vKe}5^8ax6KHzc{*MaA` z)zwe8TMu;K(-VHkIH_(mq9tRyL4dL2tg4$veh`vvBt3_ZnS5$t#iJyiEI8QmILx@Z z)gmpKFb^zy@VEJPTMRaWB!lA5&N{Kbody$!BqWesf0@~A{>YhZ*1NOo;KfS3PA1yl zsoVYZ2Z2cjPc}a9^{s!WPMtcZ>Qvo(t8UF7R0X${DDU&V7RPsq^s2n1Yj-mz<>W)v zpA=0n}bB9#fVTy${B^OPnyJQ#GSK6j!WX)MRMcZ52s+JAGW|oNe#f-VIBtdpm zS_b;fPLHBw4lE_7jS47beJ@SRyj|or3b^shrH*Zh8Qes}lO^!pFhf6N*{%2yI`mI3 zTvg_Adg#iyOY~(Xxw>eIG`o~Z9Dm+}{c0g9;audPLG(&Jyo~upKpeS;sSO_QMEFmz zBALT8q((+DoK}qpH^8t4>C=d;R^t(9IyzD45$p%Acqf`ClaX*vU(6CXQ~OBB%$LMq zVMeL+=_j5^Q>X^!QPS%>S~2rkFM$oLQlqqJI7t;FWp+NMW>DZ0O;zT+EL18b!(PSp zU7%d@1;gZ)iDXr47giX@ZD&12TlgY68JBxhX!e;CK`T-X4dMfG=rUeZWgx}MBb%&* zrAn_4t1dmrS9GL4E7la4CI|AOuV3Aq+M7#+!jf-Y?p+Hbp4sebl3o##WRgtLLBvdh zG@mH=7}g66m2sx&=erXsq&KY2n^06{Tzx*V!PD|5;7RDatl+gQMi39xBiQboE*jH9 zEjJhpR&btby49i;E<2Ln)KN2=#Si?zv&vA62YH^!4-V%-CB!RWI5ezm=Y!frb%~So zGu?(xl^m#bp4SBChMXM(9yQ>GU&^=J>;^ZNIB(JlyfTTZB%9tb#9o-`JVd?CldnbC}ZrYD;napaSapCacm;HQ_Uh>O>laN z08LlBN!$%QPjL+|gp~noA3dRZi6jmsIO{h#%7UI|4PLnlfi>KMMG1lLWw zLD2#Y1<%WXKR=$g4T##F8=ag9Vj&EF6cQuxjJ8W{^cD^Yw$*cV5QokVRmVlO1@ zGgmZ8EGSYsmdctsHKgKADdh}s_#*k3#-O+pvT#f#w{bIthz(q{yo&P5-Z(9qP8IF_ zgn#Z{xWgvi@r&@ha?aipM@Sz#sUp*UOrpr(gYe(+M1Uv$VpOi2vhPs_q~PU=s2A@N z!((0&G*L?it);GyUcExX(tQqo{6j zXi-!YD;6Tg1Xvh`b~L?x_)$0k+dS`$nVd0Ri5pl4$sQDfihmwVc)+od zC|E&Jre#iPYq+AK3oAxKAPB{rjY$rTiGZ5gd;o_X!)%?`-jI0Wr-X7G?L6m#KQ~Ce zaDL3U2~TU6=c~y=hbK1|fGHmDZ#t7?s&oOwJZfZ9sX7+}vD(ySq5#opG0JzQqeScc zt4MgPw@PnXSahRZjD)x(KRWe=sYhK1FgyWVrkOQ(7KGd%rpc-Y9e=0c3F;Z`80Fgu zhBLwxkDLBDcDYG>BtWid`ZRjtMx`g(G(sK|+$81OIOGY6f`MneJ42m$mqxDwgE930 zbVo8xKTK0%q*llCqj;xYONd6aQJnY%sWlr;GbbuQDWezMke9{#Kc0>7kUr=ZM{G4u zslaqe=%!9zTR*t*UzNy<4Zob_A>`FT{5X~umO*_rVp+%0>_7zR+EPm zz0FCNjNZTy3COMI@FccZ;(4{K)Fl}cCLx@Zpgw*VgpkK7nW+!4tK`ptv%`G~nl=hh zBmX^mw~0JgqHQXryPc`CWA>l6XAL0yPjNL-%WUC&sy3dV`CQ{0Bf<4l@Xsq8P+|7c;(0Q!Yzi! z`=ll%xij?GY9GrKlNMx5wCHmUo<*C0_ulvMr8I~d%$@5wqWr^_cuivh;KRP9YtfN) zuJ#bk2L|lrBVJs7&Xxz6AFCunKUqOtEvK1+io=~GZ({HD0S!Rf=o4d`RD+@d*i5sQt*#gnxPXJs&u7{F1egtvz{nx@Bj%!kUVH{ar}~Ual-G z?CsZmsUGaL!^d`1jvYSgj?~{Jp}hA*p}wZP#Vjzdo|#EX_Rjv{g>vAbim8~3)3tI^ z4*RMM_c1-_%nbkO{SW@dPaXgCo}RzET)$+de$0)7d-7ACqMo6L;9kFO>Hqo3f42Rn zzqs+g`H$DvzRA0=gi_POn|pgD9P^ux zRZa#7+XfBC>| z@A$z(?QS{Q@#e}`kk!aPd_@mg@auha-O}H@|3?n|)c-J7>;Blk`0KlV*6x-qmt1lD zr%!$3|NW7_`Nn~-jKjD&`qCHQeKg~%$B$icsOv-GO)r=I;AftM9{U#${>0I{kJP`s z<%)?een!jb={I&>B_w|(Mc%J608b%531%9auG}Vk&U#mt&MqsCu5E8LmSxwjYqxJ> z*W&Va*`96Ww6G5AfH^fx)33dj{frT>)2Wb$SB+g+*C;}Ry-sb`*Do&zn#fR_39Cx3 zdk-dMusr;c{#~@K?|GmzY7aYvXTMnfWO?v|{pu%V*!bdqy+Z!Zn!nt&>w9k3HOJIq zn|w`OEsMi3q*z>LgB9Vpr;@dmeVh% zlhf>wW2a)&$?4_or?+qT-sRJ(6SgC&PS_TQPFVBXXdt0px69Pu$-3=PC!Ia*=Ts-t z(z~W8??ESjQ2E2EZ8n;GE9$S1NBhf!p985pm~FCos@nLXEh$apwdeNR^Y(!nzNYKA zwai>6x{qpZ?tGn`eo+@9voB0#cD7EIWo{2TIsNRP|2b>m|HlfU{Fe68Da2Cd3I#51sK*NZRaA!YvzP|v)d zAQyDPPPXmax3N=@Q?#~!_TMhE+i=@DHdby^xlMJlefyq0p2dV&=+X|ipW4Pjh@CwL zR43b}lmjyWbdvl*r9GGHLF!d8+W3UvuxM- zI${671>h{5sO>^BjqNOae~#mHwx9UbWp)>CTlaXblU3WbeS4>4Ja%D*8RojiDFnm5 z-2-a7R&|oF5=Q%pA4og5UGu+js{Du54q;sYe}Cl%v1h~f#CGjj^Ot*8b+T^T9C|>} zG-+)gx$XMe*Us08+AegG@5?>ApKLq*`7%0TL058mU4xbRvhInwE3Tj~u6v<#mQGm3 zU!LfscmbWrx>Jqqe;eCXFhOLjOhw>KLl)DFcTB@=(T^hoQ#{TvBwd%3uAGU->YoW~ z{3JY{#@ps}4Ya%`1%5HyTCCa>;$e2TE%!HhY#QP=NiSj&VrZm_v&orIs7oFQ5MQm!ND4RwEG zx&ykgK9QZsTMA_fPUOSj&#cU2d zg3x*@c)jeE;hm%#k5jA3U*=&`) zr{Hr|V&?Pxig6F(Ju@FC4=bT4k8~{u8SczwwfN^E&qx1$+&bT1#of4stGsL3@D_PK za~@;JB2R;132R$0E;{s3s+Ol_hfH9Kjt+H>v*Dn6JRG@N4Fel@Y-w7d>=q}4OI`^ z`i~SB+dR#+n(wTbGiev{O$++_aJT*BhjpCQ@pM|e=P@gdB zOWfD}pD&4etseE>-OyV`d_K+&zgPx1Jg-*soo>Rdx2@i zoK$UM{4^N9i6Zi0ovp@pHcfbmyZ*;s67_eC2oe}|!kOIX>4Z5-M>pt2c!8Pq1axO` z^#Gp*0{kOu}{pDF9;oj+SHw=}`7rk{(~ zj(ALVCtT<0);+D_#*VczgAw|5Ylrx8taN?$@M3}8!s&rr2<&>3%4NfsJa@ruMf85uY3Ye5IfAW&pdpn$6h<0rfc`c*S;cS?1W%n&L_g#u0M z67UO~1uBSf)0%fDn<#ZgSGn?l+v)9T*RV98*y53-o6q)wSh>NmW2GY9Dr-5Cq$S+j zCaqS+?IP&&aQE(-B%3$~$|v)MootqrnfFLmttLetRu++jH!ua)R7$SEPay@`LE@-Z zi{Gn;@XDCOiGJDq6cIJ3S#<4>t}_U-$a{E!gB;8dHw1m>*w3D%P#WB)! z+PuLwj-S3Ux(q&;(^EBP16mNXOBS2qJ|`Z3L)R;@xRvcp7%!W@Y$K=k;|{rB1+0)y zl$b)2J7=ydxp&)obu-p(uCVJ*vB(29OV$(;hf)0)o(&pODmU1~cZ#%~TXY$hero$k zjRv3V(YXZ{wHI|G;v8vSZk2-pk8V4JdfJpQmN`XTNvxI@)_fnSiS*b+%F${fE2*A* z$j43j@dbh8cR8l9mjqZ`DSGm$0yRoEoo2N6IY`meg$He!W(0%UJd||i9w7Z_B{*5^ zB`kbEr5&ToRM;^oEhjMN;eQT%(jhn}4RB~P1-gY)WH;1dg1CjM732UGVbT^VTAnpe zBHRa)|4C6~J-J>jL^5ZP-5KvoeTq99F}PTm6@9dnKOiFs$grd0_;Ij{*YQWI z?>p&-eljACR!4HZCl$rc`a}i3rxhG8mt@6M=Y&2Zw5^Lit5il12?1ui+x8hSJHr#v&0lc2R9CncC8LzEd*|9Fn&=UF^jy+%Z{et+wzQlgw9+5CYB`i%a zyezocQ62}J$-y1>j)R_C>Yj4+^j_c2IdN|{W8MI}Px92oqCUx-6dLpN&p<_4Isk{T z&Iu~LMrgnYESMn+j9wY+Bw5!UC``k6VfFaX}l7;SL&X9&Dtftn{R@VynD zXRXWyc|KbKn}}3Gbi)c|(RUfvt>mEeh**i-Qug!kF=Qd07Oao;Ld+4WD@c~rLd5nL z*}kaeR}Ez?p@}^hO1@_r{ZG$c&g=Mp4fTOVFO_5zQ1Y=_NF6)kRR)VP?#yM>%WRUH zuRa)U``M;>T9n28 zthX?X67<9$=bAdy4u<|Iuv(&~eiqhQt-eyN^9rCy)8$1y6+*4d_TZAqmM%bsQq`K9 z1HNFbS&}73J`=nmh4hn)9umRw!8h<-XjVf`)p`MEL7bCnvz_{Rw}Hp17F)2ua08{l zK3RVpS{?bALx{oPPwS6VSs)VRacB4-$Zf{cLS7ycIV;sg(W-c9ed5p3B`Jib5HP(# zD<30+!Pqv#B)FvRFb2fCZp3hYL`|?5PK;9(>iDSi0uG{}pjr%I%qV>$yA5wAP8kRt zl6mn}BdlCBrSEH%0n@Z;W=VMmpJ1k2`w+3y?i2@%pC@S(Dd?%S4pe{E#L9^ z0@GYU&OR{RvJ{@lh)L{WYe<{fNk}Y0Kgjn#v7grHik83vC^0NmJ$=m|fir?L-1QOhALtr^O@D5E=1vUTyk}$T6t#A3&vm zoR<_!sf7id9F6f)4V~EowAZ#MW=lH1rnr(cAdBV3MajK!BV75$BLJHKoN=ep7 zL3p(X9t4*Ypd7R<${tH1k6Y13(FO#c=2s<=!HVF)T1dUDbQCKuUd2D`N z67OLt&*>N~X)Ogs789JN3Cw!Tgj+(3ZCN74C9dum4O@yPPLB-m!s^INl?%-RyzbYZ zK?xeKvaLf=`;(??3>PO?Im{`|GsfyfIewUi1QLmLB>9AXr1q3lFWDFwKMkE?F|9a+ z*|&j3{>Zo;TJ#FJMzEwVvqRgc;dNm#?Lcbg*V=NMtzTvuAD8N&Gdr93@lT39d3{!~ z$tACgH_n};CYxctt;Tiar7`X}gvFlamxogDk=xWGtqEE^x~c`&V5#pU7KauZB6fa_ zHFBx1A_0uF66y*PcH;9qRM&Bn;4|OxD2Z7jgDZ>Pv^#5N=Z}o97T--8w7N#u@V=tsj*aT;QN$P-E`FMp(4?iiM$@I;v=P~(Ri?hv&UKo|O^f}Gbue-)Jd`v8dy0JUS*d^=Qf?9X zgoRHA(4|_zgly9-u7CB+)l{HJ>BiSgEASybD)XQu-9J5Cl%_MIAXkUbgwdX)RgaCG zmx@XGyclgu!r{d>SB`c)JU<`fmM1;_G=s zIN=&@(U)e@^rlMfcE8!rP-MT|uX-W?s^n=S643It}G+o}xG}0d%nnQ$Mv6+N;LX^Ajdo zSxm~<;7n&`+|&zdRDCC^P6Z9>#Ac2wwc~~lskgJF?U#vQJoz`CW1QMh))}rg2#p2& z3O-Zv5P*vXTrHGhxpUOSn2U5`#>BXOR+&>uQw$NGN2F8`9O)mgYXtqBuv$pR zv&E@N#DF=N)_<0fYO>=NE2l-81WnKBDUQs2Ef$M!NMgwZ-&0U`cL_7&&`boG~?2wpgKM5g6 zOMRr4lgx?oohv9{PNUK^k0%s~;{Psy?3>?_N;s!vwVz;>oXZ7f193I=uZ~?hy5*q# zM19T%H&U0M0_a{{!`xl_$tA?p2s{1*?l7X@`R;-FuYTw1f*66VD$~awpKs$=eE>H8 z=YCQRVZ|f<@yCtF4_=Im*QhGJD4quo2fR+i0~;gv5<5rQKU^q$>pRH1SK7Pvy1eXE zAGx6MoC{uq;HBWj6!0eMi^1u|t7o?-2|S1YW#}o|KVZmjK3>ZT#AeML%d5!hyf#?e z9k(Ix7wJ+?yeUyxPVn$~#uKj(_xI(|w{;VJK9P%@LueU@bVA?*mQO5?x9f`6jYTNl zcbjJBewO;Zwh)EQ#e2QWs3orTs> z<~dj1Uf&)p@s3D!?DXCd-6`IH@OKf+{pf3586B!=*4*~Dth~eD^Tv1FbB}%e@vZlW zy|X0E_p0$PqLYXhb@J4#+~eQ2^&R`~VVrpTK7Y>#ONqY+zIdHx=_e~t=it46_dj2_2fS-;lY8ziCh`tNQh85p7f)?&k$1>HUfzd}mzS@<)1O#E z5#SBJ%le7T{Fi7CUlig0)c_Xm)xZ~DJ;hf;?*Csnh1Z-Nwpo4Y&;IPs{`W5_JomLf z;-q0ft`H62TodwP+nb6%8^JQh8`zalbPkIX< zD-+L?yoev;$(N@`{xBYw+VTx?`Pc*Gp$ur>8q;F9Kjk?;?__C}2F6KwNO}`@8dg_% z5;?4HSt#V~ZK!Gt$r&d8*x<>ho(L;>A2V--`RAKjb%q}(*&Yr@&u8z$$U>`GZ7 znB!f98%sIs^61D1f&mvN4VyzZx;=*jJnEto9(8T?^dB9$koeL#KbJ)F>HVmL&FTIi zA%NFayjjI#7d?0r`c9*XcX9rnKFV1kiP!wylz3ci6u89mo#o%qcryu$oYZp8!DHj& zHy$0mhb`~o9(A__r1*&mjS*!87Fyg#9?W*)&*Y^9;L#CpGGdvLCgD|AlUwj`hy_1m z>Oh&@h);aT@d)R2Al^@SO3LDuuGfbw)S>;e;sdURa23xJe;j&diSS8s8UdOm?F+A?@ zZg9j4@Tb^`xixEGgc@2ja5;Jy2Qr>M^G2Iz_ zt@e8)$iN0=MS^Kd4#5~B!JC#GXX2}|tri!vKTl?jW#21bUM>cwEAW@6yvnO`tDvrp zzWlNppQ+Cvu|jlRo-E3i#_QGNut=6Tgx=N2&6(Lj$eNZuN>x;+s4OeS+b#G)&Z@>Z zn>lAUiLU;v&R@Z2WR>JqMvoRrHdk1rFl$ZqjzZN{3d#from5#B>=RSDLaHo0Hm25W z?IJT2yxgH4UUI#gb;GU-Pcs!wNp_k>V!Duy>x)^BV)*)7i{e{VcSqMJSF2fc_UfIc zYS;4s><**nsW>}B2^F)A#hq}q>DuJoh0QQs6|x$B(5sr(tzzC&*bGJkruRu)VT-M5 zvuNm%2kj`RKUCEI&nur`+?Gx5{&N@%OqYQn< zy5hNCRtT!|G_*(v9{l^z{{rvVM@Co`N-D)3wN8#|3$RO?#oJld0f_O7gIR_R2=LBr z?9F^t8Mcco+X5-U;*c*^z&hhiosW-kUt=0tP1ZWWp&^|&TwI8Iid=Z1#YrCKh;b_m zP?p#pM-y%p^VLBVp6El;DI{|Bdi5t`tvN4bHQ;ph6aoDu4|t8zfFs1f?2|lze|<eMR%;KoyMql4PZ-A7(aWpI015dNE z2%^IW*(o?@Q8}wqu90V1BOIjHGhDSHRO#$DOq*^j>18eyp#a-2g|HgsQ2R8%QypEX z<{d7829d-BQgQekTxpw8e~2#(yol!yiSh`$LM$n)@;1YSLuFj{V09(?#c)I#;?}!l zzS?Io6|3O)BlofcF{6=W|6L$k7>Nxlf>P$S;mq_LtjG#K{yiloyl4uZB!rbXSqND@ z%S>`HNjxxVwfWMm15sv+t;{K%a)P=V&Pz|DA1?Vh>Ag$652n;fq}1P;ZEM`lhF(~2Sg=gZ+bwjnu z(^*+$QOmRP6_!994{3n5gsTu9`3_}i!h@`y%r`^8BB6mqTT~Aok2Dj$%(O8K2`Bat zYfWdBmm7vOmZ2;qneQjVO35FA@qieZUP+Y1@CV==2{Cg%?#tOyx+IB;@mx?;WXvzq zt3rs4ESf~Eym-B!->y2W)TjQ?l|HOE;nVWL%+NOabACW0TJTyZ6hh`59`&o@;GXNe zpDWJ<76Yk7zamD) zc9sqmm*$Xyz+c#rc;fp;B&ZAp4+gU)B}XQOpb1kjeS85y>-_+=5wF5yI3gc0ousSL zL@H#)v(bZK%M)7R$6~4t8_4U5HW?M+b|&xuo7`H4_o_>fGSOw-w2Gq4GuzM^Xd;{a zPTCcpjhDoUPZ0tuahdjzQSb?JMO{5gH z9odff9gYQA>>=t`vd~8zO(*FN^6nIdc;}4uiI&4UbIS5tgI1u*4;h%aW6F7Im-a8A zwpPuju_U!gFUgXJ&`SUbp9Aik&}v`+TdROlYXod+16spJ-v+E|6Pe&rW$MO~D2ot) zz^|eg1!7Q?Dv}$4Ks!Z6^ecMI)s9Bw#CWkp8_z%#MF(vfAo2+0qh(M`>8p&Vo=}^J z@f;pOo>0@uR%lC|;FpBiL(9=NTI3j@9UP2cot;0(#VTK3oMsL5JbX0&$iI0YMungo zBox?%r#wgIy;gHCzq#rn`Ns(=VA%0EncN|z_5)Y>hzm9zNNUK9SxLyJck%Wh(4#1Y zm==9{iP{L$U>ti1P_omwpqB`WM|*Zlni!%LBF0BN(j0+NpX-EPP@mc}MV6D^LkqUr zPtq5PCLPnk6F07ePRgdjkT~s|oQFjAhKjv zY`TC4JLrUe|SE)&_ZbNKKHEbXgwL2 zEYj^-YnV+@r4`3$*{;uQwh}&QXa+PHL?A`;HF-u3W}gV{q<{{cbY||D34V9@pq$LE zq0IKMM@62Lwb_mG8^Ln>khu*;Xi}lj^i0)lJxjZ4@c_>s5G5>$`hC(JRuhL02*RMu zh)}?V(>#v5s{Kf{gbpKkmJW`XIkHl^9k8ZZp?1TNtonD{HhKm+NubgZJ4;6k{#c8+ zuVR!8GBN@e$%BJYyKz#V{`8mp=%WSaT;D7n;lQbVzCY$fq0bR6op^=sX$t1Ur2Fn%=^oNP0!A)FZ@Y*JNz~fXi(h5)*YTwbpJfE82Cn9TmEVLIv zb~@=s{6P#Kq)%Kabe(3IahTn%m5bykcuj0qX@SNlW0xgcC`6Ce=tq9yeO|_Z0G&6K zJy!(^;LfZ@D68Hm@_f_Ss`$1hXn`%ywMifJYZ~mID=oQ2W)g{K$E|H8ez4H=Y;9qn z23;ZZ^xW8D4f(CK2)LHdnw}}OXV&Yb-SAixon74K+Swvi;&>wr-oP&;^dM%W{^8sD zJ@qR^PaP$wN3b;(C-yWiAn0bvmx3lJSY#S2!PSwAAFh{<#!oV8>mCmvUasbGfkzP8 z8aevL{(xImIB=1Q5eW_o`e}FQ(`;>8l+i7Pg86Ty9nx?J9#@z(i5X!Cntkx+jkpIH z3C7Mpe2|3f3gew}(AD9W57T~<$#7;q(u24Xe2#_DE{qpjB2}RQrqbqd2s6AOV2G=z zCZU5sbs`$ z+N&=BiN?jt+aQd#B3N|0u)3S@ zj28qdfhaA%m`pWd1ed4d?F&Lt(UaVA9I=a(!SK$BRAM>p(waw;^(`uN8QX4O$Q`WC#>j+`a};c0Miz0*)E)RUT=gihjkhN6!; z^~q1_sCz|LAt-MA_cS=9a<`EyO^@`TH;U1vz7S<)2g=@HpP9X?0CP@22V{z9IPuEu8M5>1t7O@HAS>_T=_0GITt8Nm~@cmMV$~ zV9d9&-)vZMm(BO>8>DLdfWkoNh92!ApLijy=c7i4)_=;YXhQ9V!&rSrNc#Ur%kTG~>}NPwH=Ksgh|W zEgI2&XjwBBcW0I?cUT2$(|!0!b7q-U+W-UQRz^=mkb2xz&hv^qq@$Gxnptig6*2B~s~xN#a5$ zw#G?lHF_G>w%XBv)pkh-jXZE4c{Z;R89W#9Vo2qu%LNs3WqEBT&^Zw+552tU5EX%Q z0aXSrD0@a+9=R%n`Cp3>T>9{i978U#0Hw0on6=S%7AQq`5fg;O28d#YBG5%* zI<`8yCQYBxyLBEy0yl>*Wyx++vbHN|%7o=M!@i!45h3}aJQ5f;uCH_vH0Ni)?^Dl+ zAIs&A1ExYq8#NuWLKZIKCgQkXO9gwjT-s(wS~163+kRr}NMj0bXp}9F(>Y3`;3XZ| zHzsbbtCbIvUu-g3epq0dgn>Iawdnq2n%oMPzJXxhG%O#jg)OaGF2E>(0lCnZ?+z=w zXY2Tn$!Nw&*KzC1)IGhPA@jI6#S+t%Zp;*tZY(?RsV-3T(#~4frfhu;0ZiqkCrJ-~ z53hy;796%-3W^H^uoAsQuf_neAt68pSFSXRhPvE~S^^7!hr;Aj8!S#1`@bN`)$`>t z@3Pa8qe0c8zLdUu$4;7hje)%-j(6(MjEL+H*YI(@@IcA8J>xjFUG!t(;r z1(jW(*b*-mK&S-QHjZ$#@FK@iI5TvV7jTo|Y^kB&j?#SI%Tl9Ln)4y?F4W%FlEI?= zx!(=`fn#!QE?~h1N9v$=#RtN3;vo0IUPz;bKQ!5M9h1#Awi7T-J>RAPqm;QQD z`sidWijlxC79eYn2BzL?nE7kdHih(BC9BdEIs8-o^KqzVBn7x&P;P z{`{8S?%hWYzwXV4k3nlCPR`%(muvMb4bv-qWZ&h((e5`Me)rt_OW9jf^hQ%eCr9p< z@|GPYIk?ar9?q^D9^5w|&C22S3rDuxy0!9=y?2|@y>A(Qa`L2%d+y$MuD9QM-<#ii&#$c9RC*vt@z9~JgoCoC7k;AL>up(+ zpT!Yo4kG?@0C^4g@xEDgfKC$G(2?KG6#`~qK=cfI!e>+$CK+BO=GN?8rP9JTX4Bt0 zzNP&Bg~L)jC_mZzn~iV#y(iYKx$b@Ct*tj#kDS_P{@KnCZ-KT|`v38szj#pY{;%Ht zWAEh^>rY+eBXz!d;357Pj{`g zjr%{bu(7ml!^v>`%k?cEp$$A%+Sa=nYTqE^qNQ_mPEbhKCon9zNKWgVd&1y75ns^nSQ{Y`E|4er52c!)uS; zjqSSfIPYUjy;UsLSDrTR*5NwNZaMPUyWaHJ@=uJvl6>_8UoYKt*YMcxD<1pohdy-l zmw)7mpF4HZ|I#P@Tfc!$5Zg>BqLUy8dwWj?KOTLlcWL_G4}9Rxdw%OmRt1G>n0bz{rc}ap3F{Yxx`Jr6}$c!p6|S#o5rH@qJN!2p*Ss1-Q~iz zq8{qeX>cVetWWzL-7v>|%crN`XV1?P z(Qlhi+H0i3aVN3NTqilKvWGYt+ehJKZ( zRZhy`tNZZ5StBaL2)XS-CkT3?6Kq%1Nn6E54|w5)UE8r;pD(MunVWn5e@6Vv&$SCt zCs%!a!)LKVdmuL9M+$qYkDsHH&WnXpBu~@f0iB#C7dkn8`YLQtu9LUCMSG~)F1`m& zVdXu=V(cMP+r`O64bCn)y<7mE{JP4nj861#dHIEF^#r3m)m$gxkMsBoU6(t%c403j zIWL4UiJQo1)hU=D*d5{Q5D_m;+|-U+tLf8oPdK+E#!b#G;o(QH#9_^BOwW{93G zlBYjqxiJDyDB^WL>I#A_8*5qc;$`pTd=d>)7b`4w*Ys&#@PVf|za&2oCC{(n>3Jv- zU+eM^bA&dHr4rZmM(#y zczV7Gbd-MkgU}~>$6bTr^;cT^@eguV$d#(2LGSu{bU9lj(&>Hhvd>(nXNVBLaLHZI zaHhy-E{S1H-_IE&;I~mrVehbqEFwf+?i%(~RtwWI;X%(k5v3K+I~m+NpS#oW&U)$_4P zTP|*2K3!EC6=7nDR_&4Gvxe2V!xV4T-8R8kjrcowqLsp~oCVn9)iSpi-~M)zPS5?J z))s?zKB$dD8ZYdU!V}diCUd0ok(9#A*scqpUO4Ji>16w>)d{2Ot|wliWomf(6goL@ zmQJE9&dBHQNhfh0JQ2+HQ>v5Y)o`-UJ*I%E0;=mPWct2mT|Jgc$t5d@DV?Qarq@U2!mWvH}T-Oqu183^Bs*`ma&cT=lzC-&tE*(K1$J#YG`y4HJLHJv)BpD`l@wN@Tv=NhbKE+`YM}56W~;AL;DX%jx_t z&?RgO)ACYX8U=~+&gf3@5=|$2R{jCc7sqjL@H|1)J%7Azjr7RG1fqQN561F1@!_d* z>(ZD>c_KBZrEV+L2h!^1=}lg@D-Ftkw~v)`-eNeXor+WZcQ%IO+#aBAed;Lxh z&SBwV%&$CZet`76?$dpY@Lrgd!)^)PUs=e*X_>Xku{_?L#r$jYy85Cn*_*(lE^06I zTpsc0$On9Z_^BHc&Wa~oSRx%PlRi3{;7#+@_XXi`&!hDn!`$T!q=fOKZU-6U=D2r{ zgw482jD$x=-Q0ERnD;_2RUdl*KgZJfxYsXtC-g>&=GjZQFCdNkSQq;HkGie^&{9YD z6GjJjTE>2T)&i|$$O_{79v!i)I)>Y!sAW)Q;x&CoFfq)#0H<`E@9&pL~V^3XMt|cv* z(cD$zm&o8l&`EA}Ms_$E^XT&#(w+sM#ah-!SIZ_WG`H7(%FRMt#-=601b*x_#meub zULL`xX~NIT4w-drXPpsetfw6QDBt6iTjUOYeHkEAGfL&Sk*a~cu~`D^PoEu zc?FBtuoinZ;93)mchc0xzwI zXPnzCceL){6|b2Q(7~yK?xZTbt003=rIzSNtP!ZWLsjKq14>|AvIdv`8FPbmWSVyr zT|jC$8H$5^i`%G{)VeZXn1Pz^h-#6gma$&hc^(goxwF#XD(u99MxiTLSFdA>q;8~X zC07|&HI&FQ>?+(*hLf&u!D%(AR% zxz;T>*WvbY#&RRZ+T|HpBdvm$JCYi?yZjQWKQ9IDpx-U;cHBxCTeu;SbHP*9mw-j6 zD8zHoUj!{(W6y!8&w<8=_#an4^tFL0P!{cpn&5Qg0WhkXLKm^bNpSo?Q?S&%-$L5j zPsqUeag^+(64G9OtzD~#Bq#;H_$yRW;lVz1%vOvBN0jsb1S3HySXL~NF4Bj>drK$u{sFs|a2bStm&|DH38_ z<+qZs44^MbP^GQtww7eB;BKYYFed4uzPZHnUNcE<&7RCEHwv3BlF!0-(QtV{>;8aN z#XV4bpvRs{xUh>GD#{l-Zdez>Ohju67Y%+REN3EPe!ZlE;1l_Di7$46umIP*1BKtu zn7&wXFfvZ6QCQ+40S|!-D#hdoiWKyskV=;jKT+jVyCzNO`H_l^V-syYqoo ztVwXx)g?OKdvXs0m&S+$-qy3{z~OT=N$2=-cRzf{FM?2KhiF%eU=iz zglSlT+8EJZP=?vyl8{lsp4{e#^q2B*<>^@$=+rCd`aT(q2a5?~bhT$-;dMc=-TlEY7`kngZ z`Q0LwymeSIMLCXfd&1nB5)Jf&63ZdhB4~rx@^ff;MN>vJ76_|JDjx+%YYLs3mZ(j) z6w39k1aEwhBUrF>xI^0!3pedeS{kj^(s)`csYM&Kz1ooG({gEx0gsHh_vB79I8mJ3l^OGdG5toee7qh5E&INcUry{}`_L5ITEq+Rd8t z!7*J}>{q3BQLU|L{A zd=SUXf#oY=hrv2a3O!}fF4Pi<#3D8q+5zJAI@nC(69=-#79v?av?W4}QDl=X1n#V8 z9jWJl8BBvk3}m*QLB?c(6FTl5bpQxuUonuj!L$}kSOc97fi zH2R`vKl+U#OE=OGLKd2XsWVUcS{VV?YYD(qEgSZ`tR?KQgOlb=CCQ` za=N#YW%J!OskD4Q)D?_!Ic3$w21l&x2~g{$y^%;z*<0Tc+dev1=~$PzG6JK|`w&nj zpR&&?lyuw%hGg<3izxI#Q}$Se5Gr0gmXLvNLA<3|nT}R6-{CA2N@j7h+l(%mEe#-uw$4boQ~}f`^a$099incu4gn?wo}G+*05{#OWdLL1)i*1Hv}A&4(BkA9Rw#0gkY)AV4Xk_h#tM1r2W zk&Y==1sBPnjnq1LWZTR|!W58F&GqSlXl{En|bXi_+ubJ~B(vTf%s^MW_ z!N~4(piy~t7wZ8{!j_-9^pmpJ4#maGSmRW?xXwy1B;o>AS5j`%X7QyfSG(jA>_vN# z8kT0}u|Ny~hy9(_wVxjSP-0I=h$G>66z5%)&|O?y8pvLZO(GxVo@b5;SXnM&YhO$5 zu+4_Jt`tt3u#c3gR))h&_NK|>0~XlLUi^T#-Ez~zJ&0zHIKE4Cnfazvg)b3&e7@^W zjzgpLzAbaCnEo_6a{);WWb1fX{rB=PpRVceG}PG9c9QwP&^xlBsar)8-;nDpeZ|!l zq?(ljom-Zu_f5%S%RDnT>qo9YhB?Oww&Jte61`elrOYE4^F3I`i+H*C<(c_(wkEfA zmKMXzSPt!XeX*l#Y~0Mrws_B(AaYDt21T_can8c`6-hU#)&-t`C}#DD0l_38Z|}4b z(b9<%%XPh8fZUjYDvK+#;ua)?rbADg#*B~gg(AD05QE+h6@*!r%pj5n)lZ8ovu-?u zXw@W$4_!)SD7y#ZuWO)vmGI`03E) zv^CRBHgsEuE=ugv?#FK1>c@${<4$LuhaGFeAh8XmR0X+NJ}QezVYH=IX4rT}k~<`+ zXL8M)k!RSqck@z%6?AO2<3;Sd;_^E3D};&B3DFNnPA%jmGLsky1p?YPrjW$j4Akkx z+$6b#y;g`9*>WTw*=8UGXO7k`shVxWnU(T3r@ z=gKoM@r*dl>{4=g23V8KdvtKe9U>d&&Fxb4hErbc-D_mlS~k5g3&Fr;50e>|;Wr1< zP?z@Wqv3&k#&JWp6}{b0Z3n!Y2Avv^M`r*=%c5B=F$O&)-A@0e8*Z8j5`M?Gr5R|x zwP;`2tq0YCNNDSPQNjZdW=v6OWz>f;9=b~vx>6PhRp^R*Vnf>1Ht`w*(5rNYDV`X9 zvDG6yxeYNW`3UNo zzT}A9Kf?=s3j1A$+=^W}6gs6}{KK&Xmxht_(STVRYV8;AS&}!$D(XEeW*2&c@leJr zx(*EW+B<>ZsQU_?nCi>gn?(BEx<{<05o-19_@@M|dMRO!WfVq!26K_nP}I)R_L;rP zjf=kMjIpCWw*Nt~y?WJ&OKl*n+LyixDA>L?EpxE{s9)lyh!!RtG17xrRW2W*Krf-s zt<;PRmUOJdl)xnv^dP+nM1E-kX$PW+maw{sj6?8EH#cke)>VO)u3#-R_yN?8-J)4hZad%;7p#DkyJ>PwylFMMJX3`X^;xVsy==V@R0vVC@p zP*-cC{K{vvB?rcn-<~He<zOCVj*J+9~;o`4NC2?1Bz<;4S$ znk<>bd&TZ~B{C(3N4k>e6cd16FM7CeuY_q9ip!)^(I*|~?idPO%(9M?u}NhKEHjhV zJ?JeADWjOGa?#@;9ezt>QWr#>U7D`-v$9XZVALLQqh_E^62-D}kuJq{5gvjAa{YTBBh!QslNq!d~NxYFce+EEH}_nvoqM zTWz5@S}*a+jzC_*Pj!1NdPWWz8yU=!OeM;)_f^&TiXoOXs(2vL*Th&d@k-#n zi?uuNzr1C*^Vmr(;T}fCqrbSK`8gURb^Zqxxi^kxbHngRspp;6j?pQW_yiBAX&U;T z<0-p$usF`l`t?y%0v>NSIE7_EW(T!6AgMPy&)Qon4o8+w9jW$ zcO@1tG5^3f8$;4{P3&D55-iPBWb3&;8O`)9S{rxMYe9z# zv@6c@jaOcTO6Sv5KTBLRK2BA!`U*-6wbQe(=qU|C^^oTo>%ptcX&Vp+)Z5pZD#!c6fN!H1xcmzSf7t6eG~A9Ry|}p$dAz6QcB?IEaA8Wmz3` zNJNt&3|xV2^Z6*w`Q%=KFpggY(}L*~qU|~F>C_!iwF7Ow9&&8^^ciqj2EjzOsat{d z7s9bI@Hg0PVff(YIP!-zZ~A-`1iO;v>wu z(#mzlUkWzRDdj~U9qgsPI(Jx0TjOVRn-7wWPDmnp2vIneJRL|E#oXjv@usB}5N zKpNrsu-ZoyZA)Dg!_|Fo;Z*M0BTPy3xC15?AC-7OqNTCOei#4=o?tISGN2?vN`Jv$ zLk{DP{*Ek*?f8t;EU`*L>{vX9MB7P9pqj4O&m@tf-G5iir^sPt48xbn1J$JZxq;^R zZ1qH=WVx^Adkpox}yDjOrnp@ zrp$sAVMh{~Kn%TI$_r8#;zNG>hh<64mRY77I4VbuFjC)_cqHG|iaf~AnV1w~j(wOk zJ7cjl;Zwp&zinB8W{SuKwoE5jMP^X(UZPEzXv(;C@93{bImqp^PR4)}@qqJ-y}lyo z@}PGiT+sy6^?OHVy57*}I*fi;W9gdXGZP19R_Hu^-aYr?A3gV@Uzz*!zy0eUO#Swu4}bXH z)a-2isOfrST0UhO@ybUSC8HNV`i*Zi=Kk_G4lg-VpGGFxi6th=Tr_?7z>=Bi8`m@s zQ>I7qKR12k_UyzZN&fyt6O-AM+lC*x>rY?yzxw;Xd-Gvr(zSWjBY$<|$V~L{j~u=y z-SX4OWV+o>8Xg|{IH_g-*~^DlzVsU_Yh`4zaqws|ap$6yUww1eJ^SOC>79#@Pv_(M zbY;!TffxLfzV@Ymf9a#85-u=Ukm%jV$ckdj&(~k)?_99L}^A3f1?^}$2KH(r@S zkCS^iyK7rlWwHgES^Pxu-jiLw^e?`8&x5&{;g1bZcRjfGzDFix`mYcDzb5ryUz)j z3gP5AD+%19f;!hWRsG%lPd=P_R`7^U%vCsPu6HBN0-X<;dSX5WU?}~|2;``$(pX@ zKqVR8xm+H+z5e}wpX}^CJW-`fTbZm{`jMHte&gXAk;%+(`O2gJTHDFTKGN-%v>LRN z>FL<---?@GC}XLmd)??D|e1`sZ7XY zK_=xOoZhr--l6J)lba<~R{ge0rHCG1>Y3i|RJx~U$BxmSzu|gA306pQHOG;Lj4 z(im+WY!p7xT`zwk+bq^?{pV*_P00yqUB+^XmuxTS!}(fH&~wn1W1VPb?U42BpKqLy zQzuTHc(Hln#3iHOZh|*k+@Pn3Q@xtedKOGaC$k0meL~W`z1^IX=M3kDkl&TFZmRo_ z=|CEEeAjiiy6YQSch+~~A3eqE0XdV^q}ok>`q$#uIlYc1VkPA`=xeQpF~R;WMMvop zALh)N(NmKrdd`e~V)7HCr%s%pG(c$~cI;li0o@^`V{-xRJVJ4=U$6L^ieGxVdwLcx zUdU(jq?TiH0u4*mFXV$N8s7$yKuh~3<-XrRxqob4Hf%As(5ETojrlB*Z14Q z05Z{hFEE|5pIN^<6)1u$r;thSoJ1;GJ#Co~s!D?kGND+U03O|Z5SdUx^~Cy_ zg*+yEy0h7HGC8F(QB}3c-6@ch?z}(c1ogA~VET!L&<>)xvTAlb@z~tv9i$i?-8}cq zL6r%5e!F`{4<3Ae!`T-{N6*Z?Ikc1AyS1IDOn#XD!q`ix@Ak6L)?4_*N5;yZIFWA4 zBs*|o@}<;eb3rCgyh0|LM-R$9L`22b3#4cp!$w*bMwK+RHu=H;wU!G%LHW;YSo+GG|%I?&AWH6 z2QewnqI&o$nY{QSN`(g>dzDOFK=?%Z)aD(kA3e7j4co^aJ9x0Tp}2c)vRv-na5hai zTC3Vl+A`6;t68!2Gu_n7P;Wmn24UHD-<2JZ6KA?FJE1y3S!5Eb80{eRU2U24po>i( zAtz3S$~>xl7c#jv$RyR4NzV!GyACo7lV^I0z)gRAB--l z%$?d?KqjNw8&9G;-Z67?J!nUslga4jN@e|-37Sad>}&O1X|#|xlplLl-?dkAYeA_m z4rn6TpxOg$(PD}EZ)ZCi{4}`tOv6Qj5YdCs` z@5H}JI{J;+A^c7jir5y*-z}|Wt9xYAJ~_R8_##c$w(oYQ-?{ZeW|QjZt?quy(wwW^ z9g8uf>sP(TJD;kdzi2i=Oaen`1wrp|A^z5>woc)lPovNHheK^$zdy_@==|-IR^R#g z!H}!SyKi-yhQ9HGp$uBbXhWP>Ad`8!tzS6wG4vlPb3V_hi+8H-C3#-c|M~dH-5vkl zsi)VCAB>Ofo%-5!{78*EnmtFSQV+>6??^rO}!iyW|jpvFRf~NIC zOvf=7McT)V_ArN{KX|NnVnRp6$dTx~20Op*=-H)U2C&VG^%Pvc& z!FEBJCr5p|o$%DJU%bk6+6hCfPJ(;Vv=g1phjv1kN~3!N?S#=i_xL$|)mOEXbheio zygsGvq&M|r+R2i%rRzoxqy%VP?QQkI*K;yiO^0iz_rkKy{=5!?S#H*lJ|_BH0?xZDWRPNnJ_0uCfZJx z{N5{Na$Y-0@9s^f&#X`F{^;n2-qin?c9J^SO*=VHCUZ~x&yoq1F33bid6NnJ)aOqy zEXFa-YM4^n)-}@C^1oiVDFys~K7QUd|7d&{(s4dM3!UftmCkuTOUKNYUz>Jwj+XIG znqZ$7{tqnkt7&Ax^fh^?;cdFg!Jdc9%HV~5Gw%mZs?cNZjBML}J^$;4M|Q8KADEAy zx1)bFz6qGyweT3f~%IK zYFPm9mcn>lBTM|iU=3J=UE+c|+(}`d%(UdB{z43KQZi7z*gz4sFIiAS%^r4fNEDl} zo8uIV$w&#m#+T&|Z2p{hL;6y{Rz*_8n|Bi*Q|_`U%V0rI!vteQ-Vq#*{nD5ZBYU-YzwSpEiW zHNu^;sUn%%6v0L<++u_FArz5uH)C(Fk`O=6>=v2lKANj>U^gm}fr%_B>rpWRU%&>_`J3&PKqjZhYn+13 z6{YWfN+Nvb60EbTbIBpV3Y7ck{%8ledG>G>!))(1NUq`XsIsxD&VfS;!WkHieqfw~ zO%NZ>qXEPjGes8-$N=#<`Sr+ACmxppf>%Uotz>Lu$8rhQ`9_mrTzGaKov^mgYdvWH zDPGR#+b$YyFM0zg5c(x@l+AXCCUOkYQv6UsTZU~1+I~MEHA^A9NS%jg8@lF+qHMmq z*W%3Cu+*QiuN39HOdj$D+49kiO)!y(I8$lg{Zjh zBUuW1UrgJgZf#RTX)RrUOsc-&`;sM6NUq|fpuIm%?(glN=}vL;8Tu}&6EA+e(JSM1 z*oCS}d{P990C!>EW zOJvL(hk_~EdcU!9+#>{Y3Hu5Ca?*-9&32jfB}Hx#GCzr^w=s51<-_WT8m>odEo%#p ziu|yf&RQ!rceE^VllUqAg!LNu3ks+1t2k{YfJn}{q$!o1Y}70Fsj>+Qb#-7isvo<- zZ<>Nl1+_^ACQoSGO&MorPoq`!2|af#vGv6UoBcmu@q^%xzA`W?Gr0y@o(*#6nL9mA z*Z1EV&Q}m}{u3?-B?+Aq+F|U%k298zqf1s-Dnm_ZaOis`*AL8s46Y5QbM()-Jp=Q)XWCw(ebSw&*yA*Cg0#NH|VL(<|r zLc(d92Y_qEv$T-egWF&O^u!{F%$>msSl36 zQZQu?xg7E=NYffyfm#TN=y6evQ^4A$Dm`OwuZtBrj$i_{GS0_kPA>o_vQLHDA5Q*| zc*qhKdBzP(uZ2b<9X{7H#e-9n1ig*^TCSGku!a#gE&blcx7ogYysY1^l=NUFJ)UsJ zMTxL_IA_YlFl8!6xT!akITi;_AE)c(D4(BNLJgKFJ%C{M=4%Cxaa$RVR`?}{1|3CU zq%qN@k={5Mmn&IaOpJAs0Zv_4MyhnH5J_JCrae;DEXmaIpv??ZFwuV7<$RpnP-X18 z9?h022X!Yh&52`n%YgV#O;t_5FN?cAN4;n!$1{AHBA%tx1C&o@`^zAdK_hv!9lyvj zxLF(+8wo(c2XAfSfN<(}CR#z?1T?hiuuSIxku+aiu}4|m#Zd;|cG2FD7*e^&*HOVH zMX$F6G_^)TsiF{dlw|pgEVx<;MG?xHL@tA#2IV_*mY@uIdJ$N1AbN zFNmXNY(YrZ6G1E(bNzn6_1bYwLiNvsE8La{k$YuZQ*L4wZlyBi2E45(gv3)0+dF$} zJm4y(<|+))aDa+nquAmSv#iTGuIq{NiKp?SArh6dRd|;OiUl`NgWWb)%9(8yRo zo{}fUjv=)rF4O`Qt%4MF@X39eLOI$iaq-0|{g@D^gO%Z-LTHY*>|4T^A4)9Eh*Ls_ zs)DzBGi-3aM1|l0k0ou$HRW+IOf&dUVRPPYD-oeVQ4214X@T2m0j;CXC|_KNCQ^-O zFv3EQ#?^#!;veG{XJejZlL6sKeoQ-bicCI`5&t}45hcjUr70cp^k)=KLuHEE-fMAk z&!cj-i%u-03-ula&47m>FCJ{P4lwJ_;<>;O>lBYbaghEVdw9=$RqfiWFK7shOil4?{Y_R9;z- z<3{Y1&06%y;L1bR2#Wb5Q;2aYzbzirVy5Y7eSxF(>5MUWx7x{^+I_w@#8m#4b{92a}OHU0iIu?F6XBPzU#Xx1~1F7(GEvFBz4ylbXfL zP|Z~>6G$yLyGV?UocL9Y0H)8;zdht#&cJ*tsMX*ZktF*VkBC8XLEnVSJo+l20F_ ztEaY|CeRz+Iz*n8vR$!AuA;M{7Of@4U^6MA6)XE4(+0PR?mOqZoD>^fu3@-Pu#bX| zOKW59slRmJv`bCq1wX}APVQ833SRoSH;E5N$tCDQ$3o@Hp!OWw{%NxWMh{3S*H={? z6%`D|i*g|eKcp2pu@Ga)oc2cMiKVJpK->WG;7m1rj-jQ|Sgf`|iCmK>tQvz}$9c^# z(To6gv1(@7G_g_z#!@7yjysMElV?&)3Jmew{Uk=;=m&uv5PN0Rgs6@An2G{DHb&vM z=6Wsh3{fqBG`u@@eCM25!63;0BV>3QpjC35bpr$7w!^mH4MesjOGAkq$ti?a&wi_m zr;+-3OR98VZ)0ZZ`eqf*TT7I1oh%*XY&GYg9CCT+O9vetFsM_mMQ)@71fH6E{(h7(`n?!WKJ)8bOw2gZ$?N}KVn2B>)_f%@@5pA);ql*p8@ zNQO&hEcz_nxSMhHTWhYXbVUt$ef&6gF5Y1bw%9*CoR-=GkDt5R>mN@X_E&08)wH4P>*839mDzg)$l*QdvvGo)3QW`Lmys)5S5)E(a85}l9Vn`ARFUgPd8(h#R; zl!suZ%ZOaI#5a8#b0d^u^)R``tXVh`n(=7ZV;7x#nKt->44YwMr;-&g#85i=QSRYx zMy9UN9)3Ax1`lKbFUU@Nt-xi|rj|JJ=0WEg3na7+wFF*yWdM=Zn4q^jAKSJ&-A*Ua zcIKxhkmWUm=p75aN&q zts<6mEk5Ldmoaj2TGCe<0xvLDiyMa-rYa+X(lR%m6`N_qpLS6+u(&V4TXMkh#&3x( zR;;I&ZdYS!%Tyi=DAm+h$Cv_!@3BD&v_-6dHKBueAi`cocU8RitUt6lA(0bHWD-|- zVl)pm4D6mHK6qro#+ASW2FOlCu$0T*oeOES(bU=@_FROE&$)vu8*(4hClb~_7B|Tt zYQqJ~YOD&LkzyF>H`R~5IiLE5iR)R(yJ`j* zoAMiiu{EzFobx2AYYwE{Cv2cmNIEv3u7S4;r<$4Y6t6uAU$)X3M1e5vck^~^n-$WD zah<@9MY{tZb<^|Yw;iip*OkEwrB#?NxiMg=+Qv1}x`*v4w(1gZ}= zFGQ9-wu0;f3pm>}jt741vsHLgczxbL{m7aNcr!Axc$o%`Pz>t|S?CSC8Gm(|vkPTb z;Ov?aE%V68M0sNA<++Ky6O~;P6Xjjya(QCc#MX&QK0i_E%U8-+x%|?JiHhvsT5&m3 zaqU0HBt-v)%t*2=pOdWpX2s~%6|UJmA&I}e?KXTc}#9;e>{-~U;gqu zndK%XCJszY#8~+D>SLlZv45gmA-9TiGEpv9D&v(Hmf`2GTA^#~FH}s0kT~um-||F` z6*4|r!rs?SuEKgnpD3LEIYx?`q>|*CgRy?rWA6m1hWY}Hq{x6<;l`OBisH=Y@^1vr zP}<_UrIfln0nu=!GO=q{d17zi4KzYMh3N1m4|EL0ya03cQ-v~@-C!jLUdoqW3OBUO zMci+k*cr-9K|5tG?`)U3a$%YEgeu)sQO5@Qf2tpUn36t1V`^J*c~I{&)Umxc>qjE2bX{_;P_=u>zI5F1{Z&hzR+2*Ln@oi4K4hK$0ld(Jt{M6{=!Uk9S z(Q!xdEFB%$&BotiC(+0EksD1dH>Ul2*LY@3woA6byvw_)(YQ+ z7==<)GAO(UV(Xho+c-0> zjz-5DEJ`|$RQ+BbJ|J&1|FH2{YA?bu8w+ky>F*vXl?KeT*i{yTm3(?OEIB z%vLtQVsP@2pQ-)S8O43+QR6m|Z$=(3**K;1wk^57TsK2HllD?w<$;ybDI-NS_nB?0toOC$3#Ja@>wAD~uTJ(9Fm^-@3gpwCDCh_IAdT+iyQH zvgYMA*RFosnqPVJZHup6^VX3Ki{G~9gKM@tdiK|T_`X|)R=w+&-@53I?blwr=8jK) z;n98n{Ej>BzH-gbr>}hLnpIc++8wK}>|XQFZ~u$iZ~tev-!?vS`@{D3k#FrAIdSbB zBO{C_ZIi`uB8(>^BVQ=2DlA&{w$Bw;U3=}7Ltk9;!_~LE`=vKOx@OJLnl-=w)?Z%p zgDbnQoV)GjE${nhTfY0wYghe$cfIfSH@}-bril~3_3%x<^1(;nH}tkOzcm7lzdv-x zEkkdA_)SAEzwdoRtM2$GUpVpI{qOw6HUH(|nW4YBW7DJWqwN23WW$=}Z`*LkJJ&q5 z=I{RMjxAgM>6R03KQUsPw-4|6>s8l|+&;2zzBQWvi0~0%Mxp~)tUAw;V4W4_q?h50{o!_7ftt_R_e72HXntzsl z@4!1M6O-DTu9u#D@6FdPy>9Zr zuD`o^*RGpyK6uLqcfEbrhbC_M!?)aY;HGy>Ol&W%d+&3%O#A>uyBJS)(WxHLZguCg zVLUl7@hrV_JUMYXH%U&ciy)1W4oT)b!OL1mG>X`#a$oVw&mt;eB^J(}d*J5XyI$J${iPrL`gOZrdhY$Z-o5MY1Mj=#<(r?`_0_N5^!}GFd)u=Y zA9!~A<2&Db%X2p$*tPSP%Xhu_+^$`_CVuJWUn>97ExUGY-L?OXJ9q8so7hGHD!H8u z2@@0Fzh$Bl92NDI-vg)qL`UeIAFQm~{*Grqz<6@ty|+xfm&j1&O`*)!ALxuH2PP&? z?+T-m08ydCjKAaPji>sDWbCpPnW3)F_1#8Tsql)h_`dIK9Ceo*ONM0QWh-Q8(dTk^ z#EtKymW!Dptdt$h3@vKDR@ncFJQ(9Y`&xPbv|)XBP`*;Z&GSLv!_PwZ&yv>4I{D}w z#(ih(n}2xhq;NJW7CCjjcZFEzwI`@<@(J(96Z^G zNIN$88e#t{^5A{&|9-8!fBLXjm+xnx`)5fT#uXlnW4s|Ter;!6C*q@wjBvpoQ(N!o zX!{eE*8*Ir6aV({T%_?OhB-~Qkyp+0;IpI;{&_rOfJONt;W$XAeg-zR*=W=|LZWv1 zFdMj6!-2bh0e?sz;K92TJdCQ~5gFg8IOlO4Ra~@x%#-Km!Q|vzo^R&>*}UHq&JzDZ z-oBHrLt~(AOB-RJbv|6}jjmm0rIk@S(5m)1TH9qKdAgHd$`o^Y=L@GX0^9-}#0M-q zhP?Aw{xi)g%u2A;AM8du+y#5c@0*94x7+c<8m@PI{P^^ru{yys_qFdusZW2VNp--e zZG-L94<3==w;{gy8M{xHW%VwR2HE&Fo^0bYwhTVK|KyFC&v35@X#=i~jTO1`@>nFU z9k0tWpJ`hCyl8-566`AJwamiu7U|k~tG`3rUU=GuXOg5e5N^7arnJ%ooEQhbeL%J0 zu+B>_Y1;{J+qard{KeR$)3R38`42Qzah(*U1(y?NHL&FLiHQjbOpQ4gTngOP$sl2v zSjwgqU>M9oSbWkPD!b}aRgEUZ=;A#%NSJZDEKkTVJ5$7Yt7Mx&PQ&aK?-p-*ij6nW z<+|<#$PF7(#V%&jKiFC<@mAx&Q;rJ+m$S|}6LLJ60of*#!F!U-Hi<|d`9fas&QF;&okgsUPvbHeu^AkWwh<^s->p=;cz$&B{Ge+G@*OJe2xXhtax#9=bY`4rf*zz_P^<5Mfcu6Bw-|}~* zHcDZ6A(LU1gWE_5TgrQ)@`^tSlj5tpdnv+g@vY=$(Df{EzQ?l4^acv*$n!?%%bVpq zT~s8;z2YbgNgq2T~4%#V%VS8 zwQn=)NtI3f7$I$O$66G=`wDO(u6YAEG>MmKy+$?PBAz7~T2P*E>(fNlVWjPKgJFC(Q`- zwONHPt}8Z{GJWi{`iUn1B151d{|DqAn~NJ-#%_|s573aCCB*vN1EGS${=C#!3-rcQ zv?Ih`F0;9crg|;o2{al(ybVte13HEY$LZ`${pq6BNxX$ob=^VlQ?>yHo%$U zKOQrFR?^(>Ff0B|e;&!Fa;)>z0wItR$@-{wwwB8c!c=Ai_s8TqyNwgTgyn0nNclz5 z0kRZ7+v_OT{SX+lIh!U3lKsHrE)pBfa*&M>0D>jZt7QpC!yr!v1NfNN8hL+!naWu} zb!~=&e}LX#9`=M@V;qM*|x0a1U7!}Ab zc!sthP%V>he+ZOF$I?8BykhnwB7d726I&10wGl=#_TMWOmy+VUJzbF}0d@|*3<$>v z(*lBs_8n@lB$rZ&qbB%uYS##D;$je6O!!m$TKP|=ctS%O=#p_ zksDv2E#azzCh}WYipkx>3BRaL)qIG4Mt|X0dQ#x^p zq_$;SF_`J1Tja3EI^vmWKx3Buc?BHg1K$a&P6euv2ZoYi_QjsEu;nZxBo5TkBDWKt z7~hrnSw33}MB9W6JMNIXi%2K{P?WZDT6m1t{Pnttv6Cuq>XIHzCya7@~&?1+Yt;mWmDA zB<-d%z4tT|uKH=5PNoIUKiw_QK5&FKdC6t7xr^(hVgH?+^stjp(4lC}=Gc9^iDvT@ zy7^EVPxV(g4eKFjw%&pw=buKjOomCC?vt+hQ~{4mYg2%tHJGBXaIUT`CfPsd)+#M4wlcR5<8Yl zTe*Ra@~9;8wK&L0T$|P8MF2d|T&oTn-a;k3jS~vgXUirU{H3wT!Civ$BFvVG*y_kV5v_nelxI%sEas>{wcM;%e2{4>|gB($J87 z=DId$nD0>`9J)TZvxX{l% z2IF)zF(NMY)76z(lFl%GmthARZEmU#aJC|w8o6Hx8)S?PF(asny<`Uufj6c>O6==( zxHu(K8DUF@S(tScIIUep&5HMcz){B^rL;We4W&{;4flF=k_$fNfktq!FQm}G0e*~S zZrqu2-R0a6hzkB8&d?-oR&GLKW7peeH2zR|YK-&T@RqZ}m8C9S%DE`#tm|`2qz|mf zK1kibbJx=jlKxForMQeR z<%<3-)x7H+vr+}gQmM{HB@T2OyTWp=lpf#FqHS)%M0ao z)#;?fbODCjslFV~IBFgRMa}j$ZN{R>Vi>rR+-**4(KgG}m6UK*=mcFIG<;fX%Dal4 ziXEJDwK})C>8(+Q*>Ig(kMyk3fETENc3T0c*RSZE3cQfgm=vP88M?mkkn;>F;*OVk z!%i(2v<28A)kDNtIv&CR%f-kVmWSYiW8Ae?)6&25LhK7wz=+irO{>Dq&l9FWuFpn_ zEwT_`h2v5_)<)U#o-xx)e^ugPjnkKo6%q3?Mu=sgw^lE|=|<@Ls%rKjPd1JN!g}Q3ZWqCc?f<>^83+A!I+ANr z1IAXx$AjI%4)S2Mm(J?6i@bDInLr>j$%}8vliSQ5u|6%;q(mpm+be})j_68}wCHZc z#LD=wW?b;C$~UF^n8#ZcvK{crlUm(;nx-+4@kUbesj_61D@O~|JnQ$O260SUkO^Rc zx(B*F$PSt#VNXfXsIl#D9IMmgX&Yqi)x{(c1Q;u{?*_?(XP?^C6?c{M0L7n+%6G-Y zG^#g5TWF!h?iY^9A6W1CGABja8&}7Mr&b6_)Z#k}N@Zl`FAq%MewBm)5Edv#? zl~N_LbPcG`n0)i+yo_%Zy*kgt&+F*k+dnnqH+^gEo6=tZ8T2Mc=>!H5<$=rUK^_Aw>)a9mHB$J%f zr9Pr$)O6hJ&t)N*5A@2!*TuIN9dXF0Uhl)j|dm7)~c z@1`5S)%9=XtHwCaiki4p9C@5>;&frwR8}~1#+#Zm`=74JdLLi2b|dnR-tNWNvTN;+ zJ|{(+r>N4kf)@CsZ8g`A&$h-T`j)xDOMcU(GAO4Xq0LsE@7jt;{AA11mTWO@Wf~bf zo4R-GzMa>X#3k~n_*nNP#S=u`lGvrjRpTVqBO1ymS3| z`GWz(^=*1FdVFPL#{`y&#pe)|^8n$FWUy>SrqbdK3gJ* z)1=PI{%&^S%eh(J3b=bDT+D*NE5NVR87okJ@F89=C$z@8KJ(yxf zAMnKy;}mZX8|_%kSRFU$agNlyrJLs9L*i;>GeORrx%&&9%Q2W<;XWECY{Oq%E+b!> zdNuA!dUJ97l;oaKO9F%Ul|;cDQ8-4OH@{LInypEJc>O7XpLcl zVA__$BG6EiDFvEe)fho+ttL6@Es@>m3@SuK?v_-slqL3v8y6Eruu!nH>qE^<2f&yR z{gM9|1X)K?fYq4r1bp1ESsml|RxGp?p+=^hX-L5;RUXJd5IqVtWhTjW6VmiWQ&`lO z(Js1f9!^J%hPltmwK_F$-Ghf_Y~$x%h))hyXOE`@6;KY=rX;-#bP+k}+ED{btaV;q zfSTbt!QR^IzJjnMWeQ|j=;FQ!i3Ssd>`p zR>BNtI8DMTd|hN`FYZx)&~8Q^3pDajbB6sSiG z*CiZNx8WWYEiZ+<$|pW0j7UM$u~kwbYC?t8 z7G~Em$}AEw@I=dai#O##X)MK$fk7f=&uX5!(E)^5$@d+B66u=CZ9lTn17%H@c97aL zQL|tm+(@D<6k=%RjMf9(G^p*&Or>uq4v^Ypcz1~GSb$JCO!h0upd*6;-*67uDOqah zqMW7sjXN|^sp7{`V%6-Jk&3OM3f%yZ3YKqAtNftHPhp@O(I(}pVNukJ)zB<>s$d_E zQfZsLW*E(qXqX0Mcs~q00moq0#;BphQb%!y{572@Zqvoru!E0CjEQJ!-i43|v>xO? z**FIeD3}r#I+=A@ho{0j;5HkL@sY%8|A5zft9=8fapI&ielo~bdy3=-tXB+Gs zfJs~H^5BlG#^*`sv1230`)N^{X%l~+boUlHRK<RNwdNZp_T?uWC*Nt_I$Bz0PC%kSg6ub9Z zq@p77PHZgafyJp`m^y22u*$g{U67V7Cu4Dg3yL&c3jUZmyoK|i)XLs!D|=|<`@1;A>IVsp?>v0bUhJyDT0fUPPxZiEQ3f`^58oF-E2?Zir zUU3x~vBMu(=pD|viy{iYPhT$Fc#b34R6@tRI)LzS_1lLjb}i=BD~`t)&&Q;3jHF^G z2bMNPP~u(Z<7DC@D`jI7r)l_=7~?+#?;wzN!-0D0uyRWbNo2TF?jUq}F`7ePDynEa zlOUnqi32jQr#GTsvVg++Vr znA*HU?T|ONn-E_P5t@W1fkAu;Ep5Psj#24YFhp_s7Zds^b!44BB~+=l+|}#(rwmvZ zntQz5lj zf)ucAbmt%#+qQhL!_HDi3L38PA!1m4j4symjOzNt(0bYhQn=g|JkKxRIVJ_*@Cflf zI2m@r4n&|k5Jtv%uWKWiM1VRc(vYI_umQO3vGZZ#+Aa?#+OD7U3|M$+AUpf|unJ&n5sVT$BbFAaoXU!7h_%wYF6 zMtvzgP%yaxHo2_`+1GrkhD;uuhR%WfVmM1L9D0e|O zp*d;dN4OV{yQal7jIfcCZ!iass-S-w5zg3SI*fI7`FPO1m0HmMFPZ4nt(PN@Cvp0| zD2~N$Pu0%Ry7=EwV{{1?Q`Wrs*NRTb85+nq607rkrRhK-_rwaw#==OAGNddCyR`H& zaFiOAwYp;|vG;8-l|zzLd9jd~sgp}qnv}04?67nFxj*8Lp?iHR`1$A+M2lmR2JTSH z2E96PdMbp1SfV}kBft$HCy!s}WuAC`HLL{_L9ba9(?(LAb`nL4zF(=YbgPecO{|+q z@(-_U6!+GrH)W63^XnQbm&V6y2M)~m%+F1K@#RPV-4_@AA78xZm%iF~L9E-#1-{lCFRLk#B!{%Z7(O^c&ax@Hd-FKmEJ^&vn25h0EUY`;Xp} zf6spyzH!x;y^T8UIU@&ftaZ4z`CsF;ca|RO(@^G@6W9K z_-C4nCTzC0bL5e(^-C7ncv0=`*B_W}{Lb=68hh8xtekjk<-Lb8hZ@{p%prhmtuH&B z-Cvy<=3bMTxSFioxa#O9f9|%IuNyyb^56XC`0u`B^vnMuvf`&_GhK)C2mH~@>PHUS z{dMbBAFovd&ugiiO@_DIjz1kO`tY9Yz^+Hb9UFS@Nk=y4%OqBr)Y9>TUy*IKd&4*o zMYS{4L)0PPbzuKTR+b-KDT4cHMi*CyMw=!LOcMBhPUkAaCO(6 z$FhHU`%0$Rtihsdaf|vbc6n zM<$20o&4uVyB4jR(0fN7$-XCj_^2_pe|6Q~2a|h7|9j){3EIifBen9U{Y)mkXu4dT zsVzk&2lm&ywy#ObIhS2|$(p0ydD=v#wrI?C|C4QRNjfs~^Rkmy8NPsfp5dmG z$?`$IRLuK__9{oNe)*SgtK2=LkQ3QL!0$c%2BEw) zrwd^19SvzhN_pd-aYqSZvV$G(f__1kFY$)5glUp~EqHEHyN|hVeo7Rp673@Jajn6m zjB>FDcO>x1@WKx62w2ZolNChfifO)#3}us(JNWLjthXb#-A3O_{%f!1OTV3|O*#ct z`aNMeHL0{V_(?j7F1YQaS8plMyHXbZdbv}ko$g$iQu+$>nlhnlmhKl{6lpe3(Xnch zMgwVKTfM*oZfFse>oP1k?rP|mRO;yO@U=308#ZXr`ktr$Jrs?;n0hA2B#{lsWNt3{ zo7gL*+(;5*^G#yzgP5B<+cU=vD092vz`Th}&*4RRsPpM3L5`8s|6)P8NAeaT291Jp9Ke<8XUV4e!Z_+p32!(tTS!Hr& z{r>kMlgZtMmtIntJdu^r-d>qZbBjismh(PfI@Alf$z5wdsyId-lKm z$a&g9uCn{oDT&t4egAJM;pmHJpE-!1bQ|E`+-USS5yC|#XUPcmbYwyq)`On=PdY~1 ziOPg8n@5j50j*k!Ad}=V>bX4j#M}-myAO`eU2(;HJ7M^y?ddfc?RJ7pphKq|y!j>8 zBNHUXr9Yb`&0QY{^?nm>IN3lNuy1(r#v2hBWvW!Tabx{^K6Kk{+%9u)Zf@<>>(@WA zdv5gk=jY~LJj<8p11;+p`1ixPzyEvg-_g+UH}|~CM85*v{_B1IyX3HAA$~r5zO3i$ zSIeZkn>K4zCO&{AiOQr>x&6eqo6L2zGg+VmACuXO&XdWuUkr&P$VAqkS$B2lyUwN# zz8jgaMu$uUnE(ZKm9qwWv?p~|>)Yf8WYR<5wICC!c0wt8AEV{aCeD+I9DIu$Yd^iFqKl7^zH^R{ltr@d71pl0xwi1^j#9 zjx+P|3pRuWlQN#El8kW&ND{X;u{@67v50OS7dff-j9|AQvkj+qjDJ2}?+l^eK50Yx z0I%se=h;p_Z{I3?x)B`f9VB`$itXHUGH=h{5h5I9CqK>v>%A;|MUV{*?PxmppO8-R zmOA)LL}h+7kHgO2Bhtp98v#Wv!%wo?d6y_VZ}R8mJ)ce%@a3)v_(W~W(!S&6OKrFo zywXlldDDUGrmc})!x$k6O=bn>WxyyqbxT8buU|ic` z!3s{?I#mmIedL^sk8_y%R_;-`oVz_V{V=;Zn!a<_N5I29D|h!F$mjK5lhxhf4w8kt zKom~zVbSLVX9Ed-rdH3@c)%HWneEM_v!aXU32fIzvQtm_1`%I*){83ux zqa+QZJ9&=dUe zWcacNVUNwxxAmlUYxKEMOnten`uv#POmo09aNMw)Ci}bg zG3%Ins9hpJ?J*YmRrhXV$DY?y+{U($hR?$R9`F#(O9}dkYLgz_y)^ZXBoYKMVJkue<=l#Mr(%X83$_T}|G|(cPFKCBj z0sl`8wuCaWR7HC2rrUVh_QfH-jaPZ`>#Y0|Zxc(zdHHqVs;tqI-bz|pibr`J>|a-2 z;J(n93%v`zmDxbNsq3PHU^(5M{k> z$w>kUiuJUCRGlQZC9%!8G9TV@8ONfSxT<7K%n6pN#N&!ijQ>#ab=Ll zE#6(Wc5m%2i7$IzrCf5TR2J6~x78R+VPfkvwPPVhDcNeRby8}@VAw0xv`oCE?8;W0 zBg6rsKPcn3$64^QL&7prlF?X*5aS)#svKywrdr2MQX}2+CGbhf@~n!uDMFkak}0vy zm_gV#MEQZh#E!x{7u**-%)GDdNX>iI)(ZOy1C+7iWImaR91uoI^KiCcc~>HEIp@9O zp_I`H+VaR|473}%l7fM_!t%jXrX(r8@d|B5%vxi{YzZ|`NfiuxX@#MJHMgRVSSXO5 z75I%C3lcBivpge%AdhJ$pA_EG3apnIvnMlD$fSWB=!*-&xzbD@6`$);%yRT5t!(6# zvtX8AbctPVpvaWo=UltNy&0}Zj5^~`Kt;iso3-45SL9k*=ww^1UToY z2cyf&QXDI!>~e*%=3S;Bcjau5A?TxxoC4DqN%Sbm!AjMvBiPE2WKx!8(CQ@@k!}wu zm2(SS7h$h3v#;>0*GV)V3g6%ZPd2FZsb{azrh%K=H3CCmur!YZ&orkoC8D1pDz^w> zI5sBSATfPibo&ZU!bDo##(B;hdqQHE?`RP0C86fZz-phZDAwa>@6Q z9etFE8y+|%z_?j2e9Au}=lidX#S>j8hLfQ@@v)aFHsXKX?CECJcQ=%54>`)l1?l~?ym0$M_V9Y)gfi=<8letO++cEMj=$R9u^tiN$)hJ z(xzX1i(KT@7ssEq1Vw{lHA-rFwv|bdV+&Ky*lUfp8i98JY22?ly{569P-Pf(G}IKS zTk+nuMNND(z{3n1c5unZfVu8j3`5ueiI)~s@&!G<#h9bNq=Jww8|V&nRPR0xQF*AN zIHcAZ!gjFKQbrII*k}}y1%u_Yv$LuD3n;3ZO9~t=tq&wGL<5nHE^$R^`dNB(J&Oa| zB>fD@L4Q6SQBNdq1OK-~Vu(mp-lXejm z>cwzNi9m!z3d@-QdRm3Bo%(K5wl*%~9tc?*-40&uChFGEssom+gpZ@;OhZ8;j(bLB zB23upI4<5Uld)l9Xx_>=^nRgVXs53<$|VefSAd-7k!CH61sv$+rVHuqgRUHBl+xM@ z0q&_#sy#>@{{LxvA8@yh>#+0O!Nuc!Af$Kk1W`{EEe}9Q0%b*h;*%`KwZj1fQBShs zfE1rCH-8AyY)U)*QaW)%r}a7m5R^emks*~*)zqH@DRN9HNvY=3rfKCm&>y?Bqeg7v zWSwr+rFYx!^QPZAN@#uYI&t6r&Rl?hBuaL&&Af*@cV^Cj7NX!uJKB^U>yErd# zNmQXxTXY}_%8S}6pjPRBgyUaa?t-w$>%hLP(@qbmPKG8EEfk*}^ktMjg1WsZeQJJy zq`KZmv);!6<7+N1ggw_Nn6rVFFW9kbJV|FNEos#&Ek0xC@|~+pT=4l;Pxsu$Q9Kij zfkawxCguwSBRO1S`vlX|(X5RER?1W5jocf0@E4frWR}j~5jqhYZ3nc&9=q8{y2on z)rn3w%EJY5F?;vAJwu6X7#V3R49;syaoK(7CnBD(O|?f>xodaoUZQzGQXg_};!YpJ zBiD?}z3qF?Vj6jXB#Sdv6YV-4ND@& zj&x|Zjl=U+T1mU*?Z^UcMh#DMm~j<2Ano-sD!0vu&Ck}Q3k~OepSn2Lv(#?3s~<@a z;Xc){{v7-mxFL6G)WqsN;-!mm=pcugP=ZBgUP^ncwC!x$)8LjpmQWH|0ZZ!Q-MYA} zE%mAvM$SYs!i@3^mAhTOq1YAB@p}`e{K}jfe&<1^LzI^_R65p8z!vq7sq+XR$o0-! z3Xc}IYnVTntyc%{EPujpOipe{_gw0g07WMRLivoYNDtEdB|7MYNf$G`#geT_+>1`B zRY=aV!cD>tOIpF^(3hDG6Jh=z*-(oXV_O=vO+U1Q_@LM@qjMz-1Q;u=&#IrYE#61k zN+UiRfhmHLKtSX-vC9FMel1a*n_jfJ5TN!B(puCepT+P_#UMed6vv^aL{mNIw2FDF zA*NgvD%LP`PsSyINt7&+9b56-;2b|oKKzLC&pLQc!ZwZY{6L{@;$_*bYu#gZNRu-6 zl4g;$?B-D{nu$|6C5FuAS$Lq|u}-53o3i!JJxV9_)`-#HO{)-6G?}_{h4R zxW5~*DP7`&YoWs-M$G1=uUUP|B_2y-ouGCgVScCV@pVub*BZkoKrZ=}Yo)!cbEtNu z25vRGTE2*}&n|+^I94;%MuLQzzy4HbJD;nuqL1MAS{K8iK7%-ZCi2sVF8g&p9MD{H|+R8 zOJnpD3FHUHW^W`-i8@L$%}-;4b2OdFZ2%>QI*nT|3pK~>KqBTD1CdS?xr#3pE6f9h zZF7xckuOQ?tm!nzEuIiR8jH9NCnzn(NuwagAc2(J5NKQ4Q)>8SNJLIz8rk^?BT@*) z3$`j8*irrTt)A8r-N6%xk7xL-zN-wuuoL|?T4?!^+)jb5WY0$uzh`*4XAG^-syFPh zvDC0bEc@~|o=zJJcBXJx${1`#W@p~&X1TPv`_4Yc&B>1Ksm#T@M>6t6>}F{Lk;uL_IjuN z5=XP8l^AAS_?C;UJMNmD8ShNb?u+_qBS+hbs1^+xF1qK$0M={(HcQ_(as#R*k+qkf zh{N0kwkP7fPEn#}&!M1=ljmGX*nIz}z5T>^HtP9YSvEenG1@&f))t5E;4;$L zT%n)4TsK`<;Ip{iCJot8%1hU!`+QC2@0OZWTqBxYmdlq0H&ox{A2+!uqVmYrIoR7Q z+*7BH@`#f=HrOb-JYD~S9J=UOQ7$r(^m{z|76IIAZQp$|jj^0zh678<4wlRjkSaKE zdfS|I9*uBv8EUhh+R9~8*ld@J{r#?BYwLb^p4C3tJ$~M(bzbG@Haz6_Vw#STC zuHnRV(Pa)K+78#*l3dEfOz%-N%&1)+&+zA%QpT>&!23B(AM1QGy*p_!V~T$`H5-v0 z1FN{Q6+O$00Lnl0x1=o+HvE)hsM}jCM=O;X+J$4WxOO{dkudyO`r+M<@(fK!R-&4W z^=!=u-Q~cY0~Ld9!lob_&CsD*P*_bOS&j#oO2f3JRQs4~!Ic^ft znf26JibbSE?CZGUY`eM!dlyjQOaaLyRoPqR`LCMV6IEu56?V@`avf_)QvI-W6K9>B zQJM#ce~VQO<#dD~9dkHHlWMK#K~D8#Z6yi%Aqn|_16#}%@p+MijAOTNh+C(kBgLmCf9z)tHGq1Fhf--z0!!8iP_~x#MZT5nwZwM)Q*w zgr=@HS=f8lO}v9UE>_ZMSHQbNbc3>wgz9OzG$|-w_Ibl+BD8$?nl5^j1$3GpBi9%{ zG?eI23KAaZJ*x9jWCdcy%_vOC>1-4+FCh){V;k+aNcomhzT0TDR3!C7x}^%^6#fp#7B#oj7PyQduff%kfIhjyjC$kbRz z7baaU;K*=ZydqFH_U_2CVSrE5-pJJxb7PCPrSyBFbF8R9^|g)?^V4#5K@i(Mk;jNq zeoBP|uc>$h0rr{!t;L>pQml$NpANhuHlX3bO04DqzODSkEgGjg;GI+S36@&qq7TUW zcQ`dg*NGc{5hO{#0aS;Z2wxpodPk9GtTQNzg?dl4CPI@Lz+~EM04JD%3mr8~s%y6!FA0WAwZh9?A#Yw>5=>NEF{$I9A52Sch^W0eU<@-3fkf&p7AK z-ez}`2rJ$VRH19>IY*yBtF=u$qGatk7WTskMIYSVmd0hAkU-Tf9R|*&a6dTZBcHMN z-7FkL22Mo)US$v>n~x9?_izYZXWUFDYDFDQ({p~T?6;^@maG_6sr}mLXP(p4rA15qfa*BF&bSB%#Q-z&T2p0@+mEzaquHUN))Lq0mGXKqsVTFD=874SnoJr5IoM{>CgH2ZAPW=xkiJPte!k#q-Z0QG?_a(&K0EBGtQKJz#~yra;#y*gFKmX-(>iYhL;cF zeqcUmM<~`3+rmA)M6(37i_f>Jbg;1+R>eV7-RWvNKp16u*%k_?v z;JV@JwDX(Et$Nzy1)}AcQzknCF0wR$sLbs-&dfT<8DMcs^XAE3Ka}P*-8e22r(%ny zf!F(5LP*9B3(OW&le!1!tQl|%0PZZR3`iU21Uw`mRes>r@W@kw{z3?O zLX?VeQkyImBxl^Y_nuf)qO_MYF49@UdATP^$|GRUbuLsqiyV*n?(B8)hrDvKvHNKa*N0t#_ zK;RGd*Re)TFeV&K%uG9#9s`r_9+Dn_Vp!wH6X~eXc)*hz@lCXB9cFU_&nNec<6T5O zzEPJ^t)w^HAx`UY<&8&J^l)U02(bo$4z#>4SDx1jC7GXt3^vf%7IU(t@5PNx{xS>_RoJd+H(P6v7O zK{nw#2cV~_JGsd*EuFe3Hpk>19tB8`QFTBG!%!q62X(unj|lm~J_V_Cyw1PW`ALIRKLV#sYg7;I>A|LhsiD9>UOZU`Qx;Hm=clRTcZ5P+O9cYc> z?%{Ggc%pp$;7>pO=fA$?%f~K5VVeqPavff5`AyrZ-YcBUXw}q@{;&8{Z`1pJ{o;eQ zxYvbwIbR!W+Qxenh4aX4qw(Ft;x92D{_rh#fB4n`h~BY_}~Y--N(yEzP@hnvBO9A-e2E-?1{DiXjt%bru%o+efpC# zGv&)NnfTnjhwPEVaWeaBmGsHv$|DPFZBimLK}X!@v8jo4zvsZYzm7;+EoO}RMJ{d)i8kxhT_>u)EX&YAD7 z9e&g&cm2vHm2u=}y2STO-F4kd;yoMw$>LA{d_L|JX5W`=%6F92`V!>(bzgpdZVua^ zmE2vMH?NM=Y%X7wE2{Y`*e#32%!j9&pEEn0&6`74n~~ok4_%X8wKuV8;R5Al_Cxt= zq`I{9opG=(Vh8TZ+|o+!bo<93vLLIu+?St^1EFCzE4%JXg}J%8HMvreDebDqE-rj{ zin0Qj4X}%C@aT&-@3`n)ZmlLnH%PRUU&`wk8RFH>jQ29^F0JD0{4Kw7+Y&aB*`IQH z%nzHzm5Zglh~1DZF1Fh%7ZpI1iv4bn&+P{6qa!3$mGD2S5%K*5$upwo($!KDwEC4H&6Kg7lDfjE~4@t0?9A%#}i{2dxGC?3i+6b~zldO`w1nCFlW!bv=KizJx&h1*nzHW7Kan~+nva3q{S zSO4@+r}aDIuV(hB$FJFSVB^N`j6*M*!!USNWwL9RRlu_{!R$`Mt1HitdePiVFK>NW z!)otW`lk!X#K#kh~4j_|VukRcPuEH)_V~|Pej#pQ%IFQfezw#sofx%_| z=FLGSlIbp9Sz#jt%xO;<;z5>aML@If}7`?z(_XBv&de-G;^GR3_-IC$Gu$$vJ!vGReLA7Hm^jS6{ga zt^JxdfNdS?Ph)B6>tz;@B&Sn3Hx2V%Np16**aWJ*<8u=`!l`d!>=}QXd~r+4k61n( zWrMw;nZOYf@{h3<)QA6Z++Y!a`9?DfJK%U)3pR(r1`s%XN*JFLf4=>q(!n@2!QVs_ zv)EE*FpYcX2ZjEL=2@Kj4&XUx;I#rHgT}|9EG;vH?WF8_R>u$z?m&xfE0q|yi7n-q zpm`yqElWRJj)upXePgRIv2Ro!P3t!GL%wbBV4=`A)K%%4@>1(^#=#=BXY_oeQCp|q zp()JlHJsVzVQaS=8$PvH#NQum2M3wG;>TR~V}P}QzZ*P8)9Y~tM?Ch4-7VM%uGz9Y~CZM+HN9M7uS zR!(tF?Hk*arFGHpr*{v!$V6ms|HO^U2ja)~_P_Qn^+S4Aw%RuyRhVUn{m6;I$2NQ( zyG85}C$vrN8nbfXjn?fP`^L7eD+F@ND=z_KYkXPtx~K%hNKyAD4Ue zji6q9@fq!R@Rr|1hn)-i;<r=SZXH+I@Uq{6>{fz&8%jD*pS8sdir8D{d1~)k#B;Ulr-)fcg?~BjOb@`io z)8tK%o|iP?hCdT|Za$_LDc1N%qik zPSMP(_(aG5%ziR^`#I?UR&MDh$mHyIOWv@M@3WuCU)_B3(rw?{f-#N%QA2xf)f=2*d*+5%?& zG#va4-?M5P$hnT#4DwD=;qM?p^D7x$-fGM8rG?v;31m3f0)(9+!AZEQK3S~h0T+uN zS>8!J;mpplo58WkBBW2t2)-71Za!$3hKHR5bpa)gc30y*i7!y5?pH;y!0}0v&Ah2$=%#Nd~W}(j%QP zYj7c6;Wb_1Z6Y4OuCGSGYg-zR?OCjFvz+J@Mtl}j(!x!*Uw+UXNHQrCcr<$hYQsjL{UmQ~kO&;qz+jJe6HJ;D2?_~#&#MNX^i!wUb z?v*>6mPJZqxJri~^jn8fCGUNS_m(SB9doMCVfT^|Fn(^#>su}mfbr~a?;>OZpzf@J4#_^e* z+MP9OGSbdxKX@G7%gV0)uPc(xMrTDl>Ox^bgvEUAAJFx`9SV~tvjDSp6K^&Ap zHl=ZIoT86elPRVHENjTu&It2@3m3%%eA0L7^Zc7RaKJE})63)TWY5U&cs z5l2x8j@>Fx#bnP*+#W`DXdaUC(8cME<8%dz7I~>l-GB`xEVOeLGWoPE?Ce@`O|jJ4 z3~jm?#qJP@)G2c{htgMy#96(e2$u^{+*kQoF%E2!S^|@V&9a%8KA~oa)5U@WNF24D zxU+ZDm~(u^Ws!|WfjhuPhO_ugCAvX+8ts+BBoxX9Ag8ayBC{xw)g-UkdEsoCAUS$8 zakHpimVYv7H)OF2ji#I-0GR#pst+R_FpS!;=Tly=QN}uk>*r*xV>B?)u=9v7Be?+u z6o2E6WebfKIV_mRQk19ex`-+3r~(XiYj^i*<>8t!d!LgW>sD8|iiZij=>-EHU?xiv z#gwlE2iIqpSiyr${669;bi;PkAxC;u8qvY2k7FJQ5<7%Gu&6m5!b;hg8g^Vpm9ENe z`h9#h{Y39I^fpEwKC?%PiFZ4RACb5bDSinx#9Mv@kUSSl zy&0Raq@Hcs+p%`bjiaG{AQdsvTzeR)U5-)WGGR8Ewq*kf43oev+oSt5_>pJJG_@Vw z7yIro78!SCd4o1Yc9nOzrat}1vLwxgYvTb2))1kI6|f;Y(~!t(e|JJX7cOB~+(a^T zsh%?c(M)U_&svd&m#e6@mu~E(h+k=NbeGZ74w7_8e~RM6J@Ct6*DY&5U`rR%M0P|_ zVjm+=ovc3ARt+4<2uhhIr~u!@*|TYB>}{il90%Km#>w(AxazF5zl#J*!pjX{9ktU~emtlHKL%hjxp_AO>6J!qv0^q)JZxMNo7sfKUGiMUIb4cdnT z8vCv<-aLXeR5OWftAfcb>x{kham-mBHMf#!Hcra-NOz}swAtMz`CeapfGhWn?^pCd z3OCaNr&HW;7quN1qPQVVEZ%%#`c2Ad7ludZCYa6F_>8megtJXZXH*!5E0T)5bYjV0 z8#zXweMx>@Cn?9RFw@aNuOn3&mLzRdy_hq-wVX14aGYlj)E_5sFu|^ULj~Bj)k@e-fTTypsV>pWY*0XJ~E0@y7 z;i*uoZsl>~382`A(ip+E9tlx|M%@{wd#s25mYyAleaFmV(?&Dfbf)ZO-X5wIVSB?E z*2*X4vYHc;MJi5tE~aea_^_~(Qnshw)nufbUwTYdq+GVPR7Y2^Uv?WLNF##kA-UQy z*vr;2@`CIfr?@AMK0Un+jXMOw)=CN%DrHTdsgQ|uAde-Ed%UR*K#agP+8T7TG6fW!%};fVGbjeA@>#|Ux||KY(NTdj?FCO9x`%?zeAa?#6{j_ zWf0aIe$R%h^O6nCV4{k0iWHZ+$ji38cPG>Yd7Pe3wHmXC|+(~V3nY6@>I%6km zZSNvWcPDc^ma*I^ZV#wU`+KGPIMuv_vz5KZEDTxl2nyW}(Oxe5VkJbCpc)rRbeuVjQ z)AmpO65N@O(@~F!DIL@qvP@hwy>Zi<<;e}Ig}YHIwwE^+bK(<*h`LEITr-1~UzC3D z;?YP(W7+S$Pdg^Q1jH?Y%$%=?EK@h-{ip4UjnPYwTJQGE^xQp6oUCh7Rk?Lo!Mab@ zyFHe-gtuIbz)I*7v%J_8_v~_K{G87}CdvM8EPNP&#@Upp-z%%dwH=N2|-bG0PjI$=a&&5OA~4C9<2{UFo*vxOEAgUOc-T zxja8!WI*xr%YDfSM@jl98pk4hI)f&--|%gig`kVD>RK$mXOt`yhh4arqns6z=;+XCz@$yx|P>|FBIp4YSgDp^C zD1w-wigL8AsO`ezV4;IP+fUQIaJwbTt}9hqPC~Lcx|DhpDCpKy9F5e`l*H{6kv?~ zeYs=Xb60x$$xUbqiD@u5(DH5M^V?-P@;qnL`rW*ww~_(Jj5(_C>ekc8`5*}eR_Mfy zhGFW~L22P5Ev|@x>Wf#b(CfIw%(y(%A8M|vF`O$*?5JUjb2|YVD}cHg{Zvnls*Sb=Xl7Nk20<)mUCQ&mI$3s(>yXch9WIU9Oe{Oek)Xwc9)|dG(MBGw~5zp5h$Q;~AJBhEt5wBsrB+jqTEkDLh^#_el z%E==+7d<9Ci8edXC-Hp>6F0|W-(u{Kx;ge=o9p!eR36;o`j_|S_z1`K@6xX7 z6mN4Z#~k--3tyy3=AR?y(3+mCA!)6Zv1fJ-jR18qLcCV~(|XyorCekRe|uN@NJRE7 zrY9EUg(K!DJyen$Tg87}oEjEcXx3UtP7cA-9)Z{^vx~WTPT3h1s+Ld(Rcv{NjRtEz z;Gfl2Sm>bp;+z*{-%x31fN@c3(#N6>w0C1~qQ#ubqemeX=YVMzV7MjfJQru7=xn6t z*0bslZXT56auDe8hwK+DV1fe@nuW-bz;T`bD!pJ{AET5a6Xb9(j#5^e7$>7*Y|SiB z)U@eK0W*gv$++0eOOI3Ejh4&YCCs)xGXS`Ow&K||p7HL+k>nmQPtK1Ew(3b@K9gVm zB{5#@9wqt}8oeUpBBrEft!evcRhWM=1a~zJN5_#oiUxRhQ*0u@`dYwUJEDI}QxWiF=E3VRx_G`JNgQ$?uyL4`)kj$-Fv4(y zMu%mH&gji+T`1tZNC$K>m)O`FEAQGwTCP%*s6%d39SR;jg>05vEmMjW7CRVUG}37V z{j#F#d)NaK@abb32SHZsm-=+3vI9v3Yz0Us&dokcI|8W%hDTy<`xiBnbTRhAcKp~8 z(FPG>>UzIdu|`LY*f{EJbBXoMxWP#NW1O!!j^gDT7cVON*VI{+k#hHezN zPB8>+K0T@Nm|kd&s8c$2F@r67%g3^u6m3NPpa-FX_(JXtqGJd^59HAGTPE3zA`;7w z5BuzMoTuoR6{?Gpd{Wsk8}4nmUTo#0k~Ghorv+s*Y#gVoL-3KJ8jlI{ba+i~{yO}I zMgkVuV6oDmkc#Xnm)iYn5@m?6bmptlNcN;M)+gL+!pHCCzQ_kTK0uqLWjIL|OEs18 zAheF)HRI< zh=cz$*{7U}X^u^u#+1Dy2+1^9RTbVPwFmH$N3`XT0us9)JE$m{0X&YJ9JEf#l_rS| z&tl!P-ZAc+azXZ*Wuyq6+0WkT1Cwt+7VsDD>y*fvZiiPtav6(J>pVqeC1vcQdAVO zS{L9*BYdu->_C=wg^b1tK*WqzX~mhWn1m8>C2?&&0g%N}Kttm#36pe%@n_2c?fI^o z1t-M>Snq?U30a9`I+LD(U*PIr6Nh9prf>W(D1b9K&xKR`6O!z?@eY0xZ>dEA;RPsb zJ4}%>_#mP{+}UivXa92PW-~d z$=xPOWGCZ`5$D>Zc34~4FZmhUEY3O>#pMS!)@Al+xtN#QY@t2e@F=wDpZ*^(a-oNx4bKE2w~DhWeo_Y}qI2$xD5SH(i4+oKBs@8#tb& z(*-M!&%KQK$|um2sr0tOP;Kig6il(k#Y1Du)nuR3suc6p;V7{#-Z8F`*_q#)-xE)4#q1z-w%fM_3)?$;0TzH*ZQr%TogLUYF z#j>+li{oN?se$u+r|+_-;=8K_`G9z3JuvqavC*O%a-ZgW6uE()x0EBpw)clZ$z` zA8+sOTcBUf)0o`RX04v^af-e?HteU(WM-Zri5YmaUvHqc7dF$Js7wUIwp_hGvPMqY z9k(v&K8jAvnnnR~WheNx5X|kI)|d0*iRi$fj;5G?qxJq@{=$3T z{yTsC?pyA^|DHd1+sVs*=QIENC$9L1tH1Ebbw`f){z3oCA79_UICuX&|LsqTM?dM; z9NKx}zRin|ER-G@?jQZ)L+|_c%m3-I@BEkFz58bmC53PO!4v8GfA^37@yEaRU%vhK zd1n04OD_7%7yjrAFaO849$7r{zx>6&Dc$?|r?32xulDISP2rzy_@ND-U*7WWpWk%%pa1y3x%ub2`|kbv?^o{n-~LIm?#fO3w|2gGtT29{ zzT=N7$h<4PgFh9&lGv|4cFkLV`r21oKYiofUq3}ZiSD`QL;aJ+{^7Ot54B!FbKk$_ zSDrpKIQB=M`rNS4J$2ir_Z|FDzf-8}xaRtE<&oXfg0nW21yv^0=3Q65b=wZ>-hbI! zfA6We+ZTT4pRM`KZ~ePJ{J{qc`F2lc>a#LDnj{Y%OWxZt$Yfpd-RrOX@Q&-!%aV>a z^@B6BKlsS}AFaFE<$mFOlw_G%H;C$e~JCs*G8Cr5wzf#13B8=v{`&m9}=I@JHqM}PBQ zANm)&u3Yz9KeT+~PaM3dd4IiOHa-5xJC8lp`aAFZ`G>yx=Qn-(FAh9ZKhix}dEd(E zWZRYVA9=^VN9%tXx>we>H4D-Bgx5Mo$SEP*#BnNc6)JA(-)s_ z4U_)TU~&8-!>!|_SNLq}pSM3NgQPDbS$+F(Wod~`zply^Tsr1=3@Ok zv@8-I9haQ?t2(-s^t}>K?5|#vZu)hD$|cA}w;hSWWs* z!jH2up^ib`$OL1SFG|%g7|-%Yg$NF4t}f|EfzCckzt$XMeS-{;EFk4fxKdcM&pqGD3GdBzrc`^q9QdfvxAu zWM%c07hk;Vu5)Gb-S4(IVeTB6yn4P&AoX=J`OCkA=PDDmUHy*MC;OxIaFQe3P?>NR z>6t2MI&SGEjP|NGA(`*b>6wKJx%m87XMe9!ExnS9IV|K~HnM*5&C>5xz5@@t-qGEo}UkP#a)<@@UKP?OM4I5F?E z=Es_nb29U$BP1 z;=gPh$2fCU2Cd(#j0&r4iJQtqjYPG$pt~TXwKbyw-L>_lR%z>0cNMpyyAJG9-8GR3 z9Z0jjMkcvmS(0ylb8gq_GxB2oRodPer*%*Z-z&c+IrUfPCjDfj8tE-xjs$+dU}%HhUhvWY3&=$oY-f1X9i;g;vts zJy5v96mA>#lh`aK+s@b+%B2UUXFl%fA3ZvMTj5vt^q+oOea)+7wnS-$mT;b8@}+5B zaA_H5!+{2^gXWW1X~*A2ezn!4E@jS^G~1wkLF<~OXEvSi0k-h^V0s&=HjF*g3-6pM7EQ^Vb#4Ha#P917&<9lwmS>4Rc1N(i~`sC+9S39kA8h z@HBoOyT*^lz){yMtTvcOKjyR!;8lEDzJums^(@{q@uU~cIvzTg?<^VvzAe`kWs=WO zm)E)_+VSfhGlVclSek3;)7@?Ke-um}X}rdvqI3?U@MC^cm(Q0NUshlFW_2)lX6f6> zuNS{In49BlZ2&mpaHYM-d+ujlyAVeX7_ zV0QQI6S>=Dj?-Ud_D@U2IpM<+%)?e+WbslZzm(BwR3Zvt-Wd^jyPP|wHW3A*o?mu{A?`v5BaT1<4TZ;PF{6ud^*~i z7YzJYmU1uO^olkMmB}lN&a4fdc)2*Y`f{#IwA zUS(zJrI&Bgxy$OePrUTfO*g4b7C!az)|I7~w?1>6DczIwljBGv$i&OS!i1WPuK5&{ zyZ9=^=~pwEEb*m^)2BDz{0cIe3$sSzft|=ClM&yJn8@V7i>s%19Y3yfQJr7XPiPg# zC-cNJoK-&X&zatDAd6`{=W4(F>i-X!EX^H2cfB~#U9Vn9ccE!sFO&RnB+2Izs^~72 ziR!M8z0z(6t-z(db)vf_GP&X1uLj-qWRQuOVTdCM=*9$qTl#FJ0ZUAdcX zQr#ujl#oej>oe%AiA*NCE1F7V(odF!??|k)`Fe_4mxm{e7jrmt*IdwDOpcHV?QJ3x zO45GQ-X*Iqzl9QZ_}8=S-~5kHO_yGMQ{9!dr~=DqCQ=)_ zuzH7WA1@a5Ttr8DB!7Iy9>Hp?qHu?<*pZaH(s&0E8n=SD&eu|6H&$ zG>O{$G1!mK*y4>kS$Z8$dcXa-EIcBg&+=(}bZ3UI2p&mbh}!Pq_x|tCjrLN3>m4AM@Mnv zbEP`!hxFic_9N#wE`+iy69T1y2Iv&t>V#cs`NfPDU7pc&F1V~NGCE7^w47=F4p7QF zJh&L_7`@kUR#)nnm8X!Pr`&gllYntkLs!603b9^Ci z;p{(b2lvF**~FQBou<{&W$wph8&&iAzM~b0_TX~-S>vQeY~q%Wv`8zOf6y9Bk#}hh zU@ILnJ|e)(m~CRbrDD2syQNh!&G-c{XsQw(1_)C>x_aW+Ud1)p;8@vgSKKX>-!9DkqIN z-k4Q$O(3gAjZ3RJnb~9JA&+=|mfzL3YB`ZH3-caL$+eMj)#lP3CBJ5ru9!U5G%2Ga z5m)_NW8&P6gn7Yd;A*Z$+7~l4)`=Dk|wWEeG6UzmZm3+ zC^!oyM@u;4Lhm^fnphN)_l%pgeJ8B_OPqy}OTrJaQ5X`pT+YdJPVOlh#|$CulY#Oa ze=1FH^vb=Fp7e!%ZzNI!!faE-R<0?Lc;ZsI)Mhy2VUskn3>)Ib=r*(XbW|8>YA@l{ zG8;;uO&bqyD6x9v^pA*`?A5s$CE*o1*rnig+YbO<*0W2E*TGH;0*746o5=W=;***W z2h>GWbWqki;Y*^%=u6SZjYBe;oLxOnmWac`^wF;56@4jUp`qJO=6&SnbtCC8?dlprls>@Tv^0wT zDF>se;~NGXX%%@=NWS>14Mu;zT`Ddb@r&L>gE^WS~&At+Cd@xq&QPto>J!0;op@A#lLEJUXq74l? z60zLqn3yS?l8U84YJ`4_NQ!#&S!JOfgLX2EWSaW|PD{}eMXX-DUSOiP-jV_%@<=t3 zDv>?YBMxQ;DuQUp5X6>}0|Y*6B-&8W4w1u;D)j{{N{rPwZ!Ur?9cRoH?29ifnngro z$8eiHtN|ve^q9(QRIUtiQsKoc@5o0n1W+GEa^>EXPp5ZivnAP>oU}1Gh>r@Lk%vYg zT=?gP*fOjuzLV9|$fYupF}yK~8(a^JnsLBr*Wxh|QmaHr=ih4$h%^;SHEE8bqf3ZM zeO-8CpbHJeJQyvSY)@Vaze{jAMbFanXc29wpyztthwJ_+v>XK|&c&vq6%jzRhzmO< zFF1uHUmCYH$8yLy<0v}ZrA98j*zsaJ9`c@2IyRSEg{_OXttX#&wP>p%j+1)04Zs*ff^FHyckdfHW$L)=WPBB8$+JSdthbsK1Y_&%`&v0Klh^E-#RlaJro@cIOwxyGXo0 z+UPC(TfulS_0M{m;(f!D*rZ|$Nx9$41#$rzIgxr#ZnZEYrbl0TDO(GO*A2uwxbl5v zG-z6OvXgCt#GBaSIe3-ojWScoXBS;^EcT2j?Q%LRS0@X5V+IEOa2%AgIbwF6-fy+A zTQSEW#?LO}4gGw{c54Z8V*`dQ_XD)kE8ojw|FX<}&|!nXR{0w1n{8MI-hOhel?5O3 zGDVyfcG2+EHEM`eys;b=dzC9QzEMkfEs)$MErw2uJg~4-Kxy<|DpN zUoS4F)=KI&QLWe_X|017ZuRR~z9 z6{o}!D+CI9S14v8cZ_yr`zAVQW z3k%(P!x=q>v?dRAT5?LC% z${Ad-i|j1B#QPrYQbwUhY!ZbIe^p0}ld5($-Sde33-$7%E>iTKvQ@XdkpoF^__Qs( zbrPw!C^9DOJE{n1lHjm(X74@A+Fo0nPRv3Mk_m@gn$vM_0d~ZUxgQduvWw$PTRlfK z81-=-*3)JgS7Q%j)G4WLy}5;=2|4L&h?b?!^1Jd=dKXoS9=0>|r>JI!DYqlG2US$# zA%6M~dq7V2lKqBm(dI{U!EwX9X65iytRcM7docO;J~OMO?eT)Fd!7w_Z--|$9C4?NVhC+3sd zAdRe^0t<-JhI1}>(o&C!ZwQTrG2)*uAh>8DjXih@vOvGx;k$y!fywjCcY|0Nmecf9 zxg=Zme#82x2@Bhm1tWDvwR}=?RPwG_7k!MjwYCcPHvfo8$IZ%9Vk>e=#&K(Q%Pj^G z$#x7E-4%$YXx9s=DyKlTbN!;wsw38iUMy3>vIZl>i z5Wn?fkL&|uRG~Q{*7Z%3OHR)ID$g1n#6u%79A9Z!c6eNV+YM~WIfd8hD?N<(X5Rth zedLl#WVv$Ur4zBTvn%U|*l3QDoi3&U8V(%-LHd;ES%f`rQrB;0beO_3TSC5{K1WGU=d)xuUs!HkOY{+L`~+N0OYg%e+^GrZ;dC z{RjWm#a5`#159gNo6k^;rDL-hxIRJL?Hm&i2URY>hO2{s;3D%tb_0wEB+Gx*UgQuV zf|F*_G?Ay791<^4$^BMxf;xH`6YQP5!YKh!Ohcj-G5cwthWjna?`*&vratZM5ErAm zC2!X-E)Cr_cKW)$pURw2kQ2Xf|5zkP+q4aHv>``)*8Y z<7igksS6dbN-7k1A_DzdnnMve4DXUA>Wvkmk4WrGnUM^+9K|qq52If?Ltd(gU=m+! zkvSj7=A@tpPmLLFc0(JbmZ}k2wXO;}HzAQkESXXj0gM zvOf7roF*TtlLtW@L$B!|gR5G9B;ZooMpo*hWlQE!s(Xkp(%o$_-?p(8S+k?T7ds}c zhS|F;8xz&VS5P{jp@l)os5g#;&oL*UjOfLlNG7fp8i7HM7A59ftn(on_#%>_tuO=C z;XwHAUL0K&)txed@2gn0`6kYI&6j{~5YvE@x~;B-Gdn;Hk9d(|#dNFaihos@u}tki z{0)&OcbATl!e&OvS(W0OJFo|5#T`+!avvYCpkeb}m8$p~^ihmRsA74CJIJ?$Y8sw8 z>X3zWmT!?B8M-3hxY~&m4*Tq(@4dIIJW*?^gcp8i@<$HQID&{sJ(0HsgjSogy0%`} zlpXTTh;cP|SYdvx@eHF1r>$MRP`2K&4wHp7ppGOTZn)?TqI6m=@xkH4Z>+Zi5#aPr zGsRs^^`c!Fl^Vn8TWM-h6p)aKPW+T4+o`!#$P9P5QfDevG33PsJfh1yZ|wXeDfnoG z7;`F5hC7_q_3km#6(50AEX`aW`ciCgX->#MW6wAYY?bz`%wAa@UO)>o(CXxYT#ib> za|JiFra%$Za7t&MpM!mtUoF|hn992VjUZmr_>Hm*j3?o}t{3s)50H!rHh`n?6_676 zR|ii+PPV}ZbXmM7CDIEnB7aX;#X>+MAP=uDVo9Xg6Y%nH4p(#;g5bx*Uf4}2pLilIz&teZ6iaPfQbqZdAkh#zqr&a(=ba$x zo`S&2f9C25Gbu8jadE}_XmrS4WrYPIAKI|m-wzZbG7Xp(cN(EwYHil2tR324nYCk0(chc6 zkd1U>4u*o0Xp?&@te<(Os_sR&Q5uB$-kaPoBF946I#)+ zR-1WE<`mh~X&&O6E<~7cg<5=m?o7DNZKo|66rK<5FM~dU*KRsZRCwM7iC8{OHR)G; zan%q{s<^Ruycs&U1|uP!G{-XjQ-m}6h|~D*;ieE1e?Y6VlPpwkEUf&Z5InuWOYDmh z^KmM)5$_y$4Dl047Nf*i&g7n!$OAfm{fv;%jsv8f!t>mign@Vx<0&WnvT>$M0j5JE zRbM8)#mDYxH{r}pRVQqUh*4O4yv$AWp08p_n^t)W=s;AT2G07J0#PUMVJ;p@pq$`T z3b+U_vfNA@K%QGA1xM8j=i|*r9+I4<|1})rrRU>v6GcStd~F4?Du;qm^OVd#E+`4r zaG7I3;6|&%B_a<{6JjS27!fmQpT(~57j{v=rD+Pi?peK4Tw!QW+wF{iH{NrQO##~N zX+C_iWF=4VKnujY#sL&ilfT@K&XzNc*F>H?HJ_ph&Spw>8Vq%u2K?kk^PR~sO+3e+ zre!`WPrA(_neWGi-Zz`J;rSq6T6OOV3{aSSYXd95aTLXighIW%qAQza4ac6Vx}&k} zU%n-2Ua~H!BD(Ejg<(64t2(@U&xCz8^$O~}D3y*ME1+>KJXGkbj598h9{_3^EPYk; zYbcSix4@CdctX=WniyadEpOIvK8(5=#`&{9y=8jO`^#>))gW#$iDtBmOdZ%Xo7Ib9 ziEYs{)LPk1ot!3RJhtf=<2t`KiviZ_gyW!K%*a9JbtLSeEAOZ2Z{hLOJ#g{z}jwTaj8wF|Lz`S)+& ziDRe9Ge1d>4tVym{27mI0+^A*Jq3qhQEicP@*t$m;x>c+2^TjlhW@;ng*k?AIhKqK zuaf3IL{-T$)0GEmNTSzO1R&moRJ4)c1&3f+`%==GZA{`kzTT^U)^)7cDO5L$?;00t zTF{#|&x7r=KAL=$14NP6G`0~0M6-Mg5rhHftXR%?%!zkEK#E4<$PZG za`!sNNaO)PD4GBN7Ju$ycl~Ae)b79ke{8$v)`vd*&Odqjx4!m6gTv+d-V^CHhv$C! zude)|T{ph%-j8lBNa^~+pw|4dp>Rjx`e@C?UGPA+d||`8p8oNzyME$|E5Gn_bNTj< zu3bDjsBbH5@-;cqjpJ^2{Shr*}m@zXCv<2f8>exRSzHBSsQG+D|+HY8=2Uj zT2`4<+Hap7jF3$`r~LkBU2TELB>ClU`ArZ0T6gWb8+(sReN)04^x5bLGe8|zj4sI< z-aya#BNU+=kN-dN-Um#st2*#J@7Ar->rz|&y4`LhTefeP8mVLqG?EP_VbQHpS#FF& z%C=-2CPZc7ID%w%71oQqNtU@)ltf83rbT21&yu0+nAj+@u@gwfGu}zc!pS%pXC;C& zNxp9g4$I8$%EAD^8{fEC(-~9WZef#e3yuR|>znok<-7s4jCzs#-rplWye(i(z zUNc`#i?8ijk*?<7xNhN!EjO3eL9DIe-@9V-SN_3&^~En<{Fi_9{TrX&?Q+!zcb?>Q9b*z=seF^_)AvI4O;-y?al2>&{n>J$s;7=fN=J1DVKc z$I{broG@HBZdRF~SJ=Mtb6>uG82k+M%6< z&)uBZ7_V*L4Jw-)Pd5I$Cq8lW=N@emAM+LbHR)`rv~}FO((E2P_Q2EaOKuLI|6Fla zWpeScVs_xZt&OW@i$9&2H`adaC&;H0P5V{ZnWJNWcJEqkbNXh|Zifdx7e3z}n{TFD z>($xzTvwR8+QnAPK(?0$oDNq#z8mB@PQU}-Z1#H3omuLi;B3;;(x*Rt>#gWDHTUe` z@GNI{Ck~FN>Y4NT`CD%th3zF7kLozby9G23Ax#2kDxQe?jCzK1a=Y3FyOm#4Pjr51 z@RiD`!H2_OaN@)zdp;dFZmN1as%tb+D5#CZXh(&!*6H){1gI8td7;5!`R&DuY@zsg zyq;@bAjx~+h^4!!sOLa_o_H9Ue49K=+hct-YGQm(Q+0;)$m={d&SH71&Yf!7WLY&F zsm**WFH)inDp6r_6|N>AFisTX;e4xJm;W^JWkC7hb2re2oZa3Vc~n_EClY0{efy_B z-Q2t5+UhqGXNo!HJo(gRlbbdn6V*>rt|mE+ zo6BUchASK+o}m8^fd69noz49 zd-keG^xXYCwg6*!%Jc9~%bMJa5O*Mx9cRhpAX>M1{YKajRhb|R;{WqxviIN;GSTz& zdxt!pQC9nBI2^As8J;m;nmEXL=XmBmuZf;HUoDg0_`QGoMU~0Y7Ugkb&t*?t_7pM^ zWD>bWU-2B7D4h^ah>jFwf-M{BKrOaUyvWITY^(C8b;_tAf56h^r=T%0fnCHc+Jw38 zf{vId9FBPF*?rn{1!6wUx)Md3q02}g12>0UCbawoWP(225_Ti^Ad`d0M9Yh?G_n2Q z9xfx^>i=Ys3?%Y+W44Au4Q05+;yDlt~i$?W% z?(zboj=AgL3C4-4j_SGiRWf1ZzFe8eneT7z!oDiq5Sh%c$b=!n+_j=>I^y%&-g-))&s5*S*T|ACt9yw`8?j84{$JqTN;&~cIygsrJ8Ni2bmA$%)L;7dCGWJkT zV_;Wks2<|UWm}I!T1qp6rXAUFTq#5G2ct4I9bTT*{K~^}KI%dpU#gr~9(bzfI9Sei zN7PePdyRRWa{iRA9@HEx*WE??lGOQv5aMwX$?YeK>fCL-8@)r{zQ?i|e4h{RylK4h zn!9B2@&zkbqr->ZVg>!n0Ka-G9rUHaNS|?f|0+6s!+Zu^!s~4Mdes@6Uym+ebkRA? z^%FO%UgOZF;)ub_Qx1ItTZSCQIM-!i|Bsrd$}zBLM{yh)J=J53_7ADMC=dF;tU=xw zR-H(-;|Qmj_DBnoG za#SbHr@EMt-e;l>%G{1)H@9^;s`2-7bD5vh_$q3 z2_3b3zYx)!E#m4n{%qKTHq+{uGiU@pe(=BfhiRrp9Nc;Mt8u?S|NjqVqW1-ilVYLJ z(4FoUR8<)#%gx43n+oOX<%pqYPXUdyRdDOAjYhGOZm6-Xv5E1kl3unqyd>t@&%9*x z{~IFzOO2C}OkONtp__5CNA+v-?{{dmt<$-Ssrek(^WsmQBa?#%iwCdzQEBtS#by2+ z^dBH-e*Fi?{9iWf4=5AkBYWAhONVCfpX=NuJRGj`v|U~8=*jea`9_aN?KZMKOG>|8 zCP?_u(B)xr46nFKPxBMcJri!C`R1eBR{9%;={y}9;^p}4<20=0wsU@B`H>HO9>4Q( zO~WQnwE5`Tc2s7x4T=3k$}nNBz06zWk@soD#|L2%-)b2*5}~|6ue}v|1alsu8|m>7 z_}usy=7CzI8+qU9b32Wz^2d1S7KZsF9m1>WQOa4+c6snzH`ixG_s;Ft(V%*Xy(z)w zVbz7Hp!O4QI4aWV5wD=>K(t+`9u23fTryFHx%~ zmJQ~}?Jt+D`87V46WwB@zY^brk33({^aj@$PVFe)FdX9}Um-yAr6ImvphiqfaYoXU zd=QE!kQ^?NF+O^EHLdCDh&YY6Kd0Bx&j#VBjVC7Jq$m@fl#VMA?zS{m-#37KwHj;$ zhfs9brv{OqBkQ=I3;Q@FMFk#dgH8d@N^vb7bD*Vf6v|JCx$t~nxrx)tZp zgoBFbixMs42cEa-dZOXZmN6cb7C%33#q$^NHV{?I+jX{b6WnO*K=ANWzm>Xp=cQ%5 z)_Fjbv`8?di`fTz>IwWjrNC6A-x5!1%TjY&902-lwGhqO!9->+2O; zhdSDXC@fY=zCLAkR@|CxjZ(dCwxL34xJk8@_wtguAmBO4W(_WV%A0-IJ%gRXCZbzL zq~%=2Ikb104g?35OX{YjCs6=n=jj{=ME30@M5@#sy#iOn^K0>=tS0l}yIRDk%mu2B z_`74vaWh1iJ|hj{i1(B;YExn^2yxB{RG=D5IZTeEXcD=40#fsqbO2Xr`f#GRa?sSWYk$nnOJVmJpPp=;!*y;O6+ zjW&VO;xJRB10|#FM;u{}^l5T%O2sxfL8#OqD_$1qU*2&15`R#vj}c*bYb$fuHEWQI zcYrR?h}mMSD!Ep*a-vy)k(-C|pdSV(3WT5`70EIT^F)GFkauA*CTN+nUVJUbRH5Rv zMNe(KHnsJ|Eb)n_V!T+;Oq2ZD0lkD{AcqGt`AEQ6k3T-fOCMq~?cISj(Xa`aC1SSS z$!av~D;`bUC)3|t6nUsTi8wfclq7}4LYs$k@H|I+!q6s1(lc!27x^4M-!Uhwh>OZG zdOs0?yfk6*o0>M6Wygx}qyDi)-mez%WFcl#Y*3?ND;*JfP*;0aY#A>Vcp+aPoXu-X zh>K*11TxBYQkk7AXsc?92B zj(Ad)x&kGH=uw9FCFt5H*Nbw5a97NSaK;v8kTVj;VVXPw=gtr8Z6v0g=VZFMD&UvC z!w8^r)v|f^wA_5OpH|v(V>VT>nrhLH%uJ}h?hp@m5*?F#I;;#kc2E%OB-u&x!6wY1 zaq1X&(hp@F9JH{8j2<8~A=k>x4D~~mmOPrpf2JzPD(ZoIrZ(bUF^bEVJW@mD1Q^ z)f26S`Aj^tr^D@9bC`iTs{!9`t_8Mrl1-M{(&bFIXq#v3fk>D8P~kLWH6a~X4_kkN zhTYv1{aUUO1-FpPGA9<2ChOC!g+9}9xJA~x5+P%xf+ONlTMbsc zu0A(Xr#kxpg42t%5@+e50(-VjRw#jnRYT6zCpE21!!Gh|7;(vFNpwO*SZJAxMS`5H z&>mWLMhRR1d=?fpDTsj)GRc_Ju!r{M?#I0MoWT?(W$%N|ZS*I4hBlZqB3^@G;E5PQ z+AYSi>blYc6_#@6IgBFJNy`!QRxt$Hm}Yy(%VSl4Xv}e&e+V&AbeL1RzcwukZaRU2 z+$mc{-(mZt<7gz&4tCM{dZ~_G%68hBnlg79o9jh}2dd76>4d(i7?SfnF7!SfG$vS7s6$ zx*krOW#%ncq)mvGL>Ahdm1V#pe2hQID|dUQhH05gZuHU&H6IRV!R_|Pxf6IuiCzd` zE4Hwh97DqiF$G3~bGjIKIZii**FZvGXdsmwcPNZL^-+jRt9mR1_^)qplhl=;&R8cC?MQlt{o|Ac~Ayj_2xy!W2Qo#Y}o>T8NmYMw+P@ zd$A*y6o4bsbV^i9W07KpTltmV$2u*Ns#;#!q>@k`Qq5y^SAfjtw-gBk7 znK;S(ECCvXXpLdUa3UexB8I4ESeroQ-dU3V zqCA`$Hz%gTNV=Xc8u%nI*G#_~`H_X=vwY+MNi1}^$Iy+qIqCE;dS7DGXH_i+L>EM4 zz>hL%$jBkpP5VS~uq%f9RK;`Gl{~}pZ-^(L-z}lbfa)4F{v0vP)?9R0C1D(&hu3cA z2NJ~cJ50_V(Lt06buI{AYNTnQ+-Wq}4M;I=(-u&IITjpTHEIRuQ*Fvu98Bc6fFi)nm%N>8Dd+M{();P1yF4^gR#2(AqmV zn6IN@_M+CCXwKxv+7OmQ;@3>S^T%>i;AT^t}cwT{!5 zuGcfeqQs5o0Gi5B0>26}?JFN8$pW2*h~)$PoeGFMEy_3q8e&y@<(I zZvbe{S}lO;t%m?xc6v;q>5{pzYtow_7(Z1}qh7^Lk{uA8EnDL|>yrmOTOcX^F+Ifx zW;^Ux6rxckYk72|;ZE1}2NJ|R;>B8dBW38&mT}KrgB2c;%)*?-EIBFkRiUXpN*&Jl z1vliHQKCyalN?zc7;#SnugQSpt4hz1D3|C(vv}GIURh~XzUTmfw?zB*=88b$B+T_QMgn{13 zrLvK^&t+(=dhu*-w;w6>Nll(zcy9@^a=ol1<}O!|IU3`wB=qGK}z2&!KP50y8jrK2iqIQ{U(Ja_uc zhHFw(345$UJK0Bt2DoNmIaIAYw5nCFu{>a#SFWsbt>ZyyMj$o|!(b!E_#)1HeQc1x z2%uHaTy%Twuj}154j9YLZkR%XrO}MDG(TILx}ryDU&=yTEti|HqR64`g3Wy*t{If@ ze8G8N)izFgj_^xD-2P~a&y!7{AXds4QA4nv)nBV8C4Y-jHR_KMIf@3Elhlc@$mA9Q z9BP|{5HyJRp5%rp+!vI#pb}4>i?UiFA#0Mpa!w=h#THRtZ=a)03dURJ7Hufnh=(AI zlZ)O$vMpyH4|H#1r?PBT=hESh3Lp4Zd{-%RKNY)7YFKr6< zaX(H2dx^zHy60WoFfG#^G*fFOwprYLZQWp5JCvMM>6I+9eRRb(%!)X11EplVBrV)! zfJ1nSxu~F$a>x}ob-E=1Hb~Z!nR>a}-Y?ljw1}?tHhA%x8ZWqJgSGn@>D+5o{Z3os zJasYYlOW^2e}LPT#qgwR)fpyqhnR@J&N;`C0*fRJZ$(wATu$8-dGA$bx_ zO7EdF*lCby30Id^Y&cCh3(T-&>oi&)V?<9RqD^VIg@t5RcA14xiM9hlCq;27nKh5) zUStRX*Q*}^kWB;n*+1ndKs(`i1HGGjhC&q_*JMtfo^LxvosWxYT?z8j3y`?Jw3yLb zhhs2hRy|H1yM+wJACovkCd-zS4n;ThHm5d2WpG(l6b`b?F9%nSSM6o%d z?QmEt&I)MPS9C4cj;_RvvO{$-XbG|Zt>jzrkqZJ%O2BbSB>r%c|4X@wpe~cZxcJf> z6Uq=b^6E$#^33p#G-8(J%dkZP5qS+)Qil0r+19na77h$^5Djl``0QvUp24;n5K9b# zjC7-SR8CIFF4J3`?QFm1gFp^ZD5F4h8FUh9pIvm0Gb)YHN^;P&veT>PRdDe-yo7Vy z)oBtFtD-Iqs`T;2$l~jAPgrRrQbit%*I;=#NsbY$cvtb5C$g`iJ3~A;>FTrw-H<2c zS4YdE1D_YWI^i6@J16XO1}R$G(?fnWoFltcNy)H=?27>9JmW(zMv9KLfZ$kYK+w5l z#*@rx3ye4MInAiq8{24+5}UEci%b;_=qV)7Q%0n#^mP-;UY6~Wo1V7lFUtCoIPL-a zVlKLx?d<_Rl{wGdfrMGj#N9%B$X9l!`^l!frfK>-RoaEp9NNc=i_(F!H~I09Ra~1{ zT~5P(Q+{;;`?e6tEM;cK^8qy09V)VMuKonA0!`+3ORDpZiUv_=KcC8+hhw|n%(cnS zR*7i+MbHm?6=l zi%@MX!iNXXd8y>ZoPSMX6nnd-N|my+sgg?4kUO1TN5S(c9jeNwUAD1k`AK80$!L2T zp0c`Q;k>!)IOQ{U8GYQ&WMx_Lu76}KG4h1*8*1UON&A^p7c;ZyZ%TKuIcifg%j|4d znnPt;cA?(v_=QRq9=f^S*JdeB&3%SfjKV5O$dA>6>)#}$REKL>e zs!rWL4v!4nF}0vfGvMdDvT-+v4{(Ndqe+iRI*_yxG>#IGKYJ)V*`;+?Jz#Fscl$gc zdnN$NqfUl%DHeUjb396B-GGcClrCXQB6V)L2=Qm9X&^qM$sXI&a}F6)`xb3gntUBu z`LbZ21r!-HVr}f#C1lcMZ*^6F;)vl}bHRC>7Rz=J~XG!=tZy z=N13$L$3OZ|hiCP_{6F4*;uXJM{p}Ae9=-p}%=j&T zvhnYJ^3AUuJF(#lKY7<3|pw>(+eaCce=Yz9iZJMzSB z&R;?&&@$RzFNa4?&dLK1>@R=$bLpRjB!s|NK_)aM@0`DL#h0qT^o#F!|Mf@9{mE+b z`)$%;ue5R9bzgg5b@z>l8`r^h#IJy*j>CW)Hzp$!Yoc~dQv`^EW-OXV43 z)}Hx#n(ldxE6ltv?ahpBU4L}^{kNsJ`AgQ7UeBg3Nf&LD$?r3%NI2!pHBv>X%O6^8P>h?Ei7srKkV*H+^Ws;%9#2qo)i16Z-M*``fo2 z{lr(k^3*?=JbL)~+ve=8pZMQ?>do)2nz1jeFP*sOuV?PRsW`GBj95)U&7Uw@Z z|Jm_Q zrX!8k3p$o+GiG?G8Ea*#)3v?XR9j_C8fTrERs8edoHM1Py3SLR8>Eq!v?|jcYCb>D z#6n7OlIu$TB}GH0OpRBLVzKXt1;}gnL|v#n_O834ZO2tKS9@1vvNU;$YP7QVoh%Ut@8Mm6O)gtOkU(pWW4i~^qW85d48-|E_Y8f_moee zXWw`*R%MxldZJ7)vbTMYqmoN-QNXOq4L2Zd6xUQHe0qCnl}uENb7=_~{N3OE&}6cg z61N|`fK2x8U3w9td8=en1D$XgEe zxQQihwwAW?^jEY#qq+4;!BQ`sP}j#YO*2>cqlBLi85LLuhn+r(y6D^u2tk| z@7}1-hu-RoOOoU=nV8tS_Xiy(JN7Q^xnb$xsdJlc4>jL`?kO_a{`gbhT5jpbAK$a* z)TyPV%P&88kWREbQWz&oOV_G?X8u?FMwH3<9dTIDicHkzfHpj|R*e(R*6)!MC?qb+ zgfO5od8xT;BopSY*j@*VTlPG~+=Wc!ML{NVraWJ3EKW4NbVF1Jx=8$7SEF@EYvwv^~GPJImh#yT$Hv`)G{ z7oDj|d|_HAJNrANiJ^6Mhja+%whmPG9xD#ZnNb^tWo#IZ=q%f5 z9O_r1E2wrI|5v`L_UG!)Z8~PD+C@~}Ah+v|WnD~o#SSAh)!n5$^60N#>nacIR&!o$ zO{O)xoKJay&eX7OvP>_}uR5MRhpwFJbZWWK(KfKl{GijxDyev}{N?;ZJx2|zZs#bS zyypNf#DF^_M48;tQx_dQ>?;yIO(1@z6kWl4&=s6UkMVZZ3Cz%Q6v2)nx_oNe@Sa?M zk-Fr1k!tfW(nT*)UGSoP|Jzl*=8fx!x;h#P zW#A6WplobEB9mN)(|%O(U^&(;@=jZ9{LFN$Bl&Y4aiP0j^&e@w_3P179Py)VvT+B z?b*X4zl3h;nB}%87rGJIK7l>8%4At>x^CMx!8a(B;b==T&U08+UIh~q6PNK;ijf`H z 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

A8ZwierklWxd~jn~ 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

G>&3;3$2l?H!?nJ{^!#Vwc10q?Ac;!^G-6D5ipP zQ-QenyZwFBq#C$j_Zgw|X0hnwo|j7~^#L@kwO=Lb`eM9uS{9*U89+_S@KL{Gdp)$s zHYJ3Yt!rLGVVSDLl3TqOKqy>q^b+Ptf?0#WM%l(K{{Br^4 zO#8UR9zt#?=kNptc&WRV5zQh>bt{doRqc&OaTI3{He+cPvjHg#M2={!c1}j>iwu`p z_z;bB<{pdV_=P+(FFAtHD(%#@>htQ;uu)QvKQI7=A6!PNZeSF&>QyuiI(|Ag4anqC z-#TdG?=Y` z@{8-VFR`82MRuwap_oP{qopSjwwJHNXugt?f5$=ikuC+Mt+T_oN9q|jG;_^S!^W0a ziG~r`O}GmF3v|MkGY+p$M(5IJTZzSqdnl&27ztIC8HZLXz7*ff7-#_Dbwdd;5Oxj{ z?;TQv9=-j3^aaBx^k>}eR9Pv z)<5E{l{ztIE)bZIM7``fN+j845bUPjE$%-p)?V>AlT4Ifq~^SCk`beX|UUS^A--&sjyZK zHMX0b=m(>7cI=89RmZb>`JS}D=$@*iEPkCgsc*W)a`m5FzO^>t-Z@Hr)VxMUw~XpO zDcA<1B!?6jT4HyOLo2f7>WLk4oN#h{UOJ27kTo7T)0Wsf`&DQB#tHgzsu+iCbqa*QY(IfklG5Cs$Rcr5rUoLHMXHVIbWzCC&tn&NXqX81X1GAbgDLEBpH)3WJ4*n~ zBn{{BiO1;T4Fha7g-xi+3^){MIjVkdh(-2+>rsk>5|52Ejd8=$*^n5twtFa^+px%UUcbrUH*fR{R`(Yde-CLrpd)BSnWb(W6aucsSlf zGT5khN}kxc5)|oAiuGdbwe{qML0U)$O+#%!)?eZ5O;5R?NeVMs(@$GOHVWG2eOq>HFGg=mF`^ai6Gy#0wq7Y&Q6#g)cfOM;0->gVZy<)Ru|)z(N{DFUK6Mc!%(3e&wLJqSiLBCPB|Iw z%l(;5Ss+|%^Ej{q$S(4=P%QZAJransFlI4AM*~{vJTXQL^@lr2E}Bx0IWU|_^&uLqQ^F0;5Ym{NJQD?7QeLp!h1h;#%TCg^FR zkXv!iS&(gAfa(&D*@AdIaB#AWOvsmUl-dHFAQ=A`wg@di$p9`Er!7$jC$e+^N#g0S zJvVWF3Q=f5lz9xwN4aUuqn1S)3WGNFtOE>`h2WGiQMQyhr|IVIs-x@zH^q>PqiFj4 zq*a1JeC=&%G;M2x9ptP39xR|K3|Aw=PE7ltAz3>`2L#S#d;(QU?H~xlc{Gh|hTec% zW@+zr(PkR@vJ2fUbpW0Y3hylMnp)^cg%I<KqH%=BTFc^yV8p>k!fN?TZBlhm1xy~Nr)w$fNIvv z1P34B^pcq~9Yh*HBZ+Z=RApOiI54rbLa+#enbq= z%A9c3*jRnjmu0T{k$q0x9F)fMGl4Ku48cg>xu}N8!wSb1WO-?kRql+go$F93gCv2I zhJtFI>Nc9e71br)w~hp_b8&dwepW>XMnz6S}Qq^g*n|iA_&Y} zwiHXtMOO?a$`fft%wVmS&7F}8@0qi^y2Ff+k{Ag6NAOV^@K!bM@)B1x6=O{EE zMkD<>S4Uy08eR|5NW#rkWW;R=O?IGCZFAw{iQIes+|ADF($>EA+8zlZ=tj3aJw4yP zk_VQ|L_1x2p)>M_W!VLrjUID17whz*o*PTJkyPJ%Ej=!LT^J@Wd+pIe%^$dV(3b9t zfoz=2@Me`PB~=A{mC#P>pa4~>EkS1u%4^;5>6D7_CRW&^Rafi+KKwCjna ze3dCn$5Q)Rn$j*_XH2~lUxx;aZAs+kWuOsNI*mwn-9DF?o}G0SEMe@e++pb$(pii? z^pLSX)2(D4N8PISM4nu%;`Qx9)K$T-p2YoV9-*|3MAnwv43Bk@YK(Bwian>9IHDVv>U0O;i(&*T<4L7(G>8%X;boej@x5hdhn2}2DLKB<2IgJ{D z5?e&#N#zL!psh02^Uwt#D)*?+L`5-UYvd{fepE0C2K2l_$a+WbVVMswNzu)c>(#G$ z5xC|#Y>$(tulT%~z$W)}e`g}8l_!$hxi84Zi~q$Z&B0&1^F7D!X@7h$NTZp3A1hz7 zwR7S1^6bHa-C2sBz3ria_on;l){!s&>_`9Vr}tgbe8j$I>HO#v#{%71>K>Ukqvf|x zndsE%-kg-XI*j_6 zDt3ij9G9sBHMY#!G*O`HNy*4PrM}m+YsgH5(v zUwhWSRohATsVQvYqknef6OUiK>yx+dTf`=_H~!+}skF53)(uB~B$;|CeLDp?eQLnT zICk<@oA?dUeVc#jLqB=*U(bD@Ykl8GX2Yk42R`kixLZB_^to64@o)Z6rK&bbtAFu{ z_k8lFf3*GY?w32*^I&85zFj|#O+M@jhieZ;r5KxRx$}Lq^j+_t>HPDeuAI!6v;f^@Mw4u)(G)t|(7zxj)z>pbl%_7t3Vr zb8nfg@s4`a#Lw|`6UC+IK-@Q42R7AerHFcOy8X>J^!^BzvDzRyK)zFz-&{iXKl(=z;0nLS-c>-I|yCzX&$cV=DL&33je zS$HL!Tf*rNlcZkQJ;@Hi!~#ofw+n$3+QoS=N9)D&q+BhuvebHAqR9)Vmt=qKb~rzR z4FNA;NA4v?%4r<)@swR*Pw4*HUgT%_I)b{=eX^vT?$Xto&w41FY_}&TE3GPL^<4h_ zh{Wc$0gip;7ev0fe`))|fMCc(?95EIN&Zu316%FxGE4ujFZd@Aot;aysBM|94*Nb=@}^I2!gbmiND3 zZE|weCMVeC_oX)R!%@)ws!iB|Sx;afaj*%AmMW?}#j|lUCylJEw+W?NSlTZOh25`W zlckmY#q*ZR&z$@Yo2V$B-#VMHANSJkUX;d(EjesbK~>u!AxpJM{F_Ht9(%G_T)KL4 zvRp0z#06-z=C@;${TD^&Uv&BRA3KKDkr?1mhZ85*$$fi}m181w?`HIeg`cVl=i%wqLU9Ty2t{aiWE)oOtCsZ4#;OLXE>FD=V+; zesz1W$+7cRc0Y4+e`Zm=X6;0274+;9bx)qWK=a$3@FhNV60zs2Yow(1o$=Eg;`<+nMQ}PNt=%WytSCteX!ZKof@j$T(C*$W3qJP`(Jx4>$`{ydI+UBxqCM@q3?R} zk1qdybTh8@$8^tgthhb&UD{3rn}oh=Y3YoC1Xd1Vy%HPwBJmjNmtW1dk=_x&T|yp%_||D~PT%asu?OS8Pr zbVu=?fFG9;9--_bcq@H94~KZdAwJ71$e>|W*a)5J&|O_EtK!G5>QeE_ZzPMc;%~nG)!5>&?TM79%dup)bxxFoSKHGW2xOK{(|c`OXef}<)y`9{A+q<$N8L9 zqvw?nFPv+_StFct;s#e1llqo%Jn7q-{w~f@xfGk~nIr5XczDksKXZh$NY4N5_iWk2 zxhmldlII6MGe?*(YlOM1^9(}sI|eoR4zqv6vs@5Rua61zI> z4(FnTwyJkqJqL@s>1z5_K1;<{LVwMH6l0valX8M%Ij*L&d}9bVi`D4!52*LM^#-ft z-^Ej@dMZLC6WlQg{Q>*O{Gv3WZ|?XTNT zveS0Xwh5z9+Q}++kEMrd?R9Ww=%OFesDF4nIg^X>P^eVut7F{^^Z&kUXeaA*icPdH zT30JGo1|Xmqv?`;U7Ng4J6T$KwQ%wzL%r9xNj4b#p45?U{+`IbN1{rly!(43{lAQ? z>|o7Hj5lz3e@E}lXPUB$cmWWzj&RKl>l{h%d9kMHdBGO=5bl;6%6Fcyre{54a7o|f zdzI2PCp6udUe_xU4(k?)FU_y6Ykc1a;0ykJPU>AbRNlc*MZ@H$e3(DCGfNAvz$4=c zZ3y#1Z%XlF9>FF2XjGfec|5G~-Du0ax^V zmUNQynJQoF2&+yNA5U=&@Z?-@JZ^$dT?Jh~sBnB+a3s+%3K+X#-6F4!3Aez9^@_YQ z^&uVMi{UdM1>u%{HgA&N!-{kr{lEdfqx^8aPL~KS6+XC(iJ|+C@FP5TimS&R4rFv{ zNILi`zQtgr_W;i*{}kRi4_!N{alCrYWYIDuDoYzCPtMt&4{If%Cy$Dji7)UjOHWx; z<~$uTBTHm5*-#{)^m#hvOT32P*nLM9e{JrLwgvK4dUR)%4`mGz>K_ARGjbY-__!Hf zEXM&GJ|u)YMTKkl*q@PKYMmGz);Z{`Mkqe}X?n{;jcEzdjPs!>skhW=COxUdMA;_f znli*4?jJ{WQ*Bm-lO4y7-)ErUvf=px>CJFsFWJ#ng$(0s|=?KZf6N`OQmxhs|76y zo4lC-=w#p7#RMXUFjDeM%o$8p9g%`1PjBdqg%Lk)2 zkislHEfOWarAMZ?j+l;o7+;}kTmb^kIx(|6Ow91=Tvpsv zW;m{ejJ6Qzm$7cdmp~U~vq+)w`uUFBna2rl18liq!Yi)*Wk3si}j*; zHc+tKQD%s&Vku2m<)@$liyI(y2ok2!q5#zwFXoq>UaiKf76Ld?fdNv(HMH(LWO22? z>LSSNg614KtB%$sl;*TFRut+ny$^LH($+ji79?(rXp*IB*e+V?gKN1##s#W%$jv(v zZhVw}9z@8UIn}ZOt|s!3R3!C$4iP>cTjQ2PM3Q+l5O5Ype@=j8sPQMBabj`t3WUKRT^FxKG;aJlap){%bG<{$h>NHto<8I$(IfclJ6l+vMD*CTQ z&qop@{P`Cnd1opfOPEsi8u^UVkLCZiKtE>qY!?mX1@4Ze`N-=#y0`s1CnF|q96|7j z2yt9|&9G3M8l>HRGxByIjV`PX_+X{Fm-MjQpH_p$2Al!qT_d`ZA`W?b71MRK)2i#o z*0=rR+6aJH9@V0`m|#EEI^yRSse!c59b8;jwVh&nM=0p(Q8kbzbV6M4L&ck?el)fK zf+81{$RU4!)IZrUdD~!D->9y;Fop2P;Pm9~5YsbSAXji6k;ZRu2q%uG*0j ztI{29iTIk!IuAO44su;H(@KU~>Bz=~Rp-9QoZxNJ@_pu~PLvj5N+(3eA0Lhn3Dp~f z_lw$bnTEGgjw8FbB^L2!iawE@`~YuxMa@|F4>=dbv|LMZ^dh&)L&A~>?m)YmlHOat z#m~C-y+fg&ap~KtUW-ANp^%zDRi}%#T5aF$IMPLngh4+hj?p<*YSN;dh>aK-1Zt>? zs_7m#G6=;pE!@fD5ZA#5Pzin1E>ncg(ki}r>gv7gmLj}0ZxzQS& zh?54PKyF>EZe+OtFve1jSqQ?_IZwR~V0|2F|3pXz(zq_X^4N@qtK;X@IOIf4#RD9Q z6B;wxrbPq~ugHDP>JXq!oo%IGEYR%#!m1d|&0+=#xf>E6 zkGzgXNEcLOYn1n}ZIE#y*Fa)XaEmxEtm&(wBS_PtChkI^fGUagCdh++wPhAIRQ%B#jxBo}{H2>BuQ- zo6(@>E$gvV9&%cyL11YDKwKJLOr_)AMXH_yL48Q1)Z|b+Xq-_(D@KR&^wM7YB_`S; zzXBRdEUqVP?!|+4APwWb9?2HnUR4i1&!57KT+TJ-XZax`HHnfb%G(ZnD3Nfpz*W#| z=F^bUDd2j&6sa(3)oA)g`+@XGYRTBJN}t(%#&J*jNM|O?#>~xaYdluB-qEy7JjF*y zmLwP!I3;zNanh;(!EK|*hRySjmbOAwMa=)Dz0-2W65IHb0g5-|XXz(oI&yN^@=SB1 z3P>(wn>E?dZE<4 zUcE9*xV2brTXTZr%B-Rxi9fg3-};ui$Ir8^K^I2;HSK9w&~|1cGP1^MAv6`TdqD|k z6O9kOH>WNEGs6!W6ib2K`H%*nQm%n=f{fb{u9KurEwgc*6*#1eBU#F*XPiEoM$Kp$ zA_(1L#04MeTeyx}O>!%}1rQTa6{L*cjU_=4S>+re7sniALo?JdcG0D`HPX$F7CA+F za*4QkO}G}dRoAqpog%cA#&r$E@bP?KVq0m&KQ8HU?ck#ykq(@a9lSLAP0fPp>Nk}B z4L*i@Tc$WA&c`y%lcfyFLw4#dlozx~J-S@w>wK9+i##vt2&yC7IIJs@x9??j@uH2a zm}{_L%sMX%S)aihB`SMSQLO7C=OR+{PvJ#WdX|se$ zL(7a@@U($1z5tQ!TlH{z96*OnrR%tOX+IV!j-kHrKE$z@!^evGJbOjpnErq$<5<|m zD1WX~XEb!V6&KB`fgccbt3~U`JP#g~x;96c+Qsru`H_9>pc%?=Z@Eqfq4RYQZZgtj zV)wi(*BfGmiX{iBW%Vf8cw5xrg+N^;J4o-vUB~>Ca_^aRc@7D_O_mhOIxp0Nw0D3$ zRGO@`r@2aG-ZDITyy`z(Ke4yvBQx-eQHjMXhW999JpFPihkg2P=H=cXI=Dat6ptp6N#7ue&EAa_JbpJvQWEi@dRG43uQ+Hs;)LXV`R)KjIW?Zq-1&pS|j z?J#Ii?d=u?+39Bz=byWji=+D*h3~w2XK)fDw#UuGvpbiP+gbc4Y7nWusHhg zaW>Qwm|S~nQQ z$Mmgo*kCc_C4+Tfd8+w?^|GL(9mv<$T7dPN^H^om!AxrNO`s?Y!OmJccYd@_}kN?Kw`{s7)ztn*&X zTFt}uyt|&^cCX=EZpvGm8s~1|elA)f8(Wt1QJqkd8UwZ>o?q-e7Ktfroe-QIj?fR` z<)6-tVNZq%^prPqQE4qEy~YJ_h^aLe738oQ7Z}upC$RMipdtx;6sT~1`7rlulp7FS z=7>&fJ(?2*d`G}0wW*5AZ>2O+wE)R1Nnxx(1GnX5@x|DS>qX99b|0G2+^s}CJ8%-2 zO>;AI+~+LKrbVZ3`gQ7S;y21Zkx^3ey-mqsA{!z+r?Q%bUWmTM6>1n3aZskCuIX-s zQvNGg$H`P|I()UE4{{<+Ff*hjKt^2$p9S$a@=!W{v3go`)X4-|;-;qHL24zM=aq?A-35aI(Tuo8QfpX=qj}G5 z$go=)oeNwGsxTS>HMKjJ#io-cNNo- zh{BzJNZEJ%_O_q_QJ@RxwT}ziABY#@u#mG_jMCr613QqJWm+Aqk^+ye5uG1!P%n`i z_(Cee;!pBqa@C|EM^7n7tyd2z%L zPwPn{C-F#k#RcaS&sAL%NvzP)Edf+BGdJf=lb4wHv+9OlhR^R_ zIVnyai-T7yh}GyAQpM+(}KLPagh~Dy1tv%B53!eWrtLYq=iIwY(N*F@!tdF zWesIMgIsxjClqs3xRYl7H_qsFV%Bkuoy{2F@b5z)OTujykN0CmhbS)dxn~uhx2~WC z+6p!c6d~RRud#B_(ot(*y*!od{+H+L^MtE3Uc6O1XZ%7X3+y=WSBDB~08f)6e9lbs z(b_~aLWCbj6R}3Siaf&;Xd`MxsS2qWaL(eezOj(BEUN^qb(RHjQ|5o; z%kRX#*zsn*=bPyRi9Dr*GAh^oA5PrH4nmhQD8vp4W8Q5MYnWcL&0?W?$P9*>pUgoV zb+`}l?l<<%%dl_KdnMTg-X`8^!#)RbWa2(vJzkeoW_f9%H|=-4<-kNmS{Na+!Yh5I z_3gD~wz!FS`5E`^sK`_N%q^zffDgPWN6pR-;JUd*5!qZXf~&$vhgwz@Yhz?8{Q$SH zf(d%=dwQH@h+Sg7jP!sHSG9a%Sno-Ku}w-928q@cQ(?_GwcxGf7>K1G95}L*kZ76! z+^HaA9O|bqhm&bmDYCi7bmCP$T0+vSQTg4o2U+y8Z8Xal1RW`NlZqLo^D^_nMbl(> z^T8y{h@o4UYwB>P5~cnYTT9I!@!(;3X%@w?w|}Uk*l8B`B$EitSeUvx+qZ~s`(j(Q z<}GRom-2KKHIwt>$IqX;Po?t=;cP-T%-up|Ct*+GGBR?HKX1#zUsljXj0i9RuX^HsbFJoTRresb`+ zZU1FkSDrpNwN|qrQd$|qlZ89N9SDn$k#93 z_JNCk@xi~o_2&2Q{+ox*;4jl?soVX@7k=k~zxeiV-d~#jLhn}&ezj|lJpRkKAG>Db zmpcce|8VfB$7)X>9DJ(x3#jDUKU>`O!K=34`4d0)7wsq*=cAKi9v zm%aRtTf<&0-T6v)=&{MY(Z5g3urwz(zT>)WTQ2$7^z}b*{-)UiZJ^8ZGV%BPODVU$ zoR~k2lw60#xLl(DuKdWB`1@FZAfHj2#5Zp$Z7bDpET)MrQ>2}g;~F+%{DqFu@@3_N zPfxK|LT(Z%(oQf?bi4oD^;z=G^`cgWde&5}9o1L?E%ZE0e`^nDD_1Mns+grZPZrSvo|NQuCKk-lh z^0_~~@Z8=vuDV}Z zjU}4g^h-C_=HeTsQ*45Ew`_{HZK=DZT4s~NTcynV1MU>k#|)f|AcI;>((Ho=m@zEO zFJxX_jYlTqwQG0u-nlHp`e*Oxm7kE|k1V(QNk8e$KX*s3(px&(eu8=TIv-d+6NTCK zYx9YB?eeTfB<;X1?;n(hGsxlOlg%CAUXetEr3PM250wxz>%YvRi@zdwUb2&+xd zkJ?17Q7pcCl=6l7#LT-t(Nehzg<)IjcDdT(_9hR`e13w$&Og(7rZv=kE>4`3?b{bJ zo3My5tg*_=yM!4|>#O_LY0YG;C)r&%(OS}Z-m5UtDF=gY+Qdq^+$LG%3JNbCD;`su z%x^EeA}j6fYLop-N0(Zy1-R0Oui9kgWM-3<(`Va+<&UhoWB>YMp6_?F$x>#MwOQ5Q zI?E<2$1(|-9{=~idYf2gsgKtarj7cW zR$e{RCM!$2GO|#3t$4KhjR~n9Eta29o0Ok8U8q-&R$n80VxjWf_U$X!WaXL3rIpEJ z$6kFk*GG^PYw!>oY@%9FJ0!bbq4Hl9pLgEE(A5A=km*RN;X)31GjcXT_I4tn_21~!(dYx(Zoj^&bTWxluz zmp5aV)04-y%2T*ziw&;CEqTh^e6?)Z+dtgja&`Gv_V%BCdg|)rSAIgCetI!B*Ejmg zFZm*(^!J>xW)j&3Q-g9V*=fO}ch*kUzQFkYi|Vq5@{39jUS$g}vR3H^8lUXEl{J<& zW{u`r*;mU*S(+Jrrh{BpysVTdbf&tQQogFQTvzBYX^(YCyy`UMOZ??|Sak$_26wq^ zP2KITi=1Lu&luJ#>bgXwNO?09Gh_BHdGXv!H^|O?xahEz;$Fu@-SPUx;Qsd7dPZGa z$oj-b?vl~DbEJd*N0pDJ8@rl*kFd5dW*ud=mhh21xO1#I4C^Q>@~%6dU;eS{ezx@M z%J0&O(RGn`vA*#U(Qf9=ZK_)==J! zo2{vQB+bhh=sup)RVV}LE)BB#b7R#Bbb)_H&l<~2#=H3Rcq#Q4K7mfdL5I+3x;^2E zM0My>4X112+$KTi8XwZBz7^h4O-0@t2OPxOeNm6003(KEBeu z8Cc=0;}~9T(X4|U0E1Zo?{d? zSQzXcwx8HN+&=p0{^an-djFUaTI;jrCnlexFJgrwztao2WTT75RYGm|{4P9CgYt}y z^D?OFio9>>{WDt+|88j&S|_&C(Z2iLDyOc|w0A7A)y0C!wUE8A%oDFLu**UBhR{zr zx`vxFq5$Qm>ItJT+)02MdKN4!M0&3)tbA)V;$_`KBWM=XiI-2Xrh5%eenrE&KS2g3 zbl(g>yIUSvDQ|msoSe||2GH>r@`Sw>zQZQ0zv6zvD$=Eu&6`$vq2GQc>%&#(mkTQk1tg|ap&aj?Y@G}vCdPKH{qSHv2E8KdX;nm(?JaP!LDf2& z=-v>SO&E7&Hi4hsxpSN7^7_}Y$vfVGO%~SKWGVftfkvw%8Gu=1(r|KXz>Y{;aOQflYpQOppC{ ztDl-x*u8LyGA}Lh4r~>2n}oWhx*tabo6xGqHlbY}&HJu3n`qy4mQ6+@o=4?t!?8`C zX`Pg3S~Q$`vCOchy-?xnOgZ#jv=g>Kq3;R}L;EgN`JFZ~AJXRsCOPQa$pBSsBHz+6 zQr>r+-d~Wxc2uE#S7wt-es;C*8Yc^8UT+inE^KmQy-na5+DT>;@~u?XbU$Xau<&<( zM`mj_q5kN;Cgbs9<;N;NHl_{kl7^poW{fL4Zuya}#mn6WF-*wd4L4h_Nc_X&b&2^okKHVP+uhjYTXvwINQX*) z6Eir~b$o^HYCdB*6JAW}WSX+ov_{ih>%?^i9@EV=6UyY|M z89Zqjy6`gM$)Upu=P$yLFlQZd(m_}^DBg#)d)#=ERs5KK&JRNT*abf&oa;Dryt9Yj za3A9eUBlPOT^US?p6l4b)qI@3ksfOPQ(|%V(T>0mJA+KF4tzB1^04v^VV#KJnHT$Q zP0RFPXsqTT+x$Lw1s;TODa$Qd7Gx5!>VifF+>94x4e2#LqPTpqn<+T&gb&+>vwBU70 zhQ>1>+EspovDygOiNk`^LMR?b9|bY zMR52V-s~I~?n~_3&s@f@S*jsJ87{oDK<-mQuo` z#HSP9gLA-R-5QzU#~-?}iiaiY)#z5wx}yIa9Y&X`W4kFYZRS3WOU%7Wko* z;NpN)HS4jF>WOTsp#U*qQs`WeP9Snn8!iE6xmte86TJQzhtImuu%fg+z z!1qMMvYsH$a*${li$Do)?$#ubLxjQ<7@7RrfFb>%2Ar0iC#>A6)wIZTxh{bj!qqsk zno=V_Cy(M|$L>@`=XH-nN+QgH@KC@zCNv^yRh=PMCbm!wbS0V=K(vzNU2=cxL1eg9G;&G7 zo(AC<`{NC_OC`}L%A|xOjJ@`#Bx@YSlg-Ek2Rt9o35JHrgI5_Ls-6SOA-N|^fjyyot9~-Cld+w|1ZV7>%nfYhtbl1DT&OP_s zbMCMA-aYTOk2b~D!l;>&8FI9LeK`Z=EL6%g+KTH9f;31}W>c_c;x;zrUQM?cTLR)y z?h9##@Vs;kN+|@fe$dP8G>^;V4L{E; zXkxf^hS6&fBy8?8xg&G{(l9nBCqY<8tsWt7%>$1m8xI4u9Uu>6Db?W7_!_b|n-o0xPjyyJuAZ zj)C823sz*)OoOMiGAlN9}MaNLy5-tE_=yv3iET?wB>D7BXvuxw1+a~gUJ#LLH7@i@&MeCW7ho#|s!!u8Y-LsT9 zCDkrpF|!RrK-C}?O_b_*7J|3FMYxESS&5_rVyS~iF5=Q`#z~vvoSUJi@lH1hHAvL7 z$&p7G8*mL6iUc|3tszBEErp?yFDFi*BESZ+BNXEuUVz*{O!LvJSF}yjATmfrP<>u;yzMT?M+^Gi~4`SCd+(HB}`EyGHf<0!bA{%x>4VPNB}N!-&o$j*7C^$M8^_@2y%hP*J4&f-pWxJBxB; zo0;5CoAbK6H*6}Quj}5g&AU$5<&HEkQVd8EOYef7?mXggd=+hp;XjqyJS`Vj$?BMB zi1t)VJApEn|H~AToua-hSaGj}&j3ouwSb@q7)i*x0&0=Was&kPjg1`5AoFA;-Kpjh zr}0dIOxBd4{5o%7muL+rN-EDe_9AL*U|=f;j*(?rs_N?o1y}HoM$8$%@isOD5o2zn zSt~`68=QkdmpQLSHGpFfpuDiq9%!(tym>W;uQC?|ynH8-%yL~~0!d*Spw{G6D1;sFDFbs52-z(C>A=okVXEkIo#-5>)Qgn<_` ztwM#%`VHQIF~OZjdV&f<98H;XXZ3it(;NiQa7u z3_37Hn`CApdwQK0zeVa4D6$3OY`*pbvEB|RVP}T%s(kPa(V44@sb(%|(YfGrORhQk zYVnAWFAz7qYmZoJG4PHqVSMNa*bEJa7%K6Y&L+n+Km7sIksHF)e(_Sl(-PxQlwydj>a8NW3S>2dU#Qx@joz8$*E3$X}ze zFz|qFh_PXeNDTkWK!PfT2CekrDeF!=2hsjji84zuOsPjFpGjI_HPL*%0aRtVFTu>g z|3+^o)2IAoaWxBNb5ny%efKu;m0;(xB+Ne)EK{Edg4TZ_Wc^UXwh<$R)I3(fG}Ag1E;(~YnCXUOse zyMJ{Mn)I1RXV+gTJtwn$jwqj#N%uHA?xDbk_3wTyKouEFpq+>`lA&0VDf`tc#ZS2m;ZcRnG?by6MGNU2VK?AW8 zkR?uM-e*&?M%mzcly@|WupTi*zg)?W=pcB1QrpYur#sfbZVno_Szi;`;o`BpX&YHTa= zKNud73N&WYpX{wpe3EY5;C@EJ<18T->V8tX(`OPVjWgjLKV-g=+!x-!nK+jWv=!7( zZp-Ld&F=kdR`qOCd$`Fkh)+uAu3wk2oBl7^;JKz(e2=e6?J~|^z!(eJR>b_$Lno3} z_H(OvrZqTN*!Q+T-}nJ;ir?gW+7B*GY6~u7w`CznG#>a<2eSHzA_26jhVCAYF&m5;U3atWGGIOf^B7*OENpTbXD*%*+(}==vdd z6)O>OO!>)7!mE&^A<1MAi-7%1GL!E12@^yyfe-2?^JJZ8e4|`wKoh2bRXlnl1oWdbYMysF}|2U+do96tHRD9Gjl?lq7`P^EO)abReaNv%28_8 znO`tv`Rbe%zAvJ}NSgCl*lQ}ZDa1<6(aq=a>3l3iBH~#alL$|%Xmti3dZ&Y(BP8N} zA4RFf1$7EMBr_C#LK8p^>ca1tl_Y}T4+hzwTMVINxfI+`w?*VrWWfL7r=F9R-Q`h zB0pBGhG#pIPVWtTH61i)>C+6bjwkXNC7)z3ui02*5N7xR7y~n7vgr=ndUfEsjuL!i zzSS$Ud$-5K&f}rVSVtjMaT!?yUi}IC{Cpr^xEsy%R_U_A%6q;r zw3a-RbA~1H!Y001A(Qf`tlIB#di&E^Wk4ZOms>U@;8eZ^f<1`ho!5k97$77XLveL3 zkI%tOaQI*Xm?lr~E=S4nMl(W8UcMX{QGxcn?AH>^M(=7})+Xuok~moMk*m;2eMjYM z7GiE=wcI3*x~d5mxW7!E^fb7}*TgjGWz&i{TUNe;NZ^MC_zuW4^&{X3$7=)onF^tK ztX3^4+7#deUi3LZFIX#WZmYFs323a^9QTJB?hsl5mVCUraNeXct6T?7)O-r5vw@Bb zuf)|u(B#lzoPth;xB_K@>r~p(=y9?9Cfzu{M&r+eVeGMiLRIw&K`+o*f^lAT&8X<5 zL_EZgQ3!=mQeSzT7z)cMrwBR0WESB8UN7V-1g=2?F`aw!bQtFya=RT;D&;Xu`uS{(m+=(oj_9D_z!|EF^JPqL}5_%vl`=-pP(@{aZHBjn97uc4ldAe zIGLuGH{kO=k$D0+u&i_V^zJ+%PkUBb47qq-ou>?OwJ;vYXoODi zFq(r40enV zh=mlxb7rOzB7|rDss$&s*cnfl!VP~OmmqhmPU`x}j;yC#^tRR`O8H+z+(=IG$N?hG zS{dSKFZBz=l|hf`d9sQrsKn`kIe-J`k~peFqhp!I2Tf4A@si_dAm-E|V;t}2#rUOk zs|mdXnofPoK$FsrD4xG%Sm|Gi1&{9nCDf>9zD`M&dAPzA6yXfK4v|JvEBRu8i>EiLS5TLXgv;rvHQg|;U=r64& z0S|YM1(=26qK}sxA7T+lmIBBPV>Nj z4%5Wb>y?Vf6X@DO;ErF2==cu%=qI#ld%vRu23vs?8 zpOTT8pkH5zff$Y#D38-)QqBbvk-{}MuSknpFY{O+CM_3FklHMVbK2aEJB@Wb%;noK zdAi=mbX5a*`^GL;og!ft+(n8z%Tn?Bto=(pv0E@(9Bw{?endOjh?tY=< zR8vrAx?oZXECQTU$@Vx4k()1kj#VT}NLLwvQIw!mX~roHwQYzJ8~E{Pn2jm|c-!IH zLnn6z?F+8qqh9)v_Iz}Wdy(t~4#LydPcyVUILo?P^!qWrw zQvD>)=UkhJgkRtX1oZ>$fS>8z63XHBpij7d&CR|3MjI?;B$FNJi=98KDuQ(Tg@K;`u2A=)jpnH`=5%fh=K! zlUx$x^wL(`rI6xc-*(T)Dh9cH0%>3?YVjz0CL;i2Tx&;0E-Z~D7`cPhE!r+PJx#wz$v z^;&oT!NTFSH+4?jF?nj(yX)xxeDqZRzCkbfnckdgD#y%G%Tw_BW2AlT#?@ zufJfq!LH2DYu&UiM}PD{??nC5Q-}ZcTxX-CN5W^jhufi>w5y6>!_m8JNVd_3e`;-K z;*O8?!W$9Q;bME$jgNJBm|9tN2RfN{8&~$|v!&E}hP_yCds_Hp#h*zepQ7{4-HQ#7BHw$c`a; zlZl%+P}W>>;@sD^pL?-&$BCIQKfiY8)2BXs`1KzLu39sC>0k8SdKn zBf}OJ48=jaSN`hlgXwVTnXlh`-7C+W{E^G=ekR%V{Xh1F1K}BW;Hw)i*}c0waffXD z{RjWfT=L-QC)+Rdp1eOC_p97&Ihm1DA31jXmYo~dW~*D3Qiby-f8aM?`oV?wU$XJz zyS<$#rKc_}O8L~ZL=a%C-#~+tMwx1-sRjblXx&4j;1Jr2gjirFYMMtkV4c6G^4pea_76 zoS19epUk|uvgYoYa>Di6Rz z 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 + +
This design is targeted for xc7z020 board (part number: xc7z020clg400-1) + +
+

Zynq Design Summary

+ + + + + + + + + + + + + + + + + + + + + +
+Device + +xc7z020 +
+SpeedGrade + +-1 +
+Part + +xc7z020clg400-1 +
+Description + +Zynq PS Configuration Report with register details +
+Vendor + +Xilinx +
+

MIO Table View

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+MIO Pin + +Peripheral + +Signal + +IO Type + +Speed + +Pullup + +Direction +
+MIO 0 + +GPIO + +gpio[0] + +LVCMOS 3.3V + +slow + +enabled + +inout +
+MIO 1 + +Quad SPI Flash + +qspi0_ss_b + +LVCMOS 3.3V + +slow + +enabled + +out +
+MIO 2 + +Quad SPI Flash + +qspi0_io[0] + +LVCMOS 3.3V + +slow + +disabled + +inout +
+MIO 3 + +Quad SPI Flash + +qspi0_io[1] + +LVCMOS 3.3V + +slow + +disabled + +inout +
+MIO 4 + +Quad SPI Flash + +qspi0_io[2] + +LVCMOS 3.3V + +slow + +disabled + +inout +
+MIO 5 + +Quad SPI Flash + +qspi0_io[3] + +LVCMOS 3.3V + +slow + +disabled + +inout +
+MIO 6 + +Quad SPI Flash + +qspi0_sclk + +LVCMOS 3.3V + +slow + +disabled + +out +
+MIO 7 + +GPIO + +gpio[7] + +LVCMOS 3.3V + +slow + +disabled + +out +
+MIO 8 + +Quad SPI Flash + +qspi_fbclk + +LVCMOS 3.3V + +slow + +disabled + +out +
+MIO 9 + +GPIO + +gpio[9] + +LVCMOS 3.3V + +slow + +enabled + +inout +
+MIO 10 + +GPIO + +gpio[10] + +LVCMOS 3.3V + +slow + +enabled + +inout +
+MIO 11 + +GPIO + +gpio[11] + +LVCMOS 3.3V + +slow + +enabled + +inout +
+MIO 12 + +I2C 1 + +scl + +LVCMOS 3.3V + +slow + +enabled + +inout +
+MIO 13 + +I2C 1 + +sda + +LVCMOS 3.3V + +slow + +enabled + +inout +
+MIO 14 + +CAN 0 + +rx + +LVCMOS 3.3V + +slow + +enabled + +in +
+MIO 15 + +CAN 0 + +tx + +LVCMOS 3.3V + +slow + +enabled + +out +
+MIO 16 + +Enet 0 + +tx_clk + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 17 + +Enet 0 + +txd[0] + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 18 + +Enet 0 + +txd[1] + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 19 + +Enet 0 + +txd[2] + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 20 + +Enet 0 + +txd[3] + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 21 + +Enet 0 + +tx_ctl + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 22 + +Enet 0 + +rx_clk + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 23 + +Enet 0 + +rxd[0] + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 24 + +Enet 0 + +rxd[1] + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 25 + +Enet 0 + +rxd[2] + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 26 + +Enet 0 + +rxd[3] + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 27 + +Enet 0 + +rx_ctl + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 28 + +USB 0 + +data[4] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 29 + +USB 0 + +dir + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 30 + +USB 0 + +stp + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 31 + +USB 0 + +nxt + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 32 + +USB 0 + +data[0] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 33 + +USB 0 + +data[1] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 34 + +USB 0 + +data[2] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 35 + +USB 0 + +data[3] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 36 + +USB 0 + +clk + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 37 + +USB 0 + +data[5] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 38 + +USB 0 + +data[6] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 39 + +USB 0 + +data[7] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 40 + +SD 0 + +clk + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 41 + +SD 0 + +cmd + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 42 + +SD 0 + +data[0] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 43 + +SD 0 + +data[1] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 44 + +SD 0 + +data[2] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 45 + +SD 0 + +data[3] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 46 + +SD 0 + +cd + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 47 + +SD 0 + +wp + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 48 + +UART 1 + +tx + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 49 + +UART 1 + +rx + +LVCMOS 1.8V + +slow + +enabled + +in +
+MIO 50 + +GPIO + +gpio[50] + +LVCMOS 1.8V + +slow + +enabled + +inout +
+MIO 51 + +USB Reset + +reset + +LVCMOS 1.8V + +slow + +disabled + +out +
+MIO 52 + +Enet 0 + +mdc + +LVCMOS 1.8V + +slow + +enabled + +out +
+MIO 53 + +Enet 0 + +mdio + +LVCMOS 1.8V + +slow + +enabled + +inout +
+

DDR Memory information

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Parameter name + +Value + +Description +
+Enable DDR + +1 + +Enable DDR Controller of Zynq PS +
+Enable DDR + +1 + +Enable DDR Controller of Zynq PS +
+Memory Part + +MT41K256M16 RE-15E + + +
+DRAM bus width + +32 Bit + +Select the desired data width. Refer to the Thechnical Reference Manual(TRM) for a detailed list of supported DDR data widths +
+ECC + +Disabled + +ECC is supported only for data width of 16-bit +
+BURST Length (lppdr only) + +8 + +Select the burst Length. It refers to the amount of data read/written after a read/write command is presented to the controller +
+Internal Vref + +0 + + +
+Operating Frequency (MHz) + +533.333333 + +Chose the clock period for the desired frequency. The allowed freq range (200 - 667 MHz) is a function of FPGA part and FPGA speed grade +
+HIGH temperature + +Normal (0-85) + +Select the operating temparature +
+DRAM IC bus width + +16 Bits + +Provide the width of the DRAM chip +
+DRAM Device Capacity + +4096 MBits + + +
+Speed Bin + +DDR3_1066F + +Provide the Speed Bin +
+BANK Address Count + +3 + +Defines the bank to which an active an ACTIVE, READ, WRITE, or Precharge Command is being applied +
+ROW Address Count + +15 + +Provide the Row address for ACTIVE commands +
+COLUMN Address Count + +10 + +Provide the Row address for READ/WRITE commands +
+CAS Latency + +7 + +Select the Column Access Strobe (CAS) Latency. It refers to the amount of time it takes for data to appear on the pins of the memory module +
+CAS Write Latency + +6 + +Select the CAS Write Latency +
+RAS to CAS Delay + +7 + +Provide the row address to column address delay time. tRCD is t he time required between the memory controller asserting a row address strobe (RAS), and then asserting the column address strobe (CAS) +
+RECHARGE Time + +7 + +Precharge Time (tRP) is the number of clock cycles needed o terminate acces s to an open row of memory, and open access to the next row +
+tRC (ns ) + +49.5 + +Provide the Row cycle time tRC (ns) +
+tRASmin ( ns ) + +36.0 + +tRASmin (ns) is the minimum number of clock cycles required between an Active command and issuing the Precharge command +
+tFAW + +45.0 + +It restricts the number of activates that can be done within a certain window of time +
+ADDITIVE Latency + +0 + +Provide the Additive Latency (ns). Increases the efficiency of the command and data bus for sustainable bandwidths +
+Write levelling + +1 + + +
+Read gate + +1 + + +
+Read gate + +1 + + +
+DQS to Clock delay [0] (ns) + +0.0 + +The daly difference of each DQS path delay subtracted from the clock path delay +
+DQS to Clock delay [1] (ns) + +0.0 + +The daly difference of each DQS path delay subtracted from the clock path delay +
+DQS to Clock delay [2] (ns) + +0.0 + +The daly difference of each DQS path delay subtracted from the clock path delay +
+DQS to Clock delay [3] (ns) + +0.0 + +The daly difference of each DQS path delay subtracted from the clock path delay +
+Board delay [0] (ns) + +0.0 + +The average of the data midpoint delay, of the data delays associated with a byte lane (DDR_DQ, DDR_DM) averaged with the midpoint of the cloc kdelays (DDR_CK, DR_CK_N) +
+Board delay [1] (ns) + +0.0 + +The average of the data midpoint delay, of the data delays associated with a byte lane (DDR_DQ, DDR_DM) averaged with the midpoint of the cloc kdelays (DDR_CK, DR_CK_N) +
+Board delay [2] (ns) + +0.0 + +The average of the data midpoint delay, of the data delays associated with a byte lane (DDR_DQ, DDR_DM) averaged with the midpoint of the cloc kdelays (DDR_CK, DR_CK_N) +
+Board delay [3] (ns) + +0.0 + +The average of the data midpoint delay, of the data delays associated with a byte lane (DDR_DQ, DDR_DM) averaged with the midpoint of the cloc kdelays (DDR_CK, DR_CK_N) +
+

PS Clocks information

+

PS Reference Clock : 33.333333

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Peripheral + +PLL source + +Frequency (MHz) +
+CPU 6x Freq (MHz) + +ARM PLL + +666.666687 +
+QSPI Flash Freq (MHz) + +IO PLL + +200.000000 +
+ENET0 Freq (MHz) + +IO PLL + +125.000000 +
+SDIO Freq (MHz) + +IO PLL + +100.000000 +
+UART Freq (MHz) + +IO PLL + +100.000000 +
+CAN Freq (MHz) + +IO PLL + +100.000000 +
+FPGA0 Freq (MHz) + +IO PLL + +166.666672 +
+FPGA1 Freq (MHz) + +IO PLL + +50.000000 +
+FPGA2 Freq (MHz) + +IO PLL + +100.000000 +
+FPGA3 Freq (MHz) + +IO PLL + +200.000000 +
+

ps7_pll_init_data_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +ARM_PLL_CFG + + +0XF8000110 + +32 + +RW + +0x000000 + +ARM PLL Configuration +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_CLK_CTRL + + +0XF8000120 + +32 + +RW + +0x000000 + +CPU Clock Control +
+ +DDR_PLL_CFG + + +0XF8000114 + +32 + +RW + +0x000000 + +DDR PLL Configuration +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_CLK_CTRL + + +0XF8000124 + +32 + +RW + +0x000000 + +DDR Clock Control +
+ +IO_PLL_CFG + + +0XF8000118 + +32 + +RW + +0x000000 + +IO PLL Configuration +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_pll_init_data_3_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +Write the unlock key, 0xDF0D, to enable writes to the slcr registers. All slcr registers, 0xF800_0000 to 0xF800_0B74, are writeable until locked using the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

PLL SLCR REGISTERS

+

ARM PLL INIT

+

Register ( slcr )ARM_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CFG + +0XF8000110 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +2 + +20 + +Drive the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drive the PLL_CP[3:0] input of the PLL to set the PLL charge pump control +
+LOCK_CNT + +21:12 + +3ff000 + +fa + +fa000 + +Drive the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned with a certain window before syaing locked. +
+ARM_PLL_CFG@0XF8000110 + +31:0 + +3ffff0 + + + +fa220 + +ARM PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +28 + +28000 + +Provide the feedback divisor for the PLL. Note: Before changing this value, the PLL must first be bypassed and then put into reset mode. Refer to the Zynq-7000 TRM, UG585, Clocks chapter for CP/RES/CNT values for the PLL. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +7f000 + + + +28000 + +ARM PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +ARM PLL Bypass override control: PLL_BYPASS_QUAL = 0: 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL = 1 (QUAL bit default value): 0: PLL mode is set based on pin strap setting. 1: PLL bypassed regardless of the pin strapping. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +10 + + + +10 + +ARM PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +PLL reset control: 0: de-assert (PLL operating) 1: assert (PLL held in reset) +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +1 + + + +1 + +ARM PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +PLL reset control: 0: de-assert (PLL operating) 1: assert (PLL held in reset) +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +1 + + + +0 + +ARM PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+ARM_PLL_LOCK + +0:0 + +1 + +1 + +1 + +ARM PLL lock status: 0: not locked, 1: locked +
+PLL_STATUS@0XF800010C + +31:0 + +1 + + + +1 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +ARM PLL Bypass override control: PLL_BYPASS_QUAL = 0: 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL = 1 (QUAL bit default value): 0: PLL mode is set based on pin strap setting. 1: PLL bypassed regardless of the pin strapping. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +10 + + + +0 + +ARM PLL Control +
+

+

Register ( slcr )ARM_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_CLK_CTRL + +0XF8000120 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the CPU clock: 0x: ARM PLL 10: DDR PLL 11: IO PLL This field is reset by POR only. +
+DIVISOR + +13:8 + +3f00 + +2 + +200 + +Frequency divisor for the CPU clock source. +
+CPU_6OR4XCLKACT + +24:24 + +1000000 + +1 + +1000000 + +CPU_6x4x Clock control: 0: disable, 1: enable +
+CPU_3OR2XCLKACT + +25:25 + +2000000 + +1 + +2000000 + +CPU_3x2x Clock control: 0: disable, 1: enable +
+CPU_2XCLKACT + +26:26 + +4000000 + +1 + +4000000 + +CPU_2x Clock control: 0: disable, 1: enable +
+CPU_1XCLKACT + +27:27 + +8000000 + +1 + +8000000 + +CPU_1x Clock control: 0: disable, 1: enable +
+CPU_PERI_CLKACT + +28:28 + +10000000 + +1 + +10000000 + +Clock active: 0: Clock is disabled 1: Clock is enabled +
+ARM_CLK_CTRL@0XF8000120 + +31:0 + +1f003f30 + + + +1f000200 + +CPU Clock Control +
+

+

DDR PLL INIT

+

Register ( slcr )DDR_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CFG + +0XF8000114 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +2 + +20 + +Drive the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control. +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drive the PLL_CP[3:0] input of the PLL to set the PLL charge pump control. +
+LOCK_CNT + +21:12 + +3ff000 + +12c + +12c000 + +Drive the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned with a certain window before staying locked. +
+DDR_PLL_CFG@0XF8000114 + +31:0 + +3ffff0 + + + +12c220 + +DDR PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +20 + +20000 + +Provide the feedback divisor for the PLL. Note: Before changing this value, the PLL must first be bypassed and then put into reset mode. Refer to the Zynq-7000 TRM, UG585, Clocks chapter for CP/RES/CNT values for the PLL. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +7f000 + + + +20000 + +DDR PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +DDR PLL Bypass override control: PLL_BYPASS_QUAL = 0 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL = 1 (QUAL bit default value) 0: PLL mode is set based on pin strap setting. 1: PLL bypass is enabled regardless of the pin strapping. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +10 + + + +10 + +DDR PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +PLL reset control: 0: de-assert (PLL operating) 1: assert (PLL held in reset) +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +1 + + + +1 + +DDR PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +PLL reset control: 0: de-assert (PLL operating) 1: assert (PLL held in reset) +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +1 + + + +0 + +DDR PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DDR_PLL_LOCK + +1:1 + +2 + +1 + +2 + +DDR PLL lock status: 0: not locked, 1: locked +
+PLL_STATUS@0XF800010C + +31:0 + +2 + + + +2 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +DDR PLL Bypass override control: PLL_BYPASS_QUAL = 0 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL = 1 (QUAL bit default value) 0: PLL mode is set based on pin strap setting. 1: PLL bypass is enabled regardless of the pin strapping. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +10 + + + +0 + +DDR PLL Control +
+

+

Register ( slcr )DDR_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_CLK_CTRL + +0XF8000124 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DDR_3XCLKACT + +0:0 + +1 + +1 + +1 + +DDR_3x Clock control: 0: disable, 1: enable +
+DDR_2XCLKACT + +1:1 + +2 + +1 + +2 + +DDR_2x Clock control: 0: disable, 1: enable +
+DDR_3XCLK_DIVISOR + +25:20 + +3f00000 + +2 + +200000 + +Frequency divisor for the ddr_3x clock +
+DDR_2XCLK_DIVISOR + +31:26 + +fc000000 + +3 + +c000000 + +Frequency divisor for the ddr_2x clock +
+DDR_CLK_CTRL@0XF8000124 + +31:0 + +fff00003 + + + +c200003 + +DDR Clock Control +
+

+

IO PLL INIT

+

Register ( slcr )IO_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CFG + +0XF8000118 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +c + +c0 + +Drive the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control. +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drive the PLL_CP[3:0] input of the PLL to set the PLL charge pump control. +
+LOCK_CNT + +21:12 + +3ff000 + +145 + +145000 + +Drive the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned with a certain window before staying locked. +
+IO_PLL_CFG@0XF8000118 + +31:0 + +3ffff0 + + + +1452c0 + +IO PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +1e + +1e000 + +Provide the feedback divisor for the PLL. Note: Before changing this value, the PLL must first be bypassed and then put into reset mode. Refer to the Zynq-7000 TRM, UG585, Clocks chapter for CP/RES/CNT values for programming the PLL. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +7f000 + + + +1e000 + +IO PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +IO PLL Bypass override control: PLL_BYPASS_QUAL = 0 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL = 1 (QUAL bit default value) 0: PLL mode is set based on pin strap setting. 1: PLL bypass is enabled regardless of the pin strapping. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +10 + + + +10 + +IO PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +PLL Reset control: 0: de-assert (PLL operating) 1: assert (PLL held in reset) +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +1 + + + +1 + +IO PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +PLL Reset control: 0: de-assert (PLL operating) 1: assert (PLL held in reset) +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +1 + + + +0 + +IO PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IO_PLL_LOCK + +2:2 + +4 + +1 + +4 + +IO PLL lock status: 0: not locked, 1: locked +
+PLL_STATUS@0XF800010C + +31:0 + +4 + + + +4 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +IO PLL Bypass override control: PLL_BYPASS_QUAL = 0 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL = 1 (QUAL bit default value) 0: PLL mode is set based on pin strap setting. 1: PLL bypass is enabled regardless of the pin strapping. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +10 + + + +0 + +IO PLL Control +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +Write the lock key, 0x767B, to write protect the slcr registers: all slcr registers, 0xF800_0000 to 0xF800_0B74, are write protected until the unlock key is written to the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_clock_init_data_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DCI_CLK_CTRL + + +0XF8000128 + +32 + +RW + +0x000000 + +DCI clock control +
+ +GEM0_RCLK_CTRL + + +0XF8000138 + +32 + +RW + +0x000000 + +GigE 0 Rx Clock and Rx Signals Select +
+ +GEM0_CLK_CTRL + + +0XF8000140 + +32 + +RW + +0x000000 + +GigE 0 Ref Clock Control +
+ +LQSPI_CLK_CTRL + + +0XF800014C + +32 + +RW + +0x000000 + +Quad SPI Ref Clock Control +
+ +SDIO_CLK_CTRL + + +0XF8000150 + +32 + +RW + +0x000000 + +SDIO Ref Clock Control +
+ +UART_CLK_CTRL + + +0XF8000154 + +32 + +RW + +0x000000 + +UART Ref Clock Control +
+ +CAN_CLK_CTRL + + +0XF800015C + +32 + +RW + +0x000000 + +CAN Ref Clock Control +
+ +CAN_MIOCLK_CTRL + + +0XF8000160 + +32 + +RW + +0x000000 + +CAN MIO Clock Control +
+ +PCAP_CLK_CTRL + + +0XF8000168 + +32 + +RW + +0x000000 + +PCAP Clock Control +
+ +FPGA0_CLK_CTRL + + +0XF8000170 + +32 + +RW + +0x000000 + +PL Clock 0 Output control +
+ +FPGA1_CLK_CTRL + + +0XF8000180 + +32 + +RW + +0x000000 + +PL Clock 1 Output control +
+ +FPGA2_CLK_CTRL + + +0XF8000190 + +32 + +RW + +0x000000 + +PL Clock 2 output control +
+ +FPGA3_CLK_CTRL + + +0XF80001A0 + +32 + +RW + +0x000000 + +PL Clock 3 output control +
+ +CLK_621_TRUE + + +0XF80001C4 + +32 + +RW + +0x000000 + +CPU Clock Ratio Mode select +
+ +APER_CLK_CTRL + + +0XF800012C + +32 + +RW + +0x000000 + +AMBA Peripheral Clock Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_clock_init_data_3_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +Write the unlock key, 0xDF0D, to enable writes to the slcr registers. All slcr registers, 0xF800_0000 to 0xF800_0B74, are writeable until locked using the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

CLOCK CONTROL SLCR REGISTERS

+

Register ( slcr )DCI_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DCI_CLK_CTRL + +0XF8000128 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +DCI clock control - 0: disable, 1: enable +
+DIVISOR0 + +13:8 + +3f00 + +23 + +2300 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+DIVISOR1 + +25:20 + +3f00000 + +3 + +300000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+DCI_CLK_CTRL@0XF8000128 + +31:0 + +3f03f01 + + + +302301 + +DCI clock control +
+

+

Register ( slcr )GEM0_RCLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+GEM0_RCLK_CTRL + +0XF8000138 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Ethernet Controler 0 Rx Clock control 0: disable, 1: enable +
+SRCSEL + +4:4 + +10 + +0 + +0 + +Select the source of the Rx clock, control and data signals: 0: MIO 1: EMIO +
+GEM0_RCLK_CTRL@0XF8000138 + +31:0 + +11 + + + +1 + +GigE 0 Rx Clock and Rx Signals Select +
+

+

Register ( slcr )GEM0_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+GEM0_CLK_CTRL + +0XF8000140 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Ethernet Controller 0 Reference Clock control 0: disable, 1: enable +
+SRCSEL + +6:4 + +70 + +0 + +0 + +Selects the source to generate the reference clock 00x: IO PLL. 010: ARM PLL. 011: DDR PLL 1xx: Ethernet controller 0 EMIO clock +
+DIVISOR + +13:8 + +3f00 + +8 + +800 + +First divisor for Ethernet controller 0 source clock. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Second divisor for Ethernet controller 0 source clock. +
+GEM0_CLK_CTRL@0XF8000140 + +31:0 + +3f03f71 + + + +100801 + +GigE 0 Ref Clock Control +
+

+

Register ( slcr )LQSPI_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LQSPI_CLK_CTRL + +0XF800014C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Quad SPI Controller Reference Clock control 0: disable, 1: enable +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select clock source generate Quad SPI clock: 0x: IO PLL, 10: ARM PLL, 11: DDR PLL +
+DIVISOR + +13:8 + +3f00 + +5 + +500 + +Divisor for Quad SPI Controller source clock. +
+LQSPI_CLK_CTRL@0XF800014C + +31:0 + +3f31 + + + +501 + +Quad SPI Ref Clock Control +
+

+

Register ( slcr )SDIO_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SDIO_CLK_CTRL + +0XF8000150 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +1 + +1 + +SDIO Controller 0 Clock control. 0: disable, 1: enable +
+CLKACT1 + +1:1 + +2 + +0 + +0 + +SDIO Controller 1 Clock control. 0: disable, 1: enable +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock. 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+SDIO_CLK_CTRL@0XF8000150 + +31:0 + +3f33 + + + +a01 + +SDIO Ref Clock Control +
+

+

Register ( slcr )UART_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+UART_CLK_CTRL + +0XF8000154 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +0 + +0 + +UART 0 Reference clock control. 0: disable, 1: enable +
+CLKACT1 + +1:1 + +2 + +1 + +2 + +UART 1 reference clock active: 0: Clock is disabled 1: Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the PLL source to generate the clock. 0x: IO PLL 10: ARM PLL 11: DDR PLL +
+DIVISOR + +13:8 + +3f00 + +a + +a00 + +Divisor for UART Controller source clock. +
+UART_CLK_CTRL@0XF8000154 + +31:0 + +3f33 + + + +a02 + +UART Ref Clock Control +
+

+

Register ( slcr )CAN_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CAN_CLK_CTRL + +0XF800015C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +1 + +1 + +CAN 0 Reference Clock active: 0: Clock is disabled 1: Clock is enabled +
+CLKACT1 + +1:1 + +2 + +0 + +0 + +CAN 1 Reference Clock active: 0: Clock is disabled 1: Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider. +
+CAN_CLK_CTRL@0XF800015C + +31:0 + +3f03f33 + + + +100a01 + +CAN Ref Clock Control +
+

+

Register ( slcr )CAN_MIOCLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CAN_MIOCLK_CTRL + +0XF8000160 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CAN0_MUX + +5:0 + +3f + +0 + +0 + +CAN 0 mux selection for MIO. Setting this to zero will select MIO[0] as the clock source. Only values 0-53 are valid. +
+CAN0_REF_SEL + +6:6 + +40 + +0 + +0 + +CAN 0 Reference Clock selection: 0: From internal PLL 1: From MIO based on the next field +
+CAN1_MUX + +21:16 + +3f0000 + +0 + +0 + +CAN 1 mux selection for MIO. Setting this to zero will select MIO[0] as the clock source. Only values 0-53 are valid. +
+CAN1_REF_SEL + +22:22 + +400000 + +0 + +0 + +CAN 1 Reference Clock selection: 0: From internal PLL. 1: From MIO based on the next field +
+CAN_MIOCLK_CTRL@0XF8000160 + +31:0 + +7f007f + + + +0 + +CAN MIO Clock Control +
+

+

TRACE CLOCK

+

Register ( slcr )PCAP_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PCAP_CLK_CTRL + +0XF8000168 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active: 0: Clock is disabled 1: Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+PCAP_CLK_CTRL@0XF8000168 + +31:0 + +3f31 + + + +501 + +PCAP Clock Control +
+

+

Register ( slcr )FPGA0_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA0_CLK_CTRL + +0XF8000170 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +6 + +600 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA0_CLK_CTRL@0XF8000170 + +31:0 + +3f03f30 + + + +100600 + +PL Clock 0 Output control +
+

+

Register ( slcr )FPGA1_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA1_CLK_CTRL + +0XF8000180 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +14 + +1400 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA1_CLK_CTRL@0XF8000180 + +31:0 + +3f03f30 + + + +101400 + +PL Clock 1 Output control +
+

+

Register ( slcr )FPGA2_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA2_CLK_CTRL + +0XF8000190 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA2_CLK_CTRL@0XF8000190 + +31:0 + +3f03f30 + + + +100a00 + +PL Clock 2 output control +
+

+

Register ( slcr )FPGA3_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA3_CLK_CTRL + +0XF80001A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA3_CLK_CTRL@0XF80001A0 + +31:0 + +3f03f30 + + + +100500 + +PL Clock 3 output control +
+

+

Register ( slcr )CLK_621_TRUE

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CLK_621_TRUE + +0XF80001C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLK_621_TRUE + +0:0 + +1 + +1 + +1 + +Select the CPU clock ratio: (When this register changes, no access are allowed to OCM.) 0: 4:2:1 1: 6:2:1 +
+CLK_621_TRUE@0XF80001C4 + +31:0 + +1 + + + +1 + +CPU Clock Ratio Mode select +
+

+

Register ( slcr )APER_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+APER_CLK_CTRL + +0XF800012C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DMA_CPU_2XCLKACT + +0:0 + +1 + +1 + +1 + +DMA controller AMBA Clock control 0: disable, 1: enable +
+USB0_CPU_1XCLKACT + +2:2 + +4 + +1 + +4 + +USB controller 0 AMBA Clock control 0: disable, 1: enable +
+USB1_CPU_1XCLKACT + +3:3 + +8 + +1 + +8 + +USB controller 1 AMBA Clock control 0: disable, 1: enable +
+GEM0_CPU_1XCLKACT + +6:6 + +40 + +1 + +40 + +Gigabit Ethernet 0 AMBA Clock control 0: disable, 1: enable +
+GEM1_CPU_1XCLKACT + +7:7 + +80 + +0 + +0 + +Gigabit Ethernet 1 AMBA Clock control 0: disable, 1: enable +
+SDI0_CPU_1XCLKACT + +10:10 + +400 + +1 + +400 + +SDIO controller 0 AMBA Clock 0: disable, 1: enable +
+SDI1_CPU_1XCLKACT + +11:11 + +800 + +0 + +0 + +SDIO controller 1 AMBA Clock control 0: disable, 1: enable +
+SPI0_CPU_1XCLKACT + +14:14 + +4000 + +0 + +0 + +SPI 0 AMBA Clock control 0: disable, 1: enable +
+SPI1_CPU_1XCLKACT + +15:15 + +8000 + +0 + +0 + +SPI 1 AMBA Clock control 0: disable, 1: enable +
+CAN0_CPU_1XCLKACT + +16:16 + +10000 + +1 + +10000 + +CAN 0 AMBA Clock control 0: disable, 1: enable +
+CAN1_CPU_1XCLKACT + +17:17 + +20000 + +0 + +0 + +CAN 1 AMBA Clock control 0: disable, 1: enable +
+I2C0_CPU_1XCLKACT + +18:18 + +40000 + +1 + +40000 + +I2C 0 AMBA Clock control 0: disable, 1: enable +
+I2C1_CPU_1XCLKACT + +19:19 + +80000 + +1 + +80000 + +I2C 1 AMBA Clock control 0: disable, 1: enable +
+UART0_CPU_1XCLKACT + +20:20 + +100000 + +0 + +0 + +UART 0 AMBA Clock control 0: disable, 1: enable +
+UART1_CPU_1XCLKACT + +21:21 + +200000 + +1 + +200000 + +UART 1 AMBA Clock control 0: disable, 1: enable +
+GPIO_CPU_1XCLKACT + +22:22 + +400000 + +1 + +400000 + +GPIO AMBA Clock control 0: disable, 1: enable +
+LQSPI_CPU_1XCLKACT + +23:23 + +800000 + +1 + +800000 + +Quad SPI AMBA Clock control 0: disable, 1: enable +
+SMC_CPU_1XCLKACT + +24:24 + +1000000 + +1 + +1000000 + +SMC AMBA Clock control 0: disable, 1: enable +
+APER_CLK_CTRL@0XF800012C + +31:0 + +1ffcccd + + + +1ed044d + +AMBA Peripheral Clock Control +
+

+

THIS SHOULD BE BLANK

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +Write the lock key, 0x767B, to write protect the slcr registers: all slcr registers, 0xF800_0000 to 0xF800_0B74, are write protected until the unlock key is written to the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_ddr_init_data_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +ddrc_ctrl + + +0XF8006000 + +32 + +RW + +0x000000 + +DDRC Control +
+ +Two_rank_cfg + + +0XF8006004 + +32 + +RW + +0x000000 + +Two Rank Configuration +
+ +HPR_reg + + +0XF8006008 + +32 + +RW + +0x000000 + +HPR Queue control +
+ +LPR_reg + + +0XF800600C + +32 + +RW + +0x000000 + +LPR Queue control +
+ +WR_reg + + +0XF8006010 + +32 + +RW + +0x000000 + +WR Queue control +
+ +DRAM_param_reg0 + + +0XF8006014 + +32 + +RW + +0x000000 + +DRAM Parameters 0 +
+ +DRAM_param_reg1 + + +0XF8006018 + +32 + +RW + +0x000000 + +DRAM Parameters 1 +
+ +DRAM_param_reg2 + + +0XF800601C + +32 + +RW + +0x000000 + +DRAM Parameters 2 +
+ +DRAM_param_reg3 + + +0XF8006020 + +32 + +RW + +0x000000 + +DRAM Parameters 3 +
+ +DRAM_param_reg4 + + +0XF8006024 + +32 + +RW + +0x000000 + +DRAM Parameters 4 +
+ +DRAM_init_param + + +0XF8006028 + +32 + +RW + +0x000000 + +DRAM Initialization Parameters +
+ +DRAM_EMR_reg + + +0XF800602C + +32 + +RW + +0x000000 + +DRAM EMR2, EMR3 access +
+ +DRAM_EMR_MR_reg + + +0XF8006030 + +32 + +RW + +0x000000 + +DRAM EMR, MR access +
+ +DRAM_burst8_rdwr + + +0XF8006034 + +32 + +RW + +0x000000 + +DRAM Burst 8 read/write +
+ +DRAM_disable_DQ + + +0XF8006038 + +32 + +RW + +0x000000 + +DRAM Disable DQ +
+ +DRAM_addr_map_bank + + +0XF800603C + +32 + +RW + +0x000000 + +Row/Column address bits +
+ +DRAM_addr_map_col + + +0XF8006040 + +32 + +RW + +0x000000 + +Column address bits +
+ +DRAM_addr_map_row + + +0XF8006044 + +32 + +RW + +0x000000 + +Select DRAM row address bits +
+ +DRAM_ODT_reg + + +0XF8006048 + +32 + +RW + +0x000000 + +DRAM ODT control +
+ +phy_cmd_timeout_rddata_cpt + + +0XF8006050 + +32 + +RW + +0x000000 + +PHY command time out and read data capture FIFO +
+ +DLL_calib + + +0XF8006058 + +32 + +RW + +0x000000 + +DLL calibration +
+ +ODT_delay_hold + + +0XF800605C + +32 + +RW + +0x000000 + +ODT delay and ODT hold +
+ +ctrl_reg1 + + +0XF8006060 + +32 + +RW + +0x000000 + +Controller 1 +
+ +ctrl_reg2 + + +0XF8006064 + +32 + +RW + +0x000000 + +Controller 2 +
+ +ctrl_reg3 + + +0XF8006068 + +32 + +RW + +0x000000 + +Controller 3 +
+ +ctrl_reg4 + + +0XF800606C + +32 + +RW + +0x000000 + +Controller 4 +
+ +ctrl_reg5 + + +0XF8006078 + +32 + +RW + +0x000000 + +Controller register 5 +
+ +ctrl_reg6 + + +0XF800607C + +32 + +RW + +0x000000 + +Controller register 6 +
+ +CHE_T_ZQ + + +0XF80060A4 + +32 + +RW + +0x000000 + +ZQ parameters +
+ +CHE_T_ZQ_Short_Interval_Reg + + +0XF80060A8 + +32 + +RW + +0x000000 + +Misc parameters +
+ +deep_pwrdwn_reg + + +0XF80060AC + +32 + +RW + +0x000000 + +Deep powerdown (LPDDR2) +
+ +reg_2c + + +0XF80060B0 + +32 + +RW + +0x000000 + +Training control +
+ +reg_2d + + +0XF80060B4 + +32 + +RW + +0x000000 + +Misc Debug +
+ +dfi_timing + + +0XF80060B8 + +32 + +RW + +0x000000 + +DFI timing +
+ +CHE_ECC_CONTROL_REG_OFFSET + + +0XF80060C4 + +32 + +RW + +0x000000 + +ECC error clear +
+ +CHE_ECC_CONTROL_REG_OFFSET + + +0XF80060C4 + +32 + +RW + +0x000000 + +ECC error clear +
+ +CHE_CORR_ECC_LOG_REG_OFFSET + + +0XF80060C8 + +32 + +RW + +0x000000 + +ECC error correction +
+ +CHE_UNCORR_ECC_LOG_REG_OFFSET + + +0XF80060DC + +32 + +RW + +0x000000 + +ECC unrecoverable error status +
+ +CHE_ECC_STATS_REG_OFFSET + + +0XF80060F0 + +32 + +RW + +0x000000 + +ECC error count +
+ +ECC_scrub + + +0XF80060F4 + +32 + +RW + +0x000000 + +ECC mode/scrub +
+ +phy_rcvr_enable + + +0XF8006114 + +32 + +RW + +0x000000 + +Phy receiver enable register +
+ +PHY_Config + + +0XF8006118 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config + + +0XF800611C + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config + + +0XF8006120 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config + + +0XF8006124 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +phy_init_ratio + + +0XF800612C + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio + + +0XF8006130 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio + + +0XF8006134 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio + + +0XF8006138 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF8006140 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF8006144 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF8006148 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF800614C + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF8006154 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF8006158 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF800615C + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF8006160 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_we_cfg + + +0XF8006168 + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 0. +
+ +phy_we_cfg + + +0XF800616C + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 0. +
+ +phy_we_cfg + + +0XF8006170 + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 0. +
+ +phy_we_cfg + + +0XF8006174 + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 0. +
+ +wr_data_slv + + +0XF800617C + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 0. +
+ +wr_data_slv + + +0XF8006180 + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 0. +
+ +wr_data_slv + + +0XF8006184 + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 0. +
+ +wr_data_slv + + +0XF8006188 + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 0. +
+ +reg_64 + + +0XF8006190 + +32 + +RW + +0x000000 + +Training control 2 +
+ +reg_65 + + +0XF8006194 + +32 + +RW + +0x000000 + +Training control 3 +
+ +page_mask + + +0XF8006204 + +32 + +RW + +0x000000 + +Page mask +
+ +axi_priority_wr_port + + +0XF8006208 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port + + +0XF800620C + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port + + +0XF8006210 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port + + +0XF8006214 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_rd_port + + +0XF8006218 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port + + +0XF800621C + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port + + +0XF8006220 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port + + +0XF8006224 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +lpddr_ctrl0 + + +0XF80062A8 + +32 + +RW + +0x000000 + +LPDDR2 Control 0 +
+ +lpddr_ctrl1 + + +0XF80062AC + +32 + +RW + +0x000000 + +LPDDR2 Control 1 +
+ +lpddr_ctrl2 + + +0XF80062B0 + +32 + +RW + +0x000000 + +LPDDR2 Control 2 +
+ +lpddr_ctrl3 + + +0XF80062B4 + +32 + +RW + +0x000000 + +LPDDR2 Control 3 +
+ +ddrc_ctrl + + +0XF8006000 + +32 + +RW + +0x000000 + +DDRC Control +
+

+

ps7_ddr_init_data_3_0

+ + + + + + + + + +

DDR INITIALIZATION

+

LOCK DDR

+

Register ( slcr )ddrc_ctrl

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ddrc_ctrl + +0XF8006000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_soft_rstb + +0:0 + +1 + +0 + +0 + +Active low soft reset. Update during normal operation. 0: Resets the controller 1: Takes the controller out of reset. Dynamic Bit Field. Note: Software changes DRAM controller register values only when the controller is in the reset state, except for bit fields that can be dymanically updated. +
+reg_ddrc_powerdown_en + +1:1 + +2 + +0 + +0 + +Controller power down control. Update during normal operation. Enable the controller to powerdown after it becomes idle. Dynamic Bit Field. 0: disable 1: enable +
+reg_ddrc_data_bus_width + +3:2 + +c + +0 + +0 + +DDR bus width control 00: 32-bit 01: 16-bit 1x: reserved +
+reg_ddrc_burst8_refresh + +6:4 + +70 + +0 + +0 + +Refresh timeout. Programmed value plus one will be the number of refresh timeouts that will be allowed to accumulate before traffic is blocked and the refreshes are forced to execute. Closing pages to perform a refresh is a one-time penalty that must be paid for each group of refreshes; therefore, performing refreshes in a burst reduces the per-refresh penalty of these page closings. Higher numbers for burst_of_N_refresh slightly increases utilization; lower numbers decreases the worst-case latency associated with refreshes. 0: single refresh 1: burst-of-2 ... 7: burst-of-8 refresh +
+reg_ddrc_rdwr_idle_gap + +13:7 + +3f80 + +1 + +80 + +When the preferred transaction store is empty for this many clock cycles, switch to the alternate transaction store if it is non-empty. The read transaction store (both high and low priority) is the default preferred transaction store and the write transaction store is the alternate store. When 'Prefer write over read' is set this is reversed. +
+reg_ddrc_dis_rd_bypass + +14:14 + +4000 + +0 + +0 + +Only present in designs supporting read bypass. For Debug only. 0: Do not disable bypass path for high priority read page hits. 1: disable bypass path for high priority read page hits. +
+reg_ddrc_dis_act_bypass + +15:15 + +8000 + +0 + +0 + +Only present in designs supporting activate bypass. For Debug only. 0: Do not disable bypass path for high priority read activates. 1: disable bypass path for high priority read activates. +
+reg_ddrc_dis_auto_refresh + +16:16 + +10000 + +0 + +0 + +Disable auto-refresh. 0: do not disable auto-refresh. 1: disable auto-refresh. Dynamic Bit Field. Note: When this transitions from 0 to 1, any pending refreshes will be immediately scheduled by the controller. +
+ddrc_ctrl@0XF8006000 + +31:0 + +1ffff + + + +80 + +DDRC Control +
+

+

Register ( slcr )Two_rank_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Two_rank_cfg + +0XF8006004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_rfc_nom_x32 + +11:0 + +fff + +81 + +81 + +tREFI - Average time between refreshes. Unit: in multiples of 32 clocks. DRAM related. Default value is set for DDR3. Dynamic Bit Field. +
+reserved_reg_ddrc_active_ranks + +13:12 + +3000 + +1 + +1000 + +Reserved. Do not modify. +
+reg_ddrc_addrmap_cs_bit0 + +18:14 + +7c000 + +0 + +0 + +Only present for multi-rank configurations. Selects the address bit used as rank address bit 0. Valid Range: 0 to 25, and 31 Internal Base: 9. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 31, rank address bit 0 is set to 0. +
+Two_rank_cfg@0XF8006004 + +31:0 + +7ffff + + + +1081 + +Two Rank Configuration +
+

+

Register ( slcr )HPR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+HPR_reg + +0XF8006008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_hpr_min_non_critical_x32 + +10:0 + +7ff + +f + +f + +Number of counts that the HPR queue is guaranteed to be non-critical (1 count = 32 DDR clocks). +
+reg_ddrc_hpr_max_starve_x32 + +21:11 + +3ff800 + +f + +7800 + +Number of clocks that the HPR queue can be starved before it goes critical. Unit: 32 clocks +
+reg_ddrc_hpr_xact_run_length + +25:22 + +3c00000 + +f + +3c00000 + +Number of transactions that will be serviced once the HPR queue goes critical is the smaller of this number and the number of transactions available. +
+HPR_reg@0XF8006008 + +31:0 + +3ffffff + + + +3c0780f + +HPR Queue control +
+

+

Register ( slcr )LPR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LPR_reg + +0XF800600C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_lpr_min_non_critical_x32 + +10:0 + +7ff + +1 + +1 + +Number of clocks that the LPR queue is guaranteed to be non-critical. Unit: 32 clocks +
+reg_ddrc_lpr_max_starve_x32 + +21:11 + +3ff800 + +2 + +1000 + +Number of clocks that the LPR queue can be starved before it goes critical. Unit: 32 clocks +
+reg_ddrc_lpr_xact_run_length + +25:22 + +3c00000 + +8 + +2000000 + +Number of transactions that will be serviced once the LPR queue goes critical is the smaller of this number and the number of transactions available +
+LPR_reg@0XF800600C + +31:0 + +3ffffff + + + +2001001 + +LPR Queue control +
+

+

Register ( slcr )WR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+WR_reg + +0XF8006010 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_w_min_non_critical_x32 + +10:0 + +7ff + +1 + +1 + +Number of clock cycles that the WR queue is guaranteed to be non-critical. +
+reg_ddrc_w_xact_run_length + +14:11 + +7800 + +8 + +4000 + +Number of transactions that will be serviced once the WR queue goes critical is the smaller of this number and the number of transactions available +
+reg_ddrc_w_max_starve_x32 + +25:15 + +3ff8000 + +2 + +10000 + +Number of clocks that the Write queue can be starved before it goes critical. Unit: 32 clocks. FOR PERFORMANCE ONLY. +
+WR_reg@0XF8006010 + +31:0 + +3ffffff + + + +14001 + +WR Queue control +
+

+

Register ( slcr )DRAM_param_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg0 + +0XF8006014 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_rc + +5:0 + +3f + +1b + +1b + +tRC - Min time between activates to same bank (spec: 65 ns for DDR2-400 and smaller for faster parts). DRAM Related. Default value is set for DDR3. +
+reg_ddrc_t_rfc_min + +13:6 + +3fc0 + +a0 + +2800 + +tRFC(min) - Minimum time from refresh to refresh or activate (spec: 75nS to 195nS). DRAM Related. Default value is set for DDR3. Dynamic Bit Field. +
+reg_ddrc_post_selfref_gap_x32 + +20:14 + +1fc000 + +10 + +40000 + +Minimum time to wait after coming out of self refresh before doing anything. This must be bigger than all the constraints that exist. (spec: Maximum of tXSNR and tXSRD and tXSDLL which is 512 clocks). Unit: in multiples of 32 clocks. DRAM Related +
+DRAM_param_reg0@0XF8006014 + +31:0 + +1fffff + + + +4281b + +DRAM Parameters 0 +
+

+

Register ( slcr )DRAM_param_reg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg1 + +0XF8006018 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_wr2pre + +4:0 + +1f + +12 + +12 + +Minimum time between write and precharge to same bank DDR and DDR3: WL + BL/2 + tWR LPDDR2: WL + BL/2 + tWR + 1 Unit: Clocks where, WL: write latency. BL: burst length. This must match the value programmed in the BL bit of the mode register to the DRAM. BST is not supported at present. tWR: write recovery time. This comes directly from the DRAM specs. +
+reg_ddrc_powerdown_to_x32 + +9:5 + +3e0 + +6 + +c0 + +After this many clocks of NOP or DESELECT the controller will put the DRAM into power down. This must be enabled in the Master Control Register. Unit: Multiples of 32 clocks. +
+reg_ddrc_t_faw + +15:10 + +fc00 + +18 + +6000 + +tFAW - At most 4 banks must be activated in a rolling window of tFAW cycles. Unit: clocks. DRAM Related. +
+reg_ddrc_t_ras_max + +21:16 + +3f0000 + +24 + +240000 + +tRAS(max) - Maximum time between activate and precharge to same bank. Maximum time that a page can be kept open (spec is 70 us). If this is zero. The page is closed after each transaction. Unit: Multiples of 1024 clocks DRAM related. +
+reg_ddrc_t_ras_min + +26:22 + +7c00000 + +14 + +5000000 + +tRAS(min) - Minimum time between activate and precharge to the same bank (spec is 45 ns). Unit: clocks DRAM related. Default value is set for DDR3. +
+reg_ddrc_t_cke + +31:28 + +f0000000 + +4 + +40000000 + +Minimum number of cycles of CKE HIGH/LOW during power down and self refresh. DDR2 and DDR3: Set this to tCKE value. LPDDR2: Set this to the larger of tCKE or tCKESR. Unit: clocks. +
+DRAM_param_reg1@0XF8006018 + +31:0 + +f7ffffff + + + +452460d2 + +DRAM Parameters 1 +
+

+

Register ( slcr )DRAM_param_reg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg2 + +0XF800601C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_write_latency + +4:0 + +1f + +5 + +5 + +Time from write command to write data on DDRC to PHY Interface. (PHY adds an extra flop delay on the write data path; hence this value is one less than the write latency of the DRAM device itself). DDR2 and DDR3: WL -1 LPDDR2: WL Where WL: Write Latency of DRAM DRAM related. In non-LPDDR mode, the minimum DRAM Write Latency (DDR2) supported is 3. In LPDDR mode, the required DRAM Write Latency of 1 is supported. Since write latency (CWL) min is 3, and DDR2 CWL is CL-1, the min (DDR2) CL supported is 4 +
+reg_ddrc_rd2wr + +9:5 + +3e0 + +7 + +e0 + +Minimum time from read command to write command. Include time for bus turnaround and all per-bank, per-rank, and global constraints. DDR2 and DDR3: RL + BL/2 + 2 - WL LPDDR2: RL + BL/2 + RU (tDQSCKmax / tCK) + 1 - WL Write Pre-amble and DQ/DQS jitter timer is included in the above equation. DRAM RELATED. +
+reg_ddrc_wr2rd + +14:10 + +7c00 + +e + +3800 + +Minimum time from write command to read command. Includes time for bus turnaround and recovery times and all per-bank, per-rank, and global constraints. DDR2 and DDR3: WL + tWTR + BL/2 LPDDR2: WL + tWTR + BL/2 + 1 Unit: clocks. Where, WL: Write latency, BL: burst length. This should match the value. Programmed in the BL bit of the mode register to the DRAM. tWTR: internal WRITE to READ command delay. This comes directly from the DRAM specs. +
+reg_ddrc_t_xp + +19:15 + +f8000 + +4 + +20000 + +tXP: Minimum time after power down exit to any operation. DRAM related. +
+reg_ddrc_pad_pd + +22:20 + +700000 + +0 + +0 + +If pads have a power-saving mode, this is the greater of the time for the pads to enter power down or the time for the pads to exit power down. Used only in non-DFI designs. Unit: clocks. +
+reg_ddrc_rd2pre + +27:23 + +f800000 + +4 + +2000000 + +Minimum time from read to precharge of same bank DDR2: AL + BL/2 + max(tRTP, 2) - 2 DDR3: AL + max (tRTP, 4) LPDDR2: BL/2 + tRTP - 1 AL: Additive Latency; BL: DRAM Burst Length; tRTP: value from spec. DRAM related. +
+reg_ddrc_t_rcd + +31:28 + +f0000000 + +7 + +70000000 + +tRCD - AL Minimum time from activate to read or write command to same bank Min value for this is 1. AL = Additive Latency. DRAM Related. +
+DRAM_param_reg2@0XF800601C + +31:0 + +ffffffff + + + +720238e5 + +DRAM Parameters 2 +
+

+

Register ( slcr )DRAM_param_reg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg3 + +0XF8006020 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_ccd + +4:2 + +1c + +4 + +10 + +tCCD - Minimum time between two reads or two writes (from bank a to bank b) is this value + 1. DRAM related. +
+reg_ddrc_t_rrd + +7:5 + +e0 + +6 + +c0 + +tRRD - Minimum time between activates from bank A to bank B. (spec: 10ns or less) DRAM RELATED +
+reg_ddrc_refresh_margin + +11:8 + +f00 + +2 + +200 + +Issue critical refresh or page close this many cycles before the critical refresh or page timer expires. It is recommended that this not be changed from the default value. +
+reg_ddrc_t_rp + +15:12 + +f000 + +7 + +7000 + +tRP - Minimum time from precharge to activate of same bank. DRAM RELATED +
+reg_ddrc_refresh_to_x32 + +20:16 + +1f0000 + +8 + +80000 + +If the refresh timer (tRFC_nom, as known as tREFI) has expired at least once, but it has not expired burst_of_N_refresh times yet, then a 'speculative refresh' may be performed. A speculative refresh is a refresh performed at a time when refresh would be useful, but before it is absolutely required. When the DRAM bus is idle for a period of time determined by this refresh idle timeout and the refresh timer has expired at least once since the last refresh, then a 'speculative refresh' will be performed. Speculative refreshes will continue successively until there are no refreshes pending or until new reads or writes are issued to the controller. Dynamic Bit Field. +
+reg_ddrc_mobile + +22:22 + +400000 + +0 + +0 + +0: DDR2 or DDR3 device. 1: LPDDR2 device. +
+reg_ddrc_en_dfi_dram_clk_disable + +23:23 + +800000 + +0 + +0 + +Enables the assertion of ddrc_dfi_dram_clk_disable. In DDR2/DDR3, only asserted in Self Refresh. In mDDR/LPDDR2, can be asserted in following: - during normal operation (Clock Stop), - in Power Down - in Self Refresh - In Deep Power Down +
+reg_ddrc_read_latency + +28:24 + +1f000000 + +7 + +7000000 + +Non-LPDDR2: not used. DDR2 and DDR3: Set to Read Latency, RL. Time from Read command to Read data on DRAM interface. It is used to calculate when DRAM clock may be stopped. Unit: DDR clock. +
+reg_phy_mode_ddr1_ddr2 + +29:29 + +20000000 + +1 + +20000000 + +unused +
+reg_ddrc_dis_pad_pd + +30:30 + +40000000 + +0 + +0 + +1: disable the pad power down feature 0: Enable the pad power down feature. +
+DRAM_param_reg3@0XF8006020 + +31:0 + +7fdffffc + + + +270872d0 + +DRAM Parameters 3 +
+

+

Register ( slcr )DRAM_param_reg4

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg4 + +0XF8006024 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_en_2t_timing_mode + +0:0 + +1 + +0 + +0 + +1: DDRC will use 2T timing 0: DDRC will use 1T timing +
+reg_ddrc_prefer_write + +1:1 + +2 + +0 + +0 + +1: Bank selector prefers writes over reads +
+reg_ddrc_mr_wr + +6:6 + +40 + +0 + +0 + +A low to high signal on this signal will do a mode register write or read. Controller will accept this command, if this signal is detected high and "ddrc_reg_mr_wr_busy" is detected low. +
+reg_ddrc_mr_addr + +8:7 + +180 + +0 + +0 + +DDR2 and DDR3: Mode register address. LPDDR2: not used. 00: MR0 01: MR1 10: MR2 11: MR3 +
+reg_ddrc_mr_data + +24:9 + +1fffe00 + +0 + +0 + +DDR2 and DDR3: Mode register write data. LPDDR2: The 16 bits are interpreted for reads and writes: Reads: MR Addr[7:0], Don't Care[7:0]. Writes: MR Addf[7:0], MR Data[7:0]. +
+ddrc_reg_mr_wr_busy + +25:25 + +2000000 + +0 + +0 + +Core must initiate a MR write / read operation only if this signal is low. This signal goes high in the clock after the controller accepts the write / read request. It goes low when (i) MR write command has been issued to the DRAM (ii) MR Read data has been returned to Controller. Any MR write / read command that is received when 'ddrc_reg_mr_wr_busy' is high is not accepted. 0: Indicates that the core can initiate a mode register write / read operation. 1: Indicates that mode register write / read operation is in progress. +
+reg_ddrc_mr_type + +26:26 + +4000000 + +0 + +0 + +Indicates whether the Mode register operation is read or write 0: write 1: read +
+reg_ddrc_mr_rdata_valid + +27:27 + +8000000 + +0 + +0 + +This bit indicates whether the Mode Register Read Data present at address 0xA9 is valid or not. This bit is 0 by default. This bit will be cleared (0), whenever a Mode Register Read command is issued. This bit will be set to 1, when the Mode Register Read Data is written to register 0xA9. +
+DRAM_param_reg4@0XF8006024 + +31:0 + +fffffc3 + + + +0 + +DRAM Parameters 4 +
+

+

Register ( slcr )DRAM_init_param

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_init_param + +0XF8006028 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_final_wait_x32 + +6:0 + +7f + +7 + +7 + +Cycles to wait after completing the DRAM init sequence before starting the dynamic scheduler. Units are in counts of a global timer that pulses every 32 clock cycles. Default value is set for DDR3. +
+reg_ddrc_pre_ocd_x32 + +10:7 + +780 + +0 + +0 + +Wait period before driving the 'OCD Complete' command to DRAM. Units are in counts of a global timer that pulses every 32 clock cycles. There is no known spec requirement for this. It may be set to zero. +
+reg_ddrc_t_mrd + +13:11 + +3800 + +4 + +2000 + +tMRD - Cycles between Load Mode commands. DRAM related. Default value is set for DDR3. +
+DRAM_init_param@0XF8006028 + +31:0 + +3fff + + + +2007 + +DRAM Initialization Parameters +
+

+

Register ( slcr )DRAM_EMR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_EMR_reg + +0XF800602C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_emr2 + +15:0 + +ffff + +8 + +8 + +DDR2: Value loaded into EMR2 register DDR3: Value loaded into MR2 register LPDDR2: Value loaded into MR3 register +
+reg_ddrc_emr3 + +31:16 + +ffff0000 + +0 + +0 + +DDR2: Value loaded into EMR3 register DDR3: Value loaded into MR3 register. Set Bit[2:0] to 3'b000. These bits are set appropriately by the Controller during Read Data eye training and Read DQS gate leveling. LPDDR2: Unused +
+DRAM_EMR_reg@0XF800602C + +31:0 + +ffffffff + + + +8 + +DRAM EMR2, EMR3 access +
+

+

Register ( slcr )DRAM_EMR_MR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_EMR_MR_reg + +0XF8006030 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_mr + +15:0 + +ffff + +930 + +930 + +DDR2: Value loaded into MR register. (Bit[8] is for DLL and the setting here is ignored. Controller sets this bit appropriately DDR3: Value loaded into MR0 register. LPDDR2: Value loaded into MR1 register +
+reg_ddrc_emr + +31:16 + +ffff0000 + +4 + +40000 + +DDR2: Value loaded into EMR1register. (Bits[9:7] are for OCD and the setting in this reg is ignored. Controller sets this bits appropriately during initialization DDR3: Value loaded into MR1 register. Set Bit[7] to 0. This bit is set appropriately by the Controller during Write Leveling LPDDR2: Value loaded into MR2 register +
+DRAM_EMR_MR_reg@0XF8006030 + +31:0 + +ffffffff + + + +40930 + +DRAM EMR, MR access +
+

+

Register ( slcr )DRAM_burst8_rdwr

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_burst8_rdwr + +0XF8006034 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_burst_rdwr + +3:0 + +f + +4 + +4 + +Controls the burst size used to access the DRAM. This must match the BL mode register setting in the DRAM. 0010: Burst length of 4 0100: Burst length of 8 1000: Burst length of 16 (LPDDR2 with ___-bit data) All other values are reserved +
+reg_ddrc_pre_cke_x1024 + +13:4 + +3ff0 + +105 + +1050 + +Clock cycles to wait after a DDR software reset before driving CKE high to start the DRAM initialization sequence. Units: 1024 clock cycles. DDR2 Specifications typically require this to be programmed for a delay of >= 200 uS. LPDDR2 - tINIT0 of 20 mS (max) + tINIT1 of 100 nS (min) +
+reg_ddrc_post_cke_x1024 + +25:16 + +3ff0000 + +1 + +10000 + +Clock cycles to wait after driving CKE high to start the DRAM initialization sequence. Units: 1024 clocks. DDR2 typically require a 400 ns delay, requiring this value to be programmed to 2 at all clock speeds. LPDDR2 - Typically require this to be programmed for a delay of 200 us. +
+reg_ddrc_burstchop + +28:28 + +10000000 + +0 + +0 + +Feature not supported. When 1, Controller is out in burstchop mode. +
+DRAM_burst8_rdwr@0XF8006034 + +31:0 + +13ff3fff + + + +11054 + +DRAM Burst 8 read/write +
+

+

Register ( slcr )DRAM_disable_DQ

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_disable_DQ + +0XF8006038 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_force_low_pri_n + +0:0 + +1 + +0 + +0 + +Read Transaction Priority disable. 0: read transactions forced to low priority (turns off Bypass). 1: HPR reads allowed if enabled in the AXI priority read registers. +
+reg_ddrc_dis_dq + +1:1 + +2 + +0 + +0 + +When 1, DDRC will not de-queue any transactions from the CAM. Bypass will also be disabled. All transactions will be queued in the CAM. This is for debug only; no reads or writes are issued to DRAM as long as this is asserted. Dynamic Bit Field. +
+DRAM_disable_DQ@0XF8006038 + +31:0 + +3 + + + +0 + +DRAM Disable DQ +
+

+

Register ( slcr )DRAM_addr_map_bank

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_bank + +0XF800603C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_bank_b0 + +3:0 + +f + +7 + +7 + +Selects the address bits used as bank address bit 0. Valid Range: 0 to 14. Internal Base: 5. The selected address bit for each of the bank address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_bank_b1 + +7:4 + +f0 + +7 + +70 + +Selects the address bits used as bank address bit 1. Valid Range: 0 to 14; Internal Base: 6. The selected address bit for each of the bank address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_bank_b2 + +11:8 + +f00 + +7 + +700 + +Selects the AXI address bit used as bank address bit 2. Valid range 0 to 14, and 15. Internal Base: 7. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, bank address bit 2 is set to 0. +
+reg_ddrc_addrmap_col_b5 + +15:12 + +f000 + +0 + +0 + +Full bus width mode: Selects the address bits used as column address bits 6. Half bus width mode: Selects the address bits used as column address bits 7. Valid range is 0-7. Internal Base 8. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b6 + +19:16 + +f0000 + +0 + +0 + +Full bus width mode: Selects the address bits used as column address bits 7. Half bus width mode: Selects the address bits used as column address bits 8. Valid range is 0-7. Internal Base 9. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. +
+DRAM_addr_map_bank@0XF800603C + +31:0 + +fffff + + + +777 + +Row/Column address bits +
+

+

Register ( slcr )DRAM_addr_map_col

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_col + +0XF8006040 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_col_b2 + +3:0 + +f + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 3. Half bus width mode: Selects the address bit used as column address bit 4. Valid Range: 0 to 7. Internal Base: 5 The selected address bit is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b3 + +7:4 + +f0 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 4. Half bus width mode: Selects the address bit used as column address bit 5. Valid Range: 0 to 7 Internal Base: 6 The selected address bit is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b4 + +11:8 + +f00 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 5. Half bus width mode: Selects the address bit used as column address bits 6. Valid Range: 0 to 7. Internal Base: 7. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b7 + +15:12 + +f000 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 8. Half bus width mode: Selects the address bit used as column address bit 9. Valid Range: 0 to 7, and 15. Internal Base: 10. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10.In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b8 + +19:16 + +f0000 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 9. Half bus width mode: Selects the address bit used as column address bit 11. (Column address bit 10 in LPDDR2 mode) Valid Range: 0 to 7, and 15 Internal Base: 11 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b9 + +23:20 + +f00000 + +f + +f00000 + +Full bus width mode: Selects the address bit used as column address bit 11. (Column address bit 10 in LPDDR2 mode) Half bus width mode: Selects the address bit used as column address bit 12. (Column address bit 11 in LPDDR2 mode) Valid Range: 0 to 7, and 15 Internal Base: 12 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b10 + +27:24 + +f000000 + +f + +f000000 + +Full bus width mode: Selects the address bit used as column address bit 12. (Column address bit 11 in LPDDR2 mode) Half bus width mode: Selects the address bit used as column address bit 13. (Column address bit 12 in LPDDR2 mode) Valid Range: 0 to 7, and 15. Internal Base: 13 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b11 + +31:28 + +f0000000 + +f + +f0000000 + +Full bus width mode: Selects the address bit used as column address bit 13. (Column address bit 12 in LPDDR2 mode) Half bus width mode: Unused. To make it unused, this should be set to 15. (Column address bit 13 in LPDDR2 mode) Valid Range: 0 to 7, and 15. Internal Base: 14. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+DRAM_addr_map_col@0XF8006040 + +31:0 + +ffffffff + + + +fff00000 + +Column address bits +
+

+

Register ( slcr )DRAM_addr_map_row

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_row + +0XF8006044 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_row_b0 + +3:0 + +f + +6 + +6 + +Selects the AXI address bits used as row address bit 0. Valid Range: 0 to 11. Internal Base: 9 The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field +
+reg_ddrc_addrmap_row_b1 + +7:4 + +f0 + +6 + +60 + +Selects the AXI address bits used as row address bit 1. Valid Range: 0 to 11. Internal Base: 10 The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_row_b2_11 + +11:8 + +f00 + +6 + +600 + +Selects the AXI address bits used as row address bits 2 to 11. Valid Range: 0 to 11. Internal Base: 11 (for row address bit 2) to 20 (for row address bit 11) The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_row_b12 + +15:12 + +f000 + +6 + +6000 + +Selects the AXI address bit used as row address bit 12. Valid Range: 0 to 8, Internal Base: 21 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 12 is set to 0. +
+reg_ddrc_addrmap_row_b13 + +19:16 + +f0000 + +6 + +60000 + +Selects the AXI address bit used as row address bit 13. Valid Range: 0 to 7, Internal Base: 22 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 13 is set to 0. +
+reg_ddrc_addrmap_row_b14 + +23:20 + +f00000 + +6 + +600000 + +Selects theAXI address bit used as row address bit 14. Valid Range: 0 to 6, Internal Base: 23 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 14 is set to 0. +
+reg_ddrc_addrmap_row_b15 + +27:24 + +f000000 + +f + +f000000 + +Selects the AXI address bit used as row address bit 15. Valid Range: 0 to 5, Internal Base: 24 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 15 is set to 0. +
+DRAM_addr_map_row@0XF8006044 + +31:0 + +fffffff + + + +f666666 + +Select DRAM row address bits +
+

+

Register ( slcr )DRAM_ODT_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_ODT_reg + +0XF8006048 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_local_odt + +13:12 + +3000 + +0 + +0 + +Value to drive on the 2-bit local_odt PHY outputs when output enable is not asserted and a read is in progress (where 'in progress' is defined as after a read command is issued and until all read data has been returned all the way to the controller.) Typically this is set to the value required to enable termination at the desired strength for read usage. +
+reg_phy_wr_local_odt + +15:14 + +c000 + +3 + +c000 + +Value to drive on the 2-bit local_odt PHY outputs when write levelling is enabled for DQS. +
+reg_phy_idle_local_odt + +17:16 + +30000 + +3 + +30000 + +Value to drive on the 2-bit local_odt PHY outputs when output enable is not asserted and a read is not in progress. Typically this is the value required to disable termination to save power when idle. +
+reserved_reg_ddrc_rank0_wr_odt + +5:3 + +38 + +1 + +8 + +Reserved. Do not modify. +
+reserved_reg_ddrc_rank0_rd_odt + +2:0 + +7 + +0 + +0 + +Reserved. Do not modify. +
+DRAM_ODT_reg@0XF8006048 + +31:0 + +3f03f + + + +3c008 + +DRAM ODT control +
+

+

Register ( slcr )phy_cmd_timeout_rddata_cpt

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_cmd_timeout_rddata_cpt + +0XF8006050 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_cmd_to_data + +3:0 + +f + +0 + +0 + +Not used in DFI PHY. +
+reg_phy_wr_cmd_to_data + +7:4 + +f0 + +0 + +0 + +Not used in DFI PHY. +
+reg_phy_rdc_we_to_re_delay + +11:8 + +f00 + +8 + +800 + +This register value + 1 give the number of clock cycles between writing into the Read Capture FIFO and the read operation. The setting of this register determines the read data timing and depends upon total delay in the system for read operation which include fly-by delays, trace delay, clkout_invert etc. This is used only if reg_phy_use_fixed_re=1. +
+reg_phy_rdc_fifo_rst_disable + +15:15 + +8000 + +0 + +0 + +When 1, disable counting the number of times the Read Data Capture FIFO has been reset when the FIFO was not empty. +
+reg_phy_use_fixed_re + +16:16 + +10000 + +1 + +10000 + +When 1: PHY generates FIFO read enable after fixed number of clock cycles as defined by reg_phy_rdc_we_to_re_delay[3:0]. When 0: PHY uses the not_empty method to do the read enable generation. Note: This port must be set HIGH during training/leveling process i.e. when ddrc_dfi_wrlvl_en/ ddrc_dfi_rdlvl_en/ ddrc_dfi_rdlvl_gate_en port is set HIGH. +
+reg_phy_rdc_fifo_rst_err_cnt_clr + +17:17 + +20000 + +0 + +0 + +Clear/reset for counter rdc_fifo_rst_err_cnt[3:0]. 0: no clear, 1: clear. Note: This is a synchronous dynamic signal that must have timing closed. +
+reg_phy_dis_phy_ctrl_rstn + +18:18 + +40000 + +0 + +0 + +Disable the reset from Phy Ctrl macro. 1: PHY Ctrl macro reset port is always HIGH 0: PHY Ctrl macro gets power on reset. +
+reg_phy_clk_stall_level + +19:19 + +80000 + +0 + +0 + +1: stall clock, for DLL aging control +
+reg_phy_gatelvl_num_of_dq0 + +27:24 + +f000000 + +7 + +7000000 + +This register value determines register determines the number of samples used for each ratio increment during Gate Training. Num_of_iteration = reg_phy_gatelvl_num_of_dq0 + 1 The recommended value for this register is 8. Accuracy is better with higher value, but this will cause leveling to run longer. +
+reg_phy_wrlvl_num_of_dq0 + +31:28 + +f0000000 + +7 + +70000000 + +This register value determines register determines the number of samples used for each ratio increment during Write Leveling. Num_of_iteration = reg_phy_wrlvl_num_of_dq0 + 1 The recommended value for this register is 8. Accuracy is better with higher value, but this will cause leveling to run longer. +
+phy_cmd_timeout_rddata_cpt@0XF8006050 + +31:0 + +ff0f8fff + + + +77010800 + +PHY command time out and read data capture FIFO +
+

+

Register ( slcr )DLL_calib

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DLL_calib + +0XF8006058 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dis_dll_calib + +16:16 + +10000 + +0 + +0 + +When 1, disable dll_calib generated by the controller. The core should issue the dll_calib signal using co_gs_dll_calib input. This input is changeable on the fly. When 0, controller will issue dll_calib periodically +
+DLL_calib@0XF8006058 + +31:0 + +10000 + + + +0 + +DLL calibration +
+

+

Register ( slcr )ODT_delay_hold

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ODT_delay_hold + +0XF800605C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_rd_odt_delay + +3:0 + +f + +3 + +3 + +UNUSED +
+reg_ddrc_wr_odt_delay + +7:4 + +f0 + +0 + +0 + +The delay, in clock cycles, from issuing a write command to setting ODT values associated with that command. ODT setting should remain constant for the entire time that DQS is driven by the controller. The suggested value for DDR2 is WL - 5 and for DDR3 is 0. WL is Write latency. DDR2 ODT has a 2-cycle on-time delay and a 2.5-cycle off-time delay. ODT is not applicable to LPDDR2. +
+reg_ddrc_rd_odt_hold + +11:8 + +f00 + +0 + +0 + +Unused +
+reg_ddrc_wr_odt_hold + +15:12 + +f000 + +5 + +5000 + +Cycles to hold ODT for a Write Command. When 0x0, ODT signal is ON for 1 cycle. When 0x1, it is ON for 2 cycles, etc. The values to program in different modes are : DRAM Burst of 4 -2, DRAM Burst of 8 -4 +
+ODT_delay_hold@0XF800605C + +31:0 + +ffff + + + +5003 + +ODT delay and ODT hold +
+

+

Register ( slcr )ctrl_reg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg1 + +0XF8006060 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_pageclose + +0:0 + +1 + +0 + +0 + +If true, bank will be closed and kept closed if no transactions are available for it. If false, bank will remain open until there is a need to close it (to open a different page, or for page timeout or refresh timeout.) This does not apply when auto-refresh is used. +
+reg_ddrc_lpr_num_entries + +6:1 + +7e + +1f + +3e + +Number of entries in the low priority transaction store is this value plus 1. In this design, by default all read ports are treated as low priority and hence the value of 0x1F. The hpr_num_entries is 32 minus this value. Bit [6] is ignored. +
+reg_ddrc_auto_pre_en + +7:7 + +80 + +0 + +0 + +When set, most reads and writes will be issued with auto-precharge. (Exceptions can be made for collision cases.) +
+reg_ddrc_refresh_update_level + +8:8 + +100 + +0 + +0 + +Toggle this signal to indicate that refresh register(s) have been updated. The value will be automatically updated when exiting soft reset. So it does not need to be toggled initially. Dynamic Bit Field. +
+reg_ddrc_dis_wc + +9:9 + +200 + +0 + +0 + +Disable Write Combine: 0: enable 1: disable +
+reg_ddrc_dis_collision_page_opt + +10:10 + +400 + +0 + +0 + +When this is set to 0, auto-precharge will be disabled for the flushed command in a collision case. Collision cases are write followed by read to same address, read followed by write to same address, or write followed by write to same address with DIS_WC bit = 1 (where 'same address' comparisons exclude the two address bits representing critical word). +
+reg_ddrc_selfref_en + +12:12 + +1000 + +0 + +0 + +If 1, then the controller will put the DRAM into self refresh when the transaction store is empty. Dynamic Bit Field. +
+ctrl_reg1@0XF8006060 + +31:0 + +17ff + + + +3e + +Controller 1 +
+

+

Register ( slcr )ctrl_reg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg2 + +0XF8006064 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_go2critical_hysteresis + +12:5 + +1fe0 + +0 + +0 + +Describes the number of cycles that co_gs_go2critical_rd or co_gs_go2critical_wr must be asserted before the corresponding queue moves to the 'critical' state in the DDRC. The arbiter controls the co_gs_go2critical_* signals; it is designed for use with this hysteresis field set to 0. +
+reg_arb_go2critical_en + +17:17 + +20000 + +1 + +20000 + +0: Keep reg_ddrc_go2critical_wr and reg_ddrc_go2critical_rd signals going to DDRC at 0. 1: Set reg_ddrc_go2critical_wr and reg_ddrc_go2critical_rd signals going to DDRC based on Urgent input coming from AXI master. +
+ctrl_reg2@0XF8006064 + +31:0 + +21fe0 + + + +20000 + +Controller 2 +
+

+

Register ( slcr )ctrl_reg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg3 + +0XF8006068 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_wrlvl_ww + +7:0 + +ff + +41 + +41 + +DDR2: not applicable. LPDDR2 and DDR3: Write leveling write-to-write delay. Specifies the minimum number of clock cycles from the assertion of a ddrc_dfi_wrlvl_strobe signal to the next ddrc_dfi_wrlvl_strobe signal. Only applicable when connecting to PHYs operating in PHY RdLvl Evaluation mode. Recommended value is: (RL + reg_phy_rdc_we_to_re_delay + 50) +
+reg_ddrc_rdlvl_rr + +15:8 + +ff00 + +41 + +4100 + +DDR2 and LPDDR2: not applicable. DDR3: Read leveling read-to-read delay. Specifies the minimum number of clock cycles from the assertion of a read command to the next read command. Only applicable when connecting to PHYs operating in PHY RdLvl Evaluation mode. +
+reg_ddrc_dfi_t_wlmrd + +25:16 + +3ff0000 + +28 + +280000 + +DDR2 and LPDDR2: not applicable. DDR3: First DQS/DQS# rising edge after write leveling mode is programmed. This is same as the tMLRD value from the DRAM spec. +
+ctrl_reg3@0XF8006068 + +31:0 + +3ffffff + + + +284141 + +Controller 3 +
+

+

Register ( slcr )ctrl_reg4

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg4 + +0XF800606C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+dfi_t_ctrlupd_interval_min_x1024 + +7:0 + +ff + +10 + +10 + +This is the minimum amount of time between Controller initiated DFI update requests (which will be executed whenever the controller is idle). Set this number higher to reduce the frequency of update requests, which can have a small impact on the latency of the first read request when the controller is idle. Units: 1024 clocks +
+dfi_t_ctrlupd_interval_max_x1024 + +15:8 + +ff00 + +16 + +1600 + +This is the maximum amount of time between Controller initiated DFI update requests. This timer resets with each update request; when the timer expires, traffic is blocked for a few cycles. PHY can use this idle time to recalibrate the delay lines to the DLLs. The DLL calibration is also used to reset PHY FIFO pointers in case of data capture errors. Updates are required to maintain calibration over PVT, but frequent updates may impact performance. Units: 1024 clocks +
+ctrl_reg4@0XF800606C + +31:0 + +ffff + + + +1610 + +Controller 4 +
+

+

Register ( slcr )ctrl_reg5

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg5 + +0XF8006078 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dfi_t_ctrl_delay + +3:0 + +f + +1 + +1 + +Specifies the number of DFI clock cycles after an assertion or deassertion of the DFI control signals that the control signals at the PHY-DRAM interface reflect the assertion or de-assertion. If the DFI clock and the memory clock are not phase-aligned, this timing parameter should be rounded up to the next integer value. +
+reg_ddrc_dfi_t_dram_clk_disable + +7:4 + +f0 + +1 + +10 + +Specifies the number of DFI clock cycles from the assertion of the ddrc_dfi_dram_clk_disable signal on the DFI until the clock to the DRAM memory devices, at the PHY-DRAM boundary, maintains a low value. If the DFI clock and the memory clock are not phase aligned, this timing parameter should be rounded up to the next integer value. +
+reg_ddrc_dfi_t_dram_clk_enable + +11:8 + +f00 + +1 + +100 + +Specifies the number of DFI clock cycles from the de-assertion of the ddrc_dfi_dram_clk_disable signal on the DFI until the first valid rising edge of the clock to the DRAM memory devices at the PHY-DRAM boundary. If the DFI clock and the memory clock are not phase aligned, this timing parameter should be rounded up to the next integer value. +
+reg_ddrc_t_cksre + +15:12 + +f000 + +6 + +6000 + +This is the time after Self Refresh Entry that CK is maintained as a valid clock. Specifies the clock disable delay after SRE. Recommended settings: LPDDR2: 2 DDR2: 1 DDR3: tCKSRE +
+reg_ddrc_t_cksrx + +19:16 + +f0000 + +6 + +60000 + +This is the time before Self Refresh Exit that CK is maintained as a valid clock before issuing SRX. Specifies the clock stable time before SRX. Recommended settings: LPDDR2: 2 DDR2: 1 DDR3: tCKSRX +
+reg_ddrc_t_ckesr + +25:20 + +3f00000 + +4 + +400000 + +Minimum CKE low width for Self Refresh entry to exit Timing in memory clock cycles. Recommended settings: LPDDR2: tCKESR DDR2: tCKE DDR3: tCKE+1 +
+ctrl_reg5@0XF8006078 + +31:0 + +3ffffff + + + +466111 + +Controller register 5 +
+

+

Register ( slcr )ctrl_reg6

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg6 + +0XF800607C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_ckpde + +3:0 + +f + +2 + +2 + +This is the time after Power Down Entry that CK is maintained as a valid clock. Specifies the clock disable delay after PDE. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckpdx + +7:4 + +f0 + +2 + +20 + +This is the time before Power Down Exit that CK is maintained as a valid clock before issuing PDX. Specifies the clock stable time before PDX. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckdpde + +11:8 + +f00 + +2 + +200 + +This is the time after Deep Power Down Entry that CK is maintained as a valid clock. Specifies the clock disable delay after DPDE. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckdpdx + +15:12 + +f000 + +2 + +2000 + +This is the time before Deep Power Down Exit that CK is maintained as a valid clock before issuing DPDX. Specifies the clock stable time before DPDX. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckcsx + +19:16 + +f0000 + +3 + +30000 + +This is the time before Clock Stop Exit that CK is maintained as a valid clock before issuing DPDX. Specifies the clock stable time before next command after Clock Stop Exit. Recommended setting for LPDDR2: tXP + 2. +
+ctrl_reg6@0XF800607C + +31:0 + +fffff + + + +32222 + +Controller register 6 +
+

+

Register ( slcr )CHE_T_ZQ

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_T_ZQ + +0XF80060A4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dis_auto_zq + +0:0 + +1 + +0 + +0 + +1=disable controller generation of ZQCS command. Co_gs_zq_calib_short can be used instead to control ZQ calibration commands. 0=internally generate ZQCS commands based on reg_ddrc_t_zq_short_interval_x1024 This is only present for implementations supporting DDR3 and LPDDR2 devices. +
+reg_ddrc_ddr3 + +1:1 + +2 + +1 + +2 + +Indicates operating in DDR2/DDR3 mode. Default value is set for DDR3. +
+reg_ddrc_t_mod + +11:2 + +ffc + +200 + +800 + +Mode register set command update delay (minimum d'128) +
+reg_ddrc_t_zq_long_nop + +21:12 + +3ff000 + +200 + +200000 + +DDR2: not applicable. LPDDR2 and DDR3: Number of cycles of NOP required after a ZQCL (ZQ calibration long) command is issued to DRAM. Units: Clock cycles. +
+reg_ddrc_t_zq_short_nop + +31:22 + +ffc00000 + +40 + +10000000 + +DDR2: not applicable. LPDDR2 and DDR3: Number of cycles of NOP required after a ZQCS (ZQ calibration short) command is issued to DRAM. Units: Clock cycles. +
+CHE_T_ZQ@0XF80060A4 + +31:0 + +ffffffff + + + +10200802 + +ZQ parameters +
+

+

Register ( slcr )CHE_T_ZQ_Short_Interval_Reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_T_ZQ_Short_Interval_Reg + +0XF80060A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+t_zq_short_interval_x1024 + +19:0 + +fffff + +cb73 + +cb73 + +DDR2: not used. LPDDR2 and DDR3: Average interval to wait between automatically issuing ZQCS (ZQ calibration short) commands to DDR3 devices. Meaningless if reg_ddrc_dis_auto_zq=1. Units: 1024 Clock cycles. +
+dram_rstn_x1024 + +27:20 + +ff00000 + +69 + +6900000 + +Number of cycles to assert DRAM reset signal during init sequence. Units: 1024 Clock cycles. Applicable for DDR3 only. +
+CHE_T_ZQ_Short_Interval_Reg@0XF80060A8 + +31:0 + +fffffff + + + +690cb73 + +Misc parameters +
+

+

Register ( slcr )deep_pwrdwn_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+deep_pwrdwn_reg + +0XF80060AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+deeppowerdown_en + +0:0 + +1 + +0 + +0 + +DDR2 and DDR3: not used. LPDDR2: 0: Brings Controller out of Deep Powerdown mode. 1: Puts DRAM into Deep Powerdown mode when the transaction store is empty. For performance only. Dynamic Bit Field. +
+deeppowerdown_to_x1024 + +8:1 + +1fe + +ff + +1fe + +DDR2 and DDR3: not sued. LPDDR2: Minimum deep power down time. DDR exits from deep power down mode immediately after reg_ddrc_deeppowerdown_en is deasserted. Value from the spec is 500us. Units are in 1024 clock cycles. For performance only. +
+deep_pwrdwn_reg@0XF80060AC + +31:0 + +1ff + + + +1fe + +Deep powerdown (LPDDR2) +
+

+

Register ( slcr )reg_2c

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_2c + +0XF80060B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+dfi_wrlvl_max_x1024 + +11:0 + +fff + +fff + +fff + +Write leveling maximum time. Specifies the maximum number of clock cycles that the controller will wait for a response (phy_dfi_wrlvl_resp) to a write leveling enable signal (ddrc_dfi_wrlvl_en). Only applicable when connecting to PHY's operating in 'PHY WrLvl Evaluation' mode. Typical value 0xFFF Units 1024 clocks +
+dfi_rdlvl_max_x1024 + +23:12 + +fff000 + +fff + +fff000 + +Read leveling maximum time. Specifies the maximum number of clock cycles that the controller will wait for a response (phy_dfi_rdlvl_resp) to a read leveling enable signal (ddrc_dfi_rdlvl_en or ddrc_dfi_rdlvl_gate_en). Only applicable when connecting to PHY's operating in 'PHY RdLvl Evaluation' mode. Typical value 0xFFF Units 1024 clocks +
+ddrc_reg_twrlvl_max_error + +24:24 + +1000000 + +0 + +0 + +When '1' indicates that the reg_ddrc_dfi_wrlvl_max_x1024 timer has timed out. This is a Clear-on-Write register. If write leveling timed out, an error is indicated by the DDRC and this bit gets set. The value is held until it is cleared. Clearing is done by writing a '0' to this register. Only present in designs that support DDR3. +
+ddrc_reg_trdlvl_max_error + +25:25 + +2000000 + +0 + +0 + +DDR2: not applicable. LPDDR2 and DDR3: When '1' indicates that the reg_ddrc_dfi_rdrlvl_max_x1024 timer has timed out. This is a Clear-on-Write register. If read leveling or gate training timed out, an error is indicated by the DDRC and this bit gets set. The value is held at that value until it is cleared. Clearing is done by writing a '0' to this register. +
+reg_ddrc_dfi_wr_level_en + +26:26 + +4000000 + +1 + +4000000 + +0: Write leveling disabled. 1: Write leveling mode has been enabled as part of init sequence; Valid only for DDR3 DFI designs +
+reg_ddrc_dfi_rd_dqs_gate_level + +27:27 + +8000000 + +1 + +8000000 + +0: Read DQS gate leveling is disabled. 1: Read DQS Gate Leveling mode has been enabled as part of init sequence; Valid only for DDR3 DFI designs +
+reg_ddrc_dfi_rd_data_eye_train + +28:28 + +10000000 + +1 + +10000000 + +DDR2: not applicable. LPDDR2 and DDR3: 0: 1: Read Data Eye training mode has been enabled as part of init sequence. +
+reg_2c@0XF80060B0 + +31:0 + +1fffffff + + + +1cffffff + +Training control +
+

+

Register ( slcr )reg_2d

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_2d + +0XF80060B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_skip_ocd + +9:9 + +200 + +1 + +200 + +This register must be kept at 1'b1. 1'b0 is NOT supported. 1: Indicates the controller to skip OCD adjustment step during DDR2 initialization. OCD_Default and OCD_Exit are performed instead. 0: Not supported. +
+reg_2d@0XF80060B4 + +31:0 + +200 + + + +200 + +Misc Debug +
+

+

Register ( slcr )dfi_timing

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+dfi_timing + +0XF80060B8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dfi_t_rddata_en + +4:0 + +1f + +6 + +6 + +Time from the assertion of a READ command on the DFI interface to the assertion of the phy_dfi_rddata_en signal. DDR2 and DDR3: RL - 1 LPDDR: RL Where RL is read latency of DRAM. +
+reg_ddrc_dfi_t_ctrlup_min + +14:5 + +7fe0 + +3 + +60 + +Specifies the minimum number of clock cycles that the ddrc_dfi_ctrlupd_req signal must be asserted. +
+reg_ddrc_dfi_t_ctrlup_max + +24:15 + +1ff8000 + +40 + +200000 + +Specifies the maximum number of clock cycles that the ddrc_dfi_ctrlupd_req signal can assert. +
+dfi_timing@0XF80060B8 + +31:0 + +1ffffff + + + +200066 + +DFI timing +
+

+

RESET ECC ERROR

+

Register ( slcr )CHE_ECC_CONTROL_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_CONTROL_REG_OFFSET + +0XF80060C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Clear_Uncorrectable_DRAM_ECC_error + +0:0 + +1 + +1 + +1 + +Writing 1 to this bit will clear the uncorrectable log valid bit and the uncorrectable error counters. +
+Clear_Correctable_DRAM_ECC_error + +1:1 + +2 + +1 + +2 + +Writing 1 to this bit will clear the correctable log valid bit and the correctable error counters. +
+CHE_ECC_CONTROL_REG_OFFSET@0XF80060C4 + +31:0 + +3 + + + +3 + +ECC error clear +
+

+

Register ( slcr )CHE_ECC_CONTROL_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_CONTROL_REG_OFFSET + +0XF80060C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Clear_Uncorrectable_DRAM_ECC_error + +0:0 + +1 + +0 + +0 + +Writing 1 to this bit will clear the uncorrectable log valid bit and the uncorrectable error counters. +
+Clear_Correctable_DRAM_ECC_error + +1:1 + +2 + +0 + +0 + +Writing 1 to this bit will clear the correctable log valid bit and the correctable error counters. +
+CHE_ECC_CONTROL_REG_OFFSET@0XF80060C4 + +31:0 + +3 + + + +0 + +ECC error clear +
+

+

Register ( slcr )CHE_CORR_ECC_LOG_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_CORR_ECC_LOG_REG_OFFSET + +0XF80060C8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CORR_ECC_LOG_VALID + +0:0 + +1 + +0 + +0 + +Set to 1 when a correctable ECC error is captured. As long as this is 1 no further ECC errors will be captured. This is cleared when a 1 is written to register bit[1] of ECC CONTROL REGISTER (0x31) +
+ECC_CORRECTED_BIT_NUM + +7:1 + +fe + +0 + +0 + +Indicator of the bit number syndrome in error for single-bit errors. The field is 7-bit wide to handle 72-bits of data. This is an encoded value with ECC bits placed in between data. The encoding is given in section 5.4 Correctable bit number from the lowest error lane is reported here. There are only 13-valid bits going to an ECC lane (8-data + 5-ECC). Only 4-bits are needed to encode a max value of d'13. Bit[7] of this register is used to indicate the exact byte lane. When a error happens, if CORR_ECC_LOG_COL[0] from register 0x33 is 1'b0, then the error happened in Lane 0 or 1. If CORR_ECC_LOG_COL[0] is 1'b1, then the error happened in Lane 2 or 3. Bit[7] of this register indicates whether the error is from upper or lower byte lane. If it is 0, then it is lower byte lane and if it is 1, then it is upper byte lane. Together with CORR_ECC_LOG_COL[0] and bit[7] of this register, the exact byte lane with correctable error can be determined. +
+CHE_CORR_ECC_LOG_REG_OFFSET@0XF80060C8 + +31:0 + +ff + + + +0 + +ECC error correction +
+

+

Register ( slcr )CHE_UNCORR_ECC_LOG_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_UNCORR_ECC_LOG_REG_OFFSET + +0XF80060DC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNCORR_ECC_LOG_VALID + +0:0 + +1 + +0 + +0 + +Set to 1 when an uncorrectable ECC error is captured. As long as this is a 1, no further ECC errors will be captured. This is cleared when a 1 is written to register bit[0] of ECC CONTROL REGISTER (0x31). +
+CHE_UNCORR_ECC_LOG_REG_OFFSET@0XF80060DC + +31:0 + +1 + + + +0 + +ECC unrecoverable error status +
+

+

Register ( slcr )CHE_ECC_STATS_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_STATS_REG_OFFSET + +0XF80060F0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+STAT_NUM_CORR_ERR + +15:8 + +ff00 + +0 + +0 + +Returns the number of correctable ECC errors seen since the last read. Counter saturates at max value. This is cleared when a 1 is written to register bit[1] of ECC CONTROL REGISTER (0x58). +
+STAT_NUM_UNCORR_ERR + +7:0 + +ff + +0 + +0 + +Returns the number of uncorrectable errors since the last read. Counter saturates at max value. This is cleared when a 1 is written to register bit[0] of ECC CONTROL REGISTER (0x58). +
+CHE_ECC_STATS_REG_OFFSET@0XF80060F0 + +31:0 + +ffff + + + +0 + +ECC error count +
+

+

Register ( slcr )ECC_scrub

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ECC_scrub + +0XF80060F4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_ecc_mode + +2:0 + +7 + +0 + +0 + +DRAM ECC Mode. The only valid values that works for this project are 000 (No ECC) and 100 (SEC/DED over 1-beat). To run the design in ECC mode, set reg_ddrc_data_bus_width to 2'b01 (Half bus width) and reg_ddrc_ecc_mode to 100. In this mode, there will be 16-data bits + 6-bit ECC on the DRAM bus. Controller must NOT be put in full bus width mode, when ECC is turned ON. 000 : No ECC, 001: Reserved 010: Parity 011: Reserved 100: SEC/DED over 1-beat 101: SEC/DED over multiple beats 110: Device Correction 111: Reserved +
+reg_ddrc_dis_scrub + +3:3 + +8 + +1 + +8 + +0: Enable ECC scrubs (valid only when reg_ddrc_ecc_mode = 100). 1: Disable ECC scrubs +
+ECC_scrub@0XF80060F4 + +31:0 + +f + + + +8 + +ECC mode/scrub +
+

+

Register ( slcr )phy_rcvr_enable

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rcvr_enable + +0XF8006114 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_dif_on + +3:0 + +f + +0 + +0 + +Value to drive to IO receiver enable pins when turning it ON. When NOT in powerdown or self-refresh (when CKE=1) this value will be sent to the IOs to control receiver on/off. IOD is the size specified by the IO_DIFEN_SIZE parameter. +
+reg_phy_dif_off + +7:4 + +f0 + +0 + +0 + +Value to drive to IO receiver enable pins when turning it OFF. When in powerdown or self-refresh (CKE=0) this value will be sent to the IOs to control receiver on/off. IOD is the size specified by the IO_DIFEN_SIZE parameter. Depending on the IO, one of these signals dif_on or dif_off can be used. +
+phy_rcvr_enable@0XF8006114 + +31:0 + +ff + + + +0 + +Phy receiver enable register +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF8006118 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF8006118 + +31:0 + +7fffffcf + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF800611C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF800611C + +31:0 + +7fffffcf + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF8006120 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF8006120 + +31:0 + +7fffffcf + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF8006124 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF8006124 + +31:0 + +7fffffcf + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF800612C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF800612C + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF8006130 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF8006130 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF8006134 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF8006134 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF8006138 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF8006138 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF8006140 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL 1: overwrite the delay/tap value for read DQS slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF8006140 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF8006144 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL 1: overwrite the delay/tap value for read DQS slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF8006144 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF8006148 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL 1: overwrite the delay/tap value for read DQS slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF8006148 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF800614C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_rd_dqs_slave_ratio for the read DQS slave DLL 1: overwrite the delay/tap value for read DQS slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF800614C + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF8006154 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. (Used to program the manual training ratio value) +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF8006154 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF8006158 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. (Used to program the manual training ratio value) +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF8006158 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF800615C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. (Used to program the manual training ratio value) +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF800615C + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF8006160 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. (Used to program the manual training ratio value) +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: Use reg_phy_wr_dqs_slave_ratio for the write DQS slave DLL 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF8006160 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF8006168 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when reg_phy_fifo_we_in_force is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +0: Use reg_phy_fifo_we_slave_ratio as ratio value for fifo_we_X slave DLL 1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the reg_phy_fifo_we_in_delay bus. i.e. The 'force' bit selects between specifying the delay in 'ratio' units or tap delay units +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when reg_phy_fifo_we_in_force is set to 1. +
+phy_we_cfg@0XF8006168 + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF800616C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when reg_phy_fifo_we_in_force is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +0: Use reg_phy_fifo_we_slave_ratio as ratio value for fifo_we_X slave DLL 1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the reg_phy_fifo_we_in_delay bus. i.e. The 'force' bit selects between specifying the delay in 'ratio' units or tap delay units +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when reg_phy_fifo_we_in_force is set to 1. +
+phy_we_cfg@0XF800616C + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF8006170 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when reg_phy_fifo_we_in_force is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +0: Use reg_phy_fifo_we_slave_ratio as ratio value for fifo_we_X slave DLL 1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the reg_phy_fifo_we_in_delay bus. i.e. The 'force' bit selects between specifying the delay in 'ratio' units or tap delay units +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when reg_phy_fifo_we_in_force is set to 1. +
+phy_we_cfg@0XF8006170 + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF8006174 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when reg_phy_fifo_we_in_force is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +0: Use reg_phy_fifo_we_slave_ratio as ratio value for fifo_we_X slave DLL 1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the reg_phy_fifo_we_in_delay bus. i.e. The 'force' bit selects between specifying the delay in 'ratio' units or tap delay units +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when reg_phy_fifo_we_in_force is set to 1. +
+phy_we_cfg@0XF8006174 + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF800617C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: Selects reg_phy_wr_data_slave_ratio for write data slave DLL 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF800617C + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF8006180 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: Selects reg_phy_wr_data_slave_ratio for write data slave DLL 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF8006180 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF8006184 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: Selects reg_phy_wr_data_slave_ratio for write data slave DLL 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF8006184 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF8006188 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: Selects reg_phy_wr_data_slave_ratio for write data slave DLL 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF8006188 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 0. +
+

+

Register ( slcr )reg_64

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_64 + +0XF8006190 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_bl2 + +1:1 + +2 + +0 + +0 + +Reserved for future Use. +
+reg_phy_at_spd_atpg + +2:2 + +4 + +0 + +0 + +0: run scan test at slow clock speed but with high coverage 1: run scan test at full clock speed but with less coverage During normal function mode, this port must be set 0. +
+reg_phy_bist_enable + +3:3 + +8 + +0 + +0 + +Enable the internal BIST generation and checker logic when this port is set HIGH. Setting this port as 0 will stop the BIST generator/checker. In order to run BIST tests, this port must be set along with reg_phy_loopback. +
+reg_phy_bist_force_err + +4:4 + +10 + +0 + +0 + +This register bit is used to check that BIST checker is not giving false pass. When this port is set 1, data bit gets inverted before sending out to the external memory and BIST checker must return a mismatch error. +
+reg_phy_bist_mode + +6:5 + +60 + +0 + +0 + +The mode bits select the pattern type generated by the BIST generator. All the patterns are transmitted continuously once enabled. 00: constant pattern (0 repeated on each DQ bit) 01: low freq pattern (00001111 repeated on each DQ bit) 10: PRBS pattern (2^7-1 PRBS pattern repeated on each DQ bit) Each DQ bit always has same data value except when early shifting in PRBS mode is requested 11: reserved +
+reg_phy_invert_clkout + +7:7 + +80 + +1 + +80 + +Inverts the polarity of DRAM clock. 0: core clock is passed on to DRAM 1: inverted core clock is passed on to DRAM. Use this when CLK can arrive at a DRAM device ahead of DQS or coincidence with DQS based on board topology. This effectively delays the CLK to the DRAM device by half -cycle, providing a CLK edge that DQS can align to during leveling. +
+reg_phy_sel_logic + +9:9 + +200 + +0 + +0 + +Selects one of the two read leveling algorithms.'b0: Select algorithm # 1'b1: Select algorithm # 2 Please refer to Read Data Eye Training section in PHY User Guide for details about the Read Leveling algorithms +
+reg_phy_ctrl_slave_ratio + +19:10 + +ffc00 + +100 + +40000 + +Ratio value for address/command launch timing in phy_ctrl macro. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_ctrl_slave_force + +20:20 + +100000 + +0 + +0 + +0: Use reg_phy_ctrl_slave_ratio for address/command timing slave DLL 1: overwrite the delay/tap value for address/command timing slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_ctrl_slave_delay + +27:21 + +fe00000 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for address/command timing slave DLL with this value. This is a bit value, the remaining 2 bits are in register 0x65 bits[19:18]. +
+reg_phy_lpddr + +29:29 + +20000000 + +0 + +0 + +0: DDR2 or DDR3. 1: LPDDR2. +
+reg_phy_cmd_latency + +30:30 + +40000000 + +0 + +0 + +If set to 1, command comes to phy_ctrl through a flop. +
+reg_64@0XF8006190 + +31:0 + +6ffffefe + + + +40080 + +Training control 2 +
+

+

Register ( slcr )reg_65

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_65 + +0XF8006194 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_rl_delay + +4:0 + +1f + +2 + +2 + +This delay determines when to select the active rank's ratio logic delay for Write Data and Write DQS slave delay lines after PHY receives a write command at Control Interface. The programmed value must be (Write Latency - 4) with a minimum value of 1. +
+reg_phy_rd_rl_delay + +9:5 + +3e0 + +4 + +80 + +This delay determines when to select the active rank's ratio logic delay for Read Data and Read DQS slave delay lines after PHY receives a read command at Control Interface. The programmed value must be (Read Latency - 3) with a minimum value of 1. +
+reg_phy_dll_lock_diff + +13:10 + +3c00 + +f + +3c00 + +The Maximum number of delay line taps variation allowed while maintaining the master DLL lock. When the PHY is in locked state and the variation on the clock exceeds the variation indicated by the register, the lock signal is deasserted +
+reg_phy_use_wr_level + +14:14 + +4000 + +1 + +4000 + +Write Leveling training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by write leveling Note: This is a Synchronous dynamic signal that requires timing closure. +
+reg_phy_use_rd_dqs_gate_level + +15:15 + +8000 + +1 + +8000 + +Read DQS Gate training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by DQS gate leveling Note: This is a Synchronous dynamic signal that requires timing closure. +
+reg_phy_use_rd_data_eye_level + +16:16 + +10000 + +1 + +10000 + +Read Data Eye training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by data eye leveling Note: This is a Synchronous dynamic signal that requires timing closure +
+reg_phy_dis_calib_rst + +17:17 + +20000 + +0 + +0 + +Disable the dll_calib (internally generated) signal from resetting the Read Capture FIFO pointers and portions of phy_data. Note: dll_calib is (i) generated by dfi_ctrl_upd_req or (ii) by the PHY when it detects that the clock frequency variation has exceeded the bounds set by reg_phy_dll_lock_diff or (iii) periodically throughout the leveling process. dll_calib will update the slave DL with PVT-compensated values according to master DLL outputs +
+reg_phy_ctrl_slave_delay + +19:18 + +c0000 + +0 + +0 + +If reg-phy_rd_dqs_slave_force is 1, replace delay/tap value for address/command timing slave DLL with this value +
+reg_65@0XF8006194 + +31:0 + +fffff + + + +1fc82 + +Training control 3 +
+

+

Register ( slcr )page_mask

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+page_mask + +0XF8006204 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_page_addr_mask + +31:0 + +ffffffff + +0 + +0 + +Set this register based on the value programmed on the reg_ddrc_addrmap_* registers. Set the Column address bits to 0. Set the Page and Bank address bits to 1. This is used for calculating page_match inside the slave modules in Arbiter. The page_match is considered during the arbitration process. This mask applies to 64-bit address and not byte address. Setting this value to 0 disables transaction prioritization based on page/bank match. +
+page_mask@0XF8006204 + +31:0 + +ffffffff + + + +0 + +Page mask +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF8006208 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+axi_priority_wr_port@0XF8006208 + +31:0 + +703ff + + + +3ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF800620C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+axi_priority_wr_port@0XF800620C + +31:0 + +703ff + + + +3ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF8006210 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+axi_priority_wr_port@0XF8006210 + +31:0 + +703ff + + + +3ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF8006214 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+axi_priority_wr_port@0XF8006214 + +31:0 + +703ff + + + +3ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF8006218 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF8006218 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF800621C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF800621C + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF8006220 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF8006220 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF8006224 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF8006224 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )lpddr_ctrl0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl0 + +0XF80062A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_lpddr2 + +0:0 + +1 + +0 + +0 + +0: DDR2 or DDR3 in use. 1: LPDDR2 in Use. +
+reg_ddrc_derate_enable + +2:2 + +4 + +0 + +0 + +0: Timing parameter derating is disabled. 1: Timing parameter derating is enabled using MR4 read value. This feature should only be enabled after LPDDR2 initialization is completed +
+reg_ddrc_mr4_margin + +11:4 + +ff0 + +0 + +0 + +UNUSED +
+lpddr_ctrl0@0XF80062A8 + +31:0 + +ff5 + + + +0 + +LPDDR2 Control 0 +
+

+

Register ( slcr )lpddr_ctrl1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl1 + +0XF80062AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_mr4_read_interval + +31:0 + +ffffffff + +0 + +0 + +Interval between two MR4 reads, USED to derate the timing parameters. +
+lpddr_ctrl1@0XF80062AC + +31:0 + +ffffffff + + + +0 + +LPDDR2 Control 1 +
+

+

Register ( slcr )lpddr_ctrl2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl2 + +0XF80062B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_min_stable_clock_x1 + +3:0 + +f + +5 + +5 + +Time to wait after the first CKE high, tINIT2. Units: 1 clock cycle. LPDDR2 typically requires 5 x tCK delay. +
+reg_ddrc_idle_after_reset_x32 + +11:4 + +ff0 + +12 + +120 + +Idle time after the reset command, tINIT4. Units: 32 clock cycles. +
+reg_ddrc_t_mrw + +21:12 + +3ff000 + +5 + +5000 + +Time to wait during load mode register writes. Present only in designs configured to support LPDDR2. LPDDR2 typically requires value of 5. +
+lpddr_ctrl2@0XF80062B0 + +31:0 + +3fffff + + + +5125 + +LPDDR2 Control 2 +
+

+

Register ( slcr )lpddr_ctrl3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl3 + +0XF80062B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_max_auto_init_x1024 + +7:0 + +ff + +a8 + +a8 + +Maximum duration of the auto initialization, tINIT5. Units: 1024 clock cycles. LPDDR2 typically requires 10 us. +
+reg_ddrc_dev_zqinit_x32 + +17:8 + +3ff00 + +12 + +1200 + +ZQ initial calibration, tZQINIT. Units: 32 clock cycles. LPDDR2 typically requires 1 us. +
+lpddr_ctrl3@0XF80062B4 + +31:0 + +3ffff + + + +12a8 + +LPDDR2 Control 3 +
+

+

POLL ON DCI STATUS

+

Register ( slcr )DDRIOB_DCI_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_STATUS + +0XF8000B74 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DONE + +13:13 + +2000 + +1 + +2000 + +DCI done signal +
+DDRIOB_DCI_STATUS@0XF8000B74 + +31:0 + +2000 + + + +2000 + +tobe +
+

+

UNLOCK DDR

+

Register ( slcr )ddrc_ctrl

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ddrc_ctrl + +0XF8006000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_soft_rstb + +0:0 + +1 + +1 + +1 + +Active low soft reset. Update during normal operation. 0: Resets the controller 1: Takes the controller out of reset. Dynamic Bit Field. Note: Software changes DRAM controller register values only when the controller is in the reset state, except for bit fields that can be dymanically updated. +
+reg_ddrc_powerdown_en + +1:1 + +2 + +0 + +0 + +Controller power down control. Update during normal operation. Enable the controller to powerdown after it becomes idle. Dynamic Bit Field. 0: disable 1: enable +
+reg_ddrc_data_bus_width + +3:2 + +c + +0 + +0 + +DDR bus width control 00: 32-bit 01: 16-bit 1x: reserved +
+reg_ddrc_burst8_refresh + +6:4 + +70 + +0 + +0 + +Refresh timeout. Programmed value plus one will be the number of refresh timeouts that will be allowed to accumulate before traffic is blocked and the refreshes are forced to execute. Closing pages to perform a refresh is a one-time penalty that must be paid for each group of refreshes; therefore, performing refreshes in a burst reduces the per-refresh penalty of these page closings. Higher numbers for burst_of_N_refresh slightly increases utilization; lower numbers decreases the worst-case latency associated with refreshes. 0: single refresh 1: burst-of-2 ... 7: burst-of-8 refresh +
+reg_ddrc_rdwr_idle_gap + +13:7 + +3f80 + +1 + +80 + +When the preferred transaction store is empty for this many clock cycles, switch to the alternate transaction store if it is non-empty. The read transaction store (both high and low priority) is the default preferred transaction store and the write transaction store is the alternate store. When 'Prefer write over read' is set this is reversed. +
+reg_ddrc_dis_rd_bypass + +14:14 + +4000 + +0 + +0 + +Only present in designs supporting read bypass. For Debug only. 0: Do not disable bypass path for high priority read page hits. 1: disable bypass path for high priority read page hits. +
+reg_ddrc_dis_act_bypass + +15:15 + +8000 + +0 + +0 + +Only present in designs supporting activate bypass. For Debug only. 0: Do not disable bypass path for high priority read activates. 1: disable bypass path for high priority read activates. +
+reg_ddrc_dis_auto_refresh + +16:16 + +10000 + +0 + +0 + +Disable auto-refresh. 0: do not disable auto-refresh. 1: disable auto-refresh. Dynamic Bit Field. Note: When this transitions from 0 to 1, any pending refreshes will be immediately scheduled by the controller. +
+ddrc_ctrl@0XF8006000 + +31:0 + +1ffff + + + +81 + +DDRC Control +
+

+

CHECK DDR STATUS

+

Register ( slcr )mode_sts_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+mode_sts_reg + +0XF8006054 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+ddrc_reg_operating_mode + +2:0 + +7 + +1 + +1 + +Gives the status of the controller. 0: DDRC Init 1: Normal operation 2: Powerdown mode 3: Self-refresh mode 4 and above: deep power down mode (LPDDR2 only) +
+mode_sts_reg@0XF8006054 + +31:0 + +7 + + + +1 + +tobe +
+

+ +

+

ps7_mio_init_data_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DDRIOB_ADDR0 + + +0XF8000B40 + +32 + +RW + +0x000000 + +DDR IOB Config for A[14:0], CKE and DRST_B +
+ +DDRIOB_ADDR1 + + +0XF8000B44 + +32 + +RW + +0x000000 + +DDR IOB Config for BA[2:0], ODT, CS_B, WE_B, RAS_B and CAS_B +
+ +DDRIOB_DATA0 + + +0XF8000B48 + +32 + +RW + +0x000000 + +DDR IOB Config for Data 15:0 +
+ +DDRIOB_DATA1 + + +0XF8000B4C + +32 + +RW + +0x000000 + +DDR IOB Config for Data 31:16 +
+ +DDRIOB_DIFF0 + + +0XF8000B50 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 1:0 +
+ +DDRIOB_DIFF1 + + +0XF8000B54 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 3:2 +
+ +DDRIOB_CLOCK + + +0XF8000B58 + +32 + +RW + +0x000000 + +DDR IOB Config for Clock Output +
+ +DDRIOB_DRIVE_SLEW_ADDR + + +0XF8000B5C + +32 + +RW + +0x000000 + +Drive and Slew controls for Address and Command pins of the DDR Interface +
+ +DDRIOB_DRIVE_SLEW_DATA + + +0XF8000B60 + +32 + +RW + +0x000000 + +Drive and Slew controls for DQ pins of the DDR Interface +
+ +DDRIOB_DRIVE_SLEW_DIFF + + +0XF8000B64 + +32 + +RW + +0x000000 + +Drive and Slew controls for DQS pins of the DDR Interface +
+ +DDRIOB_DRIVE_SLEW_CLOCK + + +0XF8000B68 + +32 + +RW + +0x000000 + +Drive and Slew controls for Clock pins of the DDR Interface +
+ +DDRIOB_DDR_CTRL + + +0XF8000B6C + +32 + +RW + +0x000000 + +DDR IOB Buffer Control +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDR IOB DCI Config +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDR IOB DCI Config +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDR IOB DCI Config +
+ +MIO_PIN_00 + + +0XF8000700 + +32 + +RW + +0x000000 + +MIO Pin 0 Control +
+ +MIO_PIN_01 + + +0XF8000704 + +32 + +RW + +0x000000 + +MIO Pin 1 Control +
+ +MIO_PIN_02 + + +0XF8000708 + +32 + +RW + +0x000000 + +MIO Pin 2 Control +
+ +MIO_PIN_03 + + +0XF800070C + +32 + +RW + +0x000000 + +MIO Pin 3 Control +
+ +MIO_PIN_04 + + +0XF8000710 + +32 + +RW + +0x000000 + +MIO Pin 4 Control +
+ +MIO_PIN_05 + + +0XF8000714 + +32 + +RW + +0x000000 + +MIO Pin 5 Control +
+ +MIO_PIN_06 + + +0XF8000718 + +32 + +RW + +0x000000 + +MIO Pin 6 Control +
+ +MIO_PIN_07 + + +0XF800071C + +32 + +RW + +0x000000 + +MIO Pin 7 Control +
+ +MIO_PIN_08 + + +0XF8000720 + +32 + +RW + +0x000000 + +MIO Pin 8 Control +
+ +MIO_PIN_09 + + +0XF8000724 + +32 + +RW + +0x000000 + +MIO Pin 9 Control +
+ +MIO_PIN_10 + + +0XF8000728 + +32 + +RW + +0x000000 + +MIO Pin 10 Control +
+ +MIO_PIN_11 + + +0XF800072C + +32 + +RW + +0x000000 + +MIO Pin 11 Control +
+ +MIO_PIN_12 + + +0XF8000730 + +32 + +RW + +0x000000 + +MIO Pin 12 Control +
+ +MIO_PIN_13 + + +0XF8000734 + +32 + +RW + +0x000000 + +MIO Pin 13 Control +
+ +MIO_PIN_14 + + +0XF8000738 + +32 + +RW + +0x000000 + +MIO Pin 14 Control +
+ +MIO_PIN_15 + + +0XF800073C + +32 + +RW + +0x000000 + +MIO Pin 15 Control +
+ +MIO_PIN_16 + + +0XF8000740 + +32 + +RW + +0x000000 + +MIO Pin 16 Control +
+ +MIO_PIN_17 + + +0XF8000744 + +32 + +RW + +0x000000 + +MIO Pin 17 Control +
+ +MIO_PIN_18 + + +0XF8000748 + +32 + +RW + +0x000000 + +MIO Pin 18 Control +
+ +MIO_PIN_19 + + +0XF800074C + +32 + +RW + +0x000000 + +MIO Pin 19 Control +
+ +MIO_PIN_20 + + +0XF8000750 + +32 + +RW + +0x000000 + +MIO Pin 20 Control +
+ +MIO_PIN_21 + + +0XF8000754 + +32 + +RW + +0x000000 + +MIO Pin 21 Control +
+ +MIO_PIN_22 + + +0XF8000758 + +32 + +RW + +0x000000 + +MIO Pin 22 Control +
+ +MIO_PIN_23 + + +0XF800075C + +32 + +RW + +0x000000 + +MIO Pin 23 Control +
+ +MIO_PIN_24 + + +0XF8000760 + +32 + +RW + +0x000000 + +MIO Pin 24 Control +
+ +MIO_PIN_25 + + +0XF8000764 + +32 + +RW + +0x000000 + +MIO Pin 25 Control +
+ +MIO_PIN_26 + + +0XF8000768 + +32 + +RW + +0x000000 + +MIO Pin 26 Control +
+ +MIO_PIN_27 + + +0XF800076C + +32 + +RW + +0x000000 + +MIO Pin 27 Control +
+ +MIO_PIN_28 + + +0XF8000770 + +32 + +RW + +0x000000 + +MIO Pin 28 Control +
+ +MIO_PIN_29 + + +0XF8000774 + +32 + +RW + +0x000000 + +MIO Pin 29 Control +
+ +MIO_PIN_30 + + +0XF8000778 + +32 + +RW + +0x000000 + +MIO Pin 30 Control +
+ +MIO_PIN_31 + + +0XF800077C + +32 + +RW + +0x000000 + +MIO Pin 31 Control +
+ +MIO_PIN_32 + + +0XF8000780 + +32 + +RW + +0x000000 + +MIO Pin 32 Control +
+ +MIO_PIN_33 + + +0XF8000784 + +32 + +RW + +0x000000 + +MIO Pin 33 Control +
+ +MIO_PIN_34 + + +0XF8000788 + +32 + +RW + +0x000000 + +MIO Pin 34 Control +
+ +MIO_PIN_35 + + +0XF800078C + +32 + +RW + +0x000000 + +MIO Pin 35 Control +
+ +MIO_PIN_36 + + +0XF8000790 + +32 + +RW + +0x000000 + +MIO Pin 36 Control +
+ +MIO_PIN_37 + + +0XF8000794 + +32 + +RW + +0x000000 + +MIO Pin 37 Control +
+ +MIO_PIN_38 + + +0XF8000798 + +32 + +RW + +0x000000 + +MIO Pin 38 Control +
+ +MIO_PIN_39 + + +0XF800079C + +32 + +RW + +0x000000 + +MIO Pin 39 Control +
+ +MIO_PIN_40 + + +0XF80007A0 + +32 + +RW + +0x000000 + +MIO Pin 40 Control +
+ +MIO_PIN_41 + + +0XF80007A4 + +32 + +RW + +0x000000 + +MIO Pin 41 Control +
+ +MIO_PIN_42 + + +0XF80007A8 + +32 + +RW + +0x000000 + +MIO Pin 42 Control +
+ +MIO_PIN_43 + + +0XF80007AC + +32 + +RW + +0x000000 + +MIO Pin 43 Control +
+ +MIO_PIN_44 + + +0XF80007B0 + +32 + +RW + +0x000000 + +MIO Pin 44 Control +
+ +MIO_PIN_45 + + +0XF80007B4 + +32 + +RW + +0x000000 + +MIO Pin 45 Control +
+ +MIO_PIN_46 + + +0XF80007B8 + +32 + +RW + +0x000000 + +MIO Pin 46 Control +
+ +MIO_PIN_47 + + +0XF80007BC + +32 + +RW + +0x000000 + +MIO Pin 47 Control +
+ +MIO_PIN_48 + + +0XF80007C0 + +32 + +RW + +0x000000 + +MIO Pin 48 Control +
+ +MIO_PIN_49 + + +0XF80007C4 + +32 + +RW + +0x000000 + +MIO Pin 49 Control +
+ +MIO_PIN_50 + + +0XF80007C8 + +32 + +RW + +0x000000 + +MIO Pin 50 Control +
+ +MIO_PIN_51 + + +0XF80007CC + +32 + +RW + +0x000000 + +MIO Pin 51 Control +
+ +MIO_PIN_52 + + +0XF80007D0 + +32 + +RW + +0x000000 + +MIO Pin 52 Control +
+ +MIO_PIN_53 + + +0XF80007D4 + +32 + +RW + +0x000000 + +MIO Pin 53 Control +
+ +SD0_WP_CD_SEL + + +0XF8000830 + +32 + +RW + +0x000000 + +SDIO 0 WP CD select +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_mio_init_data_3_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +Write the unlock key, 0xDF0D, to enable writes to the slcr registers. All slcr registers, 0xF800_0000 to 0xF800_0B74, are writeable until locked using the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

OCM REMAPPING

+

DDRIOB SETTINGS

+

Register ( slcr )DDRIOB_ADDR0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_ADDR0 + +0XF8000B40 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +0 + +0 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_ADDR0@0XF8000B40 + +31:0 + +fff + + + +600 + +DDR IOB Config for A[14:0], CKE and DRST_B +
+

+

Register ( slcr )DDRIOB_ADDR1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_ADDR1 + +0XF8000B44 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +0 + +0 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_ADDR1@0XF8000B44 + +31:0 + +fff + + + +600 + +DDR IOB Config for BA[2:0], ODT, CS_B, WE_B, RAS_B and CAS_B +
+

+

Register ( slcr )DDRIOB_DATA0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA0 + +0XF8000B48 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +1 + +2 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +3 + +60 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DATA0@0XF8000B48 + +31:0 + +fff + + + +672 + +DDR IOB Config for Data 15:0 +
+

+

Register ( slcr )DDRIOB_DATA1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA1 + +0XF8000B4C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +1 + +2 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +3 + +60 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DATA1@0XF8000B4C + +31:0 + +fff + + + +672 + +DDR IOB Config for Data 31:16 +
+

+

Register ( slcr )DDRIOB_DIFF0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF0 + +0XF8000B50 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +2 + +4 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +3 + +60 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DIFF0@0XF8000B50 + +31:0 + +fff + + + +674 + +DDR IOB Config for DQS 1:0 +
+

+

Register ( slcr )DDRIOB_DIFF1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF1 + +0XF8000B54 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +2 + +4 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +3 + +60 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DIFF1@0XF8000B54 + +31:0 + +fff + + + +674 + +DDR IOB Config for DQS 3:2 +
+

+

Register ( slcr )DDRIOB_CLOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_CLOCK + +0XF8000B58 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_INP_POWER + +0:0 + +1 + +0 + +0 + +Reserved. Do not modify. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer control: 00: Input off (input signal to selected controller is driven Low). 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE_B + +3:3 + +8 + +0 + +0 + +DCI Update Enable: 0: disable 1: enable +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enable: 0: disable 1: enable +
+DCI_TYPE + +6:5 + +60 + +0 + +0 + +DCI Mode Selection: 00: DCI Disabled (DDR2/3 ADDR and CLOCK) 01: DCI Drive (LPDDR2) 10: reserved 11: DCI Termination (DDR2/3 DATA and DIFF) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_CLOCK@0XF8000B58 + +31:0 + +fff + + + +600 + +DDR IOB Config for Clock Output +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_ADDR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_ADDR + +0XF8000B5C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_DRIVE_P + +6:0 + +7f + +1c + +1c + +Reserved. Do not modify. +
+reserved_DRIVE_N + +13:7 + +3f80 + +c + +600 + +Reserved. Do not modify. +
+reserved_SLEW_P + +18:14 + +7c000 + +3 + +c000 + +Reserved. Do not modify. +
+reserved_SLEW_N + +23:19 + +f80000 + +3 + +180000 + +Reserved. Do not modify. +
+reserved_GTL + +26:24 + +7000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_RTERM + +31:27 + +f8000000 + +0 + +0 + +Reserved. Do not modify. +
+DDRIOB_DRIVE_SLEW_ADDR@0XF8000B5C + +31:0 + +ffffffff + + + +18c61c + +Drive and Slew controls for Address and Command pins of the DDR Interface +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_DATA

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_DATA + +0XF8000B60 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_DRIVE_P + +6:0 + +7f + +1c + +1c + +Reserved. Do not modify. +
+reserved_DRIVE_N + +13:7 + +3f80 + +c + +600 + +Reserved. Do not modify. +
+reserved_SLEW_P + +18:14 + +7c000 + +6 + +18000 + +Reserved. Do not modify. +
+reserved_SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +Reserved. Do not modify. +
+reserved_GTL + +26:24 + +7000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_RTERM + +31:27 + +f8000000 + +0 + +0 + +Reserved. Do not modify. +
+DDRIOB_DRIVE_SLEW_DATA@0XF8000B60 + +31:0 + +ffffffff + + + +f9861c + +Drive and Slew controls for DQ pins of the DDR Interface +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_DIFF

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_DIFF + +0XF8000B64 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_DRIVE_P + +6:0 + +7f + +1c + +1c + +Reserved. Do not modify. +
+reserved_DRIVE_N + +13:7 + +3f80 + +c + +600 + +Reserved. Do not modify. +
+reserved_SLEW_P + +18:14 + +7c000 + +6 + +18000 + +Reserved. Do not modify. +
+reserved_SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +Reserved. Do not modify. +
+reserved_GTL + +26:24 + +7000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_RTERM + +31:27 + +f8000000 + +0 + +0 + +Reserved. Do not modify. +
+DDRIOB_DRIVE_SLEW_DIFF@0XF8000B64 + +31:0 + +ffffffff + + + +f9861c + +Drive and Slew controls for DQS pins of the DDR Interface +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_CLOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_CLOCK + +0XF8000B68 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_DRIVE_P + +6:0 + +7f + +1c + +1c + +Reserved. Do not modify. +
+reserved_DRIVE_N + +13:7 + +3f80 + +c + +600 + +Reserved. Do not modify. +
+reserved_SLEW_P + +18:14 + +7c000 + +6 + +18000 + +Reserved. Do not modify. +
+reserved_SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +Reserved. Do not modify. +
+reserved_GTL + +26:24 + +7000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_RTERM + +31:27 + +f8000000 + +0 + +0 + +Reserved. Do not modify. +
+DDRIOB_DRIVE_SLEW_CLOCK@0XF8000B68 + +31:0 + +ffffffff + + + +f9861c + +Drive and Slew controls for Clock pins of the DDR Interface +
+

+

Register ( slcr )DDRIOB_DDR_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DDR_CTRL + +0XF8000B6C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+VREF_INT_EN + +0:0 + +1 + +0 + +0 + +Enables VREF internal generator +
+VREF_SEL + +4:1 + +1e + +0 + +0 + +Specifies DDR IOB Vref generator output: 0001: VREF = 0.6V for LPDDR2 with 1.2V IO 0100: VREF = 0.75V for DDR3 with 1.5V IO 1000: VREF = 0.90V for DDR2 with 1.8V IO +
+VREF_EXT_EN + +6:5 + +60 + +3 + +60 + +Enables External VREF input x0: Disable External VREF for lower 16 bits x1: Enable External VREF for lower 16 bits 0x: Disable External VREF for upper 16 bits 1x: Enable External VREF for upper 16 bits +
+reserved_VREF_PULLUP_EN + +8:7 + +180 + +0 + +0 + +Reserved. Do not modify. +
+REFIO_EN + +9:9 + +200 + +1 + +200 + +Enables VRP,VRN 0: VRP/VRN not used 1: VRP/VRN used as refio +
+reserved_REFIO_TEST + +11:10 + +c00 + +0 + +0 + +Reserved. Do not modify. +
+reserved_REFIO_PULLUP_EN + +12:12 + +1000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_DRST_B_PULLUP_EN + +13:13 + +2000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_CKE_PULLUP_EN + +14:14 + +4000 + +0 + +0 + +Reserved. Do not modify. +
+DDRIOB_DDR_CTRL@0XF8000B6C + +31:0 + +7fff + + + +260 + +DDR IOB Buffer Control +
+

+

ASSERT RESET

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +1 + +1 + +At least toggle once to initialize flops in DCI system +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +1 + + + +1 + +DDR IOB DCI Config +
+

+

DEASSERT RESET

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +0 + +0 + +At least toggle once to initialize flops in DCI system +
+reserved_VRN_OUT + +5:5 + +20 + +1 + +20 + +Reserved. Do not modify. +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +21 + + + +20 + +DDR IOB DCI Config +
+

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +1 + +1 + +At least toggle once to initialize flops in DCI system +
+ENABLE + +1:1 + +2 + +1 + +2 + +DCI System Enable. Set to 1 if any IOs in DDR IO Bank use DCI Termination. DDR2, DDR3 and LPDDR2 (Silicon Revision 2.0+) configurations require this bit set to 1 +
+reserved_VRP_TRI + +2:2 + +4 + +0 + +0 + +Reserved. Do not modify. +
+reserved_VRN_TRI + +3:3 + +8 + +0 + +0 + +Reserved. Do not modify. +
+reserved_VRP_OUT + +4:4 + +10 + +0 + +0 + +Reserved. Do not modify. +
+reserved_VRN_OUT + +5:5 + +20 + +1 + +20 + +Reserved. Do not modify. +
+NREF_OPT1 + +7:6 + +c0 + +0 + +0 + +DCI Calibration. Use the values in the Calibration Table. +
+NREF_OPT2 + +10:8 + +700 + +0 + +0 + +DCI Calibration. Use the values in the Calibration Table. +
+NREF_OPT4 + +13:11 + +3800 + +1 + +800 + +DCI Calibration. Use the values in the Calibration Table. +
+PREF_OPT1 + +15:14 + +c000 + +0 + +0 + +DCI Calibration. Use the values in the Calibration Table. +
+PREF_OPT2 + +19:17 + +e0000 + +0 + +0 + +DCI Calibration. Use the values in the Calibration Table. +
+UPDATE_CONTROL + +20:20 + +100000 + +0 + +0 + +DCI Update Mode. Use the values in the Calibration Table. +
+reserved_INIT_COMPLETE + +21:21 + +200000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_TST_CLK + +22:22 + +400000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_TST_HLN + +23:23 + +800000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_TST_HLP + +24:24 + +1000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_TST_RST + +25:25 + +2000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_INT_DCI_EN + +26:26 + +4000000 + +0 + +0 + +Reserved. Do not modify. +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +7feffff + + + +823 + +DDR IOB DCI Config +
+

+

MIO PROGRAMMING

+

Register ( slcr )MIO_PIN_00

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_00 + +0XF8000700 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. 0: disable 1: enable +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 chip select, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Chip Select 0, Output 10: NAND Flash Chip Select, Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 0 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Select IO Buffer Edge Rate, applicable when IO_Type is LVCMOS18, LVCMOS25 or LVCMOS33. 0: Slow CMOS edge 1: Fast CMOS edge +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Select the IO Buffer Type. 000: Reserved 001: LVCMOS18 010: LVCMOS25 011, 101, 110, 111: LVCMOS33 100: HSTL +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Enables Pullup on IO Buffer pin 0: disable 1: enable +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Disable HSTL Input Buffer to save power when it is an output-only (IO_Type must be HSTL). 0: enable 1: disable +
+MIO_PIN_00@0XF8000700 + +31:0 + +3fff + + + +1600 + +MIO Pin 0 Control +
+

+

Register ( slcr )MIO_PIN_01

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_01 + +0XF8000704 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 Chip Select, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM Address Bit 25, Output 10: SRAM/NOR Chip Select 1, Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 1 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_01@0XF8000704 + +31:0 + +3fff + + + +1602 + +MIO Pin 1 Control +
+

+

Register ( slcr )MIO_PIN_02

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_02 + +0XF8000708 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 0, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 8, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: NAND Flash ALEn, Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 2 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_02@0XF8000708 + +31:0 + +3fff + + + +602 + +MIO Pin 2 Control +
+

+

Register ( slcr )MIO_PIN_03

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_03 + +0XF800070C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 1, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 9, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data bit 0, Input/Output 10: NAND WE_B, Output 11: SDIO 1 Card Power, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 3 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_03@0XF800070C + +31:0 + +3fff + + + +602 + +MIO Pin 3 Control +
+

+

Register ( slcr )MIO_PIN_04

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_04 + +0XF8000710 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 2, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 10, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 1, Input/Output 10: NAND Flash IO Bit 2, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 4 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_04@0XF8000710 + +31:0 + +3fff + + + +602 + +MIO Pin 4 Control +
+

+

Register ( slcr )MIO_PIN_05

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_05 + +0XF8000714 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 3, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 11, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 2, Input/Output 10: NAND Flash IO Bit 0, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 5 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_05@0XF8000714 + +31:0 + +3fff + + + +602 + +MIO Pin 5 Control +
+

+

Register ( slcr )MIO_PIN_06

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_06 + +0XF8000718 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 Clock, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 12, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 3, Input/Output 10: NAND Flash IO Bit 1, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 6 (bank 0), Input/Output others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_06@0XF8000718 + +31:0 + +3fff + + + +602 + +MIO Pin 6 Control +
+

+

Register ( slcr )MIO_PIN_07

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_07 + +0XF800071C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 13, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR OE_B, Output 10: NAND Flash CLE_B, Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 7 (bank 0), Output-only others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_07@0XF800071C + +31:0 + +3fff + + + +600 + +MIO Pin 7 Control +
+

+

Register ( slcr )MIO_PIN_08

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_08 + +0XF8000720 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI Feedback Clock, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 14, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: NAND Flash RD_B, Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 8 (bank 0), Output-only 001: CAN 1 Tx, Output 010: SRAM/NOR BLS_B, Output 011 to 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_08@0XF8000720 + +31:0 + +3fff + + + +602 + +MIO Pin 8 Control +
+

+

Register ( slcr )MIO_PIN_09

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_09 + +0XF8000724 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 Flash Memory Clock, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 15, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 6, Input/Output 10: NAND Flash IO Bit 4, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 9 (bank 0), Input/Output 001: CAN 1 Rx, Input 010 to 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_09@0XF8000724 + +31:0 + +3fff + + + +1600 + +MIO Pin 9 Control +
+

+

Register ( slcr )MIO_PIN_10

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_10 + +0XF8000728 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 0, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 2, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 7, Input/Output 10: NAND Flash IO Bit 5, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 10 (bank 0), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: PJTAG TDI, Input 100: SDIO 1 IO Bit 0, Input/Output 101: SPI 1 MOSI, Input/Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_10@0XF8000728 + +31:0 + +3fff + + + +1600 + +MIO Pin 10 Control +
+

+

Register ( slcr )MIO_PIN_11

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_11 + +0XF800072C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 1, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 3, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 4, Input/Output 10: NAND Flash IO Bit 6, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 11 (bank 0), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: PJTAG TDO, Output 100: SDIO 1 Command, Input/Output 101: SPI 1 MISO, Input/Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_11@0XF800072C + +31:0 + +3fff + + + +1600 + +MIO Pin 11 Control +
+

+

Register ( slcr )MIO_PIN_12

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_12 + +0XF8000730 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 2, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Clock, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Wait, Input 10: NAND Flash IO Bit 7, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +2 + +40 + +Level 3 Mux Select 000: GPIO 12 (bank 0), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: PJTAG TCK, Input 100: SDIO 1 Clock, Input/Output 101: SPI 1 Serial Clock, Input/Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_12@0XF8000730 + +31:0 + +3fff + + + +1640 + +MIO Pin 12 Control +
+

+

Register ( slcr )MIO_PIN_13

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_13 + +0XF8000734 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 3, Input/Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Control Signal, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 5, Input/Output 10: NAND Flash IO Bit 3, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +2 + +40 + +Level 3 Mux Select 000: GPIO 13 (bank 0), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: PJTAG TMS, Input 100: SDIO 1 IO Bit 1, Input/Output 101: SPI 1 Slave Select 0, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_13@0XF8000734 + +31:0 + +3fff + + + +1640 + +MIO Pin 13 Control +
+

+

Register ( slcr )MIO_PIN_14

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_14 + +0XF8000738 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 0, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: NAND Flash Busy, Input 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +1 + +20 + +Level 3 Mux Select 000: GPIO 14 (bank 0), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: SWDT Clock, Input 100: SDIO 1 IO Bit 2, Input/Output 101: SPI 1 slave select 1, Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_14@0XF8000738 + +31:0 + +3fff + + + +1621 + +MIO Pin 14 Control +
+

+

Register ( slcr )MIO_PIN_15

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_15 + +0XF800073C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 1, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 0, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +1 + +20 + +Level 3 Mux Select 000: GPIO 15 (bank 0), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: SWDT Reset, Output 100: SDIO 1 IO Bit 3, Input/Output 101: SPI 1 Slave Select 2, Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_15@0XF800073C + +31:0 + +3fff + + + +1620 + +MIO Pin 15 Control +
+

+

Register ( slcr )MIO_PIN_16

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_16 + +0XF8000740 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Tx Clock, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 4, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 1, Output 10: NAND Flash IO Bit 8, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 16 (bank 0), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: reserved 100: SDIO 0 Clock, Input/Output 101: SPI 0 Serial Clock, Input/Output 110: TTC 1 Wave, Output 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_16@0XF8000740 + +31:0 + +3fff + + + +1202 + +MIO Pin 16 Control +
+

+

Register ( slcr )MIO_PIN_17

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_17 + +0XF8000744 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 0, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 5, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 2, Output 10: NAND Flash IO Bit 9, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 17 (bank 0), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: reserved 100: SDIO 0 Command, Input/Output 101: SPI 0 MISO, Input/Output 110 TTC 1 Clock, Input 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_17@0XF8000744 + +31:0 + +3fff + + + +1202 + +MIO Pin 17 Control +
+

+

Register ( slcr )MIO_PIN_18

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_18 + +0XF8000748 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 1, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 6, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 3, Output 10: NAND Flash IO Bit 10, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 18 (bank 0), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: reserved 100: SDIO 0 IO Bit 0, Input/Output 101: SPI 0 Slave Select 0, Input/Output 110: TTC 0 Wave, Output 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_18@0XF8000748 + +31:0 + +3fff + + + +1202 + +MIO Pin 18 Control +
+

+

Register ( slcr )MIO_PIN_19

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_19 + +0XF800074C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 2, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 7, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 4, Output 10: NAND Flash IO Bit 11, Input/Output 111: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 19 (bank 0), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: reserved 100: SDIO 0 IO Bit 1, Input/Output 101: SPI 0 Slave Select 1, Output 110: TTC 0 Clock, Input 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_19@0XF800074C + +31:0 + +3fff + + + +1202 + +MIO Pin 19 Control +
+

+

Register ( slcr )MIO_PIN_20

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_20 + +0XF8000750 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 3, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 5, Output 10: NAND Flash IO Bit 12, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 20 (bank 0), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: reserved 100: SDIO 0 IO Bit 2, Input/Output 101: SPI 0 Slave Select 2, Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_20@0XF8000750 + +31:0 + +3fff + + + +1202 + +MIO Pin 20 Control +
+

+

Register ( slcr )MIO_PIN_21

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_21 + +0XF8000754 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Tx Control, Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 6, Output 10: NAND Flash IO Bit 13, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 21 (bank 0), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: reserved 100: SDIO 0 IO Bit 3, Input/Output 101: SPI 0 MOSI, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_21@0XF8000754 + +31:0 + +3fff + + + +1202 + +MIO Pin 21 Control +
+

+

Register ( slcr )MIO_PIN_22

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_22 + +0XF8000758 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Rx Clock, Input +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 2, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 7, Output 10: NAND Flash IO Bit 14, Input/Output 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 22 (bank 0), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: PJTAG TDI, Input 100: SDIO 1 IO Bit 0, Input/Output 101: SPI 1 MOSI, Input/Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_22@0XF8000758 + +31:0 + +3fff + + + +1203 + +MIO Pin 22 Control +
+

+

Register ( slcr )MIO_PIN_23

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_23 + +0XF800075C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD 0, Input +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 3, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 8, Output 10: NAND Flash IO Bit 15, Input/Output 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 23 (bank 0), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: PJTAG TDO, Output 100: SDIO 1 Command, Input/Output 101: SPI 1 MISO, Input/Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_23@0XF800075C + +31:0 + +3fff + + + +1203 + +MIO Pin 23 Control +
+

+

Register ( slcr )MIO_PIN_24

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_24 + +0XF8000760 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD Bit 1, Input +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Clock output, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 9, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 24 (bank 0), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: PJTAG TCK, Input 100: SDIO 1 Clock, Input/Output 101: SPI 1 Serial Clock, Input/Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_24@0XF8000760 + +31:0 + +3fff + + + +1203 + +MIO Pin 24 Control +
+

+

Register ( slcr )MIO_PIN_25

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_25 + +0XF8000764 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD Bit2, Input +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Control Signal, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 10, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 25 (bank 0), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: PJTAG TMS, Input 100: SDIO 1 IO Bit 1, Input/Output 101: SPI 1 Slave Select 0, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_25@0XF8000764 + +31:0 + +3fff + + + +1203 + +MIO Pin 25 Control +
+

+

Register ( slcr )MIO_PIN_26

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_26 + +0XF8000768 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD Bit 3, Input +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 0, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 11, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 26 (bank 0), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: SWDT Clock, Input 100: SDIO 1 IO Bit 2, Input/Output 101: SPI 1 Slave Select 1, Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_26@0XF8000768 + +31:0 + +3fff + + + +1203 + +MIO Pin 26 Control +
+

+

Register ( slcr )MIO_PIN_27

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_27 + +0XF800076C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Rx Control, Input +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 1, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 12, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 27 (bank 0), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: SWDT Reset, Output 100: SDIO 1 IO Bit 3, Input/Output 101: SPI 1 Slave Select 2, Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_27@0XF800076C + +31:0 + +3fff + + + +1203 + +MIO Pin 27 Control +
+

+

Register ( slcr )MIO_PIN_28

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_28 + +0XF8000770 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Tx Clock, Output +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 4, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 13, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 28 (bank 0), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: reserved 100: SDIO 0 Clock, Input/Output 101: SPI 0 Serial Clock, Input/Output 110: TTC 1 Wave, Output 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_28@0XF8000770 + +31:0 + +3fff + + + +1204 + +MIO Pin 28 Control +
+

+

Register ( slcr )MIO_PIN_29

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_29 + +0XF8000774 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 0, Output +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Direction, Input +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 14, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 29 (bank 0), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: reserved 100: SDIO 0 Command, Input/Output 101: SPI 0 MISO, Input/Output 110: TTC 1 Clock, Input 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_29@0XF8000774 + +31:0 + +3fff + + + +1205 + +MIO Pin 29 Control +
+

+

Register ( slcr )MIO_PIN_30

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_30 + +0XF8000778 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 1, Output +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Stop, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 15, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 30 (bank 0), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: reserved 100: SDIO 0 IO Bit 0, Input/Output 101: SPI 0 Slave Select 0, Input/Output 110: TTC 0 Wave, Output 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_30@0XF8000778 + +31:0 + +3fff + + + +1204 + +MIO Pin 30 Control +
+

+

Register ( slcr )MIO_PIN_31

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_31 + +0XF800077C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 2, Output +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Next, Input +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 16, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 31 (bank 0), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: reserved 100: SDIO 0 IO Bit 1, Input/Output 101: SPI 0 Slave Select 1, Output 110: TTC 0 Clock, Input 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_31@0XF800077C + +31:0 + +3fff + + + +1205 + +MIO Pin 31 Control +
+

+

Register ( slcr )MIO_PIN_32

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_32 + +0XF8000780 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 3, Output +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 0, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 17, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 32 (bank 1), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: reserved 100: SDIO 0 IO Bit 2, Input/Output 101: SPI 0 Slave Select 2, Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_32@0XF8000780 + +31:0 + +3fff + + + +1204 + +MIO Pin 32 Control +
+

+

Register ( slcr )MIO_PIN_33

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_33 + +0XF8000784 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Tx Control, Output +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 1, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 18, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 33 (Bank 1), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: reserved 100: SDIO 0 IO Bit 3, Input/Output 101: SPI 0 MOSI, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_33@0XF8000784 + +31:0 + +3fff + + + +1204 + +MIO Pin 33 Control +
+

+

Register ( slcr )MIO_PIN_34

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_34 + +0XF8000788 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Rx Clock, Input +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 2, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 19, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 34 (bank 1), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: PJTAG TDI, Input 100: SDIO 1 IO Bit 0, Input/Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_34@0XF8000788 + +31:0 + +3fff + + + +1204 + +MIO Pin 34 Control +
+

+

Register ( slcr )MIO_PIN_35

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_35 + +0XF800078C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII RxD data Bit 0, Input +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 3, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 20, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 35 (bank 1), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: PJTAG TDO, Output 100: SDIO 1 Command, Input/Output 101: SPI 1 MISO, Input/Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_35@0XF800078C + +31:0 + +3fff + + + +1204 + +MIO Pin 35 Control +
+

+

Register ( slcr )MIO_PIN_36

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_36 + +0XF8000790 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Data Bit 1 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Clock, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 21, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 36 (bank 1), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: PJTAG TCK, Input 100: SDIO 1 Clock, Input/Output 101: SPI 1 Clock, Input/Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_36@0XF8000790 + +31:0 + +3fff + + + +1205 + +MIO Pin 36 Control +
+

+

Register ( slcr )MIO_PIN_37

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_37 + +0XF8000794 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII RxD Data Bit 2, Input +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 5, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 22, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 37 (bank 1), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: PJTAG TMS, Input 100: SDIO 1 IO Bit 1, Input/Output 101: SPI 1 Slave Select 0, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_37@0XF8000794 + +31:0 + +3fff + + + +1204 + +MIO Pin 37 Control +
+

+

Register ( slcr )MIO_PIN_38

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_38 + +0XF8000798 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII RxD Data Bit 3, Input +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 6, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 23, Output 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 38 (bank 1), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: SWDT Clock, Input 100: SDIO 1 IO Bit 2, Input/Output 101: SPI 1 Slave Select 1, Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_38@0XF8000798 + +31:0 + +3fff + + + +1204 + +MIO Pin 38 Control +
+

+

Register ( slcr )MIO_PIN_39

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_39 + +0XF800079C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Rx Control, Input +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 7, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 24, Output 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 39 (bank 1), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: SWDT Reset, Output 100: SDIO 1 IO Bit 3, Input/Output 101: SPI 1 Slave Select 2, Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_39@0XF800079C + +31:0 + +3fff + + + +1204 + +MIO Pin 39 Control +
+

+

Register ( slcr )MIO_PIN_40

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_40 + +0XF80007A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 4, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 40 (bank 1), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: reserved 100: SDIO 0 Clock, Input/Output 101: SPI 0 Serial Clock, Input/Output 110: TTC 1 Wave, Output 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_40@0XF80007A0 + +31:0 + +3fff + + + +1280 + +MIO Pin 40 Control +
+

+

Register ( slcr )MIO_PIN_41

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_41 + +0XF80007A4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Direction, Input +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 41 (bank 1), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: reserved 100: SDIO 0 Command, Input/Output 101: SPI 0 MISO, Input/Output 110: TTC 1 Clock, Input 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_41@0XF80007A4 + +31:0 + +3fff + + + +1280 + +MIO Pin 41 Control +
+

+

Register ( slcr )MIO_PIN_42

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_42 + +0XF80007A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Stop, Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 42 (bank 1), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: reserved 100: SDIO 0 IO Bit 0, Input/Output 101: SPI 0 Slave Select 0, Input/Output 110: TTC 0 Wave, Output 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_42@0XF80007A8 + +31:0 + +3fff + + + +1280 + +MIO Pin 42 Control +
+

+

Register ( slcr )MIO_PIN_43

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_43 + +0XF80007AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Next, Input +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 43 (bank 1), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: reserved 100: SDIO 0 IO Bit 1, Input/Output 101: SPI 0 Slave Select 1, Output 110: TTC 0 Clock, Input 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_43@0XF80007AC + +31:0 + +3fff + + + +1280 + +MIO Pin 43 Control +
+

+

Register ( slcr )MIO_PIN_44

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_44 + +0XF80007B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 0, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 44 (bank 1), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: reserved 100: SDIO 0 IO Bit 2, Input/Output 101: SPI 0 Slave Select 2, Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_44@0XF80007B0 + +31:0 + +3fff + + + +1280 + +MIO Pin 44 Control +
+

+

Register ( slcr )MIO_PIN_45

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_45 + +0XF80007B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 1, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 45 (bank 1), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: reserved 100: SDIO 0 IO Bit 3, Input/Output 101: SPI 0 MOSI, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_45@0XF80007B4 + +31:0 + +3fff + + + +1280 + +MIO Pin 45 Control +
+

+

Register ( slcr )MIO_PIN_46

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_46 + +0XF80007B8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_46@0XF80007B8 + +31:0 + +3f01 + + + +1201 + +MIO Pin 46 Control +
+

+

Register ( slcr )MIO_PIN_47

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_47 + +0XF80007BC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_47@0XF80007BC + +31:0 + +3f01 + + + +1201 + +MIO Pin 47 Control +
+

+

Register ( slcr )MIO_PIN_48

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_48 + +0XF80007C0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Clock, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +7 + +e0 + +Level 3 Mux Select 000: GPIO 48 (bank 1), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: PJTAG TCK, Input 100: SDIO 1 Clock, Input/Output 101: SPI 1 Serial Clock, Input/Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_48@0XF80007C0 + +31:0 + +3fff + + + +12e0 + +MIO Pin 48 Control +
+

+

Register ( slcr )MIO_PIN_49

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_49 + +0XF80007C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 5, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +7 + +e0 + +Level 3 Mux Select 000: GPIO 49 (bank 1), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: PJTAG TMS, Input 100: SDIO 1 IO Bit 1, Input/Output 101: SPI 1 Select 0, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_49@0XF80007C4 + +31:0 + +3fff + + + +12e1 + +MIO Pin 49 Control +
+

+

Register ( slcr )MIO_PIN_50

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_50 + +0XF80007C8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 6, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 50 (bank 1), Input/Output 001: CAN 0 Rx, Input 010: I2C 0 Serial Clock, Input/Ouput 011: SWDT Clock, Input 100: SDIO 1 IO Bit 2, Input/Output 101: SPI 1 Slave Select 1, Output 110: reserved 111: UART 0 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_50@0XF80007C8 + +31:0 + +3fff + + + +1200 + +MIO Pin 50 Control +
+

+

Register ( slcr )MIO_PIN_51

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_51 + +0XF80007CC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 7, Input/Output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 51 (bank 1), Input/Output 001: CAN 0 Tx, Output 010: I2C 0 Serial Data, Input/Output 011: SWDT Reset, Output 100: SDIO 1 IO Bit 3, Input/Output 101: SPI 1 Slave Select 2, Output 110: reserved 111: UART 0 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_51@0XF80007CC + +31:0 + +3fff + + + +200 + +MIO Pin 51 Control +
+

+

Register ( slcr )MIO_PIN_52

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_52 + +0XF80007D0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 52 (bank 1), Input/Output 001: CAN 1 Tx, Output 010: I2C 1 Serial Clock, Input/Output 011: SWDT Clock, Input 100: MDIO 0 Clock, Output 101: MDIO 1 Clock, Output 110: reserved 111: UART 1 TxD, Output +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_52@0XF80007D0 + +31:0 + +3fff + + + +1280 + +MIO Pin 52 Control +
+

+

Register ( slcr )MIO_PIN_53

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_53 + +0XF80007D4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control, Output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 53 (bank 1), Input/Output 001: CAN 1 Rx, Input 010: I2C 1 Serial Data, Input/Output 011: SWDT Reset, Output 100: MDIO 0 Data, Input/Output 101: MDIO 1 Data, Input/Output 110: reserved 111: UART 1 RxD, Input +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULLUP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_53@0XF80007D4 + +31:0 + +3fff + + + +1280 + +MIO Pin 53 Control +
+

+

Register ( slcr )SD0_WP_CD_SEL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SD0_WP_CD_SEL + +0XF8000830 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SDIO0_WP_SEL + +5:0 + +3f + +2f + +2f + +SDIO 0 WP Select. Values 53:0 select MIO input (any pin except 7 and 8) Values 63:54 select EMIO input +
+SDIO0_CD_SEL + +21:16 + +3f0000 + +2e + +2e0000 + +SDIO 0 CD Select. Values 53:0 select MIO input (any pin except bits 7 and 8) Values 63:54 select EMIO input +
+SD0_WP_CD_SEL@0XF8000830 + +31:0 + +3f003f + + + +2e002f + +SDIO 0 WP CD select +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +Write the lock key, 0x767B, to write protect the slcr registers: all slcr registers, 0xF800_0000 to 0xF800_0B74, are write protected until the unlock key is written to the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_peripherals_init_data_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DDRIOB_DATA0 + + +0XF8000B48 + +32 + +RW + +0x000000 + +DDR IOB Config for Data 15:0 +
+ +DDRIOB_DATA1 + + +0XF8000B4C + +32 + +RW + +0x000000 + +DDR IOB Config for Data 31:16 +
+ +DDRIOB_DIFF0 + + +0XF8000B50 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 1:0 +
+ +DDRIOB_DIFF1 + + +0XF8000B54 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 3:2 +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+ +Baud_rate_divider_reg0 + + +0XE0001034 + +32 + +RW + +0x000000 + +Baud Rate Divider Register +
+ +Baud_rate_gen_reg0 + + +0XE0001018 + +32 + +RW + +0x000000 + +Baud Rate Generator Register. +
+ +Control_reg0 + + +0XE0001000 + +32 + +RW + +0x000000 + +UART Control Register +
+ +mode_reg0 + + +0XE0001004 + +32 + +RW + +0x000000 + +UART Mode Register +
+ +Config_reg + + +0XE000D000 + +32 + +RW + +0x000000 + +SPI configuration register +
+ +CTRL + + +0XF8007000 + +32 + +RW + +0x000000 + +Control Register : This register defines basic control registers. Some of the register bits can be locked by control bits in the LOCK Register 0x004. +
+ +DIRM_1 + + +0XE000A244 + +32 + +RW + +0x000000 + +Direction mode (GPIO Bank1, MIO) +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+ +OEN_1 + + +0XE000A248 + +32 + +RW + +0x000000 + +Output enable (GPIO Bank1, MIO) +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

ps7_peripherals_init_data_3_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +Write the unlock key, 0xDF0D, to enable writes to the slcr registers. All slcr registers, 0xF800_0000 to 0xF800_0B74, are writeable until locked using the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

DDR TERM/IBUF_DISABLE_MODE SETTINGS

+

Register ( slcr )DDRIOB_DATA0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA0 + +0XF8000B48 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+DDRIOB_DATA0@0XF8000B48 + +31:0 + +180 + + + +180 + +DDR IOB Config for Data 15:0 +
+

+

Register ( slcr )DDRIOB_DATA1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA1 + +0XF8000B4C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+DDRIOB_DATA1@0XF8000B4C + +31:0 + +180 + + + +180 + +DDR IOB Config for Data 31:16 +
+

+

Register ( slcr )DDRIOB_DIFF0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF0 + +0XF8000B50 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+DDRIOB_DIFF0@0XF8000B50 + +31:0 + +180 + + + +180 + +DDR IOB Config for DQS 1:0 +
+

+

Register ( slcr )DDRIOB_DIFF1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF1 + +0XF8000B54 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable NOTE: This must be 0 during DRAM init/training and can only be set to 1 after init/training completes. +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Termination is used during read transactions and may be disabled (automatically by hardware) when there are no reads taking place through the DDR Interface. Disabling termination reduces power consumption. 0: termination always enabled 1: use 'dynamic_dci_ts' to disable termination when not in use NOTE: This bit must be 0 during DRAM init/training. It may be set to 1 after init/training completes. +
+DDRIOB_DIFF1@0XF8000B54 + +31:0 + +180 + + + +180 + +DDR IOB Config for DQS 3:2 +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +Write the lock key, 0x767B, to write protect the slcr registers: all slcr registers, 0xF800_0000 to 0xF800_0B74, are write protected until the unlock key is written to the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+

SRAM/NOR SET OPMODE

+

UART REGISTERS

+

Register ( slcr )Baud_rate_divider_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Baud_rate_divider_reg0 + +0XE0001034 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+BDIV + +7:0 + +ff + +6 + +6 + +Baud rate divider value: 0 - 3: ignored 4 - 255: Baud rate +
+Baud_rate_divider_reg0@0XE0001034 + +31:0 + +ff + + + +6 + +Baud Rate Divider Register +
+

+

Register ( slcr )Baud_rate_gen_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Baud_rate_gen_reg0 + +0XE0001018 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CD + +15:0 + +ffff + +7c + +7c + +Baud Rate Clock Divisor Value: 0: Disables baud_sample 1: Clock divisor bypass (baud_sample = sel_clk) 2 - 65535: baud_sample +
+Baud_rate_gen_reg0@0XE0001018 + +31:0 + +ffff + + + +7c + +Baud Rate Generator Register. +
+

+

Register ( slcr )Control_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Control_reg0 + +0XE0001000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+STPBRK + +8:8 + +100 + +0 + +0 + +Stop transmitter break: 0: no affect 1: stop transmission of the break after a minimum of one character length and transmit a high level during 12 bit periods. It can be set regardless of the value of STTBRK. +
+STTBRK + +7:7 + +80 + +0 + +0 + +Start transmitter break: 0: no affect 1: start to transmit a break after the characters currently present in the FIFO and the transmit shift register have been transmitted. It can only be set if STPBRK (Stop transmitter break) is not high. +
+RSTTO + +6:6 + +40 + +0 + +0 + +Restart receiver timeout counter: 1: receiver timeout counter is restarted. This bit is self clearing once the restart has completed. +
+TXDIS + +5:5 + +20 + +0 + +0 + +Transmit disable: 0: enable transmitter 1: disable transmitter +
+TXEN + +4:4 + +10 + +1 + +10 + +Transmit enable: 0: disable transmitter 1: enable transmitter, provided the TXDIS field is set to 0. +
+RXDIS + +3:3 + +8 + +0 + +0 + +Receive disable: 0: enable 1: disable, regardless of the value of RXEN +
+RXEN + +2:2 + +4 + +1 + +4 + +Receive enable: 0: disable 1: enable When set to one, the receiver logic is enabled, provided the RXDIS field is set to zero. +
+TXRES + +1:1 + +2 + +1 + +2 + +Software reset for Tx data path: 0: no affect 1: transmitter logic is reset and all pending transmitter data is discarded This bit is self clearing once the reset has completed. +
+RXRES + +0:0 + +1 + +1 + +1 + +Software reset for Rx data path: 0: no affect 1: receiver logic is reset and all pending receiver data is discarded. This bit is self clearing once the reset has completed. +
+Control_reg0@0XE0001000 + +31:0 + +1ff + + + +17 + +UART Control Register +
+

+

Register ( slcr )mode_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+mode_reg0 + +0XE0001004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CHMODE + +9:8 + +300 + +0 + +0 + +Channel mode: Defines the mode of operation of the UART. 00: normal 01: automatic echo 10: local loopback 11: remote loopback +
+NBSTOP + +7:6 + +c0 + +0 + +0 + +Number of stop bits: Defines the number of stop bits to detect on receive and to generate on transmit. 00: 1 stop bit 01: 1.5 stop bits 10: 2 stop bits 11: reserved +
+PAR + +5:3 + +38 + +4 + +20 + +Parity type select: Defines the expected parity to check on receive and the parity to generate on transmit. 000: even parity 001: odd parity 010: forced to 0 parity (space) 011: forced to 1 parity (mark) 1xx: no parity +
+CHRL + +2:1 + +6 + +0 + +0 + +Character length select: Defines the number of bits in each character. 11: 6 bits 10: 7 bits 0x: 8 bits +
+CLKS + +0:0 + +1 + +0 + +0 + +Clock source select: This field defines whether a pre-scalar of 8 is applied to the baud rate generator input clock. 0: clock source is uart_ref_clk 1: clock source is uart_ref_clk/8 +
+mode_reg0@0XE0001004 + +31:0 + +3ff + + + +20 + +UART Mode Register +
+

+

QSPI REGISTERS

+

Register ( slcr )Config_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Config_reg + +0XE000D000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Holdb_dr + +19:19 + +80000 + +1 + +80000 + +If set, Holdb and WPn pins are actively driven by the qspi controller in 1-bit and 2-bit modes . If not set, then external pull up is required on HOLDb and WPn pins . Note that this bit doesn't affect the quad(4-bit) mode as Controller always drives these pins in quad mode. It is highly recommended to set this bit always(irrespective of mode of operation) while using QSPI +
+Config_reg@0XE000D000 + +31:0 + +80000 + + + +80000 + +SPI configuration register +
+

+

PL POWER ON RESET REGISTERS

+

Register ( slcr )CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CTRL + +0XF8007000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PCFG_POR_CNT_4K + +29:29 + +20000000 + +0 + +0 + +This register controls which POR timer the PL will use for power-up. 0 - Use 64k timer 1 - Use 4k timer +
+CTRL@0XF8007000 + +31:0 + +20000000 + + + +0 + +Control Register : This register defines basic control registers. Some of the register bits can be locked by control bits in the LOCK Register 0x004. +
+

+

SMC TIMING CALCULATION REGISTER UPDATE

+

NAND SET CYCLE

+

OPMODE

+

DIRECT COMMAND

+

SRAM/NOR CS0 SET CYCLE

+

DIRECT COMMAND

+

NOR CS0 BASE ADDRESS

+

SRAM/NOR CS1 SET CYCLE

+

DIRECT COMMAND

+

NOR CS1 BASE ADDRESS

+

USB RESET

+

USB0 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

Register ( slcr )DIRM_1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DIRM_1 + +0XE000A244 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DIRECTION_1 + +21:0 + +3fffff + +80000 + +80000 + +Operation is the same as DIRM_0[DIRECTION_0] +
+DIRM_1@0XE000A244 + +31:0 + +3fffff + + + +80000 + +Direction mode (GPIO Bank1, MIO) +
+

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Operation is the same as MASK_DATA_0_LSW[MASK_0_LSW] +
+DATA_1_MSW + +5:0 + +3f + +8 + +8 + +Operation is the same as MASK_DATA_0_LSW[DATA_0_LSW] +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370008 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

Register ( slcr )OEN_1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+OEN_1 + +0XE000A248 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+OP_ENABLE_1 + +21:0 + +3fffff + +80000 + +80000 + +Operation is the same as OEN_0[OP_ENABLE_0] +
+OEN_1@0XE000A248 + +31:0 + +3fffff + + + +80000 + +Output enable (GPIO Bank1, MIO) +
+

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Operation is the same as MASK_DATA_0_LSW[MASK_0_LSW] +
+DATA_1_MSW + +5:0 + +3f + +0 + +0 + +Operation is the same as MASK_DATA_0_LSW[DATA_0_LSW] +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Operation is the same as MASK_DATA_0_LSW[MASK_0_LSW] +
+DATA_1_MSW + +5:0 + +3f + +8 + +8 + +Operation is the same as MASK_DATA_0_LSW[DATA_0_LSW] +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370008 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

USB1 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

ENET RESET

+

ENET0 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

ENET1 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

I2C RESET

+

I2C0 RESET

+

DIR MODE GPIO BANK0

+

DIR MODE GPIO BANK1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE

+

OUTPUT ENABLE

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

I2C1 RESET

+

DIR MODE GPIO BANK0

+

DIR MODE GPIO BANK1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE

+

OUTPUT ENABLE

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

NOR CHIP SELECT

+

DIR MODE BANK 0

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

OUTPUT ENABLE BANK 0

+ +

+

ps7_post_config_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +LVL_SHFTR_EN + + +0XF8000900 + +32 + +RW + +0x000000 + +Level Shifters Enable +
+ +FPGA_RST_CTRL + + +0XF8000240 + +32 + +RW + +0x000000 + +FPGA Software Reset Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_post_config_3_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +Write the unlock key, 0xDF0D, to enable writes to the slcr registers. All slcr registers, 0xF800_0000 to 0xF800_0B74, are writeable until locked using the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

ENABLING LEVEL SHIFTER

+

Register ( slcr )LVL_SHFTR_EN

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LVL_SHFTR_EN + +0XF8000900 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+USER_LVL_INP_EN_0 + +3:3 + +8 + +1 + +8 + +Level shifter enable to drive signals from PL to PS +
+USER_LVL_OUT_EN_0 + +2:2 + +4 + +1 + +4 + +Level shifter enable to drive signals from PS to PL +
+USER_LVL_INP_EN_1 + +1:1 + +2 + +1 + +2 + +Level shifter enable to drive signals from PL to PS +
+USER_LVL_OUT_EN_1 + +0:0 + +1 + +1 + +1 + +Level shifter enable to drive signals from PS to PL +
+LVL_SHFTR_EN@0XF8000900 + +31:0 + +f + + + +f + +Level Shifters Enable +
+

+

FPGA RESETS TO 0

+

Register ( slcr )FPGA_RST_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA_RST_CTRL + +0XF8000240 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_3 + +31:25 + +fe000000 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+reserved_FPGA_ACP_RST + +24:24 + +1000000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_AXDS3_RST + +23:23 + +800000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_AXDS2_RST + +22:22 + +400000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_AXDS1_RST + +21:21 + +200000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_AXDS0_RST + +20:20 + +100000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_2 + +19:18 + +c0000 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+reserved_FSSW1_FPGA_RST + +17:17 + +20000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FSSW0_FPGA_RST + +16:16 + +10000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_1 + +15:14 + +c000 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+reserved_FPGA_FMSW1_RST + +13:13 + +2000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_FMSW0_RST + +12:12 + +1000 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_DMA3_RST + +11:11 + +800 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_DMA2_RST + +10:10 + +400 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_DMA1_RST + +9:9 + +200 + +0 + +0 + +Reserved. Do not modify. +
+reserved_FPGA_DMA0_RST + +8:8 + +100 + +0 + +0 + +Reserved. Do not modify. +
+reserved + +7:4 + +f0 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+FPGA3_OUT_RST + +3:3 + +8 + +0 + +0 + +PL Reset 3 (FCLKRESETN3 output signal). Refer to the PS7 wrapper in EDK for possible signal inversion. Logic level on the FCLKRESETN3 signal: 0: De-assert reset (High logic level). 1: Assert Reset (Low logic state) +
+FPGA2_OUT_RST + +2:2 + +4 + +0 + +0 + +PL Reset 2 (FCLKRESETN2 output signal). Refer to the PS7 wrapper in EDK for possible signal inversion. Logic level on the FCLKRESETN2 signal: 0: De-assert reset (High logic level). 1: Assert Reset (Low logic state) +
+FPGA1_OUT_RST + +1:1 + +2 + +0 + +0 + +PL Reset 1 (FCLKRESETN1 output signal). Refer to the PS7 wrapper in EDK for possible signal inversion. Logic level on the FCLKRESETN1 signal: 0: De-assert reset (High logic level). 1: Assert Reset (Low logic state) +
+FPGA0_OUT_RST + +0:0 + +1 + +0 + +0 + +PL Reset 0 (FCLKRESETN0 output signal). Refer to the PS7 wrapper in EDK for possible signal inversion. Logic level on the FCLKRESETN0 signal: 0: De-assert reset (High logic level). 1: Assert Reset (Low logic state) +
+FPGA_RST_CTRL@0XF8000240 + +31:0 + +ffffffff + + + +0 + +FPGA Software Reset Control +
+

+

AFI REGISTERS

+

AFI0 REGISTERS

+

AFI1 REGISTERS

+

AFI2 REGISTERS

+

AFI3 REGISTERS

+

AFI2 SECURE REGISTER

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +Write the lock key, 0x767B, to write protect the slcr registers: all slcr registers, 0xF800_0000 to 0xF800_0B74, are write protected until the unlock key is written to the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_debug_3_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +LAR + + +0XF8898FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+ +LAR + + +0XF8899FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+ +LAR + + +0XF8809FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+

+

ps7_debug_3_0

+ + + + + + + + + +

CROSS TRIGGER CONFIGURATIONS

+

UNLOCKING CTI REGISTERS

+

Register ( slcr )LAR

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8898FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8898FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

Register ( slcr )LAR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8899FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8899FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

Register ( slcr )LAR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8809FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8809FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

ENABLING CTI MODULES AND CHANNELS

+

MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS

+ +

+ + + + +

ps7_pll_init_data_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +ARM_PLL_CFG + + +0XF8000110 + +32 + +RW + +0x000000 + +ARM PLL Configuration +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_CLK_CTRL + + +0XF8000120 + +32 + +RW + +0x000000 + +CPU Clock Control +
+ +DDR_PLL_CFG + + +0XF8000114 + +32 + +RW + +0x000000 + +DDR PLL Configuration +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_CLK_CTRL + + +0XF8000124 + +32 + +RW + +0x000000 + +DDR Clock Control +
+ +IO_PLL_CFG + + +0XF8000118 + +32 + +RW + +0x000000 + +IO PLL Configuration +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_pll_init_data_2_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

PLL SLCR REGISTERS

+

ARM PLL INIT

+

Register ( slcr )ARM_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CFG + +0XF8000110 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +2 + +20 + +Drive the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drive the PLL_CP[3:0] input of the PLL to set the PLL charge pump control +
+LOCK_CNT + +21:12 + +3ff000 + +fa + +fa000 + +Drive the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned withth a certain window before syaing locked. +
+ARM_PLL_CFG@0XF8000110 + +31:0 + +3ffff0 + + + +fa220 + +ARM PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +28 + +28000 + +Provide the feedback divisor for the PLL. Note: Before changing this value, the PLL must first be bypassed and then put into powerdown or reset state. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +7f000 + + + +28000 + +ARM PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +ARM PLL Bypass override control: PLL_BYPASS_QUAL = 0: 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL =1: 0: 1: bypass mode regardless of the pin strapping. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +10 + + + +10 + +ARM PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +Drive the RESET input of the PLL: 0: PLL out of reset 1: PLL held in reset. After reset, program the PLLs and ensure that the serviced bit is asserted before using. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +1 + + + +1 + +ARM PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +Drive the RESET input of the PLL: 0: PLL out of reset 1: PLL held in reset. After reset, program the PLLs and ensure that the serviced bit is asserted before using. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +1 + + + +0 + +ARM PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+ARM_PLL_LOCK + +0:0 + +1 + +1 + +1 + +ARM PLL lock status: 0: not locked, 1: locked +
+PLL_STATUS@0XF800010C + +31:0 + +1 + + + +1 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +ARM PLL Bypass override control: PLL_BYPASS_QUAL = 0: 0: enabled, not bypassed. 1: bypassed. PLL_BYPASS_QUAL =1: 0: 1: bypass mode regardless of the pin strapping. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +10 + + + +0 + +ARM PLL Control +
+

+

Register ( slcr )ARM_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_CLK_CTRL + +0XF8000120 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the CPU clock: 0x: CPU PLL 10: divided DDR PLL 11: IO PLL +
+DIVISOR + +13:8 + +3f00 + +2 + +200 + +Frequency divisor for the CPU clock source. +
+CPU_6OR4XCLKACT + +24:24 + +1000000 + +1 + +1000000 + +CPU_6x4x Clock control: 0: disable, 1: enable +
+CPU_3OR2XCLKACT + +25:25 + +2000000 + +1 + +2000000 + +CPU_3x2x Clock control: 0: disable, 1: enable +
+CPU_2XCLKACT + +26:26 + +4000000 + +1 + +4000000 + +CPU_2x Clock control: 0: disable, 1: enable +
+CPU_1XCLKACT + +27:27 + +8000000 + +1 + +8000000 + +CPU_1x Clock control: 0: disable, 1: enable +
+CPU_PERI_CLKACT + +28:28 + +10000000 + +1 + +10000000 + +Clock active: 0: Clock is disabled 1: Clock is enabled +
+ARM_CLK_CTRL@0XF8000120 + +31:0 + +1f003f30 + + + +1f000200 + +CPU Clock Control +
+

+

DDR PLL INIT

+

Register ( slcr )DDR_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CFG + +0XF8000114 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +2 + +20 + +Drive the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control. +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drive the PLL_CP[3:0] input of the PLL to set the PLL charge pump control. +
+LOCK_CNT + +21:12 + +3ff000 + +12c + +12c000 + +Drive the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned withth a certain window before staying locked. +
+DDR_PLL_CFG@0XF8000114 + +31:0 + +3ffff0 + + + +12c220 + +DDR PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +20 + +20000 + +Provide the feedback divisor for the PLL. Note: Before changing this value, the PLL must first be bypassed and then put into powerdown or reset state. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +7f000 + + + +20000 + +DDR PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +Overide control of the PLL bypass function within the clock controller to force into bypass state: 0: PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1: PLL forced to be bypassed +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +10 + + + +10 + +DDR PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +Drive the RESET input of the PLL: 0: PLL out of reset 1: PLL held in reset Remember that after reset, program the PLLs and ensure that the serviced bit below is asserted before using. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +1 + + + +1 + +DDR PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +Drive the RESET input of the PLL: 0: PLL out of reset 1: PLL held in reset Remember that after reset, program the PLLs and ensure that the serviced bit below is asserted before using. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +1 + + + +0 + +DDR PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DDR_PLL_LOCK + +1:1 + +2 + +1 + +2 + +DDR PLL lock status: 0: not locked, 1: locked +
+PLL_STATUS@0XF800010C + +31:0 + +2 + + + +2 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +Overide control of the PLL bypass function within the clock controller to force into bypass state: 0: PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1: PLL forced to be bypassed +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +10 + + + +0 + +DDR PLL Control +
+

+

Register ( slcr )DDR_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_CLK_CTRL + +0XF8000124 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DDR_3XCLKACT + +0:0 + +1 + +1 + +1 + +DDR_3x Clock control: 0: disable, 1: enable +
+DDR_2XCLKACT + +1:1 + +2 + +1 + +2 + +DDR_2x Clock control: 0: disable, 1: enable +
+DDR_3XCLK_DIVISOR + +25:20 + +3f00000 + +2 + +200000 + +Frequency divisor for the ddr_3x clock +
+DDR_2XCLK_DIVISOR + +31:26 + +fc000000 + +3 + +c000000 + +Frequency divisor for the ddr_2x clock +
+DDR_CLK_CTRL@0XF8000124 + +31:0 + +fff00003 + + + +c200003 + +DDR Clock Control +
+

+

IO PLL INIT

+

Register ( slcr )IO_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CFG + +0XF8000118 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +c + +c0 + +Drive the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control. +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drive the PLL_CP[3:0] input of the PLL to set the PLL charge pump control. +
+LOCK_CNT + +21:12 + +3ff000 + +145 + +145000 + +Drive the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned withth a certain window before staying locked. +
+IO_PLL_CFG@0XF8000118 + +31:0 + +3ffff0 + + + +1452c0 + +IO PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +1e + +1e000 + +Provide the feedback divisor for the PLL. Note: Before changing this value, the PLL must first be bypassed and then put into powerdown or reset state. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +7f000 + + + +1e000 + +IO PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +Overide control of the PLL bypass function within the clock controller to force into bypass state: 0: PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1: PLL forced to be bypassed +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +10 + + + +10 + +IO PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +Drive the RESET input of the PLL: 0: PLL out of reset. 1: PLL held in reset. Remember that after a reset, program the PLLs and ensure that the serviced bit below is asserted before using. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +1 + + + +1 + +IO PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +Drive the RESET input of the PLL: 0: PLL out of reset. 1: PLL held in reset. Remember that after a reset, program the PLLs and ensure that the serviced bit below is asserted before using. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +1 + + + +0 + +IO PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IO_PLL_LOCK + +2:2 + +4 + +1 + +4 + +IO PLL lock status: 0: not locked, 1: locked +
+PLL_STATUS@0XF800010C + +31:0 + +4 + + + +4 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +Overide control of the PLL bypass function within the clock controller to force into bypass state: 0: PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1: PLL forced to be bypassed +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +10 + + + +0 + +IO PLL Control +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_clock_init_data_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DCI_CLK_CTRL + + +0XF8000128 + +32 + +RW + +0x000000 + +DCI clock control +
+ +GEM0_RCLK_CTRL + + +0XF8000138 + +32 + +RW + +0x000000 + +GigE 0 Rx Clock Control +
+ +GEM0_CLK_CTRL + + +0XF8000140 + +32 + +RW + +0x000000 + +GigE 0 Ref Clock Control +
+ +LQSPI_CLK_CTRL + + +0XF800014C + +32 + +RW + +0x000000 + +Quad SPI Ref Clock Control +
+ +SDIO_CLK_CTRL + + +0XF8000150 + +32 + +RW + +0x000000 + +SDIO Ref Clock Control +
+ +UART_CLK_CTRL + + +0XF8000154 + +32 + +RW + +0x000000 + +UART Ref Clock Control +
+ +CAN_CLK_CTRL + + +0XF800015C + +32 + +RW + +0x000000 + +CAN Ref Clock Control +
+ +CAN_MIOCLK_CTRL + + +0XF8000160 + +32 + +RW + +0x000000 + +CAN MIO Clock Control +
+ +PCAP_CLK_CTRL + + +0XF8000168 + +32 + +RW + +0x000000 + +PCAP Clock Control +
+ +FPGA0_CLK_CTRL + + +0XF8000170 + +32 + +RW + +0x000000 + +PL Clock 0 Output control +
+ +FPGA1_CLK_CTRL + + +0XF8000180 + +32 + +RW + +0x000000 + +PL Clock 1 Output control +
+ +FPGA2_CLK_CTRL + + +0XF8000190 + +32 + +RW + +0x000000 + +PL Clock 2 output control +
+ +FPGA3_CLK_CTRL + + +0XF80001A0 + +32 + +RW + +0x000000 + +PL Clock 3 output control +
+ +CLK_621_TRUE + + +0XF80001C4 + +32 + +RW + +0x000000 + +CPU Clock Ratio Mode select +
+ +APER_CLK_CTRL + + +0XF800012C + +32 + +RW + +0x000000 + +AMBA Peripheral Clock Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_clock_init_data_2_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

CLOCK CONTROL SLCR REGISTERS

+

Register ( slcr )DCI_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DCI_CLK_CTRL + +0XF8000128 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +DCI clock control - 0: disable, 1: enable +
+DIVISOR0 + +13:8 + +3f00 + +23 + +2300 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+DIVISOR1 + +25:20 + +3f00000 + +3 + +300000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+DCI_CLK_CTRL@0XF8000128 + +31:0 + +3f03f01 + + + +302301 + +DCI clock control +
+

+

Register ( slcr )GEM0_RCLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+GEM0_RCLK_CTRL + +0XF8000138 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Ethernet Controler 0 Rx Clock control 0: disable, 1: enable +
+SRCSEL + +4:4 + +10 + +0 + +0 + +Select the source to generate the Rx clock: 0: MIO Rx clock, 1: EMIO Rx clock +
+GEM0_RCLK_CTRL@0XF8000138 + +31:0 + +11 + + + +1 + +GigE 0 Rx Clock Control +
+

+

Register ( slcr )GEM0_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+GEM0_CLK_CTRL + +0XF8000140 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Ethernet Controller 0 Reference Clock control 0: disable, 1: enable +
+SRCSEL + +6:4 + +70 + +0 + +0 + +Selects the source to generate the reference clock 00x: IO PLL. 010: ARM PLL. 011: DDR PLL 1xx: Ethernet controller 0 EMIO clock +
+DIVISOR + +13:8 + +3f00 + +8 + +800 + +First divisor for Ethernet controller 0 source clock. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Second divisor for Ethernet controller 0 source clock. +
+GEM0_CLK_CTRL@0XF8000140 + +31:0 + +3f03f71 + + + +100801 + +GigE 0 Ref Clock Control +
+

+

Register ( slcr )LQSPI_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LQSPI_CLK_CTRL + +0XF800014C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Quad SPI Controller Reference Clock control 0: disable, 1: enable +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select clock source generate Quad SPI clock: 0x: IO PLL, 10: ARM PLL, 11: DDR PLL +
+DIVISOR + +13:8 + +3f00 + +5 + +500 + +Divisor for Quad SPI Controller source clock. +
+LQSPI_CLK_CTRL@0XF800014C + +31:0 + +3f31 + + + +501 + +Quad SPI Ref Clock Control +
+

+

Register ( slcr )SDIO_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SDIO_CLK_CTRL + +0XF8000150 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +1 + +1 + +SDIO Controller 0 Clock control. 0: disable, 1: enable +
+CLKACT1 + +1:1 + +2 + +0 + +0 + +SDIO Controller 1 Clock control. 0: disable, 1: enable +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock. 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+SDIO_CLK_CTRL@0XF8000150 + +31:0 + +3f33 + + + +a01 + +SDIO Ref Clock Control +
+

+

Register ( slcr )UART_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+UART_CLK_CTRL + +0XF8000154 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +0 + +0 + +UART 0 Reference clock control. 0: disable, 1: enable +
+CLKACT1 + +1:1 + +2 + +1 + +2 + +UART 1 reference clock active: 0: Clock is disabled 1: Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the PLL source to generate the clock. 0x: IO PLL 10: ARM PLL 11: DDR PLL +
+DIVISOR + +13:8 + +3f00 + +a + +a00 + +Divisor for UART Controller source clock. +
+UART_CLK_CTRL@0XF8000154 + +31:0 + +3f33 + + + +a02 + +UART Ref Clock Control +
+

+

Register ( slcr )CAN_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CAN_CLK_CTRL + +0XF800015C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +1 + +1 + +CAN 0 Reference Clock active: 0: Clock is disabled 1: Clock is enabled +
+CLKACT1 + +1:1 + +2 + +0 + +0 + +CAN 1 Reference Clock active: 0: Clock is disabled 1: Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider. +
+CAN_CLK_CTRL@0XF800015C + +31:0 + +3f03f33 + + + +100a01 + +CAN Ref Clock Control +
+

+

Register ( slcr )CAN_MIOCLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CAN_MIOCLK_CTRL + +0XF8000160 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CAN0_MUX + +5:0 + +3f + +0 + +0 + +CAN 0 mux selection for MIO. Setting this to zero will select MIO[0] as the clock source. Only values 0-53 are valid. +
+CAN0_REF_SEL + +6:6 + +40 + +0 + +0 + +CAN 0 Reference Clock selection: 0: From internal PLL 1: From MIO based on the next field +
+CAN1_MUX + +21:16 + +3f0000 + +0 + +0 + +CAN 1 mux selection for MIO. Setting this to zero will select MIO[0] as the clock source. Only values 0-53 are valid. +
+CAN1_REF_SEL + +22:22 + +400000 + +0 + +0 + +CAN 1 Reference Clock selection: 0: From internal PLL. 1: From MIO based on the next field +
+CAN_MIOCLK_CTRL@0XF8000160 + +31:0 + +7f007f + + + +0 + +CAN MIO Clock Control +
+

+

TRACE CLOCK

+

Register ( slcr )PCAP_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PCAP_CLK_CTRL + +0XF8000168 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active: 0: Clock is disabled 1: Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+PCAP_CLK_CTRL@0XF8000168 + +31:0 + +3f31 + + + +501 + +PCAP Clock Control +
+

+

Register ( slcr )FPGA0_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA0_CLK_CTRL + +0XF8000170 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +6 + +600 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA0_CLK_CTRL@0XF8000170 + +31:0 + +3f03f30 + + + +100600 + +PL Clock 0 Output control +
+

+

Register ( slcr )FPGA1_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA1_CLK_CTRL + +0XF8000180 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +14 + +1400 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA1_CLK_CTRL@0XF8000180 + +31:0 + +3f03f30 + + + +101400 + +PL Clock 1 Output control +
+

+

Register ( slcr )FPGA2_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA2_CLK_CTRL + +0XF8000190 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA2_CLK_CTRL@0XF8000190 + +31:0 + +3f03f30 + + + +100a00 + +PL Clock 2 output control +
+

+

Register ( slcr )FPGA3_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA3_CLK_CTRL + +0XF80001A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Select the source used to generate the clock: 0x: Source for generated clock is IO PLL. 10: Source for generated clock is ARM PLL. 11: Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider. +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divide +
+FPGA3_CLK_CTRL@0XF80001A0 + +31:0 + +3f03f30 + + + +100500 + +PL Clock 3 output control +
+

+

Register ( slcr )CLK_621_TRUE

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CLK_621_TRUE + +0XF80001C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLK_621_TRUE + +0:0 + +1 + +1 + +1 + +Select the CPU clock ration: 0: 4:2:1 1: 6:2:1 +
+CLK_621_TRUE@0XF80001C4 + +31:0 + +1 + + + +1 + +CPU Clock Ratio Mode select +
+

+

Register ( slcr )APER_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+APER_CLK_CTRL + +0XF800012C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DMA_CPU_2XCLKACT + +0:0 + +1 + +1 + +1 + +DMA controller AMBA Clock control 0: disable, 1: enable +
+USB0_CPU_1XCLKACT + +2:2 + +4 + +1 + +4 + +USB controller 0 AMBA Clock control 0: disable, 1: enable +
+USB1_CPU_1XCLKACT + +3:3 + +8 + +1 + +8 + +USB controller 1 AMBA Clock control 0: disable, 1: enable +
+GEM0_CPU_1XCLKACT + +6:6 + +40 + +1 + +40 + +Gigabit Ethernet 0 AMBA Clock control 0: disable, 1: enable +
+GEM1_CPU_1XCLKACT + +7:7 + +80 + +0 + +0 + +Gigabit Ethernet 1 AMBA Clock control 0: disable, 1: enable +
+SDI0_CPU_1XCLKACT + +10:10 + +400 + +1 + +400 + +SDIO controller 0 AMBA Clock 0: disable, 1: enable +
+SDI1_CPU_1XCLKACT + +11:11 + +800 + +0 + +0 + +SDIO controller 1 AMBA Clock control 0: disable, 1: enable +
+SPI0_CPU_1XCLKACT + +14:14 + +4000 + +0 + +0 + +SPI 0 AMBA Clock control 0: disable, 1: enable +
+SPI1_CPU_1XCLKACT + +15:15 + +8000 + +0 + +0 + +SPI 1 AMBA Clock control 0: disable, 1: enable +
+CAN0_CPU_1XCLKACT + +16:16 + +10000 + +1 + +10000 + +CAN 0 AMBA Clock control 0: disable, 1: enable +
+CAN1_CPU_1XCLKACT + +17:17 + +20000 + +0 + +0 + +CAN 1 AMBA Clock control 0: disable, 1: enable +
+I2C0_CPU_1XCLKACT + +18:18 + +40000 + +1 + +40000 + +I2C 0 AMBA Clock control 0: disable, 1: enable +
+I2C1_CPU_1XCLKACT + +19:19 + +80000 + +1 + +80000 + +I2C 1 AMBA Clock control 0: disable, 1: enable +
+UART0_CPU_1XCLKACT + +20:20 + +100000 + +0 + +0 + +UART 0 AMBA Clock control 0: disable, 1: enable +
+UART1_CPU_1XCLKACT + +21:21 + +200000 + +1 + +200000 + +UART 1 AMBA Clock control 0: disable, 1: enable +
+GPIO_CPU_1XCLKACT + +22:22 + +400000 + +1 + +400000 + +GPIO AMBA Clock control 0: disable, 1: enable +
+LQSPI_CPU_1XCLKACT + +23:23 + +800000 + +1 + +800000 + +Quad SPI AMBA Clock control 0: disable, 1: enable +
+SMC_CPU_1XCLKACT + +24:24 + +1000000 + +1 + +1000000 + +SMC AMBA Clock control 0: disable, 1: enable +
+APER_CLK_CTRL@0XF800012C + +31:0 + +1ffcccd + + + +1ed044d + +AMBA Peripheral Clock Control +
+

+

THIS SHOULD BE BLANK

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_ddr_init_data_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +ddrc_ctrl + + +0XF8006000 + +32 + +RW + +0x000000 + +DDRC Control +
+ +Two_rank_cfg + + +0XF8006004 + +32 + +RW + +0x000000 + +Two Rank Configuration +
+ +HPR_reg + + +0XF8006008 + +32 + +RW + +0x000000 + +HPR Queue control +
+ +LPR_reg + + +0XF800600C + +32 + +RW + +0x000000 + +LPR Queue control +
+ +WR_reg + + +0XF8006010 + +32 + +RW + +0x000000 + +WR Queue control +
+ +DRAM_param_reg0 + + +0XF8006014 + +32 + +RW + +0x000000 + +DRAM Parameters 0 +
+ +DRAM_param_reg1 + + +0XF8006018 + +32 + +RW + +0x000000 + +DRAM Parameters 1 +
+ +DRAM_param_reg2 + + +0XF800601C + +32 + +RW + +0x000000 + +DRAM Parameters 2 +
+ +DRAM_param_reg3 + + +0XF8006020 + +32 + +RW + +0x000000 + +DRAM Parameters 3 +
+ +DRAM_param_reg4 + + +0XF8006024 + +32 + +RW + +0x000000 + +DRAM Parameters 4 +
+ +DRAM_init_param + + +0XF8006028 + +32 + +RW + +0x000000 + +DRAM Initialization Parameters +
+ +DRAM_EMR_reg + + +0XF800602C + +32 + +RW + +0x000000 + +DRAM EMR2, EMR3 access +
+ +DRAM_EMR_MR_reg + + +0XF8006030 + +32 + +RW + +0x000000 + +DRAM EMR, MR access +
+ +DRAM_burst8_rdwr + + +0XF8006034 + +32 + +RW + +0x000000 + +DRAM Burst 8 read/write +
+ +DRAM_disable_DQ + + +0XF8006038 + +32 + +RW + +0x000000 + +DRAM Disable DQ +
+ +DRAM_addr_map_bank + + +0XF800603C + +32 + +RW + +0x000000 + +Row/Column address bits +
+ +DRAM_addr_map_col + + +0XF8006040 + +32 + +RW + +0x000000 + +Column address bits +
+ +DRAM_addr_map_row + + +0XF8006044 + +32 + +RW + +0x000000 + +Select DRAM row address bits +
+ +DRAM_ODT_reg + + +0XF8006048 + +32 + +RW + +0x000000 + +DRAM ODT control +
+ +phy_cmd_timeout_rddata_cpt + + +0XF8006050 + +32 + +RW + +0x000000 + +PHY command time out and read data capture FIFO +
+ +DLL_calib + + +0XF8006058 + +32 + +RW + +0x000000 + +DLL calibration +
+ +ODT_delay_hold + + +0XF800605C + +32 + +RW + +0x000000 + +ODT delay and ODT hold +
+ +ctrl_reg1 + + +0XF8006060 + +32 + +RW + +0x000000 + +Controller 1 +
+ +ctrl_reg2 + + +0XF8006064 + +32 + +RW + +0x000000 + +Controller 2 +
+ +ctrl_reg3 + + +0XF8006068 + +32 + +RW + +0x000000 + +Controller 3 +
+ +ctrl_reg4 + + +0XF800606C + +32 + +RW + +0x000000 + +Controller 4 +
+ +ctrl_reg5 + + +0XF8006078 + +32 + +RW + +0x000000 + +Controller register 5 +
+ +ctrl_reg6 + + +0XF800607C + +32 + +RW + +0x000000 + +Controller register 6 +
+ +CHE_REFRESH_TIMER01 + + +0XF80060A0 + +32 + +RW + +0x000000 + +CHE_REFRESH_TIMER01 +
+ +CHE_T_ZQ + + +0XF80060A4 + +32 + +RW + +0x000000 + +ZQ parameters +
+ +CHE_T_ZQ_Short_Interval_Reg + + +0XF80060A8 + +32 + +RW + +0x000000 + +Misc parameters +
+ +deep_pwrdwn_reg + + +0XF80060AC + +32 + +RW + +0x000000 + +Deep powerdown (LPDDR2) +
+ +reg_2c + + +0XF80060B0 + +32 + +RW + +0x000000 + +Training control +
+ +reg_2d + + +0XF80060B4 + +32 + +RW + +0x000000 + +Misc Debug +
+ +dfi_timing + + +0XF80060B8 + +32 + +RW + +0x000000 + +DFI timing +
+ +CHE_ECC_CONTROL_REG_OFFSET + + +0XF80060C4 + +32 + +RW + +0x000000 + +ECC error clear +
+ +CHE_ECC_CONTROL_REG_OFFSET + + +0XF80060C4 + +32 + +RW + +0x000000 + +ECC error clear +
+ +CHE_CORR_ECC_LOG_REG_OFFSET + + +0XF80060C8 + +32 + +RW + +0x000000 + +ECC error correction +
+ +CHE_UNCORR_ECC_LOG_REG_OFFSET + + +0XF80060DC + +32 + +RW + +0x000000 + +ECC unrecoverable error status +
+ +CHE_ECC_STATS_REG_OFFSET + + +0XF80060F0 + +32 + +RW + +0x000000 + +ECC error count +
+ +ECC_scrub + + +0XF80060F4 + +32 + +RW + +0x000000 + +ECC mode/scrub +
+ +phy_rcvr_enable + + +0XF8006114 + +32 + +RW + +0x000000 + +Phy receiver enable register +
+ +PHY_Config0 + + +0XF8006118 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config1 + + +0XF800611C + +32 + +RW + +0x000000 + +PHY configuration register for data slice 1. +
+ +PHY_Config2 + + +0XF8006120 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 2. +
+ +PHY_Config3 + + +0XF8006124 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 3. +
+ +phy_init_ratio0 + + +0XF800612C + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio1 + + +0XF8006130 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 1. +
+ +phy_init_ratio2 + + +0XF8006134 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 2. +
+ +phy_init_ratio3 + + +0XF8006138 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 3. +
+ +phy_rd_dqs_cfg0 + + +0XF8006140 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg1 + + +0XF8006144 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 1. +
+ +phy_rd_dqs_cfg2 + + +0XF8006148 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 2. +
+ +phy_rd_dqs_cfg3 + + +0XF800614C + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 3. +
+ +phy_wr_dqs_cfg0 + + +0XF8006154 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg1 + + +0XF8006158 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 1. +
+ +phy_wr_dqs_cfg2 + + +0XF800615C + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 2. +
+ +phy_wr_dqs_cfg3 + + +0XF8006160 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 3. +
+ +phy_we_cfg0 + + +0XF8006168 + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 0. +
+ +phy_we_cfg1 + + +0XF800616C + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 1. +
+ +phy_we_cfg2 + + +0XF8006170 + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 2. +
+ +phy_we_cfg3 + + +0XF8006174 + +32 + +RW + +0x000000 + +PHY FIFO write enable configuration for data slice 3. +
+ +wr_data_slv0 + + +0XF800617C + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 0. +
+ +wr_data_slv1 + + +0XF8006180 + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 1. +
+ +wr_data_slv2 + + +0XF8006184 + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 2. +
+ +wr_data_slv3 + + +0XF8006188 + +32 + +RW + +0x000000 + +PHY write data slave ratio config for data slice 3. +
+ +reg_64 + + +0XF8006190 + +32 + +RW + +0x000000 + +Training control 2 +
+ +reg_65 + + +0XF8006194 + +32 + +RW + +0x000000 + +Training control 3 +
+ +page_mask + + +0XF8006204 + +32 + +RW + +0x000000 + +Page mask +
+ +axi_priority_wr_port0 + + +0XF8006208 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port1 + + +0XF800620C + +32 + +RW + +0x000000 + +AXI Priority control for write port 1. +
+ +axi_priority_wr_port2 + + +0XF8006210 + +32 + +RW + +0x000000 + +AXI Priority control for write port 2. +
+ +axi_priority_wr_port3 + + +0XF8006214 + +32 + +RW + +0x000000 + +AXI Priority control for write port 3. +
+ +axi_priority_rd_port0 + + +0XF8006218 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port1 + + +0XF800621C + +32 + +RW + +0x000000 + +AXI Priority control for read port 1. +
+ +axi_priority_rd_port2 + + +0XF8006220 + +32 + +RW + +0x000000 + +AXI Priority control for read port 2. +
+ +axi_priority_rd_port3 + + +0XF8006224 + +32 + +RW + +0x000000 + +AXI Priority control for read port 3. +
+ +lpddr_ctrl0 + + +0XF80062A8 + +32 + +RW + +0x000000 + +LPDDR2 Control 0 +
+ +lpddr_ctrl1 + + +0XF80062AC + +32 + +RW + +0x000000 + +LPDDR2 Control 1 +
+ +lpddr_ctrl2 + + +0XF80062B0 + +32 + +RW + +0x000000 + +LPDDR2 Control 2 +
+ +lpddr_ctrl3 + + +0XF80062B4 + +32 + +RW + +0x000000 + +LPDDR2 Control 3 +
+ +ddrc_ctrl + + +0XF8006000 + +32 + +RW + +0x000000 + +DDRC Control +
+

+

ps7_ddr_init_data_2_0

+ + + + + + + + + +

DDR INITIALIZATION

+

LOCK DDR

+

Register ( slcr )ddrc_ctrl

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ddrc_ctrl + +0XF8006000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_soft_rstb + +0:0 + +1 + +0 + +0 + +Active low soft reset. Update during normal operation. 0: Resets the controller 1: Takes the controller out of reset. Dynamic Bit Field. Note: Software changes DRAM controller register values only when the controller is in the reset state, except for bit fields that can be dymanically updated. +
+reg_ddrc_powerdown_en + +1:1 + +2 + +0 + +0 + +Controller power down control. Update during normal operation. Enable the controller to powerdown after it becomes idle. Dynamic Bit Field. 0: disable 1: enable +
+reg_ddrc_data_bus_width + +3:2 + +c + +0 + +0 + +DDR bus width control 00: 32-bit 01: 16-bit 1x: reserved +
+reg_ddrc_burst8_refresh + +6:4 + +70 + +0 + +0 + +Refresh timeout. Programmed value plus one will be the number of refresh timeouts that will be allowed to accumulate before traffic is blocked and the refreshes are forced to execute. Closing pages to perform a refresh is a one-time penalty that must be paid for each group of refreshes; therefore, performing refreshes in a burst reduces the per-refresh penalty of these page closings. Higher numbers for burst_of_N_refresh slightly increases utilization; lower numbers decreases the worst-case latency associated with refreshes. 0: single refresh 1: burst-of-2 ... 7: burst-of-8 refresh +
+reg_ddrc_rdwr_idle_gap + +13:7 + +3f80 + +1 + +80 + +When the preferred transaction store is empty for this many clock cycles, switch to the alternate transaction store if it is non-empty. The read transaction store (both high and low priority) is the default preferred transaction store and the write transaction store is the alternate store. When 'Prefer write over read' is set this is reversed. +
+reg_ddrc_dis_rd_bypass + +14:14 + +4000 + +0 + +0 + +Only present in designs supporting read bypass. For Debug only. 0: Do not disable bypass path for high priority read page hits. 1: disable bypass path for high priority read page hits. +
+reg_ddrc_dis_act_bypass + +15:15 + +8000 + +0 + +0 + +Only present in designs supporting activate bypass. For Debug only. 0: Do not disable bypass path for high priority read activates. 1: disable bypass path for high priority read activates. +
+reg_ddrc_dis_auto_refresh + +16:16 + +10000 + +0 + +0 + +Disable auto-refresh. 0: do not disable auto-refresh. 1: disable auto-refresh. Dynamic Bit Field. Note: When this transitions from 0 to 1, any pending refreshes will be immediately scheduled by the controller. +
+ddrc_ctrl@0XF8006000 + +31:0 + +1ffff + + + +80 + +DDRC Control +
+

+

Register ( slcr )Two_rank_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Two_rank_cfg + +0XF8006004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_rfc_nom_x32 + +11:0 + +fff + +81 + +81 + +tREFI - Average time between refreshes. Unit: in multiples of 32 clocks. DRAM related. Default value is set for DDR3. Dynamic Bit Field. +
+reg_ddrc_active_ranks + +13:12 + +3000 + +1 + +1000 + +Rank configuration: 01: One Rank of DDR 11: Two Ranks of DDR Others: reserved +
+reg_ddrc_addrmap_cs_bit0 + +18:14 + +7c000 + +0 + +0 + +Only present for multi-rank configurations. Selects the address bit used as rank address bit 0. Valid Range: 0 to 25, and 31 Internal Base: 9. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 31, rank address bit 0 is set to 0. +
+reg_ddrc_wr_odt_block + +20:19 + +180000 + +1 + +80000 + +Block read/write scheduling cycle count when Write requires changing ODT settings 00: 1 cycle 01: 2 cycles 10: 3 cycles others: reserved +
+reg_ddrc_diff_rank_rd_2cycle_gap + +21:21 + +200000 + +0 + +0 + +Only present for multi-rank configurations. The two cycle gap is required for mDDR only, due to the large variance in tDQSCK in mDDR. 0: schedule a 1-cycle gap in data responses when performing consecutive reads to different ranks 1: schedule 2 cycle gap for the same +
+reg_ddrc_addrmap_cs_bit1 + +26:22 + +7c00000 + +0 + +0 + +Only present for multi-rank configurations. Selects the address bit used as rank address bit 1. Valid Range: 0 to 25, and 31 Internal Base: 10 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 31, rank address bit 1 is set to 0. +
+reg_ddrc_addrmap_open_bank + +27:27 + +8000000 + +0 + +0 + +Only present if MEMC_SIMPLE_ADDR_MAP is defined. Since MEMC_SIMPLE_ADDR_MAP is not defined, Reserved 1: Set the address map to Open Bank mode +
+reg_ddrc_addrmap_4bank_ram + +28:28 + +10000000 + +0 + +0 + +Only present if MEMC_SIMPLE_ADDR_MAP is defined. Since MEMC_SIMPLE_ADDR_MAP is not defined, Reserved 1: Set the address map for 4 Bank RAMs +
+Two_rank_cfg@0XF8006004 + +31:0 + +1fffffff + + + +81081 + +Two Rank Configuration +
+

+

Register ( slcr )HPR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+HPR_reg + +0XF8006008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_hpr_min_non_critical_x32 + +10:0 + +7ff + +f + +f + +Number of counts that the HPR queue is guaranteed to be non-critical (1 count = 32 DDR clocks). +
+reg_ddrc_hpr_max_starve_x32 + +21:11 + +3ff800 + +f + +7800 + +Number of clocks that the HPR queue can be starved before it goes critical. Unit: 32 clocks +
+reg_ddrc_hpr_xact_run_length + +25:22 + +3c00000 + +f + +3c00000 + +Number of transactions that will be serviced once the HPR queue goes critical is the smaller of this number and the number of transactions available. +
+HPR_reg@0XF8006008 + +31:0 + +3ffffff + + + +3c0780f + +HPR Queue control +
+

+

Register ( slcr )LPR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LPR_reg + +0XF800600C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_lpr_min_non_critical_x32 + +10:0 + +7ff + +1 + +1 + +Number of clocks that the LPR queue is guaranteed to be non-critical. Unit: 32 clocks +
+reg_ddrc_lpr_max_starve_x32 + +21:11 + +3ff800 + +2 + +1000 + +Number of clocks that the LPR queue can be starved before it goes critical. Unit: 32 clocks +
+reg_ddrc_lpr_xact_run_length + +25:22 + +3c00000 + +8 + +2000000 + +Number of transactions that will be serviced once the LPR queue goes critical is the smaller of this number and the number of transactions available +
+LPR_reg@0XF800600C + +31:0 + +3ffffff + + + +2001001 + +LPR Queue control +
+

+

Register ( slcr )WR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+WR_reg + +0XF8006010 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_w_min_non_critical_x32 + +10:0 + +7ff + +1 + +1 + +Number of clock cycles that the WR queue is guaranteed to be non-critical. +
+reg_ddrc_w_xact_run_length + +14:11 + +7800 + +8 + +4000 + +Number of transactions that will be serviced once the WR queue goes critical is the smaller of this number and the number of transactions available +
+reg_ddrc_w_max_starve_x32 + +25:15 + +3ff8000 + +2 + +10000 + +Number of clocks that the Write queue can be starved before it goes critical. Unit: 32 clocks. FOR PERFORMANCE ONLY. +
+WR_reg@0XF8006010 + +31:0 + +3ffffff + + + +14001 + +WR Queue control +
+

+

Register ( slcr )DRAM_param_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg0 + +0XF8006014 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_rc + +5:0 + +3f + +1b + +1b + +tRC - Min time between activates to same bank (spec: 65 ns for DDR2-400 and smaller for faster parts). DRAM Related. Default value is set for DDR3. +
+reg_ddrc_t_rfc_min + +13:6 + +3fc0 + +a0 + +2800 + +tRFC(min) - Minimum time from refresh to refresh or activate (spec: 75nS to 195nS). DRAM Related. Default value is set for DDR3. Dynamic Bit Field. +
+reg_ddrc_post_selfref_gap_x32 + +20:14 + +1fc000 + +10 + +40000 + +Minimum time to wait after coming out of self refresh before doing anything. This must be bigger than all the constraints that exist. (spec: Maximum of tXSNR and tXSRD and tXSDLL which is 512 clocks). Unit: in multiples of 32 clocks. DRAM Related +
+DRAM_param_reg0@0XF8006014 + +31:0 + +1fffff + + + +4281b + +DRAM Parameters 0 +
+

+

Register ( slcr )DRAM_param_reg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg1 + +0XF8006018 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_wr2pre + +4:0 + +1f + +12 + +12 + +Minimum time between write and precharge to same bank DDR and DDR3: WL + BL/2 + tWR LPDDR2: WL + BL/2 + tWR + 1 Unit: Clocks where, WL: write latency. BL: burst length. This must match the value programmed in the BL bit of the mode register to the DRAM. BST is not supported at present. tWR: write recovery time. This comes directly from the DRAM specs. +
+reg_ddrc_powerdown_to_x32 + +9:5 + +3e0 + +6 + +c0 + +After this many clocks of NOP or DESELECT the controller will put the DRAM into power down. This must be enabled in the Master Control Register. Unit: Multiples of 32 clocks. +
+reg_ddrc_t_faw + +15:10 + +fc00 + +18 + +6000 + +tFAW - At most 4 banks must be activated in a rolling window of tFAW cycles. Unit: clocks. DRAM Related. +
+reg_ddrc_t_ras_max + +21:16 + +3f0000 + +24 + +240000 + +tRAS(max) - Maximum time between activate and precharge to same bank. Maximum time that a page can be kept open (spec is 70 us). If this is zero. The page is closed after each transaction. Unit: Multiples of 1024 clocks DRAM related. +
+reg_ddrc_t_ras_min + +26:22 + +7c00000 + +14 + +5000000 + +tRAS(min) - Minimum time between activate and precharge to the same bank (spec is 45 ns). Unit: clocks DRAM related. Default value is set for DDR3. +
+reg_ddrc_t_cke + +31:28 + +f0000000 + +4 + +40000000 + +Minimum number of cycles of CKE HIGH/LOW during power down and self refresh. DDR2 and DDR3: Set this to tCKE value. LPDDR2: Set this to the larger of tCKE or tCKESR. Unit: clocks. +
+DRAM_param_reg1@0XF8006018 + +31:0 + +f7ffffff + + + +452460d2 + +DRAM Parameters 1 +
+

+

Register ( slcr )DRAM_param_reg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg2 + +0XF800601C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_write_latency + +4:0 + +1f + +5 + +5 + +Time from write command to write data on DDRC to PHY Interface. (PHY adds an extra flop delay on the write data path; hence this value is one less than the write latency of the DRAM device itself). DDR2 and DDR3: WL -1 LPDDR2: WL Where WL: Write Latency of DRAM DRAM related. +
+reg_ddrc_rd2wr + +9:5 + +3e0 + +7 + +e0 + +Minimum time from read command to write command. Include time for bus turnaround and all per-bank, per-rank, and global constraints. DDR2 and DDR3: RL + BL/2 + 2 - WL LPDDR2: RL + BL/2 + RU (tDQSCKmax / tCK) + 1 - WL Write Pre-amble and DQ/DQS jitter timer is included in the above equation. DRAM RELATED. +
+reg_ddrc_wr2rd + +14:10 + +7c00 + +e + +3800 + +Minimum time from write command to read command. Includes time for bus turnaround and recovery times and all per-bank, per-rank, and global constraints. DDR2 and DDR3: WL + tWTR + BL/2 LPDDR2: WL + tWTR + BL/2 + 1 Unit: clocks. Where, WL: Write latency, BL: burst length. This should match the value. Programmed in the BL bit of the mode register to the DRAM. tWTR: internal WRITE to READ command delay. This comes directly from the DRAM specs. +
+reg_ddrc_t_xp + +19:15 + +f8000 + +4 + +20000 + +tXP: Minimum time after power down exit to any operation. DRAM related. +
+reg_ddrc_pad_pd + +22:20 + +700000 + +0 + +0 + +If pads have a power-saving mode, this is the greater of the time for the pads to enter power down or the time for the pads to exit power down. Used only in non-DFI designs. Unit: clocks. +
+reg_ddrc_rd2pre + +27:23 + +f800000 + +4 + +2000000 + +Minimum time from read to precharge of same bank DDR2: AL + BL/2 + max(tRTP, 2) - 2 DDR3: AL + max (tRTP, 4) LPDDR2: BL/2 + tRTP - 1 AL: Additive Latency; BL: DRAM Burst Length; tRTP: value from spec. DRAM related. +
+reg_ddrc_t_rcd + +31:28 + +f0000000 + +7 + +70000000 + +tRCD - AL Minimum time from activate to read or write command to same bank Min value for this is 1. AL = Additive Latency. DRAM Related. +
+DRAM_param_reg2@0XF800601C + +31:0 + +ffffffff + + + +720238e5 + +DRAM Parameters 2 +
+

+

Register ( slcr )DRAM_param_reg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg3 + +0XF8006020 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_ccd + +4:2 + +1c + +4 + +10 + +tCCD - Minimum time between two reads or two writes (from bank a to bank b) is this value + 1. DRAM related. +
+reg_ddrc_t_rrd + +7:5 + +e0 + +6 + +c0 + +tRRD - Minimum time between activates from bank A to bank B. (spec: 10ns or less) DRAM RELATED +
+reg_ddrc_refresh_margin + +11:8 + +f00 + +2 + +200 + +Issue critical refresh or page close this many cycles before the critical refresh or page timer expires. It is recommended that this not be changed from the default value. +
+reg_ddrc_t_rp + +15:12 + +f000 + +7 + +7000 + +tRP - Minimum time from precharge to activate of same bank. DRAM RELATED +
+reg_ddrc_refresh_to_x32 + +20:16 + +1f0000 + +8 + +80000 + +If the refresh timer (tRFC_nom, as known as tREFI) has expired at least once, but it has not expired burst_of_N_refresh times yet, then a 'speculative refresh' may be performed. A speculative refresh is a refresh performed at a time when refresh would be useful, but before it is absolutely required. When the DRAM bus is idle for a period of time determined by this refresh idle timeout and the refresh timer has expired at least once since the last refresh, then a 'speculative refresh' will be performed. Speculative refreshes will continue successively until there are no refreshes pending or until new reads or writes are issued to the controller. Dynamic Bit Field. +
+reg_ddrc_sdram + +21:21 + +200000 + +1 + +200000 + +1: sdram device 0: non-sdram device +
+reg_ddrc_mobile + +22:22 + +400000 + +0 + +0 + +0: DDR2 or DDR3 device. 1: LPDDR2 device. +
+reg_ddrc_clock_stop_en + +23:23 + +800000 + +0 + +0 + +DDR2 and DDR3: not used. LPDDR2: 0: stop_clk will never be asserted. 1: enable the assertion of stop_clk to the PHY whenever a clock is not required +
+reg_ddrc_read_latency + +28:24 + +1f000000 + +7 + +7000000 + +Non-LPDDR2: not used. DDR2 and DDR3: Set to Read Latency, RL. Time from Read command to Read data on DRAM interface. It is used to calculate when DRAM clock may be stopped. Unit: DDR clock. +
+reg_phy_mode_ddr1_ddr2 + +29:29 + +20000000 + +1 + +20000000 + +unused +
+reg_ddrc_dis_pad_pd + +30:30 + +40000000 + +0 + +0 + +1: disable the pad power down feature 0: Enable the pad power down feature. +
+reg_ddrc_loopback + +31:31 + +80000000 + +0 + +0 + +unused +
+DRAM_param_reg3@0XF8006020 + +31:0 + +fffffffc + + + +272872d0 + +DRAM Parameters 3 +
+

+

Register ( slcr )DRAM_param_reg4

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg4 + +0XF8006024 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_en_2t_timing_mode + +0:0 + +1 + +0 + +0 + +1: DDRC will use 2T timing 0: DDRC will use 1T timing +
+reg_ddrc_prefer_write + +1:1 + +2 + +0 + +0 + +1: Bank selector prefers writes over reads +
+reg_ddrc_max_rank_rd + +5:2 + +3c + +f + +3c + +Only present for multi-rank configurations Background: Reads to the same rank can be performed back-to-back. Reads from different ranks require additional 1-cycle latency in between (to avoid possible data bus contention). The controller arbitrates for bus access on a cycle-by-cycle basis; therefore after a read is scheduled, there is a clock cycle in which only reads from the same bank are eligible to be scheduled. This prevents reads from other ranks from having fair access to the data bus. This parameter represents the maximum number of 64-byte reads (or 32B reads in some short read cases) that can be scheduled consecutively to the same rank. After this number is reached, a 1-cycle delay is inserted by the scheduler to allow all ranks a fair opportunity to be scheduled. Higher numbers increase bandwidth utilization, lower numbers increase fairness (and hence worst-case latency). FOR PERFORMANCE ONLY. +
+reg_ddrc_mr_wr + +6:6 + +40 + +0 + +0 + +A low to high signal on this signal will do a mode register write or read. Controller will accept this command, if this signal is detected high and "ddrc_reg_mr_wr_busy" is detected low. +
+reg_ddrc_mr_addr + +8:7 + +180 + +0 + +0 + +DDR2 and DDR3: Mode register address. LPDDR2: not used. 00: MR0 01: MR1 10: MR2 11: MR3 +
+reg_ddrc_mr_data + +24:9 + +1fffe00 + +0 + +0 + +DDR2 and DDR3: Mode register write data. LPDDR2: The 16 bits are interpreted for reads and writes: Reads: MR Addr[7:0], Don't Care[7:0]. Writes: MR Addf[7:0], MR Data[7:0]. +
+ddrc_reg_mr_wr_busy + +25:25 + +2000000 + +0 + +0 + +Core must initiate a MR write / read operation only if this signal is low. This signal goes high in the clock after the controller accepts the write / read request. It goes low when (i) MR write command has been issued to the DRAM (ii) MR Read data has been returned to Controller. Any MR write / read command that is received when 'ddrc_reg_mr_wr_busy' is high is not accepted. 0: Indicates that the core can initiate a mode register write / read operation. 1: Indicates that mode register write / read operation is in progress. +
+reg_ddrc_mr_type + +26:26 + +4000000 + +0 + +0 + +Indicates whether the Mode register operation is read or write 0: write 1: read +
+reg_ddrc_mr_rdata_valid + +27:27 + +8000000 + +0 + +0 + +This bit indicates whether the Mode Register Read Data present at address 0xA9 is valid or not. This bit is 0 by default. This bit will be cleared (0), whenever a Mode Register Read command is issued. This bit will be set to 1, when the Mode Register Read Data is written to register 0xA9. +
+DRAM_param_reg4@0XF8006024 + +31:0 + +fffffff + + + +3c + +DRAM Parameters 4 +
+

+

Register ( slcr )DRAM_init_param

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_init_param + +0XF8006028 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_final_wait_x32 + +6:0 + +7f + +7 + +7 + +Cycles to wait after completing the DRAM init sequence before starting the dynamic scheduler. Units are in counts of a global timer that pulses every 32 clock cycles. Default value is set for DDR3. +
+reg_ddrc_pre_ocd_x32 + +10:7 + +780 + +0 + +0 + +Wait period before driving the 'OCD Complete' command to DRAM. Units are in counts of a global timer that pulses every 32 clock cycles. There is no known spec requirement for this. It may be set to zero. +
+reg_ddrc_t_mrd + +13:11 + +3800 + +4 + +2000 + +tMRD - Cycles between Load Mode commands. DRAM related. Default value is set for DDR3. +
+DRAM_init_param@0XF8006028 + +31:0 + +3fff + + + +2007 + +DRAM Initialization Parameters +
+

+

Register ( slcr )DRAM_EMR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_EMR_reg + +0XF800602C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_emr2 + +15:0 + +ffff + +8 + +8 + +DDR2 and DDR3: Value written into the DRAM EMR2 register. LPDDR2: Value written into the DRAM MR3 register. +
+reg_ddrc_emr3 + +31:16 + +ffff0000 + +0 + +0 + +DDR2 and DDR3: Value written into the DRAM EMR3 register. LPDDR2: not used. +
+DRAM_EMR_reg@0XF800602C + +31:0 + +ffffffff + + + +8 + +DRAM EMR2, EMR3 access +
+

+

Register ( slcr )DRAM_EMR_MR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_EMR_MR_reg + +0XF8006030 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_mr + +15:0 + +ffff + +930 + +930 + +DDR2 and DDR3: Value written into the DRAM Mode register. Bit 8 is for DLL and the setting here is ignored. The controller sets appropriately. LPDDR2: Value written into the DRAM MR1 register +
+reg_ddrc_emr + +31:16 + +ffff0000 + +4 + +40000 + +DDR2 and DDR3: Value written into the DRAM EMR registers. Bits [9:7] are for OCD and the setting in this register is ignored. The controller sets those bits appropriately. LPDDR2: Value written into the DRAM MR2 register. +
+DRAM_EMR_MR_reg@0XF8006030 + +31:0 + +ffffffff + + + +40930 + +DRAM EMR, MR access +
+

+

Register ( slcr )DRAM_burst8_rdwr

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_burst8_rdwr + +0XF8006034 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_burst_rdwr + +3:0 + +f + +4 + +4 + +Controls the burst size used to access the DRAM. This must match the BL mode register setting in the DRAM. 0010: Burst length of 4 0100: Burst length of 8 1000: Burst length of 16 (LPDDR2 with ___-bit data) All other values are reserved +
+reg_ddrc_pre_cke_x1024 + +13:4 + +3ff0 + +105 + +1050 + +Clock cycles to wait after a DDR software reset before driving CKE high to start the DRAM initialization sequence. Units: 1024 clock cycles. DDR2 Specifications typically require this to be programmed for a delay of >= 200 uS. LPDDR2 - tINIT0 of 20 mS (max) + tINIT1 of 100 nS (min) +
+reg_ddrc_post_cke_x1024 + +25:16 + +3ff0000 + +1 + +10000 + +Clock cycles to wait after driving CKE high to start the DRAM initialization sequence. Units: 1024 clocks. DDR2 typically require a 400 ns delay, requiring this value to be programmed to 2 at all clock speeds. LPDDR2 - Typically require this to be programmed for a delay of 200 us. +
+reg_ddrc_burstchop + +28:28 + +10000000 + +0 + +0 + +Feature not supported. When 1, Controller is out in burstchop mode. +
+DRAM_burst8_rdwr@0XF8006034 + +31:0 + +13ff3fff + + + +11054 + +DRAM Burst 8 read/write +
+

+

Register ( slcr )DRAM_disable_DQ

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_disable_DQ + +0XF8006038 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_force_low_pri_n + +0:0 + +1 + +0 + +0 + +Read Transaction Priority disable. 0: read transactions forced to low priority (turns off Bypass). 1: HPR reads allowed if enabled in the AXI priority read registers. +
+reg_ddrc_dis_dq + +1:1 + +2 + +0 + +0 + +When 1, DDRC will not de-queue any transactions from the CAM. Bypass will also be disabled. All transactions will be queued in the CAM. This is for debug only; no reads or writes are issued to DRAM as long as this is asserted. Dynamic Bit Field. +
+reg_phy_debug_mode + +6:6 + +40 + +0 + +0 + +Not Applicable in this PHY. +
+reg_phy_wr_level_start + +7:7 + +80 + +0 + +0 + +Not Applicable in this PHY. +
+reg_phy_rd_level_start + +8:8 + +100 + +0 + +0 + +Not Applicable in this PHY. +
+reg_phy_dq0_wait_t + +12:9 + +1e00 + +0 + +0 + +Not Applicable in this PHY. +
+DRAM_disable_DQ@0XF8006038 + +31:0 + +1fc3 + + + +0 + +DRAM Disable DQ +
+

+

Register ( slcr )DRAM_addr_map_bank

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_bank + +0XF800603C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_bank_b0 + +3:0 + +f + +7 + +7 + +Selects the address bits used as bank address bit 0. Valid Range: 0 to 14. Internal Base: 5. The selected address bit for each of the bank address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_bank_b1 + +7:4 + +f0 + +7 + +70 + +Selects the address bits used as bank address bit 1. Valid Range: 0 to 14; Internal Base: 6. The selected address bit for each of the bank address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_bank_b2 + +11:8 + +f00 + +7 + +700 + +Selects the AXI address bit used as bank address bit 2. Valid range 0 to 14, and 15. Internal Base: 7. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, bank address bit 2 is set to 0. +
+reg_ddrc_addrmap_col_b5 + +15:12 + +f000 + +0 + +0 + +Full bus width mode: Selects the address bits used as column address bits 6. Half bus width mode: Selects the address bits used as column address bits 7. Valid range is 0-7. Internal Base 8. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. Internal base: 9 +
+reg_ddrc_addrmap_col_b6 + +19:16 + +f0000 + +0 + +0 + +Full bus width mode: Selects the address bits used as column address bits 7. Half bus width mode: Selects the address bits used as column address bits 8. Valid range is 0-7. Internal Base 9. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. Internal base: 9 +
+DRAM_addr_map_bank@0XF800603C + +31:0 + +fffff + + + +777 + +Row/Column address bits +
+

+

Register ( slcr )DRAM_addr_map_col

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_col + +0XF8006040 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_col_b2 + +3:0 + +f + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 3. Half bus width mode: Selects the address bit used as column address bit 4. Valid Range: 0 to 7. Internal Base: 5 The selected address bit is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b3 + +7:4 + +f0 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 4. Half bus width mode: Selects the address bit used as column address bit 5. Valid Range: 0 to 7 Internal Base: 6 The selected address bit is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b4 + +11:8 + +f00 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 5. Half bus width mode: Selects the address bit used as column address bits 6. Valid Range: 0 to 7. Internal Base: 7. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b7 + +15:12 + +f000 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 8. Half bus width mode: Selects the address bit used as column address bit 9. Valid Range: 0 to 7, and 15. Internal Base: 10. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10.In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b8 + +19:16 + +f0000 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 9. Half bus width mode: Selects the address bit used as column address bit 11. (Column address bit 10 in LPDDR2 mode) Valid Range: 0 to 7, and 15 Internal Base: 11 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b9 + +23:20 + +f00000 + +f + +f00000 + +Full bus width mode: Selects the address bit used as column address bit 11. (Column address bit 10 in LPDDR2 mode) Half bus width mode: Selects the address bit used as column address bit 12. (Column address bit 11 in LPDDR2 mode) Valid Range: 0 to 7, and 15 Internal Base: 12 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b10 + +27:24 + +f000000 + +f + +f000000 + +Full bus width mode: Selects the address bit used as column address bit 12. (Column address bit 11 in LPDDR2 mode) Half bus width mode: Selects the address bit used as column address bit 13. (Column address bit 12 in LPDDR2 mode) Valid Range: 0 to 7, and 15. Internal Base: 13 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b11 + +31:28 + +f0000000 + +f + +f0000000 + +Full bus width mode: Selects the address bit used as column address bit 13. (Column address bit 12 in LPDDR2 mode) Half bus width mode: Unused. To make it unused, this should be set to 15. (Column address bit 13 in LPDDR2 mode) Valid Range: 0 to 7, and 15. Internal Base: 14. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+DRAM_addr_map_col@0XF8006040 + +31:0 + +ffffffff + + + +fff00000 + +Column address bits +
+

+

Register ( slcr )DRAM_addr_map_row

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_row + +0XF8006044 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_row_b0 + +3:0 + +f + +6 + +6 + +Selects the AXI address bits used as row address bit 0. Valid Range: 0 to 11. Internal Base: 9 The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field +
+reg_ddrc_addrmap_row_b1 + +7:4 + +f0 + +6 + +60 + +Selects the AXI address bits used as row address bit 1. Valid Range: 0 to 11. Internal Base: 10 The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_row_b2_11 + +11:8 + +f00 + +6 + +600 + +Selects the AXI address bits used as row address bits 2 to 11. Valid Range: 0 to 11. Internal Base: 11 (for row address bit 2) to 20 (for row address bit 11) The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_row_b12 + +15:12 + +f000 + +6 + +6000 + +Selects the AXI address bit used as row address bit 12. Valid Range: 0 to 11, and 15 Internal Base: 21 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 12 is set to 0. +
+reg_ddrc_addrmap_row_b13 + +19:16 + +f0000 + +6 + +60000 + +Selects the AXI address bit used as row address bit 13. Valid Range: 0 to 11, and 15 Internal Base: 22 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 13 is set to 0. +
+reg_ddrc_addrmap_row_b14 + +23:20 + +f00000 + +6 + +600000 + +Selects theAXI address bit used as row address bit 14. Valid Range: 0 to 11, and 15 Internal Base: 23 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 14 is set to 0. +
+reg_ddrc_addrmap_row_b15 + +27:24 + +f000000 + +f + +f000000 + +Selects the AXI address bit used as row address bit 15. Valid Range: 0 to 11, and 15 Internal Base: 24 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 15 is set to 0. +
+DRAM_addr_map_row@0XF8006044 + +31:0 + +fffffff + + + +f666666 + +Select DRAM row address bits +
+

+

Register ( slcr )DRAM_ODT_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_ODT_reg + +0XF8006048 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_rank0_rd_odt + +2:0 + +7 + +0 + +0 + +Unused. [1:0] - Indicates which remote ODTs must be turned ON during a read to rank 0. Each of the 2 ranks has a remote ODT (in the DRAM) which can be turned on by setting the appropriate bit here. Rank 0 is controlled by the LSB; Rank 1 is controlled by bit next to the LSB. For each rank, set its bit to 1 to enable its ODT. [2]: If 1 then local ODT is enabled during reads to rank 0. +
+reg_ddrc_rank0_wr_odt + +5:3 + +38 + +1 + +8 + +[1:0] - Indicates which remote ODT's must be turned on during a write to rank 0. Each of the 2 ranks has a remote ODT (in the DRAM) which can be turned on by setting the appropriate bit here. Rank 0 is controlled by the LSB; Rank 1 is controlled by bit next to the LSB. For each rank, set its bit to 1 to enable its ODT. [2]: If 1 then local ODT is enabled during writes to rank 0. +
+reg_ddrc_rank1_rd_odt + +8:6 + +1c0 + +1 + +40 + +Unused +
+reg_ddrc_rank1_wr_odt + +11:9 + +e00 + +1 + +200 + +Unused +
+reg_phy_rd_local_odt + +13:12 + +3000 + +0 + +0 + +Value to drive on the 2-bit local_odt PHY outputs when output enable is not asserted and a read is in progress (where 'in progress' is defined as after a read command is issued and until all read data has been returned all the way to the controller.) Typically this is set to the value required to enable termination at the desired strength for read usage. +
+reg_phy_wr_local_odt + +15:14 + +c000 + +3 + +c000 + +Value to drive on the 2-bit local_odt PHY outputs when write levelling is enabled for DQS. +
+reg_phy_idle_local_odt + +17:16 + +30000 + +3 + +30000 + +Value to drive on the 2-bit local_odt PHY outputs when output enable is not asserted and a read is not in progress. Typically this is the value required to disable termination to save power when idle. +
+reg_ddrc_rank2_rd_odt + +20:18 + +1c0000 + +0 + +0 + +Unused +
+reg_ddrc_rank2_wr_odt + +23:21 + +e00000 + +0 + +0 + +Unused +
+reg_ddrc_rank3_rd_odt + +26:24 + +7000000 + +0 + +0 + +Unused +
+reg_ddrc_rank3_wr_odt + +29:27 + +38000000 + +0 + +0 + +Unused +
+DRAM_ODT_reg@0XF8006048 + +31:0 + +3fffffff + + + +3c248 + +DRAM ODT control +
+

+

Register ( slcr )phy_cmd_timeout_rddata_cpt

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_cmd_timeout_rddata_cpt + +0XF8006050 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_cmd_to_data + +3:0 + +f + +0 + +0 + +Not used in DFI PHY. +
+reg_phy_wr_cmd_to_data + +7:4 + +f0 + +0 + +0 + +Not used in DFI PHY. +
+reg_phy_rdc_we_to_re_delay + +11:8 + +f00 + +8 + +800 + +This register value + 1 give the number of clock cycles between writing into the Read Capture FIFO and the read operation. The setting of this register determines the read data timing and depends upon total delay in the system for read operation which include fly-by delays, trace delay, clkout_invert etc. This is used only if reg_phy_use_fixed_re=1. +
+reg_phy_rdc_fifo_rst_disable + +15:15 + +8000 + +0 + +0 + +When 1, disable counting the number of times the Read Data Capture FIFO has been reset when the FIFO was not empty. +
+reg_phy_use_fixed_re + +16:16 + +10000 + +1 + +10000 + +When 1: PHY generates FIFO read enable after fixed number of clock cycles as defined by reg_phy_rdc_we_to_re_delay[3:0]. When 0: PHY uses the not_empty method to do the read enable generation. Note: This port must be set HIGH during training/leveling process i.e. when ddrc_dfi_wrlvl_en/ ddrc_dfi_rdlvl_en/ ddrc_dfi_rdlvl_gate_en port is set HIGH. +
+reg_phy_rdc_fifo_rst_err_cnt_clr + +17:17 + +20000 + +0 + +0 + +Clear/reset for counter rdc_fifo_rst_err_cnt[3:0]. 0: no clear, 1: clear. Note: This is a synchronous dynamic signal that must have timing closed. +
+reg_phy_dis_phy_ctrl_rstn + +18:18 + +40000 + +0 + +0 + +Disable the reset from Phy Ctrl macro. 1: PHY Ctrl macro reset port is always HIGH 0: PHY Ctrl macro gets power on reset. +
+reg_phy_clk_stall_level + +19:19 + +80000 + +0 + +0 + +1: stall clock, for DLL aging control +
+reg_phy_gatelvl_num_of_dq0 + +27:24 + +f000000 + +7 + +7000000 + +This register value determines register determines the number of samples used for each ratio increment during Gate Training. Num_of_iteration = reg_phy_gatelvl_num_of_dq0 + 1 The recommended value for this register is 8. Accuracy is better with higher value, but this will cause leveling to run longer. +
+reg_phy_wrlvl_num_of_dq0 + +31:28 + +f0000000 + +7 + +70000000 + +This register value determines register determines the number of samples used for each ratio increment during Write Leveling. Num_of_iteration = reg_phy_wrlvl_num_of_dq0 + 1 The recommended value for this register is 8. Accuracy is better with higher value, but this will cause leveling to run longer. +
+phy_cmd_timeout_rddata_cpt@0XF8006050 + +31:0 + +ff0f8fff + + + +77010800 + +PHY command time out and read data capture FIFO +
+

+

Register ( slcr )DLL_calib

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DLL_calib + +0XF8006058 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dll_calib_to_min_x1024 + +7:0 + +ff + +1 + +1 + +Unused in DFI Controller. +
+reg_ddrc_dll_calib_to_max_x1024 + +15:8 + +ff00 + +1 + +100 + +Unused in DFI Controller. +
+reg_ddrc_dis_dll_calib + +16:16 + +10000 + +0 + +0 + +When 1, disable dll_calib generated by the controller. The core should issue the dll_calib signal using co_gs_dll_calib input. This input is changeable on the fly. When 0, controller will issue dll_calib periodically +
+DLL_calib@0XF8006058 + +31:0 + +1ffff + + + +101 + +DLL calibration +
+

+

Register ( slcr )ODT_delay_hold

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ODT_delay_hold + +0XF800605C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_rd_odt_delay + +3:0 + +f + +3 + +3 + +UNUSED +
+reg_ddrc_wr_odt_delay + +7:4 + +f0 + +0 + +0 + +The delay, in clock cycles, from issuing a write command to setting ODT values associated with that command. ODT setting should remain constant for the entire time that DQS is driven by the controller. The suggested value for DDR2 is WL - 5 and for DDR3 is 0. WL is Write latency. DDR2 ODT has a 2-cycle on-time delay and a 2.5-cycle off-time delay. ODT is not applicable to LPDDR2. +
+reg_ddrc_rd_odt_hold + +11:8 + +f00 + +0 + +0 + +Unused +
+reg_ddrc_wr_odt_hold + +15:12 + +f000 + +5 + +5000 + +Cycles to hold ODT for a Write Command. When 0x0, ODT signal is ON for 1 cycle. When 0x1, it is ON for 2 cycles, etc. The values to program in different modes are : DRAM Burst of 4 -2, DRAM Burst of 8 -4 +
+ODT_delay_hold@0XF800605C + +31:0 + +ffff + + + +5003 + +ODT delay and ODT hold +
+

+

Register ( slcr )ctrl_reg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg1 + +0XF8006060 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_pageclose + +0:0 + +1 + +0 + +0 + +If true, bank will be closed and kept closed if no transactions are available for it. If false, bank will remain open until there is a need to close it (to open a different page, or for page timeout or refresh timeout.) This does not apply when auto-refresh is used. +
+reg_ddrc_lpr_num_entries + +6:1 + +7e + +1f + +3e + +Number of entries in the low priority transaction store is this value plus 1. In this design, by default all read ports are treated as low priority and hence the value of 0x1F. The hpr_num_entries is 32 minus this value. Bit [6] is ignored. +
+reg_ddrc_auto_pre_en + +7:7 + +80 + +0 + +0 + +When set, most reads and writes will be issued with auto-precharge. (Exceptions can be made for collision cases.) +
+reg_ddrc_refresh_update_level + +8:8 + +100 + +0 + +0 + +Toggle this signal to indicate that refresh register(s) have been updated. The value will be automatically updated when exiting soft reset. So it does not need to be toggled initially. Dynamic Bit Field. +
+reg_ddrc_dis_wc + +9:9 + +200 + +0 + +0 + +Disable Write Combine: 0: enable 1: disable +
+reg_ddrc_dis_collision_page_opt + +10:10 + +400 + +0 + +0 + +When this is set to 0, auto-precharge will be disabled for the flushed command in a collision case. Collision cases are write followed by read to same address, read followed by write to same address, or write followed by write to same address with DIS_WC bit = 1 (where 'same address' comparisons exclude the two address bits representing critical word). +
+reg_ddrc_selfref_en + +12:12 + +1000 + +0 + +0 + +If 1, then the controller will put the DRAM into self refresh when the transaction store is empty. Dynamic Bit Field. +
+ctrl_reg1@0XF8006060 + +31:0 + +17ff + + + +3e + +Controller 1 +
+

+

Register ( slcr )ctrl_reg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg2 + +0XF8006064 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_go2critical_hysteresis + +12:5 + +1fe0 + +0 + +0 + +Describes the number of cycles that co_gs_go2critical_rd or co_gs_go2critical_wr must be asserted before the corresponding queue moves to the 'critical' state in the DDRC. The arbiter controls the co_gs_go2critical_* signals; it is designed for use with this hysteresis field set to 0. +
+reg_arb_go2critical_en + +17:17 + +20000 + +1 + +20000 + +0: Keep reg_ddrc_go2critical_wr and reg_ddrc_go2critical_rd signals going to DDRC at 0. 1: Set reg_ddrc_go2critical_wr and reg_ddrc_go2critical_rd signals going to DDRC based on Urgent input coming from AXI master. +
+ctrl_reg2@0XF8006064 + +31:0 + +21fe0 + + + +20000 + +Controller 2 +
+

+

Register ( slcr )ctrl_reg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg3 + +0XF8006068 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_wrlvl_ww + +7:0 + +ff + +41 + +41 + +DDR2: not applicable. LPDDR2 and DDR3: Write leveling write-to-write delay. Specifies the minimum number of clock cycles from the assertion of a ddrc_dfi_wrlvl_strobe signal to the next ddrc_dfi_wrlvl_strobe signal. Only applicable when connecting to PHYs operating in PHY RdLvl Evaluation mode. Recommended value is: (RL + reg_phy_rdc_we_to_re_delay + 50) +
+reg_ddrc_rdlvl_rr + +15:8 + +ff00 + +41 + +4100 + +DDR2 and LPDDR2: not applicable. DDR3: Read leveling read-to-read delay. Specifies the minimum number of clock cycles from the assertion of a read command to the next read command. Only applicable when connecting to PHYs operating in PHY RdLvl Evaluation mode. +
+reg_ddrc_dfi_t_wlmrd + +25:16 + +3ff0000 + +28 + +280000 + +DDR2 and LPDDR2: not applicable. DDR3: First DQS/DQS# rising edge after write leveling mode is programmed. This is same as the tMLRD value from the DRAM spec. +
+ctrl_reg3@0XF8006068 + +31:0 + +3ffffff + + + +284141 + +Controller 3 +
+

+

Register ( slcr )ctrl_reg4

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg4 + +0XF800606C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+dfi_t_ctrlupd_interval_min_x1024 + +7:0 + +ff + +10 + +10 + +This is the minimum amount of time between Controller initiated DFI update requests (which will be executed whenever the controller is idle). Set this number higher to reduce the frequency of update requests, which can have a small impact on the latency of the first read request when the controller is idle. Units: 1024 clocks +
+dfi_t_ctrlupd_interval_max_x1024 + +15:8 + +ff00 + +16 + +1600 + +This is the maximum amount of time between Controller initiated DFI update requests. This timer resets with each update request; when the timer expires, traffic is blocked for a few cycles. PHY can use this idle time to recalibrate the delay lines to the DLLs. The DLL calibration is also used to reset PHY FIFO pointers in case of data capture errors. Updates are required to maintain calibration over PVT, but frequent updates may impact performance. Units: 1024 clocks +
+ctrl_reg4@0XF800606C + +31:0 + +ffff + + + +1610 + +Controller 4 +
+

+

Register ( slcr )ctrl_reg5

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg5 + +0XF8006078 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dfi_t_ctrl_delay + +3:0 + +f + +1 + +1 + +Specifies the number of DFI clock cycles after an assertion or deassertion of the DFI control signals that the control signals at the PHY-DRAM interface reflect the assertion or de-assertion. If the DFI clock and the memory clock are not phase-aligned, this timing parameter should be rounded up to the next integer value. +
+reg_ddrc_dfi_t_dram_clk_disable + +7:4 + +f0 + +1 + +10 + +Specifies the number of DFI clock cycles from the assertion of the ddrc_dfi_dram_clk_disable signal on the DFI until the clock to the DRAM memory devices, at the PHY-DRAM boundary, maintains a low value. If the DFI clock and the memory clock are not phase aligned, this timing parameter should be rounded up to the next integer value. +
+reg_ddrc_dfi_t_dram_clk_enable + +11:8 + +f00 + +1 + +100 + +Specifies the number of DFI clock cycles from the de-assertion of the ddrc_dfi_dram_clk_disable signal on the DFI until the first valid rising edge of the clock to the DRAM memory devices at the PHY-DRAM boundary. If the DFI clock and the memory clock are not phase aligned, this timing parameter should be rounded up to the next integer value. +
+reg_ddrc_t_cksre + +15:12 + +f000 + +6 + +6000 + +This is the time after Self Refresh Entry that CK is maintained as a valid clock. Specifies the clock disable delay after SRE. Recommended settings: LPDDR2: 2 DDR2: 1 DDR3: tCKSRE +
+reg_ddrc_t_cksrx + +19:16 + +f0000 + +6 + +60000 + +This is the time before Self Refresh Exit that CK is maintained as a valid clock before issuing SRX. Specifies the clock stable time before SRX. Recommended settings: LPDDR2: 2 DDR2: 1 DDR3: tCKSRX +
+reg_ddrc_t_ckesr + +25:20 + +3f00000 + +4 + +400000 + +Minimum CKE low width for Self Refresh entry to exit Timing in memory clock cycles. Recommended settings: LPDDR2: tCKESR DDR2: tCKE DDR3: tCKE+1 +
+ctrl_reg5@0XF8006078 + +31:0 + +3ffffff + + + +466111 + +Controller register 5 +
+

+

Register ( slcr )ctrl_reg6

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg6 + +0XF800607C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_ckpde + +3:0 + +f + +2 + +2 + +This is the time after Power Down Entry that CK is maintained as a valid clock. Specifies the clock disable delay after PDE. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckpdx + +7:4 + +f0 + +2 + +20 + +This is the time before Power Down Exit that CK is maintained as a valid clock before issuing PDX. Specifies the clock stable time before PDX. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckdpde + +11:8 + +f00 + +2 + +200 + +This is the time after Deep Power Down Entry that CK is maintained as a valid clock. Specifies the clock disable delay after DPDE. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckdpdx + +15:12 + +f000 + +2 + +2000 + +This is the time before Deep Power Down Exit that CK is maintained as a valid clock before issuing DPDX. Specifies the clock stable time before DPDX. Recommended setting for LPDDR2: 2. +
+reg_ddrc_t_ckcsx + +19:16 + +f0000 + +3 + +30000 + +This is the time before Clock Stop Exit that CK is maintained as a valid clock before issuing DPDX. Specifies the clock stable time before next command after Clock Stop Exit. Recommended setting for LPDDR2: tXP + 2. +
+ctrl_reg6@0XF800607C + +31:0 + +fffff + + + +32222 + +Controller register 6 +
+

+

Register ( slcr )CHE_REFRESH_TIMER01

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_REFRESH_TIMER01 + +0XF80060A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+refresh_timer0_start_value_x32 + +11:0 + +fff + +0 + +0 + +Refresh Timer for Rank 1. Unit: in multiples of 32 clocks. (Only present in multi-rank configurations). FOR PERFORMANCE ONLY. +
+refresh_timer1_start_value_x32 + +23:12 + +fff000 + +8 + +8000 + +Refresh Timer for Rank 0. (Only present in multi-rank configurations). Unit: in multiples of 32 clocks. FOR PERFORMANCE ONLY. +
+CHE_REFRESH_TIMER01@0XF80060A0 + +31:0 + +ffffff + + + +8000 + +CHE_REFRESH_TIMER01 +
+

+

Register ( slcr )CHE_T_ZQ

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_T_ZQ + +0XF80060A4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dis_auto_zq + +0:0 + +1 + +0 + +0 + +1=disable controller generation of ZQCS command. Co_gs_zq_calib_short can be used instead to control ZQ calibration commands. 0=internally generate ZQCS commands based on reg_ddrc_t_zq_short_interval_x1024 This is only present for implementations supporting DDR3 and LPDDR2 devices. +
+reg_ddrc_ddr3 + +1:1 + +2 + +1 + +2 + +Indicates operating in DDR2/DDR3 mode. Default value is set for DDR3. +
+reg_ddrc_t_mod + +11:2 + +ffc + +200 + +800 + +Mode register set command update delay (minimum the larger of 12 clock cycles or 15ns) +
+reg_ddrc_t_zq_long_nop + +21:12 + +3ff000 + +200 + +200000 + +DDR2: not applicable. LPDDR2 and DDR3: Number of cycles of NOP required after a ZQCL (ZQ calibration long) command is issued to DRAM. Units: Clock cycles. +
+reg_ddrc_t_zq_short_nop + +31:22 + +ffc00000 + +40 + +10000000 + +DDR2: not applicable. LPDDR2 and DDR3: Number of cycles of NOP required after a ZQCS (ZQ calibration short) command is issued to DRAM. Units: Clock cycles. +
+CHE_T_ZQ@0XF80060A4 + +31:0 + +ffffffff + + + +10200802 + +ZQ parameters +
+

+

Register ( slcr )CHE_T_ZQ_Short_Interval_Reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_T_ZQ_Short_Interval_Reg + +0XF80060A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+t_zq_short_interval_x1024 + +19:0 + +fffff + +cb73 + +cb73 + +DDR2: not used. LPDDR2 and DDR3: Average interval to wait between automatically issuing ZQCS (ZQ calibration short) commands to DDR3 devices. Meaningless if reg_ddrc_dis_auto_zq=1. Units: 1024 Clock cycles. +
+dram_rstn_x1024 + +27:20 + +ff00000 + +69 + +6900000 + +Number of cycles to assert DRAM reset signal during init sequence. Units: 1024 Clock cycles. Applicable for DDR3 only. +
+CHE_T_ZQ_Short_Interval_Reg@0XF80060A8 + +31:0 + +fffffff + + + +690cb73 + +Misc parameters +
+

+

Register ( slcr )deep_pwrdwn_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+deep_pwrdwn_reg + +0XF80060AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+deeppowerdown_en + +0:0 + +1 + +0 + +0 + +DDR2 and DDR3: not used. LPDDR2: 0: Brings Controller out of Deep Powerdown mode. 1: Puts DRAM into Deep Powerdown mode when the transaction store is empty. For performance only. Dynamic Bit Field. +
+deeppowerdown_to_x1024 + +8:1 + +1fe + +ff + +1fe + +DDR2 and DDR3: not sued. LPDDR2: Minimum deep power down time. DDR exits from deep power down mode immediately after reg_ddrc_deeppowerdown_en is deasserted. Value from the spec is 500us. Units are in 1024 clock cycles. For performance only. +
+deep_pwrdwn_reg@0XF80060AC + +31:0 + +1ff + + + +1fe + +Deep powerdown (LPDDR2) +
+

+

Register ( slcr )reg_2c

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_2c + +0XF80060B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+dfi_wrlvl_max_x1024 + +11:0 + +fff + +fff + +fff + +Write leveling maximum time. Specifies the maximum number of clock cycles that the controller will wait for a response (phy_dfi_wrlvl_resp) to a write leveling enable signal (ddrc_dfi_wrlvl_en). Only applicable when connecting to PHY's operating in 'PHY WrLvl Evaluation' mode. Typical value 0xFFF Units 1024 clocks +
+dfi_rdlvl_max_x1024 + +23:12 + +fff000 + +fff + +fff000 + +Read leveling maximum time. Specifies the maximum number of clock cycles that the controller will wait for a response (phy_dfi_rdlvl_resp) to a read leveling enable signal (ddrc_dfi_rdlvl_en or ddrc_dfi_rdlvl_gate_en). Only applicable when connecting to PHY's operating in 'PHY RdLvl Evaluation' mode. Typical value 0xFFF Units 1024 clocks +
+ddrc_reg_twrlvl_max_error + +24:24 + +1000000 + +0 + +0 + +When '1' indicates that the reg_ddrc_dfi_wrlvl_max_x1024 timer has timed out. This is a Clear-on-Write register. If write leveling timed out, an error is indicated by the DDRC and this bit gets set. The value is held until it is cleared. Clearing is done by writing a '0' to this register. Only present in designs that support DDR3. +
+ddrc_reg_trdlvl_max_error + +25:25 + +2000000 + +0 + +0 + +DDR2: not applicable. LPDDR2 and DDR3: When '1' indicates that the reg_ddrc_dfi_rdrlvl_max_x1024 timer has timed out. This is a Clear-on-Write register. If read leveling or gate training timed out, an error is indicated by the DDRC and this bit gets set. The value is held at that value until it is cleared. Clearing is done by writing a '0' to this register. +
+reg_ddrc_dfi_wr_level_en + +26:26 + +4000000 + +1 + +4000000 + +0: Write leveling disabled. 1: Write leveling mode has been enabled as part of init sequence; Valid only for DDR3 DFI designs +
+reg_ddrc_dfi_rd_dqs_gate_level + +27:27 + +8000000 + +1 + +8000000 + +0: Read DQS gate leveling is disabled. 1: Read DQS Gate Leveling mode has been enabled as part of init sequence; Valid only for DDR3 DFI designs +
+reg_ddrc_dfi_rd_data_eye_train + +28:28 + +10000000 + +1 + +10000000 + +DDR2: not applicable. LPDDR2 and DDR3: 0: 1: Read Data Eye training mode has been enabled as part of init sequence. +
+reg_2c@0XF80060B0 + +31:0 + +1fffffff + + + +1cffffff + +Training control +
+

+

Register ( slcr )reg_2d

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_2d + +0XF80060B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_2t_delay + +8:0 + +1ff + +0 + +0 + +Selects the clock edge in which chip select (CSN) and CKE is asserted. Unsupported feature. +
+reg_ddrc_skip_ocd + +9:9 + +200 + +1 + +200 + +This register must be kept at 1'b1. 1'b0 is NOT supported. 1: Indicates the controller to skip OCD adjustment step during DDR2 initialization. OCD_Default and OCD_Exit are performed instead. 0: Not supported. +
+reg_ddrc_dis_pre_bypass + +10:10 + +400 + +0 + +0 + +Only present in designs supporting precharge bypass. When 1, disable bypass path for high priority precharges FOR DEBUG ONLY. +
+reg_2d@0XF80060B4 + +31:0 + +7ff + + + +200 + +Misc Debug +
+

+

Register ( slcr )dfi_timing

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+dfi_timing + +0XF80060B8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dfi_t_rddata_en + +4:0 + +1f + +6 + +6 + +Time from the assertion of a READ command on the DFI interface to the assertion of the phy_dfi_rddata_en signal. DDR2 and DDR3: RL - 1 LPDDR: RL Where RL is read latency of DRAM. +
+reg_ddrc_dfi_t_ctrlup_min + +14:5 + +7fe0 + +3 + +60 + +Specifies the minimum number of clock cycles that the ddrc_dfi_ctrlupd_req signal must be asserted. +
+reg_ddrc_dfi_t_ctrlup_max + +24:15 + +1ff8000 + +40 + +200000 + +Specifies the maximum number of clock cycles that the ddrc_dfi_ctrlupd_req signal can assert. +
+dfi_timing@0XF80060B8 + +31:0 + +1ffffff + + + +200066 + +DFI timing +
+

+

RESET ECC ERROR

+

Register ( slcr )CHE_ECC_CONTROL_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_CONTROL_REG_OFFSET + +0XF80060C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Clear_Uncorrectable_DRAM_ECC_error + +0:0 + +1 + +1 + +1 + +Writing 1 to this bit will clear the uncorrectable log valid bit and the uncorrectable error counters. +
+Clear_Correctable_DRAM_ECC_error + +1:1 + +2 + +1 + +2 + +Writing 1 to this bit will clear the correctable log valid bit and the correctable error counters. +
+CHE_ECC_CONTROL_REG_OFFSET@0XF80060C4 + +31:0 + +3 + + + +3 + +ECC error clear +
+

+

Register ( slcr )CHE_ECC_CONTROL_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_CONTROL_REG_OFFSET + +0XF80060C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Clear_Uncorrectable_DRAM_ECC_error + +0:0 + +1 + +0 + +0 + +Writing 1 to this bit will clear the uncorrectable log valid bit and the uncorrectable error counters. +
+Clear_Correctable_DRAM_ECC_error + +1:1 + +2 + +0 + +0 + +Writing 1 to this bit will clear the correctable log valid bit and the correctable error counters. +
+CHE_ECC_CONTROL_REG_OFFSET@0XF80060C4 + +31:0 + +3 + + + +0 + +ECC error clear +
+

+

Register ( slcr )CHE_CORR_ECC_LOG_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_CORR_ECC_LOG_REG_OFFSET + +0XF80060C8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CORR_ECC_LOG_VALID + +0:0 + +1 + +0 + +0 + +Set to 1 when a correctable ECC error is captured. As long as this is 1 no further ECC errors will be captured. This is cleared when a 1 is written to register bit[1] of ECC CONTROL REGISTER (0x31) +
+ECC_CORRECTED_BIT_NUM + +7:1 + +fe + +0 + +0 + +Indicator of the bit number syndrome in error for single-bit errors. The field is 7-bit wide to handle 72-bits of data. This is an encoded value with ECC bits placed in between data. The encoding is given in section 5.4 Correctable bit number from the lowest error lane is reported here. There are only 13-valid bits going to an ECC lane (8-data + 5-ECC). Only 4-bits are needed to encode a max value of d'13. Bit[7] of this register is used to indicate the exact byte lane. When a error happens, if CORR_ECC_LOG_COL[0] from register 0x33 is 1'b0, then the error happened in Lane 0 or 1. If CORR_ECC_LOG_COL[0] is 1'b1, then the error happened in Lane 2 or 3. Bit[7] of this register indicates whether the error is from upper or lower byte lane. If it is 0, then it is lower byte lane and if it is 1, then it is upper byte lane. Together with CORR_ECC_LOG_COL[0] and bit[7] of this register, the exact byte lane with correctable error can be determined. +
+CHE_CORR_ECC_LOG_REG_OFFSET@0XF80060C8 + +31:0 + +ff + + + +0 + +ECC error correction +
+

+

Register ( slcr )CHE_UNCORR_ECC_LOG_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_UNCORR_ECC_LOG_REG_OFFSET + +0XF80060DC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNCORR_ECC_LOG_VALID + +0:0 + +1 + +0 + +0 + +Set to 1 when an uncorrectable ECC error is captured. As long as this is a 1, no further ECC errors will be captured. This is cleared when a 1 is written to register bit[0] of ECC CONTROL REGISTER (0x31). +
+CHE_UNCORR_ECC_LOG_REG_OFFSET@0XF80060DC + +31:0 + +1 + + + +0 + +ECC unrecoverable error status +
+

+

Register ( slcr )CHE_ECC_STATS_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_STATS_REG_OFFSET + +0XF80060F0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+STAT_NUM_CORR_ERR + +15:8 + +ff00 + +0 + +0 + +Returns the number of correctable ECC errors seen since the last read. Counter saturates at max value. This is cleared when a 1 is written to register bit[1] of ECC CONTROL REGISTER (0x58). +
+STAT_NUM_UNCORR_ERR + +7:0 + +ff + +0 + +0 + +Returns the number of un-correctable errors since the last read. Counter saturates at max value. This is cleared when a 1 is written to register bit[0] of ECC CONTROL REGISTER (0x58). +
+CHE_ECC_STATS_REG_OFFSET@0XF80060F0 + +31:0 + +ffff + + + +0 + +ECC error count +
+

+

Register ( slcr )ECC_scrub

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ECC_scrub + +0XF80060F4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_ecc_mode + +2:0 + +7 + +0 + +0 + +DRAM ECC Mode. The only valid values that works for this project are 000 (No ECC) and 100 (SEC/DED over 1-beat). To run the design in ECC mode, set reg_ddrc_data_bus_width to 2'b01 (Half bus width) and reg_ddrc_ecc_mode to 100. In this mode, there will be 16-data bits + 6-bit ECC on the DRAM bus. Controller must NOT be put in full bus width mode, when ECC is turned ON. 000 : No ECC, 001: Reserved 010: Parity 011: Reserved 100: SEC/DED over 1-beat 101: SEC/DED over multiple beats 110: Device Correction 111: Reserved +
+reg_ddrc_dis_scrub + +3:3 + +8 + +1 + +8 + +0: Enable ECC scrubs (valid only when reg_ddrc_ecc_mode = 100). 1: Disable ECC scrubs +
+ECC_scrub@0XF80060F4 + +31:0 + +f + + + +8 + +ECC mode/scrub +
+

+

Register ( slcr )phy_rcvr_enable

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rcvr_enable + +0XF8006114 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_dif_on + +3:0 + +f + +0 + +0 + +Value to drive to IO receiver enable pins when turning it ON. When NOT in powerdown or self-refresh (when CKE=1) this value will be sent to the IOs to control receiver on/off. IOD is the size specified by the IO_DIFEN_SIZE parameter. +
+reg_phy_dif_off + +7:4 + +f0 + +0 + +0 + +Value to drive to IO receiver enable pins when turning it OFF. When in powerdown or self-refresh (CKE=0) this value will be sent to the IOs to control receiver on/off. IOD is the size specified by the IO_DIFEN_SIZE parameter. Depending on the IO, one of these signals dif_on or dif_off can be used. +
+phy_rcvr_enable@0XF8006114 + +31:0 + +ff + + + +0 + +Phy receiver enable register +
+

+

Register ( slcr )PHY_Config0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config0 + +0XF8006118 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Transmitter for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Receiver for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config0@0XF8006118 + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config1 + +0XF800611C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Transmitter for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Receiver for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config1@0XF800611C + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 1. +
+

+

Register ( slcr )PHY_Config2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config2 + +0XF8006120 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Transmitter for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Receiver for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Transmitter for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Receiver for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config2@0XF8006120 + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 2. +
+

+

Register ( slcr )PHY_Config3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config3 + +0XF8006124 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 0: read data responses are ignored. 1: data slice is valid. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +reserved +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +reserved +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +reserved +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Transmitter for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 0: disable 1: This Slice behaves as Receiver for board loopback. This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 10. 0: PRBS pattern without any shift. 1: PRBS pattern shifted early by 1 bit. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 0: No effect 1: sticky error flag is cleared +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config3@0XF8006124 + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 3. +
+

+

Register ( slcr )phy_init_ratio0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio0 + +0XF800612C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio0@0XF800612C + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio1 + +0XF8006130 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio1@0XF8006130 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 1. +
+

+

Register ( slcr )phy_init_ratio2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio2 + +0XF8006134 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio2@0XF8006134 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 2. +
+

+

Register ( slcr )phy_init_ratio3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio3 + +0XF8006138 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio3@0XF8006138 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 3. +
+

+

Register ( slcr )phy_rd_dqs_cfg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg0 + +0XF8006140 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg0@0XF8006140 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg1 + +0XF8006144 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg1@0XF8006144 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 1. +
+

+

Register ( slcr )phy_rd_dqs_cfg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg2 + +0XF8006148 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg2@0XF8006148 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 2. +
+

+

Register ( slcr )phy_rd_dqs_cfg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg3 + +0XF800614C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg3@0XF800614C + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 3. +
+

+

Register ( slcr )phy_wr_dqs_cfg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg0 + +0XF8006154 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg0@0XF8006154 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg1 + +0XF8006158 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg1@0XF8006158 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 1. +
+

+

Register ( slcr )phy_wr_dqs_cfg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg2 + +0XF800615C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg2@0XF800615C + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 2. +
+

+

Register ( slcr )phy_wr_dqs_cfg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg3 + +0XF8006160 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg3@0XF8006160 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 3. +
+

+

Register ( slcr )phy_we_cfg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg0 + +0XF8006168 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg0@0XF8006168 + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 0. +
+

+

Register ( slcr )phy_we_cfg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg1 + +0XF800616C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg1@0XF800616C + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 1. +
+

+

Register ( slcr )phy_we_cfg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg2 + +0XF8006170 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg2@0XF8006170 + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 2. +
+

+

Register ( slcr )phy_we_cfg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg3 + +0XF8006174 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg3@0XF8006174 + +31:0 + +1fffff + + + +b5 + +PHY FIFO write enable configuration for data slice 3. +
+

+

Register ( slcr )wr_data_slv0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv0 + +0XF800617C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv0@0XF800617C + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 0. +
+

+

Register ( slcr )wr_data_slv1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv1 + +0XF8006180 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv1@0XF8006180 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 1. +
+

+

Register ( slcr )wr_data_slv2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv2 + +0XF8006184 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv2@0XF8006184 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 2. +
+

+

Register ( slcr )wr_data_slv3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv3 + +0XF8006188 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +0: 1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv3@0XF8006188 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio config for data slice 3. +
+

+

Register ( slcr )reg_64

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_64 + +0XF8006190 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_loopback + +0:0 + +1 + +0 + +0 + +Loopback testing. 1: enable, 0: disable +
+reg_phy_bl2 + +1:1 + +2 + +0 + +0 + +Reserved for future Use. +
+reg_phy_at_spd_atpg + +2:2 + +4 + +0 + +0 + +0: run scan test at slow clock speed but with high coverage 1: run scan test at full clock speed but with less coverage During normal function mode, this port must be set 0. +
+reg_phy_bist_enable + +3:3 + +8 + +0 + +0 + +Enable the internal BIST generation and checker logic when this port is set HIGH. Setting this port as 0 will stop the BIST generator/checker. In order to run BIST tests, this port must be set along with reg_phy_loopback. +
+reg_phy_bist_force_err + +4:4 + +10 + +0 + +0 + +This register bit is used to check that BIST checker is not giving false pass. When this port is set 1, data bit gets inverted before sending out to the external memory and BIST checker must return a mismatch error. +
+reg_phy_bist_mode + +6:5 + +60 + +0 + +0 + +The mode bits select the pattern type generated by the BIST generator. All the patterns are transmitted continuously once enabled. 00: constant pattern (0 repeated on each DQ bit) 01: low freq pattern (00001111 repeated on each DQ bit) 10: PRBS pattern (2^7-1 PRBS pattern repeated on each DQ bit) Each DQ bit always has same data value except when early shifting in PRBS mode is requested 11: reserved +
+reg_phy_invert_clkout + +7:7 + +80 + +1 + +80 + +Inverts the polarity of DRAM clock. 0: core clock is passed on to DRAM 1: inverted core clock is passed on to DRAM. Use this when CLK can arrive at a DRAM device ahead of DQS or coincidence with DQS based on boad topology. This effectively delays the CLK to the DRAM device by half -cycle, providing a CLK edge that DQS can align to during leveling. +
+reg_phy_all_dq_mpr_rd_resp + +8:8 + +100 + +0 + +0 + +0: (default) best for DRAM read responses on only 1 DQ bit; works with reduced accuracy if DRAM provides read response on all bits. (In this mode dq_in[7:0] are OR'd together and dq_in[15:8] are OR'd together.) 1: assume DRAM provides read response on all DQ bits. (In this mode, dq_in[7:0] are OR'd together and dq_in[15:8] are AND'd together.) +
+reg_phy_sel_logic + +9:9 + +200 + +0 + +0 + +Selects one of the two read leveling algorithms.'b0: Select algorithm # 1'b1: Select algorithm # 2 Please refer to Read Data Eye Training section in PHY User Guide for details about the Read Leveling algorithms +
+reg_phy_ctrl_slave_ratio + +19:10 + +ffc00 + +100 + +40000 + +Ratio value for address/command launch timing in phy_ctrl macro. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_ctrl_slave_force + +20:20 + +100000 + +0 + +0 + +1: overwrite the delay/tap value for address/command timing slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_ctrl_slave_delay + +27:21 + +fe00000 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for address/command timing slave DLL with this value. This is a bit value, the remaining 2 bits are in register 0x65 bits[19:18]. +
+reg_phy_use_rank0_delays + +28:28 + +10000000 + +1 + +10000000 + +Delay selection 0: Each Rank uses its own delay 1: Rank 0 delays are used for all ranks +
+reg_phy_lpddr + +29:29 + +20000000 + +0 + +0 + +0: DDR2 or DDR3. 1: LPDDR2. +
+reg_phy_cmd_latency + +30:30 + +40000000 + +0 + +0 + +If set to 1, command comes to phy_ctrl through a flop. +
+reg_phy_int_lpbk + +31:31 + +80000000 + +0 + +0 + +1: enables the PHY internal loopback for DQ,DQS,DM before Ios. By default must be 0. +
+reg_64@0XF8006190 + +31:0 + +ffffffff + + + +10040080 + +Training control 2 +
+

+

Register ( slcr )reg_65

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_65 + +0XF8006194 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_rl_delay + +4:0 + +1f + +2 + +2 + +This delay determines when to select the active rank's ratio logic delay for Write Data and Write DQS slave delay lines after PHY receives a write command at Control Interface. The programmed value must be (Write Latency - 4) with a minimum value of 1. +
+reg_phy_rd_rl_delay + +9:5 + +3e0 + +4 + +80 + +This delay determines when to select the active rank's ratio logic delay for Read Data and Read DQS slave delay lines after PHY receives a read command at Control Interface. The programmed value must be (Read Latency - 3) with a minimum value of 1. +
+reg_phy_dll_lock_diff + +13:10 + +3c00 + +f + +3c00 + +The Maximum number of delay line taps variation allowed while maintaining the master DLL lock. When the PHY is in locked state and the variation on the clock exceeds the variation indicated by the register, the lock signal is deasserted +
+reg_phy_use_wr_level + +14:14 + +4000 + +1 + +4000 + +Write Leveling training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by write leveling Note: This is a Synchronous dynamic signal that requires timing closure. +
+reg_phy_use_rd_dqs_gate_level + +15:15 + +8000 + +1 + +8000 + +Read DQS Gate training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by DQS gate leveling Note: This is a Synchronous dynamic signal that requires timing closure. +
+reg_phy_use_rd_data_eye_level + +16:16 + +10000 + +1 + +10000 + +Read Data Eye training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by data eye leveling Note: This is a Synchronous dynamic signal that requires timing closure +
+reg_phy_dis_calib_rst + +17:17 + +20000 + +0 + +0 + +Disable the dll_calib (internally generated) signal from resetting the Read Capture FIFO pointers and portions of phy_data. Note: dll_calib is (i) generated by dfi_ctrl_upd_req or (ii) by the PHY when it detects that the clock frequency variation has exceeded the bounds set by reg_phy_dll_lock_diff or (iii) periodically throughout the leveling process. dll_calib will update the slave DL with PVT-compensated values according to master DLL outputs +
+reg_phy_ctrl_slave_delay + +19:18 + +c0000 + +0 + +0 + +If reg-phy_rd_dqs_slave_force is 1, replace delay/tap value for address/command timing slave DLL with this value +
+reg_65@0XF8006194 + +31:0 + +fffff + + + +1fc82 + +Training control 3 +
+

+

Register ( slcr )page_mask

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+page_mask + +0XF8006204 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_page_addr_mask + +31:0 + +ffffffff + +0 + +0 + +Set this register based on the value programmed on the reg_ddrc_addrmap_* registers. Set the Column address bits to 0. Set the Page and Bank address bits to 1. This is used for calculating page_match inside the slave modules in Arbiter. The page_match is considered during the arbitration process. This mask applies to 64-bit address and not byte address. Setting this value to 0 disables transaction prioritization based on page/bank match. +
+page_mask@0XF8006204 + +31:0 + +ffffffff + + + +0 + +Page mask +
+

+

Register ( slcr )axi_priority_wr_port0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port0 + +0XF8006208 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port0@0XF8006208 + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port1 + +0XF800620C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port1@0XF800620C + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 1. +
+

+

Register ( slcr )axi_priority_wr_port2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port2 + +0XF8006210 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port2@0XF8006210 + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 2. +
+

+

Register ( slcr )axi_priority_wr_port3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port3 + +0XF8006214 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port3@0XF8006214 + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 3. +
+

+

Register ( slcr )axi_priority_rd_port0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port0 + +0XF8006218 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port0@0XF8006218 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port1 + +0XF800621C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port1@0XF800621C + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 1. +
+

+

Register ( slcr )axi_priority_rd_port2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port2 + +0XF8006220 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port2@0XF8006220 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 2. +
+

+

Register ( slcr )axi_priority_rd_port3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port3 + +0XF8006224 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port3@0XF8006224 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 3. +
+

+

Register ( slcr )lpddr_ctrl0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl0 + +0XF80062A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_lpddr2 + +0:0 + +1 + +0 + +0 + +0: DDR2 or DDR3 in use. 1: LPDDR2 in Use. +
+reg_ddrc_per_bank_refresh + +1:1 + +2 + +0 + +0 + +0:All bank refresh Per bank refresh allows traffic to flow to other banks. 1:Per bank refresh Per bank refresh is not supported on all LPDDR2 devices. +
+reg_ddrc_derate_enable + +2:2 + +4 + +0 + +0 + +0: Timing parameter derating is disabled. 1: Timing parameter derating is enabled using MR4 read value. +
+reg_ddrc_mr4_margin + +11:4 + +ff0 + +0 + +0 + +UNUSED +
+lpddr_ctrl0@0XF80062A8 + +31:0 + +ff7 + + + +0 + +LPDDR2 Control 0 +
+

+

Register ( slcr )lpddr_ctrl1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl1 + +0XF80062AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_mr4_read_interval + +31:0 + +ffffffff + +0 + +0 + +Interval between two MR4 reads, USED to derate the timing parameters. +
+lpddr_ctrl1@0XF80062AC + +31:0 + +ffffffff + + + +0 + +LPDDR2 Control 1 +
+

+

Register ( slcr )lpddr_ctrl2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl2 + +0XF80062B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_min_stable_clock_x1 + +3:0 + +f + +5 + +5 + +Time to wait after the first CKE high, tINIT2. Units: 1 clock cycle. LPDDR2 typically requires 5 x tCK delay. +
+reg_ddrc_idle_after_reset_x32 + +11:4 + +ff0 + +12 + +120 + +Idle time after the reset command, tINIT4. Units: 32 clock cycles. +
+reg_ddrc_t_mrw + +21:12 + +3ff000 + +5 + +5000 + +Time to wait during load mode register writes. Present only in designs configured to support LPDDR2. LPDDR2 typically requires value of 5. +
+lpddr_ctrl2@0XF80062B0 + +31:0 + +3fffff + + + +5125 + +LPDDR2 Control 2 +
+

+

Register ( slcr )lpddr_ctrl3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl3 + +0XF80062B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_max_auto_init_x1024 + +7:0 + +ff + +a8 + +a8 + +Maximum duration of the auto initialization, tINIT5. Units: 1024 clock cycles. LPDDR2 typically requires 10 us. +
+reg_ddrc_dev_zqinit_x32 + +17:8 + +3ff00 + +12 + +1200 + +ZQ initial calibration, tZQINIT. Units: 32 clock cycles. LPDDR2 typically requires 1 us. +
+lpddr_ctrl3@0XF80062B4 + +31:0 + +3ffff + + + +12a8 + +LPDDR2 Control 3 +
+

+

POLL ON DCI STATUS

+

Register ( slcr )DDRIOB_DCI_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_STATUS + +0XF8000B74 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DONE + +13:13 + +2000 + +1 + +2000 + +DCI done signal +
+DDRIOB_DCI_STATUS@0XF8000B74 + +31:0 + +2000 + + + +2000 + +tobe +
+

+

UNLOCK DDR

+

Register ( slcr )ddrc_ctrl

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ddrc_ctrl + +0XF8006000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_soft_rstb + +0:0 + +1 + +1 + +1 + +Active low soft reset. Update during normal operation. 0: Resets the controller 1: Takes the controller out of reset. Dynamic Bit Field. Note: Software changes DRAM controller register values only when the controller is in the reset state, except for bit fields that can be dymanically updated. +
+reg_ddrc_powerdown_en + +1:1 + +2 + +0 + +0 + +Controller power down control. Update during normal operation. Enable the controller to powerdown after it becomes idle. Dynamic Bit Field. 0: disable 1: enable +
+reg_ddrc_data_bus_width + +3:2 + +c + +0 + +0 + +DDR bus width control 00: 32-bit 01: 16-bit 1x: reserved +
+reg_ddrc_burst8_refresh + +6:4 + +70 + +0 + +0 + +Refresh timeout. Programmed value plus one will be the number of refresh timeouts that will be allowed to accumulate before traffic is blocked and the refreshes are forced to execute. Closing pages to perform a refresh is a one-time penalty that must be paid for each group of refreshes; therefore, performing refreshes in a burst reduces the per-refresh penalty of these page closings. Higher numbers for burst_of_N_refresh slightly increases utilization; lower numbers decreases the worst-case latency associated with refreshes. 0: single refresh 1: burst-of-2 ... 7: burst-of-8 refresh +
+reg_ddrc_rdwr_idle_gap + +13:7 + +3f80 + +1 + +80 + +When the preferred transaction store is empty for this many clock cycles, switch to the alternate transaction store if it is non-empty. The read transaction store (both high and low priority) is the default preferred transaction store and the write transaction store is the alternate store. When 'Prefer write over read' is set this is reversed. +
+reg_ddrc_dis_rd_bypass + +14:14 + +4000 + +0 + +0 + +Only present in designs supporting read bypass. For Debug only. 0: Do not disable bypass path for high priority read page hits. 1: disable bypass path for high priority read page hits. +
+reg_ddrc_dis_act_bypass + +15:15 + +8000 + +0 + +0 + +Only present in designs supporting activate bypass. For Debug only. 0: Do not disable bypass path for high priority read activates. 1: disable bypass path for high priority read activates. +
+reg_ddrc_dis_auto_refresh + +16:16 + +10000 + +0 + +0 + +Disable auto-refresh. 0: do not disable auto-refresh. 1: disable auto-refresh. Dynamic Bit Field. Note: When this transitions from 0 to 1, any pending refreshes will be immediately scheduled by the controller. +
+ddrc_ctrl@0XF8006000 + +31:0 + +1ffff + + + +81 + +DDRC Control +
+

+

CHECK DDR STATUS

+

Register ( slcr )mode_sts_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+mode_sts_reg + +0XF8006054 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+ddrc_reg_operating_mode + +2:0 + +7 + +1 + +1 + +Gives the status of the controller. 0: DDRC Init 1: Normal operation 2: Power-down mode 3: Self-refresh mode 4 and above: deep power down mode (LPDDR2 only) +
+mode_sts_reg@0XF8006054 + +31:0 + +7 + + + +1 + +tobe +
+

+ +

+

ps7_mio_init_data_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DDRIOB_ADDR0 + + +0XF8000B40 + +32 + +RW + +0x000000 + +DDR IOB Config for Address 0 +
+ +DDRIOB_ADDR1 + + +0XF8000B44 + +32 + +RW + +0x000000 + +DDR IOB Config for Address 1 +
+ +DDRIOB_DATA0 + + +0XF8000B48 + +32 + +RW + +0x000000 + +DDR IOB Config for Data 15:0 +
+ +DDRIOB_DATA1 + + +0XF8000B4C + +32 + +RW + +0x000000 + +DDR IOB Config for Data 31:16 +
+ +DDRIOB_DIFF0 + + +0XF8000B50 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 1:0 +
+ +DDRIOB_DIFF1 + + +0XF8000B54 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 3:2 +
+ +DDRIOB_CLOCK + + +0XF8000B58 + +32 + +RW + +0x000000 + +DDR IOB Config for Clock Output +
+ +DDRIOB_DRIVE_SLEW_ADDR + + +0XF8000B5C + +32 + +RW + +0x000000 + +DDR IOB Slew for Address +
+ +DDRIOB_DRIVE_SLEW_DATA + + +0XF8000B60 + +32 + +RW + +0x000000 + +DDR IOB Slew for Data +
+ +DDRIOB_DRIVE_SLEW_DIFF + + +0XF8000B64 + +32 + +RW + +0x000000 + +DDR IOB Slew for Diff +
+ +DDRIOB_DRIVE_SLEW_CLOCK + + +0XF8000B68 + +32 + +RW + +0x000000 + +DDR IOB Slew for Clock +
+ +DDRIOB_DDR_CTRL + + +0XF8000B6C + +32 + +RW + +0x000000 + +DDR IOB Buffer Control +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDRIOB DCI configuration +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDRIOB DCI configuration +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDRIOB DCI configuration +
+ +MIO_PIN_00 + + +0XF8000700 + +32 + +RW + +0x000000 + +MIO Pin 0 Control +
+ +MIO_PIN_01 + + +0XF8000704 + +32 + +RW + +0x000000 + +MIO Pin 1 Control +
+ +MIO_PIN_02 + + +0XF8000708 + +32 + +RW + +0x000000 + +MIO Pin 2 Control +
+ +MIO_PIN_03 + + +0XF800070C + +32 + +RW + +0x000000 + +MIO Pin 3 Control +
+ +MIO_PIN_04 + + +0XF8000710 + +32 + +RW + +0x000000 + +MIO Pin 4 Control +
+ +MIO_PIN_05 + + +0XF8000714 + +32 + +RW + +0x000000 + +MIO Pin 5 Control +
+ +MIO_PIN_06 + + +0XF8000718 + +32 + +RW + +0x000000 + +MIO Pin 6 Control +
+ +MIO_PIN_07 + + +0XF800071C + +32 + +RW + +0x000000 + +MIO Pin 7 Control +
+ +MIO_PIN_08 + + +0XF8000720 + +32 + +RW + +0x000000 + +MIO Pin 8 Control +
+ +MIO_PIN_09 + + +0XF8000724 + +32 + +RW + +0x000000 + +MIO Pin 9 Control +
+ +MIO_PIN_10 + + +0XF8000728 + +32 + +RW + +0x000000 + +MIO Pin 10 Control +
+ +MIO_PIN_11 + + +0XF800072C + +32 + +RW + +0x000000 + +MIO Pin 11 Control +
+ +MIO_PIN_12 + + +0XF8000730 + +32 + +RW + +0x000000 + +MIO Pin 12 Control +
+ +MIO_PIN_13 + + +0XF8000734 + +32 + +RW + +0x000000 + +MIO Pin 13 Control +
+ +MIO_PIN_14 + + +0XF8000738 + +32 + +RW + +0x000000 + +MIO Pin 14 Control +
+ +MIO_PIN_15 + + +0XF800073C + +32 + +RW + +0x000000 + +MIO Pin 15 Control +
+ +MIO_PIN_16 + + +0XF8000740 + +32 + +RW + +0x000000 + +MIO Pin 16 Control +
+ +MIO_PIN_17 + + +0XF8000744 + +32 + +RW + +0x000000 + +MIO Pin 17 Control +
+ +MIO_PIN_18 + + +0XF8000748 + +32 + +RW + +0x000000 + +MIO Pin 18 Control +
+ +MIO_PIN_19 + + +0XF800074C + +32 + +RW + +0x000000 + +MIO Pin 19 Control +
+ +MIO_PIN_20 + + +0XF8000750 + +32 + +RW + +0x000000 + +MIO Pin 20 Control +
+ +MIO_PIN_21 + + +0XF8000754 + +32 + +RW + +0x000000 + +MIO Pin 21 Control +
+ +MIO_PIN_22 + + +0XF8000758 + +32 + +RW + +0x000000 + +MIO Pin 22 Control +
+ +MIO_PIN_23 + + +0XF800075C + +32 + +RW + +0x000000 + +MIO Pin 23 Control +
+ +MIO_PIN_24 + + +0XF8000760 + +32 + +RW + +0x000000 + +MIO Pin 24 Control +
+ +MIO_PIN_25 + + +0XF8000764 + +32 + +RW + +0x000000 + +MIO Pin 25 Control +
+ +MIO_PIN_26 + + +0XF8000768 + +32 + +RW + +0x000000 + +MIO Pin 26 Control +
+ +MIO_PIN_27 + + +0XF800076C + +32 + +RW + +0x000000 + +MIO Pin 27 Control +
+ +MIO_PIN_28 + + +0XF8000770 + +32 + +RW + +0x000000 + +MIO Pin 28 Control +
+ +MIO_PIN_29 + + +0XF8000774 + +32 + +RW + +0x000000 + +MIO Pin 29 Control +
+ +MIO_PIN_30 + + +0XF8000778 + +32 + +RW + +0x000000 + +MIO Pin 30 Control +
+ +MIO_PIN_31 + + +0XF800077C + +32 + +RW + +0x000000 + +MIO Pin 31 Control +
+ +MIO_PIN_32 + + +0XF8000780 + +32 + +RW + +0x000000 + +MIO Pin 32 Control +
+ +MIO_PIN_33 + + +0XF8000784 + +32 + +RW + +0x000000 + +MIO Pin 33 Control +
+ +MIO_PIN_34 + + +0XF8000788 + +32 + +RW + +0x000000 + +MIO Pin 34 Control +
+ +MIO_PIN_35 + + +0XF800078C + +32 + +RW + +0x000000 + +MIO Pin 35 Control +
+ +MIO_PIN_36 + + +0XF8000790 + +32 + +RW + +0x000000 + +MIO Pin 36 Control +
+ +MIO_PIN_37 + + +0XF8000794 + +32 + +RW + +0x000000 + +MIO Pin 37 Control +
+ +MIO_PIN_38 + + +0XF8000798 + +32 + +RW + +0x000000 + +MIO Pin 38 Control +
+ +MIO_PIN_39 + + +0XF800079C + +32 + +RW + +0x000000 + +MIO Pin 39 Control +
+ +MIO_PIN_40 + + +0XF80007A0 + +32 + +RW + +0x000000 + +MIO Pin 40 Control +
+ +MIO_PIN_41 + + +0XF80007A4 + +32 + +RW + +0x000000 + +MIO Pin 41 Control +
+ +MIO_PIN_42 + + +0XF80007A8 + +32 + +RW + +0x000000 + +MIO Pin 42 Control +
+ +MIO_PIN_43 + + +0XF80007AC + +32 + +RW + +0x000000 + +MIO Pin 43 Control +
+ +MIO_PIN_44 + + +0XF80007B0 + +32 + +RW + +0x000000 + +MIO Pin 44 Control +
+ +MIO_PIN_45 + + +0XF80007B4 + +32 + +RW + +0x000000 + +MIO Pin 45 Control +
+ +MIO_PIN_46 + + +0XF80007B8 + +32 + +RW + +0x000000 + +MIO Pin 46 Control +
+ +MIO_PIN_47 + + +0XF80007BC + +32 + +RW + +0x000000 + +MIO Pin 47 Control +
+ +MIO_PIN_48 + + +0XF80007C0 + +32 + +RW + +0x000000 + +MIO Pin 48 Control +
+ +MIO_PIN_49 + + +0XF80007C4 + +32 + +RW + +0x000000 + +MIO Pin 49 Control +
+ +MIO_PIN_50 + + +0XF80007C8 + +32 + +RW + +0x000000 + +MIO Pin 50 Control +
+ +MIO_PIN_51 + + +0XF80007CC + +32 + +RW + +0x000000 + +MIO Pin 51 Control +
+ +MIO_PIN_52 + + +0XF80007D0 + +32 + +RW + +0x000000 + +MIO Pin 52 Control +
+ +MIO_PIN_53 + + +0XF80007D4 + +32 + +RW + +0x000000 + +MIO Pin 53 Control +
+ +SD0_WP_CD_SEL + + +0XF8000830 + +32 + +RW + +0x000000 + +SDIO 0 WP CD select +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_mio_init_data_2_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

OCM REMAPPING

+

DDRIOB SETTINGS

+

Register ( slcr )DDRIOB_ADDR0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_ADDR0 + +0XF8000B40 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +0 + +0 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_ADDR0@0XF8000B40 + +31:0 + +fff + + + +600 + +DDR IOB Config for Address 0 +
+

+

Register ( slcr )DDRIOB_ADDR1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_ADDR1 + +0XF8000B44 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +0 + +0 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_ADDR1@0XF8000B44 + +31:0 + +fff + + + +600 + +DDR IOB Config for Address 1 +
+

+

Register ( slcr )DDRIOB_DATA0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA0 + +0XF8000B48 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +1 + +2 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DATA0@0XF8000B48 + +31:0 + +fff + + + +672 + +DDR IOB Config for Data 15:0 +
+

+

Register ( slcr )DDRIOB_DATA1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA1 + +0XF8000B4C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +1 + +2 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DATA1@0XF8000B4C + +31:0 + +fff + + + +672 + +DDR IOB Config for Data 31:16 +
+

+

Register ( slcr )DDRIOB_DIFF0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF0 + +0XF8000B50 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +2 + +4 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DIFF0@0XF8000B50 + +31:0 + +fff + + + +674 + +DDR IOB Config for DQS 1:0 +
+

+

Register ( slcr )DDRIOB_DIFF1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF1 + +0XF8000B54 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +2 + +4 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_DIFF1@0XF8000B54 + +31:0 + +fff + + + +674 + +DDR IOB Config for DQS 3:2 +
+

+

Register ( slcr )DDRIOB_CLOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_CLOCK + +0XF8000B58 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0: low power mode. 1: high performance mode. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer controls. 00: Input off, reads 0. 01: Vref based differential receiver for SSTL, HSTL. 10: Differential input receiver. 11: LVCMOS receiver. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +0 + +0 + +DCI Update 00: DCI Disabled 01: DCI Drive (HSTL12_DCI) 10: reserved 11: DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00: ibuf 01 and 10: reserved 11: obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0: no pullup 1: pullup enabled +
+DDRIOB_CLOCK@0XF8000B58 + +31:0 + +fff + + + +600 + +DDR IOB Config for Clock Output +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_ADDR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_ADDR + +0XF8000B5C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +3 + +c000 + +DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +3 + +180000 + +DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000: Normal Operation 001 to 111: Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_ADDR@0XF8000B5C + +31:0 + +ffffffff + + + +18c61c + +DDR IOB Slew for Address +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_DATA

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_DATA + +0XF8000B60 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +6 + +18000 + +DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000: Normal Operation 001 to 111: Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_DATA@0XF8000B60 + +31:0 + +ffffffff + + + +f9861c + +DDR IOB Slew for Data +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_DIFF

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_DIFF + +0XF8000B64 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +6 + +18000 + +DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000: Normal Operation 001 to 111: Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_DIFF@0XF8000B64 + +31:0 + +ffffffff + + + +f9861c + +DDR IOB Slew for Diff +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_CLOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_CLOCK + +0XF8000B68 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +6 + +18000 + +DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000: Normal Operation 001 to 111: Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_CLOCK@0XF8000B68 + +31:0 + +ffffffff + + + +f9861c + +DDR IOB Slew for Clock +
+

+

Register ( slcr )DDRIOB_DDR_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DDR_CTRL + +0XF8000B6C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+VREF_INT_EN + +0:0 + +1 + +0 + +0 + +Enables VREF internal generator +
+VREF_SEL + +4:1 + +1e + +0 + +0 + +Specifies DDR IOB Vref generator output: 0001: VREF = 0.6V for LPDDR2 with 1.2V IO 0100: VREF = 0.75V for DDR3 with 1.5V IO 1000: VREF = 0.90V for DDR2 with 1.8V IO +
+VREF_EXT_EN + +6:5 + +60 + +3 + +60 + +Enables External VREF input x0: Disable External VREF for lower 16 bits x1: Enable External VREF for lower 16 bits 0x: Disable External VREF for upper 16 bits 1X: Enable External VREF for upper 16 bits +
+VREF_PULLUP_EN + +8:7 + +180 + +0 + +0 + +Enables VREF pull-up resistors x0: Disable VREF pull-up for lower 16 bits x1: Enable VREF pull-up for lower 16 bits 0x: Disable VREF pull-up for upper 16 bits 1x: Enable VREF pull-up for upper 16 bits +
+REFIO_EN + +9:9 + +200 + +1 + +200 + +Enables VRP,VRN 0: VRP/VRN not used 1: VRP/VRN used as refio +
+REFIO_TEST + +11:10 + +c00 + +0 + +0 + +Enable test mode for VRP and VRN: 00: VRP/VRN test mode not used 11: VRP/VRN test mode enabled using vref based receiver. VRP/VRN control is set using the VRN_OUT, VRP_OUT, VRN_TRI, VRP_TRI fields in the DDRIOB_DCI_CTRL register +
+REFIO_PULLUP_EN + +12:12 + +1000 + +0 + +0 + +Enables VRP,VRN pull-up resistors 0: no pull-up 1: enable pull-up +
+DRST_B_PULLUP_EN + +13:13 + +2000 + +0 + +0 + +Enables pull-up resistors 0: no pull-up 1: enable pull-up +
+CKE_PULLUP_EN + +14:14 + +4000 + +0 + +0 + +Enables pull-up resistors 0: no pull-up 1: enable pull-up +
+DDRIOB_DDR_CTRL@0XF8000B6C + +31:0 + +7fff + + + +260 + +DDR IOB Buffer Control +
+

+

ASSERT RESET

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +1 + +1 + +At least toggle once to initialise flops in DCI system +
+VRN_OUT + +5:5 + +20 + +1 + +20 + +VRN output value +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +21 + + + +21 + +DDRIOB DCI configuration +
+

+

DEASSERT RESET

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +0 + +0 + +At least toggle once to initialise flops in DCI system +
+VRN_OUT + +5:5 + +20 + +1 + +20 + +VRN output value +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +21 + + + +20 + +DDRIOB DCI configuration +
+

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +1 + +1 + +At least toggle once to initialise flops in DCI system +
+ENABLE + +1:1 + +2 + +1 + +2 + +1 if any iob's use a terminate type, or if dci test block used +
+VRP_TRI + +2:2 + +4 + +0 + +0 + +VRP tristate value +
+VRN_TRI + +3:3 + +8 + +0 + +0 + +VRN tristate value +
+VRP_OUT + +4:4 + +10 + +0 + +0 + +VRP output value +
+VRN_OUT + +5:5 + +20 + +1 + +20 + +VRN output value +
+NREF_OPT1 + +7:6 + +c0 + +0 + +0 + +Reserved +
+NREF_OPT2 + +10:8 + +700 + +0 + +0 + +Reserved +
+NREF_OPT4 + +13:11 + +3800 + +1 + +800 + +Reserved +
+PREF_OPT1 + +16:14 + +1c000 + +0 + +0 + +Reserved +
+PREF_OPT2 + +19:17 + +e0000 + +0 + +0 + +Reserved +
+UPDATE_CONTROL + +20:20 + +100000 + +0 + +0 + +DCI Update +
+INIT_COMPLETE + +21:21 + +200000 + +0 + +0 + +test Internal to IO bank +
+TST_CLK + +22:22 + +400000 + +0 + +0 + +Emulate DCI clock +
+TST_HLN + +23:23 + +800000 + +0 + +0 + +Emulate comparator output (VRN) +
+TST_HLP + +24:24 + +1000000 + +0 + +0 + +Emulate comparator output (VRP) +
+TST_RST + +25:25 + +2000000 + +0 + +0 + +Emulate Reset +
+INT_DCI_EN + +26:26 + +4000000 + +0 + +0 + +Need explanation here +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +7ffffff + + + +823 + +DDRIOB DCI configuration +
+

+

MIO PROGRAMMING

+

Register ( slcr )MIO_PIN_00

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_00 + +0XF8000700 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. 0: disable 1: enable +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 chip select +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Chip Select 0 10: NAND Flash Chip Select 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 0 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Select IO Buffer Edge Rate, applicable when IO_Type= LVCMOS18, LVCMOS25 or LVCMOS33. 0: Slow CMOS edge 1: Fast CMOS edge +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Select the IO Buffer Type. 000: LVTTL 001: LVCMOS18 010: LVCMOS25 011, 101, 110, 111: LVCMOS33 100: HSTL +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Enables pull-up on IO Buffer pin 0: disable 1: enable +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Disable HSTL Input Buffer to save power when it is an output-only (IO_Type must be HSTL). 0: enable 1: disable +
+MIO_PIN_00@0XF8000700 + +31:0 + +3fff + + + +1600 + +MIO Pin 0 Control +
+

+

Register ( slcr )MIO_PIN_01

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_01 + +0XF8000704 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 Chip Select +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM Address Bit 25 10: SRAM/NOR Chip Select 1 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 1 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_01@0XF8000704 + +31:0 + +3fff + + + +1602 + +MIO Pin 1 Control +
+

+

Register ( slcr )MIO_PIN_02

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_02 + +0XF8000708 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 0 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 8 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: NAND Flash ALEn 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 2 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_02@0XF8000708 + +31:0 + +3fff + + + +602 + +MIO Pin 2 Control +
+

+

Register ( slcr )MIO_PIN_03

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_03 + +0XF800070C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 1 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 9 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data bit 0 10: NAND WE_B output 11: SDIO 1 Card Power output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 3 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_03@0XF800070C + +31:0 + +3fff + + + +602 + +MIO Pin 3 Control +
+

+

Register ( slcr )MIO_PIN_04

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_04 + +0XF8000710 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 2 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 10 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 1 10: NAND Flash IO Bit 2 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 4 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_04@0XF8000710 + +31:0 + +3fff + + + +602 + +MIO Pin 4 Control +
+

+

Register ( slcr )MIO_PIN_05

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_05 + +0XF8000714 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 IO Bit 3 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 11 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 2 10: NAND Flash IO Bit 0 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 5 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_05@0XF8000714 + +31:0 + +3fff + + + +602 + +MIO Pin 5 Control +
+

+

Register ( slcr )MIO_PIN_06

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_06 + +0XF8000718 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 0 Clock Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 12 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 3 10: NAND Flash IO Bit 1 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 6 (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_06@0XF8000718 + +31:0 + +3fff + + + +602 + +MIO Pin 6 Control +
+

+

Register ( slcr )MIO_PIN_07

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_07 + +0XF800071C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 13 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR OE_B 10: NAND Flash CLE_B 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 7 Output-only (bank 0) others: reserved +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_07@0XF800071C + +31:0 + +3fff + + + +600 + +MIO Pin 7 Control +
+

+

Register ( slcr )MIO_PIN_08

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_08 + +0XF8000720 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI Feedback Output Clock +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 14 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR WE_B 10: NAND Flash RD_B 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 8 Output-only (bank 0) 001: CAN 1 Tx 010: sram, Output, smc_sram_bls_b 011 to 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_08@0XF8000720 + +31:0 + +3fff + + + +602 + +MIO Pin 8 Control +
+

+

Register ( slcr )MIO_PIN_09

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_09 + +0XF8000724 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 Flash Memory Clock Output +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 15 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 6 10: NAND Flash IO Bit 4 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 9 (bank 0) 001: CAN 1 Rx 010 to 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_09@0XF8000724 + +31:0 + +3fff + + + +1600 + +MIO Pin 9 Control +
+

+

Register ( slcr )MIO_PIN_10

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_10 + +0XF8000728 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 0 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 2 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 7 10: NAND Flash IO Bit 5 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 10 (bank 0) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: PJTAG TDI 100: SDIO 1 IO Bit 0 101: SPI 1 MOSI 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_10@0XF8000728 + +31:0 + +3fff + + + +1600 + +MIO Pin 10 Control +
+

+

Register ( slcr )MIO_PIN_11

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_11 + +0XF800072C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 1 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 3 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 4 10: NAND Flash IO Bit 6 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 11 (bank 0) 001: CAN 0 Tx 010: I2C Serial Data 011: PJTAG TDO 100: SDIO 1 Command 101: SPI 1 MISO 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_11@0XF800072C + +31:0 + +3fff + + + +1600 + +MIO Pin 11 Control +
+

+

Register ( slcr )MIO_PIN_12

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_12 + +0XF8000730 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 2 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Clock output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Wait 10: NAND Flash IO Bit 7 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +2 + +40 + +Level 3 Mux Select 000: GPIO 12 (bank 0) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: PJTAG TCK 100: SDIO 1 Clock 101: SPI 1 Serial Clock 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_12@0XF8000730 + +31:0 + +3fff + + + +1640 + +MIO Pin 12 Control +
+

+

Register ( slcr )MIO_PIN_13

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_13 + +0XF8000734 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Quad SPI 1 IO Bit 3 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Control Signal output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Data Bit 5 10: NAND Flash IO Bit 3 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +2 + +40 + +Level 3 Mux Select 000: GPIO 13 (bank 0) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: PJTAG TMS 100: SDIO 1 IO Bit 1 101: SPI 1 Slave Select 0 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_13@0XF8000734 + +31:0 + +3fff + + + +1640 + +MIO Pin 13 Control +
+

+

Register ( slcr )MIO_PIN_14

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_14 + +0XF8000738 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 0 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: NAND Flash Busy 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +1 + +20 + +Level 3 Mux Select 000: GPIO 14 (bank 0) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: SWDT Clock Input 100: SDIO 1 IO Bit 2 101: SPI 1 slave select 1 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_14@0XF8000738 + +31:0 + +3fff + + + +1621 + +MIO Pin 14 Control +
+

+

Register ( slcr )MIO_PIN_15

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_15 + +0XF800073C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 1 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 0 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +1 + +20 + +Level 3 Mux Select 000: GPIO 15 (bank 0) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: SWDT Reset Out 100: SDIO 1 IO Bit 3 101: SPI 1 Slave Select 2 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_15@0XF800073C + +31:0 + +3fff + + + +1620 + +MIO Pin 15 Control +
+

+

Register ( slcr )MIO_PIN_16

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_16 + +0XF8000740 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Tx Clock +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 4 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 1 10: NAND Flash IO Bit 8 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 16 (bank 0) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: reserved 100: SDIO 0 Clock 101: SPI 0 Serial Clock 110: TTC 1 Wave Output 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_16@0XF8000740 + +31:0 + +3fff + + + +1202 + +MIO Pin 16 Control +
+

+

Register ( slcr )MIO_PIN_17

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_17 + +0XF8000744 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 0 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 5 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 2 10: NAND Flash IO Bit 9 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 17 (bank 0) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: reserved 100: SDIO 0 Command 101: SPI 0 MISO 110 TTC 1 Clock Input 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_17@0XF8000744 + +31:0 + +3fff + + + +1202 + +MIO Pin 17 Control +
+

+

Register ( slcr )MIO_PIN_18

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_18 + +0XF8000748 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 1 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 6 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 3 10: NAND Flash IO Bit 10 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 18 (bank 0) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: reserved 100: SDIO 0 IO Bit 0 101: SPI 0 Slave Select 0 110: TTC 0 Wave Out 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_18@0XF8000748 + +31:0 + +3fff + + + +1202 + +MIO Pin 18 Control +
+

+

Register ( slcr )MIO_PIN_19

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_19 + +0XF800074C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 2 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 7 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 4 10: NAND Flash IO Bit 11 111: SDIO 1 Power Control Output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 19 (bank 0) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: reserved 100: SDIO 0 IO Bit 1 101: SPI 0 Slave Select 1 Output 110: TTC 0 Clock Input 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_19@0XF800074C + +31:0 + +3fff + + + +1202 + +MIO Pin 19 Control +
+

+

Register ( slcr )MIO_PIN_20

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_20 + +0XF8000750 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII TxD Bit 3 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 5 10: NAND Flash IO Bit 12 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 20 (bank 0) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: reserved 100: SDIO 0 IO Bit 2 101: SPI 0 Slave Select 2 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_20@0XF8000750 + +31:0 + +3fff + + + +1202 + +MIO Pin 20 Control +
+

+

Register ( slcr )MIO_PIN_21

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_21 + +0XF8000754 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Tx Control +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 6 10: NAND Flash IO Bit 13 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 21 (bank 0) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: reserved 100: SDIO 0 IO Bit 3 101: SPI 0 MOSI 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_21@0XF8000754 + +31:0 + +3fff + + + +1202 + +MIO Pin 21 Control +
+

+

Register ( slcr )MIO_PIN_22

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_22 + +0XF8000758 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Rx Clock +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 2 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 7 10: NAND Flash IO Bit 14 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 22 (bank 0) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: PJTAG TDI 100: SDIO 1 IO Bit 0 101: SPI 1 MOSI 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_22@0XF8000758 + +31:0 + +3fff + + + +1203 + +MIO Pin 22 Control +
+

+

Register ( slcr )MIO_PIN_23

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_23 + +0XF800075C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD 0 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 3 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 8 10: NAND Flash IO Bit 15 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 23 (bank 0) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: PJTAG TDO 100: SDIO 1 Command 101: SPI 1 MISO 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_23@0XF800075C + +31:0 + +3fff + + + +1203 + +MIO Pin 23 Control +
+

+

Register ( slcr )MIO_PIN_24

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_24 + +0XF8000760 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD Bit 1 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Clock output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 9 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 24 (bank 0) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: PJTAG TCK 100: SDIO 1 Clock 101: SPI 1 serial clock 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_24@0XF8000760 + +31:0 + +3fff + + + +1203 + +MIO Pin 24 Control +
+

+

Register ( slcr )MIO_PIN_25

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_25 + +0XF8000764 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD Bit2 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Control Signal output +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 10 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 25 (bank 0) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: PJTAG TMS 100: SDIO 1 IO Bit 1 101: SPI 1 Slave Select 0 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_25@0XF8000764 + +31:0 + +3fff + + + +1203 + +MIO Pin 25 Control +
+

+

Register ( slcr )MIO_PIN_26

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_26 + +0XF8000768 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII RxD Bit 3 +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 0 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 11 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 26 (bank 0) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: SWDT Clock Input 100: SDIO 1 IO Bit 2 101: SPI 1 Slave Select 1 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_26@0XF8000768 + +31:0 + +3fff + + + +1203 + +MIO Pin 26 Control +
+

+

Register ( slcr )MIO_PIN_27

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_27 + +0XF800076C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 0 RGMII Rx Control +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: Trace Port Data Bit 1 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 12 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 27 (bank 0) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: SWDT Reset Out 100: SDIO 1 IO Bit 3 101: SPI 1 Slave Select 2 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_27@0XF800076C + +31:0 + +3fff + + + +1203 + +MIO Pin 27 Control +
+

+

Register ( slcr )MIO_PIN_28

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_28 + +0XF8000770 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Tx Clock +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 4 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 13 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 28 (bank 0) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: reserved 100: SDIO 0 Clock 101: SPI 0 Serial Clock 110: TTC 1 Wave Out 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_28@0XF8000770 + +31:0 + +3fff + + + +1204 + +MIO Pin 28 Control +
+

+

Register ( slcr )MIO_PIN_29

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_29 + +0XF8000774 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 0 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Direction +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 14 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 29 (bank 0) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: reserved 100: SDIO 0 Command 101: SPI 0 MISO 110: TTC 1 Clock Input 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_29@0XF8000774 + +31:0 + +3fff + + + +1205 + +MIO Pin 29 Control +
+

+

Register ( slcr )MIO_PIN_30

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_30 + +0XF8000778 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 1 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Stop +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 15 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 30 (bank 0) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: reserved 100: SDIO 0 IO Bit 0 101: SPI 0 Slave Select 0 110: TTC 0 Wave Out 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_30@0XF8000778 + +31:0 + +3fff + + + +1204 + +MIO Pin 30 Control +
+

+

Register ( slcr )MIO_PIN_31

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_31 + +0XF800077C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 2 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Next +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 16 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 31 (bank 0) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: reserved 100: SDIO 0 IO Bit 1 101: SPI 0 Slave Select 1 110: TTC 0 Clock Intput 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_31@0XF800077C + +31:0 + +3fff + + + +1205 + +MIO Pin 31 Control +
+

+

Register ( slcr )MIO_PIN_32

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_32 + +0XF8000780 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII TxD Bit 3 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 0 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 17 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 32 (bank 1) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: reserved 100: SDIO 0 IO Bit 2 101: SPI 0 Slave Select 2 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_32@0XF8000780 + +31:0 + +3fff + + + +1204 + +MIO Pin 32 Control +
+

+

Register ( slcr )MIO_PIN_33

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_33 + +0XF8000784 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Tx Control +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 1 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 18 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 33 (Bank 1) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: reserved 100: SDIO 0 IO Bit 3 101: SPI 0 MOSI 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_33@0XF8000784 + +31:0 + +3fff + + + +1204 + +MIO Pin 33 Control +
+

+

Register ( slcr )MIO_PIN_34

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_34 + +0XF8000788 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Rx Clock +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 2 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 19 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 34 (bank 1) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: PJTAG TDI 100: SDIO 1 IO Bit 0 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_34@0XF8000788 + +31:0 + +3fff + + + +1204 + +MIO Pin 34 Control +
+

+

Register ( slcr )MIO_PIN_35

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_35 + +0XF800078C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII RxD data Bit 0 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 3 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 20 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 35 (bank 1) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: PJTAG TDO 100: SDIO 1 Command 101: SPI 1 Command 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_35@0XF800078C + +31:0 + +3fff + + + +1204 + +MIO Pin 35 Control +
+

+

Register ( slcr )MIO_PIN_36

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_36 + +0XF8000790 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Data Bit 1 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Clock +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 21 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 36 (bank 1) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: PJTAG TCK 100: SDIO 1 Clock 101: SPI 1 Clock 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_36@0XF8000790 + +31:0 + +3fff + + + +1205 + +MIO Pin 36 Control +
+

+

Register ( slcr )MIO_PIN_37

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_37 + +0XF8000794 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 5 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 22 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 37 (bank 1) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: PJTAG TMS+H2129 100: SDIO 1 IO Bit 1 101: SPI 1 Slave Select 0 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_37@0XF8000794 + +31:0 + +3fff + + + +1204 + +MIO Pin 37 Control +
+

+

Register ( slcr )MIO_PIN_38

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_38 + +0XF8000798 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII RxD Data Bit 3 +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 6 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 23 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 38 (bank 1) 001: CAN 0 Rx 010: I2C 0 Serial Clock 011: SWDT Clock In 100: SDIO 1 IO Bit 2 101: SPI 1 Slave Select 1 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_38@0XF8000798 + +31:0 + +3fff + + + +1204 + +MIO Pin 38 Control +
+

+

Register ( slcr )MIO_PIN_39

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_39 + +0XF800079C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: Ethernet 1 RGMII Rx Control +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 0 ULPI Data Bit 7 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: SRAM/NOR Address Bit 24 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 39 (bank 1) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: SWDT Reset Out 100: SDIO 1 IO Bit 3 101: SPI 1 Slave Select 2 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_39@0XF800079C + +31:0 + +3fff + + + +1204 + +MIO Pin 39 Control +
+

+

Register ( slcr )MIO_PIN_40

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_40 + +0XF80007A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 4 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 40 (bank 1) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: reserved 100: SDIO 0 Clock 101: SPI 0 Serial Clock 110: TTC 1 Wave Out 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_40@0XF80007A0 + +31:0 + +3fff + + + +1280 + +MIO Pin 40 Control +
+

+

Register ( slcr )MIO_PIN_41

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_41 + +0XF80007A4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Direction +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 41 (bank 1) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: reserved 100: SDIO 0 Command 101: SPI 0 MISO 110: TTC 1 Clock Input 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_41@0XF80007A4 + +31:0 + +3fff + + + +1280 + +MIO Pin 41 Control +
+

+

Register ( slcr )MIO_PIN_42

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_42 + +0XF80007A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Stop +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 42 (bank 1) 001: CAN 0 Rx 010: I2C0 Serial Clock 011: reserved 100: SDIO 0 IO Bit 0 101: SPI 0 Data Bit 0 110: TTC 0 Wave Out 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_42@0XF80007A8 + +31:0 + +3fff + + + +1280 + +MIO Pin 42 Control +
+

+

Register ( slcr )MIO_PIN_43

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_43 + +0XF80007AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Next +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 43 (bank 1) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: reserved 100: SDIO 0 IO Bit 1 101: SPI 0 Slave Select 1 110: TTC 0 Clock Intput 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_43@0XF80007AC + +31:0 + +3fff + + + +1280 + +MIO Pin 43 Control +
+

+

Register ( slcr )MIO_PIN_44

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_44 + +0XF80007B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 0 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 44 (bank 1) 001: CAN 1 Tx 010: I2C Serial Clock 011: reserved 100 SDIO 0 IO Bit 2 101: SPI 0 Slave Select 2 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_44@0XF80007B0 + +31:0 + +3fff + + + +1280 + +MIO Pin 44 Control +
+

+

Register ( slcr )MIO_PIN_45

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_45 + +0XF80007B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 1 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 45 (bank 1) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: reserved 100: SDIO 0 IO Bit 3 101: SPI 0 Data Bit 3 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_45@0XF80007B4 + +31:0 + +3fff + + + +1280 + +MIO Pin 45 Control +
+

+

Register ( slcr )MIO_PIN_46

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_46 + +0XF80007B8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_46@0XF80007B8 + +31:0 + +3f01 + + + +1201 + +MIO Pin 46 Control +
+

+

Register ( slcr )MIO_PIN_47

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_47 + +0XF80007BC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_47@0XF80007BC + +31:0 + +3f01 + + + +1201 + +MIO Pin 47 Control +
+

+

Register ( slcr )MIO_PIN_48

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_48 + +0XF80007C0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Clock +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +7 + +e0 + +Level 3 Mux Select 000: GPIO 48 (bank 1) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: PJTAG TCK 100: SDIO 1 Clock 101: SPI 1 Serial Clock 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_48@0XF80007C0 + +31:0 + +3fff + + + +12e0 + +MIO Pin 48 Control +
+

+

Register ( slcr )MIO_PIN_49

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_49 + +0XF80007C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 5 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +7 + +e0 + +Level 3 Mux Select 000: GPIO 49 (bank 1) 001: CAN 1 Rx 010: I2C Serial Data 011: PJTAG TMS 100: SDIO 1 IO Bit 1 101: SPI 1 Select 0 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_49@0XF80007C4 + +31:0 + +3fff + + + +12e1 + +MIO Pin 49 Control +
+

+

Register ( slcr )MIO_PIN_50

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_50 + +0XF80007C8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 6 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 50 (bank 1) 001: Can 0 Rx 010: I2C 0 Serial Clock 011: SWDT Clock Input 100: SDIO 1 IO Bit 2 101: SPI 1 Slave Select 1 110: reserved 111: UART 0 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_50@0XF80007C8 + +31:0 + +3fff + + + +1200 + +MIO Pin 50 Control +
+

+

Register ( slcr )MIO_PIN_51

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_51 + +0XF80007CC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: USB 1 ULPI Data Bit 7 +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 000: GPIO 51 (bank 1) 001: CAN 0 Tx 010: I2C 0 Serial Data 011: SWDT Reset Output 100: SDIO 1 IO Bit 3 101: SPI 1 Slave Select 1 110: reserved 111: UART 0 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_51@0XF80007CC + +31:0 + +3fff + + + +200 + +MIO Pin 51 Control +
+

+

Register ( slcr )MIO_PIN_52

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_52 + +0XF80007D0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 0 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 52 (bank 1) 001: CAN 1 Tx 010: I2C 1 Serial Clock 011: SWDT Clock Input 100: MDIO 0 Clock 101: MDIO 1 Clock 110: reserved 111: UART 1 TxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_52@0XF80007D0 + +31:0 + +3fff + + + +1280 + +MIO Pin 52 Control +
+

+

Register ( slcr )MIO_PIN_53

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_53 + +0XF80007D4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Operates the same as MIO_PIN_00[TRI_ENABLE] +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0: Level 1 Mux 1: reserved +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0: Level 2 Mux 1: reserved +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 00: Level 3 Mux 01: reserved 10: reserved 11: SDIO 1 Power Control output +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 000: GPIO 53 (bank 1) 001: CAN 1 Rx 010: I2C 1 Serial Data 011: SWDT Reset Output 100: MDIO 0 Data 101: MDIO 1 Data 110: reserved 111: UART 1 RxD +
+Speed + +8:8 + +100 + +0 + +0 + +Operates the same as MIO_PIN_00[Speed] +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Operates the same as MIO_PIN_00[IO_Type] +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Operates the same as MIO_PIN_00[PULL_UP] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Operates the same as MIO_PIN_00[DisableRcvr] +
+MIO_PIN_53@0XF80007D4 + +31:0 + +3fff + + + +1280 + +MIO Pin 53 Control +
+

+

Register ( slcr )SD0_WP_CD_SEL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SD0_WP_CD_SEL + +0XF8000830 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SDIO0_WP_SEL + +5:0 + +3f + +2f + +2f + +SDIO 0 WP Select. Values 53:0 select MIO input (any pin except 7 and 8) Values 63:54 select EMIO input +
+SDIO0_CD_SEL + +21:16 + +3f0000 + +2e + +2e0000 + +SDIO 0 CD Select. Values 53:0 select MIO input (any pin except bits 7 and 8) Values 63:54 select EMIO input +
+SD0_WP_CD_SEL@0XF8000830 + +31:0 + +3f003f + + + +2e002f + +SDIO 0 WP CD select +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_peripherals_init_data_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DDRIOB_DATA0 + + +0XF8000B48 + +32 + +RW + +0x000000 + +DDR IOB Config for Data 15:0 +
+ +DDRIOB_DATA1 + + +0XF8000B4C + +32 + +RW + +0x000000 + +DDR IOB Config for Data 31:16 +
+ +DDRIOB_DIFF0 + + +0XF8000B50 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 1:0 +
+ +DDRIOB_DIFF1 + + +0XF8000B54 + +32 + +RW + +0x000000 + +DDR IOB Config for DQS 3:2 +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+ +Baud_rate_divider_reg0 + + +0XE0001034 + +32 + +RW + +0x000000 + +baud rate divider register +
+ +Baud_rate_gen_reg0 + + +0XE0001018 + +32 + +RW + +0x000000 + +Baud rate divider register. +
+ +Control_reg0 + + +0XE0001000 + +32 + +RW + +0x000000 + +UART Control register +
+ +mode_reg0 + + +0XE0001004 + +32 + +RW + +0x000000 + +UART Mode register +
+ +Config_reg + + +0XE000D000 + +32 + +RW + +0x000000 + +SPI configuration register +
+ +CTRL + + +0XF8007000 + +32 + +RW + +0x000000 + +Control Register : This register defines basic control registers. Some of the register bits can be locked by control bits in the LOCK Register 0x004. +
+ +DIRM_1 + + +0XE000A244 + +32 + +RW + +0x000000 + +Direction mode (GPIO Bank1, MIO) +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+ +OEN_1 + + +0XE000A248 + +32 + +RW + +0x000000 + +Output enable (GPIO Bank1, MIO) +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

ps7_peripherals_init_data_2_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

DDR TERM/IBUF_DISABLE_MODE SETTINGS

+

Register ( slcr )DDRIOB_DATA0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA0 + +0XF8000B48 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+DDRIOB_DATA0@0XF8000B48 + +31:0 + +180 + + + +180 + +DDR IOB Config for Data 15:0 +
+

+

Register ( slcr )DDRIOB_DATA1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA1 + +0XF8000B4C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+DDRIOB_DATA1@0XF8000B4C + +31:0 + +180 + + + +180 + +DDR IOB Config for Data 31:16 +
+

+

Register ( slcr )DDRIOB_DIFF0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF0 + +0XF8000B50 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+DDRIOB_DIFF0@0XF8000B50 + +31:0 + +180 + + + +180 + +DDR IOB Config for DQS 1:0 +
+

+

Register ( slcr )DDRIOB_DIFF1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF1 + +0XF8000B54 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0: ibuf is enabled 1: use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0: termination enabled 1: use 'dynamic_dci_ts' control termination +
+DDRIOB_DIFF1@0XF8000B54 + +31:0 + +180 + + + +180 + +DDR IOB Config for DQS 3:2 +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+

SRAM/NOR SET OPMODE

+

UART REGISTERS

+

Register ( slcr )Baud_rate_divider_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Baud_rate_divider_reg0 + +0XE0001034 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+BDIV + +7:0 + +ff + +6 + +6 + +Baud rate divider value: 0 - 3: ignored 4 - 255: Baud rate +
+Baud_rate_divider_reg0@0XE0001034 + +31:0 + +ff + + + +6 + +baud rate divider register +
+

+

Register ( slcr )Baud_rate_gen_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Baud_rate_gen_reg0 + +0XE0001018 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CD + +15:0 + +ffff + +7c + +7c + +Baud Rate Clock Divisor Value: 0: Disables baud_sample 1: Clock divisor bypass 2 - 65535: baud_sample value +
+Baud_rate_gen_reg0@0XE0001018 + +31:0 + +ffff + + + +7c + +Baud rate divider register. +
+

+

Register ( slcr )Control_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Control_reg0 + +0XE0001000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+STPBRK + +8:8 + +100 + +0 + +0 + +Stop transmitter break: 0: start break transmission, 1: stop break transmission. +
+STTBRK + +7:7 + +80 + +0 + +0 + +Start transmitter break: 0: 1: start to transmit a break. Can only be set if STPBRK (Stop transmitter break) is not high. +
+RSTTO + +6:6 + +40 + +0 + +0 + +Restart receiver timeout counter: 0: receiver timeout counter disabled, 1: receiver timeout counter is restarted. +
+TXDIS + +5:5 + +20 + +0 + +0 + +Transmit disable: 0: enable transmitter, 0: disable transmitter +
+TXEN + +4:4 + +10 + +1 + +10 + +Transmit enable: 0: disable transmitter, 1: enable transmitter, provided the TXDIS field is set to 0. +
+RXDIS + +3:3 + +8 + +0 + +0 + +Receive disable: 0: disable, 1: enable +
+RXEN + +2:2 + +4 + +1 + +4 + +Receive enable: 0: disable, 1: enable. When set to one, the receiver logic is enabled, provided the RXDIS field is set to zero. +
+TXRES + +1:1 + +2 + +1 + +2 + +Software reset for Tx data path: 0: 1: transmitter logic is reset and all pending transmitter data is discarded self clear +
+RXRES + +0:0 + +1 + +1 + +1 + +Software reset for Rx data path: 0: 1: receiver logic is reset and all pending receiver data is discarded self clear +
+Control_reg0@0XE0001000 + +31:0 + +1ff + + + +17 + +UART Control register +
+

+

Register ( slcr )mode_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+mode_reg0 + +0XE0001004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IRMODE + +11:11 + +800 + +0 + +0 + +Enable IrDA mode: 0: Default UART mode 1: Enable IrDA mode +
+UCLKEN + +10:10 + +400 + +0 + +0 + +External uart_clk source select: 0: APB clock, pclk 1: a user-defined clock +
+CHMODE + +9:8 + +300 + +0 + +0 + +Channel mode: 00: normal 01: automatic cho 10: local loopback 11: remote loopback +
+NBSTOP + +7:6 + +c0 + +0 + +0 + +Number of stop bits: 00: 1 stop bit 01: 1.5 stop bits 10: 2 stop bits 11: reserved +
+PAR + +5:3 + +38 + +4 + +20 + +Parity type select: 000: even parity 001: odd parity 010: forced to 0 parity (space) 011: forced to 1 parity (mark) 1xx: no parity +
+CHRL + +2:1 + +6 + +0 + +0 + +Character length select: 11: 6 bits 10: 7 bits 0x: 8 bits +
+CLKS + +0:0 + +1 + +0 + +0 + +Clock source select: 0: clock source is uart_clk 1: clock source is uart_clk/8 +
+mode_reg0@0XE0001004 + +31:0 + +fff + + + +20 + +UART Mode register +
+

+

QSPI REGISTERS

+

Register ( slcr )Config_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Config_reg + +0XE000D000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Holdb_dr + +19:19 + +80000 + +1 + +80000 + +Holdb and WPn pins are driven in normal/fast read or dual output/io read by the controller, if set, else external pull-high is required. Both pins are always driven by the controller in quad mode. +
+Config_reg@0XE000D000 + +31:0 + +80000 + + + +80000 + +SPI configuration register +
+

+

PL POWER ON RESET REGISTERS

+

Register ( slcr )CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CTRL + +0XF8007000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PCFG_POR_CNT_4K + +29:29 + +20000000 + +0 + +0 + +This is to indicate to the FPGA fabric what timer to use 0 - use 64K timer 1 - use 4K timer +
+CTRL@0XF8007000 + +31:0 + +20000000 + + + +0 + +Control Register : This register defines basic control registers. Some of the register bits can be locked by control bits in the LOCK Register 0x004. +
+

+

SMC TIMING CALCULATION REGISTER UPDATE

+

NAND SET CYCLE

+

OPMODE

+

DIRECT COMMAND

+

SRAM/NOR CS0 SET CYCLE

+

DIRECT COMMAND

+

NOR CS0 BASE ADDRESS

+

SRAM/NOR CS1 SET CYCLE

+

DIRECT COMMAND

+

NOR CS1 BASE ADDRESS

+

USB RESET

+

USB0 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

Register ( slcr )DIRM_1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DIRM_1 + +0XE000A244 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DIRECTION_1 + +21:0 + +3fffff + +80000 + +80000 + +Operation is the same as DIRM_0[DIRECTION_0] +
+DIRM_1@0XE000A244 + +31:0 + +3fffff + + + +80000 + +Direction mode (GPIO Bank1, MIO) +
+

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Operation is the same as MASK_DATA_0_LSW[MASK_0_LSW] +
+DATA_1_MSW + +5:0 + +3f + +8 + +8 + +Operation is the same as MASK_DATA_0_LSW[DATA_0_LSW] +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370008 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

Register ( slcr )OEN_1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+OEN_1 + +0XE000A248 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+OP_ENABLE_1 + +21:0 + +3fffff + +80000 + +80000 + +Operation is the same as OEN_0[OP_ENABLE_0] +
+OEN_1@0XE000A248 + +31:0 + +3fffff + + + +80000 + +Output enable (GPIO Bank1, MIO) +
+

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Operation is the same as MASK_DATA_0_LSW[MASK_0_LSW] +
+DATA_1_MSW + +5:0 + +3f + +0 + +0 + +Operation is the same as MASK_DATA_0_LSW[DATA_0_LSW] +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370000 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Operation is the same as MASK_DATA_0_LSW[MASK_0_LSW] +
+DATA_1_MSW + +5:0 + +3f + +8 + +8 + +Operation is the same as MASK_DATA_0_LSW[DATA_0_LSW] +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370008 + +Maskable Output Data (GPIO Bank1, MIO, Upper 6bits) +
+

+

USB1 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

ENET RESET

+

ENET0 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

ENET1 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

I2C RESET

+

I2C0 RESET

+

DIR MODE GPIO BANK0

+

DIR MODE GPIO BANK1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE

+

OUTPUT ENABLE

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

I2C1 RESET

+

DIR MODE GPIO BANK0

+

DIR MODE GPIO BANK1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE

+

OUTPUT ENABLE

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

NOR CHIP SELECT

+

DIR MODE BANK 0

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

OUTPUT ENABLE BANK 0

+ +

+

ps7_post_config_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +LVL_SHFTR_EN + + +0XF8000900 + +32 + +RW + +0x000000 + +Level Shifters Enable +
+ +FPGA_RST_CTRL + + +0XF8000240 + +32 + +RW + +0x000000 + +FPGA Software Reset Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_post_config_2_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

ENABLING LEVEL SHIFTER

+

Register ( slcr )LVL_SHFTR_EN

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LVL_SHFTR_EN + +0XF8000900 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+USER_INP_ICT_EN_0 + +1:0 + +3 + +3 + +3 + +Enable level shifters for PSS user inputs to FPGA in FPGA tile 0, drives slcr_fpga_if_ctrl0[1:0]. +
+USER_INP_ICT_EN_1 + +3:2 + +c + +3 + +c + +Enable level shifters for PSS user inputs to FPGA in FPGA tile 1, drives slcr_fpga_if_ctrl1[1:0]. +
+LVL_SHFTR_EN@0XF8000900 + +31:0 + +f + + + +f + +Level Shifters Enable +
+

+

FPGA RESETS TO 0

+

Register ( slcr )FPGA_RST_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA_RST_CTRL + +0XF8000240 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_3 + +31:25 + +fe000000 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+FPGA_ACP_RST + +24:24 + +1000000 + +0 + +0 + +FPGA ACP port soft reset: 0: No reset 1: ACP AXI interface reset output asserted +
+FPGA_AXDS3_RST + +23:23 + +800000 + +0 + +0 + +AXDS3AXI interface soft reset. On assertion of this reset, the AXDS3AXI interface reset output will be asserted. 0: No reset 1: AXDS3AXI interface reset output asserted +
+FPGA_AXDS2_RST + +22:22 + +400000 + +0 + +0 + +AXDS2 AXI interface soft reset. On assertion of this reset, the AXDS2 AXI interface reset output will be asserted. 0: No reset 1: AXDS2 AXI interface reset output asserted +
+FPGA_AXDS1_RST + +21:21 + +200000 + +0 + +0 + +AXDS1 AXI interface soft reset. On assertion of this reset, the AXDS1 AXI interface reset output will be asserted. 0: No reset 1: AXDS1 AXI interface reset output asserted +
+FPGA_AXDS0_RST + +20:20 + +100000 + +0 + +0 + +AXDS0 AXI interface soft reset. On assertion of this reset, the AXDS0 AXI interface reset output will be asserted. 0: No reset 1: AXDS0 AXI interface reset output asserted +
+reserved_2 + +19:18 + +c0000 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+FSSW1_FPGA_RST + +17:17 + +20000 + +0 + +0 + +General purpose FPGA slave interface 1 soft reset. On assertion of this reset, the FPGA slave interface 1 reset will be asserted. 0: No reset 1: FPGA slave interface 1 reset is asserted +
+FSSW0_FPGA_RST + +16:16 + +10000 + +0 + +0 + +General purpose FPGA slave interface 0 soft reset. On assertion of this reset, the FPGA slave interface 0 reset will be asserted. 0: No reset 1: FPGA slave interface 0 reset is asserted +
+reserved_1 + +15:14 + +c000 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+FPGA_FMSW1_RST + +13:13 + +2000 + +0 + +0 + +General purpose FPGA master interface: 1: soft reset. On assertion of this reset, the FPGA master interface 1 reset will be asserted. 0: No reset 1: FPGA master interface 1 reset is asserted +
+FPGA_FMSW0_RST + +12:12 + +1000 + +0 + +0 + +General purpose FPGA master interface 0 soft reset. On assertion of this reset, the FPGA master interface 0 reset will be asserted. 0: No reset 1: FPGA master interface 0 reset is asserted. +
+FPGA_DMA3_RST + +11:11 + +800 + +0 + +0 + +FPGA DMA 3 peripheral request soft reset. On assertion of this reset, the FPGA DMA 3 peripheral request reset output will be asserted. 0: No reset 1: FPGA DMA 3 peripheral request reset output asserted +
+FPGA_DMA2_RST + +10:10 + +400 + +0 + +0 + +FPGA DMA 2 peripheral request soft reset. On assertion of this reset, the FPGA DMA 2 peripheral request reset output will be asserted. 0: No reset 1: FPGA DMA 2 peripheral request reset output asserted +
+FPGA_DMA1_RST + +9:9 + +200 + +0 + +0 + +FPGA DMA 1 peripheral request soft reset. On assertion of this reset, the FPGA DMA 1 peripheral request reset output will be asserted. 0: No reset 1: FPGA DMA 1 peripheral request reset output asserted +
+FPGA_DMA0_RST + +8:8 + +100 + +0 + +0 + +FPGA DMA 0 peripheral request soft reset. On assertion of this reset, the FPGA DMA 0 peripheral request reset output will be asserted. 0: No reset 1: FPGA DMA 0 peripheral request reset output asserted +
+reserved + +7:4 + +f0 + +0 + +0 + +Reserved. Writes are ignored, read data is zero. +
+FPGA3_OUT_RST + +3:3 + +8 + +0 + +0 + +FPGA3software reset. On assertion of this reset, the FPGA 3 top level reset output will be asserted. 0: No reset 1: FPGA 3 top level reset output asserted +
+FPGA2_OUT_RST + +2:2 + +4 + +0 + +0 + +FPGA2 software reset. On assertion of this reset, the FPGA 2 top level reset output will be asserted. 0: No reset 1: FPGA 2 top level reset output asserted +
+FPGA1_OUT_RST + +1:1 + +2 + +0 + +0 + +FPGA1 software reset. On assertion of this reset, the FPGA 1 top level reset output will be asserted. 0: No reset 1: FPGA 1 top level reset output asserted +
+FPGA0_OUT_RST + +0:0 + +1 + +0 + +0 + +FPGA0 software reset. On assertion of this reset, the FPGA 0 top level reset output will be asserted. 0: No reset 1: FPGA 0 top level reset output asserted +
+FPGA_RST_CTRL@0XF8000240 + +31:0 + +ffffffff + + + +0 + +FPGA Software Reset Control +
+

+

AFI REGISTERS

+

AFI0 REGISTERS

+

AFI1 REGISTERS

+

AFI2 REGISTERS

+

AFI3 REGISTERS

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_debug_2_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +LAR + + +0XF8898FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+ +LAR + + +0XF8899FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+ +LAR + + +0XF8809FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+

+

ps7_debug_2_0

+ + + + + + + + + +

CROSS TRIGGER CONFIGURATIONS

+

UNLOCKING CTI REGISTERS

+

Register ( slcr )LAR

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8898FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8898FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

Register ( slcr )LAR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8899FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8899FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

Register ( slcr )LAR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8809FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8809FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

ENABLING CTI MODULES AND CHANNELS

+

MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS

+ +

+ + + + +

ps7_pll_init_data_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +ARM_PLL_CFG + + +0XF8000110 + +32 + +RW + +0x000000 + +ARM PLL Configuration +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_PLL_CTRL + + +0XF8000100 + +32 + +RW + +0x000000 + +ARM PLL Control +
+ +ARM_CLK_CTRL + + +0XF8000120 + +32 + +RW + +0x000000 + +CORTEX A9 Clock Control +
+ +DDR_PLL_CFG + + +0XF8000114 + +32 + +RW + +0x000000 + +DDR PLL Configuration +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_PLL_CTRL + + +0XF8000104 + +32 + +RW + +0x000000 + +DDR PLL Control +
+ +DDR_CLK_CTRL + + +0XF8000124 + +32 + +RW + +0x000000 + +DDR Clock Control +
+ +IO_PLL_CFG + + +0XF8000118 + +32 + +RW + +0x000000 + +IO PLL Configuration +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +IO_PLL_CTRL + + +0XF8000108 + +32 + +RW + +0x000000 + +IO PLL Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_pll_init_data_1_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register always returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

PLL SLCR REGISTERS

+

ARM PLL INIT

+

Register ( slcr )ARM_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CFG + +0XF8000110 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +2 + +20 + +Drives the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drives the PLL_CP[3:0] input of the PLL to set the PLL charge pump control +
+LOCK_CNT + +21:12 + +3ff000 + +fa + +fa000 + +Drives the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned withth a certain window before syaing locked. +
+ARM_PLL_CFG@0XF8000110 + +31:0 + +3ffff0 + + + +fa220 + +ARM PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +28 + +28000 + +Provides the feedback divisor for the PLL. NOTE: Before changing this value the PLL must first be bypassed and then put into powerdown or reset state. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +7f000 + + + +28000 + +ARM PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +Overides control of the PLL bypass function within the clock controller to force into bypass state. 0 - PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1 - PLL forced to be bypassed. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +10 + + + +10 + +ARM PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +Drives the RESET input of the PLL. 0 - PLL out of reset; 1 - PLL held in reset. Remember that after reset, the user should program the PLLs and ensure that the serviced bit below is asserted before using. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +1 + + + +1 + +ARM PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +Drives the RESET input of the PLL. 0 - PLL out of reset; 1 - PLL held in reset. Remember that after reset, the user should program the PLLs and ensure that the serviced bit below is asserted before using. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +1 + + + +0 + +ARM PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+ARM_PLL_LOCK + +0:0 + +1 + +1 + +1 + +ARM PLL lock status. 0 - ARM PLL out of lock. 1 - ARM PLL in lock. Note: Reset condition is actually 0, but will always be 1 by the time this register can be read if PLL's are being used. +
+PLL_STATUS@0XF800010C + +31:0 + +1 + + + +1 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )ARM_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_PLL_CTRL + +0XF8000100 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +Overides control of the PLL bypass function within the clock controller to force into bypass state. 0 - PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1 - PLL forced to be bypassed. +
+ARM_PLL_CTRL@0XF8000100 + +31:0 + +10 + + + +0 + +ARM PLL Control +
+

+

Register ( slcr )ARM_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ARM_CLK_CTRL + +0XF8000120 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is CPU PLL. 10 - Source for generated clock is DDR divided clock. 11 - Source for generated clock is IO PLL +
+DIVISOR + +13:8 + +3f00 + +2 + +200 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+CPU_6OR4XCLKACT + +24:24 + +1000000 + +1 + +1000000 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CPU_3OR2XCLKACT + +25:25 + +2000000 + +1 + +2000000 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CPU_2XCLKACT + +26:26 + +4000000 + +1 + +4000000 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CPU_1XCLKACT + +27:27 + +8000000 + +1 + +8000000 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CPU_PERI_CLKACT + +28:28 + +10000000 + +1 + +10000000 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+ARM_CLK_CTRL@0XF8000120 + +31:0 + +1f003f30 + + + +1f000200 + +CORTEX A9 Clock Control +
+

+

DDR PLL INIT

+

Register ( slcr )DDR_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CFG + +0XF8000114 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +2 + +20 + +Drives the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drives the PLL_CP[3:0] input of the PLL to set the PLL charge pump control +
+LOCK_CNT + +21:12 + +3ff000 + +12c + +12c000 + +Drives the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned withth a certain window before syaing locked. +
+DDR_PLL_CFG@0XF8000114 + +31:0 + +3ffff0 + + + +12c220 + +DDR PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +20 + +20000 + +Provides the feedback divisor for the PLL. NOTE: Before changing this value the PLL must first be bypassed and then put into powerdown or reset state. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +7f000 + + + +20000 + +DDR PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +Overides control of the PLL bypass function within the clock controller to force into bypass state. 0 - PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1 - PLL forced to be bypassed +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +10 + + + +10 + +DDR PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +Drives the RESET input of the PLL. 0 - PLL out of reset. 1 - PLL held in reset. Remember that after reset, the user should program the PLLs and ensure that the serviced bit below is asserted before using. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +1 + + + +1 + +DDR PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +Drives the RESET input of the PLL. 0 - PLL out of reset. 1 - PLL held in reset. Remember that after reset, the user should program the PLLs and ensure that the serviced bit below is asserted before using. +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +1 + + + +0 + +DDR PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DDR_PLL_LOCK + +1:1 + +2 + +1 + +2 + +DDR PLL lock status. 0 - DDR PLL out of lock. 1 - DDR PLL in lock. Note: Reset condition is actually 0, but will always be 1 by the time this register can be read if PLL's are being used. +
+PLL_STATUS@0XF800010C + +31:0 + +2 + + + +2 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )DDR_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_PLL_CTRL + +0XF8000104 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +Overides control of the PLL bypass function within the clock controller to force into bypass state. 0 - PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1 - PLL forced to be bypassed +
+DDR_PLL_CTRL@0XF8000104 + +31:0 + +10 + + + +0 + +DDR PLL Control +
+

+

Register ( slcr )DDR_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDR_CLK_CTRL + +0XF8000124 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DDR_3XCLKACT + +0:0 + +1 + +1 + +1 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+DDR_2XCLKACT + +1:1 + +2 + +1 + +2 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+DDR_3XCLK_DIVISOR + +25:20 + +3f00000 + +2 + +200000 + +Divisor value for the ddr_3xclk +
+DDR_2XCLK_DIVISOR + +31:26 + +fc000000 + +3 + +c000000 + +Divisor value for the ddr_2xclk (does not have to be 2/3 speed of ddr_3xclk) +
+DDR_CLK_CTRL@0XF8000124 + +31:0 + +fff00003 + + + +c200003 + +DDR Clock Control +
+

+

IO PLL INIT

+

Register ( slcr )IO_PLL_CFG

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CFG + +0XF8000118 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RES + +7:4 + +f0 + +c + +c0 + +Drives the PLL_RES[3:0] input of the PLL to set the PLL loop filter resistor control +
+PLL_CP + +11:8 + +f00 + +2 + +200 + +Drives the PLL_CP[3:0] input of the PLL to set the PLL charge pump control +
+LOCK_CNT + +21:12 + +3ff000 + +145 + +145000 + +Drives the LOCK_CNT[9:0] input of the PLL to set the number of clock cycles the PLL needs to have clkref and clkfb aligned withth a certain window before syaing locked. +
+IO_PLL_CFG@0XF8000118 + +31:0 + +3ffff0 + + + +1452c0 + +IO PLL Configuration +
+

+

UPDATE FB_DIV

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_FDIV + +18:12 + +7f000 + +1e + +1e000 + +Provides the feedback divisor for the PLL. NOTE: Before changing this value the PLL must first be bypassed and then put into powerdown or reset state. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +7f000 + + + +1e000 + +IO PLL Control +
+

+

BY PASS PLL

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +1 + +10 + +Overides control of the PLL bypass function within the clock controller to force into bypass state. 0 - PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1 - PLL forced to be bypassed +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +10 + + + +10 + +IO PLL Control +
+

+

ASSERT RESET

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +1 + +1 + +Drives the RESET input of the PLL. 0 - PLL out of reset. 1 - PLL held in reset. Remember that after reset, the user should program the PLLs and ensure that the serviced bit below is asserted before using. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +1 + + + +1 + +IO PLL Control +
+

+

DEASSERT RESET

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_RESET + +0:0 + +1 + +0 + +0 + +Drives the RESET input of the PLL. 0 - PLL out of reset. 1 - PLL held in reset. Remember that after reset, the user should program the PLLs and ensure that the serviced bit below is asserted before using. +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +1 + + + +0 + +IO PLL Control +
+

+

CHECK PLL STATUS

+

Register ( slcr )PLL_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PLL_STATUS + +0XF800010C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IO_PLL_LOCK + +2:2 + +4 + +1 + +4 + +IO PLL lock status. 0 - IO PLL out of lock. 1 - IO PLL in lock. Note: Reset condition is actually 0, but will always be 1 by the time this register can be read if PLL's are being used. +
+PLL_STATUS@0XF800010C + +31:0 + +4 + + + +4 + +tobe +
+

+

REMOVE PLL BY PASS

+

Register ( slcr )IO_PLL_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+IO_PLL_CTRL + +0XF8000108 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PLL_BYPASS_FORCE + +4:4 + +10 + +0 + +0 + +Overides control of the PLL bypass function within the clock controller to force into bypass state. 0 - PLL not forced to be bypassed (may still be bypassed through bootstrap pin). 1 - PLL forced to be bypassed +
+IO_PLL_CTRL@0XF8000108 + +31:0 + +10 + + + +0 + +IO PLL Control +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register always returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_clock_init_data_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DCI_CLK_CTRL + + +0XF8000128 + +32 + +RW + +0x000000 + +DCI clock control +
+ +GEM0_RCLK_CTRL + + +0XF8000138 + +32 + +RW + +0x000000 + +Gigabit Ethernet MAC 0 RX Clock Control +
+ +GEM0_CLK_CTRL + + +0XF8000140 + +32 + +RW + +0x000000 + +Gigabit Ethernet MAC 0 Ref Clock Control +
+ +LQSPI_CLK_CTRL + + +0XF800014C + +32 + +RW + +0x000000 + +Linear Quad-SPI Reference Clock Control +
+ +SDIO_CLK_CTRL + + +0XF8000150 + +32 + +RW + +0x000000 + +SDIO Reference Clock Control +
+ +UART_CLK_CTRL + + +0XF8000154 + +32 + +RW + +0x000000 + +UART Reference Clock Control +
+ +CAN_CLK_CTRL + + +0XF800015C + +32 + +RW + +0x000000 + +CAN Reference Clock Control +
+ +CAN_MIOCLK_CTRL + + +0XF8000160 + +32 + +RW + +0x000000 + +CAN MIO Clock Control +
+ +PCAP_CLK_CTRL + + +0XF8000168 + +32 + +RW + +0x000000 + +PCAP 2X Clock Contol +
+ +FPGA0_CLK_CTRL + + +0XF8000170 + +32 + +RW + +0x000000 + +FPGA 0 Output Clock Control +
+ +FPGA1_CLK_CTRL + + +0XF8000180 + +32 + +RW + +0x000000 + +FPGA 1 Output Clock Control +
+ +FPGA2_CLK_CTRL + + +0XF8000190 + +32 + +RW + +0x000000 + +FPGA 2 Output Clock Control +
+ +FPGA3_CLK_CTRL + + +0XF80001A0 + +32 + +RW + +0x000000 + +FPGA 3 Output Clock Control +
+ +CLK_621_TRUE + + +0XF80001C4 + +32 + +RW + +0x000000 + +6:2:1 ratio clock, if set +
+ +APER_CLK_CTRL + + +0XF800012C + +32 + +RW + +0x000000 + +AMBA Peripheral Clock Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_clock_init_data_1_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register always returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

CLOCK CONTROL SLCR REGISTERS

+

Register ( slcr )DCI_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DCI_CLK_CTRL + +0XF8000128 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+DIVISOR0 + +13:8 + +3f00 + +23 + +2300 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+DIVISOR1 + +25:20 + +3f00000 + +3 + +300000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+DCI_CLK_CTRL@0XF8000128 + +31:0 + +3f03f01 + + + +302301 + +DCI clock control +
+

+

Register ( slcr )GEM0_RCLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+GEM0_RCLK_CTRL + +0XF8000138 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SRCSEL + +4:4 + +10 + +0 + +0 + +Selects the source used to generate the clock. 0 - Source for generated clock is GEM 0 MIO RX clock. 1 - Source for generated clock is GEM 0 FMIO RX clock. +
+GEM0_RCLK_CTRL@0XF8000138 + +31:0 + +11 + + + +1 + +Gigabit Ethernet MAC 0 RX Clock Control +
+

+

Register ( slcr )GEM0_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+GEM0_CLK_CTRL + +0XF8000140 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SRCSEL + +6:4 + +70 + +0 + +0 + +Selects the source used to generate the clock. 1xx - Source for generated clock is Ethernet 0 FMIO clock. 00x - Source for generated clock is IO PLL. 010 - Source for generated clock is ARM PLL. 011 - Source for generated clock is DDR PLL +
+DIVISOR + +13:8 + +3f00 + +8 + +800 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+GEM0_CLK_CTRL@0XF8000140 + +31:0 + +3f03f71 + + + +100801 + +Gigabit Ethernet MAC 0 Ref Clock Control +
+

+

Register ( slcr )LQSPI_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LQSPI_CLK_CTRL + +0XF800014C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+LQSPI_CLK_CTRL@0XF800014C + +31:0 + +3f31 + + + +501 + +Linear Quad-SPI Reference Clock Control +
+

+

Register ( slcr )SDIO_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SDIO_CLK_CTRL + +0XF8000150 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +1 + +1 + +SDIO 0 Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CLKACT1 + +1:1 + +2 + +0 + +0 + +SDIO 1 Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+SDIO_CLK_CTRL@0XF8000150 + +31:0 + +3f33 + + + +a01 + +SDIO Reference Clock Control +
+

+

Register ( slcr )UART_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+UART_CLK_CTRL + +0XF8000154 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +0 + +0 + +UART 0 reference clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CLKACT1 + +1:1 + +2 + +1 + +2 + +UART 1 reference clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+UART_CLK_CTRL@0XF8000154 + +31:0 + +3f33 + + + +a02 + +UART Reference Clock Control +
+

+

Register ( slcr )CAN_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CAN_CLK_CTRL + +0XF800015C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT0 + +0:0 + +1 + +1 + +1 + +CAN 0 Reference Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CLKACT1 + +1:1 + +2 + +0 + +0 + +CAN 1 Reference Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+CAN_CLK_CTRL@0XF800015C + +31:0 + +3f03f33 + + + +100a01 + +CAN Reference Clock Control +
+

+

Register ( slcr )CAN_MIOCLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CAN_MIOCLK_CTRL + +0XF8000160 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CAN0_MUX + +5:0 + +3f + +0 + +0 + +CAN0 mux selection for MIO. Setting this to zero will select MIO[0] as the clock source. Only values 0-53 are valid. +
+CAN0_REF_SEL + +6:6 + +40 + +0 + +0 + +CAN 0 Reference Clock selection. 0 - From internal PLL. 1 - From MIO based on the next field +
+CAN1_MUX + +21:16 + +3f0000 + +0 + +0 + +CAN1 mux selection for MIO. Setting this to zero will select MIO[0] as the clock source. Only values 0-53 are valid. +
+CAN1_REF_SEL + +22:22 + +400000 + +0 + +0 + +CAN1 Reference Clock selection. 0 - From internal PLL. 1 - From MIO based on the next field +
+CAN_MIOCLK_CTRL@0XF8000160 + +31:0 + +7f007f + + + +0 + +CAN MIO Clock Control +
+

+

TRACE CLOCK

+

Register ( slcr )PCAP_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PCAP_CLK_CTRL + +0XF8000168 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLKACT + +0:0 + +1 + +1 + +1 + +Clock active 0 - Clock is disabled 1 - Clock is enabled +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL +
+DIVISOR + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. +
+PCAP_CLK_CTRL@0XF8000168 + +31:0 + +3f31 + + + +501 + +PCAP 2X Clock Contol +
+

+

Register ( slcr )FPGA0_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA0_CLK_CTRL + +0XF8000170 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +6 + +600 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+FPGA0_CLK_CTRL@0XF8000170 + +31:0 + +3f03f30 + + + +100600 + +FPGA 0 Output Clock Control +
+

+

Register ( slcr )FPGA1_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA1_CLK_CTRL + +0XF8000180 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +14 + +1400 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+FPGA1_CLK_CTRL@0XF8000180 + +31:0 + +3f03f30 + + + +101400 + +FPGA 1 Output Clock Control +
+

+

Register ( slcr )FPGA2_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA2_CLK_CTRL + +0XF8000190 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +a + +a00 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+FPGA2_CLK_CTRL@0XF8000190 + +31:0 + +3f03f30 + + + +100a00 + +FPGA 2 Output Clock Control +
+

+

Register ( slcr )FPGA3_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA3_CLK_CTRL + +0XF80001A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SRCSEL + +5:4 + +30 + +0 + +0 + +Selects the source used to generate the clock. 0x - Source for generated clock is IO PLL. 10 - Source for generated clock is ARM PLL. 11 - Source for generated clock is DDR PLL. +
+DIVISOR0 + +13:8 + +3f00 + +5 + +500 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. First cascade divider +
+DIVISOR1 + +25:20 + +3f00000 + +1 + +100000 + +Provides the divisor used to divide the source clock to generate the required generated clock frequency. Second cascade divider +
+FPGA3_CLK_CTRL@0XF80001A0 + +31:0 + +3f03f30 + + + +100500 + +FPGA 3 Output Clock Control +
+

+

Register ( slcr )CLK_621_TRUE

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CLK_621_TRUE + +0XF80001C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CLK_621_TRUE + +0:0 + +1 + +1 + +1 + +Enable the 6:2:1 mode. 1 for 6:3:2:1. 0 for 4:2:2:1. +
+CLK_621_TRUE@0XF80001C4 + +31:0 + +1 + + + +1 + +6:2:1 ratio clock, if set +
+

+

Register ( slcr )APER_CLK_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+APER_CLK_CTRL + +0XF800012C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DMA_CPU_2XCLKACT + +0:0 + +1 + +1 + +1 + +DMA 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+USB0_CPU_1XCLKACT + +2:2 + +4 + +1 + +4 + +USB 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+USB1_CPU_1XCLKACT + +3:3 + +8 + +1 + +8 + +USB 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+GEM0_CPU_1XCLKACT + +6:6 + +40 + +1 + +40 + +Gigabit Ethernet MAC 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+GEM1_CPU_1XCLKACT + +7:7 + +80 + +0 + +0 + +Gigabit Ethernet MAC 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SDI0_CPU_1XCLKACT + +10:10 + +400 + +1 + +400 + +SDIO0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SDI1_CPU_1XCLKACT + +11:11 + +800 + +0 + +0 + +SDIO 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SPI0_CPU_1XCLKACT + +14:14 + +4000 + +0 + +0 + +SPI 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SPI1_CPU_1XCLKACT + +15:15 + +8000 + +0 + +0 + +SPI 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CAN0_CPU_1XCLKACT + +16:16 + +10000 + +1 + +10000 + +CAN 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+CAN1_CPU_1XCLKACT + +17:17 + +20000 + +0 + +0 + +CAN 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+I2C0_CPU_1XCLKACT + +18:18 + +40000 + +1 + +40000 + +I2C 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+I2C1_CPU_1XCLKACT + +19:19 + +80000 + +1 + +80000 + +I2C 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+UART0_CPU_1XCLKACT + +20:20 + +100000 + +0 + +0 + +UART 0 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+UART1_CPU_1XCLKACT + +21:21 + +200000 + +1 + +200000 + +UART 1 AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+GPIO_CPU_1XCLKACT + +22:22 + +400000 + +1 + +400000 + +GPIO AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+LQSPI_CPU_1XCLKACT + +23:23 + +800000 + +1 + +800000 + +LQSPI AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+SMC_CPU_1XCLKACT + +24:24 + +1000000 + +1 + +1000000 + +SMC AMBA Clock active. 0 - Clock is disabled. 1 - Clock is enabled. +
+APER_CLK_CTRL@0XF800012C + +31:0 + +1ffcccd + + + +1ed044d + +AMBA Peripheral Clock Control +
+

+

THIS SHOULD BE BLANK

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register always returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_ddr_init_data_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +ddrc_ctrl + + +0XF8006000 + +32 + +RW + +0x000000 + +DDRC Control Register +
+ +Two_rank_cfg + + +0XF8006004 + +32 + +RW + +0x000000 + +Two rank configuration register +
+ +HPR_reg + + +0XF8006008 + +32 + +RW + +0x000000 + +HPR Queue control register +
+ +LPR_reg + + +0XF800600C + +32 + +RW + +0x000000 + +LPR Queue control register +
+ +WR_reg + + +0XF8006010 + +32 + +RW + +0x000000 + +WR Queue control register +
+ +DRAM_param_reg0 + + +0XF8006014 + +32 + +RW + +0x000000 + +DRAM Parameters register 0 +
+ +DRAM_param_reg1 + + +0XF8006018 + +32 + +RW + +0x000000 + +DRAM Parameters register 1 +
+ +DRAM_param_reg2 + + +0XF800601C + +32 + +RW + +0x000000 + +DRAM Parameters register 2 +
+ +DRAM_param_reg3 + + +0XF8006020 + +32 + +RW + +0x000000 + +DRAM Parameters register 3 +
+ +DRAM_param_reg4 + + +0XF8006024 + +32 + +RW + +0x000000 + +DRAM Parameters register 4 +
+ +DRAM_init_param + + +0XF8006028 + +32 + +RW + +0x000000 + +DRAM initialization parameters register +
+ +DRAM_EMR_reg + + +0XF800602C + +32 + +RW + +0x000000 + +DRAM EMR2, EMR3 access register +
+ +DRAM_EMR_MR_reg + + +0XF8006030 + +32 + +RW + +0x000000 + +DRAM EMR, MR access register +
+ +DRAM_burst8_rdwr + + +0XF8006034 + +32 + +RW + +0x000000 + +DRAM burst 8 read/write register +
+ +DRAM_disable_DQ + + +0XF8006038 + +32 + +RW + +0x000000 + +DRAM Disable DQ register +
+ +DRAM_addr_map_bank + + +0XF800603C + +32 + +RW + +0x000000 + +Selects the address bits used as DRAM bank address bits +
+ +DRAM_addr_map_col + + +0XF8006040 + +32 + +RW + +0x000000 + +Selects the address bits used as DRAM column address bits +
+ +DRAM_addr_map_row + + +0XF8006044 + +32 + +RW + +0x000000 + +Selects the address bits used as DRAM row address bits +
+ +DRAM_ODT_reg + + +0XF8006048 + +32 + +RW + +0x000000 + +DRAM ODT register +
+ +phy_cmd_timeout_rddata_cpt + + +0XF8006050 + +32 + +RW + +0x000000 + +PHY command time out and read data capture FIFO register +
+ +DLL_calib + + +0XF8006058 + +32 + +RW + +0x000000 + +DLL calibration register +
+ +ODT_delay_hold + + +0XF800605C + +32 + +RW + +0x000000 + +ODT delay and ODT hold register +
+ +ctrl_reg1 + + +0XF8006060 + +32 + +RW + +0x000000 + +Controller register 1 +
+ +ctrl_reg2 + + +0XF8006064 + +32 + +RW + +0x000000 + +Controller register 2 +
+ +ctrl_reg3 + + +0XF8006068 + +32 + +RW + +0x000000 + +Controller register 3 +
+ +ctrl_reg4 + + +0XF800606C + +32 + +RW + +0x000000 + +Controller register 4 +
+ +CHE_REFRESH_TIMER01 + + +0XF80060A0 + +32 + +RW + +0x000000 + +CHE_REFRESH_TIMER01 +
+ +CHE_T_ZQ + + +0XF80060A4 + +32 + +RW + +0x000000 + +ZQ parameters register +
+ +CHE_T_ZQ_Short_Interval_Reg + + +0XF80060A8 + +32 + +RW + +0x000000 + +Misc parameters register +
+ +deep_pwrdwn_reg + + +0XF80060AC + +32 + +RW + +0x000000 + +Deep powerdown register +
+ +reg_2c + + +0XF80060B0 + +32 + +RW + +0x000000 + +Training control register +
+ +reg_2d + + +0XF80060B4 + +32 + +RW + +0x000000 + +Misc Debug register +
+ +dfi_timing + + +0XF80060B8 + +32 + +RW + +0x000000 + +DFI timing register +
+ +CHE_ECC_CONTROL_REG_OFFSET + + +0XF80060C4 + +32 + +RW + +0x000000 + +ECC error clear register +
+ +CHE_ECC_CONTROL_REG_OFFSET + + +0XF80060C4 + +32 + +RW + +0x000000 + +ECC error clear register +
+ +CHE_CORR_ECC_LOG_REG_OFFSET + + +0XF80060C8 + +32 + +RW + +0x000000 + +ECC error correction register +
+ +CHE_UNCORR_ECC_LOG_REG_OFFSET + + +0XF80060DC + +32 + +RW + +0x000000 + +ECC unrecoverable error status register +
+ +CHE_ECC_STATS_REG_OFFSET + + +0XF80060F0 + +32 + +RW + +0x000000 + +ECC error count register +
+ +ECC_scrub + + +0XF80060F4 + +32 + +RW + +0x000000 + +ECC mode/scrub register +
+ +phy_rcvr_enable + + +0XF8006114 + +32 + +RW + +0x000000 + +Phy receiver enable register +
+ +PHY_Config + + +0XF8006118 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config + + +0XF800611C + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config + + +0XF8006120 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +PHY_Config + + +0XF8006124 + +32 + +RW + +0x000000 + +PHY configuration register for data slice 0. +
+ +phy_init_ratio + + +0XF800612C + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio + + +0XF8006130 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio + + +0XF8006134 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_init_ratio + + +0XF8006138 + +32 + +RW + +0x000000 + +PHY init ratio register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF8006140 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF8006144 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF8006148 + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_rd_dqs_cfg + + +0XF800614C + +32 + +RW + +0x000000 + +PHY read DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF8006154 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF8006158 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF800615C + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_wr_dqs_cfg + + +0XF8006160 + +32 + +RW + +0x000000 + +PHY write DQS configuration register for data slice 0. +
+ +phy_we_cfg + + +0XF8006168 + +32 + +RW + +0x000000 + +PHY fifo write enable configuration register for data slice 0. +
+ +phy_we_cfg + + +0XF800616C + +32 + +RW + +0x000000 + +PHY fifo write enable configuration register for data slice 0. +
+ +phy_we_cfg + + +0XF8006170 + +32 + +RW + +0x000000 + +PHY fifo write enable configuration register for data slice 0. +
+ +phy_we_cfg + + +0XF8006174 + +32 + +RW + +0x000000 + +PHY fifo write enable configuration register for data slice 0. +
+ +wr_data_slv + + +0XF800617C + +32 + +RW + +0x000000 + +PHY write data slave ratio configuration register for data slice 0. +
+ +wr_data_slv + + +0XF8006180 + +32 + +RW + +0x000000 + +PHY write data slave ratio configuration register for data slice 0. +
+ +wr_data_slv + + +0XF8006184 + +32 + +RW + +0x000000 + +PHY write data slave ratio configuration register for data slice 0. +
+ +wr_data_slv + + +0XF8006188 + +32 + +RW + +0x000000 + +PHY write data slave ratio configuration register for data slice 0. +
+ +reg_64 + + +0XF8006190 + +32 + +RW + +0x000000 + +Training control register (2) +
+ +reg_65 + + +0XF8006194 + +32 + +RW + +0x000000 + +Training control register (3) +
+ +page_mask + + +0XF8006204 + +32 + +RW + +0x000000 + +Page mask register +
+ +axi_priority_wr_port + + +0XF8006208 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port + + +0XF800620C + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port + + +0XF8006210 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_wr_port + + +0XF8006214 + +32 + +RW + +0x000000 + +AXI Priority control for write port 0. +
+ +axi_priority_rd_port + + +0XF8006218 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port + + +0XF800621C + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port + + +0XF8006220 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +axi_priority_rd_port + + +0XF8006224 + +32 + +RW + +0x000000 + +AXI Priority control for read port 0. +
+ +lpddr_ctrl0 + + +0XF80062A8 + +32 + +RW + +0x000000 + +LPDDR2 Control 0 Register +
+ +lpddr_ctrl1 + + +0XF80062AC + +32 + +RW + +0x000000 + +LPDDR2 Control 1 Register +
+ +lpddr_ctrl2 + + +0XF80062B0 + +32 + +RW + +0x000000 + +LPDDR2 Control 2 Register +
+ +lpddr_ctrl3 + + +0XF80062B4 + +32 + +RW + +0x000000 + +LPDDR2 Control 3 Register +
+ +ddrc_ctrl + + +0XF8006000 + +32 + +RW + +0x000000 + +DDRC Control Register +
+

+

ps7_ddr_init_data_1_0

+ + + + + + + + + +

DDR INITIALIZATION

+

LOCK DDR

+

Register ( slcr )ddrc_ctrl

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ddrc_ctrl + +0XF8006000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_soft_rstb + +0:0 + +1 + +0 + +0 + +Active low soft reset. 0 = Resets the controller 1 = Takes the controller out of reset Note: Controller must be taken out of reset only after all other registers have been programmed. +
+reg_ddrc_powerdown_en + +1:1 + +2 + +0 + +0 + +Controller power down control. 0 = DDRC powerdown disabled 1 = the controller goes into power down after a programmable number of cycles 'Maximum idle clocks before power down' (reg_ddrc_powerdown_to_x32). Note: This register bit may be reprogrammed during the course of normal operation. +
+reg_ddrc_data_bus_width + +3:2 + +c + +0 + +0 + +DDR bus width control 00 = 32 bit DDR bus 01 = 16 bit DDR bus 1x = reserved +
+reg_ddrc_burst8_refresh + +6:4 + +70 + +0 + +0 + +Refresh timeout register. Programmed value plus one will be the number of refresh timeouts that will be allowed to accumulate before traffic is blocked and the refreshes are forced to execute. Closing pages to perform a refresh is a one-time penalty that must be paid for each group of refreshes; therefore, performing refreshes in a burst reduces the per-refresh penalty of these page closings. Higher numbers for burst_of_N_refresh slightly increases utilization; lower numbers decreases the worst-case latency associated with refreshes. 0 = single refresh 1 = burst-of-2 . 7 = burst-of-8 refresh +
+reg_ddrc_rdwr_idle_gap + +13:7 + +3f80 + +1 + +80 + +When the preferred transaction store is empty for this many clock cycles, switch to the alternate transaction store if it is non-empty. The read transaction store (both high and low priority) is the default preferred transaction store and the write transaction store is the alternate store. When 'Prefer write over read' is set this is reversed. +
+reg_ddrc_dis_rd_bypass + +14:14 + +4000 + +0 + +0 + +Only present in designs supporting read bypass. For Debug only. 0 = Do not disable bypass path for high priority read page hits. 1 = disable bypass path for high priority read page hits. +
+reg_ddrc_dis_act_bypass + +15:15 + +8000 + +0 + +0 + +Only present in designs supporting activate bypass. For Debug only. 0 = Do not disable bypass path for high priority read activates. 1 = disable bypass path for high priority read activates. +
+reg_ddrc_dis_auto_refresh + +16:16 + +10000 + +0 + +0 + +Disable auto-refresh. 0 = do not disable auto-refresh generated by the controller. This input is changeable on the fly. 1 = disable auto-refresh generated by the controller. This input is changeable on the fly. Note: When this transitions from 0 to 1, any pending refreshes will be immediately scheduled by the controller. +
+ddrc_ctrl@0XF8006000 + +31:0 + +1ffff + + + +80 + +DDRC Control Register +
+

+

Register ( slcr )Two_rank_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Two_rank_cfg + +0XF8006004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_rfc_nom_x32 + +11:0 + +fff + +81 + +81 + +tREFI - Average time between refreshes. Unit: in multiples of 32 clocks. DRAM RELATED. Default value is set for DDR3. +
+reg_ddrc_active_ranks + +13:12 + +3000 + +1 + +1000 + +Only present for multi-rank configurations. Each bit represents one rank. 1=populated; 0=unpopulated 01 = One Rank 11 = Two Ranks Others = Reserved +
+reg_ddrc_addrmap_cs_bit0 + +18:14 + +7c000 + +0 + +0 + +Only present for multi-rank configurations. Selects the address bit used as rank address bit 0. Valid Range: 0 to 25, and 31 Internal Base: 9. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 31, rank address bit 0 is set to 0. +
+reg_ddrc_wr_odt_block + +20:19 + +180000 + +1 + +80000 + +00 = block read/write scheduling for 1-cycle when Write requires changing ODT settings 01 = block read/write scheduling for 2 cycles when Write requires changing ODT settings 10 = block read/write scheduling for 3 cycles when Write requires changing ODT settings 11 = Reserved +
+reg_ddrc_diff_rank_rd_2cycle_gap + +21:21 + +200000 + +0 + +0 + +Only present for multi-rank configurations. The two cycle gap is required for mDDR only, due to the large variance in tDQSCK in mDDR. 0 = schedule a 1-cycle gap in data responses when performing consecutive reads to different ranks 1 = schedule 2 cycle gap for the same +
+reg_ddrc_addrmap_cs_bit1 + +26:22 + +7c00000 + +0 + +0 + +Only present for multi-rank configurations. Selects the address bit used as rank address bit 1. Valid Range: 0 to 25, and 31 Internal Base: 10 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 31, rank address bit 1 is set to 0. +
+reg_ddrc_addrmap_open_bank + +27:27 + +8000000 + +0 + +0 + +Only present if MEMC_SIMPLE_ADDR_MAP is defined. Since MEMC_SIMPLE_ADDR_MAP is not defined, Reserved 1 = Set the address map to Open Bank mode +
+reg_ddrc_addrmap_4bank_ram + +28:28 + +10000000 + +0 + +0 + +Only present if MEMC_SIMPLE_ADDR_MAP is defined. Since MEMC_SIMPLE_ADDR_MAP is not defined, Reserved 1 = Set the address map for 4 Bank RAMs +
+Two_rank_cfg@0XF8006004 + +31:0 + +1fffffff + + + +81081 + +Two rank configuration register +
+

+

Register ( slcr )HPR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+HPR_reg + +0XF8006008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_hpr_min_non_critical_x32 + +10:0 + +7ff + +f + +f + +Number of clocks that the HPR queue is guaranteed to be non-critical. Unit: 32 clocks +
+reg_ddrc_hpr_max_starve_x32 + +21:11 + +3ff800 + +f + +7800 + +Number of clocks that the HPR queue can be starved before it goes critical. Unit: 32 clocks +
+reg_ddrc_hpr_xact_run_length + +25:22 + +3c00000 + +f + +3c00000 + +Number of transactions that will be serviced once the HPR queue goes critical is the smaller of this number and the number of transactions available. +
+HPR_reg@0XF8006008 + +31:0 + +3ffffff + + + +3c0780f + +HPR Queue control register +
+

+

Register ( slcr )LPR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LPR_reg + +0XF800600C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_lpr_min_non_critical_x32 + +10:0 + +7ff + +1 + +1 + +Number of clocks that the LPR queue is guaranteed to be non-critical. Unit: 32 clocks +
+reg_ddrc_lpr_max_starve_x32 + +21:11 + +3ff800 + +2 + +1000 + +Number of clocks that the LPR queue can be starved before it goes critical. Unit: 32 clocks +
+reg_ddrc_lpr_xact_run_length + +25:22 + +3c00000 + +8 + +2000000 + +Number of transactions that will be serviced once the LPR queue goes critical is the smaller of this number and the number of transactions available +
+LPR_reg@0XF800600C + +31:0 + +3ffffff + + + +2001001 + +LPR Queue control register +
+

+

Register ( slcr )WR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+WR_reg + +0XF8006010 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_w_min_non_critical_x32 + +10:0 + +7ff + +1 + +1 + +Number of clock cycles that the WR queue is guaranteed to be non-critical. +
+reg_ddrc_w_xact_run_length + +14:11 + +7800 + +8 + +4000 + +Number of transactions that will be serviced once the WR queue goes critical is the smaller of this number and the number of transactions available +
+reg_ddrc_w_max_starve_x32 + +25:15 + +3ff8000 + +2 + +10000 + +Number of clocks that the Write queue can be starved before it goes critical. Unit: 32 clocks. FOR PERFORMANCE ONLY. +
+WR_reg@0XF8006010 + +31:0 + +3ffffff + + + +14001 + +WR Queue control register +
+

+

Register ( slcr )DRAM_param_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg0 + +0XF8006014 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_rc + +5:0 + +3f + +1b + +1b + +tRC - Min time between activates to same bank (spec: 65 ns for DDR2-400 and smaller for faster parts). DRAM RELATED. Default value is set for DDR3. +
+reg_ddrc_t_rfc_min + +13:6 + +3fc0 + +a0 + +2800 + +tRFC(min) - Minimum time from refresh to refresh or activate (spec: 75ns to 195ns). DRAM RELATED. Default value is set for DDR3. +
+reg_ddrc_post_selfref_gap_x32 + +20:14 + +1fc000 + +10 + +40000 + +Minimum time to wait after coming out of self refresh before doing anything. This must be bigger than all the constraints that exist. (spec: Maximum of tXSNR and tXSRD and tXSDLL which is 512 clocks). Unit: in multiples of 32 clocks DRAM RELATED +
+DRAM_param_reg0@0XF8006014 + +31:0 + +1fffff + + + +4281b + +DRAM Parameters register 0 +
+

+

Register ( slcr )DRAM_param_reg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg1 + +0XF8006018 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_wr2pre + +4:0 + +1f + +12 + +12 + +Minimum time between write and precharge to same bank Non-LPDDR2 -> WL + BL/2 + tWR LPDDR2 -> WL + BL/2 + tWR + 1 Unit: Clocks where, WL = write latency. BL = burst length. This must match the value programmed in the BL bit of the mode register to the DRAM. BST is not supported at present. tWR = write recovery time. This comes directly from the DRAM specs. +
+reg_ddrc_powerdown_to_x32 + +9:5 + +3e0 + +6 + +c0 + +After this many clocks of NOP or DESELECT the controller will put the DRAM into power down. This must be enabled in the Master Control Register. Unit: Multiples of 32 clocks. +
+reg_ddrc_t_faw + +15:10 + +fc00 + +18 + +6000 + +tFAW - At most 4 banks must be activated in a rolling window of tFAW cycles. Unit: clocks DRAM RELATED. +
+reg_ddrc_t_ras_max + +21:16 + +3f0000 + +24 + +240000 + +tRAS(max) - Maximum time between activate and precharge to same bank. Maximum time that a page can be kept open (spec: 70 us). If this is zero. The page is closed after each transaction. Unit: Multiples of 1024 clocks DRAM RELATED. +
+reg_ddrc_t_ras_min + +26:22 + +7c00000 + +14 + +5000000 + +tRAS(min) - Minimum time between activate and precharge to the same bank(spec: 45 ns). Unit: clocks DRAM RELATED. Default value is set for DDR3. +
+reg_ddrc_t_cke + +31:28 + +f0000000 + +4 + +40000000 + +Minimum number of cycles of CKE HIGH/LOW during power down and self refresh. LPDDR2 mode: Set this to the larger of tCKE or tCKESR. Non-LPDDR2 designs: Set this to tCKE value. Unit: clocks. +
+DRAM_param_reg1@0XF8006018 + +31:0 + +f7ffffff + + + +452460d2 + +DRAM Parameters register 1 +
+

+

Register ( slcr )DRAM_param_reg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg2 + +0XF800601C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_write_latency + +4:0 + +1f + +5 + +5 + +Time from write command to write data on DDRC to PHY Interface. (PHY adds an extra flop delay on the write data path; hence this value is one less than the write latency of the DRAM device itself). DDR2/3 -> WL -1 LPDDR -> 1 LPDDR2 ->WL Where WL = Write Latency of DRAM DRAM RELATED. +
+reg_ddrc_rd2wr + +9:5 + +3e0 + +7 + +e0 + +Minimum time from read command to write command. Include time for bus turnaround and all per-bank, per-rank, and global constraints. non-LPDDR2 -> RL + BL/2 + 2 - WL LPDDR2 -> RL + BL/2 + RU(tDQSCKmax / tCK) + 1 - WL Write Pre-amble and DQ/DQS jitter timer is included in the above equation. DRAM RELATED. +
+reg_ddrc_wr2rd + +14:10 + +7c00 + +e + +3800 + +Minimum time from write command to read command. Includes time for bus turnaround and recovery times and all per-bank, per-rank, and global constraints. non-LPDDR2 -> WL + tWTR + BL/2 LPDDR2 -> WL + tWTR + BL/2 + 1 Unit: clocks. Where, WL = Write latency, BL = burst length. This should match the value. Programmed in the BL bit of the mode register to the DRAM. tWTR = internal WRITE to READ command delay. This comes directly from the DRAM specs. +
+reg_ddrc_t_xp + +19:15 + +f8000 + +4 + +20000 + +tXP: Minimum time after power down exit to any operation. DRAM RELATED. +
+reg_ddrc_pad_pd + +22:20 + +700000 + +0 + +0 + +If pads have a power-saving mode, this is the greater of the time for the pads to enter power down or the time for the pads to exit power down. Used only in non-DFI designs. Unit: clocks. +
+reg_ddrc_rd2pre + +27:23 + +f800000 + +4 + +2000000 + +Minimum time from read to precharge of same bank DDR2 -> AL + BL/2 + max(tRTP, 2) - 2 DDR3 -> AL + max (tRTP, 4) mDDR -> BL/2 LPDDR2 -> BL/2 + tRTP - 1 AL = Additive Latency BL = DRAM Burst Length tRTP = value from spec DRAM RELATED +
+reg_ddrc_t_rcd + +31:28 + +f0000000 + +7 + +70000000 + +tRCD - AL Minimum time from activate to read or write command to same bank Min value for this is 1. AL = Additive Latency DRAM RELATED +
+DRAM_param_reg2@0XF800601C + +31:0 + +ffffffff + + + +720238e5 + +DRAM Parameters register 2 +
+

+

Register ( slcr )DRAM_param_reg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg3 + +0XF8006020 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_t_ccd + +4:2 + +1c + +4 + +10 + +tCCD - Minimum time between two reads or two writes (from bank a to bank b) is this value + 1 DRAM RELATED +
+reg_ddrc_t_rrd + +7:5 + +e0 + +6 + +c0 + +tRRD - Minimum time between activates from bank a to bank b. (spec: 10ns or less) DRAM RELATED +
+reg_ddrc_refresh_margin + +11:8 + +f00 + +2 + +200 + +Issue critical refresh or page close this many cycles before the critical refresh or page timer expires. It is recommended that this not be changed from the default value. +
+reg_ddrc_t_rp + +15:12 + +f000 + +7 + +7000 + +tRP - Minimum time from precharge to activate of same bank. DRAM RELATED +
+reg_ddrc_refresh_to_x32 + +20:16 + +1f0000 + +8 + +80000 + +If the refresh timer (tRFC_nom, as known as tREFI) has expired at least once, but it has not expired burst_of_N_refresh times yet, then a 'speculative refresh' may be performed. A speculative refresh is a refresh performed at a time when refresh would be useful, but before it is absolutely required. When the DRAM bus is idle for a period of time determined by this refresh idle timeout and the refresh timer has expired at least once since the last refresh, then a 'speculative refresh' will be performed. Speculative refreshes will continue successively until there are no refreshes pending or until new reads or writes are issued to the controller. +
+reg_ddrc_sdram + +21:21 + +200000 + +1 + +200000 + +1 = sdram device 0 = non-sdram device +
+reg_ddrc_mobile + +22:22 + +400000 + +0 + +0 + +1= mobile/LPDDR DRAM device in use. 0=non-mobile DRAM device in use. +
+reg_ddrc_clock_stop_en + +23:23 + +800000 + +0 + +0 + +1=enable the assertion of stop_clk to the PHY whenever a clock is not required by LPDDR/ LPDDR2. 0=stop_clk will never be asserted. Note: This is only present for implementations supporting LPDDR/LPDDR2 devices. +
+reg_ddrc_read_latency + +28:24 + +1f000000 + +7 + +7000000 + +Set to RL. Time from Read command to Read data on DRAM interface. Unit: clocks This signal is present for designs supporting LPDDR/LPDDR2 DRAM only. It is used to calculate when DRAM clock may be stopped. RL = Read Latency of DRAM Note: This signal is present for designs supporting LPDDR/LPDDR2 DRAM only. It is used to calculate when DRAM clock may be stopped. +
+reg_phy_mode_ddr1_ddr2 + +29:29 + +20000000 + +1 + +20000000 + +unused +
+reg_ddrc_dis_pad_pd + +30:30 + +40000000 + +0 + +0 + +1 = disable the pad power down feature 0 = Enable the pad power down feature. +
+reg_ddrc_loopback + +31:31 + +80000000 + +0 + +0 + +unused +
+DRAM_param_reg3@0XF8006020 + +31:0 + +fffffffc + + + +272872d0 + +DRAM Parameters register 3 +
+

+

Register ( slcr )DRAM_param_reg4

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_param_reg4 + +0XF8006024 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_en_2t_timing_mode + +0:0 + +1 + +0 + +0 + +1 = DDRC will use 2T timing 0 = DDRC will use 1T timing +
+reg_ddrc_prefer_write + +1:1 + +2 + +0 + +0 + +1 = Bank selector prefers writes over reads +
+reg_ddrc_max_rank_rd + +5:2 + +3c + +f + +3c + +Only present for multi-rank configurations Background: Reads to the same rank can be performed back-to-back. Reads from different ranks require additional 1-cycle latency in between (to avoid possible data bus contention). The controller arbitrates for bus access on a cycle-by-cycle basis; therefore after a read is scheduled, there is a clock cycle in which only reads from the same bank are eligible to be scheduled. This prevents reads from other ranks from having fair access to the data bus. This parameter represents the maximum number of 64-byte reads (or 32B reads in some short read cases) that can be scheduled consecutively to the same rank. After this number is reached, a 1-cycle delay is inserted by the scheduler to allow all ranks a fair opportunity to be scheduled. Higher numbers increase bandwidth utilization, lower numbers increase fairness (and hence worst-case latency). FOR PERFORMANCE ONLY. +
+reg_ddrc_mr_wr + +6:6 + +40 + +0 + +0 + +A low to high signal on this signal will do a mode register write or read. Controller will accept this command, if this signal is detected high and 'ddrc_reg_mr_wr_busy' is detected low. +
+reg_ddrc_mr_addr + +8:7 + +180 + +0 + +0 + +Mode register address - for non-LPDDR2 modes. This register is don't care in LPDDR2 mode 00 = MR0 01 = MR1 10 = MR2 11 = MR3 +
+reg_ddrc_mr_data + +24:9 + +1fffe00 + +0 + +0 + +Mode register write data - for non-LPDDR2 modes. For LPDDR2, these 16-bits are interpreted as Writes: \'7bMR Addr[7:0], MR Data[7:0]\'7d. Reads: \'7bMR Addr[7:0], Don't Care[7:0]\'7d +
+ddrc_reg_mr_wr_busy + +25:25 + +2000000 + +0 + +0 + +Core must initiate a MR write / read operation only if this signal is low. This signal goes high in the clock after the controller accepts the write / read request. It goes low when (i) MR write command has been issued to the DRAM (ii) MR Read data has been returned to Controller. Any MR write / read command that is received when 'ddrc_reg_mr_wr_busy' is high is not accepted. 1 = Indicates that mode register write / read operation is in progress. 0 = Indicates that the core can initiate a mode register write / read operation. +
+reg_ddrc_mr_type + +26:26 + +4000000 + +0 + +0 + +Indicates whether the Mode register operation is read or write 1 = read 0 = write +
+reg_ddrc_mr_rdata_valid + +27:27 + +8000000 + +0 + +0 + +This bit indicates whether the Mode Register Read Data present at address 0xA9 is valid or not. This bit is 1'b0 by default. This bit will be cleared (1'b0), whenever a Mode Register Read command is issued. This bit will be set to 1'b1, when the Mode Register Read Data is written to register 0xA9. +
+DRAM_param_reg4@0XF8006024 + +31:0 + +fffffff + + + +3c + +DRAM Parameters register 4 +
+

+

Register ( slcr )DRAM_init_param

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_init_param + +0XF8006028 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_final_wait_x32 + +6:0 + +7f + +7 + +7 + +Cycles to wait after completing the DRAM init sequence before starting the dynamic scheduler. Units are in counts of a global timer that pulses every 32 clock cycles. Default value is set for DDR3. +
+reg_ddrc_pre_ocd_x32 + +10:7 + +780 + +0 + +0 + +Wait period before driving the 'OCD Complete' command to DRAM. Units are in counts of a global timer that pulses every 32 clock cycles. There is no known spec requirement for this. It may be set to zero. +
+reg_ddrc_t_mrd + +13:11 + +3800 + +4 + +2000 + +tMRD - Cycles between Load Mode commands DRAM RELATED Default value is set for DDR3. +
+DRAM_init_param@0XF8006028 + +31:0 + +3fff + + + +2007 + +DRAM initialization parameters register +
+

+

Register ( slcr )DRAM_EMR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_EMR_reg + +0XF800602C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_emr2 + +15:0 + +ffff + +8 + +8 + +Non LPDDR2- Value to be loaded into DRAM EMR2 registers. For LPDDR2 - Value to Write to the MR3 register +
+reg_ddrc_emr3 + +31:16 + +ffff0000 + +0 + +0 + +Non LPDDR2- Value to be loaded into DRAM EMR3 registers. Used in non-LPDDR2 designs only. +
+DRAM_EMR_reg@0XF800602C + +31:0 + +ffffffff + + + +8 + +DRAM EMR2, EMR3 access register +
+

+

Register ( slcr )DRAM_EMR_MR_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_EMR_MR_reg + +0XF8006030 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_mr + +15:0 + +ffff + +930 + +930 + +Non LPDDR2-Value to be loaded into the DRAM Mode register. Bit 8 is for DLL and the setting here is ignored. The controller sets appropriately. For LPDDR2 - Value to Write to the MR1 register +
+reg_ddrc_emr + +31:16 + +ffff0000 + +4 + +40000 + +Non LPDDR2-Value to be loaded into DRAM EMR registers. Bits [9:7] are for OCD and the setting in this register is ignored. The controller sets those bits appropriately. For LPDDR2 - Value to Write to the MR2 register +
+DRAM_EMR_MR_reg@0XF8006030 + +31:0 + +ffffffff + + + +40930 + +DRAM EMR, MR access register +
+

+

Register ( slcr )DRAM_burst8_rdwr

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_burst8_rdwr + +0XF8006034 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_burst_rdwr + +3:0 + +f + +4 + +4 + +This controls the burst size used to access the DRAM. This must match the BL mode register setting in the DRAM. In LPDDR and LPDDR2, Burst length of 16 is supported only in Half Bus Width mode. Every input read/write command has 4 cycles of data associated with it and that is not enough data for doing Burst Length16 in Full Bus Width mode. 0010 - Burst length of 4 0100 - Burst length of 8 1000 - Burst length of 16 (only supported for LPDDR AND LPDDR2) All other values are reserved +
+reg_ddrc_pre_cke_x1024 + +13:4 + +3ff0 + +105 + +1050 + +Cycles to wait after reset before driving CKE high to start the DRAM initialization sequence. Units: 1024 clock cycles. DDR2 Specifications typically require this to be programmed for a delay of >= 200 us. LPDDR2 - tINIT0 of 20 ms (max) + tINIT1 of 100 ns (min) +
+reg_ddrc_post_cke_x1024 + +25:16 + +3ff0000 + +1 + +10000 + +Cycles to wait after driving CKE high to start the DRAM initialization sequence. Units: 1024 clocks. DDR2 typically require a 400 ns delay, requiring this value to be programmed to 2 at all clock speeds. LPDDR2 - Typically require this to be programmed for a delay of 200 us. +
+reg_ddrc_burstchop + +28:28 + +10000000 + +0 + +0 + +Feature not supported. When 1, Controller is out in burstchop mode. +
+DRAM_burst8_rdwr@0XF8006034 + +31:0 + +13ff3fff + + + +11054 + +DRAM burst 8 read/write register +
+

+

Register ( slcr )DRAM_disable_DQ

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_disable_DQ + +0XF8006038 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_force_low_pri_n + +0:0 + +1 + +0 + +0 + +Active Low signal. When asserted (0), all incoming transactions will be forced to low priority. Forcing the incoming transactions to low priority implicitly turns OFF Bypass. Otherwise, HPR is allowed if enabled in the AXI priority read registers. +
+reg_ddrc_dis_dq + +1:1 + +2 + +0 + +0 + +When 1, DDRC will not de-queue any transactions from the CAM. Bypass will also be disabled. All transactions will be queued in the CAM. This is for debug only; no reads or writes are issued to DRAM as long as this is asserted. This bit is intended to be switched on-the-fly +
+reg_phy_debug_mode + +6:6 + +40 + +0 + +0 + +Not Applicable in this PHY. +
+reg_phy_wr_level_start + +7:7 + +80 + +0 + +0 + +Not Applicable in this PHY. +
+reg_phy_rd_level_start + +8:8 + +100 + +0 + +0 + +Not Applicable in this PHY. +
+reg_phy_dq0_wait_t + +12:9 + +1e00 + +0 + +0 + +Not Applicable in this PHY. +
+DRAM_disable_DQ@0XF8006038 + +31:0 + +1fc3 + + + +0 + +DRAM Disable DQ register +
+

+

Register ( slcr )DRAM_addr_map_bank

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_bank + +0XF800603C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_bank_b0 + +3:0 + +f + +7 + +7 + +Selects the address bits used as bank address bit 0. Valid Range: 0 to 14 Internal Base: 5 The selected address bit for each of the bank address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_bank_b1 + +7:4 + +f0 + +7 + +70 + +Selects the address bits used as bank address bit 1. Valid Range: 0 to 14; Internal Base: 6. The selected address bit for each of the bank address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_bank_b2 + +11:8 + +f00 + +7 + +700 + +Selects the AXI address bit used as bank address bit 2. Valid range 0 to 14, and 15. Internal Base: 7. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, bank address bit 2 is set to 0. +
+reg_ddrc_addrmap_col_b5 + +15:12 + +f000 + +0 + +0 + +Full bus width mode: Selects the address bits used as column address bits 6. Half bus width mode: Selects the address bits used as column address bits 7. Valid range is 0-7. Internal Base 8. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. Internal base: 9 +
+reg_ddrc_addrmap_col_b6 + +19:16 + +f0000 + +0 + +0 + +Full bus width mode: Selects the address bits used as column address bits 7. Half bus width mode: Selects the address bits used as column address bits 8. Valid range is 0-7. Internal Base 9. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. Internal base: 9 +
+DRAM_addr_map_bank@0XF800603C + +31:0 + +fffff + + + +777 + +Selects the address bits used as DRAM bank address bits +
+

+

Register ( slcr )DRAM_addr_map_col

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_col + +0XF8006040 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_col_b2 + +3:0 + +f + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 3. Half bus width mode: Selects the address bit used as column address bit 4. Valid Range: 0 to 7. Internal Base: 5 The selected address bit is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b3 + +7:4 + +f0 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 4. Half bus width mode: Selects the address bit used as column address bit 5. Valid Range: 0 to 7 Internal Base: 6 The selected address bit is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b4 + +11:8 + +f00 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 5. Half bus width mode: Selects the address bit used as column address bits 6. Valid Range: 0 to 7. Internal Base: 7. The selected address bit for each of the column address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_col_b7 + +15:12 + +f000 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 8. Half bus width mode: Selects the address bit used as column address bit 9. Valid Range: 0 to 7, and 15. Internal Base: 10. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10.In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b8 + +19:16 + +f0000 + +0 + +0 + +Full bus width mode: Selects the address bit used as column address bit 9. Half bus width mode: Selects the address bit used as column address bit 11. (Column address bit 10 in LPDDR2 mode) Valid Range: 0 to 7, and 15 Internal Base: 11 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b9 + +23:20 + +f00000 + +f + +f00000 + +Full bus width mode: Selects the address bit used as column address bit 11. (Column address bit 10 in LPDDR2 mode) Half bus width mode: Selects the address bit used as column address bit 12. (Column address bit 11 in LPDDR2 mode) Valid Range: 0 to 7, and 15 Internal Base: 12 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b10 + +27:24 + +f000000 + +f + +f000000 + +Full bus width mode: Selects the address bit used as column address bit 12. (Column address bit 11 in LPDDR2 mode) Half bus width mode: Selects the address bit used as column address bit 13. (Column address bit 12 in LPDDR2 mode) Valid Range: 0 to 7, and 15. Internal Base: 13 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+reg_ddrc_addrmap_col_b11 + +31:28 + +f0000000 + +f + +f0000000 + +Full bus width mode: Selects the address bit used as column address bit 13. (Column address bit 12 in LPDDR2 mode) Half bus width mode: Unused. To make it unused, this should be set to 15. (Column address bit 13 in LPDDR2 mode) Valid Range: 0 to 7, and 15. Internal Base: 14. The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, this column address bit is set to 0. Note: Per JEDEC DDR2 spec, column address bit 10 is reserved for indicating auto-precharge, and hence no source address bit can be mapped to column address bit 10. In LPDDR2, there is a dedicated bit for auto-precharge in the CA bus, and hence column bit 10 is used. +
+DRAM_addr_map_col@0XF8006040 + +31:0 + +ffffffff + + + +fff00000 + +Selects the address bits used as DRAM column address bits +
+

+

Register ( slcr )DRAM_addr_map_row

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_addr_map_row + +0XF8006044 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_addrmap_row_b0 + +3:0 + +f + +6 + +6 + +Selects the AXI address bits used as row address bit 0. Valid Range: 0 to 11. Internal Base: 9 The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field +
+reg_ddrc_addrmap_row_b1 + +7:4 + +f0 + +6 + +60 + +Selects the AXI address bits used as row address bit 1. Valid Range: 0 to 11. Internal Base: 10 The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_row_b2_11 + +11:8 + +f00 + +6 + +600 + +Selects the AXI address bits used as row address bits 2 to 11. Valid Range: 0 to 11. Internal Base: 11 (for row address bit 2) to 20 (for row address bit 11) The selected address bit for each of the row address bits is determined by adding the Internal Base to the value of this field. +
+reg_ddrc_addrmap_row_b12 + +15:12 + +f000 + +6 + +6000 + +Selects the AXI address bit used as row address bit 12. Valid Range: 0 to 11, and 15 Internal Base: 21 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 12 is set to 0. +
+reg_ddrc_addrmap_row_b13 + +19:16 + +f0000 + +6 + +60000 + +Selects the AXI address bit used as row address bit 13. Valid Range: 0 to 11, and 15 Internal Base: 22 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 13 is set to 0. +
+reg_ddrc_addrmap_row_b14 + +23:20 + +f00000 + +6 + +600000 + +Selects theAXI address bit used as row address bit 14. Valid Range: 0 to 11, and 15 Internal Base: 23 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 14 is set to 0. +
+reg_ddrc_addrmap_row_b15 + +27:24 + +f000000 + +f + +f000000 + +Selects the AXI address bit used as row address bit 15. Valid Range: 0 to 11, and 15 Internal Base: 24 The selected address bit is determined by adding the Internal Base to the value of this field. If set to 15, row address bit 15 is set to 0. +
+DRAM_addr_map_row@0XF8006044 + +31:0 + +fffffff + + + +f666666 + +Selects the address bits used as DRAM row address bits +
+

+

Register ( slcr )DRAM_ODT_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DRAM_ODT_reg + +0XF8006048 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_rank0_rd_odt + +2:0 + +7 + +0 + +0 + +Unused. [1:0] - Indicates which remote ODT's must be turned ON during a read to rank 0. Each of the 2 ranks has a remote ODT (in the DRAM) which can be turned on by setting the appropriate bit here. Rank 0 is controlled by the LSB; Rank 1 is controlled by bit next to the LSB. For each rank, set its bit to 1 to enable its ODT. [2] - If 1 then local ODT is enabled during reads to rank 0. +
+reg_ddrc_rank0_wr_odt + +5:3 + +38 + +1 + +8 + +[1:0] - Indicates which remote ODT's must be turned on during a write to rank 0. Each of the 2 ranks has a remote ODT (in the DRAM) which can be turned on by setting the appropriate bit here. Rank 0 is controlled by the LSB; Rank 1 is controlled by bit next to the LSB. For each rank, set its bit to 1 to enable its ODT. [2] - If 1 then local ODT is enabled during writes to rank 0. +
+reg_ddrc_rank1_rd_odt + +8:6 + +1c0 + +1 + +40 + +Unused +
+reg_ddrc_rank1_wr_odt + +11:9 + +e00 + +1 + +200 + +Unused +
+reg_phy_rd_local_odt + +13:12 + +3000 + +0 + +0 + +Value to drive on the 2-bit local_odt PHY outputs when output enable is not asserted and a read is in progress (where 'in progress' is defined as after a read command is issued and until all read data has been returned all the way to the controller.) Typically this is set to the value required to enable termination at the desired strength for read usage. +
+reg_phy_wr_local_odt + +15:14 + +c000 + +3 + +c000 + +Value to drive on the 2-bit local_odt PHY outputs when write levelling is enabled for DQS. +
+reg_phy_idle_local_odt + +17:16 + +30000 + +3 + +30000 + +Value to drive on the 2-bit local_odt PHY outputs when output enable is not asserted and a read is not in progress. Typically this is the value required to disable termination to save power when idle. +
+reg_ddrc_rank2_rd_odt + +20:18 + +1c0000 + +0 + +0 + +Unused +
+reg_ddrc_rank2_wr_odt + +23:21 + +e00000 + +0 + +0 + +Unused +
+reg_ddrc_rank3_rd_odt + +26:24 + +7000000 + +0 + +0 + +Unused +
+reg_ddrc_rank3_wr_odt + +29:27 + +38000000 + +0 + +0 + +Unused +
+DRAM_ODT_reg@0XF8006048 + +31:0 + +3fffffff + + + +3c248 + +DRAM ODT register +
+

+

Register ( slcr )phy_cmd_timeout_rddata_cpt

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_cmd_timeout_rddata_cpt + +0XF8006050 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_cmd_to_data + +3:0 + +f + +0 + +0 + +Not used in DFI PHY. +
+reg_phy_wr_cmd_to_data + +7:4 + +f0 + +0 + +0 + +Not used in DFI PHY. +
+reg_phy_rdc_we_to_re_delay + +11:8 + +f00 + +8 + +800 + +This register value + 1 give the number of clock cycles between writing into the Read Capture FIFO and the read operation. The setting of this register determines the read data timing and depends upon total delay in the system for read operation which include fly-by delays, trace delay, clkout_invert etc. This is used only if reg_phy_use_fixed_re=1. +
+reg_phy_rdc_fifo_rst_disable + +15:15 + +8000 + +0 + +0 + +When 1, disable counting the number of times the Read Data Capture FIFO has been reset when the FIFO was not empty. +
+reg_phy_use_fixed_re + +16:16 + +10000 + +1 + +10000 + +When 1: PHY generates FIFO read enable after fixed number of clock cycles as defined by reg_phy_rdc_we_to_re_delay[3:0]. When 0: PHY uses the not_empty method to do the read enable generation. Note: This port must be set HIGH during training/leveling process i.e. when ddrc_dfi_wrlvl_en/ ddrc_dfi_rdlvl_en/ ddrc_dfi_rdlvl_gate_en port is set HIGH. +
+reg_phy_rdc_fifo_rst_err_cnt_clr + +17:17 + +20000 + +0 + +0 + +Clear/reset for counter rdc_fifo_rst_err_cnt[3:0]. 0: no clear, 1: clear. Note: This is a synchronous dynamic signal that must have timing closed. +
+reg_phy_dis_phy_ctrl_rstn + +18:18 + +40000 + +0 + +0 + +Disable the reset from Phy Ctrl macro. 1: PHY Ctrl macro reset port is always HIGH 0: PHY Ctrl macro gets power on reset. +
+reg_phy_clk_stall_level + +19:19 + +80000 + +0 + +0 + +1 = stall clock, for DLL aging control +
+reg_phy_gatelvl_num_of_dq0 + +27:24 + +f000000 + +7 + +7000000 + +This register value determines register determines the number of samples used for each ratio increment during Gate Training. Num_of_iteration = reg_phy_gatelvl_num_of_dq0 + 1 The recommended value for this register is 8. Accuracy is better with higher value, but this will cause leveling to run longer. +
+reg_phy_wrlvl_num_of_dq0 + +31:28 + +f0000000 + +7 + +70000000 + +This register value determines register determines the number of samples used for each ratio increment during Write Leveling. Num_of_iteration = reg_phy_wrlvl_num_of_dq0 + 1 The recommended value for this register is 8. Accuracy is better with higher value, but this will cause leveling to run longer. +
+phy_cmd_timeout_rddata_cpt@0XF8006050 + +31:0 + +ff0f8fff + + + +77010800 + +PHY command time out and read data capture FIFO register +
+

+

Register ( slcr )DLL_calib

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DLL_calib + +0XF8006058 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dll_calib_to_min_x1024 + +7:0 + +ff + +1 + +1 + +Unused in DFI Controller. +
+reg_ddrc_dll_calib_to_max_x1024 + +15:8 + +ff00 + +1 + +100 + +Unused in DFI Controller. +
+reg_ddrc_dis_dll_calib + +16:16 + +10000 + +0 + +0 + +When 1, disable dll_calib generated by the controller. The core should issue the dll_calib signal using co_gs_dll_calib input. This input is changeable on the fly. When 0, controller will issue dll_calib periodically +
+DLL_calib@0XF8006058 + +31:0 + +1ffff + + + +101 + +DLL calibration register +
+

+

Register ( slcr )ODT_delay_hold

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ODT_delay_hold + +0XF800605C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_rd_odt_delay + +3:0 + +f + +3 + +3 + +UNUSED +
+reg_ddrc_wr_odt_delay + +7:4 + +f0 + +0 + +0 + +The delay, in clock cycles, from issuing a write command to setting ODT values associated with that command. ODT setting should remain constant for the entire time that DQS is driven by the controller. The suggested value for DDR2 is WL - 5 and for DDR3 is 0. WL is Write latency. DDR2 ODT has a 2-cycle on-time delay and a 2.5-cycle off-time delay. ODT is not applicable for LPDDR and LPDDR2 modes. +
+reg_ddrc_rd_odt_hold + +11:8 + +f00 + +0 + +0 + +Unused +
+reg_ddrc_wr_odt_hold + +15:12 + +f000 + +5 + +5000 + +Cycles to hold ODT for a Write Command. When 0x0, ODT signal is ON for 1 cycle. When 0x1, it is ON for 2 cycles, etc. The values to program in different modes are : DRAM Burst of 4 -2, DRAM Burst of 8 -4 +
+ODT_delay_hold@0XF800605C + +31:0 + +ffff + + + +5003 + +ODT delay and ODT hold register +
+

+

Register ( slcr )ctrl_reg1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg1 + +0XF8006060 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_pageclose + +0:0 + +1 + +0 + +0 + +If true, bank will be closed and kept closed if no transactions are available for it. If false, bank will remain open until there is a need to close it (to open a different page, or for page timeout or refresh timeout.) This does not apply when auto-refresh is used. +
+reg_ddrc_lpr_num_entries + +6:1 + +7e + +1f + +3e + +Number of entries in the low priority transaction store is this value plus 1. In this design, by default all read ports are treated as low priority and hence the value of 0x1F. The hpr_num_entries is 32 minus this value. Bit [6] is ignored. +
+reg_ddrc_auto_pre_en + +7:7 + +80 + +0 + +0 + +When set, most reads and writes will be issued with auto-precharge. (Exceptions can be made for collision cases.) +
+reg_ddrc_refresh_update_level + +8:8 + +100 + +0 + +0 + +Toggle this signal to indicate that refresh register(s) have been updated. The value will be automatically updated when exiting soft reset. So it does not need to be toggled initially. +
+reg_ddrc_dis_wc + +9:9 + +200 + +0 + +0 + +When 1, disable Write Combine +
+reg_ddrc_dis_collision_page_opt + +10:10 + +400 + +0 + +0 + +When this is set to '0', auto-precharge will be disabled for the flushed command in a collision case. Collision cases are write followed by read to same address, read followed by write to same address, or write followed by write to same address with DIS_WC bit = 1 (where 'same address' comparisons exclude the two address bits representing critical word). +
+reg_ddrc_selfref_en + +12:12 + +1000 + +0 + +0 + +If 1, then the controller will put the DRAM into self refresh when the transaction store is empty. +
+ctrl_reg1@0XF8006060 + +31:0 + +17ff + + + +3e + +Controller register 1 +
+

+

Register ( slcr )ctrl_reg2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg2 + +0XF8006064 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_go2critical_hysteresis + +12:5 + +1fe0 + +0 + +0 + +Describes the number of cycles that co_gs_go2critical_rd or co_gs_go2critical_wr must be asserted before the corresponding queue moves to the 'critical' state in the DDRC. The arbiter controls the co_gs_go2critical_* signals; it is designed for use with this hysteresis field set to 0. +
+reg_arb_go2critical_en + +17:17 + +20000 + +1 + +20000 + +1 - Set reg_ddrc_go2critical_wr and reg_ddrc_go2critical_rd signals going to DDRC based on 'urgent' input coming from AXI master. 0 - Keep reg_ddrc_go2critical_wr and reg_ddrc_go2critical_rd signals going to DDRC at 1'b0. +
+ctrl_reg2@0XF8006064 + +31:0 + +21fe0 + + + +20000 + +Controller register 2 +
+

+

Register ( slcr )ctrl_reg3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg3 + +0XF8006068 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_wrlvl_ww + +7:0 + +ff + +41 + +41 + +Write leveling write-to-write delay. Specifies the minimum number of clock cycles from the assertion of a ddrc_dfi_wrlvl_strobe signal to the next ddrc_dfi_wrlvl_strobe signal. Only applicable when connecting to PHY's operating in 'PHY RdLvl Evaluation' mode. Recommended value is: (RL + reg_phy_rdc_we_to_re_delay + 50) Only present in designs that support DDR3 and LPDDR2 devices. +
+reg_ddrc_rdlvl_rr + +15:8 + +ff00 + +41 + +4100 + +Read leveling read-to-read delay. Specifies the minimum number of clock cycles from the assertion of a read command to the next read command. Only applicable when connecting to PHY's operating in 'PHY RdLvl Evaluation' mode. Only present in designs that support DDR3 devices +
+reg_ddrc_dfi_t_wlmrd + +25:16 + +3ff0000 + +28 + +280000 + +First DQS/DQS# rising edge after write leveling mode is programmed. This is same as the tMLRD value from the DRAM spec. Only present in designs that support DDR3 devices. +
+ctrl_reg3@0XF8006068 + +31:0 + +3ffffff + + + +284141 + +Controller register 3 +
+

+

Register ( slcr )ctrl_reg4

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ctrl_reg4 + +0XF800606C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+dfi_t_ctrlupd_interval_min_x1024 + +7:0 + +ff + +10 + +10 + +This is the minimum amount of time between Controller initiated DFI update requests (which will be executed whenever the controller is idle). Set this number higher to reduce the frequency of update requests, which can have a small impact on the latency of the first read request when the controller is idle. Units: 1024 clocks +
+dfi_t_ctrlupd_interval_max_x1024 + +15:8 + +ff00 + +16 + +1600 + +This is the maximum amount of time between Controller initiated DFI update requests. This timer resets with each update request; when the timer expires, traffic is blocked for a few cycles. PHY can use this idle time to recalibrate the delay lines to the DLLs. The DLL calibration is also used to reset PHY FIFO pointers in case of data capture errors. Updates are required to maintain calibration over PVT, but frequent updates may impact performance. Units: 1024 clocks +
+ctrl_reg4@0XF800606C + +31:0 + +ffff + + + +1610 + +Controller register 4 +
+

+

Register ( slcr )CHE_REFRESH_TIMER01

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_REFRESH_TIMER01 + +0XF80060A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+refresh_timer0_start_value_x32 + +11:0 + +fff + +0 + +0 + +Refresh Timer for Rank 1. Unit: in multiples of 32 clocks. (Only present in multi-rank configurations). FOR PERFORMANCE ONLY. +
+refresh_timer1_start_value_x32 + +23:12 + +fff000 + +8 + +8000 + +Refresh Timer for Rank 0. (Only present in multi-rank configurations). Unit: in multiples of 32 clocks. FOR PERFORMANCE ONLY. +
+CHE_REFRESH_TIMER01@0XF80060A0 + +31:0 + +ffffff + + + +8000 + +CHE_REFRESH_TIMER01 +
+

+

Register ( slcr )CHE_T_ZQ

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_T_ZQ + +0XF80060A4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dis_auto_zq + +0:0 + +1 + +0 + +0 + +1=disable controller generation of ZQCS command. Co_gs_zq_calib_short can be used instead to control ZQ calibration commands. 0=internally generate ZQCS commands based on reg_ddrc_t_zq_short_interval_x1024 This is only present for implementations supporting DDR3 and LPDDR2 devices. +
+reg_ddrc_ddr3 + +1:1 + +2 + +1 + +2 + +Indicates operating in DDR2/DDR3 mode. Default value is set for DDR3. +
+reg_ddrc_t_mod + +11:2 + +ffc + +200 + +800 + +Mode register set command update delay (minimum the larger of 12 clock cycles or 15ns) +
+reg_ddrc_t_zq_long_nop + +21:12 + +3ff000 + +200 + +200000 + +Number of cycles of NOP required after a ZQCL (ZQ calibration long) command is issued to DRAM. Units: Clock cycles This is only present for implementations supporting DDR3 and LPDDR2 devices. +
+reg_ddrc_t_zq_short_nop + +31:22 + +ffc00000 + +40 + +10000000 + +Number of cycles of NOP required after a ZQCS (ZQ calibration short) command is issued to DRAM. Units: Clock cycles This is only present for implementations supporting DDR3 and LPDDR2 devices. +
+CHE_T_ZQ@0XF80060A4 + +31:0 + +ffffffff + + + +10200802 + +ZQ parameters register +
+

+

Register ( slcr )CHE_T_ZQ_Short_Interval_Reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_T_ZQ_Short_Interval_Reg + +0XF80060A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+t_zq_short_interval_x1024 + +19:0 + +fffff + +cb73 + +cb73 + +Average interval to wait between automatically issuing ZQCS (ZQ calibration short) commands to DDR3 devices. Meaningless if reg_ddrc_dis_auto_zq=1. Units: 1024 Clock cycles. Applicable for DDR3 and LPDDR2 devices. +
+dram_rstn_x1024 + +27:20 + +ff00000 + +69 + +6900000 + +Number of cycles to assert DRAM reset signal during init sequence. Units: 1024 Clock cycles. Applicable for DDR3 only. +
+CHE_T_ZQ_Short_Interval_Reg@0XF80060A8 + +31:0 + +fffffff + + + +690cb73 + +Misc parameters register +
+

+

Register ( slcr )deep_pwrdwn_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+deep_pwrdwn_reg + +0XF80060AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+deeppowerdown_en + +0:0 + +1 + +0 + +0 + +1 - Controller puts the DRAM into Deep Powerdown mode when the transaction store is empty. 0 - Brings Controller out of Deep Powerdown mode Present only in designs configured to support LPDDR or LPDDR2 FOR PERFORMANCE ONLY. +
+deeppowerdown_to_x1024 + +8:1 + +1fe + +ff + +1fe + +Minimum deep power down time applicable only for LPDDR2. LPDDR exits from deep power down mode immediately after reg_ddrc_deeppowerdown_en is deasserted. For LPDDR2, Value from the spec is 500us. Units are in 1024 clock cycles. Present only in designs configured to support LPDDR or LPDDR2. FOR PERFORMANCE ONLY. +
+deep_pwrdwn_reg@0XF80060AC + +31:0 + +1ff + + + +1fe + +Deep powerdown register +
+

+

Register ( slcr )reg_2c

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_2c + +0XF80060B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+dfi_wrlvl_max_x1024 + +11:0 + +fff + +fff + +fff + +Write leveling maximum time. Specifies the maximum number of clock cycles that the controller will wait for a response (phy_dfi_wrlvl_resp) to a write leveling enable signal (ddrc_dfi_wrlvl_en). Only applicable when connecting to PHY's operating in 'PHY WrLvl Evaluation' mode. Typical value 0xFFF Units 1024 clocks +
+dfi_rdlvl_max_x1024 + +23:12 + +fff000 + +fff + +fff000 + +Read leveling maximum time. Specifies the maximum number of clock cycles that the controller will wait for a response (phy_dfi_rdlvl_resp) to a read leveling enable signal (ddrc_dfi_rdlvl_en or ddrc_dfi_rdlvl_gate_en). Only applicable when connecting to PHY's operating in 'PHY RdLvl Evaluation' mode. Typical value 0xFFF Units 1024 clocks +
+ddrc_reg_twrlvl_max_error + +24:24 + +1000000 + +0 + +0 + +When '1' indicates that the reg_ddrc_dfi_wrlvl_max_x1024 timer has timed out. This is a Clear-on-Write register. If write leveling timed out, an error is indicated by the DDRC and this bit gets set. The value is held until it is cleared. Clearing is done by writing a '0' to this register. Only present in designs that support DDR3. +
+ddrc_reg_trdlvl_max_error + +25:25 + +2000000 + +0 + +0 + +When '1' indicates that the reg_ddrc_dfi_rdrlvl_max_x1024 timer has timed out. This is a Clear-on-Write register. If read leveling or gate training timed out, an error is indicated by the DDRC and this bit gets set. The value is held at that value until it is cleared. Clearing is done by writing a '0' to this register. Only present in designs that support DDR3 or LPDDR2 devices. +
+reg_ddrc_dfi_wr_level_en + +26:26 + +4000000 + +1 + +4000000 + +1 = Write leveling mode has been enabled as part of init sequence; Valid only for DDR3 DFI designs 0 = Write leveling disabled. +
+reg_ddrc_dfi_rd_dqs_gate_level + +27:27 + +8000000 + +1 + +8000000 + +1 = Read DQS Gate Leveling mode has been enabled as part of init sequence; Valid only for DDR3 DFI designs 0= Read DQS gate leveling is disabled. +
+reg_ddrc_dfi_rd_data_eye_train + +28:28 + +10000000 + +1 + +10000000 + +1 = Read Data Eye training mode has been enabled as part of init sequence. Only present in designs that support DDR3 or LPDDR2 devices. +
+reg_2c@0XF80060B0 + +31:0 + +1fffffff + + + +1cffffff + +Training control register +
+

+

Register ( slcr )reg_2d

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_2d + +0XF80060B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_2t_delay + +8:0 + +1ff + +0 + +0 + +Selects the clock edge in which chip select (CSN) and CKE is asserted. Unsupported feature. +
+reg_ddrc_skip_ocd + +9:9 + +200 + +1 + +200 + +This register must be kept at 1'b1. 1'b0 is NOT supported. 1 - Indicates the controller to skip OCD adjustment step during DDR2 initialization. OCD_Default and OCD_Exit are performed instead. 0 - Not supported. +
+reg_ddrc_dis_pre_bypass + +10:10 + +400 + +0 + +0 + +Only present in designs supporting precharge bypass. When 1, disable bypass path for high priority precharges FOR DEBUG ONLY. +
+reg_2d@0XF80060B4 + +31:0 + +7ff + + + +200 + +Misc Debug register +
+

+

Register ( slcr )dfi_timing

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+dfi_timing + +0XF80060B8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_dfi_t_rddata_en + +4:0 + +1f + +6 + +6 + +Time from the assertion of a READ command on the DFI interface to the assertion of the phy_dfi_rddata_en signal. Non-LPDDR -> RL-1 LPDDR -> RL Where RL is read latency of DRAM. +
+reg_ddrc_dfi_t_ctrlup_min + +14:5 + +7fe0 + +3 + +60 + +Specifies the minimum number of clock cycles that the ddrc_dfi_ctrlupd_req signal must be asserted. +
+reg_ddrc_dfi_t_ctrlup_max + +24:15 + +1ff8000 + +40 + +200000 + +Specifies the maximum number of clock cycles that the ddrc_dfi_ctrlupd_req signal can assert. +
+dfi_timing@0XF80060B8 + +31:0 + +1ffffff + + + +200066 + +DFI timing register +
+

+

RESET ECC ERROR

+

Register ( slcr )CHE_ECC_CONTROL_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_CONTROL_REG_OFFSET + +0XF80060C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Clear_Uncorrectable_DRAM_ECC_error + +0:0 + +1 + +1 + +1 + +Writing 1 to this bit will clear the uncorrectable log valid bit and the uncorrectable error counters. +
+Clear_Correctable_DRAM_ECC_error + +1:1 + +2 + +1 + +2 + +Writing 1 to this bit will clear the correctable log valid bit and the correctable error counters. +
+CHE_ECC_CONTROL_REG_OFFSET@0XF80060C4 + +31:0 + +3 + + + +3 + +ECC error clear register +
+

+

Register ( slcr )CHE_ECC_CONTROL_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_CONTROL_REG_OFFSET + +0XF80060C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Clear_Uncorrectable_DRAM_ECC_error + +0:0 + +1 + +0 + +0 + +Writing 1 to this bit will clear the uncorrectable log valid bit and the uncorrectable error counters. +
+Clear_Correctable_DRAM_ECC_error + +1:1 + +2 + +0 + +0 + +Writing 1 to this bit will clear the correctable log valid bit and the correctable error counters. +
+CHE_ECC_CONTROL_REG_OFFSET@0XF80060C4 + +31:0 + +3 + + + +0 + +ECC error clear register +
+

+

Register ( slcr )CHE_CORR_ECC_LOG_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_CORR_ECC_LOG_REG_OFFSET + +0XF80060C8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CORR_ECC_LOG_VALID + +0:0 + +1 + +0 + +0 + +Set to '1' when a correctable ECC error is captured. As long as this is '1' no further ECC errors will be captured. This is cleared when a '1' is written to register bit[1] of ECC CONTROL REGISTER (0x31) +
+ECC_CORRECTED_BIT_NUM + +7:1 + +fe + +0 + +0 + +Indicator of the bit number syndrome in error for single-bit errors. The field is 7-bit wide to handle 72-bits of data. This is an encoded value with ECC bits placed in between data. The encoding is given in section 5.4 Correctable bit number from the lowest error lane is reported here. There are only 13-valid bits going to an ECC lane (8-data + 5-ECC). Only 4-bits are needed to encode a max value of d'13. Bit[7] of this register is used to indicate the exact byte lane. When a error happens, if CORR_ECC_LOG_COL[0] from register 0x33 is 1'b0, then the error happened in Lane 0 or 1. If CORR_ECC_LOG_COL[0] is 1'b1, then the error happened in Lane 2 or 3. Bit[7] of this register indicates whether the error is from upper or lower byte lane. If it is 0, then it is lower byte lane and if it is 1, then it is upper byte lane. Together with CORR_ECC_LOG_COL[0] and bit[7] of this register, the exact byte lane with correctable error can be determined. +
+CHE_CORR_ECC_LOG_REG_OFFSET@0XF80060C8 + +31:0 + +ff + + + +0 + +ECC error correction register +
+

+

Register ( slcr )CHE_UNCORR_ECC_LOG_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_UNCORR_ECC_LOG_REG_OFFSET + +0XF80060DC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNCORR_ECC_LOG_VALID + +0:0 + +1 + +0 + +0 + +Set to '1' when an uncorrectable ECC error is captured. As long as this is '1' no further ECC errors will be captured. This is cleared when a '1' is written to register bit[0] of ECC CONTROL REGISTER (0x31). +
+CHE_UNCORR_ECC_LOG_REG_OFFSET@0XF80060DC + +31:0 + +1 + + + +0 + +ECC unrecoverable error status register +
+

+

Register ( slcr )CHE_ECC_STATS_REG_OFFSET

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CHE_ECC_STATS_REG_OFFSET + +0XF80060F0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+STAT_NUM_CORR_ERR + +15:8 + +ff00 + +0 + +0 + +Returns the number of correctable ECC errors seen since the last read. Counter saturates at max value. This is cleared when a '1' is written to register bit[1] of ECC CONTROL REGISTER (0x58). +
+STAT_NUM_UNCORR_ERR + +7:0 + +ff + +0 + +0 + +Returns the number of un-correctable errors since the last read. Counter saturates at max value. This is cleared when a '1' is written to register bit[0] of ECC CONTROL REGISTER (0x58). +
+CHE_ECC_STATS_REG_OFFSET@0XF80060F0 + +31:0 + +ffff + + + +0 + +ECC error count register +
+

+

Register ( slcr )ECC_scrub

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ECC_scrub + +0XF80060F4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_ecc_mode + +2:0 + +7 + +0 + +0 + +DRAM ECC Mode. The only valid values that works for this project are 3'b000 (No ECC) and 3'b100 (SEC/DED over 1-beat). To run the design in ECC mode, set reg_ddrc_data_bus_width to 2'b01 (Half bus width) and reg_ddrc_ecc_mode to 3'b100. In this mode, there will be 16-data bits + 6-bit ECC on the DRAM bus. Controller must NOT be put in full bus width mode, when ECC is turned ON. 000 - No ECC, 001 - Reserved 010 - Parity 011 - Reserved 100 - SEC/DED over 1-beat 101 - SEC/DED over multiple beats 110 - Device Correction 111 - Reserved +
+reg_ddrc_dis_scrub + +3:3 + +8 + +1 + +8 + +This feature is NOT supported. Only default value works. 1 - Disable ECC scrubs 0 - Enable ECC scrubs Valid only when reg_ddrc_ecc_mode = 3'b100. +
+ECC_scrub@0XF80060F4 + +31:0 + +f + + + +8 + +ECC mode/scrub register +
+

+

Register ( slcr )phy_rcvr_enable

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rcvr_enable + +0XF8006114 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_dif_on + +3:0 + +f + +0 + +0 + +Value to drive to IO receiver enable pins when turning it ON. When NOT in powerdown or self-refresh (when CKE=1) this value will be sent to the IOs to control receiver on/off. IOD is the size specified by the IO_DIFEN_SIZE parameter. +
+reg_phy_dif_off + +7:4 + +f0 + +0 + +0 + +Value to drive to IO receiver enable pins when turning it OFF. When in powerdown or self-refresh (CKE=0) this value will be sent to the IOs to control receiver on/off. IOD is the size specified by the IO_DIFEN_SIZE parameter. Depending on the IO, one of these signals dif_on or dif_off can be used. +
+phy_rcvr_enable@0XF8006114 + +31:0 + +ff + + + +0 + +Phy receiver enable register +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF8006118 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 1: data slice is valid. 0: read data responses are ignored. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +RESERVED +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +RESERVED +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +RESERVED +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Transmitter for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Receiver for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 2'b10; 1'b1: PRBS pattern shifted early by 1 bit. 1'b0: PRBS pattern without any shift. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 1'b1: sticky error flag is cleared 1'b0: No effect +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF8006118 + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF800611C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 1: data slice is valid. 0: read data responses are ignored. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +RESERVED +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +RESERVED +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +RESERVED +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Transmitter for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Receiver for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 2'b10; 1'b1: PRBS pattern shifted early by 1 bit. 1'b0: PRBS pattern without any shift. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 1'b1: sticky error flag is cleared 1'b0: No effect +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF800611C + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF8006120 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 1: data slice is valid. 0: read data responses are ignored. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +RESERVED +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +RESERVED +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +RESERVED +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Transmitter for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Receiver for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 2'b10; 1'b1: PRBS pattern shifted early by 1 bit. 1'b0: PRBS pattern without any shift. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 1'b1: sticky error flag is cleared 1'b0: No effect +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF8006120 + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )PHY_Config

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+PHY_Config + +0XF8006124 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_data_slice_in_use + +0:0 + +1 + +1 + +1 + +Data bus width selection for Read FIFO RE generation. One bit for each data slice. 1: data slice is valid. 0: read data responses are ignored. Note: The Phy Data Slice 0 must always be enabled. +
+reg_phy_rdlvl_inc_mode + +1:1 + +2 + +0 + +0 + +RESERVED +
+reg_phy_gatelvl_inc_mode + +2:2 + +4 + +0 + +0 + +RESERVED +
+reg_phy_wrlvl_inc_mode + +3:3 + +8 + +0 + +0 + +RESERVED +
+reg_phy_board_lpbk_tx + +4:4 + +10 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Transmitter for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_board_lpbk_rx + +5:5 + +20 + +0 + +0 + +External Board Loopback testing. 1: This Slice behaves as Receiver for board loopback. 0: disable This port must be set '0' always except when in external board level loopback test mode. +
+reg_phy_bist_shift_dq + +14:6 + +7fc0 + +0 + +0 + +Determines whether early shifting is required for a particular DQ bit when reg_phy_bist_mode is 2'b10; 1'b1: PRBS pattern shifted early by 1 bit. 1'b0: PRBS pattern without any shift. +
+reg_phy_bist_err_clr + +23:15 + +ff8000 + +0 + +0 + +Clear the mismatch error flag from the BIST Checker. 1'b1: sticky error flag is cleared 1'b0: No effect +
+reg_phy_dq_offset + +30:24 + +7f000000 + +40 + +40000000 + +Offset value from DQS to DQ. Default value: 0x40 (for 90 degree shift). This is only used when reg_phy_use_wr_level=1. #Note 1: When a port width (W) is multiple of N instances of Ranks or Slices, each instance will get W/N bits. Instance n will get (n+1)*(W/N) -1: n (W/N) bits where n (0, 1, to N-1) is the instance number of Rank or Slice. +
+PHY_Config@0XF8006124 + +31:0 + +7fffffff + + + +40000001 + +PHY configuration register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF800612C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF800612C + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF8006130 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF8006130 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF8006134 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF8006134 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_init_ratio

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_init_ratio + +0XF8006138 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wrlvl_init_ratio + +9:0 + +3ff + +0 + +0 + +The user programmable init ratio used by Write Leveling FSM +
+reg_phy_gatelvl_init_ratio + +19:10 + +ffc00 + +60 + +18000 + +The user programmable init ratio used Gate Leveling FSM +
+phy_init_ratio@0XF8006138 + +31:0 + +fffff + + + +18000 + +PHY init ratio register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF8006140 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF8006140 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF8006144 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF8006144 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF8006148 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF8006148 + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_rd_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_rd_dqs_cfg + +0XF800614C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_rd_dqs_slave_ratio + +9:0 + +3ff + +35 + +35 + +Ratio value for read DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. Provide a default value of 0x40 for most applications +
+reg_phy_rd_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for read DQS slave DLL with the value of the debug_rd_dqs_slave_delay bus. +
+reg_phy_rd_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for read DQS slave DLL with this value. +
+phy_rd_dqs_cfg@0XF800614C + +31:0 + +fffff + + + +35 + +PHY read DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF8006154 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF8006154 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF8006158 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF8006158 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF800615C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF800615C + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_wr_dqs_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_wr_dqs_cfg + +0XF8006160 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_dqs_slave_ratio + +9:0 + +3ff + +80 + +80 + +Ratio value for write DQS slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQS in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_dqs_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write DQS slave DLL with the value of the reg_phy_wr_dqs_slave_delay bus. +
+reg_phy_wr_dqs_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_dqs_slave_force is 1, replace delay/tap value for write DQS slave DLL with this value. +
+phy_wr_dqs_cfg@0XF8006160 + +31:0 + +fffff + + + +80 + +PHY write DQS configuration register for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF8006168 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg@0XF8006168 + +31:0 + +1fffff + + + +b5 + +PHY fifo write enable configuration register for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF800616C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg@0XF800616C + +31:0 + +1fffff + + + +b5 + +PHY fifo write enable configuration register for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF8006170 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg@0XF8006170 + +31:0 + +1fffff + + + +b5 + +PHY fifo write enable configuration register for data slice 0. +
+

+

Register ( slcr )phy_we_cfg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+phy_we_cfg + +0XF8006174 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_fifo_we_slave_ratio + +10:0 + +7ff + +b5 + +b5 + +Ratio value to be used when fifo_we_X_force_mode is set to 0. +
+reg_phy_fifo_we_in_force + +11:11 + +800 + +0 + +0 + +1: overwrite the delay/tap value for fifo_we_X slave DLL with the value of the debug_fifo_we_in_delayX bus. +
+reg_phy_fifo_we_in_delay + +20:12 + +1ff000 + +0 + +0 + +Delay value to be used when debug_fifo_we_in_forceX is set to 1. R is the number of Ranks supported. +
+phy_we_cfg@0XF8006174 + +31:0 + +1fffff + + + +b5 + +PHY fifo write enable configuration register for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF800617C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF800617C + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio configuration register for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF8006180 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF8006180 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio configuration register for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF8006184 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF8006184 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio configuration register for data slice 0. +
+

+

Register ( slcr )wr_data_slv

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+wr_data_slv + +0XF8006188 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_data_slave_ratio + +9:0 + +3ff + +c0 + +c0 + +Ratio value for write data slave DLL. This is the fraction of a clock cycle represented by the shift to be applied to the write DQ muxes in units of 256ths. In other words, the full-cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_wr_data_slave_force + +10:10 + +400 + +0 + +0 + +1: overwrite the delay/tap value for write data slave DLL with the value of the reg_phy_wr_data_slave_force bus. +
+reg_phy_wr_data_slave_delay + +19:11 + +ff800 + +0 + +0 + +If reg_phy_wr_data_slave_force is 1, replace delay/tap value for write data slave DLL with this value. +
+wr_data_slv@0XF8006188 + +31:0 + +fffff + + + +c0 + +PHY write data slave ratio configuration register for data slice 0. +
+

+

Register ( slcr )reg_64

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_64 + +0XF8006190 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_loopback + +0:0 + +1 + +0 + +0 + +Loopback testing. 1: enable, 0: disable +
+reg_phy_bl2 + +1:1 + +2 + +0 + +0 + +Reserved for future Use. +
+reg_phy_at_spd_atpg + +2:2 + +4 + +0 + +0 + +1 = run scan test at full clock speed but with less coverage 0 = run scan test at slow clock speed but with high coverage During normal function mode, this port must be set 0. +
+reg_phy_bist_enable + +3:3 + +8 + +0 + +0 + +Enable the internal BIST generation and checker logic when this port is set HIGH. Setting this port as 0 will stop the BIST generator/checker. In order to run BIST tests, this port must be set along with reg_phy_loopback. +
+reg_phy_bist_force_err + +4:4 + +10 + +0 + +0 + +This register bit is used to check that BIST checker is not giving false pass. When this port is set 1, data bit gets inverted before sending out to the external memory and BIST checker must return a mismatch error. +
+reg_phy_bist_mode + +6:5 + +60 + +0 + +0 + +The mode bits select the pattern type generated by the BIST generator. All the patterns are transmitted continuously once enabled. 2'b00: constant pattern (0 repeated on each DQ bit) 2'b01: low freq pattern (00001111 repeated on each DQ bit) 2'b10: PRBS pattern (2^7-1 PRBS pattern repeated on each DQ bit) Each DQ bit always has same data value except when early shifting in PRBS mode is requested +
+reg_phy_invert_clkout + +7:7 + +80 + +1 + +80 + +Inverts the polarity of DRAM clock. 0: core clock is passed on to DRAM 1: inverted core clock is passed on to DRAM. Use this when CLK can arrive at a DRAM device ahead of DQS or coincidence with DQS based on boad topology. This effectively delays the CLK to the DRAM device by half -cycle, providing a CLK edge that DQS can align to during leveling. +
+reg_phy_all_dq_mpr_rd_resp + +8:8 + +100 + +0 + +0 + +1=assume DRAM provides read response on all DQ bits. (In this mode, dq_in[7:0] are OR'd together and dq_in[15:8] are AND'd together.) 0=(default) best for DRAM read responses on only 1 DQ bit; works with reduced accuracy if DRAM provides read response on all bits. (In this mode dq_in[7:0] are OR'd together and dq_in[15:8] are OR'd together.) +
+reg_phy_sel_logic + +9:9 + +200 + +0 + +0 + +Selects one of the two read leveling algorithms.'b0 = Select algorithm # 1'b1 = Select algorithm # 2 Please refer to Read Data Eye Training section in PHY User Guide for details about the Read Leveling algorithms +
+reg_phy_ctrl_slave_ratio + +19:10 + +ffc00 + +100 + +40000 + +Ratio value for address/command launch timing in phy_ctrl macro. This is the fraction of a clock cycle represented by the shift to be applied to the read DQS in units of 256ths. In other words, the full cycle tap value from the master DLL will be scaled by this number over 256 to get the delay value for the slave delay line. +
+reg_phy_ctrl_slave_force + +20:20 + +100000 + +0 + +0 + +1: overwrite the delay/tap value for address/command timing slave DLL with the value of the reg_phy_rd_dqs_slave_delay bus. +
+reg_phy_ctrl_slave_delay + +27:21 + +fe00000 + +0 + +0 + +If reg_phy_rd_dqs_slave_force is 1, replace delay/tap value for address/command timing slave DLL with this value. This is a bit value, the remaining 2 bits are in register 0x65 bits[19:18]. +
+reg_phy_use_rank0_delays + +28:28 + +10000000 + +1 + +10000000 + +Delay selection 1- Rank 0 delays are used for all ranks 0- Each Rank uses its own delay +
+reg_phy_lpddr + +29:29 + +20000000 + +0 + +0 + +1= mobile/LPDDR DRAM device in use. 0=non-LPDDR DRAM device in use. +
+reg_phy_cmd_latency + +30:30 + +40000000 + +0 + +0 + +If set to 1, command comes to phy_ctrl through a flop. +
+reg_phy_int_lpbk + +31:31 + +80000000 + +0 + +0 + +1=enables the PHY internal loopback for DQ,DQS,DM before Ios. By default must be 0. +
+reg_64@0XF8006190 + +31:0 + +ffffffff + + + +10040080 + +Training control register (2) +
+

+

Register ( slcr )reg_65

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+reg_65 + +0XF8006194 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_phy_wr_rl_delay + +4:0 + +1f + +2 + +2 + +This delay determines when to select the active rank's ratio logic delay for Write Data and Write DQS slave delay lines after PHY receives a write command at Control Interface. The programmed value must be (Write Latency - 4) with a minimum value of 1. +
+reg_phy_rd_rl_delay + +9:5 + +3e0 + +4 + +80 + +This delay determines when to select the active rank's ratio logic delay for Read Data and Read DQS slave delay lines after PHY receives a read command at Control Interface. The programmed value must be (Read Latency - 3) with a minimum value of 1. +
+reg_phy_dll_lock_diff + +13:10 + +3c00 + +f + +3c00 + +The Maximum number of delay line taps variation allowed while maintaining the master DLL lock. When the PHY is in locked state and the variation on the clock exceeds the variation indicated by the register, the lock signal is deasserted +
+reg_phy_use_wr_level + +14:14 + +4000 + +1 + +4000 + +Write Leveling training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by write leveling Note: This is a Synchronous dynamic signal that requires timing closure. +
+reg_phy_use_rd_dqs_gate_level + +15:15 + +8000 + +1 + +8000 + +Read DQS Gate training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by DQS gate leveling Note: This is a Synchronous dynamic signal that requires timing closure. +
+reg_phy_use_rd_data_eye_level + +16:16 + +10000 + +1 + +10000 + +Read Data Eye training control. 0: Use register programmed ratio values 1: Use ratio for delay line calculated by data eye leveling Note: This is a Synchronous dynamic signal that requires timing closure +
+reg_phy_dis_calib_rst + +17:17 + +20000 + +0 + +0 + +Disable the dll_calib (internally generated) signal from resetting the Read Capture FIFO pointers and portions of phy_data. Note: dll_calib is (i) generated by dfi_ctrl_upd_req or (ii) by the PHY when it detects that the clock frequency variation has exceeded the bounds set by reg_phy_dll_lock_diff or (iii) periodically throughout the leveling process. dll_calib will update the slave DL with PVT-compensated values according to master DLL outputs +
+reg_phy_ctrl_slave_delay + +19:18 + +c0000 + +0 + +0 + +If reg-phy_rd_dqs_slave_force is 1, replace delay/tap value for address/command timing slave DLL with this value +
+reg_65@0XF8006194 + +31:0 + +fffff + + + +1fc82 + +Training control register (3) +
+

+

Register ( slcr )page_mask

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+page_mask + +0XF8006204 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_page_addr_mask + +31:0 + +ffffffff + +0 + +0 + +This register must be set based on the value programmed on the reg_ddrc_addrmap_* registers. Set the Column address bits to 0. Set the Page and Bank address bits to 1. This is used for calculating page_match inside the slave modules in Arbiter. The page_match is considered during the arbitration process. This mask applies to 64-bit address and not byte address. Setting this value to 0 disables transaction prioritization based on page/bank match. +
+page_mask@0XF8006204 + +31:0 + +ffffffff + + + +0 + +Page mask register +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF8006208 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port@0XF8006208 + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF800620C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port@0XF800620C + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF8006210 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port@0XF8006210 + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_wr_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_wr_port + +0XF8006214 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_wr_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Write Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_wr_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Write Port. +
+reg_arb_disable_urgent_wr_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Write Port. +
+reg_arb_dis_page_match_wr_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_dis_rmw_portn + +19:19 + +80000 + +1 + +80000 + +FEATURE NOT SUPPORTED. Only 16-bit data aligned transfers allowed when ECC is used. All commands issued as Writes. No RMW support. Disable RMW command generated for this Port 1 - Disable RMW feature 0 - Enable RMW feature When Enabled and ECC mode is set all Write command generated by this port will be RMW. +
+axi_priority_wr_port@0XF8006214 + +31:0 + +f03ff + + + +803ff + +AXI Priority control for write port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF8006218 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF8006218 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF800621C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF800621C + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF8006220 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF8006220 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )axi_priority_rd_port

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+axi_priority_rd_port + +0XF8006224 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_arb_pri_rd_portn + +9:0 + +3ff + +3ff + +3ff + +Priority of this Read Port n. Value in this register used to load the aging counters (when respective port request is asserted and grant is generated to that port). These register can be reprogrammed to set priority of each port. Lower the value more will be priority given to the port. For example if 0x82 (port 0) value is set to 'h3FF, and 0x83 (port 1) is set to 'h0FF, and both port0 and port1 have requests, in this case port1 will get high priority and grant will be given to port1. +
+reg_arb_disable_aging_rd_portn + +16:16 + +10000 + +0 + +0 + +Disable aging for this Read Port. +
+reg_arb_disable_urgent_rd_portn + +17:17 + +20000 + +0 + +0 + +Disable urgent for this Read Port. +
+reg_arb_dis_page_match_rd_portn + +18:18 + +40000 + +0 + +0 + +Disable the page match feature. +
+reg_arb_set_hpr_rd_portn + +19:19 + +80000 + +0 + +0 + +Enable reads to be generated as HPR for this Read Port. +
+axi_priority_rd_port@0XF8006224 + +31:0 + +f03ff + + + +3ff + +AXI Priority control for read port 0. +
+

+

Register ( slcr )lpddr_ctrl0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl0 + +0XF80062A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_lpddr2 + +0:0 + +1 + +0 + +0 + +1=LPDDR2 DRAM device in Use. 0=non-LPDDR2 device in use Present only in designs configured to support LPDDR2. +
+reg_ddrc_per_bank_refresh + +1:1 + +2 + +0 + +0 + +1:Per bank refresh 0:All bank refresh Per bank refresh allows traffic to flow to other banks. Per bank refresh is not supported on all LPDDR2 devices. Present only in designs configured to support LPDDR2. +
+reg_ddrc_derate_enable + +2:2 + +4 + +0 + +0 + +0: Timing parameter derating is disabled. 1: Timing parameter derating is enabled using MR4 read value. Present only in designs configured to support LPDDR2. +
+reg_ddrc_mr4_margin + +11:4 + +ff0 + +0 + +0 + +UNUSED +
+lpddr_ctrl0@0XF80062A8 + +31:0 + +ff7 + + + +0 + +LPDDR2 Control 0 Register +
+

+

Register ( slcr )lpddr_ctrl1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl1 + +0XF80062AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_mr4_read_interval + +31:0 + +ffffffff + +0 + +0 + +Interval between two MR4 reads, USED to derate the timing parameters. Present only in designs configured to support LPDDR2. +
+lpddr_ctrl1@0XF80062AC + +31:0 + +ffffffff + + + +0 + +LPDDR2 Control 1 Register +
+

+

Register ( slcr )lpddr_ctrl2

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl2 + +0XF80062B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_min_stable_clock_x1 + +3:0 + +f + +5 + +5 + +Time to wait after the first CKE high, tINIT2. Present only in designs configured to support LPDDR2. Units: 1 clock cycle. LPDDR2 typically requires 5 x tCK delay. +
+reg_ddrc_idle_after_reset_x32 + +11:4 + +ff0 + +12 + +120 + +Idle time after the reset command, tINIT4. Present only in designs configured to support LPDDR2. Units: 32 clock cycles. +
+reg_ddrc_t_mrw + +21:12 + +3ff000 + +5 + +5000 + +Time to wait during load mode register writes. Present only in designs configured to support LPDDR2. LPDDR2 typically requires value of 5. +
+lpddr_ctrl2@0XF80062B0 + +31:0 + +3fffff + + + +5125 + +LPDDR2 Control 2 Register +
+

+

Register ( slcr )lpddr_ctrl3

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+lpddr_ctrl3 + +0XF80062B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_max_auto_init_x1024 + +7:0 + +ff + +a8 + +a8 + +Maximum duration of the auto initialization, tINIT5. Present only in designs configured to support LPDDR2. Units: 1024 clock cycles. LPDDR2 typically requires 10 us. +
+reg_ddrc_dev_zqinit_x32 + +17:8 + +3ff00 + +12 + +1200 + +ZQ initial calibration, tZQINIT. Present only in designs configured to support LPDDR2. Units: 32 clock cycles. LPDDR2 typically requires 1 us. +
+lpddr_ctrl3@0XF80062B4 + +31:0 + +3ffff + + + +12a8 + +LPDDR2 Control 3 Register +
+

+

POLL ON DCI STATUS

+

Register ( slcr )DDRIOB_DCI_STATUS

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_STATUS + +0XF8000B74 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DONE + +13:13 + +2000 + +1 + +2000 + +DCI done signal +
+DDRIOB_DCI_STATUS@0XF8000B74 + +31:0 + +2000 + + + +2000 + +tobe +
+

+

UNLOCK DDR

+

Register ( slcr )ddrc_ctrl

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ddrc_ctrl + +0XF8006000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reg_ddrc_soft_rstb + +0:0 + +1 + +1 + +1 + +Active low soft reset. 0 = Resets the controller 1 = Takes the controller out of reset Note: Controller must be taken out of reset only after all other registers have been programmed. +
+reg_ddrc_powerdown_en + +1:1 + +2 + +0 + +0 + +Controller power down control. 0 = DDRC powerdown disabled 1 = the controller goes into power down after a programmable number of cycles 'Maximum idle clocks before power down' (reg_ddrc_powerdown_to_x32). Note: This register bit may be reprogrammed during the course of normal operation. +
+reg_ddrc_data_bus_width + +3:2 + +c + +0 + +0 + +DDR bus width control 00 = 32 bit DDR bus 01 = 16 bit DDR bus 1x = reserved +
+reg_ddrc_burst8_refresh + +6:4 + +70 + +0 + +0 + +Refresh timeout register. Programmed value plus one will be the number of refresh timeouts that will be allowed to accumulate before traffic is blocked and the refreshes are forced to execute. Closing pages to perform a refresh is a one-time penalty that must be paid for each group of refreshes; therefore, performing refreshes in a burst reduces the per-refresh penalty of these page closings. Higher numbers for burst_of_N_refresh slightly increases utilization; lower numbers decreases the worst-case latency associated with refreshes. 0 = single refresh 1 = burst-of-2 . 7 = burst-of-8 refresh +
+reg_ddrc_rdwr_idle_gap + +13:7 + +3f80 + +1 + +80 + +When the preferred transaction store is empty for this many clock cycles, switch to the alternate transaction store if it is non-empty. The read transaction store (both high and low priority) is the default preferred transaction store and the write transaction store is the alternate store. When 'Prefer write over read' is set this is reversed. +
+reg_ddrc_dis_rd_bypass + +14:14 + +4000 + +0 + +0 + +Only present in designs supporting read bypass. For Debug only. 0 = Do not disable bypass path for high priority read page hits. 1 = disable bypass path for high priority read page hits. +
+reg_ddrc_dis_act_bypass + +15:15 + +8000 + +0 + +0 + +Only present in designs supporting activate bypass. For Debug only. 0 = Do not disable bypass path for high priority read activates. 1 = disable bypass path for high priority read activates. +
+reg_ddrc_dis_auto_refresh + +16:16 + +10000 + +0 + +0 + +Disable auto-refresh. 0 = do not disable auto-refresh generated by the controller. This input is changeable on the fly. 1 = disable auto-refresh generated by the controller. This input is changeable on the fly. Note: When this transitions from 0 to 1, any pending refreshes will be immediately scheduled by the controller. +
+ddrc_ctrl@0XF8006000 + +31:0 + +1ffff + + + +81 + +DDRC Control Register +
+

+

CHECK DDR STATUS

+

Register ( slcr )mode_sts_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+mode_sts_reg + +0XF8006054 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+ddrc_reg_operating_mode + +2:0 + +7 + +1 + +1 + +Gives the status of the controller. 0 = DDRC Init 1 = Normal operation 2 = Power-down mode 3 = Self-refresh mode 4 and above = deep power down mode (LPDDR2 only) +
+mode_sts_reg@0XF8006054 + +31:0 + +7 + + + +1 + +tobe +
+

+ +

+

ps7_mio_init_data_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DDRIOB_ADDR0 + + +0XF8000B40 + +32 + +RW + +0x000000 + +DDRIOB Address 0 Configuartion Register +
+ +DDRIOB_ADDR1 + + +0XF8000B44 + +32 + +RW + +0x000000 + +DDRIOB Address 1 Configuration Register +
+ +DDRIOB_DATA0 + + +0XF8000B48 + +32 + +RW + +0x000000 + +DDRIOB Data 0 Configuration Register +
+ +DDRIOB_DATA1 + + +0XF8000B4C + +32 + +RW + +0x000000 + +DDRIOB Data 1 Configuration Register +
+ +DDRIOB_DIFF0 + + +0XF8000B50 + +32 + +RW + +0x000000 + +DDRIOB Differential DQS 0 Configuration Register +
+ +DDRIOB_DIFF1 + + +0XF8000B54 + +32 + +RW + +0x000000 + +DDRIOB Differential DQS 1 Configuration Register +
+ +DDRIOB_CLOCK + + +0XF8000B58 + +32 + +RW + +0x000000 + +DDRIOB Differential Clock Configuration Register +
+ +DDRIOB_DRIVE_SLEW_ADDR + + +0XF8000B5C + +32 + +RW + +0x000000 + +DDRIOB Drive Slew Address Register +
+ +DDRIOB_DRIVE_SLEW_DATA + + +0XF8000B60 + +32 + +RW + +0x000000 + +DDRIOB Drive Slew Data Register +
+ +DDRIOB_DRIVE_SLEW_DIFF + + +0XF8000B64 + +32 + +RW + +0x000000 + +DDRIOB Drive Slew Differential Strobe Register +
+ +DDRIOB_DRIVE_SLEW_CLOCK + + +0XF8000B68 + +32 + +RW + +0x000000 + +DDRIOB Drive Slew Clcok Register +
+ +DDRIOB_DDR_CTRL + + +0XF8000B6C + +32 + +RW + +0x000000 + +DDRIOB DDR Control Register +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDRIOB DCI configuration +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDRIOB DCI configuration +
+ +DDRIOB_DCI_CTRL + + +0XF8000B70 + +32 + +RW + +0x000000 + +DDRIOB DCI configuration +
+ +MIO_PIN_00 + + +0XF8000700 + +32 + +RW + +0x000000 + +MIO Control for Pin 0 +
+ +MIO_PIN_01 + + +0XF8000704 + +32 + +RW + +0x000000 + +MIO Control for Pin 1 +
+ +MIO_PIN_02 + + +0XF8000708 + +32 + +RW + +0x000000 + +MIO Control for Pin 2 +
+ +MIO_PIN_03 + + +0XF800070C + +32 + +RW + +0x000000 + +MIO Control for Pin 3 +
+ +MIO_PIN_04 + + +0XF8000710 + +32 + +RW + +0x000000 + +MIO Control for Pin 4 +
+ +MIO_PIN_05 + + +0XF8000714 + +32 + +RW + +0x000000 + +MIO Control for Pin 5 +
+ +MIO_PIN_06 + + +0XF8000718 + +32 + +RW + +0x000000 + +MIO Control for Pin 6 +
+ +MIO_PIN_07 + + +0XF800071C + +32 + +RW + +0x000000 + +MIO Control for Pin 7 +
+ +MIO_PIN_08 + + +0XF8000720 + +32 + +RW + +0x000000 + +MIO Control for Pin 8 +
+ +MIO_PIN_09 + + +0XF8000724 + +32 + +RW + +0x000000 + +MIO Control for Pin 9 +
+ +MIO_PIN_10 + + +0XF8000728 + +32 + +RW + +0x000000 + +MIO Control for Pin 10 +
+ +MIO_PIN_11 + + +0XF800072C + +32 + +RW + +0x000000 + +MIO Control for Pin 11 +
+ +MIO_PIN_12 + + +0XF8000730 + +32 + +RW + +0x000000 + +MIO Control for Pin 12 +
+ +MIO_PIN_13 + + +0XF8000734 + +32 + +RW + +0x000000 + +MIO Control for Pin 13 +
+ +MIO_PIN_14 + + +0XF8000738 + +32 + +RW + +0x000000 + +MIO Control for Pin 14 +
+ +MIO_PIN_15 + + +0XF800073C + +32 + +RW + +0x000000 + +MIO Control for Pin 15 +
+ +MIO_PIN_16 + + +0XF8000740 + +32 + +RW + +0x000000 + +MIO Control for Pin 16 +
+ +MIO_PIN_17 + + +0XF8000744 + +32 + +RW + +0x000000 + +MIO Control for Pin 17 +
+ +MIO_PIN_18 + + +0XF8000748 + +32 + +RW + +0x000000 + +MIO Control for Pin 18 +
+ +MIO_PIN_19 + + +0XF800074C + +32 + +RW + +0x000000 + +MIO Control for Pin 19 +
+ +MIO_PIN_20 + + +0XF8000750 + +32 + +RW + +0x000000 + +MIO Control for Pin 20 +
+ +MIO_PIN_21 + + +0XF8000754 + +32 + +RW + +0x000000 + +MIO Control for Pin 21 +
+ +MIO_PIN_22 + + +0XF8000758 + +32 + +RW + +0x000000 + +MIO Control for Pin 22 +
+ +MIO_PIN_23 + + +0XF800075C + +32 + +RW + +0x000000 + +MIO Control for Pin 23 +
+ +MIO_PIN_24 + + +0XF8000760 + +32 + +RW + +0x000000 + +MIO Control for Pin 24 +
+ +MIO_PIN_25 + + +0XF8000764 + +32 + +RW + +0x000000 + +MIO Control for Pin 25 +
+ +MIO_PIN_26 + + +0XF8000768 + +32 + +RW + +0x000000 + +MIO Control for Pin 26 +
+ +MIO_PIN_27 + + +0XF800076C + +32 + +RW + +0x000000 + +MIO Control for Pin 27 +
+ +MIO_PIN_28 + + +0XF8000770 + +32 + +RW + +0x000000 + +MIO Control for Pin 28 +
+ +MIO_PIN_29 + + +0XF8000774 + +32 + +RW + +0x000000 + +MIO Control for Pin 29 +
+ +MIO_PIN_30 + + +0XF8000778 + +32 + +RW + +0x000000 + +MIO Control for Pin 30 +
+ +MIO_PIN_31 + + +0XF800077C + +32 + +RW + +0x000000 + +MIO Control for Pin 31 +
+ +MIO_PIN_32 + + +0XF8000780 + +32 + +RW + +0x000000 + +MIO Control for Pin 32 +
+ +MIO_PIN_33 + + +0XF8000784 + +32 + +RW + +0x000000 + +MIO Control for Pin 33 +
+ +MIO_PIN_34 + + +0XF8000788 + +32 + +RW + +0x000000 + +MIO Control for Pin 34 +
+ +MIO_PIN_35 + + +0XF800078C + +32 + +RW + +0x000000 + +MIO Control for Pin 35 +
+ +MIO_PIN_36 + + +0XF8000790 + +32 + +RW + +0x000000 + +MIO Control for Pin 36 +
+ +MIO_PIN_37 + + +0XF8000794 + +32 + +RW + +0x000000 + +MIO Control for Pin 37 +
+ +MIO_PIN_38 + + +0XF8000798 + +32 + +RW + +0x000000 + +MIO Control for Pin 38 +
+ +MIO_PIN_39 + + +0XF800079C + +32 + +RW + +0x000000 + +MIO Control for Pin 39 +
+ +MIO_PIN_40 + + +0XF80007A0 + +32 + +RW + +0x000000 + +MIO Control for Pin 40 +
+ +MIO_PIN_41 + + +0XF80007A4 + +32 + +RW + +0x000000 + +MIO Control for Pin 41 +
+ +MIO_PIN_42 + + +0XF80007A8 + +32 + +RW + +0x000000 + +MIO Control for Pin 42 +
+ +MIO_PIN_43 + + +0XF80007AC + +32 + +RW + +0x000000 + +MIO Control for Pin 43 +
+ +MIO_PIN_44 + + +0XF80007B0 + +32 + +RW + +0x000000 + +MIO Control for Pin 44 +
+ +MIO_PIN_45 + + +0XF80007B4 + +32 + +RW + +0x000000 + +MIO Control for Pin 45 +
+ +MIO_PIN_46 + + +0XF80007B8 + +32 + +RW + +0x000000 + +MIO Control for Pin 46 +
+ +MIO_PIN_47 + + +0XF80007BC + +32 + +RW + +0x000000 + +MIO Control for Pin 47 +
+ +MIO_PIN_48 + + +0XF80007C0 + +32 + +RW + +0x000000 + +MIO Control for Pin 48 +
+ +MIO_PIN_49 + + +0XF80007C4 + +32 + +RW + +0x000000 + +MIO Control for Pin 49 +
+ +MIO_PIN_50 + + +0XF80007C8 + +32 + +RW + +0x000000 + +MIO Control for Pin 50 +
+ +MIO_PIN_51 + + +0XF80007CC + +32 + +RW + +0x000000 + +MIO Control for Pin 51 +
+ +MIO_PIN_52 + + +0XF80007D0 + +32 + +RW + +0x000000 + +MIO Control for Pin 52 +
+ +MIO_PIN_53 + + +0XF80007D4 + +32 + +RW + +0x000000 + +MIO Control for Pin 53 +
+ +SD0_WP_CD_SEL + + +0XF8000830 + +32 + +RW + +0x000000 + +SDIO 0 WP CD select register +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_mio_init_data_1_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register always returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

OCM REMAPPING

+

DDRIOB SETTINGS

+

Register ( slcr )DDRIOB_ADDR0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_ADDR0 + +0XF8000B40 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +0 + +0 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_ADDR0@0XF8000B40 + +31:0 + +fff + + + +600 + +DDRIOB Address 0 Configuartion Register +
+

+

Register ( slcr )DDRIOB_ADDR1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_ADDR1 + +0XF8000B44 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +0 + +0 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_ADDR1@0XF8000B44 + +31:0 + +fff + + + +600 + +DDRIOB Address 1 Configuration Register +
+

+

Register ( slcr )DDRIOB_DATA0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA0 + +0XF8000B48 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +1 + +2 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_DATA0@0XF8000B48 + +31:0 + +fff + + + +672 + +DDRIOB Data 0 Configuration Register +
+

+

Register ( slcr )DDRIOB_DATA1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA1 + +0XF8000B4C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +1 + +2 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_DATA1@0XF8000B4C + +31:0 + +fff + + + +672 + +DDRIOB Data 1 Configuration Register +
+

+

Register ( slcr )DDRIOB_DIFF0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF0 + +0XF8000B50 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +2 + +4 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_DIFF0@0XF8000B50 + +31:0 + +fff + + + +674 + +DDRIOB Differential DQS 0 Configuration Register +
+

+

Register ( slcr )DDRIOB_DIFF1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF1 + +0XF8000B54 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +2 + +4 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +1 + +10 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +3 + +60 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_DIFF1@0XF8000B54 + +31:0 + +fff + + + +674 + +DDRIOB Differential DQS 1 Configuration Register +
+

+

Register ( slcr )DDRIOB_CLOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_CLOCK + +0XF8000B58 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+INP_POWER + +0:0 + +1 + +0 + +0 + +Specifies DDR IOB input amp power mode. 0- low power mode. 1- high performance mode. +
+INP_TYPE + +2:1 + +6 + +0 + +0 + +Input buffer controls. 00 - Input off, reads 0. 01 - Vref based differential reciever for SSTL, HSTL. 10 - Differential input reciever. 11- LVCMOS reviever. +
+DCI_UPDATE + +3:3 + +8 + +0 + +0 + +DCI Update Enabled 0 - disabled 1 - enabled +
+TERM_EN + +4:4 + +10 + +0 + +0 + +Tri State Termination Enabled 0 - disabled 1 - enabled +
+DCR_TYPE + +6:5 + +60 + +0 + +0 + +DCI Update 00 - DCI Disabled 01 - DCI Drive (HSTL12_DCI) 10 - Reserved 11 - DCI Termination (SSTL15_T_DCI) +
+IBUF_DISABLE_MODE + +7:7 + +80 + +0 + +0 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +0 + +0 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+OUTPUT_EN + +10:9 + +600 + +3 + +600 + +Enables output mode to enable output ties to 00 - ibuf 01 - reserved 10 - reserved 11 - obuf +
+PULLUP_EN + +11:11 + +800 + +0 + +0 + +enables pullup on output 0 - no pullup 1 - pullup enabled +
+DDRIOB_CLOCK@0XF8000B58 + +31:0 + +fff + + + +600 + +DDRIOB Differential Clock Configuration Register +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_ADDR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_ADDR + +0XF8000B5C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +Programs the DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +Programs the DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +3 + +c000 + +Programs the DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +3 + +180000 + +Programs the DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000 - Normal Operation 001 : 111 - Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_ADDR@0XF8000B5C + +31:0 + +ffffffff + + + +18c61c + +DDRIOB Drive Slew Address Register +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_DATA

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_DATA + +0XF8000B60 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +Programs the DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +Programs the DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +6 + +18000 + +Programs the DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +Programs the DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000 - Normal Operation 001 : 111 - Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_DATA@0XF8000B60 + +31:0 + +ffffffff + + + +f9861c + +DDRIOB Drive Slew Data Register +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_DIFF

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_DIFF + +0XF8000B64 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +Programs the DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +Programs the DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +6 + +18000 + +Programs the DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +Programs the DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000 - Normal Operation 001 : 111 - Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_DIFF@0XF8000B64 + +31:0 + +ffffffff + + + +f9861c + +DDRIOB Drive Slew Differential Strobe Register +
+

+

Register ( slcr )DDRIOB_DRIVE_SLEW_CLOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DRIVE_SLEW_CLOCK + +0XF8000B68 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DRIVE_P + +6:0 + +7f + +1c + +1c + +Programs the DDRIO drive strength for the P devices +
+DRIVE_N + +13:7 + +3f80 + +c + +600 + +Programs the DDRIO drive strength for the N devices +
+SLEW_P + +18:14 + +7c000 + +6 + +18000 + +Programs the DDRIO slew rate for the P devices +
+SLEW_N + +23:19 + +f80000 + +1f + +f80000 + +Programs the DDRIO slew rate for the N devices +
+GTL + +26:24 + +7000000 + +0 + +0 + +Test Control 000 - Normal Operation 001 : 111 - Test Mode +
+RTERM + +31:27 + +f8000000 + +0 + +0 + +Program the rterm +
+DDRIOB_DRIVE_SLEW_CLOCK@0XF8000B68 + +31:0 + +ffffffff + + + +f9861c + +DDRIOB Drive Slew Clcok Register +
+

+

Register ( slcr )DDRIOB_DDR_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DDR_CTRL + +0XF8000B6C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+VREF_INT_EN + +0:0 + +1 + +0 + +0 + +Enables VREF internal generator +
+VREF_SEL + +4:1 + +1e + +0 + +0 + +Specifies DDR IOB Vref generator output 0001 - VREF = 0.6V for LPDDR2 with 1.2V IO 0010 - VREF = 0.675V for LPDDR3 1.35 V IO 0100 - VREF = 0.75V for DDR3 with 1.5V IO 1000 - VREF = 0.90V for DDR2 with 1.8V IO +
+VREF_EXT_EN + +6:5 + +60 + +3 + +60 + +Enables External VREF input X0 - Disable External VREF for lower 16 bits X1 - Enable External VREF for lower 16 bits 0X - Disable External VREF for upper 16 bits 1X - Enable External VREF for upper 16 bits +
+VREF_PULLUP_EN + +8:7 + +180 + +0 + +0 + +Enables VREF pull-up resistors X0 - Disable VREF pull-up for lower 16 bits X1 - Enable VREF pull-up for lower 16 bits 0X - Disable VREF pull-up for upper 16 bits 1X - Enable VREF pull-up for upper 16 bits +
+REFIO_EN + +9:9 + +200 + +1 + +200 + +Enables VRP,VRN 0 - VRP/VRN not used 1 - VRP/VRN used as refio +
+REFIO_PULLUP_EN + +12:12 + +1000 + +0 + +0 + +Enables VRP,VRN pull-up resistors 0 -no pull-up 1 - enable pull-up resistors +
+DRST_B_PULLUP_EN + +13:13 + +2000 + +0 + +0 + +Enables pull-up resistors 0 -no pull-up 1 - enable pull-up resistors +
+CKE_PULLUP_EN + +14:14 + +4000 + +0 + +0 + +Enables pull-up resistors 0 -no pull-up 1 - enable pull-up resistors +
+DDRIOB_DDR_CTRL@0XF8000B6C + +31:0 + +73ff + + + +260 + +DDRIOB DDR Control Register +
+

+

ASSERT RESET

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +1 + +1 + +At least toggle once to initialise flops in DCI system +
+VRN_OUT + +5:5 + +20 + +1 + +20 + +VRN output value +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +21 + + + +21 + +DDRIOB DCI configuration +
+

+

DEASSERT RESET

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +0 + +0 + +At least toggle once to initialise flops in DCI system +
+VRN_OUT + +5:5 + +20 + +1 + +20 + +VRN output value +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +21 + + + +20 + +DDRIOB DCI configuration +
+

+

Register ( slcr )DDRIOB_DCI_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DCI_CTRL + +0XF8000B70 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+RESET + +0:0 + +1 + +1 + +1 + +At least toggle once to initialise flops in DCI system +
+ENABLE + +1:1 + +2 + +1 + +2 + +1 if any iob's use a terminate type, or if dci test block used +
+VRP_TRI + +2:2 + +4 + +0 + +0 + +VRP tristate value +
+VRN_TRI + +3:3 + +8 + +0 + +0 + +VRN tristate value +
+VRP_OUT + +4:4 + +10 + +0 + +0 + +VRP output value +
+VRN_OUT + +5:5 + +20 + +1 + +20 + +VRN output value +
+NREF_OPT1 + +7:6 + +c0 + +0 + +0 + +Reserved +
+NREF_OPT2 + +10:8 + +700 + +0 + +0 + +Reserved +
+NREF_OPT4 + +13:11 + +3800 + +1 + +800 + +Reserved +
+PREF_OPT1 + +16:14 + +1c000 + +0 + +0 + +Reserved +
+PREF_OPT2 + +19:17 + +e0000 + +0 + +0 + +Reserved +
+UPDATE_CONTROL + +20:20 + +100000 + +0 + +0 + +DCI Update +
+INIT_COMPLETE + +21:21 + +200000 + +0 + +0 + +test Internal to IO bank +
+TST_CLK + +22:22 + +400000 + +0 + +0 + +Emulate DCI clock +
+TST_HLN + +23:23 + +800000 + +0 + +0 + +Emulate comparator output (VRN) +
+TST_HLP + +24:24 + +1000000 + +0 + +0 + +Emulate comparator output (VRP) +
+TST_RST + +25:25 + +2000000 + +0 + +0 + +Emulate Reset +
+INT_DCI_EN + +26:26 + +4000000 + +0 + +0 + +Need explanation here +
+DDRIOB_DCI_CTRL@0XF8000B70 + +31:0 + +7ffffff + + + +823 + +DDRIOB DCI configuration +
+

+

MIO PROGRAMMING

+

Register ( slcr )MIO_PIN_00

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_00 + +0XF8000700 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi_sel, Output, qspi_n_ss_out_upper- (QSPI Upper select) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= Not Used +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= smc_cs0, Output, smc_sram_cs_n[0]- (SRAM CS0) 2= nand_cs, Output, smc_nand_cs_n- (NAND chip select) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[0]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[0]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_00@0XF8000700 + +31:0 + +3fff + + + +1600 + +MIO Control for Pin 0 +
+

+

Register ( slcr )MIO_PIN_01

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_01 + +0XF8000704 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi_sel, Output, qspi_n_ss_out- (QSPI Select) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= Not Used +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= smc_a25, Output, smc_sram_add[25]- (SRAM Address) 2= smc_cs1, Output, smc_sram_cs_n[1]- (SRAM CS1) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[1]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[1]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_01@0XF8000704 + +31:0 + +3fff + + + +1602 + +MIO Control for Pin 1 +
+

+

Register ( slcr )MIO_PIN_02

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_02 + +0XF8000708 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Output, qspi_mo_mo0- (QSPI Databus) 1= qspi, Input, qspi_si_mi0- (QSPI Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[8]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_clk- (SRAM Clock) 2= nand, Output, smc_nand_ale- (NAND Address Latch Enable) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[2]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[2]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for mode[0] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_02@0XF8000708 + +31:0 + +3fff + + + +602 + +MIO Control for Pin 2 +
+

+

Register ( slcr )MIO_PIN_03

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_03 + +0XF800070C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi_mi1- (QSPI Databus) 1= qspi, Output, qspi_so_mo1- (QSPI Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[9]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[0]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[0]- (SRAM Data) 2= nand, Output, smc_nand_we_b- (NAND Write Enable) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[3]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[3]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for mode[1] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_03@0XF800070C + +31:0 + +3fff + + + +602 + +MIO Control for Pin 3 +
+

+

Register ( slcr )MIO_PIN_04

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_04 + +0XF8000710 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi2- (QSPI Databus) 1= qspi, Output, qspi_mo2- (QSPI Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[10]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[1]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[1]- (SRAM Data) 2= nand, Input, smc_nand_data_in[2]- (NAND Data Bus) = nand, Output, smc_nand_data_out[2]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[4]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[4]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for mode[2] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_04@0XF8000710 + +31:0 + +3fff + + + +602 + +MIO Control for Pin 4 +
+

+

Register ( slcr )MIO_PIN_05

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_05 + +0XF8000714 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi3- (QSPI Databus) 1= qspi, Output, qspi_mo3- (QSPI Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[11]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[2]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[2]- (SRAM Data) 2= nand, Input, smc_nand_data_in[0]- (NAND Data Bus) = nand, Output, smc_nand_data_out[0]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[5]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[5]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for mode[3] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_05@0XF8000714 + +31:0 + +3fff + + + +602 + +MIO Control for Pin 5 +
+

+

Register ( slcr )MIO_PIN_06

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_06 + +0XF8000718 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Output, qspi_sclk_out- (QSPI Clock) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[12]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[3]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[3]- (SRAM Data) 2= nand, Input, smc_nand_data_in[1]- (NAND Data Bus) = nand, Output, smc_nand_data_out[1]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[6]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[6]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for mode[4] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_06@0XF8000718 + +31:0 + +3fff + + + +602 + +MIO Control for Pin 6 +
+

+

Register ( slcr )MIO_PIN_07

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_07 + +0XF800071C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[13]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_oe_b- (SRAM Output enable) 2= nand, Output, smc_nand_cle- (NAND Command Latch Enable) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Output, gpio_0_pin_out[7]- (GPIO bank 0) 1= Not Used 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= Not Used +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for vcfg[0] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_07@0XF800071C + +31:0 + +3fff + + + +600 + +MIO Control for Pin 7 +
+

+

Register ( slcr )MIO_PIN_08

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_08 + +0XF8000720 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Output, qspi_clk_for_lpbk- (QSPI Clock to be fed-back) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[14]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_we_b- (SRAM Write enable) 2= nand, Output, smc_nand_re_b- (NAND Read Enable) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Output, gpio_0_pin_out[8]- (GPIO bank 0) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled Pull-up disabled by default as this pin is used for vcfg[1] +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_08@0XF8000720 + +31:0 + +3fff + + + +602 + +MIO Control for Pin 8 +
+

+

Register ( slcr )MIO_PIN_09

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_09 + +0XF8000724 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Output, qspi_sclk_out_upper- (QSPI Upper Clock) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[15]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[6]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[6]- (SRAM Data) 2= nand, Input, smc_nand_data_in[4]- (NAND Data Bus) = nand, Output, smc_nand_data_out[4]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[9]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[9]- (GPIO bank 0) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= Not Used 3= Not Used 4= Not Used 5= Not Used 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_09@0XF8000724 + +31:0 + +3fff + + + +1600 + +MIO Control for Pin 9 +
+

+

Register ( slcr )MIO_PIN_10

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_10 + +0XF8000728 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi_upper[0]- (QSPI Upper Databus) 1= qspi, Output, qspi_mo_upper[0]- (QSPI Upper Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[2]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[7]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[7]- (SRAM Data) 2= nand, Input, smc_nand_data_in[5]- (NAND Data Bus) = nand, Output, smc_nand_data_out[5]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[10]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[10]- (GPIO bank 0) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_data_in[0]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[0]- (4-bit Data bus) 5= spi1, Output, spi1_mo- (MOSI signal) 5= spi1, Input, spi1_si- (MOSI signal) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_10@0XF8000728 + +31:0 + +3fff + + + +1600 + +MIO Control for Pin 10 +
+

+

Register ( slcr )MIO_PIN_11

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_11 + +0XF800072C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi_upper[1]- (QSPI Upper Databus) 1= qspi, Output, qspi_mo_upper[1]- (QSPI Upper Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[3]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[4]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[4]- (SRAM Data) 2= nand, Input, smc_nand_data_in[6]- (NAND Data Bus) = nand, Output, smc_nand_data_out[6]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[11]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[11]- (GPIO bank 0) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_cmd_in- (Command Indicator) 4= sd1, Output, sd1_cmd_out- (Command Indicator) 5= spi1, Input, spi1_mi- (MISO signal) 5= spi1, Output, spi1_so- (MISO signal) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_11@0XF800072C + +31:0 + +3fff + + + +1600 + +MIO Control for Pin 11 +
+

+

Register ( slcr )MIO_PIN_12

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_12 + +0XF8000730 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi_upper[2]- (QSPI Upper Databus) 1= qspi, Output, qspi_mo_upper[2]- (QSPI Upper Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_ctl, Output, traceclk- (Trace Port Clock) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_wait- (SRAM Wait State indicator) 2= nand, Input, smc_nand_data_in[7]- (NAND Data Bus) = nand, Output, smc_nand_data_out[7]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +2 + +40 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[12]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[12]- (GPIO bank 0) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_clk_in- (SDSDIO clock) 4= sd1, Output, sd1_clk_out- (SDSDIO clock) 5= spi1, Input, spi1_sclk_in- (SPI Clock) 5= spi1, Output, spi1_sclk_out- (SPI Clock) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_12@0XF8000730 + +31:0 + +3fff + + + +1640 + +MIO Control for Pin 12 +
+

+

Register ( slcr )MIO_PIN_13

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_13 + +0XF8000734 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= qspi, Input, qspi_mi_upper[3]- (QSPI Upper Databus) 1= qspi, Output, qspi_mo_upper[3]- (QSPI Upper Databus) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_ctl, Output, tracectl- (Trace Port Control Signal) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_data_in[5]- (SRAM Data) = sram_nor, Output, smc_sram_data_out[5]- (SRAM Data) 2= nand, Input, smc_nand_data_in[3]- (NAND Data Bus) = nand, Output, smc_nand_data_out[3]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +2 + +40 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[13]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[13]- (GPIO bank 0) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_data_in[1]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[1]- (4-bit Data bus) 5= spi1, Input, spi1_n_ss_in- (SPI Master Selects) 5= spi1, Output, spi1_n_ss_out[0]- (SPI Master Selects) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_13@0XF8000734 + +31:0 + +3fff + + + +1640 + +MIO Control for Pin 13 +
+

+

Register ( slcr )MIO_PIN_14

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_14 + +0XF8000738 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[0]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Input, smc_sram_fbclk- (SRAM Feedback Clock) 2= nand, Input, smc_nand_busy- (NAND Busy) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +1 + +20 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[14]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[14]- (GPIO bank 0) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= wdt, Input, wdt_clk_in- (Watch Dog Timer Input clock) 4= sd1, Input, sd1_data_in[2]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[2]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[1]- (SPI Master Selects) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_14@0XF8000738 + +31:0 + +3fff + + + +1621 + +MIO Control for Pin 14 +
+

+

Register ( slcr )MIO_PIN_15

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_15 + +0XF800073C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[1]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[0]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +1 + +20 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[15]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[15]- (GPIO bank 0) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= wdt, Output, wdt_rst_out- (Watch Dog Timer Output clock) 4= sd1, Input, sd1_data_in[3]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[3]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +3 + +600 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_15@0XF800073C + +31:0 + +3fff + + + +1620 + +MIO Control for Pin 15 +
+

+

Register ( slcr )MIO_PIN_16

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_16 + +0XF8000740 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Output, gem0_rgmii_tx_clk- (TX RGMII clock) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[4]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[1]- (SRAM Address) 2= nand, Input, smc_nand_data_in[8]- (NAND Data Bus) = nand, Output, smc_nand_data_out[8]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[16]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[16]- (GPIO bank 0) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_clk_in- (SDSDIO clock) 4= sd0, Output, sd0_clk_out- (SDSDIO clock) 5= spi0, Input, spi0_sclk_in- (SPI Clock) 5= spi0, Output, spi0_sclk_out- (SPI Clock) 6= ttc1, Output, ttc1_wave_out- (TTC waveform clock) 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_16@0XF8000740 + +31:0 + +3fff + + + +1202 + +MIO Control for Pin 16 +
+

+

Register ( slcr )MIO_PIN_17

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_17 + +0XF8000744 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Output, gem0_rgmii_txd[0]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[5]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[2]- (SRAM Address) 2= nand, Input, smc_nand_data_in[9]- (NAND Data Bus) = nand, Output, smc_nand_data_out[9]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[17]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[17]- (GPIO bank 0) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_cmd_in- (Command Indicator) 4= sd0, Output, sd0_cmd_out- (Command Indicator) 5= spi0, Input, spi0_mi- (MISO signal) 5= spi0, Output, spi0_so- (MISO signal) 6= ttc1, Input, ttc1_clk_in- (TTC input clock) 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_17@0XF8000744 + +31:0 + +3fff + + + +1202 + +MIO Control for Pin 17 +
+

+

Register ( slcr )MIO_PIN_18

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_18 + +0XF8000748 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Output, gem0_rgmii_txd[1]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[6]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[3]- (SRAM Address) 2= nand, Input, smc_nand_data_in[10]- (NAND Data Bus) = nand, Output, smc_nand_data_out[10]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[18]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[18]- (GPIO bank 0) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_data_in[0]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[0]- (4-bit Data bus) 5= spi0, Input, spi0_n_ss_in- (SPI Master Selects) 5= spi0, Output, spi0_n_ss_out[0]- (SPI Master Selects) 6= ttc0, Output, ttc0_wave_out- (TTC waveform clock) 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_18@0XF8000748 + +31:0 + +3fff + + + +1202 + +MIO Control for Pin 18 +
+

+

Register ( slcr )MIO_PIN_19

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_19 + +0XF800074C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Output, gem0_rgmii_txd[2]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[7]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[4]- (SRAM Address) 2= nand, Input, smc_nand_data_in[11]- (NAND Data Bus) = nand, Output, smc_nand_data_out[11]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[19]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[19]- (GPIO bank 0) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_data_in[1]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[1]- (4-bit Data bus) 5= spi0, Output, spi0_n_ss_out[1]- (SPI Master Selects) 6= ttc0, Input, ttc0_clk_in- (TTC input clock) 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_19@0XF800074C + +31:0 + +3fff + + + +1202 + +MIO Control for Pin 19 +
+

+

Register ( slcr )MIO_PIN_20

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_20 + +0XF8000750 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Output, gem0_rgmii_txd[3]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= Not Used +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[5]- (SRAM Address) 2= nand, Input, smc_nand_data_in[12]- (NAND Data Bus) = nand, Output, smc_nand_data_out[12]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[20]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[20]- (GPIO bank 0) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_data_in[2]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[2]- (4-bit Data bus) 5= spi0, Output, spi0_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_20@0XF8000750 + +31:0 + +3fff + + + +1202 + +MIO Control for Pin 20 +
+

+

Register ( slcr )MIO_PIN_21

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_21 + +0XF8000754 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Output, gem0_rgmii_tx_ctl- (TX RGMII control) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= Not Used +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[6]- (SRAM Address) 2= nand, Input, smc_nand_data_in[13]- (NAND Data Bus) = nand, Output, smc_nand_data_out[13]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[21]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[21]- (GPIO bank 0) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_data_in[3]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[3]- (4-bit Data bus) 5= spi0, Output, spi0_mo- (MOSI signal) 5= spi0, Input, spi0_si- (MOSI signal) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_21@0XF8000754 + +31:0 + +3fff + + + +1202 + +MIO Control for Pin 21 +
+

+

Register ( slcr )MIO_PIN_22

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_22 + +0XF8000758 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Input, gem0_rgmii_rx_clk- (RX RGMII clock) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[2]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[7]- (SRAM Address) 2= nand, Input, smc_nand_data_in[14]- (NAND Data Bus) = nand, Output, smc_nand_data_out[14]- (NAND Data Bus) 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[22]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[22]- (GPIO bank 0) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_data_in[0]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[0]- (4-bit Data bus) 5= spi1, Output, spi1_mo- (MOSI signal) 5= spi1, Input, spi1_si- (MOSI signal) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_22@0XF8000758 + +31:0 + +3fff + + + +1203 + +MIO Control for Pin 22 +
+

+

Register ( slcr )MIO_PIN_23

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_23 + +0XF800075C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Input, gem0_rgmii_rxd[0]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[3]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[8]- (SRAM Address) 2= nand, Input, smc_nand_data_in[15]- (NAND Data Bus) = nand, Output, smc_nand_data_out[15]- (NAND Data Bus) 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[23]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[23]- (GPIO bank 0) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_cmd_in- (Command Indicator) 4= sd1, Output, sd1_cmd_out- (Command Indicator) 5= spi1, Input, spi1_mi- (MISO signal) 5= spi1, Output, spi1_so- (MISO signal) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_23@0XF800075C + +31:0 + +3fff + + + +1203 + +MIO Control for Pin 23 +
+

+

Register ( slcr )MIO_PIN_24

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_24 + +0XF8000760 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Input, gem0_rgmii_rxd[1]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_ctl, Output, traceclk- (Trace Port Clock) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[9]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[24]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[24]- (GPIO bank 0) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_clk_in- (SDSDIO clock) 4= sd1, Output, sd1_clk_out- (SDSDIO clock) 5= spi1, Input, spi1_sclk_in- (SPI Clock) 5= spi1, Output, spi1_sclk_out- (SPI Clock) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_24@0XF8000760 + +31:0 + +3fff + + + +1203 + +MIO Control for Pin 24 +
+

+

Register ( slcr )MIO_PIN_25

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_25 + +0XF8000764 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Input, gem0_rgmii_rxd[2]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_ctl, Output, tracectl- (Trace Port Control Signal) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[10]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[25]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[25]- (GPIO bank 0) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_data_in[1]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[1]- (4-bit Data bus) 5= spi1, Input, spi1_n_ss_in- (SPI Master Selects) 5= spi1, Output, spi1_n_ss_out[0]- (SPI Master Selects) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_25@0XF8000764 + +31:0 + +3fff + + + +1203 + +MIO Control for Pin 25 +
+

+

Register ( slcr )MIO_PIN_26

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_26 + +0XF8000768 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Input, gem0_rgmii_rxd[3]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[0]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[11]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[26]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[26]- (GPIO bank 0) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= wdt, Input, wdt_clk_in- (Watch Dog Timer Input clock) 4= sd1, Input, sd1_data_in[2]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[2]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[1]- (SPI Master Selects) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_26@0XF8000768 + +31:0 + +3fff + + + +1203 + +MIO Control for Pin 26 +
+

+

Register ( slcr )MIO_PIN_27

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_27 + +0XF800076C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +1 + +2 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem0, Input, gem0_rgmii_rx_ctl- (RX RGMII control ) +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= trace_data, Output, tracedq[1]- (Trace Port Databus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[12]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[27]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[27]- (GPIO bank 0) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= wdt, Output, wdt_rst_out- (Watch Dog Timer Output clock) 4= sd1, Input, sd1_data_in[3]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[3]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_27@0XF800076C + +31:0 + +3fff + + + +1203 + +MIO Control for Pin 27 +
+

+

Register ( slcr )MIO_PIN_28

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_28 + +0XF8000770 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Output, gem1_rgmii_tx_clk- (TX RGMII clock) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[4]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[4]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[13]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[28]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[28]- (GPIO bank 0) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_clk_in- (SDSDIO clock) 4= sd0, Output, sd0_clk_out- (SDSDIO clock) 5= spi0, Input, spi0_sclk_in- (SPI Clock) 5= spi0, Output, spi0_sclk_out- (SPI Clock) 6= ttc1, Output, ttc1_wave_out- (TTC waveform clock) 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_28@0XF8000770 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 28 +
+

+

Register ( slcr )MIO_PIN_29

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_29 + +0XF8000774 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Output, gem1_rgmii_txd[0]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_dir- (Data bus direction control) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[14]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[29]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[29]- (GPIO bank 0) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_cmd_in- (Command Indicator) 4= sd0, Output, sd0_cmd_out- (Command Indicator) 5= spi0, Input, spi0_mi- (MISO signal) 5= spi0, Output, spi0_so- (MISO signal) 6= ttc1, Input, ttc1_clk_in- (TTC input clock) 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_29@0XF8000774 + +31:0 + +3fff + + + +1205 + +MIO Control for Pin 29 +
+

+

Register ( slcr )MIO_PIN_30

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_30 + +0XF8000778 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Output, gem1_rgmii_txd[1]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Output, usb0_ulpi_stp- (Asserted to end or interrupt transfers) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[15]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[30]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[30]- (GPIO bank 0) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_data_in[0]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[0]- (4-bit Data bus) 5= spi0, Input, spi0_n_ss_in- (SPI Master Selects) 5= spi0, Output, spi0_n_ss_out[0]- (SPI Master Selects) 6= ttc0, Output, ttc0_wave_out- (TTC waveform clock) 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_30@0XF8000778 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 30 +
+

+

Register ( slcr )MIO_PIN_31

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_31 + +0XF800077C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Output, gem1_rgmii_txd[2]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_nxt- (Data flow control signal from the PHY) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[16]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio0, Input, gpio_0_pin_in[31]- (GPIO bank 0) 0= gpio0, Output, gpio_0_pin_out[31]- (GPIO bank 0) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_data_in[1]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[1]- (4-bit Data bus) 5= spi0, Output, spi0_n_ss_out[1]- (SPI Master Selects) 6= ttc0, Input, ttc0_clk_in- (TTC input clock) 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_31@0XF800077C + +31:0 + +3fff + + + +1205 + +MIO Control for Pin 31 +
+

+

Register ( slcr )MIO_PIN_32

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_32 + +0XF8000780 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Output, gem1_rgmii_txd[3]- (TX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[0]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[0]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[17]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[0]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[0]- (GPIO bank 1) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_data_in[2]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[2]- (4-bit Data bus) 5= spi0, Output, spi0_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_32@0XF8000780 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 32 +
+

+

Register ( slcr )MIO_PIN_33

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_33 + +0XF8000784 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Output, gem1_rgmii_tx_ctl- (TX RGMII control) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[1]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[1]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[18]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[1]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[1]- (GPIO bank 1) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_data_in[3]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[3]- (4-bit Data bus) 5= spi0, Output, spi0_mo- (MOSI signal) 5= spi0, Input, spi0_si- (MOSI signal) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_33@0XF8000784 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 33 +
+

+

Register ( slcr )MIO_PIN_34

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_34 + +0XF8000788 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Input, gem1_rgmii_rx_clk- (RX RGMII clock) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[2]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[2]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[19]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[2]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[2]- (GPIO bank 1) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_data_in[0]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[0]- (4-bit Data bus) 5= spi1, Output, spi1_mo- (MOSI signal) 5= spi1, Input, spi1_si- (MOSI signal) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_34@0XF8000788 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 34 +
+

+

Register ( slcr )MIO_PIN_35

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_35 + +0XF800078C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Input, gem1_rgmii_rxd[0]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[3]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[3]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[20]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[3]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[3]- (GPIO bank 1) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_cmd_in- (Command Indicator) 4= sd1, Output, sd1_cmd_out- (Command Indicator) 5= spi1, Input, spi1_mi- (MISO signal) 5= spi1, Output, spi1_so- (MISO signal) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_35@0XF800078C + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 35 +
+

+

Register ( slcr )MIO_PIN_36

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_36 + +0XF8000790 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Input, gem1_rgmii_rxd[1]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_xcvr_clk_in- (ULPI clock) 1= usb0, Output, usb0_xcvr_clk_out- (ULPI clock) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[21]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[4]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[4]- (GPIO bank 1) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_clk_in- (SDSDIO clock) 4= sd1, Output, sd1_clk_out- (SDSDIO clock) 5= spi1, Input, spi1_sclk_in- (SPI Clock) 5= spi1, Output, spi1_sclk_out- (SPI Clock) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_36@0XF8000790 + +31:0 + +3fff + + + +1205 + +MIO Control for Pin 36 +
+

+

Register ( slcr )MIO_PIN_37

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_37 + +0XF8000794 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Input, gem1_rgmii_rxd[2]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[5]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[5]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[22]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[5]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[5]- (GPIO bank 1) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_data_in[1]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[1]- (4-bit Data bus) 5= spi1, Input, spi1_n_ss_in- (SPI Master Selects) 5= spi1, Output, spi1_n_ss_out[0]- (SPI Master Selects) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_37@0XF8000794 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 37 +
+

+

Register ( slcr )MIO_PIN_38

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_38 + +0XF8000798 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Input, gem1_rgmii_rxd[3]- (RX RGMII data) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[6]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[6]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[23]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[6]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[6]- (GPIO bank 1) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= wdt, Input, wdt_clk_in- (Watch Dog Timer Input clock) 4= sd1, Input, sd1_data_in[2]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[2]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[1]- (SPI Master Selects) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_38@0XF8000798 + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 38 +
+

+

Register ( slcr )MIO_PIN_39

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_39 + +0XF800079C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= gem1, Input, gem1_rgmii_rx_ctl- (RX RGMII control ) +
+L1_SEL + +2:2 + +4 + +1 + +4 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb0, Input, usb0_ulpi_rx_data[7]- (ULPI data bus) 1= usb0, Output, usb0_ulpi_tx_data[7]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= sram_nor, Output, smc_sram_add[24]- (SRAM Address) 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[7]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[7]- (GPIO bank 1) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= wdt, Output, wdt_rst_out- (Watch Dog Timer Output clock) 4= sd1, Input, sd1_data_in[3]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[3]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_39@0XF800079C + +31:0 + +3fff + + + +1204 + +MIO Control for Pin 39 +
+

+

Register ( slcr )MIO_PIN_40

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_40 + +0XF80007A0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_rx_data[4]- (ULPI data bus) 1= usb1, Output, usb1_ulpi_tx_data[4]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[8]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[8]- (GPIO bank 1) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_clk_in- (SDSDIO clock) 4= sd0, Output, sd0_clk_out- (SDSDIO clock) 5= spi0, Input, spi0_sclk_in- (SPI Clock) 5= spi0, Output, spi0_sclk_out- (SPI Clock) 6= ttc1, Output, ttc1_wave_out- (TTC waveform clock) 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_40@0XF80007A0 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 40 +
+

+

Register ( slcr )MIO_PIN_41

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_41 + +0XF80007A4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_dir- (Data bus direction control) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[9]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[9]- (GPIO bank 1) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_cmd_in- (Command Indicator) 4= sd0, Output, sd0_cmd_out- (Command Indicator) 5= spi0, Input, spi0_mi- (MISO signal) 5= spi0, Output, spi0_so- (MISO signal) 6= ttc1, Input, ttc1_clk_in- (TTC input clock) 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_41@0XF80007A4 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 41 +
+

+

Register ( slcr )MIO_PIN_42

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_42 + +0XF80007A8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Output, usb1_ulpi_stp- (Asserted to end or interrupt transfers) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[10]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[10]- (GPIO bank 1) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_data_in[0]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[0]- (4-bit Data bus) 5= spi0, Input, spi0_n_ss_in- (SPI Master Selects) 5= spi0, Output, spi0_n_ss_out[0]- (SPI Master Selects) 6= ttc0, Output, ttc0_wave_out- (TTC waveform clock) 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_42@0XF80007A8 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 42 +
+

+

Register ( slcr )MIO_PIN_43

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_43 + +0XF80007AC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_nxt- (Data flow control signal from the PHY) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[11]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[11]- (GPIO bank 1) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_data_in[1]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[1]- (4-bit Data bus) 5= spi0, Output, spi0_n_ss_out[1]- (SPI Master Selects) 6= ttc0, Input, ttc0_clk_in- (TTC input clock) 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_43@0XF80007AC + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 43 +
+

+

Register ( slcr )MIO_PIN_44

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_44 + +0XF80007B0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_rx_data[0]- (ULPI data bus) 1= usb1, Output, usb1_ulpi_tx_data[0]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[12]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[12]- (GPIO bank 1) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd0, Input, sd0_data_in[2]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[2]- (4-bit Data bus) 5= spi0, Output, spi0_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_44@0XF80007B0 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 44 +
+

+

Register ( slcr )MIO_PIN_45

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_45 + +0XF80007B4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_rx_data[1]- (ULPI data bus) 1= usb1, Output, usb1_ulpi_tx_data[1]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[13]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[13]- (GPIO bank 1) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd0, Input, sd0_data_in[3]- (4-bit Data bus) 4= sd0, Output, sd0_data_out[3]- (4-bit Data bus) 5= spi0, Output, spi0_mo- (MOSI signal) 5= spi0, Input, spi0_si- (MOSI signal) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_45@0XF80007B4 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 45 +
+

+

Register ( slcr )MIO_PIN_46

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_46 + +0XF80007B8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_46@0XF80007B8 + +31:0 + +3f01 + + + +1201 + +MIO Control for Pin 46 +
+

+

Register ( slcr )MIO_PIN_47

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_47 + +0XF80007BC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_47@0XF80007BC + +31:0 + +3f01 + + + +1201 + +MIO Control for Pin 47 +
+

+

Register ( slcr )MIO_PIN_48

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_48 + +0XF80007C0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_xcvr_clk_in- (ULPI Clock) 1= usb1, Output, usb1_xcvr_clk_out- (ULPI Clock) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +7 + +e0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[16]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[16]- (GPIO bank 1) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= Not Used 4= sd1, Input, sd1_clk_in- (SDSDIO clock) 4= sd1, Output, sd1_clk_out- (SDSDIO clock) 5= spi1, Input, spi1_sclk_in- (SPI Clock) 5= spi1, Output, spi1_sclk_out- (SPI Clock) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_48@0XF80007C0 + +31:0 + +3fff + + + +12e0 + +MIO Control for Pin 48 +
+

+

Register ( slcr )MIO_PIN_49

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_49 + +0XF80007C4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +1 + +1 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_rx_data[5]- (ULPI data bus) 1= usb1, Output, usb1_ulpi_tx_data[5]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +7 + +e0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[17]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[17]- (GPIO bank 1) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= Not Used 4= sd1, Input, sd1_data_in[1]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[1]- (4-bit Data bus) 5= spi1, Input, spi1_n_ss_in- (SPI Master Selects) 5= spi1, Output, spi1_n_ss_out[0]- (SPI Master Selects) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_49@0XF80007C4 + +31:0 + +3fff + + + +12e1 + +MIO Control for Pin 49 +
+

+

Register ( slcr )MIO_PIN_50

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_50 + +0XF80007C8 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_rx_data[6]- (ULPI data bus) 1= usb1, Output, usb1_ulpi_tx_data[6]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[18]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[18]- (GPIO bank 1) 1= can0, Input, can0_phy_rx- (Can RX signal) 2= i2c0, Input, i2c0_scl_input- (SCL signal) 2= i2c0, Output, i2c0_scl_out- (SCL signal) 3= wdt, Input, wdt_clk_in- (Watch Dog Timer Input clock) 4= sd1, Input, sd1_data_in[2]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[2]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[1]- (SPI Master Selects) 6= Not Used 7= ua0, Input, ua0_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_50@0XF80007C8 + +31:0 + +3fff + + + +1200 + +MIO Control for Pin 50 +
+

+

Register ( slcr )MIO_PIN_51

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_51 + +0XF80007CC + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= usb1, Input, usb1_ulpi_rx_data[7]- (ULPI data bus) 1= usb1, Output, usb1_ulpi_tx_data[7]- (ULPI data bus) +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +0 + +0 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[19]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[19]- (GPIO bank 1) 1= can0, Output, can0_phy_tx- (Can TX signal) 2= i2c0, Input, i2c0_sda_input- (SDA signal) 2= i2c0, Output, i2c0_sda_out- (SDA signal) 3= wdt, Output, wdt_rst_out- (Watch Dog Timer Output clock) 4= sd1, Input, sd1_data_in[3]- (4-bit Data bus) 4= sd1, Output, sd1_data_out[3]- (4-bit Data bus) 5= spi1, Output, spi1_n_ss_out[2]- (SPI Master Selects) 6= Not Used 7= ua0, Output, ua0_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +0 + +0 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_51@0XF80007CC + +31:0 + +3fff + + + +200 + +MIO Control for Pin 51 +
+

+

Register ( slcr )MIO_PIN_52

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_52 + +0XF80007D0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= Not Used +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio0_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[20]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[20]- (GPIO bank 1) 1= can1, Output, can1_phy_tx- (Can TX signal) 2= i2c1, Input, i2c1_scl_input- (SCL signal) 2= i2c1, Output, i2c1_scl_out- (SCL signal) 3= wdt, Input, wdt_clk_in- (Watch Dog Timer Input clock) 4= mdio0, Output, gem0_mdc- (MDIO Clock) 5= mdio1, Output, gem1_mdc- (MDIO Clock) 6= Not Used 7= ua1, Output, ua1_txd- (UART transmitter serial output) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_52@0XF80007D0 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 52 +
+

+

Register ( slcr )MIO_PIN_53

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MIO_PIN_53 + +0XF80007D4 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+TRI_ENABLE + +0:0 + +1 + +0 + +0 + +Tri-state enable, active high. +
+L0_SEL + +1:1 + +2 + +0 + +0 + +Level 0 Mux Select 0= Level 1 Mux Output 1= Not Used +
+L1_SEL + +2:2 + +4 + +0 + +0 + +Level 1 Mux Select 0= Level 2 Mux Output 1= Not Used +
+L2_SEL + +4:3 + +18 + +0 + +0 + +Level 2 Mux Select 0= Level 3 Mux Output 1= Not Used 2= Not Used 3= sdio_pow, Output, sdio1_bus_pow- (SD card bus power) +
+L3_SEL + +7:5 + +e0 + +4 + +80 + +Level 3 Mux Select 0= gpio1, Input, gpio_1_pin_in[21]- (GPIO bank 1) 0= gpio1, Output, gpio_1_pin_out[21]- (GPIO bank 1) 1= can1, Input, can1_phy_rx- (Can RX signal) 2= i2c1, Input, i2c1_sda_input- (SDA signal) 2= i2c1, Output, i2c1_sda_out- (SDA signal) 3= wdt, Output, wdt_rst_out- (Watch Dog Timer Output clock) 4= mdio0, Input, gem0_mdio_in- (MDIO Data) 4= mdio0, Output, gem0_mdio_out- (MDIO Data) 5= mdio1, Input, gem1_mdio_in- (MDIO Data) 5= mdio1, Output, gem1_mdio_out- (MDIO Data) 6= Not Used 7= ua1, Input, ua1_rxd- (UART receiver serial input) +
+Speed + +8:8 + +100 + +0 + +0 + +Selects the speed of the I/O when IO_Type=CMOS 0=Slow CMOS 1=Fast CMOS +
+IO_Type + +11:9 + +e00 + +1 + +200 + +Selects the IO Type 0= LVTTL 1= LVCMOS18 2= LVCMOS25 3= LVCMOS33 4= HSTL 5-7= LVCMOS33 +
+PULLUP + +12:12 + +1000 + +1 + +1000 + +Controls the use of a pull-up for the associated GPIOB 0= Pull-up disabled 1= Pull-up enabled +
+DisableRcvr + +13:13 + +2000 + +0 + +0 + +Enables the receiver. If the IO is an output only then the receiver can be disabled and save power Only used when IO_Type=HSTL 0= Receiver Enabled 1= Receiver disabled +
+MIO_PIN_53@0XF80007D4 + +31:0 + +3fff + + + +1280 + +MIO Control for Pin 53 +
+

+

Register ( slcr )SD0_WP_CD_SEL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SD0_WP_CD_SEL + +0XF8000830 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+SDIO0_WP_SEL + +5:0 + +3f + +2f + +2f + +SDIO0 WP Select. 0-53 = Selects matching MIO input however bits 7/8 are not supported and should not be used as they will conflict with the VCFG inputs. 54-63 = Selects the FMIO source +
+SDIO0_CD_SEL + +21:16 + +3f0000 + +2e + +2e0000 + +SDIO0 CD Select. 0-53 = Selects matching MIO input however bits 7/8 are not supported and should not be used as they will conflict with the VCFG inputs. 54-63 = Selects the FMIO source +
+SD0_WP_CD_SEL@0XF8000830 + +31:0 + +3f003f + + + +2e002f + +SDIO 0 WP CD select register +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register always returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_peripherals_init_data_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +DDRIOB_DATA0 + + +0XF8000B48 + +32 + +RW + +0x000000 + +DDRIOB Data 0 Configuration Register +
+ +DDRIOB_DATA1 + + +0XF8000B4C + +32 + +RW + +0x000000 + +DDRIOB Data 1 Configuration Register +
+ +DDRIOB_DIFF0 + + +0XF8000B50 + +32 + +RW + +0x000000 + +DDRIOB Differential DQS 0 Configuration Register +
+ +DDRIOB_DIFF1 + + +0XF8000B54 + +32 + +RW + +0x000000 + +DDRIOB Differential DQS 1 Configuration Register +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+ +Baud_rate_divider_reg0 + + +0XE0001034 + +32 + +RW + +0x000000 + +baud rate divider register +
+ +Baud_rate_gen_reg0 + + +0XE0001018 + +32 + +RW + +0x000000 + +Baud rate divider register +
+ +Control_reg0 + + +0XE0001000 + +32 + +RW + +0x000000 + +UART Control register +
+ +mode_reg0 + + +0XE0001004 + +32 + +RW + +0x000000 + +UART Mode register +
+ +Config_reg + + +0XE000D000 + +32 + +RW + +0x000000 + +SPI configuration register +
+ +CTRL + + +0XF8007000 + +32 + +RW + +0x000000 + +Control Register : This register defines basic control registers. Some of the register bits can be locked by control bits in the LOCK Register 0x004. +
+ +DIRM_1 + + +0XE000A244 + +32 + +RW + +0x000000 + +Direction mode configuration register: Configures bank 1 for direction mode, either input or output +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable single-word-based data access register: Mask and data access for the most significant word of this bank of GPIO pins +
+ +OEN_1 + + +0XE000A248 + +32 + +RW + +0x000000 + +Output enable register: Configures the output enables of bank 1 +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable single-word-based data access register: Mask and data access for the most significant word of this bank of GPIO pins +
+ +MASK_DATA_1_MSW + + +0XE000A00C + +32 + +RW + +0x000000 + +Maskable single-word-based data access register: Mask and data access for the most significant word of this bank of GPIO pins +
+

+

ps7_peripherals_init_data_1_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register always returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

DDR TERM/IBUF_DISABLE_MODE SETTINGS

+

Register ( slcr )DDRIOB_DATA0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA0 + +0XF8000B48 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+DDRIOB_DATA0@0XF8000B48 + +31:0 + +180 + + + +180 + +DDRIOB Data 0 Configuration Register +
+

+

Register ( slcr )DDRIOB_DATA1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DATA1 + +0XF8000B4C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+DDRIOB_DATA1@0XF8000B4C + +31:0 + +180 + + + +180 + +DDRIOB Data 1 Configuration Register +
+

+

Register ( slcr )DDRIOB_DIFF0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF0 + +0XF8000B50 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+DDRIOB_DIFF0@0XF8000B50 + +31:0 + +180 + + + +180 + +DDRIOB Differential DQS 0 Configuration Register +
+

+

Register ( slcr )DDRIOB_DIFF1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DDRIOB_DIFF1 + +0XF8000B54 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IBUF_DISABLE_MODE + +7:7 + +80 + +1 + +80 + +Use ibuf_disable_into control ibuf 0 -ibuf is always enabled 1 - use ibuf_disable_in_to control enable +
+TERM_DISABLE_MODE + +8:8 + +100 + +1 + +100 + +Use dynamic_dci_ts to control dci 0 - termination enabled 1 - use 'dynamic_dci_ts' control termination +
+DDRIOB_DIFF1@0XF8000B54 + +31:0 + +180 + + + +180 + +DDRIOB Differential DQS 1 Configuration Register +
+

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register always returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+

SRAM/NOR SET OPMODE

+

UART REGISTERS

+

Register ( slcr )Baud_rate_divider_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Baud_rate_divider_reg0 + +0XE0001034 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+BDIV + +7:0 + +ff + +6 + +6 + +Baud rate divider value 0 - 3: ignored 4 - 255: Baud rate +
+Baud_rate_divider_reg0@0XE0001034 + +31:0 + +ff + + + +6 + +baud rate divider register +
+

+

Register ( slcr )Baud_rate_gen_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Baud_rate_gen_reg0 + +0XE0001018 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+CD + +15:0 + +ffff + +7c + +7c + +Baud Rate Clock Divisor Value 0 = Disables baud_sample 1 = Clock divisor bypass 2 - 65535 = baud_sample value +
+Baud_rate_gen_reg0@0XE0001018 + +31:0 + +ffff + + + +7c + +Baud rate divider register +
+

+

Register ( slcr )Control_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Control_reg0 + +0XE0001000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+STPBRK + +8:8 + +100 + +0 + +0 + +Stop transmitter break. 1 = stop transmission of the break. +
+STTBRK + +7:7 + +80 + +0 + +0 + +Start transmitter break 1 = start to transmit a break. Can only be set if STPBRK (Stop transmitter break) is not high. +
+RSTTO + +6:6 + +40 + +0 + +0 + +Restart receiver timeout counter 1 = receiver timeout counter is restarted +
+TXDIS + +5:5 + +20 + +0 + +0 + +Transmit disable. 1, the transmitter is disabled +
+TXEN + +4:4 + +10 + +1 + +10 + +Transmit enable. 1, the transmitter is enabled, provided the TXDIS field is set to 0. +
+RXDIS + +3:3 + +8 + +0 + +0 + +Receive disable. 1= receiver is enabled +
+RXEN + +2:2 + +4 + +1 + +4 + +Receive enable. 1=the receiver logic is enabled, provided RXDIS field is set to 0 +
+TXRES + +1:1 + +2 + +1 + +2 + +Software reset for TX data path. 1=the transmitter logic is reset and all pending transmitter data is discarded self clear +
+RXRES + +0:0 + +1 + +1 + +1 + +Software reset for RX data path 1=receiver logic is reset and all pending receiver data is discarded self clear +
+Control_reg0@0XE0001000 + +31:0 + +1ff + + + +17 + +UART Control register +
+

+

Register ( slcr )mode_reg0

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+mode_reg0 + +0XE0001004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+IRMODE + +11:11 + +800 + +0 + +0 + +Enable IrDA mode 0 : Default UART mode 1 : Enable IrDA mode +
+UCLKEN + +10:10 + +400 + +0 + +0 + +External uart_clk source select 0 : APB clock, pclk 1 : a user-defined clock +
+CHMODE + +9:8 + +300 + +0 + +0 + +Channel mode 00 = normal 01 = automatic cho 10 = local loopback 11 = remote loopback +
+NBSTOP + +7:6 + +c0 + +0 + +0 + +Number of stop bits 00 = 1 stop bit 01 = 1.5 stop bits 10 = 2 stop bits 11 = reserved +
+PAR + +5:3 + +38 + +4 + +20 + +Parity type select. 000 = even parity 001 = odd parity 010 = forced to 0 parity (space) 011 = forced to 1 parity (mark) 1xx = no parity +
+CHRL + +2:1 + +6 + +0 + +0 + +Character length select 11 = 6 bits 10 = 7 bits 01 / 00 = 8 bits +
+CLKS + +0:0 + +1 + +0 + +0 + +clock source select 1 = clock source is uart_clk/8 0 = clock source is uart_clk +
+mode_reg0@0XE0001004 + +31:0 + +fff + + + +20 + +UART Mode register +
+

+

QSPI REGISTERS

+

Register ( slcr )Config_reg

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+Config_reg + +0XE000D000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+Holdb_dr + +19:19 + +80000 + +1 + +80000 + +Holdb and WPn pins are driven in normal/fast read or dual output/io read by the controller, if set, else external pull-high is required. Both pins are always driven by the controller in quad mode. +
+Config_reg@0XE000D000 + +31:0 + +80000 + + + +80000 + +SPI configuration register +
+

+

PL POWER ON RESET REGISTERS

+

Register ( slcr )CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+CTRL + +0XF8007000 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+PCFG_POR_CNT_4K + +29:29 + +20000000 + +0 + +0 + +This is to indicate to the FPGA fabric what timer to use 0 - use 64K timer 1 - use 4K timer +
+CTRL@0XF8007000 + +31:0 + +20000000 + + + +0 + +Control Register : This register defines basic control registers. Some of the register bits can be locked by control bits in the LOCK Register 0x004. +
+

+

SMC TIMING CALCULATION REGISTER UPDATE

+

NAND SET CYCLE

+

OPMODE

+

DIRECT COMMAND

+

SRAM/NOR CS0 SET CYCLE

+

DIRECT COMMAND

+

NOR CS0 BASE ADDRESS

+

SRAM/NOR CS1 SET CYCLE

+

DIRECT COMMAND

+

NOR CS1 BASE ADDRESS

+

USB RESET

+

USB0 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

Register ( slcr )DIRM_1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+DIRM_1 + +0XE000A244 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+DIRECTION_1 + +21:0 + +3fffff + +80000 + +80000 + +Direction mode for bank 1 0 = input 1 = output Each bit configures the corresponding pin within the 32-bit bank +
+DIRM_1@0XE000A244 + +31:0 + +3fffff + + + +80000 + +Direction mode configuration register: Configures bank 1 for direction mode, either input or output +
+

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Mask values to be applied on writes to the corresponding GPIO pins 0 = pin value is updated 1 = pin is masked Each bit controls the corresponding pin within the 16-bit half-bank Write Only, Read back as zero +
+DATA_1_MSW + +5:0 + +3f + +8 + +8 + +Data values read from or written to the corresponding GPIO pins Each bit controls the corresponding pin within the 16-bit half-bank +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370008 + +Maskable single-word-based data access register: Mask and data access for the most significant word of this bank of GPIO pins +
+

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

Register ( slcr )OEN_1

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+OEN_1 + +0XE000A248 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+OP_ENABLE_1 + +21:0 + +3fffff + +80000 + +80000 + +Output enables for bank 1 0 = disabled 1 = enabled Each bit configures the corresponding pin within the 32-bit bank +
+OEN_1@0XE000A248 + +31:0 + +3fffff + + + +80000 + +Output enable register: Configures the output enables of bank 1 +
+

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Mask values to be applied on writes to the corresponding GPIO pins 0 = pin value is updated 1 = pin is masked Each bit controls the corresponding pin within the 16-bit half-bank Write Only, Read back as zero +
+DATA_1_MSW + +5:0 + +3f + +0 + +0 + +Data values read from or written to the corresponding GPIO pins Each bit controls the corresponding pin within the 16-bit half-bank +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370000 + +Maskable single-word-based data access register: Mask and data access for the most significant word of this bank of GPIO pins +
+

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

Register ( slcr )MASK_DATA_1_MSW

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+MASK_DATA_1_MSW + +0XE000A00C + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+MASK_1_MSW + +21:16 + +3f0000 + +37 + +370000 + +Mask values to be applied on writes to the corresponding GPIO pins 0 = pin value is updated 1 = pin is masked Each bit controls the corresponding pin within the 16-bit half-bank Write Only, Read back as zero +
+DATA_1_MSW + +5:0 + +3f + +8 + +8 + +Data values read from or written to the corresponding GPIO pins Each bit controls the corresponding pin within the 16-bit half-bank +
+MASK_DATA_1_MSW@0XE000A00C + +31:0 + +3f003f + + + +370008 + +Maskable single-word-based data access register: Mask and data access for the most significant word of this bank of GPIO pins +
+

+

USB1 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

ENET RESET

+

ENET0 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

ENET1 RESET

+

DIR MODE BANK 0

+

DIR MODE BANK 1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE BANK 0

+

OUTPUT ENABLE BANK 1

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

I2C RESET

+

I2C0 RESET

+

DIR MODE GPIO BANK0

+

DIR MODE GPIO BANK1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE

+

OUTPUT ENABLE

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

I2C1 RESET

+

DIR MODE GPIO BANK0

+

DIR MODE GPIO BANK1

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

OUTPUT ENABLE

+

OUTPUT ENABLE

+

MASK_DATA_0_LSW LOW BANK [15:0]

+

MASK_DATA_0_MSW LOW BANK [31:16]

+

MASK_DATA_1_LSW LOW BANK [47:32]

+

MASK_DATA_1_MSW LOW BANK [53:48]

+

ADD 1 MS DELAY

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

MASK_DATA_0_MSW HIGH BANK [31:16]

+

MASK_DATA_1_LSW HIGH BANK [47:32]

+

MASK_DATA_1_MSW HIGH BANK [53:48]

+

NOR CHIP SELECT

+

DIR MODE BANK 0

+

MASK_DATA_0_LSW HIGH BANK [15:0]

+

OUTPUT ENABLE BANK 0

+ +

+

ps7_post_config_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +SLCR_UNLOCK + + +0XF8000008 + +32 + +WO + +0x000000 + +SLCR Write Protection Unlock +
+ +LVL_SHFTR_EN + + +0XF8000900 + +32 + +RW + +0x000000 + +Level Shifters Enable +
+ +FPGA_RST_CTRL + + +0XF8000240 + +32 + +RW + +0x000000 + +FPGA Software Reset Control +
+ +SLCR_LOCK + + +0XF8000004 + +32 + +WO + +0x000000 + +SLCR Write Protection Lock +
+

+

ps7_post_config_1_0

+ + + + + + + + + +

SLCR SETTINGS

+

Register ( slcr )SLCR_UNLOCK

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_UNLOCK + +0XF8000008 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+UNLOCK_KEY + +15:0 + +ffff + +df0d + +df0d + +When write data contains the unlock key value of 0xDF0D, the write protection mode is disabled. All registers defined in SLCR are writeable until locked again through the SLCR_LOCK register. A read of this register always returns zero. +
+SLCR_UNLOCK@0XF8000008 + +31:0 + +ffff + + + +df0d + +SLCR Write Protection Unlock +
+

+

ENABLING LEVEL SHIFTER

+

Register ( slcr )LVL_SHFTR_EN

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LVL_SHFTR_EN + +0XF8000900 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+USER_INP_ICT_EN_0 + +1:0 + +3 + +3 + +3 + +Enable level shifters for PSS user inputs to FPGA in FPGA tile 0, drives slcr_fpga_if_ctrl0[1:0]. +
+USER_INP_ICT_EN_1 + +3:2 + +c + +3 + +c + +Enable level shifters for PSS user inputs to FPGA in FPGA tile 1, drives slcr_fpga_if_ctrl1[1:0]. +
+LVL_SHFTR_EN@0XF8000900 + +31:0 + +f + + + +f + +Level Shifters Enable +
+

+

FPGA RESETS TO 0

+

Register ( slcr )FPGA_RST_CTRL

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+FPGA_RST_CTRL + +0XF8000240 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+reserved_3 + +31:25 + +fe000000 + +0 + +0 + +Reserved. Writes are ignored, read data is always zero. +
+FPGA_ACP_RST + +24:24 + +1000000 + +0 + +0 + +FPGA ACP port soft reset. 0 - No reset. 1 - ACP AXI interface reset output asserted. +
+FPGA_AXDS3_RST + +23:23 + +800000 + +0 + +0 + +AXDS3AXI interface soft reset. On assertion of this reset, the AXDS3AXI interface reset output will be asserted. 0 - No reset. 1 - AXDS3AXI interface reset output asserted. +
+FPGA_AXDS2_RST + +22:22 + +400000 + +0 + +0 + +AXDS2 AXI interface soft reset. On assertion of this reset, the AXDS2 AXI interface reset output will be asserted. 0 - No reset. 1 - AXDS2 AXI interface reset output asserted. +
+FPGA_AXDS1_RST + +21:21 + +200000 + +0 + +0 + +AXDS1 AXI interface soft reset. On assertion of this reset, the AXDS1 AXI interface reset output will be asserted. 0 - No reset. 1 - AXDS1 AXI interface reset output asserted. +
+FPGA_AXDS0_RST + +20:20 + +100000 + +0 + +0 + +AXDS0 AXI interface soft reset. On assertion of this reset, the AXDS0 AXI interface reset output will be asserted. 0 - No reset. 1 - AXDS0 AXI interface reset output asserted. +
+reserved_2 + +19:18 + +c0000 + +0 + +0 + +Reserved. Writes are ignored, read data is always zero. +
+FSSW1_FPGA_RST + +17:17 + +20000 + +0 + +0 + +General purpose FPGA slave interface 1 soft reset. On assertion of this reset, the FPGA slave interface 1 reset will be asserted. 0 - No reset. 1 - FPGA slave interface 1 reset is asserted. +
+FSSW0_FPGA_RST + +16:16 + +10000 + +0 + +0 + +General purpose FPGA slave interface 0 soft reset. On assertion of this reset, the FPGA slave interface 0 reset will be asserted. 0 - No reset. 1 - FPGA slave interface 0 reset is asserted. +
+reserved_1 + +15:14 + +c000 + +0 + +0 + +Reserved. Writes are ignored, read data is always zero. +
+FPGA_FMSW1_RST + +13:13 + +2000 + +0 + +0 + +General purpose FPGA master interface 1 soft reset. On assertion of this reset, the FPGA master interface 1 reset will be asserted. 0 - No reset. 1 - FPGA master interface 1 reset is asserted. +
+FPGA_FMSW0_RST + +12:12 + +1000 + +0 + +0 + +General purpose FPGA master interface 0 soft reset. On assertion of this reset, the FPGA master interface 0 reset will be asserted. 0 - No reset. 1 - FPGA master interface 0 reset is asserted. +
+FPGA_DMA3_RST + +11:11 + +800 + +0 + +0 + +FPGA DMA 3 peripheral request soft reset. On assertion of this reset, the FPGA DMA 3 peripheral request reset output will be asserted. 0 - No reset. 1 - FPGA DMA 3 peripheral request reset output asserted. +
+FPGA_DMA2_RST + +10:10 + +400 + +0 + +0 + +FPGA DMA 2 peripheral request soft reset. On assertion of this reset, the FPGA DMA 2 peripheral request reset output will be asserted. 0 - No reset. 1 - FPGA DMA 2 peripheral request reset output asserted. +
+FPGA_DMA1_RST + +9:9 + +200 + +0 + +0 + +FPGA DMA 1 peripheral request soft reset. On assertion of this reset, the FPGA DMA 1 peripheral request reset output will be asserted. 0 - No reset. 1 - FPGA DMA 1 peripheral request reset output asserted. +
+FPGA_DMA0_RST + +8:8 + +100 + +0 + +0 + +FPGA DMA 0 peripheral request soft reset. On assertion of this reset, the FPGA DMA 0 peripheral request reset output will be asserted. 0 - No reset. 1 - FPGA DMA 0 peripheral request reset output asserted. +
+reserved + +7:4 + +f0 + +0 + +0 + +Reserved. Writes are ignored, read data is always zero. +
+FPGA3_OUT_RST + +3:3 + +8 + +0 + +0 + +FPGA3software reset. On assertion of this reset, the FPGA 3 top level reset output will be asserted. 0 - No reset. 1 - FPGA 3 top level reset output asserted. +
+FPGA2_OUT_RST + +2:2 + +4 + +0 + +0 + +FPGA2 software reset. On assertion of this reset, the FPGA 2 top level reset output will be asserted. 0 - No reset. 1 - FPGA 2 top level reset output asserted. +
+FPGA1_OUT_RST + +1:1 + +2 + +0 + +0 + +FPGA1 software reset. On assertion of this reset, the FPGA 1 top level reset output will be asserted. 0 - No reset. 1 - FPGA 1 top level reset output asserted. +
+FPGA0_OUT_RST + +0:0 + +1 + +0 + +0 + +FPGA0 software reset. On assertion of this reset, the FPGA 0 top level reset output will be asserted. 0 - No reset. 1 - FPGA 0 top level reset output asserted. +
+FPGA_RST_CTRL@0XF8000240 + +31:0 + +ffffffff + + + +0 + +FPGA Software Reset Control +
+

+

AFI REGISTERS

+

AFI0 REGISTERS

+

AFI1 REGISTERS

+

AFI2 REGISTERS

+

AFI3 REGISTERS

+

LOCK IT BACK

+

Register ( slcr )SLCR_LOCK

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+SLCR_LOCK + +0XF8000004 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+LOCK_KEY + +15:0 + +ffff + +767b + +767b + +When write data contains the lock key value of 0x767B, the write protection mode is enabled. All registers defined in SLCR are write protected until unlocked again through the SLCR_UNLOCK register. A read of this register always returns zero. +
+SLCR_LOCK@0XF8000004 + +31:0 + +ffff + + + +767b + +SLCR Write Protection Lock +
+

+ +

+

ps7_debug_1_0

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ +LAR + + +0XF8898FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+ +LAR + + +0XF8899FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+ +LAR + + +0XF8809FB0 + +32 + +WO + +0x000000 + +Lock Access Register +
+

+

ps7_debug_1_0

+ + + + + + + + + +

CROSS TRIGGER CONFIGURATIONS

+

UNLOCKING CTI REGISTERS

+

Register ( slcr )LAR

+
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+ + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8898FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8898FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

Register ( slcr )LAR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8899FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8899FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

Register ( slcr )LAR

+ + + + + + + + + + + + + + + + + +
+Register Name + +Address + +Width + +Type + +Reset Value + +Description +
+LAR + +0XF8809FB0 + +32 + +rw + +0x00000000 + +-- +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
+Field Name + +Bits + +Mask + +Value + +Shifted Value + +Description +
+KEY + +31:0 + +ffffffff + +c5acce55 + +c5acce55 + +Write Access Code. Write behavior depends on PADDRDBG31 pin: - PADDRDBG31=0 (lower 2GB): After reset (via PRESETDBGn), CTI is locked, i.e., writes to all other registers using lower 2GB addresses are ignored. To unlock, 0xC5ACCE55 must be written this register. After the required registers are written, to lock again, write a value other than 0xC5ACCE55 to this register. - PADDRDBG31=1 (upper 2GB): CTI is unlocked when upper 2GB addresses are used to write to all the registers. However, write to this register is ignored using a upper 2GB address! Note: read from this register always returns 0, regardless of PADDRDBG31. +
+LAR@0XF8809FB0 + +31:0 + +ffffffff + + + +c5acce55 + +Lock Access Register +
+

+

ENABLING CTI MODULES AND CHANNELS

+

MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS

+ +

+ + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.tcl b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.tcl new file mode 100644 index 0000000..265ba7d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init.tcl @@ -0,0 +1,863 @@ +proc ps7_pll_init_data_3_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000110 0x003FFFF0 0x000FA220 + mask_write 0XF8000100 0x0007F000 0x00028000 + mask_write 0XF8000100 0x00000010 0x00000010 + mask_write 0XF8000100 0x00000001 0x00000001 + mask_write 0XF8000100 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000001 + mask_write 0XF8000100 0x00000010 0x00000000 + mask_write 0XF8000120 0x1F003F30 0x1F000200 + mask_write 0XF8000114 0x003FFFF0 0x0012C220 + mask_write 0XF8000104 0x0007F000 0x00020000 + mask_write 0XF8000104 0x00000010 0x00000010 + mask_write 0XF8000104 0x00000001 0x00000001 + mask_write 0XF8000104 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000002 + mask_write 0XF8000104 0x00000010 0x00000000 + mask_write 0XF8000124 0xFFF00003 0x0C200003 + mask_write 0XF8000118 0x003FFFF0 0x001452C0 + mask_write 0XF8000108 0x0007F000 0x0001E000 + mask_write 0XF8000108 0x00000010 0x00000010 + mask_write 0XF8000108 0x00000001 0x00000001 + mask_write 0XF8000108 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000004 + mask_write 0XF8000108 0x00000010 0x00000000 + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_clock_init_data_3_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000128 0x03F03F01 0x00302301 + mask_write 0XF8000138 0x00000011 0x00000001 + mask_write 0XF8000140 0x03F03F71 0x00100801 + mask_write 0XF800014C 0x00003F31 0x00000501 + mask_write 0XF8000150 0x00003F33 0x00000A01 + mask_write 0XF8000154 0x00003F33 0x00000A02 + mask_write 0XF800015C 0x03F03F33 0x00100A01 + mask_write 0XF8000160 0x007F007F 0x00000000 + mask_write 0XF8000168 0x00003F31 0x00000501 + mask_write 0XF8000170 0x03F03F30 0x00100600 + mask_write 0XF8000180 0x03F03F30 0x00101400 + mask_write 0XF8000190 0x03F03F30 0x00100A00 + mask_write 0XF80001A0 0x03F03F30 0x00100500 + mask_write 0XF80001C4 0x00000001 0x00000001 + mask_write 0XF800012C 0x01FFCCCD 0x01ED044D + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_ddr_init_data_3_0 {} { + mask_write 0XF8006000 0x0001FFFF 0x00000080 + mask_write 0XF8006004 0x0007FFFF 0x00001081 + mask_write 0XF8006008 0x03FFFFFF 0x03C0780F + mask_write 0XF800600C 0x03FFFFFF 0x02001001 + mask_write 0XF8006010 0x03FFFFFF 0x00014001 + mask_write 0XF8006014 0x001FFFFF 0x0004281B + mask_write 0XF8006018 0xF7FFFFFF 0x452460D2 + mask_write 0XF800601C 0xFFFFFFFF 0x720238E5 + mask_write 0XF8006020 0x7FDFFFFC 0x270872D0 + mask_write 0XF8006024 0x0FFFFFC3 0x00000000 + mask_write 0XF8006028 0x00003FFF 0x00002007 + mask_write 0XF800602C 0xFFFFFFFF 0x00000008 + mask_write 0XF8006030 0xFFFFFFFF 0x00040930 + mask_write 0XF8006034 0x13FF3FFF 0x00011054 + mask_write 0XF8006038 0x00000003 0x00000000 + mask_write 0XF800603C 0x000FFFFF 0x00000777 + mask_write 0XF8006040 0xFFFFFFFF 0xFFF00000 + mask_write 0XF8006044 0x0FFFFFFF 0x0F666666 + mask_write 0XF8006048 0x0003F03F 0x0003C008 + mask_write 0XF8006050 0xFF0F8FFF 0x77010800 + mask_write 0XF8006058 0x00010000 0x00000000 + mask_write 0XF800605C 0x0000FFFF 0x00005003 + mask_write 0XF8006060 0x000017FF 0x0000003E + mask_write 0XF8006064 0x00021FE0 0x00020000 + mask_write 0XF8006068 0x03FFFFFF 0x00284141 + mask_write 0XF800606C 0x0000FFFF 0x00001610 + mask_write 0XF8006078 0x03FFFFFF 0x00466111 + mask_write 0XF800607C 0x000FFFFF 0x00032222 + mask_write 0XF80060A4 0xFFFFFFFF 0x10200802 + mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73 + mask_write 0XF80060AC 0x000001FF 0x000001FE + mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF + mask_write 0XF80060B4 0x00000200 0x00000200 + mask_write 0XF80060B8 0x01FFFFFF 0x00200066 + mask_write 0XF80060C4 0x00000003 0x00000003 + mask_write 0XF80060C4 0x00000003 0x00000000 + mask_write 0XF80060C8 0x000000FF 0x00000000 + mask_write 0XF80060DC 0x00000001 0x00000000 + mask_write 0XF80060F0 0x0000FFFF 0x00000000 + mask_write 0XF80060F4 0x0000000F 0x00000008 + mask_write 0XF8006114 0x000000FF 0x00000000 + mask_write 0XF8006118 0x7FFFFFCF 0x40000001 + mask_write 0XF800611C 0x7FFFFFCF 0x40000001 + mask_write 0XF8006120 0x7FFFFFCF 0x40000001 + mask_write 0XF8006124 0x7FFFFFCF 0x40000001 + mask_write 0XF800612C 0x000FFFFF 0x00018000 + mask_write 0XF8006130 0x000FFFFF 0x00018000 + mask_write 0XF8006134 0x000FFFFF 0x00018000 + mask_write 0XF8006138 0x000FFFFF 0x00018000 + mask_write 0XF8006140 0x000FFFFF 0x00000035 + mask_write 0XF8006144 0x000FFFFF 0x00000035 + mask_write 0XF8006148 0x000FFFFF 0x00000035 + mask_write 0XF800614C 0x000FFFFF 0x00000035 + mask_write 0XF8006154 0x000FFFFF 0x00000080 + mask_write 0XF8006158 0x000FFFFF 0x00000080 + mask_write 0XF800615C 0x000FFFFF 0x00000080 + mask_write 0XF8006160 0x000FFFFF 0x00000080 + mask_write 0XF8006168 0x001FFFFF 0x000000B5 + mask_write 0XF800616C 0x001FFFFF 0x000000B5 + mask_write 0XF8006170 0x001FFFFF 0x000000B5 + mask_write 0XF8006174 0x001FFFFF 0x000000B5 + mask_write 0XF800617C 0x000FFFFF 0x000000C0 + mask_write 0XF8006180 0x000FFFFF 0x000000C0 + mask_write 0XF8006184 0x000FFFFF 0x000000C0 + mask_write 0XF8006188 0x000FFFFF 0x000000C0 + mask_write 0XF8006190 0x6FFFFEFE 0x00040080 + mask_write 0XF8006194 0x000FFFFF 0x0001FC82 + mask_write 0XF8006204 0xFFFFFFFF 0x00000000 + mask_write 0XF8006208 0x000703FF 0x000003FF + mask_write 0XF800620C 0x000703FF 0x000003FF + mask_write 0XF8006210 0x000703FF 0x000003FF + mask_write 0XF8006214 0x000703FF 0x000003FF + mask_write 0XF8006218 0x000F03FF 0x000003FF + mask_write 0XF800621C 0x000F03FF 0x000003FF + mask_write 0XF8006220 0x000F03FF 0x000003FF + mask_write 0XF8006224 0x000F03FF 0x000003FF + mask_write 0XF80062A8 0x00000FF5 0x00000000 + mask_write 0XF80062AC 0xFFFFFFFF 0x00000000 + mask_write 0XF80062B0 0x003FFFFF 0x00005125 + mask_write 0XF80062B4 0x0003FFFF 0x000012A8 + mask_poll 0XF8000B74 0x00002000 + mask_write 0XF8006000 0x0001FFFF 0x00000081 + mask_poll 0XF8006054 0x00000007 +} +proc ps7_mio_init_data_3_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000B40 0x00000FFF 0x00000600 + mask_write 0XF8000B44 0x00000FFF 0x00000600 + mask_write 0XF8000B48 0x00000FFF 0x00000672 + mask_write 0XF8000B4C 0x00000FFF 0x00000672 + mask_write 0XF8000B50 0x00000FFF 0x00000674 + mask_write 0XF8000B54 0x00000FFF 0x00000674 + mask_write 0XF8000B58 0x00000FFF 0x00000600 + mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C + mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B6C 0x00007FFF 0x00000260 + mask_write 0XF8000B70 0x00000001 0x00000001 + mask_write 0XF8000B70 0x00000021 0x00000020 + mask_write 0XF8000B70 0x07FEFFFF 0x00000823 + mask_write 0XF8000700 0x00003FFF 0x00001600 + mask_write 0XF8000704 0x00003FFF 0x00001602 + mask_write 0XF8000708 0x00003FFF 0x00000602 + mask_write 0XF800070C 0x00003FFF 0x00000602 + mask_write 0XF8000710 0x00003FFF 0x00000602 + mask_write 0XF8000714 0x00003FFF 0x00000602 + mask_write 0XF8000718 0x00003FFF 0x00000602 + mask_write 0XF800071C 0x00003FFF 0x00000600 + mask_write 0XF8000720 0x00003FFF 0x00000602 + mask_write 0XF8000724 0x00003FFF 0x00001600 + mask_write 0XF8000728 0x00003FFF 0x00001600 + mask_write 0XF800072C 0x00003FFF 0x00001600 + mask_write 0XF8000730 0x00003FFF 0x00001640 + mask_write 0XF8000734 0x00003FFF 0x00001640 + mask_write 0XF8000738 0x00003FFF 0x00001621 + mask_write 0XF800073C 0x00003FFF 0x00001620 + mask_write 0XF8000740 0x00003FFF 0x00001202 + mask_write 0XF8000744 0x00003FFF 0x00001202 + mask_write 0XF8000748 0x00003FFF 0x00001202 + mask_write 0XF800074C 0x00003FFF 0x00001202 + mask_write 0XF8000750 0x00003FFF 0x00001202 + mask_write 0XF8000754 0x00003FFF 0x00001202 + mask_write 0XF8000758 0x00003FFF 0x00001203 + mask_write 0XF800075C 0x00003FFF 0x00001203 + mask_write 0XF8000760 0x00003FFF 0x00001203 + mask_write 0XF8000764 0x00003FFF 0x00001203 + mask_write 0XF8000768 0x00003FFF 0x00001203 + mask_write 0XF800076C 0x00003FFF 0x00001203 + mask_write 0XF8000770 0x00003FFF 0x00001204 + mask_write 0XF8000774 0x00003FFF 0x00001205 + mask_write 0XF8000778 0x00003FFF 0x00001204 + mask_write 0XF800077C 0x00003FFF 0x00001205 + mask_write 0XF8000780 0x00003FFF 0x00001204 + mask_write 0XF8000784 0x00003FFF 0x00001204 + mask_write 0XF8000788 0x00003FFF 0x00001204 + mask_write 0XF800078C 0x00003FFF 0x00001204 + mask_write 0XF8000790 0x00003FFF 0x00001205 + mask_write 0XF8000794 0x00003FFF 0x00001204 + mask_write 0XF8000798 0x00003FFF 0x00001204 + mask_write 0XF800079C 0x00003FFF 0x00001204 + mask_write 0XF80007A0 0x00003FFF 0x00001280 + mask_write 0XF80007A4 0x00003FFF 0x00001280 + mask_write 0XF80007A8 0x00003FFF 0x00001280 + mask_write 0XF80007AC 0x00003FFF 0x00001280 + mask_write 0XF80007B0 0x00003FFF 0x00001280 + mask_write 0XF80007B4 0x00003FFF 0x00001280 + mask_write 0XF80007B8 0x00003F01 0x00001201 + mask_write 0XF80007BC 0x00003F01 0x00001201 + mask_write 0XF80007C0 0x00003FFF 0x000012E0 + mask_write 0XF80007C4 0x00003FFF 0x000012E1 + mask_write 0XF80007C8 0x00003FFF 0x00001200 + mask_write 0XF80007CC 0x00003FFF 0x00000200 + mask_write 0XF80007D0 0x00003FFF 0x00001280 + mask_write 0XF80007D4 0x00003FFF 0x00001280 + mask_write 0XF8000830 0x003F003F 0x002E002F + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_peripherals_init_data_3_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000B48 0x00000180 0x00000180 + mask_write 0XF8000B4C 0x00000180 0x00000180 + mask_write 0XF8000B50 0x00000180 0x00000180 + mask_write 0XF8000B54 0x00000180 0x00000180 + mask_write 0XF8000004 0x0000FFFF 0x0000767B + mask_write 0XE0001034 0x000000FF 0x00000006 + mask_write 0XE0001018 0x0000FFFF 0x0000007C + mask_write 0XE0001000 0x000001FF 0x00000017 + mask_write 0XE0001004 0x000003FF 0x00000020 + mask_write 0XE000D000 0x00080000 0x00080000 + mask_write 0XF8007000 0x20000000 0x00000000 + mask_write 0XE000A244 0x003FFFFF 0x00080000 + mask_write 0XE000A00C 0x003F003F 0x00370008 + mask_write 0XE000A248 0x003FFFFF 0x00080000 + mask_write 0XE000A00C 0x003F003F 0x00370000 + mask_delay 0XF8F00200 1 + mask_write 0XE000A00C 0x003F003F 0x00370008 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 +} +proc ps7_post_config_3_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000900 0x0000000F 0x0000000F + mask_write 0XF8000240 0xFFFFFFFF 0x00000000 + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_debug_3_0 {} { + mask_write 0XF8898FB0 0xFFFFFFFF 0xC5ACCE55 + mask_write 0XF8899FB0 0xFFFFFFFF 0xC5ACCE55 + mask_write 0XF8809FB0 0xFFFFFFFF 0xC5ACCE55 +} +proc ps7_pll_init_data_2_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000110 0x003FFFF0 0x000FA220 + mask_write 0XF8000100 0x0007F000 0x00028000 + mask_write 0XF8000100 0x00000010 0x00000010 + mask_write 0XF8000100 0x00000001 0x00000001 + mask_write 0XF8000100 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000001 + mask_write 0XF8000100 0x00000010 0x00000000 + mask_write 0XF8000120 0x1F003F30 0x1F000200 + mask_write 0XF8000114 0x003FFFF0 0x0012C220 + mask_write 0XF8000104 0x0007F000 0x00020000 + mask_write 0XF8000104 0x00000010 0x00000010 + mask_write 0XF8000104 0x00000001 0x00000001 + mask_write 0XF8000104 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000002 + mask_write 0XF8000104 0x00000010 0x00000000 + mask_write 0XF8000124 0xFFF00003 0x0C200003 + mask_write 0XF8000118 0x003FFFF0 0x001452C0 + mask_write 0XF8000108 0x0007F000 0x0001E000 + mask_write 0XF8000108 0x00000010 0x00000010 + mask_write 0XF8000108 0x00000001 0x00000001 + mask_write 0XF8000108 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000004 + mask_write 0XF8000108 0x00000010 0x00000000 + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_clock_init_data_2_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000128 0x03F03F01 0x00302301 + mask_write 0XF8000138 0x00000011 0x00000001 + mask_write 0XF8000140 0x03F03F71 0x00100801 + mask_write 0XF800014C 0x00003F31 0x00000501 + mask_write 0XF8000150 0x00003F33 0x00000A01 + mask_write 0XF8000154 0x00003F33 0x00000A02 + mask_write 0XF800015C 0x03F03F33 0x00100A01 + mask_write 0XF8000160 0x007F007F 0x00000000 + mask_write 0XF8000168 0x00003F31 0x00000501 + mask_write 0XF8000170 0x03F03F30 0x00100600 + mask_write 0XF8000180 0x03F03F30 0x00101400 + mask_write 0XF8000190 0x03F03F30 0x00100A00 + mask_write 0XF80001A0 0x03F03F30 0x00100500 + mask_write 0XF80001C4 0x00000001 0x00000001 + mask_write 0XF800012C 0x01FFCCCD 0x01ED044D + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_ddr_init_data_2_0 {} { + mask_write 0XF8006000 0x0001FFFF 0x00000080 + mask_write 0XF8006004 0x1FFFFFFF 0x00081081 + mask_write 0XF8006008 0x03FFFFFF 0x03C0780F + mask_write 0XF800600C 0x03FFFFFF 0x02001001 + mask_write 0XF8006010 0x03FFFFFF 0x00014001 + mask_write 0XF8006014 0x001FFFFF 0x0004281B + mask_write 0XF8006018 0xF7FFFFFF 0x452460D2 + mask_write 0XF800601C 0xFFFFFFFF 0x720238E5 + mask_write 0XF8006020 0xFFFFFFFC 0x272872D0 + mask_write 0XF8006024 0x0FFFFFFF 0x0000003C + mask_write 0XF8006028 0x00003FFF 0x00002007 + mask_write 0XF800602C 0xFFFFFFFF 0x00000008 + mask_write 0XF8006030 0xFFFFFFFF 0x00040930 + mask_write 0XF8006034 0x13FF3FFF 0x00011054 + mask_write 0XF8006038 0x00001FC3 0x00000000 + mask_write 0XF800603C 0x000FFFFF 0x00000777 + mask_write 0XF8006040 0xFFFFFFFF 0xFFF00000 + mask_write 0XF8006044 0x0FFFFFFF 0x0F666666 + mask_write 0XF8006048 0x3FFFFFFF 0x0003C248 + mask_write 0XF8006050 0xFF0F8FFF 0x77010800 + mask_write 0XF8006058 0x0001FFFF 0x00000101 + mask_write 0XF800605C 0x0000FFFF 0x00005003 + mask_write 0XF8006060 0x000017FF 0x0000003E + mask_write 0XF8006064 0x00021FE0 0x00020000 + mask_write 0XF8006068 0x03FFFFFF 0x00284141 + mask_write 0XF800606C 0x0000FFFF 0x00001610 + mask_write 0XF8006078 0x03FFFFFF 0x00466111 + mask_write 0XF800607C 0x000FFFFF 0x00032222 + mask_write 0XF80060A0 0x00FFFFFF 0x00008000 + mask_write 0XF80060A4 0xFFFFFFFF 0x10200802 + mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73 + mask_write 0XF80060AC 0x000001FF 0x000001FE + mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF + mask_write 0XF80060B4 0x000007FF 0x00000200 + mask_write 0XF80060B8 0x01FFFFFF 0x00200066 + mask_write 0XF80060C4 0x00000003 0x00000003 + mask_write 0XF80060C4 0x00000003 0x00000000 + mask_write 0XF80060C8 0x000000FF 0x00000000 + mask_write 0XF80060DC 0x00000001 0x00000000 + mask_write 0XF80060F0 0x0000FFFF 0x00000000 + mask_write 0XF80060F4 0x0000000F 0x00000008 + mask_write 0XF8006114 0x000000FF 0x00000000 + mask_write 0XF8006118 0x7FFFFFFF 0x40000001 + mask_write 0XF800611C 0x7FFFFFFF 0x40000001 + mask_write 0XF8006120 0x7FFFFFFF 0x40000001 + mask_write 0XF8006124 0x7FFFFFFF 0x40000001 + mask_write 0XF800612C 0x000FFFFF 0x00018000 + mask_write 0XF8006130 0x000FFFFF 0x00018000 + mask_write 0XF8006134 0x000FFFFF 0x00018000 + mask_write 0XF8006138 0x000FFFFF 0x00018000 + mask_write 0XF8006140 0x000FFFFF 0x00000035 + mask_write 0XF8006144 0x000FFFFF 0x00000035 + mask_write 0XF8006148 0x000FFFFF 0x00000035 + mask_write 0XF800614C 0x000FFFFF 0x00000035 + mask_write 0XF8006154 0x000FFFFF 0x00000080 + mask_write 0XF8006158 0x000FFFFF 0x00000080 + mask_write 0XF800615C 0x000FFFFF 0x00000080 + mask_write 0XF8006160 0x000FFFFF 0x00000080 + mask_write 0XF8006168 0x001FFFFF 0x000000B5 + mask_write 0XF800616C 0x001FFFFF 0x000000B5 + mask_write 0XF8006170 0x001FFFFF 0x000000B5 + mask_write 0XF8006174 0x001FFFFF 0x000000B5 + mask_write 0XF800617C 0x000FFFFF 0x000000C0 + mask_write 0XF8006180 0x000FFFFF 0x000000C0 + mask_write 0XF8006184 0x000FFFFF 0x000000C0 + mask_write 0XF8006188 0x000FFFFF 0x000000C0 + mask_write 0XF8006190 0xFFFFFFFF 0x10040080 + mask_write 0XF8006194 0x000FFFFF 0x0001FC82 + mask_write 0XF8006204 0xFFFFFFFF 0x00000000 + mask_write 0XF8006208 0x000F03FF 0x000803FF + mask_write 0XF800620C 0x000F03FF 0x000803FF + mask_write 0XF8006210 0x000F03FF 0x000803FF + mask_write 0XF8006214 0x000F03FF 0x000803FF + mask_write 0XF8006218 0x000F03FF 0x000003FF + mask_write 0XF800621C 0x000F03FF 0x000003FF + mask_write 0XF8006220 0x000F03FF 0x000003FF + mask_write 0XF8006224 0x000F03FF 0x000003FF + mask_write 0XF80062A8 0x00000FF7 0x00000000 + mask_write 0XF80062AC 0xFFFFFFFF 0x00000000 + mask_write 0XF80062B0 0x003FFFFF 0x00005125 + mask_write 0XF80062B4 0x0003FFFF 0x000012A8 + mask_poll 0XF8000B74 0x00002000 + mask_write 0XF8006000 0x0001FFFF 0x00000081 + mask_poll 0XF8006054 0x00000007 +} +proc ps7_mio_init_data_2_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000B40 0x00000FFF 0x00000600 + mask_write 0XF8000B44 0x00000FFF 0x00000600 + mask_write 0XF8000B48 0x00000FFF 0x00000672 + mask_write 0XF8000B4C 0x00000FFF 0x00000672 + mask_write 0XF8000B50 0x00000FFF 0x00000674 + mask_write 0XF8000B54 0x00000FFF 0x00000674 + mask_write 0XF8000B58 0x00000FFF 0x00000600 + mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C + mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B6C 0x00007FFF 0x00000260 + mask_write 0XF8000B70 0x00000021 0x00000021 + mask_write 0XF8000B70 0x00000021 0x00000020 + mask_write 0XF8000B70 0x07FFFFFF 0x00000823 + mask_write 0XF8000700 0x00003FFF 0x00001600 + mask_write 0XF8000704 0x00003FFF 0x00001602 + mask_write 0XF8000708 0x00003FFF 0x00000602 + mask_write 0XF800070C 0x00003FFF 0x00000602 + mask_write 0XF8000710 0x00003FFF 0x00000602 + mask_write 0XF8000714 0x00003FFF 0x00000602 + mask_write 0XF8000718 0x00003FFF 0x00000602 + mask_write 0XF800071C 0x00003FFF 0x00000600 + mask_write 0XF8000720 0x00003FFF 0x00000602 + mask_write 0XF8000724 0x00003FFF 0x00001600 + mask_write 0XF8000728 0x00003FFF 0x00001600 + mask_write 0XF800072C 0x00003FFF 0x00001600 + mask_write 0XF8000730 0x00003FFF 0x00001640 + mask_write 0XF8000734 0x00003FFF 0x00001640 + mask_write 0XF8000738 0x00003FFF 0x00001621 + mask_write 0XF800073C 0x00003FFF 0x00001620 + mask_write 0XF8000740 0x00003FFF 0x00001202 + mask_write 0XF8000744 0x00003FFF 0x00001202 + mask_write 0XF8000748 0x00003FFF 0x00001202 + mask_write 0XF800074C 0x00003FFF 0x00001202 + mask_write 0XF8000750 0x00003FFF 0x00001202 + mask_write 0XF8000754 0x00003FFF 0x00001202 + mask_write 0XF8000758 0x00003FFF 0x00001203 + mask_write 0XF800075C 0x00003FFF 0x00001203 + mask_write 0XF8000760 0x00003FFF 0x00001203 + mask_write 0XF8000764 0x00003FFF 0x00001203 + mask_write 0XF8000768 0x00003FFF 0x00001203 + mask_write 0XF800076C 0x00003FFF 0x00001203 + mask_write 0XF8000770 0x00003FFF 0x00001204 + mask_write 0XF8000774 0x00003FFF 0x00001205 + mask_write 0XF8000778 0x00003FFF 0x00001204 + mask_write 0XF800077C 0x00003FFF 0x00001205 + mask_write 0XF8000780 0x00003FFF 0x00001204 + mask_write 0XF8000784 0x00003FFF 0x00001204 + mask_write 0XF8000788 0x00003FFF 0x00001204 + mask_write 0XF800078C 0x00003FFF 0x00001204 + mask_write 0XF8000790 0x00003FFF 0x00001205 + mask_write 0XF8000794 0x00003FFF 0x00001204 + mask_write 0XF8000798 0x00003FFF 0x00001204 + mask_write 0XF800079C 0x00003FFF 0x00001204 + mask_write 0XF80007A0 0x00003FFF 0x00001280 + mask_write 0XF80007A4 0x00003FFF 0x00001280 + mask_write 0XF80007A8 0x00003FFF 0x00001280 + mask_write 0XF80007AC 0x00003FFF 0x00001280 + mask_write 0XF80007B0 0x00003FFF 0x00001280 + mask_write 0XF80007B4 0x00003FFF 0x00001280 + mask_write 0XF80007B8 0x00003F01 0x00001201 + mask_write 0XF80007BC 0x00003F01 0x00001201 + mask_write 0XF80007C0 0x00003FFF 0x000012E0 + mask_write 0XF80007C4 0x00003FFF 0x000012E1 + mask_write 0XF80007C8 0x00003FFF 0x00001200 + mask_write 0XF80007CC 0x00003FFF 0x00000200 + mask_write 0XF80007D0 0x00003FFF 0x00001280 + mask_write 0XF80007D4 0x00003FFF 0x00001280 + mask_write 0XF8000830 0x003F003F 0x002E002F + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_peripherals_init_data_2_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000B48 0x00000180 0x00000180 + mask_write 0XF8000B4C 0x00000180 0x00000180 + mask_write 0XF8000B50 0x00000180 0x00000180 + mask_write 0XF8000B54 0x00000180 0x00000180 + mask_write 0XF8000004 0x0000FFFF 0x0000767B + mask_write 0XE0001034 0x000000FF 0x00000006 + mask_write 0XE0001018 0x0000FFFF 0x0000007C + mask_write 0XE0001000 0x000001FF 0x00000017 + mask_write 0XE0001004 0x00000FFF 0x00000020 + mask_write 0XE000D000 0x00080000 0x00080000 + mask_write 0XF8007000 0x20000000 0x00000000 + mask_write 0XE000A244 0x003FFFFF 0x00080000 + mask_write 0XE000A00C 0x003F003F 0x00370008 + mask_write 0XE000A248 0x003FFFFF 0x00080000 + mask_write 0XE000A00C 0x003F003F 0x00370000 + mask_delay 0XF8F00200 1 + mask_write 0XE000A00C 0x003F003F 0x00370008 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 +} +proc ps7_post_config_2_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000900 0x0000000F 0x0000000F + mask_write 0XF8000240 0xFFFFFFFF 0x00000000 + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_debug_2_0 {} { + mask_write 0XF8898FB0 0xFFFFFFFF 0xC5ACCE55 + mask_write 0XF8899FB0 0xFFFFFFFF 0xC5ACCE55 + mask_write 0XF8809FB0 0xFFFFFFFF 0xC5ACCE55 +} +proc ps7_pll_init_data_1_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000110 0x003FFFF0 0x000FA220 + mask_write 0XF8000100 0x0007F000 0x00028000 + mask_write 0XF8000100 0x00000010 0x00000010 + mask_write 0XF8000100 0x00000001 0x00000001 + mask_write 0XF8000100 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000001 + mask_write 0XF8000100 0x00000010 0x00000000 + mask_write 0XF8000120 0x1F003F30 0x1F000200 + mask_write 0XF8000114 0x003FFFF0 0x0012C220 + mask_write 0XF8000104 0x0007F000 0x00020000 + mask_write 0XF8000104 0x00000010 0x00000010 + mask_write 0XF8000104 0x00000001 0x00000001 + mask_write 0XF8000104 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000002 + mask_write 0XF8000104 0x00000010 0x00000000 + mask_write 0XF8000124 0xFFF00003 0x0C200003 + mask_write 0XF8000118 0x003FFFF0 0x001452C0 + mask_write 0XF8000108 0x0007F000 0x0001E000 + mask_write 0XF8000108 0x00000010 0x00000010 + mask_write 0XF8000108 0x00000001 0x00000001 + mask_write 0XF8000108 0x00000001 0x00000000 + mask_poll 0XF800010C 0x00000004 + mask_write 0XF8000108 0x00000010 0x00000000 + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_clock_init_data_1_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000128 0x03F03F01 0x00302301 + mask_write 0XF8000138 0x00000011 0x00000001 + mask_write 0XF8000140 0x03F03F71 0x00100801 + mask_write 0XF800014C 0x00003F31 0x00000501 + mask_write 0XF8000150 0x00003F33 0x00000A01 + mask_write 0XF8000154 0x00003F33 0x00000A02 + mask_write 0XF800015C 0x03F03F33 0x00100A01 + mask_write 0XF8000160 0x007F007F 0x00000000 + mask_write 0XF8000168 0x00003F31 0x00000501 + mask_write 0XF8000170 0x03F03F30 0x00100600 + mask_write 0XF8000180 0x03F03F30 0x00101400 + mask_write 0XF8000190 0x03F03F30 0x00100A00 + mask_write 0XF80001A0 0x03F03F30 0x00100500 + mask_write 0XF80001C4 0x00000001 0x00000001 + mask_write 0XF800012C 0x01FFCCCD 0x01ED044D + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_ddr_init_data_1_0 {} { + mask_write 0XF8006000 0x0001FFFF 0x00000080 + mask_write 0XF8006004 0x1FFFFFFF 0x00081081 + mask_write 0XF8006008 0x03FFFFFF 0x03C0780F + mask_write 0XF800600C 0x03FFFFFF 0x02001001 + mask_write 0XF8006010 0x03FFFFFF 0x00014001 + mask_write 0XF8006014 0x001FFFFF 0x0004281B + mask_write 0XF8006018 0xF7FFFFFF 0x452460D2 + mask_write 0XF800601C 0xFFFFFFFF 0x720238E5 + mask_write 0XF8006020 0xFFFFFFFC 0x272872D0 + mask_write 0XF8006024 0x0FFFFFFF 0x0000003C + mask_write 0XF8006028 0x00003FFF 0x00002007 + mask_write 0XF800602C 0xFFFFFFFF 0x00000008 + mask_write 0XF8006030 0xFFFFFFFF 0x00040930 + mask_write 0XF8006034 0x13FF3FFF 0x00011054 + mask_write 0XF8006038 0x00001FC3 0x00000000 + mask_write 0XF800603C 0x000FFFFF 0x00000777 + mask_write 0XF8006040 0xFFFFFFFF 0xFFF00000 + mask_write 0XF8006044 0x0FFFFFFF 0x0F666666 + mask_write 0XF8006048 0x3FFFFFFF 0x0003C248 + mask_write 0XF8006050 0xFF0F8FFF 0x77010800 + mask_write 0XF8006058 0x0001FFFF 0x00000101 + mask_write 0XF800605C 0x0000FFFF 0x00005003 + mask_write 0XF8006060 0x000017FF 0x0000003E + mask_write 0XF8006064 0x00021FE0 0x00020000 + mask_write 0XF8006068 0x03FFFFFF 0x00284141 + mask_write 0XF800606C 0x0000FFFF 0x00001610 + mask_write 0XF80060A0 0x00FFFFFF 0x00008000 + mask_write 0XF80060A4 0xFFFFFFFF 0x10200802 + mask_write 0XF80060A8 0x0FFFFFFF 0x0690CB73 + mask_write 0XF80060AC 0x000001FF 0x000001FE + mask_write 0XF80060B0 0x1FFFFFFF 0x1CFFFFFF + mask_write 0XF80060B4 0x000007FF 0x00000200 + mask_write 0XF80060B8 0x01FFFFFF 0x00200066 + mask_write 0XF80060C4 0x00000003 0x00000003 + mask_write 0XF80060C4 0x00000003 0x00000000 + mask_write 0XF80060C8 0x000000FF 0x00000000 + mask_write 0XF80060DC 0x00000001 0x00000000 + mask_write 0XF80060F0 0x0000FFFF 0x00000000 + mask_write 0XF80060F4 0x0000000F 0x00000008 + mask_write 0XF8006114 0x000000FF 0x00000000 + mask_write 0XF8006118 0x7FFFFFFF 0x40000001 + mask_write 0XF800611C 0x7FFFFFFF 0x40000001 + mask_write 0XF8006120 0x7FFFFFFF 0x40000001 + mask_write 0XF8006124 0x7FFFFFFF 0x40000001 + mask_write 0XF800612C 0x000FFFFF 0x00018000 + mask_write 0XF8006130 0x000FFFFF 0x00018000 + mask_write 0XF8006134 0x000FFFFF 0x00018000 + mask_write 0XF8006138 0x000FFFFF 0x00018000 + mask_write 0XF8006140 0x000FFFFF 0x00000035 + mask_write 0XF8006144 0x000FFFFF 0x00000035 + mask_write 0XF8006148 0x000FFFFF 0x00000035 + mask_write 0XF800614C 0x000FFFFF 0x00000035 + mask_write 0XF8006154 0x000FFFFF 0x00000080 + mask_write 0XF8006158 0x000FFFFF 0x00000080 + mask_write 0XF800615C 0x000FFFFF 0x00000080 + mask_write 0XF8006160 0x000FFFFF 0x00000080 + mask_write 0XF8006168 0x001FFFFF 0x000000B5 + mask_write 0XF800616C 0x001FFFFF 0x000000B5 + mask_write 0XF8006170 0x001FFFFF 0x000000B5 + mask_write 0XF8006174 0x001FFFFF 0x000000B5 + mask_write 0XF800617C 0x000FFFFF 0x000000C0 + mask_write 0XF8006180 0x000FFFFF 0x000000C0 + mask_write 0XF8006184 0x000FFFFF 0x000000C0 + mask_write 0XF8006188 0x000FFFFF 0x000000C0 + mask_write 0XF8006190 0xFFFFFFFF 0x10040080 + mask_write 0XF8006194 0x000FFFFF 0x0001FC82 + mask_write 0XF8006204 0xFFFFFFFF 0x00000000 + mask_write 0XF8006208 0x000F03FF 0x000803FF + mask_write 0XF800620C 0x000F03FF 0x000803FF + mask_write 0XF8006210 0x000F03FF 0x000803FF + mask_write 0XF8006214 0x000F03FF 0x000803FF + mask_write 0XF8006218 0x000F03FF 0x000003FF + mask_write 0XF800621C 0x000F03FF 0x000003FF + mask_write 0XF8006220 0x000F03FF 0x000003FF + mask_write 0XF8006224 0x000F03FF 0x000003FF + mask_write 0XF80062A8 0x00000FF7 0x00000000 + mask_write 0XF80062AC 0xFFFFFFFF 0x00000000 + mask_write 0XF80062B0 0x003FFFFF 0x00005125 + mask_write 0XF80062B4 0x0003FFFF 0x000012A8 + mask_poll 0XF8000B74 0x00002000 + mask_write 0XF8006000 0x0001FFFF 0x00000081 + mask_poll 0XF8006054 0x00000007 +} +proc ps7_mio_init_data_1_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000B40 0x00000FFF 0x00000600 + mask_write 0XF8000B44 0x00000FFF 0x00000600 + mask_write 0XF8000B48 0x00000FFF 0x00000672 + mask_write 0XF8000B4C 0x00000FFF 0x00000672 + mask_write 0XF8000B50 0x00000FFF 0x00000674 + mask_write 0XF8000B54 0x00000FFF 0x00000674 + mask_write 0XF8000B58 0x00000FFF 0x00000600 + mask_write 0XF8000B5C 0xFFFFFFFF 0x0018C61C + mask_write 0XF8000B60 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B64 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B68 0xFFFFFFFF 0x00F9861C + mask_write 0XF8000B6C 0x000073FF 0x00000260 + mask_write 0XF8000B70 0x00000021 0x00000021 + mask_write 0XF8000B70 0x00000021 0x00000020 + mask_write 0XF8000B70 0x07FFFFFF 0x00000823 + mask_write 0XF8000700 0x00003FFF 0x00001600 + mask_write 0XF8000704 0x00003FFF 0x00001602 + mask_write 0XF8000708 0x00003FFF 0x00000602 + mask_write 0XF800070C 0x00003FFF 0x00000602 + mask_write 0XF8000710 0x00003FFF 0x00000602 + mask_write 0XF8000714 0x00003FFF 0x00000602 + mask_write 0XF8000718 0x00003FFF 0x00000602 + mask_write 0XF800071C 0x00003FFF 0x00000600 + mask_write 0XF8000720 0x00003FFF 0x00000602 + mask_write 0XF8000724 0x00003FFF 0x00001600 + mask_write 0XF8000728 0x00003FFF 0x00001600 + mask_write 0XF800072C 0x00003FFF 0x00001600 + mask_write 0XF8000730 0x00003FFF 0x00001640 + mask_write 0XF8000734 0x00003FFF 0x00001640 + mask_write 0XF8000738 0x00003FFF 0x00001621 + mask_write 0XF800073C 0x00003FFF 0x00001620 + mask_write 0XF8000740 0x00003FFF 0x00001202 + mask_write 0XF8000744 0x00003FFF 0x00001202 + mask_write 0XF8000748 0x00003FFF 0x00001202 + mask_write 0XF800074C 0x00003FFF 0x00001202 + mask_write 0XF8000750 0x00003FFF 0x00001202 + mask_write 0XF8000754 0x00003FFF 0x00001202 + mask_write 0XF8000758 0x00003FFF 0x00001203 + mask_write 0XF800075C 0x00003FFF 0x00001203 + mask_write 0XF8000760 0x00003FFF 0x00001203 + mask_write 0XF8000764 0x00003FFF 0x00001203 + mask_write 0XF8000768 0x00003FFF 0x00001203 + mask_write 0XF800076C 0x00003FFF 0x00001203 + mask_write 0XF8000770 0x00003FFF 0x00001204 + mask_write 0XF8000774 0x00003FFF 0x00001205 + mask_write 0XF8000778 0x00003FFF 0x00001204 + mask_write 0XF800077C 0x00003FFF 0x00001205 + mask_write 0XF8000780 0x00003FFF 0x00001204 + mask_write 0XF8000784 0x00003FFF 0x00001204 + mask_write 0XF8000788 0x00003FFF 0x00001204 + mask_write 0XF800078C 0x00003FFF 0x00001204 + mask_write 0XF8000790 0x00003FFF 0x00001205 + mask_write 0XF8000794 0x00003FFF 0x00001204 + mask_write 0XF8000798 0x00003FFF 0x00001204 + mask_write 0XF800079C 0x00003FFF 0x00001204 + mask_write 0XF80007A0 0x00003FFF 0x00001280 + mask_write 0XF80007A4 0x00003FFF 0x00001280 + mask_write 0XF80007A8 0x00003FFF 0x00001280 + mask_write 0XF80007AC 0x00003FFF 0x00001280 + mask_write 0XF80007B0 0x00003FFF 0x00001280 + mask_write 0XF80007B4 0x00003FFF 0x00001280 + mask_write 0XF80007B8 0x00003F01 0x00001201 + mask_write 0XF80007BC 0x00003F01 0x00001201 + mask_write 0XF80007C0 0x00003FFF 0x000012E0 + mask_write 0XF80007C4 0x00003FFF 0x000012E1 + mask_write 0XF80007C8 0x00003FFF 0x00001200 + mask_write 0XF80007CC 0x00003FFF 0x00000200 + mask_write 0XF80007D0 0x00003FFF 0x00001280 + mask_write 0XF80007D4 0x00003FFF 0x00001280 + mask_write 0XF8000830 0x003F003F 0x002E002F + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_peripherals_init_data_1_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000B48 0x00000180 0x00000180 + mask_write 0XF8000B4C 0x00000180 0x00000180 + mask_write 0XF8000B50 0x00000180 0x00000180 + mask_write 0XF8000B54 0x00000180 0x00000180 + mask_write 0XF8000004 0x0000FFFF 0x0000767B + mask_write 0XE0001034 0x000000FF 0x00000006 + mask_write 0XE0001018 0x0000FFFF 0x0000007C + mask_write 0XE0001000 0x000001FF 0x00000017 + mask_write 0XE0001004 0x00000FFF 0x00000020 + mask_write 0XE000D000 0x00080000 0x00080000 + mask_write 0XF8007000 0x20000000 0x00000000 + mask_write 0XE000A244 0x003FFFFF 0x00080000 + mask_write 0XE000A00C 0x003F003F 0x00370008 + mask_write 0XE000A248 0x003FFFFF 0x00080000 + mask_write 0XE000A00C 0x003F003F 0x00370000 + mask_delay 0XF8F00200 1 + mask_write 0XE000A00C 0x003F003F 0x00370008 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 + mask_delay 0XF8F00200 1 +} +proc ps7_post_config_1_0 {} { + mask_write 0XF8000008 0x0000FFFF 0x0000DF0D + mask_write 0XF8000900 0x0000000F 0x0000000F + mask_write 0XF8000240 0xFFFFFFFF 0x00000000 + mask_write 0XF8000004 0x0000FFFF 0x0000767B +} +proc ps7_debug_1_0 {} { + mask_write 0XF8898FB0 0xFFFFFFFF 0xC5ACCE55 + mask_write 0XF8899FB0 0xFFFFFFFF 0xC5ACCE55 + mask_write 0XF8809FB0 0xFFFFFFFF 0xC5ACCE55 +} +set PCW_SILICON_VER_1_0 "0x0" +set PCW_SILICON_VER_2_0 "0x1" +set PCW_SILICON_VER_3_0 "0x2" +set APU_FREQ 666666666 + + + +proc mask_poll { addr mask } { + set count 1 + set curval "0x[string range [mrd $addr] end-8 end]" + set maskedval [expr {$curval & $mask}] + while { $maskedval == 0 } { + set curval "0x[string range [mrd $addr] end-8 end]" + set maskedval [expr {$curval & $mask}] + set count [ expr { $count + 1 } ] + if { $count == 100000000 } { + puts "Timeout Reached. Mask poll failed at ADDRESS: $addr MASK: $mask" + break + } + } +} + + + +proc mask_delay { addr val } { + set delay [ get_number_of_cycles_for_delay $val ] + perf_reset_and_start_timer + set curval "0x[string range [mrd $addr] end-8 end]" + set maskedval [expr {$curval < $delay}] + while { $maskedval == 1 } { + set curval "0x[string range [mrd $addr] end-8 end]" + set maskedval [expr {$curval < $delay}] + } + perf_reset_clock +} + +proc ps_version { } { + set si_ver "0x[string range [mrd 0xF8007080] end-8 end]" + set mask_sil_ver "0x[expr {$si_ver >> 28}]" + return $mask_sil_ver; +} + +proc ps7_post_config {} { + variable PCW_SILICON_VER_1_0 + variable PCW_SILICON_VER_2_0 + variable PCW_SILICON_VER_3_0 + set sil_ver [ps_version] + + if { $sil_ver == $PCW_SILICON_VER_1_0} { + ps7_post_config_1_0 + } elseif { $sil_ver == $PCW_SILICON_VER_2_0 } { + ps7_post_config_2_0 + } else { + ps7_post_config_3_0 + } +} + +proc ps7_debug {} { + variable PCW_SILICON_VER_1_0 + variable PCW_SILICON_VER_2_0 + variable PCW_SILICON_VER_3_0 + set sil_ver [ps_version] + + if { $sil_ver == $PCW_SILICON_VER_1_0} { + ps7_debug_1_0 + } elseif { $sil_ver == $PCW_SILICON_VER_2_0 } { + ps7_debug_2_0 + } else { + ps7_debug_3_0 + } +} + +proc ps7_init {} { + variable PCW_SILICON_VER_1_0 + variable PCW_SILICON_VER_2_0 + variable PCW_SILICON_VER_3_0 + set sil_ver [ps_version] + + if { $sil_ver == $PCW_SILICON_VER_1_0} { + ps7_mio_init_data_1_0 + ps7_pll_init_data_1_0 + ps7_clock_init_data_1_0 + ps7_ddr_init_data_1_0 + ps7_peripherals_init_data_1_0 + #puts "PCW Silicon Version : 1.0" + } elseif { $sil_ver == $PCW_SILICON_VER_2_0 } { + ps7_mio_init_data_2_0 + ps7_pll_init_data_2_0 + ps7_clock_init_data_2_0 + ps7_ddr_init_data_2_0 + ps7_peripherals_init_data_2_0 + #puts "PCW Silicon Version : 2.0" + } else { + ps7_mio_init_data_3_0 + ps7_pll_init_data_3_0 + ps7_clock_init_data_3_0 + ps7_ddr_init_data_3_0 + ps7_peripherals_init_data_3_0 + #puts "PCW Silicon Version : 3.0" + } +} + + +# For delay calculation using global timer + +# start timer + proc perf_start_clock { } { + + #writing SCU_GLOBAL_TIMER_CONTROL register + + mask_write 0xF8F00208 0x00000109 0x00000009 +} + +# stop timer and reset timer count regs + proc perf_reset_clock { } { + perf_disable_clock + mask_write 0xF8F00200 0xFFFFFFFF 0x00000000 + mask_write 0xF8F00204 0xFFFFFFFF 0x00000000 +} + +# Compute mask for given delay in miliseconds +proc get_number_of_cycles_for_delay { delay } { + + # GTC is always clocked at 1/2 of the CPU frequency (CPU_3x2x) + variable APU_FREQ + return [ expr ($delay * $APU_FREQ /(2 * 1000))] +} + + +# stop timer +proc perf_disable_clock {} { + mask_write 0xF8F00208 0xFFFFFFFF 0x00000000 +} + +proc perf_reset_and_start_timer {} { + perf_reset_clock + perf_start_clock +} + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.c b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.c new file mode 100644 index 0000000..c973002 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.c @@ -0,0 +1,13085 @@ +/****************************************************************************** +* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along +* with this program; if not, see +* +* +******************************************************************************/ +/****************************************************************************/ +/** +* +* @file ps7_init_gpl.c +* +* This file is automatically generated +* +*****************************************************************************/ + +#include "ps7_init_gpl.h" + +unsigned long ps7_pll_init_data_3_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: PLL SLCR REGISTERS + // .. .. START: ARM PLL INIT + // .. .. PLL_RES = 0x2 + // .. .. ==> 0XF8000110[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000110[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0xfa + // .. .. ==> 0XF8000110[21:12] = 0x000000FAU + // .. .. ==> MASK : 0x003FF000U VAL : 0x000FA000U + // .. .. + EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U ,0x000FA220U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x28 + // .. .. .. ==> 0XF8000100[18:12] = 0x00000028U + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x00028000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x0007F000U ,0x00028000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000100[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000100[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000100[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. ARM_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000001U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000100[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. .. SRCSEL = 0x0 + // .. .. .. ==> 0XF8000120[5:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. .. DIVISOR = 0x2 + // .. .. .. ==> 0XF8000120[13:8] = 0x00000002U + // .. .. .. ==> MASK : 0x00003F00U VAL : 0x00000200U + // .. .. .. CPU_6OR4XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[24:24] = 0x00000001U + // .. .. .. ==> MASK : 0x01000000U VAL : 0x01000000U + // .. .. .. CPU_3OR2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[25:25] = 0x00000001U + // .. .. .. ==> MASK : 0x02000000U VAL : 0x02000000U + // .. .. .. CPU_2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[26:26] = 0x00000001U + // .. .. .. ==> MASK : 0x04000000U VAL : 0x04000000U + // .. .. .. CPU_1XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[27:27] = 0x00000001U + // .. .. .. ==> MASK : 0x08000000U VAL : 0x08000000U + // .. .. .. CPU_PERI_CLKACT = 0x1 + // .. .. .. ==> 0XF8000120[28:28] = 0x00000001U + // .. .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000120, 0x1F003F30U ,0x1F000200U), + // .. .. FINISH: ARM PLL INIT + // .. .. START: DDR PLL INIT + // .. .. PLL_RES = 0x2 + // .. .. ==> 0XF8000114[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000114[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0x12c + // .. .. ==> 0XF8000114[21:12] = 0x0000012CU + // .. .. ==> MASK : 0x003FF000U VAL : 0x0012C000U + // .. .. + EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U ,0x0012C220U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x20 + // .. .. .. ==> 0XF8000104[18:12] = 0x00000020U + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x00020000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x0007F000U ,0x00020000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000104[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000104[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000104[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. DDR_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[1:1] = 0x00000001U + // .. .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000002U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000104[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. .. DDR_3XCLKACT = 0x1 + // .. .. .. ==> 0XF8000124[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. DDR_2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000124[1:1] = 0x00000001U + // .. .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. .. DDR_3XCLK_DIVISOR = 0x2 + // .. .. .. ==> 0XF8000124[25:20] = 0x00000002U + // .. .. .. ==> MASK : 0x03F00000U VAL : 0x00200000U + // .. .. .. DDR_2XCLK_DIVISOR = 0x3 + // .. .. .. ==> 0XF8000124[31:26] = 0x00000003U + // .. .. .. ==> MASK : 0xFC000000U VAL : 0x0C000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000124, 0xFFF00003U ,0x0C200003U), + // .. .. FINISH: DDR PLL INIT + // .. .. START: IO PLL INIT + // .. .. PLL_RES = 0xc + // .. .. ==> 0XF8000118[7:4] = 0x0000000CU + // .. .. ==> MASK : 0x000000F0U VAL : 0x000000C0U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000118[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0x145 + // .. .. ==> 0XF8000118[21:12] = 0x00000145U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00145000U + // .. .. + EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U ,0x001452C0U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x1e + // .. .. .. ==> 0XF8000108[18:12] = 0x0000001EU + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x0001E000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x0007F000U ,0x0001E000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000108[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000108[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000108[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. IO_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[2:2] = 0x00000001U + // .. .. .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000004U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000108[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. FINISH: IO PLL INIT + // .. FINISH: PLL SLCR REGISTERS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_clock_init_data_3_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: CLOCK CONTROL SLCR REGISTERS + // .. CLKACT = 0x1 + // .. ==> 0XF8000128[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. DIVISOR0 = 0x23 + // .. ==> 0XF8000128[13:8] = 0x00000023U + // .. ==> MASK : 0x00003F00U VAL : 0x00002300U + // .. DIVISOR1 = 0x3 + // .. ==> 0XF8000128[25:20] = 0x00000003U + // .. ==> MASK : 0x03F00000U VAL : 0x00300000U + // .. + EMIT_MASKWRITE(0XF8000128, 0x03F03F01U ,0x00302301U), + // .. CLKACT = 0x1 + // .. ==> 0XF8000138[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000138[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000138, 0x00000011U ,0x00000001U), + // .. CLKACT = 0x1 + // .. ==> 0XF8000140[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000140[6:4] = 0x00000000U + // .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. DIVISOR = 0x8 + // .. ==> 0XF8000140[13:8] = 0x00000008U + // .. ==> MASK : 0x00003F00U VAL : 0x00000800U + // .. DIVISOR1 = 0x1 + // .. ==> 0XF8000140[25:20] = 0x00000001U + // .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. + EMIT_MASKWRITE(0XF8000140, 0x03F03F71U ,0x00100801U), + // .. CLKACT = 0x1 + // .. ==> 0XF800014C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF800014C[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0x5 + // .. ==> 0XF800014C[13:8] = 0x00000005U + // .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. + EMIT_MASKWRITE(0XF800014C, 0x00003F31U ,0x00000501U), + // .. CLKACT0 = 0x1 + // .. ==> 0XF8000150[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. CLKACT1 = 0x0 + // .. ==> 0XF8000150[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000150[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0xa + // .. ==> 0XF8000150[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. + EMIT_MASKWRITE(0XF8000150, 0x00003F33U ,0x00000A01U), + // .. CLKACT0 = 0x0 + // .. ==> 0XF8000154[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. CLKACT1 = 0x1 + // .. ==> 0XF8000154[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000154[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0xa + // .. ==> 0XF8000154[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. + EMIT_MASKWRITE(0XF8000154, 0x00003F33U ,0x00000A02U), + // .. CLKACT0 = 0x1 + // .. ==> 0XF800015C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. CLKACT1 = 0x0 + // .. ==> 0XF800015C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. SRCSEL = 0x0 + // .. ==> 0XF800015C[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR0 = 0xa + // .. ==> 0XF800015C[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. DIVISOR1 = 0x1 + // .. ==> 0XF800015C[25:20] = 0x00000001U + // .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. + EMIT_MASKWRITE(0XF800015C, 0x03F03F33U ,0x00100A01U), + // .. CAN0_MUX = 0x0 + // .. ==> 0XF8000160[5:0] = 0x00000000U + // .. ==> MASK : 0x0000003FU VAL : 0x00000000U + // .. CAN0_REF_SEL = 0x0 + // .. ==> 0XF8000160[6:6] = 0x00000000U + // .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. CAN1_MUX = 0x0 + // .. ==> 0XF8000160[21:16] = 0x00000000U + // .. ==> MASK : 0x003F0000U VAL : 0x00000000U + // .. CAN1_REF_SEL = 0x0 + // .. ==> 0XF8000160[22:22] = 0x00000000U + // .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000160, 0x007F007FU ,0x00000000U), + // .. .. START: TRACE CLOCK + // .. .. FINISH: TRACE CLOCK + // .. .. CLKACT = 0x1 + // .. .. ==> 0XF8000168[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000168[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR = 0x5 + // .. .. ==> 0XF8000168[13:8] = 0x00000005U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. .. + EMIT_MASKWRITE(0XF8000168, 0x00003F31U ,0x00000501U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000170[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x6 + // .. .. ==> 0XF8000170[13:8] = 0x00000006U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000600U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000170[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000170, 0x03F03F30U ,0x00100600U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000180[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x14 + // .. .. ==> 0XF8000180[13:8] = 0x00000014U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00001400U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000180[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000180, 0x03F03F30U ,0x00101400U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000190[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0xa + // .. .. ==> 0XF8000190[13:8] = 0x0000000AU + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000190[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000190, 0x03F03F30U ,0x00100A00U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF80001A0[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x5 + // .. .. ==> 0XF80001A0[13:8] = 0x00000005U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF80001A0[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF80001A0, 0x03F03F30U ,0x00100500U), + // .. .. CLK_621_TRUE = 0x1 + // .. .. ==> 0XF80001C4[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. + EMIT_MASKWRITE(0XF80001C4, 0x00000001U ,0x00000001U), + // .. .. DMA_CPU_2XCLKACT = 0x1 + // .. .. ==> 0XF800012C[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. USB0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[2:2] = 0x00000001U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. .. USB1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[3:3] = 0x00000001U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. .. GEM0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[6:6] = 0x00000001U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000040U + // .. .. GEM1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. SDI0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[10:10] = 0x00000001U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000400U + // .. .. SDI1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. SPI0_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. SPI1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. CAN0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. CAN1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. I2C0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[18:18] = 0x00000001U + // .. .. ==> MASK : 0x00040000U VAL : 0x00040000U + // .. .. I2C1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. UART0_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. UART1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[21:21] = 0x00000001U + // .. .. ==> MASK : 0x00200000U VAL : 0x00200000U + // .. .. GPIO_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[22:22] = 0x00000001U + // .. .. ==> MASK : 0x00400000U VAL : 0x00400000U + // .. .. LQSPI_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[23:23] = 0x00000001U + // .. .. ==> MASK : 0x00800000U VAL : 0x00800000U + // .. .. SMC_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[24:24] = 0x00000001U + // .. .. ==> MASK : 0x01000000U VAL : 0x01000000U + // .. .. + EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU ,0x01ED044DU), + // .. FINISH: CLOCK CONTROL SLCR REGISTERS + // .. START: THIS SHOULD BE BLANK + // .. FINISH: THIS SHOULD BE BLANK + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_ddr_init_data_3_0[] = { + // START: top + // .. START: DDR INITIALIZATION + // .. .. START: LOCK DDR + // .. .. reg_ddrc_soft_rstb = 0 + // .. .. ==> 0XF8006000[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_powerdown_en = 0x0 + // .. .. ==> 0XF8006000[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_data_bus_width = 0x0 + // .. .. ==> 0XF8006000[3:2] = 0x00000000U + // .. .. ==> MASK : 0x0000000CU VAL : 0x00000000U + // .. .. reg_ddrc_burst8_refresh = 0x0 + // .. .. ==> 0XF8006000[6:4] = 0x00000000U + // .. .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. .. reg_ddrc_rdwr_idle_gap = 0x1 + // .. .. ==> 0XF8006000[13:7] = 0x00000001U + // .. .. ==> MASK : 0x00003F80U VAL : 0x00000080U + // .. .. reg_ddrc_dis_rd_bypass = 0x0 + // .. .. ==> 0XF8006000[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_act_bypass = 0x0 + // .. .. ==> 0XF8006000[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_auto_refresh = 0x0 + // .. .. ==> 0XF8006000[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU ,0x00000080U), + // .. .. FINISH: LOCK DDR + // .. .. reg_ddrc_t_rfc_nom_x32 = 0x81 + // .. .. ==> 0XF8006004[11:0] = 0x00000081U + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000081U + // .. .. reserved_reg_ddrc_active_ranks = 0x1 + // .. .. ==> 0XF8006004[13:12] = 0x00000001U + // .. .. ==> MASK : 0x00003000U VAL : 0x00001000U + // .. .. reg_ddrc_addrmap_cs_bit0 = 0x0 + // .. .. ==> 0XF8006004[18:14] = 0x00000000U + // .. .. ==> MASK : 0x0007C000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006004, 0x0007FFFFU ,0x00001081U), + // .. .. reg_ddrc_hpr_min_non_critical_x32 = 0xf + // .. .. ==> 0XF8006008[10:0] = 0x0000000FU + // .. .. ==> MASK : 0x000007FFU VAL : 0x0000000FU + // .. .. reg_ddrc_hpr_max_starve_x32 = 0xf + // .. .. ==> 0XF8006008[21:11] = 0x0000000FU + // .. .. ==> MASK : 0x003FF800U VAL : 0x00007800U + // .. .. reg_ddrc_hpr_xact_run_length = 0xf + // .. .. ==> 0XF8006008[25:22] = 0x0000000FU + // .. .. ==> MASK : 0x03C00000U VAL : 0x03C00000U + // .. .. + EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU ,0x03C0780FU), + // .. .. reg_ddrc_lpr_min_non_critical_x32 = 0x1 + // .. .. ==> 0XF800600C[10:0] = 0x00000001U + // .. .. ==> MASK : 0x000007FFU VAL : 0x00000001U + // .. .. reg_ddrc_lpr_max_starve_x32 = 0x2 + // .. .. ==> 0XF800600C[21:11] = 0x00000002U + // .. .. ==> MASK : 0x003FF800U VAL : 0x00001000U + // .. .. reg_ddrc_lpr_xact_run_length = 0x8 + // .. .. ==> 0XF800600C[25:22] = 0x00000008U + // .. .. ==> MASK : 0x03C00000U VAL : 0x02000000U + // .. .. + EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU ,0x02001001U), + // .. .. reg_ddrc_w_min_non_critical_x32 = 0x1 + // .. .. ==> 0XF8006010[10:0] = 0x00000001U + // .. .. ==> MASK : 0x000007FFU VAL : 0x00000001U + // .. .. reg_ddrc_w_xact_run_length = 0x8 + // .. .. ==> 0XF8006010[14:11] = 0x00000008U + // .. .. ==> MASK : 0x00007800U VAL : 0x00004000U + // .. .. reg_ddrc_w_max_starve_x32 = 0x2 + // .. .. ==> 0XF8006010[25:15] = 0x00000002U + // .. .. ==> MASK : 0x03FF8000U VAL : 0x00010000U + // .. .. + EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU ,0x00014001U), + // .. .. reg_ddrc_t_rc = 0x1b + // .. .. ==> 0XF8006014[5:0] = 0x0000001BU + // .. .. ==> MASK : 0x0000003FU VAL : 0x0000001BU + // .. .. reg_ddrc_t_rfc_min = 0xa0 + // .. .. ==> 0XF8006014[13:6] = 0x000000A0U + // .. .. ==> MASK : 0x00003FC0U VAL : 0x00002800U + // .. .. reg_ddrc_post_selfref_gap_x32 = 0x10 + // .. .. ==> 0XF8006014[20:14] = 0x00000010U + // .. .. ==> MASK : 0x001FC000U VAL : 0x00040000U + // .. .. + EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU ,0x0004281BU), + // .. .. reg_ddrc_wr2pre = 0x12 + // .. .. ==> 0XF8006018[4:0] = 0x00000012U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000012U + // .. .. reg_ddrc_powerdown_to_x32 = 0x6 + // .. .. ==> 0XF8006018[9:5] = 0x00000006U + // .. .. ==> MASK : 0x000003E0U VAL : 0x000000C0U + // .. .. reg_ddrc_t_faw = 0x18 + // .. .. ==> 0XF8006018[15:10] = 0x00000018U + // .. .. ==> MASK : 0x0000FC00U VAL : 0x00006000U + // .. .. reg_ddrc_t_ras_max = 0x24 + // .. .. ==> 0XF8006018[21:16] = 0x00000024U + // .. .. ==> MASK : 0x003F0000U VAL : 0x00240000U + // .. .. reg_ddrc_t_ras_min = 0x14 + // .. .. ==> 0XF8006018[26:22] = 0x00000014U + // .. .. ==> MASK : 0x07C00000U VAL : 0x05000000U + // .. .. reg_ddrc_t_cke = 0x4 + // .. .. ==> 0XF8006018[31:28] = 0x00000004U + // .. .. ==> MASK : 0xF0000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU ,0x452460D2U), + // .. .. reg_ddrc_write_latency = 0x5 + // .. .. ==> 0XF800601C[4:0] = 0x00000005U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000005U + // .. .. reg_ddrc_rd2wr = 0x7 + // .. .. ==> 0XF800601C[9:5] = 0x00000007U + // .. .. ==> MASK : 0x000003E0U VAL : 0x000000E0U + // .. .. reg_ddrc_wr2rd = 0xe + // .. .. ==> 0XF800601C[14:10] = 0x0000000EU + // .. .. ==> MASK : 0x00007C00U VAL : 0x00003800U + // .. .. reg_ddrc_t_xp = 0x4 + // .. .. ==> 0XF800601C[19:15] = 0x00000004U + // .. .. ==> MASK : 0x000F8000U VAL : 0x00020000U + // .. .. reg_ddrc_pad_pd = 0x0 + // .. .. ==> 0XF800601C[22:20] = 0x00000000U + // .. .. ==> MASK : 0x00700000U VAL : 0x00000000U + // .. .. reg_ddrc_rd2pre = 0x4 + // .. .. ==> 0XF800601C[27:23] = 0x00000004U + // .. .. ==> MASK : 0x0F800000U VAL : 0x02000000U + // .. .. reg_ddrc_t_rcd = 0x7 + // .. .. ==> 0XF800601C[31:28] = 0x00000007U + // .. .. ==> MASK : 0xF0000000U VAL : 0x70000000U + // .. .. + EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU ,0x720238E5U), + // .. .. reg_ddrc_t_ccd = 0x4 + // .. .. ==> 0XF8006020[4:2] = 0x00000004U + // .. .. ==> MASK : 0x0000001CU VAL : 0x00000010U + // .. .. reg_ddrc_t_rrd = 0x6 + // .. .. ==> 0XF8006020[7:5] = 0x00000006U + // .. .. ==> MASK : 0x000000E0U VAL : 0x000000C0U + // .. .. reg_ddrc_refresh_margin = 0x2 + // .. .. ==> 0XF8006020[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. reg_ddrc_t_rp = 0x7 + // .. .. ==> 0XF8006020[15:12] = 0x00000007U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00007000U + // .. .. reg_ddrc_refresh_to_x32 = 0x8 + // .. .. ==> 0XF8006020[20:16] = 0x00000008U + // .. .. ==> MASK : 0x001F0000U VAL : 0x00080000U + // .. .. reg_ddrc_mobile = 0x0 + // .. .. ==> 0XF8006020[22:22] = 0x00000000U + // .. .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. .. reg_ddrc_en_dfi_dram_clk_disable = 0x0 + // .. .. ==> 0XF8006020[23:23] = 0x00000000U + // .. .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. .. reg_ddrc_read_latency = 0x7 + // .. .. ==> 0XF8006020[28:24] = 0x00000007U + // .. .. ==> MASK : 0x1F000000U VAL : 0x07000000U + // .. .. reg_phy_mode_ddr1_ddr2 = 0x1 + // .. .. ==> 0XF8006020[29:29] = 0x00000001U + // .. .. ==> MASK : 0x20000000U VAL : 0x20000000U + // .. .. reg_ddrc_dis_pad_pd = 0x0 + // .. .. ==> 0XF8006020[30:30] = 0x00000000U + // .. .. ==> MASK : 0x40000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006020, 0x7FDFFFFCU ,0x270872D0U), + // .. .. reg_ddrc_en_2t_timing_mode = 0x0 + // .. .. ==> 0XF8006024[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_prefer_write = 0x0 + // .. .. ==> 0XF8006024[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_mr_wr = 0x0 + // .. .. ==> 0XF8006024[6:6] = 0x00000000U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. .. reg_ddrc_mr_addr = 0x0 + // .. .. ==> 0XF8006024[8:7] = 0x00000000U + // .. .. ==> MASK : 0x00000180U VAL : 0x00000000U + // .. .. reg_ddrc_mr_data = 0x0 + // .. .. ==> 0XF8006024[24:9] = 0x00000000U + // .. .. ==> MASK : 0x01FFFE00U VAL : 0x00000000U + // .. .. ddrc_reg_mr_wr_busy = 0x0 + // .. .. ==> 0XF8006024[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reg_ddrc_mr_type = 0x0 + // .. .. ==> 0XF8006024[26:26] = 0x00000000U + // .. .. ==> MASK : 0x04000000U VAL : 0x00000000U + // .. .. reg_ddrc_mr_rdata_valid = 0x0 + // .. .. ==> 0XF8006024[27:27] = 0x00000000U + // .. .. ==> MASK : 0x08000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006024, 0x0FFFFFC3U ,0x00000000U), + // .. .. reg_ddrc_final_wait_x32 = 0x7 + // .. .. ==> 0XF8006028[6:0] = 0x00000007U + // .. .. ==> MASK : 0x0000007FU VAL : 0x00000007U + // .. .. reg_ddrc_pre_ocd_x32 = 0x0 + // .. .. ==> 0XF8006028[10:7] = 0x00000000U + // .. .. ==> MASK : 0x00000780U VAL : 0x00000000U + // .. .. reg_ddrc_t_mrd = 0x4 + // .. .. ==> 0XF8006028[13:11] = 0x00000004U + // .. .. ==> MASK : 0x00003800U VAL : 0x00002000U + // .. .. + EMIT_MASKWRITE(0XF8006028, 0x00003FFFU ,0x00002007U), + // .. .. reg_ddrc_emr2 = 0x8 + // .. .. ==> 0XF800602C[15:0] = 0x00000008U + // .. .. ==> MASK : 0x0000FFFFU VAL : 0x00000008U + // .. .. reg_ddrc_emr3 = 0x0 + // .. .. ==> 0XF800602C[31:16] = 0x00000000U + // .. .. ==> MASK : 0xFFFF0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU ,0x00000008U), + // .. .. reg_ddrc_mr = 0x930 + // .. .. ==> 0XF8006030[15:0] = 0x00000930U + // .. .. ==> MASK : 0x0000FFFFU VAL : 0x00000930U + // .. .. reg_ddrc_emr = 0x4 + // .. .. ==> 0XF8006030[31:16] = 0x00000004U + // .. .. ==> MASK : 0xFFFF0000U VAL : 0x00040000U + // .. .. + EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU ,0x00040930U), + // .. .. reg_ddrc_burst_rdwr = 0x4 + // .. .. ==> 0XF8006034[3:0] = 0x00000004U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000004U + // .. .. reg_ddrc_pre_cke_x1024 = 0x105 + // .. .. ==> 0XF8006034[13:4] = 0x00000105U + // .. .. ==> MASK : 0x00003FF0U VAL : 0x00001050U + // .. .. reg_ddrc_post_cke_x1024 = 0x1 + // .. .. ==> 0XF8006034[25:16] = 0x00000001U + // .. .. ==> MASK : 0x03FF0000U VAL : 0x00010000U + // .. .. reg_ddrc_burstchop = 0x0 + // .. .. ==> 0XF8006034[28:28] = 0x00000000U + // .. .. ==> MASK : 0x10000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU ,0x00011054U), + // .. .. reg_ddrc_force_low_pri_n = 0x0 + // .. .. ==> 0XF8006038[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_dis_dq = 0x0 + // .. .. ==> 0XF8006038[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006038, 0x00000003U ,0x00000000U), + // .. .. reg_ddrc_addrmap_bank_b0 = 0x7 + // .. .. ==> 0XF800603C[3:0] = 0x00000007U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000007U + // .. .. reg_ddrc_addrmap_bank_b1 = 0x7 + // .. .. ==> 0XF800603C[7:4] = 0x00000007U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000070U + // .. .. reg_ddrc_addrmap_bank_b2 = 0x7 + // .. .. ==> 0XF800603C[11:8] = 0x00000007U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000700U + // .. .. reg_ddrc_addrmap_col_b5 = 0x0 + // .. .. ==> 0XF800603C[15:12] = 0x00000000U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b6 = 0x0 + // .. .. ==> 0XF800603C[19:16] = 0x00000000U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU ,0x00000777U), + // .. .. reg_ddrc_addrmap_col_b2 = 0x0 + // .. .. ==> 0XF8006040[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b3 = 0x0 + // .. .. ==> 0XF8006040[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b4 = 0x0 + // .. .. ==> 0XF8006040[11:8] = 0x00000000U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b7 = 0x0 + // .. .. ==> 0XF8006040[15:12] = 0x00000000U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b8 = 0x0 + // .. .. ==> 0XF8006040[19:16] = 0x00000000U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b9 = 0xf + // .. .. ==> 0XF8006040[23:20] = 0x0000000FU + // .. .. ==> MASK : 0x00F00000U VAL : 0x00F00000U + // .. .. reg_ddrc_addrmap_col_b10 = 0xf + // .. .. ==> 0XF8006040[27:24] = 0x0000000FU + // .. .. ==> MASK : 0x0F000000U VAL : 0x0F000000U + // .. .. reg_ddrc_addrmap_col_b11 = 0xf + // .. .. ==> 0XF8006040[31:28] = 0x0000000FU + // .. .. ==> MASK : 0xF0000000U VAL : 0xF0000000U + // .. .. + EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU ,0xFFF00000U), + // .. .. reg_ddrc_addrmap_row_b0 = 0x6 + // .. .. ==> 0XF8006044[3:0] = 0x00000006U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000006U + // .. .. reg_ddrc_addrmap_row_b1 = 0x6 + // .. .. ==> 0XF8006044[7:4] = 0x00000006U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000060U + // .. .. reg_ddrc_addrmap_row_b2_11 = 0x6 + // .. .. ==> 0XF8006044[11:8] = 0x00000006U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000600U + // .. .. reg_ddrc_addrmap_row_b12 = 0x6 + // .. .. ==> 0XF8006044[15:12] = 0x00000006U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00006000U + // .. .. reg_ddrc_addrmap_row_b13 = 0x6 + // .. .. ==> 0XF8006044[19:16] = 0x00000006U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00060000U + // .. .. reg_ddrc_addrmap_row_b14 = 0x6 + // .. .. ==> 0XF8006044[23:20] = 0x00000006U + // .. .. ==> MASK : 0x00F00000U VAL : 0x00600000U + // .. .. reg_ddrc_addrmap_row_b15 = 0xf + // .. .. ==> 0XF8006044[27:24] = 0x0000000FU + // .. .. ==> MASK : 0x0F000000U VAL : 0x0F000000U + // .. .. + EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU ,0x0F666666U), + // .. .. reg_phy_rd_local_odt = 0x0 + // .. .. ==> 0XF8006048[13:12] = 0x00000000U + // .. .. ==> MASK : 0x00003000U VAL : 0x00000000U + // .. .. reg_phy_wr_local_odt = 0x3 + // .. .. ==> 0XF8006048[15:14] = 0x00000003U + // .. .. ==> MASK : 0x0000C000U VAL : 0x0000C000U + // .. .. reg_phy_idle_local_odt = 0x3 + // .. .. ==> 0XF8006048[17:16] = 0x00000003U + // .. .. ==> MASK : 0x00030000U VAL : 0x00030000U + // .. .. reserved_reg_ddrc_rank0_wr_odt = 0x1 + // .. .. ==> 0XF8006048[5:3] = 0x00000001U + // .. .. ==> MASK : 0x00000038U VAL : 0x00000008U + // .. .. reserved_reg_ddrc_rank0_rd_odt = 0x0 + // .. .. ==> 0XF8006048[2:0] = 0x00000000U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006048, 0x0003F03FU ,0x0003C008U), + // .. .. reg_phy_rd_cmd_to_data = 0x0 + // .. .. ==> 0XF8006050[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_phy_wr_cmd_to_data = 0x0 + // .. .. ==> 0XF8006050[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_phy_rdc_we_to_re_delay = 0x8 + // .. .. ==> 0XF8006050[11:8] = 0x00000008U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000800U + // .. .. reg_phy_rdc_fifo_rst_disable = 0x0 + // .. .. ==> 0XF8006050[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_phy_use_fixed_re = 0x1 + // .. .. ==> 0XF8006050[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. reg_phy_rdc_fifo_rst_err_cnt_clr = 0x0 + // .. .. ==> 0XF8006050[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_phy_dis_phy_ctrl_rstn = 0x0 + // .. .. ==> 0XF8006050[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_phy_clk_stall_level = 0x0 + // .. .. ==> 0XF8006050[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_num_of_dq0 = 0x7 + // .. .. ==> 0XF8006050[27:24] = 0x00000007U + // .. .. ==> MASK : 0x0F000000U VAL : 0x07000000U + // .. .. reg_phy_wrlvl_num_of_dq0 = 0x7 + // .. .. ==> 0XF8006050[31:28] = 0x00000007U + // .. .. ==> MASK : 0xF0000000U VAL : 0x70000000U + // .. .. + EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU ,0x77010800U), + // .. .. reg_ddrc_dis_dll_calib = 0x0 + // .. .. ==> 0XF8006058[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006058, 0x00010000U ,0x00000000U), + // .. .. reg_ddrc_rd_odt_delay = 0x3 + // .. .. ==> 0XF800605C[3:0] = 0x00000003U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000003U + // .. .. reg_ddrc_wr_odt_delay = 0x0 + // .. .. ==> 0XF800605C[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_ddrc_rd_odt_hold = 0x0 + // .. .. ==> 0XF800605C[11:8] = 0x00000000U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000000U + // .. .. reg_ddrc_wr_odt_hold = 0x5 + // .. .. ==> 0XF800605C[15:12] = 0x00000005U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00005000U + // .. .. + EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU ,0x00005003U), + // .. .. reg_ddrc_pageclose = 0x0 + // .. .. ==> 0XF8006060[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_lpr_num_entries = 0x1f + // .. .. ==> 0XF8006060[6:1] = 0x0000001FU + // .. .. ==> MASK : 0x0000007EU VAL : 0x0000003EU + // .. .. reg_ddrc_auto_pre_en = 0x0 + // .. .. ==> 0XF8006060[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. reg_ddrc_refresh_update_level = 0x0 + // .. .. ==> 0XF8006060[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_ddrc_dis_wc = 0x0 + // .. .. ==> 0XF8006060[9:9] = 0x00000000U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. .. reg_ddrc_dis_collision_page_opt = 0x0 + // .. .. ==> 0XF8006060[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_ddrc_selfref_en = 0x0 + // .. .. ==> 0XF8006060[12:12] = 0x00000000U + // .. .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006060, 0x000017FFU ,0x0000003EU), + // .. .. reg_ddrc_go2critical_hysteresis = 0x0 + // .. .. ==> 0XF8006064[12:5] = 0x00000000U + // .. .. ==> MASK : 0x00001FE0U VAL : 0x00000000U + // .. .. reg_arb_go2critical_en = 0x1 + // .. .. ==> 0XF8006064[17:17] = 0x00000001U + // .. .. ==> MASK : 0x00020000U VAL : 0x00020000U + // .. .. + EMIT_MASKWRITE(0XF8006064, 0x00021FE0U ,0x00020000U), + // .. .. reg_ddrc_wrlvl_ww = 0x41 + // .. .. ==> 0XF8006068[7:0] = 0x00000041U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000041U + // .. .. reg_ddrc_rdlvl_rr = 0x41 + // .. .. ==> 0XF8006068[15:8] = 0x00000041U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00004100U + // .. .. reg_ddrc_dfi_t_wlmrd = 0x28 + // .. .. ==> 0XF8006068[25:16] = 0x00000028U + // .. .. ==> MASK : 0x03FF0000U VAL : 0x00280000U + // .. .. + EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU ,0x00284141U), + // .. .. dfi_t_ctrlupd_interval_min_x1024 = 0x10 + // .. .. ==> 0XF800606C[7:0] = 0x00000010U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000010U + // .. .. dfi_t_ctrlupd_interval_max_x1024 = 0x16 + // .. .. ==> 0XF800606C[15:8] = 0x00000016U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00001600U + // .. .. + EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU ,0x00001610U), + // .. .. reg_ddrc_dfi_t_ctrl_delay = 0x1 + // .. .. ==> 0XF8006078[3:0] = 0x00000001U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000001U + // .. .. reg_ddrc_dfi_t_dram_clk_disable = 0x1 + // .. .. ==> 0XF8006078[7:4] = 0x00000001U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000010U + // .. .. reg_ddrc_dfi_t_dram_clk_enable = 0x1 + // .. .. ==> 0XF8006078[11:8] = 0x00000001U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000100U + // .. .. reg_ddrc_t_cksre = 0x6 + // .. .. ==> 0XF8006078[15:12] = 0x00000006U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00006000U + // .. .. reg_ddrc_t_cksrx = 0x6 + // .. .. ==> 0XF8006078[19:16] = 0x00000006U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00060000U + // .. .. reg_ddrc_t_ckesr = 0x4 + // .. .. ==> 0XF8006078[25:20] = 0x00000004U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00400000U + // .. .. + EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU ,0x00466111U), + // .. .. reg_ddrc_t_ckpde = 0x2 + // .. .. ==> 0XF800607C[3:0] = 0x00000002U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000002U + // .. .. reg_ddrc_t_ckpdx = 0x2 + // .. .. ==> 0XF800607C[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. reg_ddrc_t_ckdpde = 0x2 + // .. .. ==> 0XF800607C[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. reg_ddrc_t_ckdpdx = 0x2 + // .. .. ==> 0XF800607C[15:12] = 0x00000002U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00002000U + // .. .. reg_ddrc_t_ckcsx = 0x3 + // .. .. ==> 0XF800607C[19:16] = 0x00000003U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00030000U + // .. .. + EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU ,0x00032222U), + // .. .. reg_ddrc_dis_auto_zq = 0x0 + // .. .. ==> 0XF80060A4[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_ddr3 = 0x1 + // .. .. ==> 0XF80060A4[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. reg_ddrc_t_mod = 0x200 + // .. .. ==> 0XF80060A4[11:2] = 0x00000200U + // .. .. ==> MASK : 0x00000FFCU VAL : 0x00000800U + // .. .. reg_ddrc_t_zq_long_nop = 0x200 + // .. .. ==> 0XF80060A4[21:12] = 0x00000200U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00200000U + // .. .. reg_ddrc_t_zq_short_nop = 0x40 + // .. .. ==> 0XF80060A4[31:22] = 0x00000040U + // .. .. ==> MASK : 0xFFC00000U VAL : 0x10000000U + // .. .. + EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU ,0x10200802U), + // .. .. t_zq_short_interval_x1024 = 0xcb73 + // .. .. ==> 0XF80060A8[19:0] = 0x0000CB73U + // .. .. ==> MASK : 0x000FFFFFU VAL : 0x0000CB73U + // .. .. dram_rstn_x1024 = 0x69 + // .. .. ==> 0XF80060A8[27:20] = 0x00000069U + // .. .. ==> MASK : 0x0FF00000U VAL : 0x06900000U + // .. .. + EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU ,0x0690CB73U), + // .. .. deeppowerdown_en = 0x0 + // .. .. ==> 0XF80060AC[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. deeppowerdown_to_x1024 = 0xff + // .. .. ==> 0XF80060AC[8:1] = 0x000000FFU + // .. .. ==> MASK : 0x000001FEU VAL : 0x000001FEU + // .. .. + EMIT_MASKWRITE(0XF80060AC, 0x000001FFU ,0x000001FEU), + // .. .. dfi_wrlvl_max_x1024 = 0xfff + // .. .. ==> 0XF80060B0[11:0] = 0x00000FFFU + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000FFFU + // .. .. dfi_rdlvl_max_x1024 = 0xfff + // .. .. ==> 0XF80060B0[23:12] = 0x00000FFFU + // .. .. ==> MASK : 0x00FFF000U VAL : 0x00FFF000U + // .. .. ddrc_reg_twrlvl_max_error = 0x0 + // .. .. ==> 0XF80060B0[24:24] = 0x00000000U + // .. .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. .. ddrc_reg_trdlvl_max_error = 0x0 + // .. .. ==> 0XF80060B0[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reg_ddrc_dfi_wr_level_en = 0x1 + // .. .. ==> 0XF80060B0[26:26] = 0x00000001U + // .. .. ==> MASK : 0x04000000U VAL : 0x04000000U + // .. .. reg_ddrc_dfi_rd_dqs_gate_level = 0x1 + // .. .. ==> 0XF80060B0[27:27] = 0x00000001U + // .. .. ==> MASK : 0x08000000U VAL : 0x08000000U + // .. .. reg_ddrc_dfi_rd_data_eye_train = 0x1 + // .. .. ==> 0XF80060B0[28:28] = 0x00000001U + // .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. + EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU ,0x1CFFFFFFU), + // .. .. reg_ddrc_skip_ocd = 0x1 + // .. .. ==> 0XF80060B4[9:9] = 0x00000001U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000200U + // .. .. + EMIT_MASKWRITE(0XF80060B4, 0x00000200U ,0x00000200U), + // .. .. reg_ddrc_dfi_t_rddata_en = 0x6 + // .. .. ==> 0XF80060B8[4:0] = 0x00000006U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000006U + // .. .. reg_ddrc_dfi_t_ctrlup_min = 0x3 + // .. .. ==> 0XF80060B8[14:5] = 0x00000003U + // .. .. ==> MASK : 0x00007FE0U VAL : 0x00000060U + // .. .. reg_ddrc_dfi_t_ctrlup_max = 0x40 + // .. .. ==> 0XF80060B8[24:15] = 0x00000040U + // .. .. ==> MASK : 0x01FF8000U VAL : 0x00200000U + // .. .. + EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU ,0x00200066U), + // .. .. START: RESET ECC ERROR + // .. .. Clear_Uncorrectable_DRAM_ECC_error = 1 + // .. .. ==> 0XF80060C4[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. Clear_Correctable_DRAM_ECC_error = 1 + // .. .. ==> 0XF80060C4[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. + EMIT_MASKWRITE(0XF80060C4, 0x00000003U ,0x00000003U), + // .. .. FINISH: RESET ECC ERROR + // .. .. Clear_Uncorrectable_DRAM_ECC_error = 0x0 + // .. .. ==> 0XF80060C4[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. Clear_Correctable_DRAM_ECC_error = 0x0 + // .. .. ==> 0XF80060C4[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060C4, 0x00000003U ,0x00000000U), + // .. .. CORR_ECC_LOG_VALID = 0x0 + // .. .. ==> 0XF80060C8[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. ECC_CORRECTED_BIT_NUM = 0x0 + // .. .. ==> 0XF80060C8[7:1] = 0x00000000U + // .. .. ==> MASK : 0x000000FEU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060C8, 0x000000FFU ,0x00000000U), + // .. .. UNCORR_ECC_LOG_VALID = 0x0 + // .. .. ==> 0XF80060DC[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060DC, 0x00000001U ,0x00000000U), + // .. .. STAT_NUM_CORR_ERR = 0x0 + // .. .. ==> 0XF80060F0[15:8] = 0x00000000U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00000000U + // .. .. STAT_NUM_UNCORR_ERR = 0x0 + // .. .. ==> 0XF80060F0[7:0] = 0x00000000U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU ,0x00000000U), + // .. .. reg_ddrc_ecc_mode = 0x0 + // .. .. ==> 0XF80060F4[2:0] = 0x00000000U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000000U + // .. .. reg_ddrc_dis_scrub = 0x1 + // .. .. ==> 0XF80060F4[3:3] = 0x00000001U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. .. + EMIT_MASKWRITE(0XF80060F4, 0x0000000FU ,0x00000008U), + // .. .. reg_phy_dif_on = 0x0 + // .. .. ==> 0XF8006114[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_phy_dif_off = 0x0 + // .. .. ==> 0XF8006114[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006114, 0x000000FFU ,0x00000000U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006118[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006118[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006118[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006118[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006118, 0x7FFFFFCFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF800611C[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF800611C[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF800611C[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF800611C[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF800611C, 0x7FFFFFCFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006120[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006120[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006120[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006120[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006120, 0x7FFFFFCFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006124[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006124[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006124[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006124[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006124, 0x7FFFFFCFU ,0x40000001U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF800612C[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF800612C[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006130[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006130[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006134[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006134[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006138[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006138[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006140[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006140[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006140[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006144[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006144[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006144[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006148[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006148[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006148[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF800614C[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF800614C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF800614C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006154[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006154[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006154[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006158[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006158[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006158[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF800615C[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF800615C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF800615C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006160[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006160[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006160[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006168[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006168[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006168[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF800616C[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF800616C[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF800616C[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006170[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006170[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006170[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006174[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006174[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006174[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF800617C[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF800617C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF800617C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006180[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006180[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006180[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006184[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006184[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006184[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006188[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006188[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006188[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_bl2 = 0x0 + // .. .. ==> 0XF8006190[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_at_spd_atpg = 0x0 + // .. .. ==> 0XF8006190[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_bist_enable = 0x0 + // .. .. ==> 0XF8006190[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_force_err = 0x0 + // .. .. ==> 0XF8006190[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_bist_mode = 0x0 + // .. .. ==> 0XF8006190[6:5] = 0x00000000U + // .. .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. .. reg_phy_invert_clkout = 0x1 + // .. .. ==> 0XF8006190[7:7] = 0x00000001U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. .. reg_phy_sel_logic = 0x0 + // .. .. ==> 0XF8006190[9:9] = 0x00000000U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_ratio = 0x100 + // .. .. ==> 0XF8006190[19:10] = 0x00000100U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00040000U + // .. .. reg_phy_ctrl_slave_force = 0x0 + // .. .. ==> 0XF8006190[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_delay = 0x0 + // .. .. ==> 0XF8006190[27:21] = 0x00000000U + // .. .. ==> MASK : 0x0FE00000U VAL : 0x00000000U + // .. .. reg_phy_lpddr = 0x0 + // .. .. ==> 0XF8006190[29:29] = 0x00000000U + // .. .. ==> MASK : 0x20000000U VAL : 0x00000000U + // .. .. reg_phy_cmd_latency = 0x0 + // .. .. ==> 0XF8006190[30:30] = 0x00000000U + // .. .. ==> MASK : 0x40000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006190, 0x6FFFFEFEU ,0x00040080U), + // .. .. reg_phy_wr_rl_delay = 0x2 + // .. .. ==> 0XF8006194[4:0] = 0x00000002U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000002U + // .. .. reg_phy_rd_rl_delay = 0x4 + // .. .. ==> 0XF8006194[9:5] = 0x00000004U + // .. .. ==> MASK : 0x000003E0U VAL : 0x00000080U + // .. .. reg_phy_dll_lock_diff = 0xf + // .. .. ==> 0XF8006194[13:10] = 0x0000000FU + // .. .. ==> MASK : 0x00003C00U VAL : 0x00003C00U + // .. .. reg_phy_use_wr_level = 0x1 + // .. .. ==> 0XF8006194[14:14] = 0x00000001U + // .. .. ==> MASK : 0x00004000U VAL : 0x00004000U + // .. .. reg_phy_use_rd_dqs_gate_level = 0x1 + // .. .. ==> 0XF8006194[15:15] = 0x00000001U + // .. .. ==> MASK : 0x00008000U VAL : 0x00008000U + // .. .. reg_phy_use_rd_data_eye_level = 0x1 + // .. .. ==> 0XF8006194[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. reg_phy_dis_calib_rst = 0x0 + // .. .. ==> 0XF8006194[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_delay = 0x0 + // .. .. ==> 0XF8006194[19:18] = 0x00000000U + // .. .. ==> MASK : 0x000C0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU ,0x0001FC82U), + // .. .. reg_arb_page_addr_mask = 0x0 + // .. .. ==> 0XF8006204[31:0] = 0x00000000U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU ,0x00000000U), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006208[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006208[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006208[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006208[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006208, 0x000703FFU ,0x000003FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF800620C[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF800620C[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF800620C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF800620C[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800620C, 0x000703FFU ,0x000003FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006210[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006210[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006210[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006210[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006210, 0x000703FFU ,0x000003FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006214[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006214[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006214[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006214[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006214, 0x000703FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006218[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006218[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006218[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006218[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006218[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006218, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF800621C[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF800621C[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF800621C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF800621C[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF800621C[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800621C, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006220[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006220[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006220[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006220[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006220[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006220, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006224[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006224[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006224[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006224[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006224[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006224, 0x000F03FFU ,0x000003FFU), + // .. .. reg_ddrc_lpddr2 = 0x0 + // .. .. ==> 0XF80062A8[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_derate_enable = 0x0 + // .. .. ==> 0XF80062A8[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_ddrc_mr4_margin = 0x0 + // .. .. ==> 0XF80062A8[11:4] = 0x00000000U + // .. .. ==> MASK : 0x00000FF0U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80062A8, 0x00000FF5U ,0x00000000U), + // .. .. reg_ddrc_mr4_read_interval = 0x0 + // .. .. ==> 0XF80062AC[31:0] = 0x00000000U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU ,0x00000000U), + // .. .. reg_ddrc_min_stable_clock_x1 = 0x5 + // .. .. ==> 0XF80062B0[3:0] = 0x00000005U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000005U + // .. .. reg_ddrc_idle_after_reset_x32 = 0x12 + // .. .. ==> 0XF80062B0[11:4] = 0x00000012U + // .. .. ==> MASK : 0x00000FF0U VAL : 0x00000120U + // .. .. reg_ddrc_t_mrw = 0x5 + // .. .. ==> 0XF80062B0[21:12] = 0x00000005U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00005000U + // .. .. + EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU ,0x00005125U), + // .. .. reg_ddrc_max_auto_init_x1024 = 0xa8 + // .. .. ==> 0XF80062B4[7:0] = 0x000000A8U + // .. .. ==> MASK : 0x000000FFU VAL : 0x000000A8U + // .. .. reg_ddrc_dev_zqinit_x32 = 0x12 + // .. .. ==> 0XF80062B4[17:8] = 0x00000012U + // .. .. ==> MASK : 0x0003FF00U VAL : 0x00001200U + // .. .. + EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU ,0x000012A8U), + // .. .. START: POLL ON DCI STATUS + // .. .. DONE = 1 + // .. .. ==> 0XF8000B74[13:13] = 0x00000001U + // .. .. ==> MASK : 0x00002000U VAL : 0x00002000U + // .. .. + EMIT_MASKPOLL(0XF8000B74, 0x00002000U), + // .. .. FINISH: POLL ON DCI STATUS + // .. .. START: UNLOCK DDR + // .. .. reg_ddrc_soft_rstb = 0x1 + // .. .. ==> 0XF8006000[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_ddrc_powerdown_en = 0x0 + // .. .. ==> 0XF8006000[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_data_bus_width = 0x0 + // .. .. ==> 0XF8006000[3:2] = 0x00000000U + // .. .. ==> MASK : 0x0000000CU VAL : 0x00000000U + // .. .. reg_ddrc_burst8_refresh = 0x0 + // .. .. ==> 0XF8006000[6:4] = 0x00000000U + // .. .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. .. reg_ddrc_rdwr_idle_gap = 1 + // .. .. ==> 0XF8006000[13:7] = 0x00000001U + // .. .. ==> MASK : 0x00003F80U VAL : 0x00000080U + // .. .. reg_ddrc_dis_rd_bypass = 0x0 + // .. .. ==> 0XF8006000[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_act_bypass = 0x0 + // .. .. ==> 0XF8006000[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_auto_refresh = 0x0 + // .. .. ==> 0XF8006000[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU ,0x00000081U), + // .. .. FINISH: UNLOCK DDR + // .. .. START: CHECK DDR STATUS + // .. .. ddrc_reg_operating_mode = 1 + // .. .. ==> 0XF8006054[2:0] = 0x00000001U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000001U + // .. .. + EMIT_MASKPOLL(0XF8006054, 0x00000007U), + // .. .. FINISH: CHECK DDR STATUS + // .. FINISH: DDR INITIALIZATION + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_mio_init_data_3_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: OCM REMAPPING + // .. FINISH: OCM REMAPPING + // .. START: DDRIOB SETTINGS + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B40[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B40[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B40[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B40[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCI_TYPE = 0x0 + // .. ==> 0XF8000B40[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B40[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B40[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B40[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B40[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU ,0x00000600U), + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B44[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B44[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B44[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B44[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCI_TYPE = 0x0 + // .. ==> 0XF8000B44[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B44[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B44[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B44[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B44[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU ,0x00000600U), + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B48[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x1 + // .. ==> 0XF8000B48[2:1] = 0x00000001U + // .. ==> MASK : 0x00000006U VAL : 0x00000002U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B48[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B48[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCI_TYPE = 0x3 + // .. ==> 0XF8000B48[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B48[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B48[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B48[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B48[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU ,0x00000672U), + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B4C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x1 + // .. ==> 0XF8000B4C[2:1] = 0x00000001U + // .. ==> MASK : 0x00000006U VAL : 0x00000002U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B4C[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B4C[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCI_TYPE = 0x3 + // .. ==> 0XF8000B4C[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B4C[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B4C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B4C[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B4C[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU ,0x00000672U), + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B50[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x2 + // .. ==> 0XF8000B50[2:1] = 0x00000002U + // .. ==> MASK : 0x00000006U VAL : 0x00000004U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B50[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B50[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCI_TYPE = 0x3 + // .. ==> 0XF8000B50[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B50[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B50[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B50[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B50[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU ,0x00000674U), + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B54[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x2 + // .. ==> 0XF8000B54[2:1] = 0x00000002U + // .. ==> MASK : 0x00000006U VAL : 0x00000004U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B54[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B54[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCI_TYPE = 0x3 + // .. ==> 0XF8000B54[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B54[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B54[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B54[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B54[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU ,0x00000674U), + // .. reserved_INP_POWER = 0x0 + // .. ==> 0XF8000B58[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B58[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE_B = 0x0 + // .. ==> 0XF8000B58[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B58[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCI_TYPE = 0x0 + // .. ==> 0XF8000B58[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B58[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B58[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B58[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B58[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU ,0x00000600U), + // .. reserved_DRIVE_P = 0x1c + // .. ==> 0XF8000B5C[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. reserved_DRIVE_N = 0xc + // .. ==> 0XF8000B5C[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. reserved_SLEW_P = 0x3 + // .. ==> 0XF8000B5C[18:14] = 0x00000003U + // .. ==> MASK : 0x0007C000U VAL : 0x0000C000U + // .. reserved_SLEW_N = 0x3 + // .. ==> 0XF8000B5C[23:19] = 0x00000003U + // .. ==> MASK : 0x00F80000U VAL : 0x00180000U + // .. reserved_GTL = 0x0 + // .. ==> 0XF8000B5C[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. reserved_RTERM = 0x0 + // .. ==> 0XF8000B5C[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU ,0x0018C61CU), + // .. reserved_DRIVE_P = 0x1c + // .. ==> 0XF8000B60[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. reserved_DRIVE_N = 0xc + // .. ==> 0XF8000B60[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. reserved_SLEW_P = 0x6 + // .. ==> 0XF8000B60[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. reserved_SLEW_N = 0x1f + // .. ==> 0XF8000B60[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. reserved_GTL = 0x0 + // .. ==> 0XF8000B60[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. reserved_RTERM = 0x0 + // .. ==> 0XF8000B60[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU ,0x00F9861CU), + // .. reserved_DRIVE_P = 0x1c + // .. ==> 0XF8000B64[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. reserved_DRIVE_N = 0xc + // .. ==> 0XF8000B64[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. reserved_SLEW_P = 0x6 + // .. ==> 0XF8000B64[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. reserved_SLEW_N = 0x1f + // .. ==> 0XF8000B64[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. reserved_GTL = 0x0 + // .. ==> 0XF8000B64[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. reserved_RTERM = 0x0 + // .. ==> 0XF8000B64[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU ,0x00F9861CU), + // .. reserved_DRIVE_P = 0x1c + // .. ==> 0XF8000B68[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. reserved_DRIVE_N = 0xc + // .. ==> 0XF8000B68[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. reserved_SLEW_P = 0x6 + // .. ==> 0XF8000B68[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. reserved_SLEW_N = 0x1f + // .. ==> 0XF8000B68[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. reserved_GTL = 0x0 + // .. ==> 0XF8000B68[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. reserved_RTERM = 0x0 + // .. ==> 0XF8000B68[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU ,0x00F9861CU), + // .. VREF_INT_EN = 0x0 + // .. ==> 0XF8000B6C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. VREF_SEL = 0x0 + // .. ==> 0XF8000B6C[4:1] = 0x00000000U + // .. ==> MASK : 0x0000001EU VAL : 0x00000000U + // .. VREF_EXT_EN = 0x3 + // .. ==> 0XF8000B6C[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. reserved_VREF_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[8:7] = 0x00000000U + // .. ==> MASK : 0x00000180U VAL : 0x00000000U + // .. REFIO_EN = 0x1 + // .. ==> 0XF8000B6C[9:9] = 0x00000001U + // .. ==> MASK : 0x00000200U VAL : 0x00000200U + // .. reserved_REFIO_TEST = 0x0 + // .. ==> 0XF8000B6C[11:10] = 0x00000000U + // .. ==> MASK : 0x00000C00U VAL : 0x00000000U + // .. reserved_REFIO_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. reserved_DRST_B_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. reserved_CKE_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[14:14] = 0x00000000U + // .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU ,0x00000260U), + // .. .. START: ASSERT RESET + // .. .. RESET = 1 + // .. .. ==> 0XF8000B70[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x00000001U ,0x00000001U), + // .. .. FINISH: ASSERT RESET + // .. .. START: DEASSERT RESET + // .. .. RESET = 0 + // .. .. ==> 0XF8000B70[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reserved_VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x00000021U ,0x00000020U), + // .. .. FINISH: DEASSERT RESET + // .. .. RESET = 0x1 + // .. .. ==> 0XF8000B70[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. ENABLE = 0x1 + // .. .. ==> 0XF8000B70[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. reserved_VRP_TRI = 0x0 + // .. .. ==> 0XF8000B70[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reserved_VRN_TRI = 0x0 + // .. .. ==> 0XF8000B70[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reserved_VRP_OUT = 0x0 + // .. .. ==> 0XF8000B70[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reserved_VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. NREF_OPT1 = 0x0 + // .. .. ==> 0XF8000B70[7:6] = 0x00000000U + // .. .. ==> MASK : 0x000000C0U VAL : 0x00000000U + // .. .. NREF_OPT2 = 0x0 + // .. .. ==> 0XF8000B70[10:8] = 0x00000000U + // .. .. ==> MASK : 0x00000700U VAL : 0x00000000U + // .. .. NREF_OPT4 = 0x1 + // .. .. ==> 0XF8000B70[13:11] = 0x00000001U + // .. .. ==> MASK : 0x00003800U VAL : 0x00000800U + // .. .. PREF_OPT1 = 0x0 + // .. .. ==> 0XF8000B70[15:14] = 0x00000000U + // .. .. ==> MASK : 0x0000C000U VAL : 0x00000000U + // .. .. PREF_OPT2 = 0x0 + // .. .. ==> 0XF8000B70[19:17] = 0x00000000U + // .. .. ==> MASK : 0x000E0000U VAL : 0x00000000U + // .. .. UPDATE_CONTROL = 0x0 + // .. .. ==> 0XF8000B70[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. reserved_INIT_COMPLETE = 0x0 + // .. .. ==> 0XF8000B70[21:21] = 0x00000000U + // .. .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. .. reserved_TST_CLK = 0x0 + // .. .. ==> 0XF8000B70[22:22] = 0x00000000U + // .. .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. .. reserved_TST_HLN = 0x0 + // .. .. ==> 0XF8000B70[23:23] = 0x00000000U + // .. .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. .. reserved_TST_HLP = 0x0 + // .. .. ==> 0XF8000B70[24:24] = 0x00000000U + // .. .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. .. reserved_TST_RST = 0x0 + // .. .. ==> 0XF8000B70[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reserved_INT_DCI_EN = 0x0 + // .. .. ==> 0XF8000B70[26:26] = 0x00000000U + // .. .. ==> MASK : 0x04000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x07FEFFFFU ,0x00000823U), + // .. FINISH: DDRIOB SETTINGS + // .. START: MIO PROGRAMMING + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000700[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000700[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000700[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000700[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000700[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000700[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000700[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000700[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000700[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000700, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000704[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000704[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000704[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000704[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000704[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000704[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000704[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000704[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000704[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000704, 0x00003FFFU ,0x00001602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000708[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000708[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000708[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000708[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000708[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000708[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000708[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000708[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000708[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000708, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800070C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF800070C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800070C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800070C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800070C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800070C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800070C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF800070C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF800070C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800070C, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000710[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000710[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000710[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000710[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000710[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000710[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000710[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000710[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000710[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000710, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000714[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000714[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000714[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000714[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000714[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000714[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000714[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000714[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000714[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000714, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000718[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000718[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000718[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000718[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000718[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000718[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000718[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000718[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000718[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000718, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800071C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800071C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800071C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800071C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800071C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800071C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800071C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF800071C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF800071C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800071C, 0x00003FFFU ,0x00000600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000720[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000720[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000720[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000720[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000720[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000720[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000720[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000720[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000720[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000720, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000724[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000724[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000724[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000724[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000724[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000724[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000724[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000724[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000724[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000724, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000728[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000728[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000728[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000728[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000728[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000728[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000728[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000728[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000728[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000728, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800072C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800072C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800072C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800072C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800072C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800072C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800072C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF800072C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800072C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800072C, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000730[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000730[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000730[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000730[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 2 + // .. ==> 0XF8000730[7:5] = 0x00000002U + // .. ==> MASK : 0x000000E0U VAL : 0x00000040U + // .. Speed = 0 + // .. ==> 0XF8000730[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000730[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000730[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000730[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000730, 0x00003FFFU ,0x00001640U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000734[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000734[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000734[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000734[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 2 + // .. ==> 0XF8000734[7:5] = 0x00000002U + // .. ==> MASK : 0x000000E0U VAL : 0x00000040U + // .. Speed = 0 + // .. ==> 0XF8000734[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000734[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000734[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000734[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000734, 0x00003FFFU ,0x00001640U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000738[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000738[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000738[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000738[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 1 + // .. ==> 0XF8000738[7:5] = 0x00000001U + // .. ==> MASK : 0x000000E0U VAL : 0x00000020U + // .. Speed = 0 + // .. ==> 0XF8000738[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000738[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000738[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000738[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000738, 0x00003FFFU ,0x00001621U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800073C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800073C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800073C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800073C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 1 + // .. ==> 0XF800073C[7:5] = 0x00000001U + // .. ==> MASK : 0x000000E0U VAL : 0x00000020U + // .. Speed = 0 + // .. ==> 0XF800073C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800073C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF800073C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800073C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800073C, 0x00003FFFU ,0x00001620U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000740[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000740[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000740[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000740[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000740[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000740[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000740[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000740[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000740[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000740, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000744[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000744[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000744[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000744[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000744[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000744[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000744[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000744[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000744[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000744, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000748[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000748[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000748[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000748[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000748[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000748[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000748[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000748[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000748[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000748, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800074C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF800074C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800074C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800074C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800074C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800074C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800074C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800074C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800074C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800074C, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000750[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000750[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000750[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000750[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000750[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000750[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000750[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000750[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000750[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000750, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000754[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000754[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000754[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000754[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000754[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000754[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000754[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000754[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000754[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000754, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000758[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000758[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000758[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000758[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000758[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000758[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000758[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000758[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000758[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000758, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800075C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF800075C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800075C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800075C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800075C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800075C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800075C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800075C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800075C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800075C, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000760[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000760[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000760[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000760[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000760[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000760[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000760[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000760[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000760[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000760, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000764[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000764[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000764[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000764[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000764[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000764[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000764[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000764[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000764[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000764, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000768[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000768[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000768[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000768[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000768[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000768[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000768[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000768[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000768[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000768, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800076C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF800076C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800076C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800076C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800076C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800076C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800076C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800076C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800076C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800076C, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000770[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000770[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000770[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000770[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000770[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000770[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000770[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000770[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000770[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000770, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000774[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000774[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000774[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000774[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000774[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000774[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000774[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000774[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000774[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000774, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000778[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000778[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000778[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000778[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000778[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000778[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000778[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000778[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000778[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000778, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800077C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF800077C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800077C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800077C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800077C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800077C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800077C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800077C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800077C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800077C, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000780[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000780[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000780[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000780[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000780[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000780[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000780[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000780[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000780[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000780, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000784[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000784[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000784[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000784[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000784[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000784[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000784[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000784[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000784[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000784, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000788[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000788[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000788[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000788[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000788[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000788[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000788[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000788[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000788[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000788, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800078C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800078C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800078C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800078C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800078C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800078C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800078C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800078C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800078C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800078C, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000790[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000790[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000790[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000790[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000790[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000790[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000790[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000790[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000790[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000790, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000794[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000794[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000794[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000794[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000794[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000794[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000794[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000794[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000794[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000794, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000798[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000798[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000798[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000798[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000798[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000798[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000798[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000798[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000798[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000798, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800079C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800079C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800079C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800079C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800079C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800079C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800079C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800079C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800079C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800079C, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A8[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A8[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A8[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A8[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A8[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007AC[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007AC[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007AC[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007AC[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007AC[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007AC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007AC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007AC[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007AC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007B0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007B0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007B0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007B0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007B0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007B0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007B4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007B4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007B4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007B4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007B4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007B4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007B8[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. Speed = 0 + // .. ==> 0XF80007B8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B8, 0x00003F01U ,0x00001201U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007BC[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. Speed = 0 + // .. ==> 0XF80007BC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007BC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007BC[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007BC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007BC, 0x00003F01U ,0x00001201U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007C0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007C0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 7 + // .. ==> 0XF80007C0[7:5] = 0x00000007U + // .. ==> MASK : 0x000000E0U VAL : 0x000000E0U + // .. Speed = 0 + // .. ==> 0XF80007C0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU ,0x000012E0U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007C4[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF80007C4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 7 + // .. ==> 0XF80007C4[7:5] = 0x00000007U + // .. ==> MASK : 0x000000E0U VAL : 0x000000E0U + // .. Speed = 0 + // .. ==> 0XF80007C4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU ,0x000012E1U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007C8[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007C8[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C8[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C8[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF80007C8[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF80007C8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU ,0x00001200U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007CC[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007CC[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007CC[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007CC[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF80007CC[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF80007CC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007CC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 0 + // .. ==> 0XF80007CC[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007CC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU ,0x00000200U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007D0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007D0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007D0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007D0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007D0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007D0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007D0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007D0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007D0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007D4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007D4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007D4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007D4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007D4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007D4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007D4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007D4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007D4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU ,0x00001280U), + // .. SDIO0_WP_SEL = 47 + // .. ==> 0XF8000830[5:0] = 0x0000002FU + // .. ==> MASK : 0x0000003FU VAL : 0x0000002FU + // .. SDIO0_CD_SEL = 46 + // .. ==> 0XF8000830[21:16] = 0x0000002EU + // .. ==> MASK : 0x003F0000U VAL : 0x002E0000U + // .. + EMIT_MASKWRITE(0XF8000830, 0x003F003FU ,0x002E002FU), + // .. FINISH: MIO PROGRAMMING + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_peripherals_init_data_3_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: DDR TERM/IBUF_DISABLE_MODE SETTINGS + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B48[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B48[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B48, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B4C[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B4C[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B4C, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B50[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B50[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B50, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B54[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B54[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B54, 0x00000180U ,0x00000180U), + // .. FINISH: DDR TERM/IBUF_DISABLE_MODE SETTINGS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // .. START: SRAM/NOR SET OPMODE + // .. FINISH: SRAM/NOR SET OPMODE + // .. START: UART REGISTERS + // .. BDIV = 0x6 + // .. ==> 0XE0001034[7:0] = 0x00000006U + // .. ==> MASK : 0x000000FFU VAL : 0x00000006U + // .. + EMIT_MASKWRITE(0XE0001034, 0x000000FFU ,0x00000006U), + // .. CD = 0x7c + // .. ==> 0XE0001018[15:0] = 0x0000007CU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000007CU + // .. + EMIT_MASKWRITE(0XE0001018, 0x0000FFFFU ,0x0000007CU), + // .. STPBRK = 0x0 + // .. ==> 0XE0001000[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. STTBRK = 0x0 + // .. ==> 0XE0001000[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. RSTTO = 0x0 + // .. ==> 0XE0001000[6:6] = 0x00000000U + // .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. TXDIS = 0x0 + // .. ==> 0XE0001000[5:5] = 0x00000000U + // .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. TXEN = 0x1 + // .. ==> 0XE0001000[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. RXDIS = 0x0 + // .. ==> 0XE0001000[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. RXEN = 0x1 + // .. ==> 0XE0001000[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. TXRES = 0x1 + // .. ==> 0XE0001000[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. RXRES = 0x1 + // .. ==> 0XE0001000[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. + EMIT_MASKWRITE(0XE0001000, 0x000001FFU ,0x00000017U), + // .. CHMODE = 0x0 + // .. ==> 0XE0001004[9:8] = 0x00000000U + // .. ==> MASK : 0x00000300U VAL : 0x00000000U + // .. NBSTOP = 0x0 + // .. ==> 0XE0001004[7:6] = 0x00000000U + // .. ==> MASK : 0x000000C0U VAL : 0x00000000U + // .. PAR = 0x4 + // .. ==> 0XE0001004[5:3] = 0x00000004U + // .. ==> MASK : 0x00000038U VAL : 0x00000020U + // .. CHRL = 0x0 + // .. ==> 0XE0001004[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. CLKS = 0x0 + // .. ==> 0XE0001004[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XE0001004, 0x000003FFU ,0x00000020U), + // .. FINISH: UART REGISTERS + // .. START: QSPI REGISTERS + // .. Holdb_dr = 1 + // .. ==> 0XE000D000[19:19] = 0x00000001U + // .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. + EMIT_MASKWRITE(0XE000D000, 0x00080000U ,0x00080000U), + // .. FINISH: QSPI REGISTERS + // .. START: PL POWER ON RESET REGISTERS + // .. PCFG_POR_CNT_4K = 0 + // .. ==> 0XF8007000[29:29] = 0x00000000U + // .. ==> MASK : 0x20000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8007000, 0x20000000U ,0x00000000U), + // .. FINISH: PL POWER ON RESET REGISTERS + // .. START: SMC TIMING CALCULATION REGISTER UPDATE + // .. .. START: NAND SET CYCLE + // .. .. FINISH: NAND SET CYCLE + // .. .. START: OPMODE + // .. .. FINISH: OPMODE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: SRAM/NOR CS0 SET CYCLE + // .. .. FINISH: SRAM/NOR CS0 SET CYCLE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: NOR CS0 BASE ADDRESS + // .. .. FINISH: NOR CS0 BASE ADDRESS + // .. .. START: SRAM/NOR CS1 SET CYCLE + // .. .. FINISH: SRAM/NOR CS1 SET CYCLE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: NOR CS1 BASE ADDRESS + // .. .. FINISH: NOR CS1 BASE ADDRESS + // .. .. START: USB RESET + // .. .. .. START: USB0 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. DIRECTION_1 = 0x80000 + // .. .. .. .. ==> 0XE000A244[21:0] = 0x00080000U + // .. .. .. .. ==> MASK : 0x003FFFFFU VAL : 0x00080000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU ,0x00080000U), + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x8 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000008U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000008U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370008U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. OP_ENABLE_1 = 0x80000 + // .. .. .. .. ==> 0XE000A248[21:0] = 0x00080000U + // .. .. .. .. ==> MASK : 0x003FFFFFU VAL : 0x00080000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU ,0x00080000U), + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x0 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000000U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370000U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x8 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000008U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000008U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370008U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: USB0 RESET + // .. .. .. START: USB1 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: USB1 RESET + // .. .. FINISH: USB RESET + // .. .. START: ENET RESET + // .. .. .. START: ENET0 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: ENET0 RESET + // .. .. .. START: ENET1 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: ENET1 RESET + // .. .. FINISH: ENET RESET + // .. .. START: I2C RESET + // .. .. .. START: I2C0 RESET + // .. .. .. .. START: DIR MODE GPIO BANK0 + // .. .. .. .. FINISH: DIR MODE GPIO BANK0 + // .. .. .. .. START: DIR MODE GPIO BANK1 + // .. .. .. .. FINISH: DIR MODE GPIO BANK1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: I2C0 RESET + // .. .. .. START: I2C1 RESET + // .. .. .. .. START: DIR MODE GPIO BANK0 + // .. .. .. .. FINISH: DIR MODE GPIO BANK0 + // .. .. .. .. START: DIR MODE GPIO BANK1 + // .. .. .. .. FINISH: DIR MODE GPIO BANK1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: I2C1 RESET + // .. .. FINISH: I2C RESET + // .. .. START: NOR CHIP SELECT + // .. .. .. START: DIR MODE BANK 0 + // .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. FINISH: NOR CHIP SELECT + // .. FINISH: SMC TIMING CALCULATION REGISTER UPDATE + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_post_config_3_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: ENABLING LEVEL SHIFTER + // .. USER_LVL_INP_EN_0 = 1 + // .. ==> 0XF8000900[3:3] = 0x00000001U + // .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. USER_LVL_OUT_EN_0 = 1 + // .. ==> 0XF8000900[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. USER_LVL_INP_EN_1 = 1 + // .. ==> 0XF8000900[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. USER_LVL_OUT_EN_1 = 1 + // .. ==> 0XF8000900[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. + EMIT_MASKWRITE(0XF8000900, 0x0000000FU ,0x0000000FU), + // .. FINISH: ENABLING LEVEL SHIFTER + // .. START: FPGA RESETS TO 0 + // .. reserved_3 = 0 + // .. ==> 0XF8000240[31:25] = 0x00000000U + // .. ==> MASK : 0xFE000000U VAL : 0x00000000U + // .. reserved_FPGA_ACP_RST = 0 + // .. ==> 0XF8000240[24:24] = 0x00000000U + // .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. reserved_FPGA_AXDS3_RST = 0 + // .. ==> 0XF8000240[23:23] = 0x00000000U + // .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. reserved_FPGA_AXDS2_RST = 0 + // .. ==> 0XF8000240[22:22] = 0x00000000U + // .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. reserved_FPGA_AXDS1_RST = 0 + // .. ==> 0XF8000240[21:21] = 0x00000000U + // .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. reserved_FPGA_AXDS0_RST = 0 + // .. ==> 0XF8000240[20:20] = 0x00000000U + // .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. reserved_2 = 0 + // .. ==> 0XF8000240[19:18] = 0x00000000U + // .. ==> MASK : 0x000C0000U VAL : 0x00000000U + // .. reserved_FSSW1_FPGA_RST = 0 + // .. ==> 0XF8000240[17:17] = 0x00000000U + // .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. reserved_FSSW0_FPGA_RST = 0 + // .. ==> 0XF8000240[16:16] = 0x00000000U + // .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. reserved_1 = 0 + // .. ==> 0XF8000240[15:14] = 0x00000000U + // .. ==> MASK : 0x0000C000U VAL : 0x00000000U + // .. reserved_FPGA_FMSW1_RST = 0 + // .. ==> 0XF8000240[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. reserved_FPGA_FMSW0_RST = 0 + // .. ==> 0XF8000240[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. reserved_FPGA_DMA3_RST = 0 + // .. ==> 0XF8000240[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. reserved_FPGA_DMA2_RST = 0 + // .. ==> 0XF8000240[10:10] = 0x00000000U + // .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. reserved_FPGA_DMA1_RST = 0 + // .. ==> 0XF8000240[9:9] = 0x00000000U + // .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. reserved_FPGA_DMA0_RST = 0 + // .. ==> 0XF8000240[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. reserved = 0 + // .. ==> 0XF8000240[7:4] = 0x00000000U + // .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. FPGA3_OUT_RST = 0 + // .. ==> 0XF8000240[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. FPGA2_OUT_RST = 0 + // .. ==> 0XF8000240[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. FPGA1_OUT_RST = 0 + // .. ==> 0XF8000240[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. FPGA0_OUT_RST = 0 + // .. ==> 0XF8000240[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU ,0x00000000U), + // .. FINISH: FPGA RESETS TO 0 + // .. START: AFI REGISTERS + // .. .. START: AFI0 REGISTERS + // .. .. FINISH: AFI0 REGISTERS + // .. .. START: AFI1 REGISTERS + // .. .. FINISH: AFI1 REGISTERS + // .. .. START: AFI2 REGISTERS + // .. .. FINISH: AFI2 REGISTERS + // .. .. START: AFI3 REGISTERS + // .. .. FINISH: AFI3 REGISTERS + // .. .. START: AFI2 SECURE REGISTER + // .. .. FINISH: AFI2 SECURE REGISTER + // .. FINISH: AFI REGISTERS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_debug_3_0[] = { + // START: top + // .. START: CROSS TRIGGER CONFIGURATIONS + // .. .. START: UNLOCKING CTI REGISTERS + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8898FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8898FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8899FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8899FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8809FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8809FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. FINISH: UNLOCKING CTI REGISTERS + // .. .. START: ENABLING CTI MODULES AND CHANNELS + // .. .. FINISH: ENABLING CTI MODULES AND CHANNELS + // .. .. START: MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS + // .. .. FINISH: MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS + // .. FINISH: CROSS TRIGGER CONFIGURATIONS + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_pll_init_data_2_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: PLL SLCR REGISTERS + // .. .. START: ARM PLL INIT + // .. .. PLL_RES = 0x2 + // .. .. ==> 0XF8000110[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000110[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0xfa + // .. .. ==> 0XF8000110[21:12] = 0x000000FAU + // .. .. ==> MASK : 0x003FF000U VAL : 0x000FA000U + // .. .. + EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U ,0x000FA220U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x28 + // .. .. .. ==> 0XF8000100[18:12] = 0x00000028U + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x00028000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x0007F000U ,0x00028000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000100[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000100[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000100[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. ARM_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000001U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000100[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. .. SRCSEL = 0x0 + // .. .. .. ==> 0XF8000120[5:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. .. DIVISOR = 0x2 + // .. .. .. ==> 0XF8000120[13:8] = 0x00000002U + // .. .. .. ==> MASK : 0x00003F00U VAL : 0x00000200U + // .. .. .. CPU_6OR4XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[24:24] = 0x00000001U + // .. .. .. ==> MASK : 0x01000000U VAL : 0x01000000U + // .. .. .. CPU_3OR2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[25:25] = 0x00000001U + // .. .. .. ==> MASK : 0x02000000U VAL : 0x02000000U + // .. .. .. CPU_2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[26:26] = 0x00000001U + // .. .. .. ==> MASK : 0x04000000U VAL : 0x04000000U + // .. .. .. CPU_1XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[27:27] = 0x00000001U + // .. .. .. ==> MASK : 0x08000000U VAL : 0x08000000U + // .. .. .. CPU_PERI_CLKACT = 0x1 + // .. .. .. ==> 0XF8000120[28:28] = 0x00000001U + // .. .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000120, 0x1F003F30U ,0x1F000200U), + // .. .. FINISH: ARM PLL INIT + // .. .. START: DDR PLL INIT + // .. .. PLL_RES = 0x2 + // .. .. ==> 0XF8000114[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000114[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0x12c + // .. .. ==> 0XF8000114[21:12] = 0x0000012CU + // .. .. ==> MASK : 0x003FF000U VAL : 0x0012C000U + // .. .. + EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U ,0x0012C220U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x20 + // .. .. .. ==> 0XF8000104[18:12] = 0x00000020U + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x00020000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x0007F000U ,0x00020000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000104[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000104[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000104[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. DDR_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[1:1] = 0x00000001U + // .. .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000002U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000104[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. .. DDR_3XCLKACT = 0x1 + // .. .. .. ==> 0XF8000124[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. DDR_2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000124[1:1] = 0x00000001U + // .. .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. .. DDR_3XCLK_DIVISOR = 0x2 + // .. .. .. ==> 0XF8000124[25:20] = 0x00000002U + // .. .. .. ==> MASK : 0x03F00000U VAL : 0x00200000U + // .. .. .. DDR_2XCLK_DIVISOR = 0x3 + // .. .. .. ==> 0XF8000124[31:26] = 0x00000003U + // .. .. .. ==> MASK : 0xFC000000U VAL : 0x0C000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000124, 0xFFF00003U ,0x0C200003U), + // .. .. FINISH: DDR PLL INIT + // .. .. START: IO PLL INIT + // .. .. PLL_RES = 0xc + // .. .. ==> 0XF8000118[7:4] = 0x0000000CU + // .. .. ==> MASK : 0x000000F0U VAL : 0x000000C0U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000118[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0x145 + // .. .. ==> 0XF8000118[21:12] = 0x00000145U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00145000U + // .. .. + EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U ,0x001452C0U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x1e + // .. .. .. ==> 0XF8000108[18:12] = 0x0000001EU + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x0001E000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x0007F000U ,0x0001E000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000108[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000108[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000108[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. IO_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[2:2] = 0x00000001U + // .. .. .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000004U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000108[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. FINISH: IO PLL INIT + // .. FINISH: PLL SLCR REGISTERS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_clock_init_data_2_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: CLOCK CONTROL SLCR REGISTERS + // .. CLKACT = 0x1 + // .. ==> 0XF8000128[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. DIVISOR0 = 0x23 + // .. ==> 0XF8000128[13:8] = 0x00000023U + // .. ==> MASK : 0x00003F00U VAL : 0x00002300U + // .. DIVISOR1 = 0x3 + // .. ==> 0XF8000128[25:20] = 0x00000003U + // .. ==> MASK : 0x03F00000U VAL : 0x00300000U + // .. + EMIT_MASKWRITE(0XF8000128, 0x03F03F01U ,0x00302301U), + // .. CLKACT = 0x1 + // .. ==> 0XF8000138[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000138[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000138, 0x00000011U ,0x00000001U), + // .. CLKACT = 0x1 + // .. ==> 0XF8000140[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000140[6:4] = 0x00000000U + // .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. DIVISOR = 0x8 + // .. ==> 0XF8000140[13:8] = 0x00000008U + // .. ==> MASK : 0x00003F00U VAL : 0x00000800U + // .. DIVISOR1 = 0x1 + // .. ==> 0XF8000140[25:20] = 0x00000001U + // .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. + EMIT_MASKWRITE(0XF8000140, 0x03F03F71U ,0x00100801U), + // .. CLKACT = 0x1 + // .. ==> 0XF800014C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF800014C[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0x5 + // .. ==> 0XF800014C[13:8] = 0x00000005U + // .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. + EMIT_MASKWRITE(0XF800014C, 0x00003F31U ,0x00000501U), + // .. CLKACT0 = 0x1 + // .. ==> 0XF8000150[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. CLKACT1 = 0x0 + // .. ==> 0XF8000150[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000150[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0xa + // .. ==> 0XF8000150[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. + EMIT_MASKWRITE(0XF8000150, 0x00003F33U ,0x00000A01U), + // .. CLKACT0 = 0x0 + // .. ==> 0XF8000154[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. CLKACT1 = 0x1 + // .. ==> 0XF8000154[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000154[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0xa + // .. ==> 0XF8000154[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. + EMIT_MASKWRITE(0XF8000154, 0x00003F33U ,0x00000A02U), + // .. CLKACT0 = 0x1 + // .. ==> 0XF800015C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. CLKACT1 = 0x0 + // .. ==> 0XF800015C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. SRCSEL = 0x0 + // .. ==> 0XF800015C[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR0 = 0xa + // .. ==> 0XF800015C[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. DIVISOR1 = 0x1 + // .. ==> 0XF800015C[25:20] = 0x00000001U + // .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. + EMIT_MASKWRITE(0XF800015C, 0x03F03F33U ,0x00100A01U), + // .. CAN0_MUX = 0x0 + // .. ==> 0XF8000160[5:0] = 0x00000000U + // .. ==> MASK : 0x0000003FU VAL : 0x00000000U + // .. CAN0_REF_SEL = 0x0 + // .. ==> 0XF8000160[6:6] = 0x00000000U + // .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. CAN1_MUX = 0x0 + // .. ==> 0XF8000160[21:16] = 0x00000000U + // .. ==> MASK : 0x003F0000U VAL : 0x00000000U + // .. CAN1_REF_SEL = 0x0 + // .. ==> 0XF8000160[22:22] = 0x00000000U + // .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000160, 0x007F007FU ,0x00000000U), + // .. .. START: TRACE CLOCK + // .. .. FINISH: TRACE CLOCK + // .. .. CLKACT = 0x1 + // .. .. ==> 0XF8000168[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000168[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR = 0x5 + // .. .. ==> 0XF8000168[13:8] = 0x00000005U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. .. + EMIT_MASKWRITE(0XF8000168, 0x00003F31U ,0x00000501U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000170[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x6 + // .. .. ==> 0XF8000170[13:8] = 0x00000006U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000600U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000170[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000170, 0x03F03F30U ,0x00100600U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000180[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x14 + // .. .. ==> 0XF8000180[13:8] = 0x00000014U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00001400U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000180[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000180, 0x03F03F30U ,0x00101400U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000190[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0xa + // .. .. ==> 0XF8000190[13:8] = 0x0000000AU + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000190[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000190, 0x03F03F30U ,0x00100A00U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF80001A0[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x5 + // .. .. ==> 0XF80001A0[13:8] = 0x00000005U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF80001A0[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF80001A0, 0x03F03F30U ,0x00100500U), + // .. .. CLK_621_TRUE = 0x1 + // .. .. ==> 0XF80001C4[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. + EMIT_MASKWRITE(0XF80001C4, 0x00000001U ,0x00000001U), + // .. .. DMA_CPU_2XCLKACT = 0x1 + // .. .. ==> 0XF800012C[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. USB0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[2:2] = 0x00000001U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. .. USB1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[3:3] = 0x00000001U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. .. GEM0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[6:6] = 0x00000001U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000040U + // .. .. GEM1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. SDI0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[10:10] = 0x00000001U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000400U + // .. .. SDI1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. SPI0_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. SPI1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. CAN0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. CAN1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. I2C0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[18:18] = 0x00000001U + // .. .. ==> MASK : 0x00040000U VAL : 0x00040000U + // .. .. I2C1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. UART0_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. UART1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[21:21] = 0x00000001U + // .. .. ==> MASK : 0x00200000U VAL : 0x00200000U + // .. .. GPIO_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[22:22] = 0x00000001U + // .. .. ==> MASK : 0x00400000U VAL : 0x00400000U + // .. .. LQSPI_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[23:23] = 0x00000001U + // .. .. ==> MASK : 0x00800000U VAL : 0x00800000U + // .. .. SMC_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[24:24] = 0x00000001U + // .. .. ==> MASK : 0x01000000U VAL : 0x01000000U + // .. .. + EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU ,0x01ED044DU), + // .. FINISH: CLOCK CONTROL SLCR REGISTERS + // .. START: THIS SHOULD BE BLANK + // .. FINISH: THIS SHOULD BE BLANK + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_ddr_init_data_2_0[] = { + // START: top + // .. START: DDR INITIALIZATION + // .. .. START: LOCK DDR + // .. .. reg_ddrc_soft_rstb = 0 + // .. .. ==> 0XF8006000[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_powerdown_en = 0x0 + // .. .. ==> 0XF8006000[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_data_bus_width = 0x0 + // .. .. ==> 0XF8006000[3:2] = 0x00000000U + // .. .. ==> MASK : 0x0000000CU VAL : 0x00000000U + // .. .. reg_ddrc_burst8_refresh = 0x0 + // .. .. ==> 0XF8006000[6:4] = 0x00000000U + // .. .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. .. reg_ddrc_rdwr_idle_gap = 0x1 + // .. .. ==> 0XF8006000[13:7] = 0x00000001U + // .. .. ==> MASK : 0x00003F80U VAL : 0x00000080U + // .. .. reg_ddrc_dis_rd_bypass = 0x0 + // .. .. ==> 0XF8006000[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_act_bypass = 0x0 + // .. .. ==> 0XF8006000[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_auto_refresh = 0x0 + // .. .. ==> 0XF8006000[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU ,0x00000080U), + // .. .. FINISH: LOCK DDR + // .. .. reg_ddrc_t_rfc_nom_x32 = 0x81 + // .. .. ==> 0XF8006004[11:0] = 0x00000081U + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000081U + // .. .. reg_ddrc_active_ranks = 0x1 + // .. .. ==> 0XF8006004[13:12] = 0x00000001U + // .. .. ==> MASK : 0x00003000U VAL : 0x00001000U + // .. .. reg_ddrc_addrmap_cs_bit0 = 0x0 + // .. .. ==> 0XF8006004[18:14] = 0x00000000U + // .. .. ==> MASK : 0x0007C000U VAL : 0x00000000U + // .. .. reg_ddrc_wr_odt_block = 0x1 + // .. .. ==> 0XF8006004[20:19] = 0x00000001U + // .. .. ==> MASK : 0x00180000U VAL : 0x00080000U + // .. .. reg_ddrc_diff_rank_rd_2cycle_gap = 0x0 + // .. .. ==> 0XF8006004[21:21] = 0x00000000U + // .. .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_cs_bit1 = 0x0 + // .. .. ==> 0XF8006004[26:22] = 0x00000000U + // .. .. ==> MASK : 0x07C00000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_open_bank = 0x0 + // .. .. ==> 0XF8006004[27:27] = 0x00000000U + // .. .. ==> MASK : 0x08000000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_4bank_ram = 0x0 + // .. .. ==> 0XF8006004[28:28] = 0x00000000U + // .. .. ==> MASK : 0x10000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006004, 0x1FFFFFFFU ,0x00081081U), + // .. .. reg_ddrc_hpr_min_non_critical_x32 = 0xf + // .. .. ==> 0XF8006008[10:0] = 0x0000000FU + // .. .. ==> MASK : 0x000007FFU VAL : 0x0000000FU + // .. .. reg_ddrc_hpr_max_starve_x32 = 0xf + // .. .. ==> 0XF8006008[21:11] = 0x0000000FU + // .. .. ==> MASK : 0x003FF800U VAL : 0x00007800U + // .. .. reg_ddrc_hpr_xact_run_length = 0xf + // .. .. ==> 0XF8006008[25:22] = 0x0000000FU + // .. .. ==> MASK : 0x03C00000U VAL : 0x03C00000U + // .. .. + EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU ,0x03C0780FU), + // .. .. reg_ddrc_lpr_min_non_critical_x32 = 0x1 + // .. .. ==> 0XF800600C[10:0] = 0x00000001U + // .. .. ==> MASK : 0x000007FFU VAL : 0x00000001U + // .. .. reg_ddrc_lpr_max_starve_x32 = 0x2 + // .. .. ==> 0XF800600C[21:11] = 0x00000002U + // .. .. ==> MASK : 0x003FF800U VAL : 0x00001000U + // .. .. reg_ddrc_lpr_xact_run_length = 0x8 + // .. .. ==> 0XF800600C[25:22] = 0x00000008U + // .. .. ==> MASK : 0x03C00000U VAL : 0x02000000U + // .. .. + EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU ,0x02001001U), + // .. .. reg_ddrc_w_min_non_critical_x32 = 0x1 + // .. .. ==> 0XF8006010[10:0] = 0x00000001U + // .. .. ==> MASK : 0x000007FFU VAL : 0x00000001U + // .. .. reg_ddrc_w_xact_run_length = 0x8 + // .. .. ==> 0XF8006010[14:11] = 0x00000008U + // .. .. ==> MASK : 0x00007800U VAL : 0x00004000U + // .. .. reg_ddrc_w_max_starve_x32 = 0x2 + // .. .. ==> 0XF8006010[25:15] = 0x00000002U + // .. .. ==> MASK : 0x03FF8000U VAL : 0x00010000U + // .. .. + EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU ,0x00014001U), + // .. .. reg_ddrc_t_rc = 0x1b + // .. .. ==> 0XF8006014[5:0] = 0x0000001BU + // .. .. ==> MASK : 0x0000003FU VAL : 0x0000001BU + // .. .. reg_ddrc_t_rfc_min = 0xa0 + // .. .. ==> 0XF8006014[13:6] = 0x000000A0U + // .. .. ==> MASK : 0x00003FC0U VAL : 0x00002800U + // .. .. reg_ddrc_post_selfref_gap_x32 = 0x10 + // .. .. ==> 0XF8006014[20:14] = 0x00000010U + // .. .. ==> MASK : 0x001FC000U VAL : 0x00040000U + // .. .. + EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU ,0x0004281BU), + // .. .. reg_ddrc_wr2pre = 0x12 + // .. .. ==> 0XF8006018[4:0] = 0x00000012U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000012U + // .. .. reg_ddrc_powerdown_to_x32 = 0x6 + // .. .. ==> 0XF8006018[9:5] = 0x00000006U + // .. .. ==> MASK : 0x000003E0U VAL : 0x000000C0U + // .. .. reg_ddrc_t_faw = 0x18 + // .. .. ==> 0XF8006018[15:10] = 0x00000018U + // .. .. ==> MASK : 0x0000FC00U VAL : 0x00006000U + // .. .. reg_ddrc_t_ras_max = 0x24 + // .. .. ==> 0XF8006018[21:16] = 0x00000024U + // .. .. ==> MASK : 0x003F0000U VAL : 0x00240000U + // .. .. reg_ddrc_t_ras_min = 0x14 + // .. .. ==> 0XF8006018[26:22] = 0x00000014U + // .. .. ==> MASK : 0x07C00000U VAL : 0x05000000U + // .. .. reg_ddrc_t_cke = 0x4 + // .. .. ==> 0XF8006018[31:28] = 0x00000004U + // .. .. ==> MASK : 0xF0000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU ,0x452460D2U), + // .. .. reg_ddrc_write_latency = 0x5 + // .. .. ==> 0XF800601C[4:0] = 0x00000005U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000005U + // .. .. reg_ddrc_rd2wr = 0x7 + // .. .. ==> 0XF800601C[9:5] = 0x00000007U + // .. .. ==> MASK : 0x000003E0U VAL : 0x000000E0U + // .. .. reg_ddrc_wr2rd = 0xe + // .. .. ==> 0XF800601C[14:10] = 0x0000000EU + // .. .. ==> MASK : 0x00007C00U VAL : 0x00003800U + // .. .. reg_ddrc_t_xp = 0x4 + // .. .. ==> 0XF800601C[19:15] = 0x00000004U + // .. .. ==> MASK : 0x000F8000U VAL : 0x00020000U + // .. .. reg_ddrc_pad_pd = 0x0 + // .. .. ==> 0XF800601C[22:20] = 0x00000000U + // .. .. ==> MASK : 0x00700000U VAL : 0x00000000U + // .. .. reg_ddrc_rd2pre = 0x4 + // .. .. ==> 0XF800601C[27:23] = 0x00000004U + // .. .. ==> MASK : 0x0F800000U VAL : 0x02000000U + // .. .. reg_ddrc_t_rcd = 0x7 + // .. .. ==> 0XF800601C[31:28] = 0x00000007U + // .. .. ==> MASK : 0xF0000000U VAL : 0x70000000U + // .. .. + EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU ,0x720238E5U), + // .. .. reg_ddrc_t_ccd = 0x4 + // .. .. ==> 0XF8006020[4:2] = 0x00000004U + // .. .. ==> MASK : 0x0000001CU VAL : 0x00000010U + // .. .. reg_ddrc_t_rrd = 0x6 + // .. .. ==> 0XF8006020[7:5] = 0x00000006U + // .. .. ==> MASK : 0x000000E0U VAL : 0x000000C0U + // .. .. reg_ddrc_refresh_margin = 0x2 + // .. .. ==> 0XF8006020[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. reg_ddrc_t_rp = 0x7 + // .. .. ==> 0XF8006020[15:12] = 0x00000007U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00007000U + // .. .. reg_ddrc_refresh_to_x32 = 0x8 + // .. .. ==> 0XF8006020[20:16] = 0x00000008U + // .. .. ==> MASK : 0x001F0000U VAL : 0x00080000U + // .. .. reg_ddrc_sdram = 0x1 + // .. .. ==> 0XF8006020[21:21] = 0x00000001U + // .. .. ==> MASK : 0x00200000U VAL : 0x00200000U + // .. .. reg_ddrc_mobile = 0x0 + // .. .. ==> 0XF8006020[22:22] = 0x00000000U + // .. .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. .. reg_ddrc_clock_stop_en = 0x0 + // .. .. ==> 0XF8006020[23:23] = 0x00000000U + // .. .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. .. reg_ddrc_read_latency = 0x7 + // .. .. ==> 0XF8006020[28:24] = 0x00000007U + // .. .. ==> MASK : 0x1F000000U VAL : 0x07000000U + // .. .. reg_phy_mode_ddr1_ddr2 = 0x1 + // .. .. ==> 0XF8006020[29:29] = 0x00000001U + // .. .. ==> MASK : 0x20000000U VAL : 0x20000000U + // .. .. reg_ddrc_dis_pad_pd = 0x0 + // .. .. ==> 0XF8006020[30:30] = 0x00000000U + // .. .. ==> MASK : 0x40000000U VAL : 0x00000000U + // .. .. reg_ddrc_loopback = 0x0 + // .. .. ==> 0XF8006020[31:31] = 0x00000000U + // .. .. ==> MASK : 0x80000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006020, 0xFFFFFFFCU ,0x272872D0U), + // .. .. reg_ddrc_en_2t_timing_mode = 0x0 + // .. .. ==> 0XF8006024[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_prefer_write = 0x0 + // .. .. ==> 0XF8006024[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_max_rank_rd = 0xf + // .. .. ==> 0XF8006024[5:2] = 0x0000000FU + // .. .. ==> MASK : 0x0000003CU VAL : 0x0000003CU + // .. .. reg_ddrc_mr_wr = 0x0 + // .. .. ==> 0XF8006024[6:6] = 0x00000000U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. .. reg_ddrc_mr_addr = 0x0 + // .. .. ==> 0XF8006024[8:7] = 0x00000000U + // .. .. ==> MASK : 0x00000180U VAL : 0x00000000U + // .. .. reg_ddrc_mr_data = 0x0 + // .. .. ==> 0XF8006024[24:9] = 0x00000000U + // .. .. ==> MASK : 0x01FFFE00U VAL : 0x00000000U + // .. .. ddrc_reg_mr_wr_busy = 0x0 + // .. .. ==> 0XF8006024[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reg_ddrc_mr_type = 0x0 + // .. .. ==> 0XF8006024[26:26] = 0x00000000U + // .. .. ==> MASK : 0x04000000U VAL : 0x00000000U + // .. .. reg_ddrc_mr_rdata_valid = 0x0 + // .. .. ==> 0XF8006024[27:27] = 0x00000000U + // .. .. ==> MASK : 0x08000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006024, 0x0FFFFFFFU ,0x0000003CU), + // .. .. reg_ddrc_final_wait_x32 = 0x7 + // .. .. ==> 0XF8006028[6:0] = 0x00000007U + // .. .. ==> MASK : 0x0000007FU VAL : 0x00000007U + // .. .. reg_ddrc_pre_ocd_x32 = 0x0 + // .. .. ==> 0XF8006028[10:7] = 0x00000000U + // .. .. ==> MASK : 0x00000780U VAL : 0x00000000U + // .. .. reg_ddrc_t_mrd = 0x4 + // .. .. ==> 0XF8006028[13:11] = 0x00000004U + // .. .. ==> MASK : 0x00003800U VAL : 0x00002000U + // .. .. + EMIT_MASKWRITE(0XF8006028, 0x00003FFFU ,0x00002007U), + // .. .. reg_ddrc_emr2 = 0x8 + // .. .. ==> 0XF800602C[15:0] = 0x00000008U + // .. .. ==> MASK : 0x0000FFFFU VAL : 0x00000008U + // .. .. reg_ddrc_emr3 = 0x0 + // .. .. ==> 0XF800602C[31:16] = 0x00000000U + // .. .. ==> MASK : 0xFFFF0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU ,0x00000008U), + // .. .. reg_ddrc_mr = 0x930 + // .. .. ==> 0XF8006030[15:0] = 0x00000930U + // .. .. ==> MASK : 0x0000FFFFU VAL : 0x00000930U + // .. .. reg_ddrc_emr = 0x4 + // .. .. ==> 0XF8006030[31:16] = 0x00000004U + // .. .. ==> MASK : 0xFFFF0000U VAL : 0x00040000U + // .. .. + EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU ,0x00040930U), + // .. .. reg_ddrc_burst_rdwr = 0x4 + // .. .. ==> 0XF8006034[3:0] = 0x00000004U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000004U + // .. .. reg_ddrc_pre_cke_x1024 = 0x105 + // .. .. ==> 0XF8006034[13:4] = 0x00000105U + // .. .. ==> MASK : 0x00003FF0U VAL : 0x00001050U + // .. .. reg_ddrc_post_cke_x1024 = 0x1 + // .. .. ==> 0XF8006034[25:16] = 0x00000001U + // .. .. ==> MASK : 0x03FF0000U VAL : 0x00010000U + // .. .. reg_ddrc_burstchop = 0x0 + // .. .. ==> 0XF8006034[28:28] = 0x00000000U + // .. .. ==> MASK : 0x10000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU ,0x00011054U), + // .. .. reg_ddrc_force_low_pri_n = 0x0 + // .. .. ==> 0XF8006038[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_dis_dq = 0x0 + // .. .. ==> 0XF8006038[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_debug_mode = 0x0 + // .. .. ==> 0XF8006038[6:6] = 0x00000000U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. .. reg_phy_wr_level_start = 0x0 + // .. .. ==> 0XF8006038[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. reg_phy_rd_level_start = 0x0 + // .. .. ==> 0XF8006038[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_phy_dq0_wait_t = 0x0 + // .. .. ==> 0XF8006038[12:9] = 0x00000000U + // .. .. ==> MASK : 0x00001E00U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006038, 0x00001FC3U ,0x00000000U), + // .. .. reg_ddrc_addrmap_bank_b0 = 0x7 + // .. .. ==> 0XF800603C[3:0] = 0x00000007U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000007U + // .. .. reg_ddrc_addrmap_bank_b1 = 0x7 + // .. .. ==> 0XF800603C[7:4] = 0x00000007U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000070U + // .. .. reg_ddrc_addrmap_bank_b2 = 0x7 + // .. .. ==> 0XF800603C[11:8] = 0x00000007U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000700U + // .. .. reg_ddrc_addrmap_col_b5 = 0x0 + // .. .. ==> 0XF800603C[15:12] = 0x00000000U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b6 = 0x0 + // .. .. ==> 0XF800603C[19:16] = 0x00000000U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU ,0x00000777U), + // .. .. reg_ddrc_addrmap_col_b2 = 0x0 + // .. .. ==> 0XF8006040[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b3 = 0x0 + // .. .. ==> 0XF8006040[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b4 = 0x0 + // .. .. ==> 0XF8006040[11:8] = 0x00000000U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b7 = 0x0 + // .. .. ==> 0XF8006040[15:12] = 0x00000000U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b8 = 0x0 + // .. .. ==> 0XF8006040[19:16] = 0x00000000U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b9 = 0xf + // .. .. ==> 0XF8006040[23:20] = 0x0000000FU + // .. .. ==> MASK : 0x00F00000U VAL : 0x00F00000U + // .. .. reg_ddrc_addrmap_col_b10 = 0xf + // .. .. ==> 0XF8006040[27:24] = 0x0000000FU + // .. .. ==> MASK : 0x0F000000U VAL : 0x0F000000U + // .. .. reg_ddrc_addrmap_col_b11 = 0xf + // .. .. ==> 0XF8006040[31:28] = 0x0000000FU + // .. .. ==> MASK : 0xF0000000U VAL : 0xF0000000U + // .. .. + EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU ,0xFFF00000U), + // .. .. reg_ddrc_addrmap_row_b0 = 0x6 + // .. .. ==> 0XF8006044[3:0] = 0x00000006U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000006U + // .. .. reg_ddrc_addrmap_row_b1 = 0x6 + // .. .. ==> 0XF8006044[7:4] = 0x00000006U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000060U + // .. .. reg_ddrc_addrmap_row_b2_11 = 0x6 + // .. .. ==> 0XF8006044[11:8] = 0x00000006U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000600U + // .. .. reg_ddrc_addrmap_row_b12 = 0x6 + // .. .. ==> 0XF8006044[15:12] = 0x00000006U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00006000U + // .. .. reg_ddrc_addrmap_row_b13 = 0x6 + // .. .. ==> 0XF8006044[19:16] = 0x00000006U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00060000U + // .. .. reg_ddrc_addrmap_row_b14 = 0x6 + // .. .. ==> 0XF8006044[23:20] = 0x00000006U + // .. .. ==> MASK : 0x00F00000U VAL : 0x00600000U + // .. .. reg_ddrc_addrmap_row_b15 = 0xf + // .. .. ==> 0XF8006044[27:24] = 0x0000000FU + // .. .. ==> MASK : 0x0F000000U VAL : 0x0F000000U + // .. .. + EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU ,0x0F666666U), + // .. .. reg_ddrc_rank0_rd_odt = 0x0 + // .. .. ==> 0XF8006048[2:0] = 0x00000000U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000000U + // .. .. reg_ddrc_rank0_wr_odt = 0x1 + // .. .. ==> 0XF8006048[5:3] = 0x00000001U + // .. .. ==> MASK : 0x00000038U VAL : 0x00000008U + // .. .. reg_ddrc_rank1_rd_odt = 0x1 + // .. .. ==> 0XF8006048[8:6] = 0x00000001U + // .. .. ==> MASK : 0x000001C0U VAL : 0x00000040U + // .. .. reg_ddrc_rank1_wr_odt = 0x1 + // .. .. ==> 0XF8006048[11:9] = 0x00000001U + // .. .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. .. reg_phy_rd_local_odt = 0x0 + // .. .. ==> 0XF8006048[13:12] = 0x00000000U + // .. .. ==> MASK : 0x00003000U VAL : 0x00000000U + // .. .. reg_phy_wr_local_odt = 0x3 + // .. .. ==> 0XF8006048[15:14] = 0x00000003U + // .. .. ==> MASK : 0x0000C000U VAL : 0x0000C000U + // .. .. reg_phy_idle_local_odt = 0x3 + // .. .. ==> 0XF8006048[17:16] = 0x00000003U + // .. .. ==> MASK : 0x00030000U VAL : 0x00030000U + // .. .. reg_ddrc_rank2_rd_odt = 0x0 + // .. .. ==> 0XF8006048[20:18] = 0x00000000U + // .. .. ==> MASK : 0x001C0000U VAL : 0x00000000U + // .. .. reg_ddrc_rank2_wr_odt = 0x0 + // .. .. ==> 0XF8006048[23:21] = 0x00000000U + // .. .. ==> MASK : 0x00E00000U VAL : 0x00000000U + // .. .. reg_ddrc_rank3_rd_odt = 0x0 + // .. .. ==> 0XF8006048[26:24] = 0x00000000U + // .. .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. .. reg_ddrc_rank3_wr_odt = 0x0 + // .. .. ==> 0XF8006048[29:27] = 0x00000000U + // .. .. ==> MASK : 0x38000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006048, 0x3FFFFFFFU ,0x0003C248U), + // .. .. reg_phy_rd_cmd_to_data = 0x0 + // .. .. ==> 0XF8006050[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_phy_wr_cmd_to_data = 0x0 + // .. .. ==> 0XF8006050[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_phy_rdc_we_to_re_delay = 0x8 + // .. .. ==> 0XF8006050[11:8] = 0x00000008U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000800U + // .. .. reg_phy_rdc_fifo_rst_disable = 0x0 + // .. .. ==> 0XF8006050[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_phy_use_fixed_re = 0x1 + // .. .. ==> 0XF8006050[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. reg_phy_rdc_fifo_rst_err_cnt_clr = 0x0 + // .. .. ==> 0XF8006050[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_phy_dis_phy_ctrl_rstn = 0x0 + // .. .. ==> 0XF8006050[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_phy_clk_stall_level = 0x0 + // .. .. ==> 0XF8006050[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_num_of_dq0 = 0x7 + // .. .. ==> 0XF8006050[27:24] = 0x00000007U + // .. .. ==> MASK : 0x0F000000U VAL : 0x07000000U + // .. .. reg_phy_wrlvl_num_of_dq0 = 0x7 + // .. .. ==> 0XF8006050[31:28] = 0x00000007U + // .. .. ==> MASK : 0xF0000000U VAL : 0x70000000U + // .. .. + EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU ,0x77010800U), + // .. .. reg_ddrc_dll_calib_to_min_x1024 = 0x1 + // .. .. ==> 0XF8006058[7:0] = 0x00000001U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000001U + // .. .. reg_ddrc_dll_calib_to_max_x1024 = 0x1 + // .. .. ==> 0XF8006058[15:8] = 0x00000001U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00000100U + // .. .. reg_ddrc_dis_dll_calib = 0x0 + // .. .. ==> 0XF8006058[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006058, 0x0001FFFFU ,0x00000101U), + // .. .. reg_ddrc_rd_odt_delay = 0x3 + // .. .. ==> 0XF800605C[3:0] = 0x00000003U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000003U + // .. .. reg_ddrc_wr_odt_delay = 0x0 + // .. .. ==> 0XF800605C[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_ddrc_rd_odt_hold = 0x0 + // .. .. ==> 0XF800605C[11:8] = 0x00000000U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000000U + // .. .. reg_ddrc_wr_odt_hold = 0x5 + // .. .. ==> 0XF800605C[15:12] = 0x00000005U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00005000U + // .. .. + EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU ,0x00005003U), + // .. .. reg_ddrc_pageclose = 0x0 + // .. .. ==> 0XF8006060[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_lpr_num_entries = 0x1f + // .. .. ==> 0XF8006060[6:1] = 0x0000001FU + // .. .. ==> MASK : 0x0000007EU VAL : 0x0000003EU + // .. .. reg_ddrc_auto_pre_en = 0x0 + // .. .. ==> 0XF8006060[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. reg_ddrc_refresh_update_level = 0x0 + // .. .. ==> 0XF8006060[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_ddrc_dis_wc = 0x0 + // .. .. ==> 0XF8006060[9:9] = 0x00000000U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. .. reg_ddrc_dis_collision_page_opt = 0x0 + // .. .. ==> 0XF8006060[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_ddrc_selfref_en = 0x0 + // .. .. ==> 0XF8006060[12:12] = 0x00000000U + // .. .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006060, 0x000017FFU ,0x0000003EU), + // .. .. reg_ddrc_go2critical_hysteresis = 0x0 + // .. .. ==> 0XF8006064[12:5] = 0x00000000U + // .. .. ==> MASK : 0x00001FE0U VAL : 0x00000000U + // .. .. reg_arb_go2critical_en = 0x1 + // .. .. ==> 0XF8006064[17:17] = 0x00000001U + // .. .. ==> MASK : 0x00020000U VAL : 0x00020000U + // .. .. + EMIT_MASKWRITE(0XF8006064, 0x00021FE0U ,0x00020000U), + // .. .. reg_ddrc_wrlvl_ww = 0x41 + // .. .. ==> 0XF8006068[7:0] = 0x00000041U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000041U + // .. .. reg_ddrc_rdlvl_rr = 0x41 + // .. .. ==> 0XF8006068[15:8] = 0x00000041U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00004100U + // .. .. reg_ddrc_dfi_t_wlmrd = 0x28 + // .. .. ==> 0XF8006068[25:16] = 0x00000028U + // .. .. ==> MASK : 0x03FF0000U VAL : 0x00280000U + // .. .. + EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU ,0x00284141U), + // .. .. dfi_t_ctrlupd_interval_min_x1024 = 0x10 + // .. .. ==> 0XF800606C[7:0] = 0x00000010U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000010U + // .. .. dfi_t_ctrlupd_interval_max_x1024 = 0x16 + // .. .. ==> 0XF800606C[15:8] = 0x00000016U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00001600U + // .. .. + EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU ,0x00001610U), + // .. .. reg_ddrc_dfi_t_ctrl_delay = 0x1 + // .. .. ==> 0XF8006078[3:0] = 0x00000001U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000001U + // .. .. reg_ddrc_dfi_t_dram_clk_disable = 0x1 + // .. .. ==> 0XF8006078[7:4] = 0x00000001U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000010U + // .. .. reg_ddrc_dfi_t_dram_clk_enable = 0x1 + // .. .. ==> 0XF8006078[11:8] = 0x00000001U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000100U + // .. .. reg_ddrc_t_cksre = 0x6 + // .. .. ==> 0XF8006078[15:12] = 0x00000006U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00006000U + // .. .. reg_ddrc_t_cksrx = 0x6 + // .. .. ==> 0XF8006078[19:16] = 0x00000006U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00060000U + // .. .. reg_ddrc_t_ckesr = 0x4 + // .. .. ==> 0XF8006078[25:20] = 0x00000004U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00400000U + // .. .. + EMIT_MASKWRITE(0XF8006078, 0x03FFFFFFU ,0x00466111U), + // .. .. reg_ddrc_t_ckpde = 0x2 + // .. .. ==> 0XF800607C[3:0] = 0x00000002U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000002U + // .. .. reg_ddrc_t_ckpdx = 0x2 + // .. .. ==> 0XF800607C[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. reg_ddrc_t_ckdpde = 0x2 + // .. .. ==> 0XF800607C[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. reg_ddrc_t_ckdpdx = 0x2 + // .. .. ==> 0XF800607C[15:12] = 0x00000002U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00002000U + // .. .. reg_ddrc_t_ckcsx = 0x3 + // .. .. ==> 0XF800607C[19:16] = 0x00000003U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00030000U + // .. .. + EMIT_MASKWRITE(0XF800607C, 0x000FFFFFU ,0x00032222U), + // .. .. refresh_timer0_start_value_x32 = 0x0 + // .. .. ==> 0XF80060A0[11:0] = 0x00000000U + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000000U + // .. .. refresh_timer1_start_value_x32 = 0x8 + // .. .. ==> 0XF80060A0[23:12] = 0x00000008U + // .. .. ==> MASK : 0x00FFF000U VAL : 0x00008000U + // .. .. + EMIT_MASKWRITE(0XF80060A0, 0x00FFFFFFU ,0x00008000U), + // .. .. reg_ddrc_dis_auto_zq = 0x0 + // .. .. ==> 0XF80060A4[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_ddr3 = 0x1 + // .. .. ==> 0XF80060A4[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. reg_ddrc_t_mod = 0x200 + // .. .. ==> 0XF80060A4[11:2] = 0x00000200U + // .. .. ==> MASK : 0x00000FFCU VAL : 0x00000800U + // .. .. reg_ddrc_t_zq_long_nop = 0x200 + // .. .. ==> 0XF80060A4[21:12] = 0x00000200U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00200000U + // .. .. reg_ddrc_t_zq_short_nop = 0x40 + // .. .. ==> 0XF80060A4[31:22] = 0x00000040U + // .. .. ==> MASK : 0xFFC00000U VAL : 0x10000000U + // .. .. + EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU ,0x10200802U), + // .. .. t_zq_short_interval_x1024 = 0xcb73 + // .. .. ==> 0XF80060A8[19:0] = 0x0000CB73U + // .. .. ==> MASK : 0x000FFFFFU VAL : 0x0000CB73U + // .. .. dram_rstn_x1024 = 0x69 + // .. .. ==> 0XF80060A8[27:20] = 0x00000069U + // .. .. ==> MASK : 0x0FF00000U VAL : 0x06900000U + // .. .. + EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU ,0x0690CB73U), + // .. .. deeppowerdown_en = 0x0 + // .. .. ==> 0XF80060AC[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. deeppowerdown_to_x1024 = 0xff + // .. .. ==> 0XF80060AC[8:1] = 0x000000FFU + // .. .. ==> MASK : 0x000001FEU VAL : 0x000001FEU + // .. .. + EMIT_MASKWRITE(0XF80060AC, 0x000001FFU ,0x000001FEU), + // .. .. dfi_wrlvl_max_x1024 = 0xfff + // .. .. ==> 0XF80060B0[11:0] = 0x00000FFFU + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000FFFU + // .. .. dfi_rdlvl_max_x1024 = 0xfff + // .. .. ==> 0XF80060B0[23:12] = 0x00000FFFU + // .. .. ==> MASK : 0x00FFF000U VAL : 0x00FFF000U + // .. .. ddrc_reg_twrlvl_max_error = 0x0 + // .. .. ==> 0XF80060B0[24:24] = 0x00000000U + // .. .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. .. ddrc_reg_trdlvl_max_error = 0x0 + // .. .. ==> 0XF80060B0[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reg_ddrc_dfi_wr_level_en = 0x1 + // .. .. ==> 0XF80060B0[26:26] = 0x00000001U + // .. .. ==> MASK : 0x04000000U VAL : 0x04000000U + // .. .. reg_ddrc_dfi_rd_dqs_gate_level = 0x1 + // .. .. ==> 0XF80060B0[27:27] = 0x00000001U + // .. .. ==> MASK : 0x08000000U VAL : 0x08000000U + // .. .. reg_ddrc_dfi_rd_data_eye_train = 0x1 + // .. .. ==> 0XF80060B0[28:28] = 0x00000001U + // .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. + EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU ,0x1CFFFFFFU), + // .. .. reg_ddrc_2t_delay = 0x0 + // .. .. ==> 0XF80060B4[8:0] = 0x00000000U + // .. .. ==> MASK : 0x000001FFU VAL : 0x00000000U + // .. .. reg_ddrc_skip_ocd = 0x1 + // .. .. ==> 0XF80060B4[9:9] = 0x00000001U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000200U + // .. .. reg_ddrc_dis_pre_bypass = 0x0 + // .. .. ==> 0XF80060B4[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060B4, 0x000007FFU ,0x00000200U), + // .. .. reg_ddrc_dfi_t_rddata_en = 0x6 + // .. .. ==> 0XF80060B8[4:0] = 0x00000006U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000006U + // .. .. reg_ddrc_dfi_t_ctrlup_min = 0x3 + // .. .. ==> 0XF80060B8[14:5] = 0x00000003U + // .. .. ==> MASK : 0x00007FE0U VAL : 0x00000060U + // .. .. reg_ddrc_dfi_t_ctrlup_max = 0x40 + // .. .. ==> 0XF80060B8[24:15] = 0x00000040U + // .. .. ==> MASK : 0x01FF8000U VAL : 0x00200000U + // .. .. + EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU ,0x00200066U), + // .. .. START: RESET ECC ERROR + // .. .. Clear_Uncorrectable_DRAM_ECC_error = 1 + // .. .. ==> 0XF80060C4[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. Clear_Correctable_DRAM_ECC_error = 1 + // .. .. ==> 0XF80060C4[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. + EMIT_MASKWRITE(0XF80060C4, 0x00000003U ,0x00000003U), + // .. .. FINISH: RESET ECC ERROR + // .. .. Clear_Uncorrectable_DRAM_ECC_error = 0x0 + // .. .. ==> 0XF80060C4[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. Clear_Correctable_DRAM_ECC_error = 0x0 + // .. .. ==> 0XF80060C4[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060C4, 0x00000003U ,0x00000000U), + // .. .. CORR_ECC_LOG_VALID = 0x0 + // .. .. ==> 0XF80060C8[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. ECC_CORRECTED_BIT_NUM = 0x0 + // .. .. ==> 0XF80060C8[7:1] = 0x00000000U + // .. .. ==> MASK : 0x000000FEU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060C8, 0x000000FFU ,0x00000000U), + // .. .. UNCORR_ECC_LOG_VALID = 0x0 + // .. .. ==> 0XF80060DC[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060DC, 0x00000001U ,0x00000000U), + // .. .. STAT_NUM_CORR_ERR = 0x0 + // .. .. ==> 0XF80060F0[15:8] = 0x00000000U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00000000U + // .. .. STAT_NUM_UNCORR_ERR = 0x0 + // .. .. ==> 0XF80060F0[7:0] = 0x00000000U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU ,0x00000000U), + // .. .. reg_ddrc_ecc_mode = 0x0 + // .. .. ==> 0XF80060F4[2:0] = 0x00000000U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000000U + // .. .. reg_ddrc_dis_scrub = 0x1 + // .. .. ==> 0XF80060F4[3:3] = 0x00000001U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. .. + EMIT_MASKWRITE(0XF80060F4, 0x0000000FU ,0x00000008U), + // .. .. reg_phy_dif_on = 0x0 + // .. .. ==> 0XF8006114[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_phy_dif_off = 0x0 + // .. .. ==> 0XF8006114[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006114, 0x000000FFU ,0x00000000U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006118[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006118[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006118[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006118[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006118[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006118[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006118, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF800611C[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF800611C[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF800611C[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF800611C[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF800611C[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF800611C[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF800611C, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006120[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006120[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006120[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006120[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006120[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006120[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006120[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006120[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006120[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006120[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006120[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006120[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006120, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006124[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006124[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006124[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006124[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006124[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006124[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006124, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF800612C[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF800612C[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006130[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006130[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006134[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006134[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006138[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006138[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006140[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006140[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006140[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006144[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006144[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006144[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006148[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006148[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006148[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF800614C[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF800614C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF800614C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006154[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006154[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006154[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006158[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006158[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006158[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF800615C[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF800615C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF800615C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006160[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006160[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006160[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006168[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006168[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006168[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF800616C[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF800616C[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF800616C[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006170[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006170[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006170[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006174[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006174[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006174[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF800617C[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF800617C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF800617C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006180[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006180[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006180[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006184[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006184[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006184[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006188[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006188[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006188[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_loopback = 0x0 + // .. .. ==> 0XF8006190[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_phy_bl2 = 0x0 + // .. .. ==> 0XF8006190[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_at_spd_atpg = 0x0 + // .. .. ==> 0XF8006190[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_bist_enable = 0x0 + // .. .. ==> 0XF8006190[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_force_err = 0x0 + // .. .. ==> 0XF8006190[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_bist_mode = 0x0 + // .. .. ==> 0XF8006190[6:5] = 0x00000000U + // .. .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. .. reg_phy_invert_clkout = 0x1 + // .. .. ==> 0XF8006190[7:7] = 0x00000001U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. .. reg_phy_all_dq_mpr_rd_resp = 0x0 + // .. .. ==> 0XF8006190[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_phy_sel_logic = 0x0 + // .. .. ==> 0XF8006190[9:9] = 0x00000000U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_ratio = 0x100 + // .. .. ==> 0XF8006190[19:10] = 0x00000100U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00040000U + // .. .. reg_phy_ctrl_slave_force = 0x0 + // .. .. ==> 0XF8006190[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_delay = 0x0 + // .. .. ==> 0XF8006190[27:21] = 0x00000000U + // .. .. ==> MASK : 0x0FE00000U VAL : 0x00000000U + // .. .. reg_phy_use_rank0_delays = 0x1 + // .. .. ==> 0XF8006190[28:28] = 0x00000001U + // .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. reg_phy_lpddr = 0x0 + // .. .. ==> 0XF8006190[29:29] = 0x00000000U + // .. .. ==> MASK : 0x20000000U VAL : 0x00000000U + // .. .. reg_phy_cmd_latency = 0x0 + // .. .. ==> 0XF8006190[30:30] = 0x00000000U + // .. .. ==> MASK : 0x40000000U VAL : 0x00000000U + // .. .. reg_phy_int_lpbk = 0x0 + // .. .. ==> 0XF8006190[31:31] = 0x00000000U + // .. .. ==> MASK : 0x80000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006190, 0xFFFFFFFFU ,0x10040080U), + // .. .. reg_phy_wr_rl_delay = 0x2 + // .. .. ==> 0XF8006194[4:0] = 0x00000002U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000002U + // .. .. reg_phy_rd_rl_delay = 0x4 + // .. .. ==> 0XF8006194[9:5] = 0x00000004U + // .. .. ==> MASK : 0x000003E0U VAL : 0x00000080U + // .. .. reg_phy_dll_lock_diff = 0xf + // .. .. ==> 0XF8006194[13:10] = 0x0000000FU + // .. .. ==> MASK : 0x00003C00U VAL : 0x00003C00U + // .. .. reg_phy_use_wr_level = 0x1 + // .. .. ==> 0XF8006194[14:14] = 0x00000001U + // .. .. ==> MASK : 0x00004000U VAL : 0x00004000U + // .. .. reg_phy_use_rd_dqs_gate_level = 0x1 + // .. .. ==> 0XF8006194[15:15] = 0x00000001U + // .. .. ==> MASK : 0x00008000U VAL : 0x00008000U + // .. .. reg_phy_use_rd_data_eye_level = 0x1 + // .. .. ==> 0XF8006194[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. reg_phy_dis_calib_rst = 0x0 + // .. .. ==> 0XF8006194[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_delay = 0x0 + // .. .. ==> 0XF8006194[19:18] = 0x00000000U + // .. .. ==> MASK : 0x000C0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU ,0x0001FC82U), + // .. .. reg_arb_page_addr_mask = 0x0 + // .. .. ==> 0XF8006204[31:0] = 0x00000000U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU ,0x00000000U), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006208[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006208[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006208[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006208[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF8006208[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF8006208, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF800620C[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF800620C[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF800620C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF800620C[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF800620C[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF800620C, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006210[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006210[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006210[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006210[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF8006210[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF8006210, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006214[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006214[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006214[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006214[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF8006214[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF8006214, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006218[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006218[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006218[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006218[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006218[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006218, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF800621C[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF800621C[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF800621C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF800621C[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF800621C[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800621C, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006220[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006220[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006220[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006220[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006220[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006220, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006224[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006224[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006224[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006224[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006224[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006224, 0x000F03FFU ,0x000003FFU), + // .. .. reg_ddrc_lpddr2 = 0x0 + // .. .. ==> 0XF80062A8[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_per_bank_refresh = 0x0 + // .. .. ==> 0XF80062A8[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_derate_enable = 0x0 + // .. .. ==> 0XF80062A8[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_ddrc_mr4_margin = 0x0 + // .. .. ==> 0XF80062A8[11:4] = 0x00000000U + // .. .. ==> MASK : 0x00000FF0U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80062A8, 0x00000FF7U ,0x00000000U), + // .. .. reg_ddrc_mr4_read_interval = 0x0 + // .. .. ==> 0XF80062AC[31:0] = 0x00000000U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU ,0x00000000U), + // .. .. reg_ddrc_min_stable_clock_x1 = 0x5 + // .. .. ==> 0XF80062B0[3:0] = 0x00000005U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000005U + // .. .. reg_ddrc_idle_after_reset_x32 = 0x12 + // .. .. ==> 0XF80062B0[11:4] = 0x00000012U + // .. .. ==> MASK : 0x00000FF0U VAL : 0x00000120U + // .. .. reg_ddrc_t_mrw = 0x5 + // .. .. ==> 0XF80062B0[21:12] = 0x00000005U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00005000U + // .. .. + EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU ,0x00005125U), + // .. .. reg_ddrc_max_auto_init_x1024 = 0xa8 + // .. .. ==> 0XF80062B4[7:0] = 0x000000A8U + // .. .. ==> MASK : 0x000000FFU VAL : 0x000000A8U + // .. .. reg_ddrc_dev_zqinit_x32 = 0x12 + // .. .. ==> 0XF80062B4[17:8] = 0x00000012U + // .. .. ==> MASK : 0x0003FF00U VAL : 0x00001200U + // .. .. + EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU ,0x000012A8U), + // .. .. START: POLL ON DCI STATUS + // .. .. DONE = 1 + // .. .. ==> 0XF8000B74[13:13] = 0x00000001U + // .. .. ==> MASK : 0x00002000U VAL : 0x00002000U + // .. .. + EMIT_MASKPOLL(0XF8000B74, 0x00002000U), + // .. .. FINISH: POLL ON DCI STATUS + // .. .. START: UNLOCK DDR + // .. .. reg_ddrc_soft_rstb = 0x1 + // .. .. ==> 0XF8006000[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_ddrc_powerdown_en = 0x0 + // .. .. ==> 0XF8006000[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_data_bus_width = 0x0 + // .. .. ==> 0XF8006000[3:2] = 0x00000000U + // .. .. ==> MASK : 0x0000000CU VAL : 0x00000000U + // .. .. reg_ddrc_burst8_refresh = 0x0 + // .. .. ==> 0XF8006000[6:4] = 0x00000000U + // .. .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. .. reg_ddrc_rdwr_idle_gap = 1 + // .. .. ==> 0XF8006000[13:7] = 0x00000001U + // .. .. ==> MASK : 0x00003F80U VAL : 0x00000080U + // .. .. reg_ddrc_dis_rd_bypass = 0x0 + // .. .. ==> 0XF8006000[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_act_bypass = 0x0 + // .. .. ==> 0XF8006000[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_auto_refresh = 0x0 + // .. .. ==> 0XF8006000[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU ,0x00000081U), + // .. .. FINISH: UNLOCK DDR + // .. .. START: CHECK DDR STATUS + // .. .. ddrc_reg_operating_mode = 1 + // .. .. ==> 0XF8006054[2:0] = 0x00000001U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000001U + // .. .. + EMIT_MASKPOLL(0XF8006054, 0x00000007U), + // .. .. FINISH: CHECK DDR STATUS + // .. FINISH: DDR INITIALIZATION + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_mio_init_data_2_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: OCM REMAPPING + // .. FINISH: OCM REMAPPING + // .. START: DDRIOB SETTINGS + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B40[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B40[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B40[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B40[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCR_TYPE = 0x0 + // .. ==> 0XF8000B40[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B40[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B40[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B40[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B40[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU ,0x00000600U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B44[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B44[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B44[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B44[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCR_TYPE = 0x0 + // .. ==> 0XF8000B44[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B44[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B44[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B44[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B44[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU ,0x00000600U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B48[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x1 + // .. ==> 0XF8000B48[2:1] = 0x00000001U + // .. ==> MASK : 0x00000006U VAL : 0x00000002U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B48[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B48[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B48[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B48[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B48[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B48[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B48[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU ,0x00000672U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B4C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x1 + // .. ==> 0XF8000B4C[2:1] = 0x00000001U + // .. ==> MASK : 0x00000006U VAL : 0x00000002U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B4C[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B4C[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B4C[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B4C[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B4C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B4C[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B4C[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU ,0x00000672U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B50[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x2 + // .. ==> 0XF8000B50[2:1] = 0x00000002U + // .. ==> MASK : 0x00000006U VAL : 0x00000004U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B50[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B50[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B50[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B50[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B50[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B50[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B50[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU ,0x00000674U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B54[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x2 + // .. ==> 0XF8000B54[2:1] = 0x00000002U + // .. ==> MASK : 0x00000006U VAL : 0x00000004U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B54[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B54[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B54[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B54[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B54[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B54[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B54[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU ,0x00000674U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B58[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B58[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B58[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B58[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCR_TYPE = 0x0 + // .. ==> 0XF8000B58[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B58[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B58[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B58[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B58[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU ,0x00000600U), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B5C[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B5C[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x3 + // .. ==> 0XF8000B5C[18:14] = 0x00000003U + // .. ==> MASK : 0x0007C000U VAL : 0x0000C000U + // .. SLEW_N = 0x3 + // .. ==> 0XF8000B5C[23:19] = 0x00000003U + // .. ==> MASK : 0x00F80000U VAL : 0x00180000U + // .. GTL = 0x0 + // .. ==> 0XF8000B5C[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B5C[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU ,0x0018C61CU), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B60[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B60[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x6 + // .. ==> 0XF8000B60[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. SLEW_N = 0x1f + // .. ==> 0XF8000B60[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. GTL = 0x0 + // .. ==> 0XF8000B60[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B60[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU ,0x00F9861CU), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B64[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B64[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x6 + // .. ==> 0XF8000B64[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. SLEW_N = 0x1f + // .. ==> 0XF8000B64[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. GTL = 0x0 + // .. ==> 0XF8000B64[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B64[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU ,0x00F9861CU), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B68[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B68[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x6 + // .. ==> 0XF8000B68[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. SLEW_N = 0x1f + // .. ==> 0XF8000B68[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. GTL = 0x0 + // .. ==> 0XF8000B68[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B68[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU ,0x00F9861CU), + // .. VREF_INT_EN = 0x0 + // .. ==> 0XF8000B6C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. VREF_SEL = 0x0 + // .. ==> 0XF8000B6C[4:1] = 0x00000000U + // .. ==> MASK : 0x0000001EU VAL : 0x00000000U + // .. VREF_EXT_EN = 0x3 + // .. ==> 0XF8000B6C[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. VREF_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[8:7] = 0x00000000U + // .. ==> MASK : 0x00000180U VAL : 0x00000000U + // .. REFIO_EN = 0x1 + // .. ==> 0XF8000B6C[9:9] = 0x00000001U + // .. ==> MASK : 0x00000200U VAL : 0x00000200U + // .. REFIO_TEST = 0x0 + // .. ==> 0XF8000B6C[11:10] = 0x00000000U + // .. ==> MASK : 0x00000C00U VAL : 0x00000000U + // .. REFIO_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DRST_B_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. CKE_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[14:14] = 0x00000000U + // .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B6C, 0x00007FFFU ,0x00000260U), + // .. .. START: ASSERT RESET + // .. .. RESET = 1 + // .. .. ==> 0XF8000B70[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x00000021U ,0x00000021U), + // .. .. FINISH: ASSERT RESET + // .. .. START: DEASSERT RESET + // .. .. RESET = 0 + // .. .. ==> 0XF8000B70[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x00000021U ,0x00000020U), + // .. .. FINISH: DEASSERT RESET + // .. .. RESET = 0x1 + // .. .. ==> 0XF8000B70[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. ENABLE = 0x1 + // .. .. ==> 0XF8000B70[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. VRP_TRI = 0x0 + // .. .. ==> 0XF8000B70[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. VRN_TRI = 0x0 + // .. .. ==> 0XF8000B70[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. VRP_OUT = 0x0 + // .. .. ==> 0XF8000B70[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. NREF_OPT1 = 0x0 + // .. .. ==> 0XF8000B70[7:6] = 0x00000000U + // .. .. ==> MASK : 0x000000C0U VAL : 0x00000000U + // .. .. NREF_OPT2 = 0x0 + // .. .. ==> 0XF8000B70[10:8] = 0x00000000U + // .. .. ==> MASK : 0x00000700U VAL : 0x00000000U + // .. .. NREF_OPT4 = 0x1 + // .. .. ==> 0XF8000B70[13:11] = 0x00000001U + // .. .. ==> MASK : 0x00003800U VAL : 0x00000800U + // .. .. PREF_OPT1 = 0x0 + // .. .. ==> 0XF8000B70[16:14] = 0x00000000U + // .. .. ==> MASK : 0x0001C000U VAL : 0x00000000U + // .. .. PREF_OPT2 = 0x0 + // .. .. ==> 0XF8000B70[19:17] = 0x00000000U + // .. .. ==> MASK : 0x000E0000U VAL : 0x00000000U + // .. .. UPDATE_CONTROL = 0x0 + // .. .. ==> 0XF8000B70[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. INIT_COMPLETE = 0x0 + // .. .. ==> 0XF8000B70[21:21] = 0x00000000U + // .. .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. .. TST_CLK = 0x0 + // .. .. ==> 0XF8000B70[22:22] = 0x00000000U + // .. .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. .. TST_HLN = 0x0 + // .. .. ==> 0XF8000B70[23:23] = 0x00000000U + // .. .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. .. TST_HLP = 0x0 + // .. .. ==> 0XF8000B70[24:24] = 0x00000000U + // .. .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. .. TST_RST = 0x0 + // .. .. ==> 0XF8000B70[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. INT_DCI_EN = 0x0 + // .. .. ==> 0XF8000B70[26:26] = 0x00000000U + // .. .. ==> MASK : 0x04000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x07FFFFFFU ,0x00000823U), + // .. FINISH: DDRIOB SETTINGS + // .. START: MIO PROGRAMMING + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000700[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000700[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000700[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000700[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000700[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000700[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000700[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000700[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000700[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000700, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000704[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000704[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000704[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000704[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000704[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000704[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000704[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000704[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000704[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000704, 0x00003FFFU ,0x00001602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000708[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000708[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000708[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000708[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000708[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000708[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000708[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000708[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000708[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000708, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800070C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF800070C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800070C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800070C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800070C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800070C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800070C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF800070C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF800070C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800070C, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000710[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000710[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000710[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000710[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000710[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000710[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000710[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000710[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000710[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000710, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000714[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000714[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000714[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000714[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000714[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000714[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000714[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000714[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000714[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000714, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000718[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000718[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000718[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000718[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000718[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000718[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000718[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000718[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000718[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000718, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800071C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800071C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800071C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800071C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800071C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800071C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800071C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF800071C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF800071C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800071C, 0x00003FFFU ,0x00000600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000720[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000720[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000720[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000720[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000720[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000720[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000720[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000720[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000720[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000720, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000724[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000724[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000724[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000724[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000724[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000724[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000724[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000724[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000724[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000724, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000728[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000728[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000728[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000728[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000728[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000728[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000728[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000728[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000728[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000728, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800072C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800072C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800072C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800072C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800072C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800072C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800072C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF800072C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800072C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800072C, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000730[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000730[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000730[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000730[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 2 + // .. ==> 0XF8000730[7:5] = 0x00000002U + // .. ==> MASK : 0x000000E0U VAL : 0x00000040U + // .. Speed = 0 + // .. ==> 0XF8000730[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000730[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000730[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000730[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000730, 0x00003FFFU ,0x00001640U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000734[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000734[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000734[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000734[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 2 + // .. ==> 0XF8000734[7:5] = 0x00000002U + // .. ==> MASK : 0x000000E0U VAL : 0x00000040U + // .. Speed = 0 + // .. ==> 0XF8000734[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000734[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000734[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000734[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000734, 0x00003FFFU ,0x00001640U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000738[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000738[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000738[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000738[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 1 + // .. ==> 0XF8000738[7:5] = 0x00000001U + // .. ==> MASK : 0x000000E0U VAL : 0x00000020U + // .. Speed = 0 + // .. ==> 0XF8000738[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000738[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000738[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000738[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000738, 0x00003FFFU ,0x00001621U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800073C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800073C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800073C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800073C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 1 + // .. ==> 0XF800073C[7:5] = 0x00000001U + // .. ==> MASK : 0x000000E0U VAL : 0x00000020U + // .. Speed = 0 + // .. ==> 0XF800073C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800073C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF800073C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800073C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800073C, 0x00003FFFU ,0x00001620U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000740[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000740[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000740[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000740[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000740[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000740[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000740[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000740[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000740[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000740, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000744[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000744[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000744[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000744[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000744[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000744[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000744[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000744[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000744[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000744, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000748[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000748[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000748[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000748[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000748[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000748[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000748[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000748[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000748[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000748, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800074C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF800074C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800074C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800074C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800074C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800074C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800074C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800074C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800074C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800074C, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000750[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000750[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000750[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000750[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000750[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000750[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000750[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000750[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000750[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000750, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000754[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000754[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000754[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000754[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000754[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000754[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000754[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000754[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000754[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000754, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000758[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000758[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000758[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000758[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000758[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000758[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000758[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000758[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000758[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000758, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800075C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF800075C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800075C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800075C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800075C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800075C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800075C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800075C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800075C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800075C, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000760[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000760[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000760[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000760[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000760[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000760[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000760[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000760[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000760[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000760, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000764[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000764[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000764[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000764[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000764[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000764[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000764[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000764[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000764[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000764, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000768[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000768[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000768[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000768[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000768[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000768[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000768[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000768[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000768[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000768, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800076C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF800076C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800076C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800076C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800076C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800076C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800076C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800076C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800076C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800076C, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000770[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000770[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000770[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000770[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000770[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000770[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000770[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000770[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000770[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000770, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000774[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000774[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000774[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000774[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000774[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000774[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000774[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000774[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000774[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000774, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000778[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000778[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000778[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000778[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000778[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000778[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000778[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000778[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000778[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000778, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800077C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF800077C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800077C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800077C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800077C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800077C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800077C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800077C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800077C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800077C, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000780[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000780[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000780[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000780[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000780[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000780[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000780[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000780[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000780[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000780, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000784[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000784[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000784[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000784[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000784[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000784[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000784[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000784[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000784[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000784, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000788[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000788[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000788[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000788[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000788[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000788[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000788[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000788[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000788[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000788, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800078C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800078C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800078C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800078C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800078C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800078C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800078C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800078C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800078C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800078C, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000790[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000790[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000790[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000790[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000790[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000790[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000790[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000790[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000790[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000790, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000794[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000794[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000794[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000794[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000794[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000794[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000794[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000794[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000794[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000794, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000798[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000798[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000798[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000798[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000798[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000798[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000798[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000798[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000798[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000798, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800079C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800079C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800079C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800079C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800079C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800079C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800079C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800079C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800079C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800079C, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A8[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A8[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A8[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A8[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A8[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007AC[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007AC[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007AC[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007AC[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007AC[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007AC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007AC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007AC[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007AC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007B0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007B0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007B0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007B0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007B0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007B0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007B4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007B4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007B4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007B4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007B4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007B4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007B8[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. Speed = 0 + // .. ==> 0XF80007B8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B8, 0x00003F01U ,0x00001201U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007BC[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. Speed = 0 + // .. ==> 0XF80007BC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007BC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007BC[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007BC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007BC, 0x00003F01U ,0x00001201U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007C0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007C0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 7 + // .. ==> 0XF80007C0[7:5] = 0x00000007U + // .. ==> MASK : 0x000000E0U VAL : 0x000000E0U + // .. Speed = 0 + // .. ==> 0XF80007C0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU ,0x000012E0U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007C4[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF80007C4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 7 + // .. ==> 0XF80007C4[7:5] = 0x00000007U + // .. ==> MASK : 0x000000E0U VAL : 0x000000E0U + // .. Speed = 0 + // .. ==> 0XF80007C4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU ,0x000012E1U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007C8[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007C8[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C8[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C8[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF80007C8[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF80007C8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU ,0x00001200U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007CC[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007CC[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007CC[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007CC[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF80007CC[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF80007CC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007CC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 0 + // .. ==> 0XF80007CC[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007CC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU ,0x00000200U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007D0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007D0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007D0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007D0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007D0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007D0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007D0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007D0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007D0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007D4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007D4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007D4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007D4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007D4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007D4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007D4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007D4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007D4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU ,0x00001280U), + // .. SDIO0_WP_SEL = 47 + // .. ==> 0XF8000830[5:0] = 0x0000002FU + // .. ==> MASK : 0x0000003FU VAL : 0x0000002FU + // .. SDIO0_CD_SEL = 46 + // .. ==> 0XF8000830[21:16] = 0x0000002EU + // .. ==> MASK : 0x003F0000U VAL : 0x002E0000U + // .. + EMIT_MASKWRITE(0XF8000830, 0x003F003FU ,0x002E002FU), + // .. FINISH: MIO PROGRAMMING + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_peripherals_init_data_2_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: DDR TERM/IBUF_DISABLE_MODE SETTINGS + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B48[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B48[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B48, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B4C[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B4C[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B4C, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B50[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B50[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B50, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B54[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B54[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B54, 0x00000180U ,0x00000180U), + // .. FINISH: DDR TERM/IBUF_DISABLE_MODE SETTINGS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // .. START: SRAM/NOR SET OPMODE + // .. FINISH: SRAM/NOR SET OPMODE + // .. START: UART REGISTERS + // .. BDIV = 0x6 + // .. ==> 0XE0001034[7:0] = 0x00000006U + // .. ==> MASK : 0x000000FFU VAL : 0x00000006U + // .. + EMIT_MASKWRITE(0XE0001034, 0x000000FFU ,0x00000006U), + // .. CD = 0x7c + // .. ==> 0XE0001018[15:0] = 0x0000007CU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000007CU + // .. + EMIT_MASKWRITE(0XE0001018, 0x0000FFFFU ,0x0000007CU), + // .. STPBRK = 0x0 + // .. ==> 0XE0001000[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. STTBRK = 0x0 + // .. ==> 0XE0001000[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. RSTTO = 0x0 + // .. ==> 0XE0001000[6:6] = 0x00000000U + // .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. TXDIS = 0x0 + // .. ==> 0XE0001000[5:5] = 0x00000000U + // .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. TXEN = 0x1 + // .. ==> 0XE0001000[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. RXDIS = 0x0 + // .. ==> 0XE0001000[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. RXEN = 0x1 + // .. ==> 0XE0001000[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. TXRES = 0x1 + // .. ==> 0XE0001000[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. RXRES = 0x1 + // .. ==> 0XE0001000[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. + EMIT_MASKWRITE(0XE0001000, 0x000001FFU ,0x00000017U), + // .. IRMODE = 0x0 + // .. ==> 0XE0001004[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. UCLKEN = 0x0 + // .. ==> 0XE0001004[10:10] = 0x00000000U + // .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. CHMODE = 0x0 + // .. ==> 0XE0001004[9:8] = 0x00000000U + // .. ==> MASK : 0x00000300U VAL : 0x00000000U + // .. NBSTOP = 0x0 + // .. ==> 0XE0001004[7:6] = 0x00000000U + // .. ==> MASK : 0x000000C0U VAL : 0x00000000U + // .. PAR = 0x4 + // .. ==> 0XE0001004[5:3] = 0x00000004U + // .. ==> MASK : 0x00000038U VAL : 0x00000020U + // .. CHRL = 0x0 + // .. ==> 0XE0001004[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. CLKS = 0x0 + // .. ==> 0XE0001004[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XE0001004, 0x00000FFFU ,0x00000020U), + // .. FINISH: UART REGISTERS + // .. START: QSPI REGISTERS + // .. Holdb_dr = 1 + // .. ==> 0XE000D000[19:19] = 0x00000001U + // .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. + EMIT_MASKWRITE(0XE000D000, 0x00080000U ,0x00080000U), + // .. FINISH: QSPI REGISTERS + // .. START: PL POWER ON RESET REGISTERS + // .. PCFG_POR_CNT_4K = 0 + // .. ==> 0XF8007000[29:29] = 0x00000000U + // .. ==> MASK : 0x20000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8007000, 0x20000000U ,0x00000000U), + // .. FINISH: PL POWER ON RESET REGISTERS + // .. START: SMC TIMING CALCULATION REGISTER UPDATE + // .. .. START: NAND SET CYCLE + // .. .. FINISH: NAND SET CYCLE + // .. .. START: OPMODE + // .. .. FINISH: OPMODE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: SRAM/NOR CS0 SET CYCLE + // .. .. FINISH: SRAM/NOR CS0 SET CYCLE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: NOR CS0 BASE ADDRESS + // .. .. FINISH: NOR CS0 BASE ADDRESS + // .. .. START: SRAM/NOR CS1 SET CYCLE + // .. .. FINISH: SRAM/NOR CS1 SET CYCLE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: NOR CS1 BASE ADDRESS + // .. .. FINISH: NOR CS1 BASE ADDRESS + // .. .. START: USB RESET + // .. .. .. START: USB0 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. DIRECTION_1 = 0x80000 + // .. .. .. .. ==> 0XE000A244[21:0] = 0x00080000U + // .. .. .. .. ==> MASK : 0x003FFFFFU VAL : 0x00080000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU ,0x00080000U), + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x8 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000008U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000008U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370008U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. OP_ENABLE_1 = 0x80000 + // .. .. .. .. ==> 0XE000A248[21:0] = 0x00080000U + // .. .. .. .. ==> MASK : 0x003FFFFFU VAL : 0x00080000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU ,0x00080000U), + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x0 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000000U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370000U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x8 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000008U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000008U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370008U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: USB0 RESET + // .. .. .. START: USB1 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: USB1 RESET + // .. .. FINISH: USB RESET + // .. .. START: ENET RESET + // .. .. .. START: ENET0 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: ENET0 RESET + // .. .. .. START: ENET1 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: ENET1 RESET + // .. .. FINISH: ENET RESET + // .. .. START: I2C RESET + // .. .. .. START: I2C0 RESET + // .. .. .. .. START: DIR MODE GPIO BANK0 + // .. .. .. .. FINISH: DIR MODE GPIO BANK0 + // .. .. .. .. START: DIR MODE GPIO BANK1 + // .. .. .. .. FINISH: DIR MODE GPIO BANK1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: I2C0 RESET + // .. .. .. START: I2C1 RESET + // .. .. .. .. START: DIR MODE GPIO BANK0 + // .. .. .. .. FINISH: DIR MODE GPIO BANK0 + // .. .. .. .. START: DIR MODE GPIO BANK1 + // .. .. .. .. FINISH: DIR MODE GPIO BANK1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: I2C1 RESET + // .. .. FINISH: I2C RESET + // .. .. START: NOR CHIP SELECT + // .. .. .. START: DIR MODE BANK 0 + // .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. FINISH: NOR CHIP SELECT + // .. FINISH: SMC TIMING CALCULATION REGISTER UPDATE + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_post_config_2_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: ENABLING LEVEL SHIFTER + // .. USER_INP_ICT_EN_0 = 3 + // .. ==> 0XF8000900[1:0] = 0x00000003U + // .. ==> MASK : 0x00000003U VAL : 0x00000003U + // .. USER_INP_ICT_EN_1 = 3 + // .. ==> 0XF8000900[3:2] = 0x00000003U + // .. ==> MASK : 0x0000000CU VAL : 0x0000000CU + // .. + EMIT_MASKWRITE(0XF8000900, 0x0000000FU ,0x0000000FU), + // .. FINISH: ENABLING LEVEL SHIFTER + // .. START: FPGA RESETS TO 0 + // .. reserved_3 = 0 + // .. ==> 0XF8000240[31:25] = 0x00000000U + // .. ==> MASK : 0xFE000000U VAL : 0x00000000U + // .. FPGA_ACP_RST = 0 + // .. ==> 0XF8000240[24:24] = 0x00000000U + // .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. FPGA_AXDS3_RST = 0 + // .. ==> 0XF8000240[23:23] = 0x00000000U + // .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. FPGA_AXDS2_RST = 0 + // .. ==> 0XF8000240[22:22] = 0x00000000U + // .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. FPGA_AXDS1_RST = 0 + // .. ==> 0XF8000240[21:21] = 0x00000000U + // .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. FPGA_AXDS0_RST = 0 + // .. ==> 0XF8000240[20:20] = 0x00000000U + // .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. reserved_2 = 0 + // .. ==> 0XF8000240[19:18] = 0x00000000U + // .. ==> MASK : 0x000C0000U VAL : 0x00000000U + // .. FSSW1_FPGA_RST = 0 + // .. ==> 0XF8000240[17:17] = 0x00000000U + // .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. FSSW0_FPGA_RST = 0 + // .. ==> 0XF8000240[16:16] = 0x00000000U + // .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. reserved_1 = 0 + // .. ==> 0XF8000240[15:14] = 0x00000000U + // .. ==> MASK : 0x0000C000U VAL : 0x00000000U + // .. FPGA_FMSW1_RST = 0 + // .. ==> 0XF8000240[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. FPGA_FMSW0_RST = 0 + // .. ==> 0XF8000240[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. FPGA_DMA3_RST = 0 + // .. ==> 0XF8000240[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. FPGA_DMA2_RST = 0 + // .. ==> 0XF8000240[10:10] = 0x00000000U + // .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. FPGA_DMA1_RST = 0 + // .. ==> 0XF8000240[9:9] = 0x00000000U + // .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. FPGA_DMA0_RST = 0 + // .. ==> 0XF8000240[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. reserved = 0 + // .. ==> 0XF8000240[7:4] = 0x00000000U + // .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. FPGA3_OUT_RST = 0 + // .. ==> 0XF8000240[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. FPGA2_OUT_RST = 0 + // .. ==> 0XF8000240[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. FPGA1_OUT_RST = 0 + // .. ==> 0XF8000240[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. FPGA0_OUT_RST = 0 + // .. ==> 0XF8000240[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU ,0x00000000U), + // .. FINISH: FPGA RESETS TO 0 + // .. START: AFI REGISTERS + // .. .. START: AFI0 REGISTERS + // .. .. FINISH: AFI0 REGISTERS + // .. .. START: AFI1 REGISTERS + // .. .. FINISH: AFI1 REGISTERS + // .. .. START: AFI2 REGISTERS + // .. .. FINISH: AFI2 REGISTERS + // .. .. START: AFI3 REGISTERS + // .. .. FINISH: AFI3 REGISTERS + // .. FINISH: AFI REGISTERS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_debug_2_0[] = { + // START: top + // .. START: CROSS TRIGGER CONFIGURATIONS + // .. .. START: UNLOCKING CTI REGISTERS + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8898FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8898FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8899FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8899FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8809FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8809FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. FINISH: UNLOCKING CTI REGISTERS + // .. .. START: ENABLING CTI MODULES AND CHANNELS + // .. .. FINISH: ENABLING CTI MODULES AND CHANNELS + // .. .. START: MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS + // .. .. FINISH: MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS + // .. FINISH: CROSS TRIGGER CONFIGURATIONS + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_pll_init_data_1_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: PLL SLCR REGISTERS + // .. .. START: ARM PLL INIT + // .. .. PLL_RES = 0x2 + // .. .. ==> 0XF8000110[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000110[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0xfa + // .. .. ==> 0XF8000110[21:12] = 0x000000FAU + // .. .. ==> MASK : 0x003FF000U VAL : 0x000FA000U + // .. .. + EMIT_MASKWRITE(0XF8000110, 0x003FFFF0U ,0x000FA220U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x28 + // .. .. .. ==> 0XF8000100[18:12] = 0x00000028U + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x00028000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x0007F000U ,0x00028000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000100[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000100[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000100[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. ARM_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000001U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000100[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000100, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. .. SRCSEL = 0x0 + // .. .. .. ==> 0XF8000120[5:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. .. DIVISOR = 0x2 + // .. .. .. ==> 0XF8000120[13:8] = 0x00000002U + // .. .. .. ==> MASK : 0x00003F00U VAL : 0x00000200U + // .. .. .. CPU_6OR4XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[24:24] = 0x00000001U + // .. .. .. ==> MASK : 0x01000000U VAL : 0x01000000U + // .. .. .. CPU_3OR2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[25:25] = 0x00000001U + // .. .. .. ==> MASK : 0x02000000U VAL : 0x02000000U + // .. .. .. CPU_2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[26:26] = 0x00000001U + // .. .. .. ==> MASK : 0x04000000U VAL : 0x04000000U + // .. .. .. CPU_1XCLKACT = 0x1 + // .. .. .. ==> 0XF8000120[27:27] = 0x00000001U + // .. .. .. ==> MASK : 0x08000000U VAL : 0x08000000U + // .. .. .. CPU_PERI_CLKACT = 0x1 + // .. .. .. ==> 0XF8000120[28:28] = 0x00000001U + // .. .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000120, 0x1F003F30U ,0x1F000200U), + // .. .. FINISH: ARM PLL INIT + // .. .. START: DDR PLL INIT + // .. .. PLL_RES = 0x2 + // .. .. ==> 0XF8000114[7:4] = 0x00000002U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000020U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000114[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0x12c + // .. .. ==> 0XF8000114[21:12] = 0x0000012CU + // .. .. ==> MASK : 0x003FF000U VAL : 0x0012C000U + // .. .. + EMIT_MASKWRITE(0XF8000114, 0x003FFFF0U ,0x0012C220U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x20 + // .. .. .. ==> 0XF8000104[18:12] = 0x00000020U + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x00020000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x0007F000U ,0x00020000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000104[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000104[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000104[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. DDR_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[1:1] = 0x00000001U + // .. .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000002U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000104[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000104, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. .. DDR_3XCLKACT = 0x1 + // .. .. .. ==> 0XF8000124[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. DDR_2XCLKACT = 0x1 + // .. .. .. ==> 0XF8000124[1:1] = 0x00000001U + // .. .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. .. DDR_3XCLK_DIVISOR = 0x2 + // .. .. .. ==> 0XF8000124[25:20] = 0x00000002U + // .. .. .. ==> MASK : 0x03F00000U VAL : 0x00200000U + // .. .. .. DDR_2XCLK_DIVISOR = 0x3 + // .. .. .. ==> 0XF8000124[31:26] = 0x00000003U + // .. .. .. ==> MASK : 0xFC000000U VAL : 0x0C000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000124, 0xFFF00003U ,0x0C200003U), + // .. .. FINISH: DDR PLL INIT + // .. .. START: IO PLL INIT + // .. .. PLL_RES = 0xc + // .. .. ==> 0XF8000118[7:4] = 0x0000000CU + // .. .. ==> MASK : 0x000000F0U VAL : 0x000000C0U + // .. .. PLL_CP = 0x2 + // .. .. ==> 0XF8000118[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. LOCK_CNT = 0x145 + // .. .. ==> 0XF8000118[21:12] = 0x00000145U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00145000U + // .. .. + EMIT_MASKWRITE(0XF8000118, 0x003FFFF0U ,0x001452C0U), + // .. .. .. START: UPDATE FB_DIV + // .. .. .. PLL_FDIV = 0x1e + // .. .. .. ==> 0XF8000108[18:12] = 0x0000001EU + // .. .. .. ==> MASK : 0x0007F000U VAL : 0x0001E000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x0007F000U ,0x0001E000U), + // .. .. .. FINISH: UPDATE FB_DIV + // .. .. .. START: BY PASS PLL + // .. .. .. PLL_BYPASS_FORCE = 1 + // .. .. .. ==> 0XF8000108[4:4] = 0x00000001U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000010U ,0x00000010U), + // .. .. .. FINISH: BY PASS PLL + // .. .. .. START: ASSERT RESET + // .. .. .. PLL_RESET = 1 + // .. .. .. ==> 0XF8000108[0:0] = 0x00000001U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000001U ,0x00000001U), + // .. .. .. FINISH: ASSERT RESET + // .. .. .. START: DEASSERT RESET + // .. .. .. PLL_RESET = 0 + // .. .. .. ==> 0XF8000108[0:0] = 0x00000000U + // .. .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000001U ,0x00000000U), + // .. .. .. FINISH: DEASSERT RESET + // .. .. .. START: CHECK PLL STATUS + // .. .. .. IO_PLL_LOCK = 1 + // .. .. .. ==> 0XF800010C[2:2] = 0x00000001U + // .. .. .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. .. .. + EMIT_MASKPOLL(0XF800010C, 0x00000004U), + // .. .. .. FINISH: CHECK PLL STATUS + // .. .. .. START: REMOVE PLL BY PASS + // .. .. .. PLL_BYPASS_FORCE = 0 + // .. .. .. ==> 0XF8000108[4:4] = 0x00000000U + // .. .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. .. + EMIT_MASKWRITE(0XF8000108, 0x00000010U ,0x00000000U), + // .. .. .. FINISH: REMOVE PLL BY PASS + // .. .. FINISH: IO PLL INIT + // .. FINISH: PLL SLCR REGISTERS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_clock_init_data_1_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: CLOCK CONTROL SLCR REGISTERS + // .. CLKACT = 0x1 + // .. ==> 0XF8000128[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. DIVISOR0 = 0x23 + // .. ==> 0XF8000128[13:8] = 0x00000023U + // .. ==> MASK : 0x00003F00U VAL : 0x00002300U + // .. DIVISOR1 = 0x3 + // .. ==> 0XF8000128[25:20] = 0x00000003U + // .. ==> MASK : 0x03F00000U VAL : 0x00300000U + // .. + EMIT_MASKWRITE(0XF8000128, 0x03F03F01U ,0x00302301U), + // .. CLKACT = 0x1 + // .. ==> 0XF8000138[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000138[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000138, 0x00000011U ,0x00000001U), + // .. CLKACT = 0x1 + // .. ==> 0XF8000140[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000140[6:4] = 0x00000000U + // .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. DIVISOR = 0x8 + // .. ==> 0XF8000140[13:8] = 0x00000008U + // .. ==> MASK : 0x00003F00U VAL : 0x00000800U + // .. DIVISOR1 = 0x1 + // .. ==> 0XF8000140[25:20] = 0x00000001U + // .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. + EMIT_MASKWRITE(0XF8000140, 0x03F03F71U ,0x00100801U), + // .. CLKACT = 0x1 + // .. ==> 0XF800014C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. SRCSEL = 0x0 + // .. ==> 0XF800014C[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0x5 + // .. ==> 0XF800014C[13:8] = 0x00000005U + // .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. + EMIT_MASKWRITE(0XF800014C, 0x00003F31U ,0x00000501U), + // .. CLKACT0 = 0x1 + // .. ==> 0XF8000150[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. CLKACT1 = 0x0 + // .. ==> 0XF8000150[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000150[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0xa + // .. ==> 0XF8000150[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. + EMIT_MASKWRITE(0XF8000150, 0x00003F33U ,0x00000A01U), + // .. CLKACT0 = 0x0 + // .. ==> 0XF8000154[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. CLKACT1 = 0x1 + // .. ==> 0XF8000154[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. SRCSEL = 0x0 + // .. ==> 0XF8000154[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR = 0xa + // .. ==> 0XF8000154[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. + EMIT_MASKWRITE(0XF8000154, 0x00003F33U ,0x00000A02U), + // .. CLKACT0 = 0x1 + // .. ==> 0XF800015C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. CLKACT1 = 0x0 + // .. ==> 0XF800015C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. SRCSEL = 0x0 + // .. ==> 0XF800015C[5:4] = 0x00000000U + // .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. DIVISOR0 = 0xa + // .. ==> 0XF800015C[13:8] = 0x0000000AU + // .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. DIVISOR1 = 0x1 + // .. ==> 0XF800015C[25:20] = 0x00000001U + // .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. + EMIT_MASKWRITE(0XF800015C, 0x03F03F33U ,0x00100A01U), + // .. CAN0_MUX = 0x0 + // .. ==> 0XF8000160[5:0] = 0x00000000U + // .. ==> MASK : 0x0000003FU VAL : 0x00000000U + // .. CAN0_REF_SEL = 0x0 + // .. ==> 0XF8000160[6:6] = 0x00000000U + // .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. CAN1_MUX = 0x0 + // .. ==> 0XF8000160[21:16] = 0x00000000U + // .. ==> MASK : 0x003F0000U VAL : 0x00000000U + // .. CAN1_REF_SEL = 0x0 + // .. ==> 0XF8000160[22:22] = 0x00000000U + // .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000160, 0x007F007FU ,0x00000000U), + // .. .. START: TRACE CLOCK + // .. .. FINISH: TRACE CLOCK + // .. .. CLKACT = 0x1 + // .. .. ==> 0XF8000168[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000168[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR = 0x5 + // .. .. ==> 0XF8000168[13:8] = 0x00000005U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. .. + EMIT_MASKWRITE(0XF8000168, 0x00003F31U ,0x00000501U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000170[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x6 + // .. .. ==> 0XF8000170[13:8] = 0x00000006U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000600U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000170[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000170, 0x03F03F30U ,0x00100600U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000180[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x14 + // .. .. ==> 0XF8000180[13:8] = 0x00000014U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00001400U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000180[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000180, 0x03F03F30U ,0x00101400U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF8000190[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0xa + // .. .. ==> 0XF8000190[13:8] = 0x0000000AU + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000A00U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF8000190[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF8000190, 0x03F03F30U ,0x00100A00U), + // .. .. SRCSEL = 0x0 + // .. .. ==> 0XF80001A0[5:4] = 0x00000000U + // .. .. ==> MASK : 0x00000030U VAL : 0x00000000U + // .. .. DIVISOR0 = 0x5 + // .. .. ==> 0XF80001A0[13:8] = 0x00000005U + // .. .. ==> MASK : 0x00003F00U VAL : 0x00000500U + // .. .. DIVISOR1 = 0x1 + // .. .. ==> 0XF80001A0[25:20] = 0x00000001U + // .. .. ==> MASK : 0x03F00000U VAL : 0x00100000U + // .. .. + EMIT_MASKWRITE(0XF80001A0, 0x03F03F30U ,0x00100500U), + // .. .. CLK_621_TRUE = 0x1 + // .. .. ==> 0XF80001C4[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. + EMIT_MASKWRITE(0XF80001C4, 0x00000001U ,0x00000001U), + // .. .. DMA_CPU_2XCLKACT = 0x1 + // .. .. ==> 0XF800012C[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. USB0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[2:2] = 0x00000001U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. .. USB1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[3:3] = 0x00000001U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. .. GEM0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[6:6] = 0x00000001U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000040U + // .. .. GEM1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. SDI0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[10:10] = 0x00000001U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000400U + // .. .. SDI1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. SPI0_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. SPI1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. CAN0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. CAN1_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. I2C0_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[18:18] = 0x00000001U + // .. .. ==> MASK : 0x00040000U VAL : 0x00040000U + // .. .. I2C1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. UART0_CPU_1XCLKACT = 0x0 + // .. .. ==> 0XF800012C[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. UART1_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[21:21] = 0x00000001U + // .. .. ==> MASK : 0x00200000U VAL : 0x00200000U + // .. .. GPIO_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[22:22] = 0x00000001U + // .. .. ==> MASK : 0x00400000U VAL : 0x00400000U + // .. .. LQSPI_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[23:23] = 0x00000001U + // .. .. ==> MASK : 0x00800000U VAL : 0x00800000U + // .. .. SMC_CPU_1XCLKACT = 0x1 + // .. .. ==> 0XF800012C[24:24] = 0x00000001U + // .. .. ==> MASK : 0x01000000U VAL : 0x01000000U + // .. .. + EMIT_MASKWRITE(0XF800012C, 0x01FFCCCDU ,0x01ED044DU), + // .. FINISH: CLOCK CONTROL SLCR REGISTERS + // .. START: THIS SHOULD BE BLANK + // .. FINISH: THIS SHOULD BE BLANK + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_ddr_init_data_1_0[] = { + // START: top + // .. START: DDR INITIALIZATION + // .. .. START: LOCK DDR + // .. .. reg_ddrc_soft_rstb = 0 + // .. .. ==> 0XF8006000[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_powerdown_en = 0x0 + // .. .. ==> 0XF8006000[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_data_bus_width = 0x0 + // .. .. ==> 0XF8006000[3:2] = 0x00000000U + // .. .. ==> MASK : 0x0000000CU VAL : 0x00000000U + // .. .. reg_ddrc_burst8_refresh = 0x0 + // .. .. ==> 0XF8006000[6:4] = 0x00000000U + // .. .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. .. reg_ddrc_rdwr_idle_gap = 0x1 + // .. .. ==> 0XF8006000[13:7] = 0x00000001U + // .. .. ==> MASK : 0x00003F80U VAL : 0x00000080U + // .. .. reg_ddrc_dis_rd_bypass = 0x0 + // .. .. ==> 0XF8006000[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_act_bypass = 0x0 + // .. .. ==> 0XF8006000[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_auto_refresh = 0x0 + // .. .. ==> 0XF8006000[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU ,0x00000080U), + // .. .. FINISH: LOCK DDR + // .. .. reg_ddrc_t_rfc_nom_x32 = 0x81 + // .. .. ==> 0XF8006004[11:0] = 0x00000081U + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000081U + // .. .. reg_ddrc_active_ranks = 0x1 + // .. .. ==> 0XF8006004[13:12] = 0x00000001U + // .. .. ==> MASK : 0x00003000U VAL : 0x00001000U + // .. .. reg_ddrc_addrmap_cs_bit0 = 0x0 + // .. .. ==> 0XF8006004[18:14] = 0x00000000U + // .. .. ==> MASK : 0x0007C000U VAL : 0x00000000U + // .. .. reg_ddrc_wr_odt_block = 0x1 + // .. .. ==> 0XF8006004[20:19] = 0x00000001U + // .. .. ==> MASK : 0x00180000U VAL : 0x00080000U + // .. .. reg_ddrc_diff_rank_rd_2cycle_gap = 0x0 + // .. .. ==> 0XF8006004[21:21] = 0x00000000U + // .. .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_cs_bit1 = 0x0 + // .. .. ==> 0XF8006004[26:22] = 0x00000000U + // .. .. ==> MASK : 0x07C00000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_open_bank = 0x0 + // .. .. ==> 0XF8006004[27:27] = 0x00000000U + // .. .. ==> MASK : 0x08000000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_4bank_ram = 0x0 + // .. .. ==> 0XF8006004[28:28] = 0x00000000U + // .. .. ==> MASK : 0x10000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006004, 0x1FFFFFFFU ,0x00081081U), + // .. .. reg_ddrc_hpr_min_non_critical_x32 = 0xf + // .. .. ==> 0XF8006008[10:0] = 0x0000000FU + // .. .. ==> MASK : 0x000007FFU VAL : 0x0000000FU + // .. .. reg_ddrc_hpr_max_starve_x32 = 0xf + // .. .. ==> 0XF8006008[21:11] = 0x0000000FU + // .. .. ==> MASK : 0x003FF800U VAL : 0x00007800U + // .. .. reg_ddrc_hpr_xact_run_length = 0xf + // .. .. ==> 0XF8006008[25:22] = 0x0000000FU + // .. .. ==> MASK : 0x03C00000U VAL : 0x03C00000U + // .. .. + EMIT_MASKWRITE(0XF8006008, 0x03FFFFFFU ,0x03C0780FU), + // .. .. reg_ddrc_lpr_min_non_critical_x32 = 0x1 + // .. .. ==> 0XF800600C[10:0] = 0x00000001U + // .. .. ==> MASK : 0x000007FFU VAL : 0x00000001U + // .. .. reg_ddrc_lpr_max_starve_x32 = 0x2 + // .. .. ==> 0XF800600C[21:11] = 0x00000002U + // .. .. ==> MASK : 0x003FF800U VAL : 0x00001000U + // .. .. reg_ddrc_lpr_xact_run_length = 0x8 + // .. .. ==> 0XF800600C[25:22] = 0x00000008U + // .. .. ==> MASK : 0x03C00000U VAL : 0x02000000U + // .. .. + EMIT_MASKWRITE(0XF800600C, 0x03FFFFFFU ,0x02001001U), + // .. .. reg_ddrc_w_min_non_critical_x32 = 0x1 + // .. .. ==> 0XF8006010[10:0] = 0x00000001U + // .. .. ==> MASK : 0x000007FFU VAL : 0x00000001U + // .. .. reg_ddrc_w_xact_run_length = 0x8 + // .. .. ==> 0XF8006010[14:11] = 0x00000008U + // .. .. ==> MASK : 0x00007800U VAL : 0x00004000U + // .. .. reg_ddrc_w_max_starve_x32 = 0x2 + // .. .. ==> 0XF8006010[25:15] = 0x00000002U + // .. .. ==> MASK : 0x03FF8000U VAL : 0x00010000U + // .. .. + EMIT_MASKWRITE(0XF8006010, 0x03FFFFFFU ,0x00014001U), + // .. .. reg_ddrc_t_rc = 0x1b + // .. .. ==> 0XF8006014[5:0] = 0x0000001BU + // .. .. ==> MASK : 0x0000003FU VAL : 0x0000001BU + // .. .. reg_ddrc_t_rfc_min = 0xa0 + // .. .. ==> 0XF8006014[13:6] = 0x000000A0U + // .. .. ==> MASK : 0x00003FC0U VAL : 0x00002800U + // .. .. reg_ddrc_post_selfref_gap_x32 = 0x10 + // .. .. ==> 0XF8006014[20:14] = 0x00000010U + // .. .. ==> MASK : 0x001FC000U VAL : 0x00040000U + // .. .. + EMIT_MASKWRITE(0XF8006014, 0x001FFFFFU ,0x0004281BU), + // .. .. reg_ddrc_wr2pre = 0x12 + // .. .. ==> 0XF8006018[4:0] = 0x00000012U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000012U + // .. .. reg_ddrc_powerdown_to_x32 = 0x6 + // .. .. ==> 0XF8006018[9:5] = 0x00000006U + // .. .. ==> MASK : 0x000003E0U VAL : 0x000000C0U + // .. .. reg_ddrc_t_faw = 0x18 + // .. .. ==> 0XF8006018[15:10] = 0x00000018U + // .. .. ==> MASK : 0x0000FC00U VAL : 0x00006000U + // .. .. reg_ddrc_t_ras_max = 0x24 + // .. .. ==> 0XF8006018[21:16] = 0x00000024U + // .. .. ==> MASK : 0x003F0000U VAL : 0x00240000U + // .. .. reg_ddrc_t_ras_min = 0x14 + // .. .. ==> 0XF8006018[26:22] = 0x00000014U + // .. .. ==> MASK : 0x07C00000U VAL : 0x05000000U + // .. .. reg_ddrc_t_cke = 0x4 + // .. .. ==> 0XF8006018[31:28] = 0x00000004U + // .. .. ==> MASK : 0xF0000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006018, 0xF7FFFFFFU ,0x452460D2U), + // .. .. reg_ddrc_write_latency = 0x5 + // .. .. ==> 0XF800601C[4:0] = 0x00000005U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000005U + // .. .. reg_ddrc_rd2wr = 0x7 + // .. .. ==> 0XF800601C[9:5] = 0x00000007U + // .. .. ==> MASK : 0x000003E0U VAL : 0x000000E0U + // .. .. reg_ddrc_wr2rd = 0xe + // .. .. ==> 0XF800601C[14:10] = 0x0000000EU + // .. .. ==> MASK : 0x00007C00U VAL : 0x00003800U + // .. .. reg_ddrc_t_xp = 0x4 + // .. .. ==> 0XF800601C[19:15] = 0x00000004U + // .. .. ==> MASK : 0x000F8000U VAL : 0x00020000U + // .. .. reg_ddrc_pad_pd = 0x0 + // .. .. ==> 0XF800601C[22:20] = 0x00000000U + // .. .. ==> MASK : 0x00700000U VAL : 0x00000000U + // .. .. reg_ddrc_rd2pre = 0x4 + // .. .. ==> 0XF800601C[27:23] = 0x00000004U + // .. .. ==> MASK : 0x0F800000U VAL : 0x02000000U + // .. .. reg_ddrc_t_rcd = 0x7 + // .. .. ==> 0XF800601C[31:28] = 0x00000007U + // .. .. ==> MASK : 0xF0000000U VAL : 0x70000000U + // .. .. + EMIT_MASKWRITE(0XF800601C, 0xFFFFFFFFU ,0x720238E5U), + // .. .. reg_ddrc_t_ccd = 0x4 + // .. .. ==> 0XF8006020[4:2] = 0x00000004U + // .. .. ==> MASK : 0x0000001CU VAL : 0x00000010U + // .. .. reg_ddrc_t_rrd = 0x6 + // .. .. ==> 0XF8006020[7:5] = 0x00000006U + // .. .. ==> MASK : 0x000000E0U VAL : 0x000000C0U + // .. .. reg_ddrc_refresh_margin = 0x2 + // .. .. ==> 0XF8006020[11:8] = 0x00000002U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000200U + // .. .. reg_ddrc_t_rp = 0x7 + // .. .. ==> 0XF8006020[15:12] = 0x00000007U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00007000U + // .. .. reg_ddrc_refresh_to_x32 = 0x8 + // .. .. ==> 0XF8006020[20:16] = 0x00000008U + // .. .. ==> MASK : 0x001F0000U VAL : 0x00080000U + // .. .. reg_ddrc_sdram = 0x1 + // .. .. ==> 0XF8006020[21:21] = 0x00000001U + // .. .. ==> MASK : 0x00200000U VAL : 0x00200000U + // .. .. reg_ddrc_mobile = 0x0 + // .. .. ==> 0XF8006020[22:22] = 0x00000000U + // .. .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. .. reg_ddrc_clock_stop_en = 0x0 + // .. .. ==> 0XF8006020[23:23] = 0x00000000U + // .. .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. .. reg_ddrc_read_latency = 0x7 + // .. .. ==> 0XF8006020[28:24] = 0x00000007U + // .. .. ==> MASK : 0x1F000000U VAL : 0x07000000U + // .. .. reg_phy_mode_ddr1_ddr2 = 0x1 + // .. .. ==> 0XF8006020[29:29] = 0x00000001U + // .. .. ==> MASK : 0x20000000U VAL : 0x20000000U + // .. .. reg_ddrc_dis_pad_pd = 0x0 + // .. .. ==> 0XF8006020[30:30] = 0x00000000U + // .. .. ==> MASK : 0x40000000U VAL : 0x00000000U + // .. .. reg_ddrc_loopback = 0x0 + // .. .. ==> 0XF8006020[31:31] = 0x00000000U + // .. .. ==> MASK : 0x80000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006020, 0xFFFFFFFCU ,0x272872D0U), + // .. .. reg_ddrc_en_2t_timing_mode = 0x0 + // .. .. ==> 0XF8006024[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_prefer_write = 0x0 + // .. .. ==> 0XF8006024[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_max_rank_rd = 0xf + // .. .. ==> 0XF8006024[5:2] = 0x0000000FU + // .. .. ==> MASK : 0x0000003CU VAL : 0x0000003CU + // .. .. reg_ddrc_mr_wr = 0x0 + // .. .. ==> 0XF8006024[6:6] = 0x00000000U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. .. reg_ddrc_mr_addr = 0x0 + // .. .. ==> 0XF8006024[8:7] = 0x00000000U + // .. .. ==> MASK : 0x00000180U VAL : 0x00000000U + // .. .. reg_ddrc_mr_data = 0x0 + // .. .. ==> 0XF8006024[24:9] = 0x00000000U + // .. .. ==> MASK : 0x01FFFE00U VAL : 0x00000000U + // .. .. ddrc_reg_mr_wr_busy = 0x0 + // .. .. ==> 0XF8006024[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reg_ddrc_mr_type = 0x0 + // .. .. ==> 0XF8006024[26:26] = 0x00000000U + // .. .. ==> MASK : 0x04000000U VAL : 0x00000000U + // .. .. reg_ddrc_mr_rdata_valid = 0x0 + // .. .. ==> 0XF8006024[27:27] = 0x00000000U + // .. .. ==> MASK : 0x08000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006024, 0x0FFFFFFFU ,0x0000003CU), + // .. .. reg_ddrc_final_wait_x32 = 0x7 + // .. .. ==> 0XF8006028[6:0] = 0x00000007U + // .. .. ==> MASK : 0x0000007FU VAL : 0x00000007U + // .. .. reg_ddrc_pre_ocd_x32 = 0x0 + // .. .. ==> 0XF8006028[10:7] = 0x00000000U + // .. .. ==> MASK : 0x00000780U VAL : 0x00000000U + // .. .. reg_ddrc_t_mrd = 0x4 + // .. .. ==> 0XF8006028[13:11] = 0x00000004U + // .. .. ==> MASK : 0x00003800U VAL : 0x00002000U + // .. .. + EMIT_MASKWRITE(0XF8006028, 0x00003FFFU ,0x00002007U), + // .. .. reg_ddrc_emr2 = 0x8 + // .. .. ==> 0XF800602C[15:0] = 0x00000008U + // .. .. ==> MASK : 0x0000FFFFU VAL : 0x00000008U + // .. .. reg_ddrc_emr3 = 0x0 + // .. .. ==> 0XF800602C[31:16] = 0x00000000U + // .. .. ==> MASK : 0xFFFF0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800602C, 0xFFFFFFFFU ,0x00000008U), + // .. .. reg_ddrc_mr = 0x930 + // .. .. ==> 0XF8006030[15:0] = 0x00000930U + // .. .. ==> MASK : 0x0000FFFFU VAL : 0x00000930U + // .. .. reg_ddrc_emr = 0x4 + // .. .. ==> 0XF8006030[31:16] = 0x00000004U + // .. .. ==> MASK : 0xFFFF0000U VAL : 0x00040000U + // .. .. + EMIT_MASKWRITE(0XF8006030, 0xFFFFFFFFU ,0x00040930U), + // .. .. reg_ddrc_burst_rdwr = 0x4 + // .. .. ==> 0XF8006034[3:0] = 0x00000004U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000004U + // .. .. reg_ddrc_pre_cke_x1024 = 0x105 + // .. .. ==> 0XF8006034[13:4] = 0x00000105U + // .. .. ==> MASK : 0x00003FF0U VAL : 0x00001050U + // .. .. reg_ddrc_post_cke_x1024 = 0x1 + // .. .. ==> 0XF8006034[25:16] = 0x00000001U + // .. .. ==> MASK : 0x03FF0000U VAL : 0x00010000U + // .. .. reg_ddrc_burstchop = 0x0 + // .. .. ==> 0XF8006034[28:28] = 0x00000000U + // .. .. ==> MASK : 0x10000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006034, 0x13FF3FFFU ,0x00011054U), + // .. .. reg_ddrc_force_low_pri_n = 0x0 + // .. .. ==> 0XF8006038[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_dis_dq = 0x0 + // .. .. ==> 0XF8006038[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_debug_mode = 0x0 + // .. .. ==> 0XF8006038[6:6] = 0x00000000U + // .. .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. .. reg_phy_wr_level_start = 0x0 + // .. .. ==> 0XF8006038[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. reg_phy_rd_level_start = 0x0 + // .. .. ==> 0XF8006038[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_phy_dq0_wait_t = 0x0 + // .. .. ==> 0XF8006038[12:9] = 0x00000000U + // .. .. ==> MASK : 0x00001E00U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006038, 0x00001FC3U ,0x00000000U), + // .. .. reg_ddrc_addrmap_bank_b0 = 0x7 + // .. .. ==> 0XF800603C[3:0] = 0x00000007U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000007U + // .. .. reg_ddrc_addrmap_bank_b1 = 0x7 + // .. .. ==> 0XF800603C[7:4] = 0x00000007U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000070U + // .. .. reg_ddrc_addrmap_bank_b2 = 0x7 + // .. .. ==> 0XF800603C[11:8] = 0x00000007U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000700U + // .. .. reg_ddrc_addrmap_col_b5 = 0x0 + // .. .. ==> 0XF800603C[15:12] = 0x00000000U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b6 = 0x0 + // .. .. ==> 0XF800603C[19:16] = 0x00000000U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800603C, 0x000FFFFFU ,0x00000777U), + // .. .. reg_ddrc_addrmap_col_b2 = 0x0 + // .. .. ==> 0XF8006040[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b3 = 0x0 + // .. .. ==> 0XF8006040[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b4 = 0x0 + // .. .. ==> 0XF8006040[11:8] = 0x00000000U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b7 = 0x0 + // .. .. ==> 0XF8006040[15:12] = 0x00000000U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b8 = 0x0 + // .. .. ==> 0XF8006040[19:16] = 0x00000000U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00000000U + // .. .. reg_ddrc_addrmap_col_b9 = 0xf + // .. .. ==> 0XF8006040[23:20] = 0x0000000FU + // .. .. ==> MASK : 0x00F00000U VAL : 0x00F00000U + // .. .. reg_ddrc_addrmap_col_b10 = 0xf + // .. .. ==> 0XF8006040[27:24] = 0x0000000FU + // .. .. ==> MASK : 0x0F000000U VAL : 0x0F000000U + // .. .. reg_ddrc_addrmap_col_b11 = 0xf + // .. .. ==> 0XF8006040[31:28] = 0x0000000FU + // .. .. ==> MASK : 0xF0000000U VAL : 0xF0000000U + // .. .. + EMIT_MASKWRITE(0XF8006040, 0xFFFFFFFFU ,0xFFF00000U), + // .. .. reg_ddrc_addrmap_row_b0 = 0x6 + // .. .. ==> 0XF8006044[3:0] = 0x00000006U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000006U + // .. .. reg_ddrc_addrmap_row_b1 = 0x6 + // .. .. ==> 0XF8006044[7:4] = 0x00000006U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000060U + // .. .. reg_ddrc_addrmap_row_b2_11 = 0x6 + // .. .. ==> 0XF8006044[11:8] = 0x00000006U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000600U + // .. .. reg_ddrc_addrmap_row_b12 = 0x6 + // .. .. ==> 0XF8006044[15:12] = 0x00000006U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00006000U + // .. .. reg_ddrc_addrmap_row_b13 = 0x6 + // .. .. ==> 0XF8006044[19:16] = 0x00000006U + // .. .. ==> MASK : 0x000F0000U VAL : 0x00060000U + // .. .. reg_ddrc_addrmap_row_b14 = 0x6 + // .. .. ==> 0XF8006044[23:20] = 0x00000006U + // .. .. ==> MASK : 0x00F00000U VAL : 0x00600000U + // .. .. reg_ddrc_addrmap_row_b15 = 0xf + // .. .. ==> 0XF8006044[27:24] = 0x0000000FU + // .. .. ==> MASK : 0x0F000000U VAL : 0x0F000000U + // .. .. + EMIT_MASKWRITE(0XF8006044, 0x0FFFFFFFU ,0x0F666666U), + // .. .. reg_ddrc_rank0_rd_odt = 0x0 + // .. .. ==> 0XF8006048[2:0] = 0x00000000U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000000U + // .. .. reg_ddrc_rank0_wr_odt = 0x1 + // .. .. ==> 0XF8006048[5:3] = 0x00000001U + // .. .. ==> MASK : 0x00000038U VAL : 0x00000008U + // .. .. reg_ddrc_rank1_rd_odt = 0x1 + // .. .. ==> 0XF8006048[8:6] = 0x00000001U + // .. .. ==> MASK : 0x000001C0U VAL : 0x00000040U + // .. .. reg_ddrc_rank1_wr_odt = 0x1 + // .. .. ==> 0XF8006048[11:9] = 0x00000001U + // .. .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. .. reg_phy_rd_local_odt = 0x0 + // .. .. ==> 0XF8006048[13:12] = 0x00000000U + // .. .. ==> MASK : 0x00003000U VAL : 0x00000000U + // .. .. reg_phy_wr_local_odt = 0x3 + // .. .. ==> 0XF8006048[15:14] = 0x00000003U + // .. .. ==> MASK : 0x0000C000U VAL : 0x0000C000U + // .. .. reg_phy_idle_local_odt = 0x3 + // .. .. ==> 0XF8006048[17:16] = 0x00000003U + // .. .. ==> MASK : 0x00030000U VAL : 0x00030000U + // .. .. reg_ddrc_rank2_rd_odt = 0x0 + // .. .. ==> 0XF8006048[20:18] = 0x00000000U + // .. .. ==> MASK : 0x001C0000U VAL : 0x00000000U + // .. .. reg_ddrc_rank2_wr_odt = 0x0 + // .. .. ==> 0XF8006048[23:21] = 0x00000000U + // .. .. ==> MASK : 0x00E00000U VAL : 0x00000000U + // .. .. reg_ddrc_rank3_rd_odt = 0x0 + // .. .. ==> 0XF8006048[26:24] = 0x00000000U + // .. .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. .. reg_ddrc_rank3_wr_odt = 0x0 + // .. .. ==> 0XF8006048[29:27] = 0x00000000U + // .. .. ==> MASK : 0x38000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006048, 0x3FFFFFFFU ,0x0003C248U), + // .. .. reg_phy_rd_cmd_to_data = 0x0 + // .. .. ==> 0XF8006050[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_phy_wr_cmd_to_data = 0x0 + // .. .. ==> 0XF8006050[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_phy_rdc_we_to_re_delay = 0x8 + // .. .. ==> 0XF8006050[11:8] = 0x00000008U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000800U + // .. .. reg_phy_rdc_fifo_rst_disable = 0x0 + // .. .. ==> 0XF8006050[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_phy_use_fixed_re = 0x1 + // .. .. ==> 0XF8006050[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. reg_phy_rdc_fifo_rst_err_cnt_clr = 0x0 + // .. .. ==> 0XF8006050[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_phy_dis_phy_ctrl_rstn = 0x0 + // .. .. ==> 0XF8006050[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_phy_clk_stall_level = 0x0 + // .. .. ==> 0XF8006050[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_num_of_dq0 = 0x7 + // .. .. ==> 0XF8006050[27:24] = 0x00000007U + // .. .. ==> MASK : 0x0F000000U VAL : 0x07000000U + // .. .. reg_phy_wrlvl_num_of_dq0 = 0x7 + // .. .. ==> 0XF8006050[31:28] = 0x00000007U + // .. .. ==> MASK : 0xF0000000U VAL : 0x70000000U + // .. .. + EMIT_MASKWRITE(0XF8006050, 0xFF0F8FFFU ,0x77010800U), + // .. .. reg_ddrc_dll_calib_to_min_x1024 = 0x1 + // .. .. ==> 0XF8006058[7:0] = 0x00000001U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000001U + // .. .. reg_ddrc_dll_calib_to_max_x1024 = 0x1 + // .. .. ==> 0XF8006058[15:8] = 0x00000001U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00000100U + // .. .. reg_ddrc_dis_dll_calib = 0x0 + // .. .. ==> 0XF8006058[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006058, 0x0001FFFFU ,0x00000101U), + // .. .. reg_ddrc_rd_odt_delay = 0x3 + // .. .. ==> 0XF800605C[3:0] = 0x00000003U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000003U + // .. .. reg_ddrc_wr_odt_delay = 0x0 + // .. .. ==> 0XF800605C[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. reg_ddrc_rd_odt_hold = 0x0 + // .. .. ==> 0XF800605C[11:8] = 0x00000000U + // .. .. ==> MASK : 0x00000F00U VAL : 0x00000000U + // .. .. reg_ddrc_wr_odt_hold = 0x5 + // .. .. ==> 0XF800605C[15:12] = 0x00000005U + // .. .. ==> MASK : 0x0000F000U VAL : 0x00005000U + // .. .. + EMIT_MASKWRITE(0XF800605C, 0x0000FFFFU ,0x00005003U), + // .. .. reg_ddrc_pageclose = 0x0 + // .. .. ==> 0XF8006060[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_lpr_num_entries = 0x1f + // .. .. ==> 0XF8006060[6:1] = 0x0000001FU + // .. .. ==> MASK : 0x0000007EU VAL : 0x0000003EU + // .. .. reg_ddrc_auto_pre_en = 0x0 + // .. .. ==> 0XF8006060[7:7] = 0x00000000U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. .. reg_ddrc_refresh_update_level = 0x0 + // .. .. ==> 0XF8006060[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_ddrc_dis_wc = 0x0 + // .. .. ==> 0XF8006060[9:9] = 0x00000000U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. .. reg_ddrc_dis_collision_page_opt = 0x0 + // .. .. ==> 0XF8006060[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_ddrc_selfref_en = 0x0 + // .. .. ==> 0XF8006060[12:12] = 0x00000000U + // .. .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006060, 0x000017FFU ,0x0000003EU), + // .. .. reg_ddrc_go2critical_hysteresis = 0x0 + // .. .. ==> 0XF8006064[12:5] = 0x00000000U + // .. .. ==> MASK : 0x00001FE0U VAL : 0x00000000U + // .. .. reg_arb_go2critical_en = 0x1 + // .. .. ==> 0XF8006064[17:17] = 0x00000001U + // .. .. ==> MASK : 0x00020000U VAL : 0x00020000U + // .. .. + EMIT_MASKWRITE(0XF8006064, 0x00021FE0U ,0x00020000U), + // .. .. reg_ddrc_wrlvl_ww = 0x41 + // .. .. ==> 0XF8006068[7:0] = 0x00000041U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000041U + // .. .. reg_ddrc_rdlvl_rr = 0x41 + // .. .. ==> 0XF8006068[15:8] = 0x00000041U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00004100U + // .. .. reg_ddrc_dfi_t_wlmrd = 0x28 + // .. .. ==> 0XF8006068[25:16] = 0x00000028U + // .. .. ==> MASK : 0x03FF0000U VAL : 0x00280000U + // .. .. + EMIT_MASKWRITE(0XF8006068, 0x03FFFFFFU ,0x00284141U), + // .. .. dfi_t_ctrlupd_interval_min_x1024 = 0x10 + // .. .. ==> 0XF800606C[7:0] = 0x00000010U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000010U + // .. .. dfi_t_ctrlupd_interval_max_x1024 = 0x16 + // .. .. ==> 0XF800606C[15:8] = 0x00000016U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00001600U + // .. .. + EMIT_MASKWRITE(0XF800606C, 0x0000FFFFU ,0x00001610U), + // .. .. refresh_timer0_start_value_x32 = 0x0 + // .. .. ==> 0XF80060A0[11:0] = 0x00000000U + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000000U + // .. .. refresh_timer1_start_value_x32 = 0x8 + // .. .. ==> 0XF80060A0[23:12] = 0x00000008U + // .. .. ==> MASK : 0x00FFF000U VAL : 0x00008000U + // .. .. + EMIT_MASKWRITE(0XF80060A0, 0x00FFFFFFU ,0x00008000U), + // .. .. reg_ddrc_dis_auto_zq = 0x0 + // .. .. ==> 0XF80060A4[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_ddr3 = 0x1 + // .. .. ==> 0XF80060A4[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. reg_ddrc_t_mod = 0x200 + // .. .. ==> 0XF80060A4[11:2] = 0x00000200U + // .. .. ==> MASK : 0x00000FFCU VAL : 0x00000800U + // .. .. reg_ddrc_t_zq_long_nop = 0x200 + // .. .. ==> 0XF80060A4[21:12] = 0x00000200U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00200000U + // .. .. reg_ddrc_t_zq_short_nop = 0x40 + // .. .. ==> 0XF80060A4[31:22] = 0x00000040U + // .. .. ==> MASK : 0xFFC00000U VAL : 0x10000000U + // .. .. + EMIT_MASKWRITE(0XF80060A4, 0xFFFFFFFFU ,0x10200802U), + // .. .. t_zq_short_interval_x1024 = 0xcb73 + // .. .. ==> 0XF80060A8[19:0] = 0x0000CB73U + // .. .. ==> MASK : 0x000FFFFFU VAL : 0x0000CB73U + // .. .. dram_rstn_x1024 = 0x69 + // .. .. ==> 0XF80060A8[27:20] = 0x00000069U + // .. .. ==> MASK : 0x0FF00000U VAL : 0x06900000U + // .. .. + EMIT_MASKWRITE(0XF80060A8, 0x0FFFFFFFU ,0x0690CB73U), + // .. .. deeppowerdown_en = 0x0 + // .. .. ==> 0XF80060AC[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. deeppowerdown_to_x1024 = 0xff + // .. .. ==> 0XF80060AC[8:1] = 0x000000FFU + // .. .. ==> MASK : 0x000001FEU VAL : 0x000001FEU + // .. .. + EMIT_MASKWRITE(0XF80060AC, 0x000001FFU ,0x000001FEU), + // .. .. dfi_wrlvl_max_x1024 = 0xfff + // .. .. ==> 0XF80060B0[11:0] = 0x00000FFFU + // .. .. ==> MASK : 0x00000FFFU VAL : 0x00000FFFU + // .. .. dfi_rdlvl_max_x1024 = 0xfff + // .. .. ==> 0XF80060B0[23:12] = 0x00000FFFU + // .. .. ==> MASK : 0x00FFF000U VAL : 0x00FFF000U + // .. .. ddrc_reg_twrlvl_max_error = 0x0 + // .. .. ==> 0XF80060B0[24:24] = 0x00000000U + // .. .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. .. ddrc_reg_trdlvl_max_error = 0x0 + // .. .. ==> 0XF80060B0[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. reg_ddrc_dfi_wr_level_en = 0x1 + // .. .. ==> 0XF80060B0[26:26] = 0x00000001U + // .. .. ==> MASK : 0x04000000U VAL : 0x04000000U + // .. .. reg_ddrc_dfi_rd_dqs_gate_level = 0x1 + // .. .. ==> 0XF80060B0[27:27] = 0x00000001U + // .. .. ==> MASK : 0x08000000U VAL : 0x08000000U + // .. .. reg_ddrc_dfi_rd_data_eye_train = 0x1 + // .. .. ==> 0XF80060B0[28:28] = 0x00000001U + // .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. + EMIT_MASKWRITE(0XF80060B0, 0x1FFFFFFFU ,0x1CFFFFFFU), + // .. .. reg_ddrc_2t_delay = 0x0 + // .. .. ==> 0XF80060B4[8:0] = 0x00000000U + // .. .. ==> MASK : 0x000001FFU VAL : 0x00000000U + // .. .. reg_ddrc_skip_ocd = 0x1 + // .. .. ==> 0XF80060B4[9:9] = 0x00000001U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000200U + // .. .. reg_ddrc_dis_pre_bypass = 0x0 + // .. .. ==> 0XF80060B4[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060B4, 0x000007FFU ,0x00000200U), + // .. .. reg_ddrc_dfi_t_rddata_en = 0x6 + // .. .. ==> 0XF80060B8[4:0] = 0x00000006U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000006U + // .. .. reg_ddrc_dfi_t_ctrlup_min = 0x3 + // .. .. ==> 0XF80060B8[14:5] = 0x00000003U + // .. .. ==> MASK : 0x00007FE0U VAL : 0x00000060U + // .. .. reg_ddrc_dfi_t_ctrlup_max = 0x40 + // .. .. ==> 0XF80060B8[24:15] = 0x00000040U + // .. .. ==> MASK : 0x01FF8000U VAL : 0x00200000U + // .. .. + EMIT_MASKWRITE(0XF80060B8, 0x01FFFFFFU ,0x00200066U), + // .. .. START: RESET ECC ERROR + // .. .. Clear_Uncorrectable_DRAM_ECC_error = 1 + // .. .. ==> 0XF80060C4[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. Clear_Correctable_DRAM_ECC_error = 1 + // .. .. ==> 0XF80060C4[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. + EMIT_MASKWRITE(0XF80060C4, 0x00000003U ,0x00000003U), + // .. .. FINISH: RESET ECC ERROR + // .. .. Clear_Uncorrectable_DRAM_ECC_error = 0x0 + // .. .. ==> 0XF80060C4[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. Clear_Correctable_DRAM_ECC_error = 0x0 + // .. .. ==> 0XF80060C4[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060C4, 0x00000003U ,0x00000000U), + // .. .. CORR_ECC_LOG_VALID = 0x0 + // .. .. ==> 0XF80060C8[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. ECC_CORRECTED_BIT_NUM = 0x0 + // .. .. ==> 0XF80060C8[7:1] = 0x00000000U + // .. .. ==> MASK : 0x000000FEU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060C8, 0x000000FFU ,0x00000000U), + // .. .. UNCORR_ECC_LOG_VALID = 0x0 + // .. .. ==> 0XF80060DC[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060DC, 0x00000001U ,0x00000000U), + // .. .. STAT_NUM_CORR_ERR = 0x0 + // .. .. ==> 0XF80060F0[15:8] = 0x00000000U + // .. .. ==> MASK : 0x0000FF00U VAL : 0x00000000U + // .. .. STAT_NUM_UNCORR_ERR = 0x0 + // .. .. ==> 0XF80060F0[7:0] = 0x00000000U + // .. .. ==> MASK : 0x000000FFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80060F0, 0x0000FFFFU ,0x00000000U), + // .. .. reg_ddrc_ecc_mode = 0x0 + // .. .. ==> 0XF80060F4[2:0] = 0x00000000U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000000U + // .. .. reg_ddrc_dis_scrub = 0x1 + // .. .. ==> 0XF80060F4[3:3] = 0x00000001U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000008U + // .. .. + EMIT_MASKWRITE(0XF80060F4, 0x0000000FU ,0x00000008U), + // .. .. reg_phy_dif_on = 0x0 + // .. .. ==> 0XF8006114[3:0] = 0x00000000U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000000U + // .. .. reg_phy_dif_off = 0x0 + // .. .. ==> 0XF8006114[7:4] = 0x00000000U + // .. .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006114, 0x000000FFU ,0x00000000U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006118[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006118[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006118[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006118[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006118[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006118[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006118[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006118, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF800611C[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF800611C[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF800611C[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF800611C[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF800611C[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF800611C[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF800611C[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF800611C, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006120[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006120[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006120[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006120[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006120[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006120[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006120[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006120, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_data_slice_in_use = 0x1 + // .. .. ==> 0XF8006124[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_phy_rdlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_gatelvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_wrlvl_inc_mode = 0x0 + // .. .. ==> 0XF8006124[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_tx = 0x0 + // .. .. ==> 0XF8006124[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_board_lpbk_rx = 0x0 + // .. .. ==> 0XF8006124[5:5] = 0x00000000U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. .. reg_phy_bist_shift_dq = 0x0 + // .. .. ==> 0XF8006124[14:6] = 0x00000000U + // .. .. ==> MASK : 0x00007FC0U VAL : 0x00000000U + // .. .. reg_phy_bist_err_clr = 0x0 + // .. .. ==> 0XF8006124[23:15] = 0x00000000U + // .. .. ==> MASK : 0x00FF8000U VAL : 0x00000000U + // .. .. reg_phy_dq_offset = 0x40 + // .. .. ==> 0XF8006124[30:24] = 0x00000040U + // .. .. ==> MASK : 0x7F000000U VAL : 0x40000000U + // .. .. + EMIT_MASKWRITE(0XF8006124, 0x7FFFFFFFU ,0x40000001U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF800612C[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF800612C[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF800612C, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006130[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006130[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006130, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006134[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006134[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006134, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_wrlvl_init_ratio = 0x0 + // .. .. ==> 0XF8006138[9:0] = 0x00000000U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000000U + // .. .. reg_phy_gatelvl_init_ratio = 0x60 + // .. .. ==> 0XF8006138[19:10] = 0x00000060U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00018000U + // .. .. + EMIT_MASKWRITE(0XF8006138, 0x000FFFFFU ,0x00018000U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006140[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006140[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006140[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006140, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006144[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006144[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006144[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006144, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF8006148[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006148[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006148[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006148, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_rd_dqs_slave_ratio = 0x35 + // .. .. ==> 0XF800614C[9:0] = 0x00000035U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000035U + // .. .. reg_phy_rd_dqs_slave_force = 0x0 + // .. .. ==> 0XF800614C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_rd_dqs_slave_delay = 0x0 + // .. .. ==> 0XF800614C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800614C, 0x000FFFFFU ,0x00000035U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006154[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006154[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006154[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006154, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006158[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006158[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006158[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006158, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF800615C[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF800615C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF800615C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800615C, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_wr_dqs_slave_ratio = 0x80 + // .. .. ==> 0XF8006160[9:0] = 0x00000080U + // .. .. ==> MASK : 0x000003FFU VAL : 0x00000080U + // .. .. reg_phy_wr_dqs_slave_force = 0x0 + // .. .. ==> 0XF8006160[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_dqs_slave_delay = 0x0 + // .. .. ==> 0XF8006160[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006160, 0x000FFFFFU ,0x00000080U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006168[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006168[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006168[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006168, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF800616C[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF800616C[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF800616C[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800616C, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006170[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006170[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006170[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006170, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_fifo_we_slave_ratio = 0xb5 + // .. .. ==> 0XF8006174[10:0] = 0x000000B5U + // .. .. ==> MASK : 0x000007FFU VAL : 0x000000B5U + // .. .. reg_phy_fifo_we_in_force = 0x0 + // .. .. ==> 0XF8006174[11:11] = 0x00000000U + // .. .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. .. reg_phy_fifo_we_in_delay = 0x0 + // .. .. ==> 0XF8006174[20:12] = 0x00000000U + // .. .. ==> MASK : 0x001FF000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006174, 0x001FFFFFU ,0x000000B5U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF800617C[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF800617C[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF800617C[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800617C, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006180[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006180[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006180[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006180, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006184[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006184[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006184[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006184, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_wr_data_slave_ratio = 0xc0 + // .. .. ==> 0XF8006188[9:0] = 0x000000C0U + // .. .. ==> MASK : 0x000003FFU VAL : 0x000000C0U + // .. .. reg_phy_wr_data_slave_force = 0x0 + // .. .. ==> 0XF8006188[10:10] = 0x00000000U + // .. .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. .. reg_phy_wr_data_slave_delay = 0x0 + // .. .. ==> 0XF8006188[19:11] = 0x00000000U + // .. .. ==> MASK : 0x000FF800U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006188, 0x000FFFFFU ,0x000000C0U), + // .. .. reg_phy_loopback = 0x0 + // .. .. ==> 0XF8006190[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_phy_bl2 = 0x0 + // .. .. ==> 0XF8006190[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_phy_at_spd_atpg = 0x0 + // .. .. ==> 0XF8006190[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_phy_bist_enable = 0x0 + // .. .. ==> 0XF8006190[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. reg_phy_bist_force_err = 0x0 + // .. .. ==> 0XF8006190[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. reg_phy_bist_mode = 0x0 + // .. .. ==> 0XF8006190[6:5] = 0x00000000U + // .. .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. .. reg_phy_invert_clkout = 0x1 + // .. .. ==> 0XF8006190[7:7] = 0x00000001U + // .. .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. .. reg_phy_all_dq_mpr_rd_resp = 0x0 + // .. .. ==> 0XF8006190[8:8] = 0x00000000U + // .. .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. .. reg_phy_sel_logic = 0x0 + // .. .. ==> 0XF8006190[9:9] = 0x00000000U + // .. .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_ratio = 0x100 + // .. .. ==> 0XF8006190[19:10] = 0x00000100U + // .. .. ==> MASK : 0x000FFC00U VAL : 0x00040000U + // .. .. reg_phy_ctrl_slave_force = 0x0 + // .. .. ==> 0XF8006190[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_delay = 0x0 + // .. .. ==> 0XF8006190[27:21] = 0x00000000U + // .. .. ==> MASK : 0x0FE00000U VAL : 0x00000000U + // .. .. reg_phy_use_rank0_delays = 0x1 + // .. .. ==> 0XF8006190[28:28] = 0x00000001U + // .. .. ==> MASK : 0x10000000U VAL : 0x10000000U + // .. .. reg_phy_lpddr = 0x0 + // .. .. ==> 0XF8006190[29:29] = 0x00000000U + // .. .. ==> MASK : 0x20000000U VAL : 0x00000000U + // .. .. reg_phy_cmd_latency = 0x0 + // .. .. ==> 0XF8006190[30:30] = 0x00000000U + // .. .. ==> MASK : 0x40000000U VAL : 0x00000000U + // .. .. reg_phy_int_lpbk = 0x0 + // .. .. ==> 0XF8006190[31:31] = 0x00000000U + // .. .. ==> MASK : 0x80000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006190, 0xFFFFFFFFU ,0x10040080U), + // .. .. reg_phy_wr_rl_delay = 0x2 + // .. .. ==> 0XF8006194[4:0] = 0x00000002U + // .. .. ==> MASK : 0x0000001FU VAL : 0x00000002U + // .. .. reg_phy_rd_rl_delay = 0x4 + // .. .. ==> 0XF8006194[9:5] = 0x00000004U + // .. .. ==> MASK : 0x000003E0U VAL : 0x00000080U + // .. .. reg_phy_dll_lock_diff = 0xf + // .. .. ==> 0XF8006194[13:10] = 0x0000000FU + // .. .. ==> MASK : 0x00003C00U VAL : 0x00003C00U + // .. .. reg_phy_use_wr_level = 0x1 + // .. .. ==> 0XF8006194[14:14] = 0x00000001U + // .. .. ==> MASK : 0x00004000U VAL : 0x00004000U + // .. .. reg_phy_use_rd_dqs_gate_level = 0x1 + // .. .. ==> 0XF8006194[15:15] = 0x00000001U + // .. .. ==> MASK : 0x00008000U VAL : 0x00008000U + // .. .. reg_phy_use_rd_data_eye_level = 0x1 + // .. .. ==> 0XF8006194[16:16] = 0x00000001U + // .. .. ==> MASK : 0x00010000U VAL : 0x00010000U + // .. .. reg_phy_dis_calib_rst = 0x0 + // .. .. ==> 0XF8006194[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_phy_ctrl_slave_delay = 0x0 + // .. .. ==> 0XF8006194[19:18] = 0x00000000U + // .. .. ==> MASK : 0x000C0000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006194, 0x000FFFFFU ,0x0001FC82U), + // .. .. reg_arb_page_addr_mask = 0x0 + // .. .. ==> 0XF8006204[31:0] = 0x00000000U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006204, 0xFFFFFFFFU ,0x00000000U), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006208[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006208[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006208[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006208[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF8006208[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF8006208, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF800620C[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF800620C[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF800620C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF800620C[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF800620C[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF800620C, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006210[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006210[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006210[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006210[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF8006210[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF8006210, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_wr_portn = 0x3ff + // .. .. ==> 0XF8006214[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_wr_portn = 0x0 + // .. .. ==> 0XF8006214[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_wr_portn = 0x0 + // .. .. ==> 0XF8006214[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_wr_portn = 0x0 + // .. .. ==> 0XF8006214[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_dis_rmw_portn = 0x1 + // .. .. ==> 0XF8006214[19:19] = 0x00000001U + // .. .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. .. + EMIT_MASKWRITE(0XF8006214, 0x000F03FFU ,0x000803FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006218[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006218[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006218[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006218[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006218[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006218, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF800621C[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF800621C[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF800621C[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF800621C[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF800621C[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF800621C, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006220[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006220[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006220[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006220[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006220[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006220, 0x000F03FFU ,0x000003FFU), + // .. .. reg_arb_pri_rd_portn = 0x3ff + // .. .. ==> 0XF8006224[9:0] = 0x000003FFU + // .. .. ==> MASK : 0x000003FFU VAL : 0x000003FFU + // .. .. reg_arb_disable_aging_rd_portn = 0x0 + // .. .. ==> 0XF8006224[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. reg_arb_disable_urgent_rd_portn = 0x0 + // .. .. ==> 0XF8006224[17:17] = 0x00000000U + // .. .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. .. reg_arb_dis_page_match_rd_portn = 0x0 + // .. .. ==> 0XF8006224[18:18] = 0x00000000U + // .. .. ==> MASK : 0x00040000U VAL : 0x00000000U + // .. .. reg_arb_set_hpr_rd_portn = 0x0 + // .. .. ==> 0XF8006224[19:19] = 0x00000000U + // .. .. ==> MASK : 0x00080000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006224, 0x000F03FFU ,0x000003FFU), + // .. .. reg_ddrc_lpddr2 = 0x0 + // .. .. ==> 0XF80062A8[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. reg_ddrc_per_bank_refresh = 0x0 + // .. .. ==> 0XF80062A8[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_derate_enable = 0x0 + // .. .. ==> 0XF80062A8[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. reg_ddrc_mr4_margin = 0x0 + // .. .. ==> 0XF80062A8[11:4] = 0x00000000U + // .. .. ==> MASK : 0x00000FF0U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80062A8, 0x00000FF7U ,0x00000000U), + // .. .. reg_ddrc_mr4_read_interval = 0x0 + // .. .. ==> 0XF80062AC[31:0] = 0x00000000U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF80062AC, 0xFFFFFFFFU ,0x00000000U), + // .. .. reg_ddrc_min_stable_clock_x1 = 0x5 + // .. .. ==> 0XF80062B0[3:0] = 0x00000005U + // .. .. ==> MASK : 0x0000000FU VAL : 0x00000005U + // .. .. reg_ddrc_idle_after_reset_x32 = 0x12 + // .. .. ==> 0XF80062B0[11:4] = 0x00000012U + // .. .. ==> MASK : 0x00000FF0U VAL : 0x00000120U + // .. .. reg_ddrc_t_mrw = 0x5 + // .. .. ==> 0XF80062B0[21:12] = 0x00000005U + // .. .. ==> MASK : 0x003FF000U VAL : 0x00005000U + // .. .. + EMIT_MASKWRITE(0XF80062B0, 0x003FFFFFU ,0x00005125U), + // .. .. reg_ddrc_max_auto_init_x1024 = 0xa8 + // .. .. ==> 0XF80062B4[7:0] = 0x000000A8U + // .. .. ==> MASK : 0x000000FFU VAL : 0x000000A8U + // .. .. reg_ddrc_dev_zqinit_x32 = 0x12 + // .. .. ==> 0XF80062B4[17:8] = 0x00000012U + // .. .. ==> MASK : 0x0003FF00U VAL : 0x00001200U + // .. .. + EMIT_MASKWRITE(0XF80062B4, 0x0003FFFFU ,0x000012A8U), + // .. .. START: POLL ON DCI STATUS + // .. .. DONE = 1 + // .. .. ==> 0XF8000B74[13:13] = 0x00000001U + // .. .. ==> MASK : 0x00002000U VAL : 0x00002000U + // .. .. + EMIT_MASKPOLL(0XF8000B74, 0x00002000U), + // .. .. FINISH: POLL ON DCI STATUS + // .. .. START: UNLOCK DDR + // .. .. reg_ddrc_soft_rstb = 0x1 + // .. .. ==> 0XF8006000[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. reg_ddrc_powerdown_en = 0x0 + // .. .. ==> 0XF8006000[1:1] = 0x00000000U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. .. reg_ddrc_data_bus_width = 0x0 + // .. .. ==> 0XF8006000[3:2] = 0x00000000U + // .. .. ==> MASK : 0x0000000CU VAL : 0x00000000U + // .. .. reg_ddrc_burst8_refresh = 0x0 + // .. .. ==> 0XF8006000[6:4] = 0x00000000U + // .. .. ==> MASK : 0x00000070U VAL : 0x00000000U + // .. .. reg_ddrc_rdwr_idle_gap = 1 + // .. .. ==> 0XF8006000[13:7] = 0x00000001U + // .. .. ==> MASK : 0x00003F80U VAL : 0x00000080U + // .. .. reg_ddrc_dis_rd_bypass = 0x0 + // .. .. ==> 0XF8006000[14:14] = 0x00000000U + // .. .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_act_bypass = 0x0 + // .. .. ==> 0XF8006000[15:15] = 0x00000000U + // .. .. ==> MASK : 0x00008000U VAL : 0x00000000U + // .. .. reg_ddrc_dis_auto_refresh = 0x0 + // .. .. ==> 0XF8006000[16:16] = 0x00000000U + // .. .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8006000, 0x0001FFFFU ,0x00000081U), + // .. .. FINISH: UNLOCK DDR + // .. .. START: CHECK DDR STATUS + // .. .. ddrc_reg_operating_mode = 1 + // .. .. ==> 0XF8006054[2:0] = 0x00000001U + // .. .. ==> MASK : 0x00000007U VAL : 0x00000001U + // .. .. + EMIT_MASKPOLL(0XF8006054, 0x00000007U), + // .. .. FINISH: CHECK DDR STATUS + // .. FINISH: DDR INITIALIZATION + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_mio_init_data_1_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: OCM REMAPPING + // .. FINISH: OCM REMAPPING + // .. START: DDRIOB SETTINGS + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B40[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B40[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B40[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B40[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCR_TYPE = 0x0 + // .. ==> 0XF8000B40[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B40[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B40[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B40[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B40[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B40, 0x00000FFFU ,0x00000600U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B44[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B44[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B44[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B44[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCR_TYPE = 0x0 + // .. ==> 0XF8000B44[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B44[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B44[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B44[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B44[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B44, 0x00000FFFU ,0x00000600U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B48[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x1 + // .. ==> 0XF8000B48[2:1] = 0x00000001U + // .. ==> MASK : 0x00000006U VAL : 0x00000002U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B48[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B48[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B48[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B48[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B48[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B48[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B48[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B48, 0x00000FFFU ,0x00000672U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B4C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x1 + // .. ==> 0XF8000B4C[2:1] = 0x00000001U + // .. ==> MASK : 0x00000006U VAL : 0x00000002U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B4C[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B4C[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B4C[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B4C[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B4C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B4C[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B4C[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B4C, 0x00000FFFU ,0x00000672U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B50[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x2 + // .. ==> 0XF8000B50[2:1] = 0x00000002U + // .. ==> MASK : 0x00000006U VAL : 0x00000004U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B50[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B50[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B50[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B50[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B50[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B50[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B50[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B50, 0x00000FFFU ,0x00000674U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B54[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x2 + // .. ==> 0XF8000B54[2:1] = 0x00000002U + // .. ==> MASK : 0x00000006U VAL : 0x00000004U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B54[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x1 + // .. ==> 0XF8000B54[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. DCR_TYPE = 0x3 + // .. ==> 0XF8000B54[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. IBUF_DISABLE_MODE = 0 + // .. ==> 0XF8000B54[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0 + // .. ==> 0XF8000B54[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B54[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B54[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B54, 0x00000FFFU ,0x00000674U), + // .. INP_POWER = 0x0 + // .. ==> 0XF8000B58[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. INP_TYPE = 0x0 + // .. ==> 0XF8000B58[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. DCI_UPDATE = 0x0 + // .. ==> 0XF8000B58[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. TERM_EN = 0x0 + // .. ==> 0XF8000B58[4:4] = 0x00000000U + // .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. DCR_TYPE = 0x0 + // .. ==> 0XF8000B58[6:5] = 0x00000000U + // .. ==> MASK : 0x00000060U VAL : 0x00000000U + // .. IBUF_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B58[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. TERM_DISABLE_MODE = 0x0 + // .. ==> 0XF8000B58[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. OUTPUT_EN = 0x3 + // .. ==> 0XF8000B58[10:9] = 0x00000003U + // .. ==> MASK : 0x00000600U VAL : 0x00000600U + // .. PULLUP_EN = 0x0 + // .. ==> 0XF8000B58[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B58, 0x00000FFFU ,0x00000600U), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B5C[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B5C[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x3 + // .. ==> 0XF8000B5C[18:14] = 0x00000003U + // .. ==> MASK : 0x0007C000U VAL : 0x0000C000U + // .. SLEW_N = 0x3 + // .. ==> 0XF8000B5C[23:19] = 0x00000003U + // .. ==> MASK : 0x00F80000U VAL : 0x00180000U + // .. GTL = 0x0 + // .. ==> 0XF8000B5C[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B5C[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B5C, 0xFFFFFFFFU ,0x0018C61CU), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B60[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B60[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x6 + // .. ==> 0XF8000B60[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. SLEW_N = 0x1f + // .. ==> 0XF8000B60[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. GTL = 0x0 + // .. ==> 0XF8000B60[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B60[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B60, 0xFFFFFFFFU ,0x00F9861CU), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B64[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B64[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x6 + // .. ==> 0XF8000B64[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. SLEW_N = 0x1f + // .. ==> 0XF8000B64[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. GTL = 0x0 + // .. ==> 0XF8000B64[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B64[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B64, 0xFFFFFFFFU ,0x00F9861CU), + // .. DRIVE_P = 0x1c + // .. ==> 0XF8000B68[6:0] = 0x0000001CU + // .. ==> MASK : 0x0000007FU VAL : 0x0000001CU + // .. DRIVE_N = 0xc + // .. ==> 0XF8000B68[13:7] = 0x0000000CU + // .. ==> MASK : 0x00003F80U VAL : 0x00000600U + // .. SLEW_P = 0x6 + // .. ==> 0XF8000B68[18:14] = 0x00000006U + // .. ==> MASK : 0x0007C000U VAL : 0x00018000U + // .. SLEW_N = 0x1f + // .. ==> 0XF8000B68[23:19] = 0x0000001FU + // .. ==> MASK : 0x00F80000U VAL : 0x00F80000U + // .. GTL = 0x0 + // .. ==> 0XF8000B68[26:24] = 0x00000000U + // .. ==> MASK : 0x07000000U VAL : 0x00000000U + // .. RTERM = 0x0 + // .. ==> 0XF8000B68[31:27] = 0x00000000U + // .. ==> MASK : 0xF8000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B68, 0xFFFFFFFFU ,0x00F9861CU), + // .. VREF_INT_EN = 0x0 + // .. ==> 0XF8000B6C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. VREF_SEL = 0x0 + // .. ==> 0XF8000B6C[4:1] = 0x00000000U + // .. ==> MASK : 0x0000001EU VAL : 0x00000000U + // .. VREF_EXT_EN = 0x3 + // .. ==> 0XF8000B6C[6:5] = 0x00000003U + // .. ==> MASK : 0x00000060U VAL : 0x00000060U + // .. VREF_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[8:7] = 0x00000000U + // .. ==> MASK : 0x00000180U VAL : 0x00000000U + // .. REFIO_EN = 0x1 + // .. ==> 0XF8000B6C[9:9] = 0x00000001U + // .. ==> MASK : 0x00000200U VAL : 0x00000200U + // .. REFIO_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DRST_B_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. CKE_PULLUP_EN = 0x0 + // .. ==> 0XF8000B6C[14:14] = 0x00000000U + // .. ==> MASK : 0x00004000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000B6C, 0x000073FFU ,0x00000260U), + // .. .. START: ASSERT RESET + // .. .. RESET = 1 + // .. .. ==> 0XF8000B70[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x00000021U ,0x00000021U), + // .. .. FINISH: ASSERT RESET + // .. .. START: DEASSERT RESET + // .. .. RESET = 0 + // .. .. ==> 0XF8000B70[0:0] = 0x00000000U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. .. VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x00000021U ,0x00000020U), + // .. .. FINISH: DEASSERT RESET + // .. .. RESET = 0x1 + // .. .. ==> 0XF8000B70[0:0] = 0x00000001U + // .. .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. .. ENABLE = 0x1 + // .. .. ==> 0XF8000B70[1:1] = 0x00000001U + // .. .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. .. VRP_TRI = 0x0 + // .. .. ==> 0XF8000B70[2:2] = 0x00000000U + // .. .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. .. VRN_TRI = 0x0 + // .. .. ==> 0XF8000B70[3:3] = 0x00000000U + // .. .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. .. VRP_OUT = 0x0 + // .. .. ==> 0XF8000B70[4:4] = 0x00000000U + // .. .. ==> MASK : 0x00000010U VAL : 0x00000000U + // .. .. VRN_OUT = 0x1 + // .. .. ==> 0XF8000B70[5:5] = 0x00000001U + // .. .. ==> MASK : 0x00000020U VAL : 0x00000020U + // .. .. NREF_OPT1 = 0x0 + // .. .. ==> 0XF8000B70[7:6] = 0x00000000U + // .. .. ==> MASK : 0x000000C0U VAL : 0x00000000U + // .. .. NREF_OPT2 = 0x0 + // .. .. ==> 0XF8000B70[10:8] = 0x00000000U + // .. .. ==> MASK : 0x00000700U VAL : 0x00000000U + // .. .. NREF_OPT4 = 0x1 + // .. .. ==> 0XF8000B70[13:11] = 0x00000001U + // .. .. ==> MASK : 0x00003800U VAL : 0x00000800U + // .. .. PREF_OPT1 = 0x0 + // .. .. ==> 0XF8000B70[16:14] = 0x00000000U + // .. .. ==> MASK : 0x0001C000U VAL : 0x00000000U + // .. .. PREF_OPT2 = 0x0 + // .. .. ==> 0XF8000B70[19:17] = 0x00000000U + // .. .. ==> MASK : 0x000E0000U VAL : 0x00000000U + // .. .. UPDATE_CONTROL = 0x0 + // .. .. ==> 0XF8000B70[20:20] = 0x00000000U + // .. .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. .. INIT_COMPLETE = 0x0 + // .. .. ==> 0XF8000B70[21:21] = 0x00000000U + // .. .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. .. TST_CLK = 0x0 + // .. .. ==> 0XF8000B70[22:22] = 0x00000000U + // .. .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. .. TST_HLN = 0x0 + // .. .. ==> 0XF8000B70[23:23] = 0x00000000U + // .. .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. .. TST_HLP = 0x0 + // .. .. ==> 0XF8000B70[24:24] = 0x00000000U + // .. .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. .. TST_RST = 0x0 + // .. .. ==> 0XF8000B70[25:25] = 0x00000000U + // .. .. ==> MASK : 0x02000000U VAL : 0x00000000U + // .. .. INT_DCI_EN = 0x0 + // .. .. ==> 0XF8000B70[26:26] = 0x00000000U + // .. .. ==> MASK : 0x04000000U VAL : 0x00000000U + // .. .. + EMIT_MASKWRITE(0XF8000B70, 0x07FFFFFFU ,0x00000823U), + // .. FINISH: DDRIOB SETTINGS + // .. START: MIO PROGRAMMING + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000700[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000700[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000700[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000700[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000700[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000700[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000700[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000700[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000700[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000700, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000704[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000704[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000704[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000704[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000704[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000704[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000704[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000704[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000704[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000704, 0x00003FFFU ,0x00001602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000708[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000708[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000708[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000708[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000708[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000708[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000708[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000708[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000708[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000708, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800070C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF800070C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800070C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800070C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800070C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800070C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800070C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF800070C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF800070C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800070C, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000710[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000710[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000710[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000710[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000710[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000710[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000710[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000710[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000710[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000710, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000714[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000714[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000714[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000714[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000714[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000714[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000714[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000714[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000714[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000714, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000718[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000718[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000718[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000718[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000718[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000718[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000718[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000718[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000718[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000718, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800071C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800071C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800071C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800071C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800071C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800071C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800071C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF800071C[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF800071C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800071C, 0x00003FFFU ,0x00000600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000720[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000720[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000720[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000720[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000720[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000720[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000720[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 0 + // .. ==> 0XF8000720[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000720[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000720, 0x00003FFFU ,0x00000602U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000724[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000724[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000724[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000724[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000724[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000724[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000724[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000724[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000724[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000724, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000728[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000728[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000728[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000728[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000728[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000728[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000728[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000728[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000728[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000728, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800072C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800072C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800072C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800072C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800072C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800072C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800072C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF800072C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800072C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800072C, 0x00003FFFU ,0x00001600U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000730[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000730[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000730[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000730[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 2 + // .. ==> 0XF8000730[7:5] = 0x00000002U + // .. ==> MASK : 0x000000E0U VAL : 0x00000040U + // .. Speed = 0 + // .. ==> 0XF8000730[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000730[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000730[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000730[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000730, 0x00003FFFU ,0x00001640U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000734[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000734[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000734[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000734[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 2 + // .. ==> 0XF8000734[7:5] = 0x00000002U + // .. ==> MASK : 0x000000E0U VAL : 0x00000040U + // .. Speed = 0 + // .. ==> 0XF8000734[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000734[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000734[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000734[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000734, 0x00003FFFU ,0x00001640U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000738[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000738[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF8000738[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000738[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 1 + // .. ==> 0XF8000738[7:5] = 0x00000001U + // .. ==> MASK : 0x000000E0U VAL : 0x00000020U + // .. Speed = 0 + // .. ==> 0XF8000738[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF8000738[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF8000738[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000738[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000738, 0x00003FFFU ,0x00001621U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800073C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800073C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF800073C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800073C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 1 + // .. ==> 0XF800073C[7:5] = 0x00000001U + // .. ==> MASK : 0x000000E0U VAL : 0x00000020U + // .. Speed = 0 + // .. ==> 0XF800073C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 3 + // .. ==> 0XF800073C[11:9] = 0x00000003U + // .. ==> MASK : 0x00000E00U VAL : 0x00000600U + // .. PULLUP = 1 + // .. ==> 0XF800073C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800073C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800073C, 0x00003FFFU ,0x00001620U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000740[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000740[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000740[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000740[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000740[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000740[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000740[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000740[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000740[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000740, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000744[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000744[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000744[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000744[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000744[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000744[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000744[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000744[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000744[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000744, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000748[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000748[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000748[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000748[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000748[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000748[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000748[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000748[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000748[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000748, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800074C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF800074C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800074C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800074C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800074C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800074C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800074C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800074C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800074C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800074C, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000750[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000750[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000750[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000750[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000750[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000750[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000750[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000750[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000750[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000750, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000754[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 1 + // .. ==> 0XF8000754[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000754[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000754[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000754[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000754[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000754[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000754[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000754[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000754, 0x00003FFFU ,0x00001202U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000758[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000758[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000758[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000758[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000758[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000758[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000758[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000758[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000758[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000758, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800075C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF800075C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800075C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800075C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800075C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800075C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800075C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800075C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800075C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800075C, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000760[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000760[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000760[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000760[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000760[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000760[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000760[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000760[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000760[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000760, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000764[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000764[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000764[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000764[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000764[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000764[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000764[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000764[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000764[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000764, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000768[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF8000768[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF8000768[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF8000768[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000768[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000768[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000768[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000768[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000768[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000768, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800076C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 1 + // .. ==> 0XF800076C[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. L1_SEL = 0 + // .. ==> 0XF800076C[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF800076C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800076C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800076C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800076C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800076C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800076C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800076C, 0x00003FFFU ,0x00001203U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000770[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000770[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000770[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000770[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000770[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000770[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000770[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000770[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000770[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000770, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000774[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000774[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000774[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000774[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000774[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000774[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000774[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000774[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000774[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000774, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000778[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000778[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000778[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000778[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000778[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000778[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000778[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000778[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000778[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000778, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF800077C[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF800077C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800077C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800077C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800077C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800077C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800077C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800077C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800077C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800077C, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000780[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000780[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000780[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000780[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000780[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000780[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000780[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000780[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000780[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000780, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000784[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000784[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000784[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000784[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000784[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000784[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000784[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000784[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000784[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000784, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000788[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000788[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000788[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000788[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000788[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000788[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000788[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000788[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000788[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000788, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800078C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800078C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800078C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800078C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800078C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800078C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800078C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800078C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800078C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800078C, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF8000790[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF8000790[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000790[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000790[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000790[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000790[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000790[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000790[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000790[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000790, 0x00003FFFU ,0x00001205U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000794[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000794[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000794[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000794[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000794[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000794[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000794[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000794[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000794[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000794, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF8000798[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF8000798[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF8000798[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF8000798[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF8000798[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF8000798[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF8000798[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF8000798[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF8000798[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000798, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF800079C[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF800079C[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 1 + // .. ==> 0XF800079C[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. L2_SEL = 0 + // .. ==> 0XF800079C[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF800079C[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF800079C[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF800079C[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF800079C[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF800079C[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF800079C, 0x00003FFFU ,0x00001204U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A4, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007A8[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007A8[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007A8[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007A8[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007A8[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007A8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007A8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007A8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007A8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007A8, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007AC[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007AC[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007AC[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007AC[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007AC[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007AC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007AC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007AC[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007AC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007AC, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007B0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007B0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007B0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007B0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007B0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007B0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007B4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007B4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007B4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007B4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007B4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007B4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B4, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007B8[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. Speed = 0 + // .. ==> 0XF80007B8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007B8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007B8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007B8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007B8, 0x00003F01U ,0x00001201U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007BC[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. Speed = 0 + // .. ==> 0XF80007BC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007BC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007BC[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007BC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007BC, 0x00003F01U ,0x00001201U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007C0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007C0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 7 + // .. ==> 0XF80007C0[7:5] = 0x00000007U + // .. ==> MASK : 0x000000E0U VAL : 0x000000E0U + // .. Speed = 0 + // .. ==> 0XF80007C0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C0, 0x00003FFFU ,0x000012E0U), + // .. TRI_ENABLE = 1 + // .. ==> 0XF80007C4[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. L0_SEL = 0 + // .. ==> 0XF80007C4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 7 + // .. ==> 0XF80007C4[7:5] = 0x00000007U + // .. ==> MASK : 0x000000E0U VAL : 0x000000E0U + // .. Speed = 0 + // .. ==> 0XF80007C4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C4, 0x00003FFFU ,0x000012E1U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007C8[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007C8[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007C8[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007C8[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF80007C8[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF80007C8[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007C8[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007C8[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007C8[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007C8, 0x00003FFFU ,0x00001200U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007CC[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007CC[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007CC[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007CC[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 0 + // .. ==> 0XF80007CC[7:5] = 0x00000000U + // .. ==> MASK : 0x000000E0U VAL : 0x00000000U + // .. Speed = 0 + // .. ==> 0XF80007CC[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007CC[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 0 + // .. ==> 0XF80007CC[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007CC[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007CC, 0x00003FFFU ,0x00000200U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007D0[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007D0[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007D0[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007D0[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007D0[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007D0[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007D0[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007D0[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007D0[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007D0, 0x00003FFFU ,0x00001280U), + // .. TRI_ENABLE = 0 + // .. ==> 0XF80007D4[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. L0_SEL = 0 + // .. ==> 0XF80007D4[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. L1_SEL = 0 + // .. ==> 0XF80007D4[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. L2_SEL = 0 + // .. ==> 0XF80007D4[4:3] = 0x00000000U + // .. ==> MASK : 0x00000018U VAL : 0x00000000U + // .. L3_SEL = 4 + // .. ==> 0XF80007D4[7:5] = 0x00000004U + // .. ==> MASK : 0x000000E0U VAL : 0x00000080U + // .. Speed = 0 + // .. ==> 0XF80007D4[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. IO_Type = 1 + // .. ==> 0XF80007D4[11:9] = 0x00000001U + // .. ==> MASK : 0x00000E00U VAL : 0x00000200U + // .. PULLUP = 1 + // .. ==> 0XF80007D4[12:12] = 0x00000001U + // .. ==> MASK : 0x00001000U VAL : 0x00001000U + // .. DisableRcvr = 0 + // .. ==> 0XF80007D4[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF80007D4, 0x00003FFFU ,0x00001280U), + // .. SDIO0_WP_SEL = 47 + // .. ==> 0XF8000830[5:0] = 0x0000002FU + // .. ==> MASK : 0x0000003FU VAL : 0x0000002FU + // .. SDIO0_CD_SEL = 46 + // .. ==> 0XF8000830[21:16] = 0x0000002EU + // .. ==> MASK : 0x003F0000U VAL : 0x002E0000U + // .. + EMIT_MASKWRITE(0XF8000830, 0x003F003FU ,0x002E002FU), + // .. FINISH: MIO PROGRAMMING + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_peripherals_init_data_1_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: DDR TERM/IBUF_DISABLE_MODE SETTINGS + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B48[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B48[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B48, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B4C[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B4C[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B4C, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B50[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B50[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B50, 0x00000180U ,0x00000180U), + // .. IBUF_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B54[7:7] = 0x00000001U + // .. ==> MASK : 0x00000080U VAL : 0x00000080U + // .. TERM_DISABLE_MODE = 0x1 + // .. ==> 0XF8000B54[8:8] = 0x00000001U + // .. ==> MASK : 0x00000100U VAL : 0x00000100U + // .. + EMIT_MASKWRITE(0XF8000B54, 0x00000180U ,0x00000180U), + // .. FINISH: DDR TERM/IBUF_DISABLE_MODE SETTINGS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // .. START: SRAM/NOR SET OPMODE + // .. FINISH: SRAM/NOR SET OPMODE + // .. START: UART REGISTERS + // .. BDIV = 0x6 + // .. ==> 0XE0001034[7:0] = 0x00000006U + // .. ==> MASK : 0x000000FFU VAL : 0x00000006U + // .. + EMIT_MASKWRITE(0XE0001034, 0x000000FFU ,0x00000006U), + // .. CD = 0x7c + // .. ==> 0XE0001018[15:0] = 0x0000007CU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000007CU + // .. + EMIT_MASKWRITE(0XE0001018, 0x0000FFFFU ,0x0000007CU), + // .. STPBRK = 0x0 + // .. ==> 0XE0001000[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. STTBRK = 0x0 + // .. ==> 0XE0001000[7:7] = 0x00000000U + // .. ==> MASK : 0x00000080U VAL : 0x00000000U + // .. RSTTO = 0x0 + // .. ==> 0XE0001000[6:6] = 0x00000000U + // .. ==> MASK : 0x00000040U VAL : 0x00000000U + // .. TXDIS = 0x0 + // .. ==> 0XE0001000[5:5] = 0x00000000U + // .. ==> MASK : 0x00000020U VAL : 0x00000000U + // .. TXEN = 0x1 + // .. ==> 0XE0001000[4:4] = 0x00000001U + // .. ==> MASK : 0x00000010U VAL : 0x00000010U + // .. RXDIS = 0x0 + // .. ==> 0XE0001000[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. RXEN = 0x1 + // .. ==> 0XE0001000[2:2] = 0x00000001U + // .. ==> MASK : 0x00000004U VAL : 0x00000004U + // .. TXRES = 0x1 + // .. ==> 0XE0001000[1:1] = 0x00000001U + // .. ==> MASK : 0x00000002U VAL : 0x00000002U + // .. RXRES = 0x1 + // .. ==> 0XE0001000[0:0] = 0x00000001U + // .. ==> MASK : 0x00000001U VAL : 0x00000001U + // .. + EMIT_MASKWRITE(0XE0001000, 0x000001FFU ,0x00000017U), + // .. IRMODE = 0x0 + // .. ==> 0XE0001004[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. UCLKEN = 0x0 + // .. ==> 0XE0001004[10:10] = 0x00000000U + // .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. CHMODE = 0x0 + // .. ==> 0XE0001004[9:8] = 0x00000000U + // .. ==> MASK : 0x00000300U VAL : 0x00000000U + // .. NBSTOP = 0x0 + // .. ==> 0XE0001004[7:6] = 0x00000000U + // .. ==> MASK : 0x000000C0U VAL : 0x00000000U + // .. PAR = 0x4 + // .. ==> 0XE0001004[5:3] = 0x00000004U + // .. ==> MASK : 0x00000038U VAL : 0x00000020U + // .. CHRL = 0x0 + // .. ==> 0XE0001004[2:1] = 0x00000000U + // .. ==> MASK : 0x00000006U VAL : 0x00000000U + // .. CLKS = 0x0 + // .. ==> 0XE0001004[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XE0001004, 0x00000FFFU ,0x00000020U), + // .. FINISH: UART REGISTERS + // .. START: QSPI REGISTERS + // .. Holdb_dr = 1 + // .. ==> 0XE000D000[19:19] = 0x00000001U + // .. ==> MASK : 0x00080000U VAL : 0x00080000U + // .. + EMIT_MASKWRITE(0XE000D000, 0x00080000U ,0x00080000U), + // .. FINISH: QSPI REGISTERS + // .. START: PL POWER ON RESET REGISTERS + // .. PCFG_POR_CNT_4K = 0 + // .. ==> 0XF8007000[29:29] = 0x00000000U + // .. ==> MASK : 0x20000000U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8007000, 0x20000000U ,0x00000000U), + // .. FINISH: PL POWER ON RESET REGISTERS + // .. START: SMC TIMING CALCULATION REGISTER UPDATE + // .. .. START: NAND SET CYCLE + // .. .. FINISH: NAND SET CYCLE + // .. .. START: OPMODE + // .. .. FINISH: OPMODE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: SRAM/NOR CS0 SET CYCLE + // .. .. FINISH: SRAM/NOR CS0 SET CYCLE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: NOR CS0 BASE ADDRESS + // .. .. FINISH: NOR CS0 BASE ADDRESS + // .. .. START: SRAM/NOR CS1 SET CYCLE + // .. .. FINISH: SRAM/NOR CS1 SET CYCLE + // .. .. START: DIRECT COMMAND + // .. .. FINISH: DIRECT COMMAND + // .. .. START: NOR CS1 BASE ADDRESS + // .. .. FINISH: NOR CS1 BASE ADDRESS + // .. .. START: USB RESET + // .. .. .. START: USB0 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. DIRECTION_1 = 0x80000 + // .. .. .. .. ==> 0XE000A244[21:0] = 0x00080000U + // .. .. .. .. ==> MASK : 0x003FFFFFU VAL : 0x00080000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A244, 0x003FFFFFU ,0x00080000U), + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x8 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000008U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000008U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370008U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. OP_ENABLE_1 = 0x80000 + // .. .. .. .. ==> 0XE000A248[21:0] = 0x00080000U + // .. .. .. .. ==> MASK : 0x003FFFFFU VAL : 0x00080000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A248, 0x003FFFFFU ,0x00080000U), + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x0 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000000U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000000U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370000U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. MASK_1_MSW = 0x37 + // .. .. .. .. ==> 0XE000A00C[21:16] = 0x00000037U + // .. .. .. .. ==> MASK : 0x003F0000U VAL : 0x00370000U + // .. .. .. .. DATA_1_MSW = 0x8 + // .. .. .. .. ==> 0XE000A00C[5:0] = 0x00000008U + // .. .. .. .. ==> MASK : 0x0000003FU VAL : 0x00000008U + // .. .. .. .. + EMIT_MASKWRITE(0XE000A00C, 0x003F003FU ,0x00370008U), + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: USB0 RESET + // .. .. .. START: USB1 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: USB1 RESET + // .. .. FINISH: USB RESET + // .. .. START: ENET RESET + // .. .. .. START: ENET0 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: ENET0 RESET + // .. .. .. START: ENET1 RESET + // .. .. .. .. START: DIR MODE BANK 0 + // .. .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. .. START: DIR MODE BANK 1 + // .. .. .. .. FINISH: DIR MODE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. .. .. START: OUTPUT ENABLE BANK 1 + // .. .. .. .. FINISH: OUTPUT ENABLE BANK 1 + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: ENET1 RESET + // .. .. FINISH: ENET RESET + // .. .. START: I2C RESET + // .. .. .. START: I2C0 RESET + // .. .. .. .. START: DIR MODE GPIO BANK0 + // .. .. .. .. FINISH: DIR MODE GPIO BANK0 + // .. .. .. .. START: DIR MODE GPIO BANK1 + // .. .. .. .. FINISH: DIR MODE GPIO BANK1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: I2C0 RESET + // .. .. .. START: I2C1 RESET + // .. .. .. .. START: DIR MODE GPIO BANK0 + // .. .. .. .. FINISH: DIR MODE GPIO BANK0 + // .. .. .. .. START: DIR MODE GPIO BANK1 + // .. .. .. .. FINISH: DIR MODE GPIO BANK1 + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: OUTPUT ENABLE + // .. .. .. .. FINISH: OUTPUT ENABLE + // .. .. .. .. START: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW LOW BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW LOW BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW LOW BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW LOW BANK [53:48] + // .. .. .. .. START: ADD 1 MS DELAY + // .. .. .. .. + EMIT_MASKDELAY(0XF8F00200, 1), + // .. .. .. .. FINISH: ADD 1 MS DELAY + // .. .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. .. START: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. FINISH: MASK_DATA_0_MSW HIGH BANK [31:16] + // .. .. .. .. START: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. FINISH: MASK_DATA_1_LSW HIGH BANK [47:32] + // .. .. .. .. START: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. .. FINISH: MASK_DATA_1_MSW HIGH BANK [53:48] + // .. .. .. FINISH: I2C1 RESET + // .. .. FINISH: I2C RESET + // .. .. START: NOR CHIP SELECT + // .. .. .. START: DIR MODE BANK 0 + // .. .. .. FINISH: DIR MODE BANK 0 + // .. .. .. START: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. FINISH: MASK_DATA_0_LSW HIGH BANK [15:0] + // .. .. .. START: OUTPUT ENABLE BANK 0 + // .. .. .. FINISH: OUTPUT ENABLE BANK 0 + // .. .. FINISH: NOR CHIP SELECT + // .. FINISH: SMC TIMING CALCULATION REGISTER UPDATE + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_post_config_1_0[] = { + // START: top + // .. START: SLCR SETTINGS + // .. UNLOCK_KEY = 0XDF0D + // .. ==> 0XF8000008[15:0] = 0x0000DF0DU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000DF0DU + // .. + EMIT_MASKWRITE(0XF8000008, 0x0000FFFFU ,0x0000DF0DU), + // .. FINISH: SLCR SETTINGS + // .. START: ENABLING LEVEL SHIFTER + // .. USER_INP_ICT_EN_0 = 3 + // .. ==> 0XF8000900[1:0] = 0x00000003U + // .. ==> MASK : 0x00000003U VAL : 0x00000003U + // .. USER_INP_ICT_EN_1 = 3 + // .. ==> 0XF8000900[3:2] = 0x00000003U + // .. ==> MASK : 0x0000000CU VAL : 0x0000000CU + // .. + EMIT_MASKWRITE(0XF8000900, 0x0000000FU ,0x0000000FU), + // .. FINISH: ENABLING LEVEL SHIFTER + // .. START: FPGA RESETS TO 0 + // .. reserved_3 = 0 + // .. ==> 0XF8000240[31:25] = 0x00000000U + // .. ==> MASK : 0xFE000000U VAL : 0x00000000U + // .. FPGA_ACP_RST = 0 + // .. ==> 0XF8000240[24:24] = 0x00000000U + // .. ==> MASK : 0x01000000U VAL : 0x00000000U + // .. FPGA_AXDS3_RST = 0 + // .. ==> 0XF8000240[23:23] = 0x00000000U + // .. ==> MASK : 0x00800000U VAL : 0x00000000U + // .. FPGA_AXDS2_RST = 0 + // .. ==> 0XF8000240[22:22] = 0x00000000U + // .. ==> MASK : 0x00400000U VAL : 0x00000000U + // .. FPGA_AXDS1_RST = 0 + // .. ==> 0XF8000240[21:21] = 0x00000000U + // .. ==> MASK : 0x00200000U VAL : 0x00000000U + // .. FPGA_AXDS0_RST = 0 + // .. ==> 0XF8000240[20:20] = 0x00000000U + // .. ==> MASK : 0x00100000U VAL : 0x00000000U + // .. reserved_2 = 0 + // .. ==> 0XF8000240[19:18] = 0x00000000U + // .. ==> MASK : 0x000C0000U VAL : 0x00000000U + // .. FSSW1_FPGA_RST = 0 + // .. ==> 0XF8000240[17:17] = 0x00000000U + // .. ==> MASK : 0x00020000U VAL : 0x00000000U + // .. FSSW0_FPGA_RST = 0 + // .. ==> 0XF8000240[16:16] = 0x00000000U + // .. ==> MASK : 0x00010000U VAL : 0x00000000U + // .. reserved_1 = 0 + // .. ==> 0XF8000240[15:14] = 0x00000000U + // .. ==> MASK : 0x0000C000U VAL : 0x00000000U + // .. FPGA_FMSW1_RST = 0 + // .. ==> 0XF8000240[13:13] = 0x00000000U + // .. ==> MASK : 0x00002000U VAL : 0x00000000U + // .. FPGA_FMSW0_RST = 0 + // .. ==> 0XF8000240[12:12] = 0x00000000U + // .. ==> MASK : 0x00001000U VAL : 0x00000000U + // .. FPGA_DMA3_RST = 0 + // .. ==> 0XF8000240[11:11] = 0x00000000U + // .. ==> MASK : 0x00000800U VAL : 0x00000000U + // .. FPGA_DMA2_RST = 0 + // .. ==> 0XF8000240[10:10] = 0x00000000U + // .. ==> MASK : 0x00000400U VAL : 0x00000000U + // .. FPGA_DMA1_RST = 0 + // .. ==> 0XF8000240[9:9] = 0x00000000U + // .. ==> MASK : 0x00000200U VAL : 0x00000000U + // .. FPGA_DMA0_RST = 0 + // .. ==> 0XF8000240[8:8] = 0x00000000U + // .. ==> MASK : 0x00000100U VAL : 0x00000000U + // .. reserved = 0 + // .. ==> 0XF8000240[7:4] = 0x00000000U + // .. ==> MASK : 0x000000F0U VAL : 0x00000000U + // .. FPGA3_OUT_RST = 0 + // .. ==> 0XF8000240[3:3] = 0x00000000U + // .. ==> MASK : 0x00000008U VAL : 0x00000000U + // .. FPGA2_OUT_RST = 0 + // .. ==> 0XF8000240[2:2] = 0x00000000U + // .. ==> MASK : 0x00000004U VAL : 0x00000000U + // .. FPGA1_OUT_RST = 0 + // .. ==> 0XF8000240[1:1] = 0x00000000U + // .. ==> MASK : 0x00000002U VAL : 0x00000000U + // .. FPGA0_OUT_RST = 0 + // .. ==> 0XF8000240[0:0] = 0x00000000U + // .. ==> MASK : 0x00000001U VAL : 0x00000000U + // .. + EMIT_MASKWRITE(0XF8000240, 0xFFFFFFFFU ,0x00000000U), + // .. FINISH: FPGA RESETS TO 0 + // .. START: AFI REGISTERS + // .. .. START: AFI0 REGISTERS + // .. .. FINISH: AFI0 REGISTERS + // .. .. START: AFI1 REGISTERS + // .. .. FINISH: AFI1 REGISTERS + // .. .. START: AFI2 REGISTERS + // .. .. FINISH: AFI2 REGISTERS + // .. .. START: AFI3 REGISTERS + // .. .. FINISH: AFI3 REGISTERS + // .. FINISH: AFI REGISTERS + // .. START: LOCK IT BACK + // .. LOCK_KEY = 0X767B + // .. ==> 0XF8000004[15:0] = 0x0000767BU + // .. ==> MASK : 0x0000FFFFU VAL : 0x0000767BU + // .. + EMIT_MASKWRITE(0XF8000004, 0x0000FFFFU ,0x0000767BU), + // .. FINISH: LOCK IT BACK + // FINISH: top + // + EMIT_EXIT(), + + // +}; + +unsigned long ps7_debug_1_0[] = { + // START: top + // .. START: CROSS TRIGGER CONFIGURATIONS + // .. .. START: UNLOCKING CTI REGISTERS + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8898FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8898FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8899FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8899FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. KEY = 0XC5ACCE55 + // .. .. ==> 0XF8809FB0[31:0] = 0xC5ACCE55U + // .. .. ==> MASK : 0xFFFFFFFFU VAL : 0xC5ACCE55U + // .. .. + EMIT_MASKWRITE(0XF8809FB0, 0xFFFFFFFFU ,0xC5ACCE55U), + // .. .. FINISH: UNLOCKING CTI REGISTERS + // .. .. START: ENABLING CTI MODULES AND CHANNELS + // .. .. FINISH: ENABLING CTI MODULES AND CHANNELS + // .. .. START: MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS + // .. .. FINISH: MAPPING CPU0, CPU1 AND FTM EVENTS TO CTM CHANNELS + // .. FINISH: CROSS TRIGGER CONFIGURATIONS + // FINISH: top + // + EMIT_EXIT(), + + // +}; + + +#include "xil_io.h" +#define PS7_MASK_POLL_TIME 100000000 + +char* +getPS7MessageInfo(unsigned key) { + + char* err_msg = ""; + switch (key) { + case PS7_INIT_SUCCESS: err_msg = "PS7 initialization successful"; break; + case PS7_INIT_CORRUPT: err_msg = "PS7 init Data Corrupted"; break; + case PS7_INIT_TIMEOUT: err_msg = "PS7 init mask poll timeout"; break; + case PS7_POLL_FAILED_DDR_INIT: err_msg = "Mask Poll failed for DDR Init"; break; + case PS7_POLL_FAILED_DMA: err_msg = "Mask Poll failed for PLL Init"; break; + case PS7_POLL_FAILED_PLL: err_msg = "Mask Poll failed for DMA done bit"; break; + default: err_msg = "Undefined error status"; break; + } + + return err_msg; +} + +unsigned long +ps7GetSiliconVersion () { + // Read PS version from MCTRL register [31:28] + unsigned long mask = 0xF0000000; + unsigned long *addr = (unsigned long*) 0XF8007080; + unsigned long ps_version = (*addr & mask) >> 28; + return ps_version; +} + +void mask_write (unsigned long add , unsigned long mask, unsigned long val ) { + unsigned long *addr = (unsigned long*) add; + *addr = ( val & mask ) | ( *addr & ~mask); + //xil_printf("MaskWrite : 0x%x--> 0x%x \n \r" ,add, *addr); +} + + +int mask_poll(unsigned long add , unsigned long mask ) { + volatile unsigned long *addr = (volatile unsigned long*) add; + int i = 0; + while (!(*addr & mask)) { + if (i == PS7_MASK_POLL_TIME) { + return -1; + } + i++; + } + return 1; + //xil_printf("MaskPoll : 0x%x --> 0x%x \n \r" , add, *addr); +} + +unsigned long mask_read(unsigned long add , unsigned long mask ) { + unsigned long *addr = (unsigned long*) add; + unsigned long val = (*addr & mask); + //xil_printf("MaskRead : 0x%x --> 0x%x \n \r" , add, val); + return val; +} + + + +int +ps7_config(unsigned long * ps7_config_init) +{ + unsigned long *ptr = ps7_config_init; + + unsigned long opcode; // current instruction .. + unsigned long args[16]; // no opcode has so many args ... + int numargs; // number of arguments of this instruction + int j; // general purpose index + + volatile unsigned long *addr; // some variable to make code readable + unsigned long val,mask; // some variable to make code readable + + int finish = -1 ; // loop while this is negative ! + int i = 0; // Timeout variable + + while( finish < 0 ) { + numargs = ptr[0] & 0xF; + opcode = ptr[0] >> 4; + + for( j = 0 ; j < numargs ; j ++ ) + args[j] = ptr[j+1]; + ptr += numargs + 1; + + + switch ( opcode ) { + + case OPCODE_EXIT: + finish = PS7_INIT_SUCCESS; + break; + + case OPCODE_CLEAR: + addr = (unsigned long*) args[0]; + *addr = 0; + break; + + case OPCODE_WRITE: + addr = (unsigned long*) args[0]; + val = args[1]; + *addr = val; + break; + + case OPCODE_MASKWRITE: + addr = (unsigned long*) args[0]; + mask = args[1]; + val = args[2]; + *addr = ( val & mask ) | ( *addr & ~mask); + break; + + case OPCODE_MASKPOLL: + addr = (unsigned long*) args[0]; + mask = args[1]; + i = 0; + while (!(*addr & mask)) { + if (i == PS7_MASK_POLL_TIME) { + finish = PS7_INIT_TIMEOUT; + break; + } + i++; + } + break; + case OPCODE_MASKDELAY: + addr = (unsigned long*) args[0]; + mask = args[1]; + int delay = get_number_of_cycles_for_delay(mask); + perf_reset_and_start_timer(); + while ((*addr < delay)) { + } + break; + default: + finish = PS7_INIT_CORRUPT; + break; + } + } + return finish; +} + +unsigned long *ps7_mio_init_data = ps7_mio_init_data_3_0; +unsigned long *ps7_pll_init_data = ps7_pll_init_data_3_0; +unsigned long *ps7_clock_init_data = ps7_clock_init_data_3_0; +unsigned long *ps7_ddr_init_data = ps7_ddr_init_data_3_0; +unsigned long *ps7_peripherals_init_data = ps7_peripherals_init_data_3_0; + +int +ps7_post_config() +{ + // Get the PS_VERSION on run time + unsigned long si_ver = ps7GetSiliconVersion (); + int ret = -1; + if (si_ver == PCW_SILICON_VERSION_1) { + ret = ps7_config (ps7_post_config_1_0); + if (ret != PS7_INIT_SUCCESS) return ret; + } else if (si_ver == PCW_SILICON_VERSION_2) { + ret = ps7_config (ps7_post_config_2_0); + if (ret != PS7_INIT_SUCCESS) return ret; + } else { + ret = ps7_config (ps7_post_config_3_0); + if (ret != PS7_INIT_SUCCESS) return ret; + } + return PS7_INIT_SUCCESS; +} + +int +ps7_debug() +{ + // Get the PS_VERSION on run time + unsigned long si_ver = ps7GetSiliconVersion (); + int ret = -1; + if (si_ver == PCW_SILICON_VERSION_1) { + ret = ps7_config (ps7_debug_1_0); + if (ret != PS7_INIT_SUCCESS) return ret; + } else if (si_ver == PCW_SILICON_VERSION_2) { + ret = ps7_config (ps7_debug_2_0); + if (ret != PS7_INIT_SUCCESS) return ret; + } else { + ret = ps7_config (ps7_debug_3_0); + if (ret != PS7_INIT_SUCCESS) return ret; + } + return PS7_INIT_SUCCESS; +} + +int +ps7_init() +{ + // Get the PS_VERSION on run time + unsigned long si_ver = ps7GetSiliconVersion (); + int ret; + //int pcw_ver = 0; + + if (si_ver == PCW_SILICON_VERSION_1) { + ps7_mio_init_data = ps7_mio_init_data_1_0; + ps7_pll_init_data = ps7_pll_init_data_1_0; + ps7_clock_init_data = ps7_clock_init_data_1_0; + ps7_ddr_init_data = ps7_ddr_init_data_1_0; + ps7_peripherals_init_data = ps7_peripherals_init_data_1_0; + //pcw_ver = 1; + + } else if (si_ver == PCW_SILICON_VERSION_2) { + ps7_mio_init_data = ps7_mio_init_data_2_0; + ps7_pll_init_data = ps7_pll_init_data_2_0; + ps7_clock_init_data = ps7_clock_init_data_2_0; + ps7_ddr_init_data = ps7_ddr_init_data_2_0; + ps7_peripherals_init_data = ps7_peripherals_init_data_2_0; + //pcw_ver = 2; + + } else { + ps7_mio_init_data = ps7_mio_init_data_3_0; + ps7_pll_init_data = ps7_pll_init_data_3_0; + ps7_clock_init_data = ps7_clock_init_data_3_0; + ps7_ddr_init_data = ps7_ddr_init_data_3_0; + ps7_peripherals_init_data = ps7_peripherals_init_data_3_0; + //pcw_ver = 3; + } + + // MIO init + ret = ps7_config (ps7_mio_init_data); + if (ret != PS7_INIT_SUCCESS) return ret; + + // PLL init + ret = ps7_config (ps7_pll_init_data); + if (ret != PS7_INIT_SUCCESS) return ret; + + // Clock init + ret = ps7_config (ps7_clock_init_data); + if (ret != PS7_INIT_SUCCESS) return ret; + + // DDR init + ret = ps7_config (ps7_ddr_init_data); + if (ret != PS7_INIT_SUCCESS) return ret; + + + + // Peripherals init + ret = ps7_config (ps7_peripherals_init_data); + if (ret != PS7_INIT_SUCCESS) return ret; + //xil_printf ("\n PCW Silicon Version : %d.0", pcw_ver); + return PS7_INIT_SUCCESS; +} + + + + +/* For delay calculation using global timer */ + +/* start timer */ + void perf_start_clock(void) +{ + *(volatile unsigned int*)SCU_GLOBAL_TIMER_CONTROL = ((1 << 0) | // Timer Enable + (1 << 3) | // Auto-increment + (0 << 8) // Pre-scale + ); +} + +/* stop timer and reset timer count regs */ + void perf_reset_clock(void) +{ + perf_disable_clock(); + *(volatile unsigned int*)SCU_GLOBAL_TIMER_COUNT_L32 = 0; + *(volatile unsigned int*)SCU_GLOBAL_TIMER_COUNT_U32 = 0; +} + +/* Compute mask for given delay in miliseconds*/ +int get_number_of_cycles_for_delay(unsigned int delay) +{ + // GTC is always clocked at 1/2 of the CPU frequency (CPU_3x2x) + return (APU_FREQ*delay/(2*1000)); + +} + +/* stop timer */ + void perf_disable_clock(void) +{ + *(volatile unsigned int*)SCU_GLOBAL_TIMER_CONTROL = 0; +} + +void perf_reset_and_start_timer() +{ + perf_reset_clock(); + perf_start_clock(); +} + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.h b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.h new file mode 100644 index 0000000..5eac42c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_init_gpl.h @@ -0,0 +1,137 @@ + +/****************************************************************************** +* +* (c) Copyright 2010-2014 Xilinx, Inc. All rights reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a copy of this +* software and associated documentation files (the "Software"), to deal in the Software +* without restriction, including without limitation the rights to use, copy, modify, merge, +* publish, distribute, sublicense, and/or sell copies of the Software, and to permit +* persons to whom the Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included in all copies or +* substantial portions of the Software. +* +* Use of the Software is limited solely to applications: (a) running on a Xilinx device, or +* (b) that interact with a Xilinx device through a bus or interconnect. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING +* BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +* NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of the Xilinx shall not be used in advertising or +* otherwise to promote the sale, use or other dealings in this Software without prior written +* authorization from Xilinx. +* +*******************************************************************************/ +/****************************************************************************/ +/** +* +* @file ps7_init.h +* +* This file can be included in FSBL code +* to get prototype of ps7_init() function +* and error codes +* +*****************************************************************************/ + +#ifdef __cplusplus +extern "C" { +#endif + + +//typedef unsigned int u32; + + +/** do we need to make this name more unique ? **/ +//extern u32 ps7_init_data[]; +extern unsigned long * ps7_ddr_init_data; +extern unsigned long * ps7_mio_init_data; +extern unsigned long * ps7_pll_init_data; +extern unsigned long * ps7_clock_init_data; +extern unsigned long * ps7_peripherals_init_data; + + + +#define OPCODE_EXIT 0U +#define OPCODE_CLEAR 1U +#define OPCODE_WRITE 2U +#define OPCODE_MASKWRITE 3U +#define OPCODE_MASKPOLL 4U +#define OPCODE_MASKDELAY 5U +#define NEW_PS7_ERR_CODE 1 + +/* Encode number of arguments in last nibble */ +#define EMIT_EXIT() ( (OPCODE_EXIT << 4 ) | 0 ) +#define EMIT_CLEAR(addr) ( (OPCODE_CLEAR << 4 ) | 1 ) , addr +#define EMIT_WRITE(addr,val) ( (OPCODE_WRITE << 4 ) | 2 ) , addr, val +#define EMIT_MASKWRITE(addr,mask,val) ( (OPCODE_MASKWRITE << 4 ) | 3 ) , addr, mask, val +#define EMIT_MASKPOLL(addr,mask) ( (OPCODE_MASKPOLL << 4 ) | 2 ) , addr, mask +#define EMIT_MASKDELAY(addr,mask) ( (OPCODE_MASKDELAY << 4 ) | 2 ) , addr, mask + +/* Returns codes of PS7_Init */ +#define PS7_INIT_SUCCESS (0) // 0 is success in good old C +#define PS7_INIT_CORRUPT (1) // 1 the data is corrupted, and slcr reg are in corrupted state now +#define PS7_INIT_TIMEOUT (2) // 2 when a poll operation timed out +#define PS7_POLL_FAILED_DDR_INIT (3) // 3 when a poll operation timed out for ddr init +#define PS7_POLL_FAILED_DMA (4) // 4 when a poll operation timed out for dma done bit +#define PS7_POLL_FAILED_PLL (5) // 5 when a poll operation timed out for pll sequence init + + +/* Silicon Versions */ +#define PCW_SILICON_VERSION_1 0 +#define PCW_SILICON_VERSION_2 1 +#define PCW_SILICON_VERSION_3 2 + +/* This flag to be used by FSBL to check whether ps7_post_config() proc exixts */ +#define PS7_POST_CONFIG + +/* Freq of all peripherals */ + +#define APU_FREQ 666666687 +#define DDR_FREQ 533333374 +#define DCI_FREQ 10158731 +#define QSPI_FREQ 200000000 +#define SMC_FREQ 10000000 +#define ENET0_FREQ 125000000 +#define ENET1_FREQ 10000000 +#define USB0_FREQ 60000000 +#define USB1_FREQ 60000000 +#define SDIO_FREQ 100000000 +#define UART_FREQ 100000000 +#define SPI_FREQ 10000000 +#define I2C_FREQ 111111115 +#define WDT_FREQ 111111115 +#define TTC_FREQ 50000000 +#define CAN_FREQ 100000000 +#define PCAP_FREQ 200000000 +#define TPIU_FREQ 200000000 +#define FPGA0_FREQ 166666672 +#define FPGA1_FREQ 50000000 +#define FPGA2_FREQ 100000000 +#define FPGA3_FREQ 200000000 + + +/* For delay calculation using global registers*/ +#define SCU_GLOBAL_TIMER_COUNT_L32 0xF8F00200 +#define SCU_GLOBAL_TIMER_COUNT_U32 0xF8F00204 +#define SCU_GLOBAL_TIMER_CONTROL 0xF8F00208 +#define SCU_GLOBAL_TIMER_AUTO_INC 0xF8F00218 + +int ps7_config( unsigned long*); +int ps7_init(); +int ps7_post_config(); +int ps7_debug(); +char* getPS7MessageInfo(unsigned key); + +void perf_start_clock(void); +void perf_disable_clock(void); +void perf_reset_clock(void); +void perf_reset_and_start_timer(); +int get_number_of_cycles_for_delay(unsigned int delay); +#ifdef __cplusplus +} +#endif + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_parameters.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_parameters.xml new file mode 100644 index 0000000..025d04a --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/ps7_parameters.xml @@ -0,0 +1,629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/sim/z_turn_processing_system7_0_0.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/sim/z_turn_processing_system7_0_0.v new file mode 100644 index 0000000..46bf2b6 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/sim/z_turn_processing_system7_0_0.v @@ -0,0 +1,726 @@ + + + +// (c) Copyright 1995-2013 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:processing_system7_bfm:2.0 +// IP Revision: 1 + +`timescale 1ns/1ps + +module z_turn_processing_system7_0_0 ( +ENET0_PTP_DELAY_REQ_RX, +ENET0_PTP_DELAY_REQ_TX, +ENET0_PTP_PDELAY_REQ_RX, +ENET0_PTP_PDELAY_REQ_TX, +ENET0_PTP_PDELAY_RESP_RX, +ENET0_PTP_PDELAY_RESP_TX, +ENET0_PTP_SYNC_FRAME_RX, +ENET0_PTP_SYNC_FRAME_TX, +ENET0_SOF_RX, +ENET0_SOF_TX, +GPIO_I, +GPIO_O, +GPIO_T, +I2C0_SDA_I, +I2C0_SDA_O, +I2C0_SDA_T, +I2C0_SCL_I, +I2C0_SCL_O, +I2C0_SCL_T, +USB0_PORT_INDCTL, +USB0_VBUS_PWRSELECT, +USB0_VBUS_PWRFAULT, +M_AXI_GP0_ARVALID, +M_AXI_GP0_AWVALID, +M_AXI_GP0_BREADY, +M_AXI_GP0_RREADY, +M_AXI_GP0_WLAST, +M_AXI_GP0_WVALID, +M_AXI_GP0_ARID, +M_AXI_GP0_AWID, +M_AXI_GP0_WID, +M_AXI_GP0_ARBURST, +M_AXI_GP0_ARLOCK, +M_AXI_GP0_ARSIZE, +M_AXI_GP0_AWBURST, +M_AXI_GP0_AWLOCK, +M_AXI_GP0_AWSIZE, +M_AXI_GP0_ARPROT, +M_AXI_GP0_AWPROT, +M_AXI_GP0_ARADDR, +M_AXI_GP0_AWADDR, +M_AXI_GP0_WDATA, +M_AXI_GP0_ARCACHE, +M_AXI_GP0_ARLEN, +M_AXI_GP0_ARQOS, +M_AXI_GP0_AWCACHE, +M_AXI_GP0_AWLEN, +M_AXI_GP0_AWQOS, +M_AXI_GP0_WSTRB, +M_AXI_GP0_ACLK, +M_AXI_GP0_ARREADY, +M_AXI_GP0_AWREADY, +M_AXI_GP0_BVALID, +M_AXI_GP0_RLAST, +M_AXI_GP0_RVALID, +M_AXI_GP0_WREADY, +M_AXI_GP0_BID, +M_AXI_GP0_RID, +M_AXI_GP0_BRESP, +M_AXI_GP0_RRESP, +M_AXI_GP0_RDATA, +S_AXI_HP0_ARREADY, +S_AXI_HP0_AWREADY, +S_AXI_HP0_BVALID, +S_AXI_HP0_RLAST, +S_AXI_HP0_RVALID, +S_AXI_HP0_WREADY, +S_AXI_HP0_BRESP, +S_AXI_HP0_RRESP, +S_AXI_HP0_BID, +S_AXI_HP0_RID, +S_AXI_HP0_RDATA, +S_AXI_HP0_RCOUNT, +S_AXI_HP0_WCOUNT, +S_AXI_HP0_RACOUNT, +S_AXI_HP0_WACOUNT, +S_AXI_HP0_ACLK, +S_AXI_HP0_ARVALID, +S_AXI_HP0_AWVALID, +S_AXI_HP0_BREADY, +S_AXI_HP0_RDISSUECAP1_EN, +S_AXI_HP0_RREADY, +S_AXI_HP0_WLAST, +S_AXI_HP0_WRISSUECAP1_EN, +S_AXI_HP0_WVALID, +S_AXI_HP0_ARBURST, +S_AXI_HP0_ARLOCK, +S_AXI_HP0_ARSIZE, +S_AXI_HP0_AWBURST, +S_AXI_HP0_AWLOCK, +S_AXI_HP0_AWSIZE, +S_AXI_HP0_ARPROT, +S_AXI_HP0_AWPROT, +S_AXI_HP0_ARADDR, +S_AXI_HP0_AWADDR, +S_AXI_HP0_ARCACHE, +S_AXI_HP0_ARLEN, +S_AXI_HP0_ARQOS, +S_AXI_HP0_AWCACHE, +S_AXI_HP0_AWLEN, +S_AXI_HP0_AWQOS, +S_AXI_HP0_ARID, +S_AXI_HP0_AWID, +S_AXI_HP0_WID, +S_AXI_HP0_WDATA, +S_AXI_HP0_WSTRB, +IRQ_F2P, +FCLK_CLK0, +FCLK_CLK1, +FCLK_CLK2, +FCLK_CLK3, +FCLK_RESET0_N, +FCLK_RESET1_N, +FCLK_RESET2_N, +FCLK_RESET3_N, +MIO, +DDR_CAS_n, +DDR_CKE, +DDR_Clk_n, +DDR_Clk, +DDR_CS_n, +DDR_DRSTB, +DDR_ODT, +DDR_RAS_n, +DDR_WEB, +DDR_BankAddr, +DDR_Addr, +DDR_VRN, +DDR_VRP, +DDR_DM, +DDR_DQ, +DDR_DQS_n, +DDR_DQS, +PS_SRSTB, +PS_CLK, +PS_PORB +); +output ENET0_PTP_DELAY_REQ_RX; +output ENET0_PTP_DELAY_REQ_TX; +output ENET0_PTP_PDELAY_REQ_RX; +output ENET0_PTP_PDELAY_REQ_TX; +output ENET0_PTP_PDELAY_RESP_RX; +output ENET0_PTP_PDELAY_RESP_TX; +output ENET0_PTP_SYNC_FRAME_RX; +output ENET0_PTP_SYNC_FRAME_TX; +output ENET0_SOF_RX; +output ENET0_SOF_TX; +input [63 : 0] GPIO_I; +output [63 : 0] GPIO_O; +output [63 : 0] GPIO_T; +input I2C0_SDA_I; +output I2C0_SDA_O; +output I2C0_SDA_T; +input I2C0_SCL_I; +output I2C0_SCL_O; +output I2C0_SCL_T; +output [1 : 0] USB0_PORT_INDCTL; +output USB0_VBUS_PWRSELECT; +input USB0_VBUS_PWRFAULT; +output M_AXI_GP0_ARVALID; +output M_AXI_GP0_AWVALID; +output M_AXI_GP0_BREADY; +output M_AXI_GP0_RREADY; +output M_AXI_GP0_WLAST; +output M_AXI_GP0_WVALID; +output [11 : 0] M_AXI_GP0_ARID; +output [11 : 0] M_AXI_GP0_AWID; +output [11 : 0] M_AXI_GP0_WID; +output [1 : 0] M_AXI_GP0_ARBURST; +output [1 : 0] M_AXI_GP0_ARLOCK; +output [2 : 0] M_AXI_GP0_ARSIZE; +output [1 : 0] M_AXI_GP0_AWBURST; +output [1 : 0] M_AXI_GP0_AWLOCK; +output [2 : 0] M_AXI_GP0_AWSIZE; +output [2 : 0] M_AXI_GP0_ARPROT; +output [2 : 0] M_AXI_GP0_AWPROT; +output [31 : 0] M_AXI_GP0_ARADDR; +output [31 : 0] M_AXI_GP0_AWADDR; +output [31 : 0] M_AXI_GP0_WDATA; +output [3 : 0] M_AXI_GP0_ARCACHE; +output [3 : 0] M_AXI_GP0_ARLEN; +output [3 : 0] M_AXI_GP0_ARQOS; +output [3 : 0] M_AXI_GP0_AWCACHE; +output [3 : 0] M_AXI_GP0_AWLEN; +output [3 : 0] M_AXI_GP0_AWQOS; +output [3 : 0] M_AXI_GP0_WSTRB; +input M_AXI_GP0_ACLK; +input M_AXI_GP0_ARREADY; +input M_AXI_GP0_AWREADY; +input M_AXI_GP0_BVALID; +input M_AXI_GP0_RLAST; +input M_AXI_GP0_RVALID; +input M_AXI_GP0_WREADY; +input [11 : 0] M_AXI_GP0_BID; +input [11 : 0] M_AXI_GP0_RID; +input [1 : 0] M_AXI_GP0_BRESP; +input [1 : 0] M_AXI_GP0_RRESP; +input [31 : 0] M_AXI_GP0_RDATA; +output S_AXI_HP0_ARREADY; +output S_AXI_HP0_AWREADY; +output S_AXI_HP0_BVALID; +output S_AXI_HP0_RLAST; +output S_AXI_HP0_RVALID; +output S_AXI_HP0_WREADY; +output [1 : 0] S_AXI_HP0_BRESP; +output [1 : 0] S_AXI_HP0_RRESP; +output [5 : 0] S_AXI_HP0_BID; +output [5 : 0] S_AXI_HP0_RID; +output [63 : 0] S_AXI_HP0_RDATA; +output [7 : 0] S_AXI_HP0_RCOUNT; +output [7 : 0] S_AXI_HP0_WCOUNT; +output [2 : 0] S_AXI_HP0_RACOUNT; +output [5 : 0] S_AXI_HP0_WACOUNT; +input S_AXI_HP0_ACLK; +input S_AXI_HP0_ARVALID; +input S_AXI_HP0_AWVALID; +input S_AXI_HP0_BREADY; +input S_AXI_HP0_RDISSUECAP1_EN; +input S_AXI_HP0_RREADY; +input S_AXI_HP0_WLAST; +input S_AXI_HP0_WRISSUECAP1_EN; +input S_AXI_HP0_WVALID; +input [1 : 0] S_AXI_HP0_ARBURST; +input [1 : 0] S_AXI_HP0_ARLOCK; +input [2 : 0] S_AXI_HP0_ARSIZE; +input [1 : 0] S_AXI_HP0_AWBURST; +input [1 : 0] S_AXI_HP0_AWLOCK; +input [2 : 0] S_AXI_HP0_AWSIZE; +input [2 : 0] S_AXI_HP0_ARPROT; +input [2 : 0] S_AXI_HP0_AWPROT; +input [31 : 0] S_AXI_HP0_ARADDR; +input [31 : 0] S_AXI_HP0_AWADDR; +input [3 : 0] S_AXI_HP0_ARCACHE; +input [3 : 0] S_AXI_HP0_ARLEN; +input [3 : 0] S_AXI_HP0_ARQOS; +input [3 : 0] S_AXI_HP0_AWCACHE; +input [3 : 0] S_AXI_HP0_AWLEN; +input [3 : 0] S_AXI_HP0_AWQOS; +input [5 : 0] S_AXI_HP0_ARID; +input [5 : 0] S_AXI_HP0_AWID; +input [5 : 0] S_AXI_HP0_WID; +input [63 : 0] S_AXI_HP0_WDATA; +input [7 : 0] S_AXI_HP0_WSTRB; +input [15 : 0] IRQ_F2P; +output FCLK_CLK0; +output FCLK_CLK1; +output FCLK_CLK2; +output FCLK_CLK3; +output FCLK_RESET0_N; +output FCLK_RESET1_N; +output FCLK_RESET2_N; +output FCLK_RESET3_N; +input [53 : 0] MIO; +input DDR_CAS_n; +input DDR_CKE; +input DDR_Clk_n; +input DDR_Clk; +input DDR_CS_n; +input DDR_DRSTB; +input DDR_ODT; +input DDR_RAS_n; +input DDR_WEB; +input [2 : 0] DDR_BankAddr; +input [14 : 0] DDR_Addr; +input DDR_VRN; +input DDR_VRP; +input [3 : 0] DDR_DM; +input [31 : 0] DDR_DQ; +input [3 : 0] DDR_DQS_n; +input [3 : 0] DDR_DQS; +input PS_SRSTB; +input PS_CLK; +input PS_PORB; + + processing_system7_bfm_v2_0_processing_system7_bfm #( + .C_USE_M_AXI_GP0(1), + .C_USE_M_AXI_GP1(0), + .C_USE_S_AXI_ACP(0), + .C_USE_S_AXI_GP0(0), + .C_USE_S_AXI_GP1(0), + .C_USE_S_AXI_HP0(1), + .C_USE_S_AXI_HP1(0), + .C_USE_S_AXI_HP2(0), + .C_USE_S_AXI_HP3(0), + .C_S_AXI_HP0_DATA_WIDTH(64), + .C_S_AXI_HP1_DATA_WIDTH(64), + .C_S_AXI_HP2_DATA_WIDTH(64), + .C_S_AXI_HP3_DATA_WIDTH(64), + .C_HIGH_OCM_EN(0), + .C_FCLK_CLK0_FREQ(166.666672), + .C_FCLK_CLK1_FREQ(50.0), + .C_FCLK_CLK2_FREQ(100.0), + .C_FCLK_CLK3_FREQ(200.0), + .C_M_AXI_GP0_ENABLE_STATIC_REMAP(0), + .C_M_AXI_GP1_ENABLE_STATIC_REMAP(0), + .C_M_AXI_GP0_THREAD_ID_WIDTH (12), + .C_M_AXI_GP1_THREAD_ID_WIDTH (12) + ) inst ( + .M_AXI_GP0_ARVALID(M_AXI_GP0_ARVALID), + .M_AXI_GP0_AWVALID(M_AXI_GP0_AWVALID), + .M_AXI_GP0_BREADY(M_AXI_GP0_BREADY), + .M_AXI_GP0_RREADY(M_AXI_GP0_RREADY), + .M_AXI_GP0_WLAST(M_AXI_GP0_WLAST), + .M_AXI_GP0_WVALID(M_AXI_GP0_WVALID), + .M_AXI_GP0_ARID(M_AXI_GP0_ARID), + .M_AXI_GP0_AWID(M_AXI_GP0_AWID), + .M_AXI_GP0_WID(M_AXI_GP0_WID), + .M_AXI_GP0_ARBURST(M_AXI_GP0_ARBURST), + .M_AXI_GP0_ARLOCK(M_AXI_GP0_ARLOCK), + .M_AXI_GP0_ARSIZE(M_AXI_GP0_ARSIZE), + .M_AXI_GP0_AWBURST(M_AXI_GP0_AWBURST), + .M_AXI_GP0_AWLOCK(M_AXI_GP0_AWLOCK), + .M_AXI_GP0_AWSIZE(M_AXI_GP0_AWSIZE), + .M_AXI_GP0_ARPROT(M_AXI_GP0_ARPROT), + .M_AXI_GP0_AWPROT(M_AXI_GP0_AWPROT), + .M_AXI_GP0_ARADDR(M_AXI_GP0_ARADDR), + .M_AXI_GP0_AWADDR(M_AXI_GP0_AWADDR), + .M_AXI_GP0_WDATA(M_AXI_GP0_WDATA), + .M_AXI_GP0_ARCACHE(M_AXI_GP0_ARCACHE), + .M_AXI_GP0_ARLEN(M_AXI_GP0_ARLEN), + .M_AXI_GP0_ARQOS(M_AXI_GP0_ARQOS), + .M_AXI_GP0_AWCACHE(M_AXI_GP0_AWCACHE), + .M_AXI_GP0_AWLEN(M_AXI_GP0_AWLEN), + .M_AXI_GP0_AWQOS(M_AXI_GP0_AWQOS), + .M_AXI_GP0_WSTRB(M_AXI_GP0_WSTRB), + .M_AXI_GP0_ACLK(M_AXI_GP0_ACLK), + .M_AXI_GP0_ARREADY(M_AXI_GP0_ARREADY), + .M_AXI_GP0_AWREADY(M_AXI_GP0_AWREADY), + .M_AXI_GP0_BVALID(M_AXI_GP0_BVALID), + .M_AXI_GP0_RLAST(M_AXI_GP0_RLAST), + .M_AXI_GP0_RVALID(M_AXI_GP0_RVALID), + .M_AXI_GP0_WREADY(M_AXI_GP0_WREADY), + .M_AXI_GP0_BID(M_AXI_GP0_BID), + .M_AXI_GP0_RID(M_AXI_GP0_RID), + .M_AXI_GP0_BRESP(M_AXI_GP0_BRESP), + .M_AXI_GP0_RRESP(M_AXI_GP0_RRESP), + .M_AXI_GP0_RDATA(M_AXI_GP0_RDATA), + .M_AXI_GP1_ARVALID(), + .M_AXI_GP1_AWVALID(), + .M_AXI_GP1_BREADY(), + .M_AXI_GP1_RREADY(), + .M_AXI_GP1_WLAST(), + .M_AXI_GP1_WVALID(), + .M_AXI_GP1_ARID(), + .M_AXI_GP1_AWID(), + .M_AXI_GP1_WID(), + .M_AXI_GP1_ARBURST(), + .M_AXI_GP1_ARLOCK(), + .M_AXI_GP1_ARSIZE(), + .M_AXI_GP1_AWBURST(), + .M_AXI_GP1_AWLOCK(), + .M_AXI_GP1_AWSIZE(), + .M_AXI_GP1_ARPROT(), + .M_AXI_GP1_AWPROT(), + .M_AXI_GP1_ARADDR(), + .M_AXI_GP1_AWADDR(), + .M_AXI_GP1_WDATA(), + .M_AXI_GP1_ARCACHE(), + .M_AXI_GP1_ARLEN(), + .M_AXI_GP1_ARQOS(), + .M_AXI_GP1_AWCACHE(), + .M_AXI_GP1_AWLEN(), + .M_AXI_GP1_AWQOS(), + .M_AXI_GP1_WSTRB(), + .M_AXI_GP1_ACLK(1'B0), + .M_AXI_GP1_ARREADY(1'B0), + .M_AXI_GP1_AWREADY(1'B0), + .M_AXI_GP1_BVALID(1'B0), + .M_AXI_GP1_RLAST(1'B0), + .M_AXI_GP1_RVALID(1'B0), + .M_AXI_GP1_WREADY(1'B0), + .M_AXI_GP1_BID(12'B0), + .M_AXI_GP1_RID(12'B0), + .M_AXI_GP1_BRESP(2'B0), + .M_AXI_GP1_RRESP(2'B0), + .M_AXI_GP1_RDATA(32'B0), + .S_AXI_GP0_ARREADY(), + .S_AXI_GP0_AWREADY(), + .S_AXI_GP0_BVALID(), + .S_AXI_GP0_RLAST(), + .S_AXI_GP0_RVALID(), + .S_AXI_GP0_WREADY(), + .S_AXI_GP0_BRESP(), + .S_AXI_GP0_RRESP(), + .S_AXI_GP0_RDATA(), + .S_AXI_GP0_BID(), + .S_AXI_GP0_RID(), + .S_AXI_GP0_ACLK(1'B0), + .S_AXI_GP0_ARVALID(1'B0), + .S_AXI_GP0_AWVALID(1'B0), + .S_AXI_GP0_BREADY(1'B0), + .S_AXI_GP0_RREADY(1'B0), + .S_AXI_GP0_WLAST(1'B0), + .S_AXI_GP0_WVALID(1'B0), + .S_AXI_GP0_ARBURST(2'B0), + .S_AXI_GP0_ARLOCK(2'B0), + .S_AXI_GP0_ARSIZE(3'B0), + .S_AXI_GP0_AWBURST(2'B0), + .S_AXI_GP0_AWLOCK(2'B0), + .S_AXI_GP0_AWSIZE(3'B0), + .S_AXI_GP0_ARPROT(3'B0), + .S_AXI_GP0_AWPROT(3'B0), + .S_AXI_GP0_ARADDR(32'B0), + .S_AXI_GP0_AWADDR(32'B0), + .S_AXI_GP0_WDATA(32'B0), + .S_AXI_GP0_ARCACHE(4'B0), + .S_AXI_GP0_ARLEN(4'B0), + .S_AXI_GP0_ARQOS(4'B0), + .S_AXI_GP0_AWCACHE(4'B0), + .S_AXI_GP0_AWLEN(4'B0), + .S_AXI_GP0_AWQOS(4'B0), + .S_AXI_GP0_WSTRB(4'B0), + .S_AXI_GP0_ARID(6'B0), + .S_AXI_GP0_AWID(6'B0), + .S_AXI_GP0_WID(6'B0), + .S_AXI_GP1_ARREADY(), + .S_AXI_GP1_AWREADY(), + .S_AXI_GP1_BVALID(), + .S_AXI_GP1_RLAST(), + .S_AXI_GP1_RVALID(), + .S_AXI_GP1_WREADY(), + .S_AXI_GP1_BRESP(), + .S_AXI_GP1_RRESP(), + .S_AXI_GP1_RDATA(), + .S_AXI_GP1_BID(), + .S_AXI_GP1_RID(), + .S_AXI_GP1_ACLK(1'B0), + .S_AXI_GP1_ARVALID(1'B0), + .S_AXI_GP1_AWVALID(1'B0), + .S_AXI_GP1_BREADY(1'B0), + .S_AXI_GP1_RREADY(1'B0), + .S_AXI_GP1_WLAST(1'B0), + .S_AXI_GP1_WVALID(1'B0), + .S_AXI_GP1_ARBURST(2'B0), + .S_AXI_GP1_ARLOCK(2'B0), + .S_AXI_GP1_ARSIZE(3'B0), + .S_AXI_GP1_AWBURST(2'B0), + .S_AXI_GP1_AWLOCK(2'B0), + .S_AXI_GP1_AWSIZE(3'B0), + .S_AXI_GP1_ARPROT(3'B0), + .S_AXI_GP1_AWPROT(3'B0), + .S_AXI_GP1_ARADDR(32'B0), + .S_AXI_GP1_AWADDR(32'B0), + .S_AXI_GP1_WDATA(32'B0), + .S_AXI_GP1_ARCACHE(4'B0), + .S_AXI_GP1_ARLEN(4'B0), + .S_AXI_GP1_ARQOS(4'B0), + .S_AXI_GP1_AWCACHE(4'B0), + .S_AXI_GP1_AWLEN(4'B0), + .S_AXI_GP1_AWQOS(4'B0), + .S_AXI_GP1_WSTRB(4'B0), + .S_AXI_GP1_ARID(6'B0), + .S_AXI_GP1_AWID(6'B0), + .S_AXI_GP1_WID(6'B0), + .S_AXI_ACP_ARREADY(), + .S_AXI_ACP_AWREADY(), + .S_AXI_ACP_BVALID(), + .S_AXI_ACP_RLAST(), + .S_AXI_ACP_RVALID(), + .S_AXI_ACP_WREADY(), + .S_AXI_ACP_BRESP(), + .S_AXI_ACP_RRESP(), + .S_AXI_ACP_BID(), + .S_AXI_ACP_RID(), + .S_AXI_ACP_RDATA(), + .S_AXI_ACP_ACLK(1'B0), + .S_AXI_ACP_ARVALID(1'B0), + .S_AXI_ACP_AWVALID(1'B0), + .S_AXI_ACP_BREADY(1'B0), + .S_AXI_ACP_RREADY(1'B0), + .S_AXI_ACP_WLAST(1'B0), + .S_AXI_ACP_WVALID(1'B0), + .S_AXI_ACP_ARID(3'B0), + .S_AXI_ACP_ARPROT(3'B0), + .S_AXI_ACP_AWID(3'B0), + .S_AXI_ACP_AWPROT(3'B0), + .S_AXI_ACP_WID(3'B0), + .S_AXI_ACP_ARADDR(32'B0), + .S_AXI_ACP_AWADDR(32'B0), + .S_AXI_ACP_ARCACHE(4'B0), + .S_AXI_ACP_ARLEN(4'B0), + .S_AXI_ACP_ARQOS(4'B0), + .S_AXI_ACP_AWCACHE(4'B0), + .S_AXI_ACP_AWLEN(4'B0), + .S_AXI_ACP_AWQOS(4'B0), + .S_AXI_ACP_ARBURST(2'B0), + .S_AXI_ACP_ARLOCK(2'B0), + .S_AXI_ACP_ARSIZE(3'B0), + .S_AXI_ACP_AWBURST(2'B0), + .S_AXI_ACP_AWLOCK(2'B0), + .S_AXI_ACP_AWSIZE(3'B0), + .S_AXI_ACP_ARUSER(5'B0), + .S_AXI_ACP_AWUSER(5'B0), + .S_AXI_ACP_WDATA(64'B0), + .S_AXI_ACP_WSTRB(8'B0), + .S_AXI_HP0_ARREADY(S_AXI_HP0_ARREADY), + .S_AXI_HP0_AWREADY(S_AXI_HP0_AWREADY), + .S_AXI_HP0_BVALID(S_AXI_HP0_BVALID), + .S_AXI_HP0_RLAST(S_AXI_HP0_RLAST), + .S_AXI_HP0_RVALID(S_AXI_HP0_RVALID), + .S_AXI_HP0_WREADY(S_AXI_HP0_WREADY), + .S_AXI_HP0_BRESP(S_AXI_HP0_BRESP), + .S_AXI_HP0_RRESP(S_AXI_HP0_RRESP), + .S_AXI_HP0_BID(S_AXI_HP0_BID), + .S_AXI_HP0_RID(S_AXI_HP0_RID), + .S_AXI_HP0_RDATA(S_AXI_HP0_RDATA), + .S_AXI_HP0_ACLK(S_AXI_HP0_ACLK), + .S_AXI_HP0_ARVALID(S_AXI_HP0_ARVALID), + .S_AXI_HP0_AWVALID(S_AXI_HP0_AWVALID), + .S_AXI_HP0_BREADY(S_AXI_HP0_BREADY), + .S_AXI_HP0_RREADY(S_AXI_HP0_RREADY), + .S_AXI_HP0_WLAST(S_AXI_HP0_WLAST), + .S_AXI_HP0_WVALID(S_AXI_HP0_WVALID), + .S_AXI_HP0_ARBURST(S_AXI_HP0_ARBURST), + .S_AXI_HP0_ARLOCK(S_AXI_HP0_ARLOCK), + .S_AXI_HP0_ARSIZE(S_AXI_HP0_ARSIZE), + .S_AXI_HP0_AWBURST(S_AXI_HP0_AWBURST), + .S_AXI_HP0_AWLOCK(S_AXI_HP0_AWLOCK), + .S_AXI_HP0_AWSIZE(S_AXI_HP0_AWSIZE), + .S_AXI_HP0_ARPROT(S_AXI_HP0_ARPROT), + .S_AXI_HP0_AWPROT(S_AXI_HP0_AWPROT), + .S_AXI_HP0_ARADDR(S_AXI_HP0_ARADDR), + .S_AXI_HP0_AWADDR(S_AXI_HP0_AWADDR), + .S_AXI_HP0_ARCACHE(S_AXI_HP0_ARCACHE), + .S_AXI_HP0_ARLEN(S_AXI_HP0_ARLEN), + .S_AXI_HP0_ARQOS(S_AXI_HP0_ARQOS), + .S_AXI_HP0_AWCACHE(S_AXI_HP0_AWCACHE), + .S_AXI_HP0_AWLEN(S_AXI_HP0_AWLEN), + .S_AXI_HP0_AWQOS(S_AXI_HP0_AWQOS), + .S_AXI_HP0_ARID(S_AXI_HP0_ARID), + .S_AXI_HP0_AWID(S_AXI_HP0_AWID), + .S_AXI_HP0_WID(S_AXI_HP0_WID), + .S_AXI_HP0_WDATA(S_AXI_HP0_WDATA), + .S_AXI_HP0_WSTRB(S_AXI_HP0_WSTRB), + .S_AXI_HP1_ARREADY(), + .S_AXI_HP1_AWREADY(), + .S_AXI_HP1_BVALID(), + .S_AXI_HP1_RLAST(), + .S_AXI_HP1_RVALID(), + .S_AXI_HP1_WREADY(), + .S_AXI_HP1_BRESP(), + .S_AXI_HP1_RRESP(), + .S_AXI_HP1_BID(), + .S_AXI_HP1_RID(), + .S_AXI_HP1_RDATA(), + .S_AXI_HP1_ACLK(1'B0), + .S_AXI_HP1_ARVALID(1'B0), + .S_AXI_HP1_AWVALID(1'B0), + .S_AXI_HP1_BREADY(1'B0), + .S_AXI_HP1_RREADY(1'B0), + .S_AXI_HP1_WLAST(1'B0), + .S_AXI_HP1_WVALID(1'B0), + .S_AXI_HP1_ARBURST(2'B0), + .S_AXI_HP1_ARLOCK(2'B0), + .S_AXI_HP1_ARSIZE(3'B0), + .S_AXI_HP1_AWBURST(2'B0), + .S_AXI_HP1_AWLOCK(2'B0), + .S_AXI_HP1_AWSIZE(3'B0), + .S_AXI_HP1_ARPROT(3'B0), + .S_AXI_HP1_AWPROT(3'B0), + .S_AXI_HP1_ARADDR(32'B0), + .S_AXI_HP1_AWADDR(32'B0), + .S_AXI_HP1_ARCACHE(4'B0), + .S_AXI_HP1_ARLEN(4'B0), + .S_AXI_HP1_ARQOS(4'B0), + .S_AXI_HP1_AWCACHE(4'B0), + .S_AXI_HP1_AWLEN(4'B0), + .S_AXI_HP1_AWQOS(4'B0), + .S_AXI_HP1_ARID(6'B0), + .S_AXI_HP1_AWID(6'B0), + .S_AXI_HP1_WID(6'B0), + .S_AXI_HP1_WDATA(64'B0), + .S_AXI_HP1_WSTRB(8'B0), + .S_AXI_HP2_ARREADY(), + .S_AXI_HP2_AWREADY(), + .S_AXI_HP2_BVALID(), + .S_AXI_HP2_RLAST(), + .S_AXI_HP2_RVALID(), + .S_AXI_HP2_WREADY(), + .S_AXI_HP2_BRESP(), + .S_AXI_HP2_RRESP(), + .S_AXI_HP2_BID(), + .S_AXI_HP2_RID(), + .S_AXI_HP2_RDATA(), + .S_AXI_HP2_ACLK(1'B0), + .S_AXI_HP2_ARVALID(1'B0), + .S_AXI_HP2_AWVALID(1'B0), + .S_AXI_HP2_BREADY(1'B0), + .S_AXI_HP2_RREADY(1'B0), + .S_AXI_HP2_WLAST(1'B0), + .S_AXI_HP2_WVALID(1'B0), + .S_AXI_HP2_ARBURST(2'B0), + .S_AXI_HP2_ARLOCK(2'B0), + .S_AXI_HP2_ARSIZE(3'B0), + .S_AXI_HP2_AWBURST(2'B0), + .S_AXI_HP2_AWLOCK(2'B0), + .S_AXI_HP2_AWSIZE(3'B0), + .S_AXI_HP2_ARPROT(3'B0), + .S_AXI_HP2_AWPROT(3'B0), + .S_AXI_HP2_ARADDR(32'B0), + .S_AXI_HP2_AWADDR(32'B0), + .S_AXI_HP2_ARCACHE(4'B0), + .S_AXI_HP2_ARLEN(4'B0), + .S_AXI_HP2_ARQOS(4'B0), + .S_AXI_HP2_AWCACHE(4'B0), + .S_AXI_HP2_AWLEN(4'B0), + .S_AXI_HP2_AWQOS(4'B0), + .S_AXI_HP2_ARID(6'B0), + .S_AXI_HP2_AWID(6'B0), + .S_AXI_HP2_WID(6'B0), + .S_AXI_HP2_WDATA(64'B0), + .S_AXI_HP2_WSTRB(8'B0), + .S_AXI_HP3_ARREADY(), + .S_AXI_HP3_AWREADY(), + .S_AXI_HP3_BVALID(), + .S_AXI_HP3_RLAST(), + .S_AXI_HP3_RVALID(), + .S_AXI_HP3_WREADY(), + .S_AXI_HP3_BRESP(), + .S_AXI_HP3_RRESP(), + .S_AXI_HP3_BID(), + .S_AXI_HP3_RID(), + .S_AXI_HP3_RDATA(), + .S_AXI_HP3_ACLK(1'B0), + .S_AXI_HP3_ARVALID(1'B0), + .S_AXI_HP3_AWVALID(1'B0), + .S_AXI_HP3_BREADY(1'B0), + .S_AXI_HP3_RREADY(1'B0), + .S_AXI_HP3_WLAST(1'B0), + .S_AXI_HP3_WVALID(1'B0), + .S_AXI_HP3_ARBURST(2'B0), + .S_AXI_HP3_ARLOCK(2'B0), + .S_AXI_HP3_ARSIZE(3'B0), + .S_AXI_HP3_AWBURST(2'B0), + .S_AXI_HP3_AWLOCK(2'B0), + .S_AXI_HP3_AWSIZE(3'B0), + .S_AXI_HP3_ARPROT(3'B0), + .S_AXI_HP3_AWPROT(3'B0), + .S_AXI_HP3_ARADDR(32'B0), + .S_AXI_HP3_AWADDR(32'B0), + .S_AXI_HP3_ARCACHE(4'B0), + .S_AXI_HP3_ARLEN(4'B0), + .S_AXI_HP3_ARQOS(4'B0), + .S_AXI_HP3_AWCACHE(4'B0), + .S_AXI_HP3_AWLEN(4'B0), + .S_AXI_HP3_AWQOS(4'B0), + .S_AXI_HP3_ARID(6'B0), + .S_AXI_HP3_AWID(6'B0), + .S_AXI_HP3_WID(6'B0), + .S_AXI_HP3_WDATA(64'B0), + .S_AXI_HP3_WSTRB(8'B0), + .FCLK_CLK0(FCLK_CLK0), + + .FCLK_CLK1(FCLK_CLK1), + + .FCLK_CLK2(FCLK_CLK2), + + .FCLK_CLK3(FCLK_CLK3), + .FCLK_RESET0_N(FCLK_RESET0_N), + .FCLK_RESET1_N(FCLK_RESET1_N), + .FCLK_RESET2_N(FCLK_RESET2_N), + .FCLK_RESET3_N(FCLK_RESET3_N), + .IRQ_F2P(IRQ_F2P), + .PS_SRSTB(PS_SRSTB), + .PS_CLK(PS_CLK), + .PS_PORB(PS_PORB) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/synth/z_turn_processing_system7_0_0.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/synth/z_turn_processing_system7_0_0.v new file mode 100644 index 0000000..eb64c42 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/synth/z_turn_processing_system7_0_0.v @@ -0,0 +1,1197 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:processing_system7:5.5 +// IP Revision: 1 + +(* X_CORE_INFO = "processing_system7_v5_5_processing_system7,Vivado 2015.2" *) +(* CHECK_LICENSE_TYPE = "z_turn_processing_system7_0_0,processing_system7_v5_5_processing_system7,{}" *) +(* CORE_GENERATION_INFO = "z_turn_processing_system7_0_0,processing_system7_v5_5_processing_system7,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=processing_system7,x_ipVersion=5.5,x_ipCoreRevision=1,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,C_EN_EMIO_PJTAG=0,C_EN_EMIO_ENET0=0,C_EN_EMIO_ENET1=0,C_EN_EMIO_TRACE=0,C_INCLUDE_TRACE_BUFFER=0,C_TRACE_BUFFER_FIFO_SIZE=128,USE_TRACE_DATA_EDGE_DETECTOR=0,C_TRACE_PIPELINE_WIDTH=8,C_TRACE_BUFFER_CLOCK_DELAY=12,C_EMIO_GPIO_WIDTH=64,C_INCLUDE_ACP_TRANS_CHECK=0,C_USE_DEFAULT_ACP_USER_VAL=0,C_S_AXI_ACP_ARUSER_VAL=31,C_S_AXI_ACP_AWUSER_VAL=31,C_M_AXI_GP0_ID_WIDTH=12,C_M_AXI_GP0_ENABLE_STATIC_REMAP=0,C_M_AXI_GP1_ID_WIDTH=12,C_M_AXI_GP1_ENABLE_STATIC_REMAP=0,C_S_AXI_GP0_ID_WIDTH=6,C_S_AXI_GP1_ID_WIDTH=6,C_S_AXI_ACP_ID_WIDTH=3,C_S_AXI_HP0_ID_WIDTH=6,C_S_AXI_HP0_DATA_WIDTH=64,C_S_AXI_HP1_ID_WIDTH=6,C_S_AXI_HP1_DATA_WIDTH=64,C_S_AXI_HP2_ID_WIDTH=6,C_S_AXI_HP2_DATA_WIDTH=64,C_S_AXI_HP3_ID_WIDTH=6,C_S_AXI_HP3_DATA_WIDTH=64,C_M_AXI_GP0_THREAD_ID_WIDTH=12,C_M_AXI_GP1_THREAD_ID_WIDTH=12,C_NUM_F2P_INTR_INPUTS=16,C_IRQ_F2P_MODE=DIRECT,C_DQ_WIDTH=32,C_DQS_WIDTH=4,C_DM_WIDTH=4,C_MIO_PRIMITIVE=54,C_TRACE_INTERNAL_WIDTH=2,C_USE_AXI_NONSECURE=0,C_USE_M_AXI_GP0=1,C_USE_M_AXI_GP1=0,C_USE_S_AXI_GP0=0,C_USE_S_AXI_HP0=1,C_USE_S_AXI_HP1=0,C_USE_S_AXI_HP2=0,C_USE_S_AXI_HP3=0,C_USE_S_AXI_ACP=0,C_PS7_SI_REV=PRODUCTION,C_FCLK_CLK0_BUF=true,C_FCLK_CLK1_BUF=true,C_FCLK_CLK2_BUF=true,C_FCLK_CLK3_BUF=true,C_PACKAGE_NAME=clg400}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_processing_system7_0_0 ( + ENET0_PTP_DELAY_REQ_RX, + ENET0_PTP_DELAY_REQ_TX, + ENET0_PTP_PDELAY_REQ_RX, + ENET0_PTP_PDELAY_REQ_TX, + ENET0_PTP_PDELAY_RESP_RX, + ENET0_PTP_PDELAY_RESP_TX, + ENET0_PTP_SYNC_FRAME_RX, + ENET0_PTP_SYNC_FRAME_TX, + ENET0_SOF_RX, + ENET0_SOF_TX, + GPIO_I, + GPIO_O, + GPIO_T, + I2C0_SDA_I, + I2C0_SDA_O, + I2C0_SDA_T, + I2C0_SCL_I, + I2C0_SCL_O, + I2C0_SCL_T, + USB0_PORT_INDCTL, + USB0_VBUS_PWRSELECT, + USB0_VBUS_PWRFAULT, + M_AXI_GP0_ARVALID, + M_AXI_GP0_AWVALID, + M_AXI_GP0_BREADY, + M_AXI_GP0_RREADY, + M_AXI_GP0_WLAST, + M_AXI_GP0_WVALID, + M_AXI_GP0_ARID, + M_AXI_GP0_AWID, + M_AXI_GP0_WID, + M_AXI_GP0_ARBURST, + M_AXI_GP0_ARLOCK, + M_AXI_GP0_ARSIZE, + M_AXI_GP0_AWBURST, + M_AXI_GP0_AWLOCK, + M_AXI_GP0_AWSIZE, + M_AXI_GP0_ARPROT, + M_AXI_GP0_AWPROT, + M_AXI_GP0_ARADDR, + M_AXI_GP0_AWADDR, + M_AXI_GP0_WDATA, + M_AXI_GP0_ARCACHE, + M_AXI_GP0_ARLEN, + M_AXI_GP0_ARQOS, + M_AXI_GP0_AWCACHE, + M_AXI_GP0_AWLEN, + M_AXI_GP0_AWQOS, + M_AXI_GP0_WSTRB, + M_AXI_GP0_ACLK, + M_AXI_GP0_ARREADY, + M_AXI_GP0_AWREADY, + M_AXI_GP0_BVALID, + M_AXI_GP0_RLAST, + M_AXI_GP0_RVALID, + M_AXI_GP0_WREADY, + M_AXI_GP0_BID, + M_AXI_GP0_RID, + M_AXI_GP0_BRESP, + M_AXI_GP0_RRESP, + M_AXI_GP0_RDATA, + S_AXI_HP0_ARREADY, + S_AXI_HP0_AWREADY, + S_AXI_HP0_BVALID, + S_AXI_HP0_RLAST, + S_AXI_HP0_RVALID, + S_AXI_HP0_WREADY, + S_AXI_HP0_BRESP, + S_AXI_HP0_RRESP, + S_AXI_HP0_BID, + S_AXI_HP0_RID, + S_AXI_HP0_RDATA, + S_AXI_HP0_RCOUNT, + S_AXI_HP0_WCOUNT, + S_AXI_HP0_RACOUNT, + S_AXI_HP0_WACOUNT, + S_AXI_HP0_ACLK, + S_AXI_HP0_ARVALID, + S_AXI_HP0_AWVALID, + S_AXI_HP0_BREADY, + S_AXI_HP0_RDISSUECAP1_EN, + S_AXI_HP0_RREADY, + S_AXI_HP0_WLAST, + S_AXI_HP0_WRISSUECAP1_EN, + S_AXI_HP0_WVALID, + S_AXI_HP0_ARBURST, + S_AXI_HP0_ARLOCK, + S_AXI_HP0_ARSIZE, + S_AXI_HP0_AWBURST, + S_AXI_HP0_AWLOCK, + S_AXI_HP0_AWSIZE, + S_AXI_HP0_ARPROT, + S_AXI_HP0_AWPROT, + S_AXI_HP0_ARADDR, + S_AXI_HP0_AWADDR, + S_AXI_HP0_ARCACHE, + S_AXI_HP0_ARLEN, + S_AXI_HP0_ARQOS, + S_AXI_HP0_AWCACHE, + S_AXI_HP0_AWLEN, + S_AXI_HP0_AWQOS, + S_AXI_HP0_ARID, + S_AXI_HP0_AWID, + S_AXI_HP0_WID, + S_AXI_HP0_WDATA, + S_AXI_HP0_WSTRB, + IRQ_F2P, + FCLK_CLK0, + FCLK_CLK1, + FCLK_CLK2, + FCLK_CLK3, + FCLK_RESET0_N, + FCLK_RESET1_N, + FCLK_RESET2_N, + FCLK_RESET3_N, + MIO, + DDR_CAS_n, + DDR_CKE, + DDR_Clk_n, + DDR_Clk, + DDR_CS_n, + DDR_DRSTB, + DDR_ODT, + DDR_RAS_n, + DDR_WEB, + DDR_BankAddr, + DDR_Addr, + DDR_VRN, + DDR_VRP, + DDR_DM, + DDR_DQ, + DDR_DQS_n, + DDR_DQS, + PS_SRSTB, + PS_CLK, + PS_PORB +); + +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 DELAY_REQ_RX" *) +output wire ENET0_PTP_DELAY_REQ_RX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 DELAY_REQ_TX" *) +output wire ENET0_PTP_DELAY_REQ_TX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 PDELAY_REQ_RX" *) +output wire ENET0_PTP_PDELAY_REQ_RX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 PDELAY_REQ_TX" *) +output wire ENET0_PTP_PDELAY_REQ_TX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 PDELAY_RESP_RX" *) +output wire ENET0_PTP_PDELAY_RESP_RX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 PDELAY_RESP_TX" *) +output wire ENET0_PTP_PDELAY_RESP_TX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 SYNC_FRAME_RX" *) +output wire ENET0_PTP_SYNC_FRAME_RX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 SYNC_FRAME_TX" *) +output wire ENET0_PTP_SYNC_FRAME_TX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 SOF_RX" *) +output wire ENET0_SOF_RX; +(* X_INTERFACE_INFO = "xilinx.com:interface:ptp:1.0 PTP_ETHERNET_0 SOF_TX" *) +output wire ENET0_SOF_TX; +(* X_INTERFACE_INFO = "xilinx.com:interface:gpio:1.0 GPIO_0 TRI_I" *) +input wire [63 : 0] GPIO_I; +(* X_INTERFACE_INFO = "xilinx.com:interface:gpio:1.0 GPIO_0 TRI_O" *) +output wire [63 : 0] GPIO_O; +(* X_INTERFACE_INFO = "xilinx.com:interface:gpio:1.0 GPIO_0 TRI_T" *) +output wire [63 : 0] GPIO_T; +(* X_INTERFACE_INFO = "xilinx.com:interface:iic:1.0 IIC_0 SDA_I" *) +input wire I2C0_SDA_I; +(* X_INTERFACE_INFO = "xilinx.com:interface:iic:1.0 IIC_0 SDA_O" *) +output wire I2C0_SDA_O; +(* X_INTERFACE_INFO = "xilinx.com:interface:iic:1.0 IIC_0 SDA_T" *) +output wire I2C0_SDA_T; +(* X_INTERFACE_INFO = "xilinx.com:interface:iic:1.0 IIC_0 SCL_I" *) +input wire I2C0_SCL_I; +(* X_INTERFACE_INFO = "xilinx.com:interface:iic:1.0 IIC_0 SCL_O" *) +output wire I2C0_SCL_O; +(* X_INTERFACE_INFO = "xilinx.com:interface:iic:1.0 IIC_0 SCL_T" *) +output wire I2C0_SCL_T; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:usbctrl:1.0 USBIND_0 PORT_INDCTL" *) +output wire [1 : 0] USB0_PORT_INDCTL; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:usbctrl:1.0 USBIND_0 VBUS_PWRSELECT" *) +output wire USB0_VBUS_PWRSELECT; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:usbctrl:1.0 USBIND_0 VBUS_PWRFAULT" *) +input wire USB0_VBUS_PWRFAULT; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARVALID" *) +output wire M_AXI_GP0_ARVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWVALID" *) +output wire M_AXI_GP0_AWVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 BREADY" *) +output wire M_AXI_GP0_BREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 RREADY" *) +output wire M_AXI_GP0_RREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 WLAST" *) +output wire M_AXI_GP0_WLAST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 WVALID" *) +output wire M_AXI_GP0_WVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARID" *) +output wire [11 : 0] M_AXI_GP0_ARID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWID" *) +output wire [11 : 0] M_AXI_GP0_AWID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 WID" *) +output wire [11 : 0] M_AXI_GP0_WID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARBURST" *) +output wire [1 : 0] M_AXI_GP0_ARBURST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARLOCK" *) +output wire [1 : 0] M_AXI_GP0_ARLOCK; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARSIZE" *) +output wire [2 : 0] M_AXI_GP0_ARSIZE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWBURST" *) +output wire [1 : 0] M_AXI_GP0_AWBURST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWLOCK" *) +output wire [1 : 0] M_AXI_GP0_AWLOCK; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWSIZE" *) +output wire [2 : 0] M_AXI_GP0_AWSIZE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARPROT" *) +output wire [2 : 0] M_AXI_GP0_ARPROT; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWPROT" *) +output wire [2 : 0] M_AXI_GP0_AWPROT; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARADDR" *) +output wire [31 : 0] M_AXI_GP0_ARADDR; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWADDR" *) +output wire [31 : 0] M_AXI_GP0_AWADDR; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 WDATA" *) +output wire [31 : 0] M_AXI_GP0_WDATA; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARCACHE" *) +output wire [3 : 0] M_AXI_GP0_ARCACHE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARLEN" *) +output wire [3 : 0] M_AXI_GP0_ARLEN; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARQOS" *) +output wire [3 : 0] M_AXI_GP0_ARQOS; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWCACHE" *) +output wire [3 : 0] M_AXI_GP0_AWCACHE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWLEN" *) +output wire [3 : 0] M_AXI_GP0_AWLEN; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWQOS" *) +output wire [3 : 0] M_AXI_GP0_AWQOS; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 WSTRB" *) +output wire [3 : 0] M_AXI_GP0_WSTRB; +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 M_AXI_GP0_ACLK CLK" *) +input wire M_AXI_GP0_ACLK; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 ARREADY" *) +input wire M_AXI_GP0_ARREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 AWREADY" *) +input wire M_AXI_GP0_AWREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 BVALID" *) +input wire M_AXI_GP0_BVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 RLAST" *) +input wire M_AXI_GP0_RLAST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 RVALID" *) +input wire M_AXI_GP0_RVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 WREADY" *) +input wire M_AXI_GP0_WREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 BID" *) +input wire [11 : 0] M_AXI_GP0_BID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 RID" *) +input wire [11 : 0] M_AXI_GP0_RID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 BRESP" *) +input wire [1 : 0] M_AXI_GP0_BRESP; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 RRESP" *) +input wire [1 : 0] M_AXI_GP0_RRESP; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 M_AXI_GP0 RDATA" *) +input wire [31 : 0] M_AXI_GP0_RDATA; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARREADY" *) +output wire S_AXI_HP0_ARREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWREADY" *) +output wire S_AXI_HP0_AWREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 BVALID" *) +output wire S_AXI_HP0_BVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 RLAST" *) +output wire S_AXI_HP0_RLAST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 RVALID" *) +output wire S_AXI_HP0_RVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 WREADY" *) +output wire S_AXI_HP0_WREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 BRESP" *) +output wire [1 : 0] S_AXI_HP0_BRESP; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 RRESP" *) +output wire [1 : 0] S_AXI_HP0_RRESP; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 BID" *) +output wire [5 : 0] S_AXI_HP0_BID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 RID" *) +output wire [5 : 0] S_AXI_HP0_RID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 RDATA" *) +output wire [63 : 0] S_AXI_HP0_RDATA; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:hpstatusctrl:1.0 S_AXI_HP0_FIFO_CTRL RCOUNT" *) +output wire [7 : 0] S_AXI_HP0_RCOUNT; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:hpstatusctrl:1.0 S_AXI_HP0_FIFO_CTRL WCOUNT" *) +output wire [7 : 0] S_AXI_HP0_WCOUNT; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:hpstatusctrl:1.0 S_AXI_HP0_FIFO_CTRL RACOUNT" *) +output wire [2 : 0] S_AXI_HP0_RACOUNT; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:hpstatusctrl:1.0 S_AXI_HP0_FIFO_CTRL WACOUNT" *) +output wire [5 : 0] S_AXI_HP0_WACOUNT; +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 S_AXI_HP0_ACLK CLK" *) +input wire S_AXI_HP0_ACLK; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARVALID" *) +input wire S_AXI_HP0_ARVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWVALID" *) +input wire S_AXI_HP0_AWVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 BREADY" *) +input wire S_AXI_HP0_BREADY; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:hpstatusctrl:1.0 S_AXI_HP0_FIFO_CTRL RDISSUECAPEN" *) +input wire S_AXI_HP0_RDISSUECAP1_EN; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 RREADY" *) +input wire S_AXI_HP0_RREADY; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 WLAST" *) +input wire S_AXI_HP0_WLAST; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:hpstatusctrl:1.0 S_AXI_HP0_FIFO_CTRL WRISSUECAPEN" *) +input wire S_AXI_HP0_WRISSUECAP1_EN; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 WVALID" *) +input wire S_AXI_HP0_WVALID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARBURST" *) +input wire [1 : 0] S_AXI_HP0_ARBURST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARLOCK" *) +input wire [1 : 0] S_AXI_HP0_ARLOCK; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARSIZE" *) +input wire [2 : 0] S_AXI_HP0_ARSIZE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWBURST" *) +input wire [1 : 0] S_AXI_HP0_AWBURST; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWLOCK" *) +input wire [1 : 0] S_AXI_HP0_AWLOCK; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWSIZE" *) +input wire [2 : 0] S_AXI_HP0_AWSIZE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARPROT" *) +input wire [2 : 0] S_AXI_HP0_ARPROT; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWPROT" *) +input wire [2 : 0] S_AXI_HP0_AWPROT; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARADDR" *) +input wire [31 : 0] S_AXI_HP0_ARADDR; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWADDR" *) +input wire [31 : 0] S_AXI_HP0_AWADDR; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARCACHE" *) +input wire [3 : 0] S_AXI_HP0_ARCACHE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARLEN" *) +input wire [3 : 0] S_AXI_HP0_ARLEN; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARQOS" *) +input wire [3 : 0] S_AXI_HP0_ARQOS; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWCACHE" *) +input wire [3 : 0] S_AXI_HP0_AWCACHE; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWLEN" *) +input wire [3 : 0] S_AXI_HP0_AWLEN; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWQOS" *) +input wire [3 : 0] S_AXI_HP0_AWQOS; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 ARID" *) +input wire [5 : 0] S_AXI_HP0_ARID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 AWID" *) +input wire [5 : 0] S_AXI_HP0_AWID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 WID" *) +input wire [5 : 0] S_AXI_HP0_WID; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 WDATA" *) +input wire [63 : 0] S_AXI_HP0_WDATA; +(* X_INTERFACE_INFO = "xilinx.com:interface:aximm:1.0 S_AXI_HP0 WSTRB" *) +input wire [7 : 0] S_AXI_HP0_WSTRB; +(* X_INTERFACE_INFO = "xilinx.com:signal:interrupt:1.0 IRQ_F2P INTERRUPT" *) +input wire [15 : 0] IRQ_F2P; +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 FCLK_CLK0 CLK" *) +output wire FCLK_CLK0; +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 FCLK_CLK1 CLK" *) +output wire FCLK_CLK1; +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 FCLK_CLK2 CLK" *) +output wire FCLK_CLK2; +(* X_INTERFACE_INFO = "xilinx.com:signal:clock:1.0 FCLK_CLK3 CLK" *) +output wire FCLK_CLK3; +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 FCLK_RESET0_N RST" *) +output wire FCLK_RESET0_N; +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 FCLK_RESET1_N RST" *) +output wire FCLK_RESET1_N; +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 FCLK_RESET2_N RST" *) +output wire FCLK_RESET2_N; +(* X_INTERFACE_INFO = "xilinx.com:signal:reset:1.0 FCLK_RESET3_N RST" *) +output wire FCLK_RESET3_N; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:fixedio:1.0 FIXED_IO MIO" *) +inout wire [53 : 0] MIO; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR CAS_N" *) +inout wire DDR_CAS_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR CKE" *) +inout wire DDR_CKE; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR CK_N" *) +inout wire DDR_Clk_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR CK_P" *) +inout wire DDR_Clk; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR CS_N" *) +inout wire DDR_CS_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR RESET_N" *) +inout wire DDR_DRSTB; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR ODT" *) +inout wire DDR_ODT; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR RAS_N" *) +inout wire DDR_RAS_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR WE_N" *) +inout wire DDR_WEB; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR BA" *) +inout wire [2 : 0] DDR_BankAddr; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR ADDR" *) +inout wire [14 : 0] DDR_Addr; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:fixedio:1.0 FIXED_IO DDR_VRN" *) +inout wire DDR_VRN; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:fixedio:1.0 FIXED_IO DDR_VRP" *) +inout wire DDR_VRP; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR DM" *) +inout wire [3 : 0] DDR_DM; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR DQ" *) +inout wire [31 : 0] DDR_DQ; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR DQS_N" *) +inout wire [3 : 0] DDR_DQS_n; +(* X_INTERFACE_INFO = "xilinx.com:interface:ddrx:1.0 DDR DQS_P" *) +inout wire [3 : 0] DDR_DQS; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:fixedio:1.0 FIXED_IO PS_SRSTB" *) +inout wire PS_SRSTB; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:fixedio:1.0 FIXED_IO PS_CLK" *) +inout wire PS_CLK; +(* X_INTERFACE_INFO = "xilinx.com:display_processing_system7:fixedio:1.0 FIXED_IO PS_PORB" *) +inout wire PS_PORB; + + processing_system7_v5_5_processing_system7 #( + .C_EN_EMIO_PJTAG(0), + .C_EN_EMIO_ENET0(0), + .C_EN_EMIO_ENET1(0), + .C_EN_EMIO_TRACE(0), + .C_INCLUDE_TRACE_BUFFER(0), + .C_TRACE_BUFFER_FIFO_SIZE(128), + .USE_TRACE_DATA_EDGE_DETECTOR(0), + .C_TRACE_PIPELINE_WIDTH(8), + .C_TRACE_BUFFER_CLOCK_DELAY(12), + .C_EMIO_GPIO_WIDTH(64), + .C_INCLUDE_ACP_TRANS_CHECK(0), + .C_USE_DEFAULT_ACP_USER_VAL(0), + .C_S_AXI_ACP_ARUSER_VAL(31), + .C_S_AXI_ACP_AWUSER_VAL(31), + .C_M_AXI_GP0_ID_WIDTH(12), + .C_M_AXI_GP0_ENABLE_STATIC_REMAP(0), + .C_M_AXI_GP1_ID_WIDTH(12), + .C_M_AXI_GP1_ENABLE_STATIC_REMAP(0), + .C_S_AXI_GP0_ID_WIDTH(6), + .C_S_AXI_GP1_ID_WIDTH(6), + .C_S_AXI_ACP_ID_WIDTH(3), + .C_S_AXI_HP0_ID_WIDTH(6), + .C_S_AXI_HP0_DATA_WIDTH(64), + .C_S_AXI_HP1_ID_WIDTH(6), + .C_S_AXI_HP1_DATA_WIDTH(64), + .C_S_AXI_HP2_ID_WIDTH(6), + .C_S_AXI_HP2_DATA_WIDTH(64), + .C_S_AXI_HP3_ID_WIDTH(6), + .C_S_AXI_HP3_DATA_WIDTH(64), + .C_M_AXI_GP0_THREAD_ID_WIDTH(12), + .C_M_AXI_GP1_THREAD_ID_WIDTH(12), + .C_NUM_F2P_INTR_INPUTS(16), + .C_IRQ_F2P_MODE("DIRECT"), + .C_DQ_WIDTH(32), + .C_DQS_WIDTH(4), + .C_DM_WIDTH(4), + .C_MIO_PRIMITIVE(54), + .C_TRACE_INTERNAL_WIDTH(2), + .C_USE_AXI_NONSECURE(0), + .C_USE_M_AXI_GP0(1), + .C_USE_M_AXI_GP1(0), + .C_USE_S_AXI_GP0(0), + .C_USE_S_AXI_HP0(1), + .C_USE_S_AXI_HP1(0), + .C_USE_S_AXI_HP2(0), + .C_USE_S_AXI_HP3(0), + .C_USE_S_AXI_ACP(0), + .C_PS7_SI_REV("PRODUCTION"), + .C_FCLK_CLK0_BUF("true"), + .C_FCLK_CLK1_BUF("true"), + .C_FCLK_CLK2_BUF("true"), + .C_FCLK_CLK3_BUF("true"), + .C_PACKAGE_NAME("clg400") + ) inst ( + .CAN0_PHY_TX(), + .CAN0_PHY_RX(1'B0), + .CAN1_PHY_TX(), + .CAN1_PHY_RX(1'B0), + .ENET0_GMII_TX_EN(), + .ENET0_GMII_TX_ER(), + .ENET0_MDIO_MDC(), + .ENET0_MDIO_O(), + .ENET0_MDIO_T(), + .ENET0_PTP_DELAY_REQ_RX(ENET0_PTP_DELAY_REQ_RX), + .ENET0_PTP_DELAY_REQ_TX(ENET0_PTP_DELAY_REQ_TX), + .ENET0_PTP_PDELAY_REQ_RX(ENET0_PTP_PDELAY_REQ_RX), + .ENET0_PTP_PDELAY_REQ_TX(ENET0_PTP_PDELAY_REQ_TX), + .ENET0_PTP_PDELAY_RESP_RX(ENET0_PTP_PDELAY_RESP_RX), + .ENET0_PTP_PDELAY_RESP_TX(ENET0_PTP_PDELAY_RESP_TX), + .ENET0_PTP_SYNC_FRAME_RX(ENET0_PTP_SYNC_FRAME_RX), + .ENET0_PTP_SYNC_FRAME_TX(ENET0_PTP_SYNC_FRAME_TX), + .ENET0_SOF_RX(ENET0_SOF_RX), + .ENET0_SOF_TX(ENET0_SOF_TX), + .ENET0_GMII_TXD(), + .ENET0_GMII_COL(1'B0), + .ENET0_GMII_CRS(1'B0), + .ENET0_GMII_RX_CLK(1'B0), + .ENET0_GMII_RX_DV(1'B0), + .ENET0_GMII_RX_ER(1'B0), + .ENET0_GMII_TX_CLK(1'B0), + .ENET0_MDIO_I(1'B0), + .ENET0_EXT_INTIN(1'B0), + .ENET0_GMII_RXD(8'B0), + .ENET1_GMII_TX_EN(), + .ENET1_GMII_TX_ER(), + .ENET1_MDIO_MDC(), + .ENET1_MDIO_O(), + .ENET1_MDIO_T(), + .ENET1_PTP_DELAY_REQ_RX(), + .ENET1_PTP_DELAY_REQ_TX(), + .ENET1_PTP_PDELAY_REQ_RX(), + .ENET1_PTP_PDELAY_REQ_TX(), + .ENET1_PTP_PDELAY_RESP_RX(), + .ENET1_PTP_PDELAY_RESP_TX(), + .ENET1_PTP_SYNC_FRAME_RX(), + .ENET1_PTP_SYNC_FRAME_TX(), + .ENET1_SOF_RX(), + .ENET1_SOF_TX(), + .ENET1_GMII_TXD(), + .ENET1_GMII_COL(1'B0), + .ENET1_GMII_CRS(1'B0), + .ENET1_GMII_RX_CLK(1'B0), + .ENET1_GMII_RX_DV(1'B0), + .ENET1_GMII_RX_ER(1'B0), + .ENET1_GMII_TX_CLK(1'B0), + .ENET1_MDIO_I(1'B0), + .ENET1_EXT_INTIN(1'B0), + .ENET1_GMII_RXD(8'B0), + .GPIO_I(GPIO_I), + .GPIO_O(GPIO_O), + .GPIO_T(GPIO_T), + .I2C0_SDA_I(I2C0_SDA_I), + .I2C0_SDA_O(I2C0_SDA_O), + .I2C0_SDA_T(I2C0_SDA_T), + .I2C0_SCL_I(I2C0_SCL_I), + .I2C0_SCL_O(I2C0_SCL_O), + .I2C0_SCL_T(I2C0_SCL_T), + .I2C1_SDA_I(1'B0), + .I2C1_SDA_O(), + .I2C1_SDA_T(), + .I2C1_SCL_I(1'B0), + .I2C1_SCL_O(), + .I2C1_SCL_T(), + .PJTAG_TCK(1'B0), + .PJTAG_TMS(1'B0), + .PJTAG_TDI(1'B0), + .PJTAG_TDO(), + .SDIO0_CLK(), + .SDIO0_CLK_FB(1'B0), + .SDIO0_CMD_O(), + .SDIO0_CMD_I(1'B0), + .SDIO0_CMD_T(), + .SDIO0_DATA_I(4'B0), + .SDIO0_DATA_O(), + .SDIO0_DATA_T(), + .SDIO0_LED(), + .SDIO0_CDN(1'B0), + .SDIO0_WP(1'B0), + .SDIO0_BUSPOW(), + .SDIO0_BUSVOLT(), + .SDIO1_CLK(), + .SDIO1_CLK_FB(1'B0), + .SDIO1_CMD_O(), + .SDIO1_CMD_I(1'B0), + .SDIO1_CMD_T(), + .SDIO1_DATA_I(4'B0), + .SDIO1_DATA_O(), + .SDIO1_DATA_T(), + .SDIO1_LED(), + .SDIO1_CDN(1'B0), + .SDIO1_WP(1'B0), + .SDIO1_BUSPOW(), + .SDIO1_BUSVOLT(), + .SPI0_SCLK_I(1'B0), + .SPI0_SCLK_O(), + .SPI0_SCLK_T(), + .SPI0_MOSI_I(1'B0), + .SPI0_MOSI_O(), + .SPI0_MOSI_T(), + .SPI0_MISO_I(1'B0), + .SPI0_MISO_O(), + .SPI0_MISO_T(), + .SPI0_SS_I(1'B0), + .SPI0_SS_O(), + .SPI0_SS1_O(), + .SPI0_SS2_O(), + .SPI0_SS_T(), + .SPI1_SCLK_I(1'B0), + .SPI1_SCLK_O(), + .SPI1_SCLK_T(), + .SPI1_MOSI_I(1'B0), + .SPI1_MOSI_O(), + .SPI1_MOSI_T(), + .SPI1_MISO_I(1'B0), + .SPI1_MISO_O(), + .SPI1_MISO_T(), + .SPI1_SS_I(1'B0), + .SPI1_SS_O(), + .SPI1_SS1_O(), + .SPI1_SS2_O(), + .SPI1_SS_T(), + .UART0_DTRN(), + .UART0_RTSN(), + .UART0_TX(), + .UART0_CTSN(1'B0), + .UART0_DCDN(1'B0), + .UART0_DSRN(1'B0), + .UART0_RIN(1'B0), + .UART0_RX(1'B1), + .UART1_DTRN(), + .UART1_RTSN(), + .UART1_TX(), + .UART1_CTSN(1'B0), + .UART1_DCDN(1'B0), + .UART1_DSRN(1'B0), + .UART1_RIN(1'B0), + .UART1_RX(1'B1), + .TTC0_WAVE0_OUT(), + .TTC0_WAVE1_OUT(), + .TTC0_WAVE2_OUT(), + .TTC0_CLK0_IN(1'B0), + .TTC0_CLK1_IN(1'B0), + .TTC0_CLK2_IN(1'B0), + .TTC1_WAVE0_OUT(), + .TTC1_WAVE1_OUT(), + .TTC1_WAVE2_OUT(), + .TTC1_CLK0_IN(1'B0), + .TTC1_CLK1_IN(1'B0), + .TTC1_CLK2_IN(1'B0), + .WDT_CLK_IN(1'B0), + .WDT_RST_OUT(), + .TRACE_CLK(1'B0), + .TRACE_CLK_OUT(), + .TRACE_CTL(), + .TRACE_DATA(), + .USB0_PORT_INDCTL(USB0_PORT_INDCTL), + .USB0_VBUS_PWRSELECT(USB0_VBUS_PWRSELECT), + .USB0_VBUS_PWRFAULT(USB0_VBUS_PWRFAULT), + .USB1_PORT_INDCTL(), + .USB1_VBUS_PWRSELECT(), + .USB1_VBUS_PWRFAULT(1'B0), + .SRAM_INTIN(1'B0), + .M_AXI_GP0_ARVALID(M_AXI_GP0_ARVALID), + .M_AXI_GP0_AWVALID(M_AXI_GP0_AWVALID), + .M_AXI_GP0_BREADY(M_AXI_GP0_BREADY), + .M_AXI_GP0_RREADY(M_AXI_GP0_RREADY), + .M_AXI_GP0_WLAST(M_AXI_GP0_WLAST), + .M_AXI_GP0_WVALID(M_AXI_GP0_WVALID), + .M_AXI_GP0_ARID(M_AXI_GP0_ARID), + .M_AXI_GP0_AWID(M_AXI_GP0_AWID), + .M_AXI_GP0_WID(M_AXI_GP0_WID), + .M_AXI_GP0_ARBURST(M_AXI_GP0_ARBURST), + .M_AXI_GP0_ARLOCK(M_AXI_GP0_ARLOCK), + .M_AXI_GP0_ARSIZE(M_AXI_GP0_ARSIZE), + .M_AXI_GP0_AWBURST(M_AXI_GP0_AWBURST), + .M_AXI_GP0_AWLOCK(M_AXI_GP0_AWLOCK), + .M_AXI_GP0_AWSIZE(M_AXI_GP0_AWSIZE), + .M_AXI_GP0_ARPROT(M_AXI_GP0_ARPROT), + .M_AXI_GP0_AWPROT(M_AXI_GP0_AWPROT), + .M_AXI_GP0_ARADDR(M_AXI_GP0_ARADDR), + .M_AXI_GP0_AWADDR(M_AXI_GP0_AWADDR), + .M_AXI_GP0_WDATA(M_AXI_GP0_WDATA), + .M_AXI_GP0_ARCACHE(M_AXI_GP0_ARCACHE), + .M_AXI_GP0_ARLEN(M_AXI_GP0_ARLEN), + .M_AXI_GP0_ARQOS(M_AXI_GP0_ARQOS), + .M_AXI_GP0_AWCACHE(M_AXI_GP0_AWCACHE), + .M_AXI_GP0_AWLEN(M_AXI_GP0_AWLEN), + .M_AXI_GP0_AWQOS(M_AXI_GP0_AWQOS), + .M_AXI_GP0_WSTRB(M_AXI_GP0_WSTRB), + .M_AXI_GP0_ACLK(M_AXI_GP0_ACLK), + .M_AXI_GP0_ARREADY(M_AXI_GP0_ARREADY), + .M_AXI_GP0_AWREADY(M_AXI_GP0_AWREADY), + .M_AXI_GP0_BVALID(M_AXI_GP0_BVALID), + .M_AXI_GP0_RLAST(M_AXI_GP0_RLAST), + .M_AXI_GP0_RVALID(M_AXI_GP0_RVALID), + .M_AXI_GP0_WREADY(M_AXI_GP0_WREADY), + .M_AXI_GP0_BID(M_AXI_GP0_BID), + .M_AXI_GP0_RID(M_AXI_GP0_RID), + .M_AXI_GP0_BRESP(M_AXI_GP0_BRESP), + .M_AXI_GP0_RRESP(M_AXI_GP0_RRESP), + .M_AXI_GP0_RDATA(M_AXI_GP0_RDATA), + .M_AXI_GP1_ARVALID(), + .M_AXI_GP1_AWVALID(), + .M_AXI_GP1_BREADY(), + .M_AXI_GP1_RREADY(), + .M_AXI_GP1_WLAST(), + .M_AXI_GP1_WVALID(), + .M_AXI_GP1_ARID(), + .M_AXI_GP1_AWID(), + .M_AXI_GP1_WID(), + .M_AXI_GP1_ARBURST(), + .M_AXI_GP1_ARLOCK(), + .M_AXI_GP1_ARSIZE(), + .M_AXI_GP1_AWBURST(), + .M_AXI_GP1_AWLOCK(), + .M_AXI_GP1_AWSIZE(), + .M_AXI_GP1_ARPROT(), + .M_AXI_GP1_AWPROT(), + .M_AXI_GP1_ARADDR(), + .M_AXI_GP1_AWADDR(), + .M_AXI_GP1_WDATA(), + .M_AXI_GP1_ARCACHE(), + .M_AXI_GP1_ARLEN(), + .M_AXI_GP1_ARQOS(), + .M_AXI_GP1_AWCACHE(), + .M_AXI_GP1_AWLEN(), + .M_AXI_GP1_AWQOS(), + .M_AXI_GP1_WSTRB(), + .M_AXI_GP1_ACLK(1'B0), + .M_AXI_GP1_ARREADY(1'B0), + .M_AXI_GP1_AWREADY(1'B0), + .M_AXI_GP1_BVALID(1'B0), + .M_AXI_GP1_RLAST(1'B0), + .M_AXI_GP1_RVALID(1'B0), + .M_AXI_GP1_WREADY(1'B0), + .M_AXI_GP1_BID(12'B0), + .M_AXI_GP1_RID(12'B0), + .M_AXI_GP1_BRESP(2'B0), + .M_AXI_GP1_RRESP(2'B0), + .M_AXI_GP1_RDATA(32'B0), + .S_AXI_GP0_ARREADY(), + .S_AXI_GP0_AWREADY(), + .S_AXI_GP0_BVALID(), + .S_AXI_GP0_RLAST(), + .S_AXI_GP0_RVALID(), + .S_AXI_GP0_WREADY(), + .S_AXI_GP0_BRESP(), + .S_AXI_GP0_RRESP(), + .S_AXI_GP0_RDATA(), + .S_AXI_GP0_BID(), + .S_AXI_GP0_RID(), + .S_AXI_GP0_ACLK(1'B0), + .S_AXI_GP0_ARVALID(1'B0), + .S_AXI_GP0_AWVALID(1'B0), + .S_AXI_GP0_BREADY(1'B0), + .S_AXI_GP0_RREADY(1'B0), + .S_AXI_GP0_WLAST(1'B0), + .S_AXI_GP0_WVALID(1'B0), + .S_AXI_GP0_ARBURST(2'B0), + .S_AXI_GP0_ARLOCK(2'B0), + .S_AXI_GP0_ARSIZE(3'B0), + .S_AXI_GP0_AWBURST(2'B0), + .S_AXI_GP0_AWLOCK(2'B0), + .S_AXI_GP0_AWSIZE(3'B0), + .S_AXI_GP0_ARPROT(3'B0), + .S_AXI_GP0_AWPROT(3'B0), + .S_AXI_GP0_ARADDR(32'B0), + .S_AXI_GP0_AWADDR(32'B0), + .S_AXI_GP0_WDATA(32'B0), + .S_AXI_GP0_ARCACHE(4'B0), + .S_AXI_GP0_ARLEN(4'B0), + .S_AXI_GP0_ARQOS(4'B0), + .S_AXI_GP0_AWCACHE(4'B0), + .S_AXI_GP0_AWLEN(4'B0), + .S_AXI_GP0_AWQOS(4'B0), + .S_AXI_GP0_WSTRB(4'B0), + .S_AXI_GP0_ARID(6'B0), + .S_AXI_GP0_AWID(6'B0), + .S_AXI_GP0_WID(6'B0), + .S_AXI_GP1_ARREADY(), + .S_AXI_GP1_AWREADY(), + .S_AXI_GP1_BVALID(), + .S_AXI_GP1_RLAST(), + .S_AXI_GP1_RVALID(), + .S_AXI_GP1_WREADY(), + .S_AXI_GP1_BRESP(), + .S_AXI_GP1_RRESP(), + .S_AXI_GP1_RDATA(), + .S_AXI_GP1_BID(), + .S_AXI_GP1_RID(), + .S_AXI_GP1_ACLK(1'B0), + .S_AXI_GP1_ARVALID(1'B0), + .S_AXI_GP1_AWVALID(1'B0), + .S_AXI_GP1_BREADY(1'B0), + .S_AXI_GP1_RREADY(1'B0), + .S_AXI_GP1_WLAST(1'B0), + .S_AXI_GP1_WVALID(1'B0), + .S_AXI_GP1_ARBURST(2'B0), + .S_AXI_GP1_ARLOCK(2'B0), + .S_AXI_GP1_ARSIZE(3'B0), + .S_AXI_GP1_AWBURST(2'B0), + .S_AXI_GP1_AWLOCK(2'B0), + .S_AXI_GP1_AWSIZE(3'B0), + .S_AXI_GP1_ARPROT(3'B0), + .S_AXI_GP1_AWPROT(3'B0), + .S_AXI_GP1_ARADDR(32'B0), + .S_AXI_GP1_AWADDR(32'B0), + .S_AXI_GP1_WDATA(32'B0), + .S_AXI_GP1_ARCACHE(4'B0), + .S_AXI_GP1_ARLEN(4'B0), + .S_AXI_GP1_ARQOS(4'B0), + .S_AXI_GP1_AWCACHE(4'B0), + .S_AXI_GP1_AWLEN(4'B0), + .S_AXI_GP1_AWQOS(4'B0), + .S_AXI_GP1_WSTRB(4'B0), + .S_AXI_GP1_ARID(6'B0), + .S_AXI_GP1_AWID(6'B0), + .S_AXI_GP1_WID(6'B0), + .S_AXI_ACP_ARREADY(), + .S_AXI_ACP_AWREADY(), + .S_AXI_ACP_BVALID(), + .S_AXI_ACP_RLAST(), + .S_AXI_ACP_RVALID(), + .S_AXI_ACP_WREADY(), + .S_AXI_ACP_BRESP(), + .S_AXI_ACP_RRESP(), + .S_AXI_ACP_BID(), + .S_AXI_ACP_RID(), + .S_AXI_ACP_RDATA(), + .S_AXI_ACP_ACLK(1'B0), + .S_AXI_ACP_ARVALID(1'B0), + .S_AXI_ACP_AWVALID(1'B0), + .S_AXI_ACP_BREADY(1'B0), + .S_AXI_ACP_RREADY(1'B0), + .S_AXI_ACP_WLAST(1'B0), + .S_AXI_ACP_WVALID(1'B0), + .S_AXI_ACP_ARID(3'B0), + .S_AXI_ACP_ARPROT(3'B0), + .S_AXI_ACP_AWID(3'B0), + .S_AXI_ACP_AWPROT(3'B0), + .S_AXI_ACP_WID(3'B0), + .S_AXI_ACP_ARADDR(32'B0), + .S_AXI_ACP_AWADDR(32'B0), + .S_AXI_ACP_ARCACHE(4'B0), + .S_AXI_ACP_ARLEN(4'B0), + .S_AXI_ACP_ARQOS(4'B0), + .S_AXI_ACP_AWCACHE(4'B0), + .S_AXI_ACP_AWLEN(4'B0), + .S_AXI_ACP_AWQOS(4'B0), + .S_AXI_ACP_ARBURST(2'B0), + .S_AXI_ACP_ARLOCK(2'B0), + .S_AXI_ACP_ARSIZE(3'B0), + .S_AXI_ACP_AWBURST(2'B0), + .S_AXI_ACP_AWLOCK(2'B0), + .S_AXI_ACP_AWSIZE(3'B0), + .S_AXI_ACP_ARUSER(5'B0), + .S_AXI_ACP_AWUSER(5'B0), + .S_AXI_ACP_WDATA(64'B0), + .S_AXI_ACP_WSTRB(8'B0), + .S_AXI_HP0_ARREADY(S_AXI_HP0_ARREADY), + .S_AXI_HP0_AWREADY(S_AXI_HP0_AWREADY), + .S_AXI_HP0_BVALID(S_AXI_HP0_BVALID), + .S_AXI_HP0_RLAST(S_AXI_HP0_RLAST), + .S_AXI_HP0_RVALID(S_AXI_HP0_RVALID), + .S_AXI_HP0_WREADY(S_AXI_HP0_WREADY), + .S_AXI_HP0_BRESP(S_AXI_HP0_BRESP), + .S_AXI_HP0_RRESP(S_AXI_HP0_RRESP), + .S_AXI_HP0_BID(S_AXI_HP0_BID), + .S_AXI_HP0_RID(S_AXI_HP0_RID), + .S_AXI_HP0_RDATA(S_AXI_HP0_RDATA), + .S_AXI_HP0_RCOUNT(S_AXI_HP0_RCOUNT), + .S_AXI_HP0_WCOUNT(S_AXI_HP0_WCOUNT), + .S_AXI_HP0_RACOUNT(S_AXI_HP0_RACOUNT), + .S_AXI_HP0_WACOUNT(S_AXI_HP0_WACOUNT), + .S_AXI_HP0_ACLK(S_AXI_HP0_ACLK), + .S_AXI_HP0_ARVALID(S_AXI_HP0_ARVALID), + .S_AXI_HP0_AWVALID(S_AXI_HP0_AWVALID), + .S_AXI_HP0_BREADY(S_AXI_HP0_BREADY), + .S_AXI_HP0_RDISSUECAP1_EN(S_AXI_HP0_RDISSUECAP1_EN), + .S_AXI_HP0_RREADY(S_AXI_HP0_RREADY), + .S_AXI_HP0_WLAST(S_AXI_HP0_WLAST), + .S_AXI_HP0_WRISSUECAP1_EN(S_AXI_HP0_WRISSUECAP1_EN), + .S_AXI_HP0_WVALID(S_AXI_HP0_WVALID), + .S_AXI_HP0_ARBURST(S_AXI_HP0_ARBURST), + .S_AXI_HP0_ARLOCK(S_AXI_HP0_ARLOCK), + .S_AXI_HP0_ARSIZE(S_AXI_HP0_ARSIZE), + .S_AXI_HP0_AWBURST(S_AXI_HP0_AWBURST), + .S_AXI_HP0_AWLOCK(S_AXI_HP0_AWLOCK), + .S_AXI_HP0_AWSIZE(S_AXI_HP0_AWSIZE), + .S_AXI_HP0_ARPROT(S_AXI_HP0_ARPROT), + .S_AXI_HP0_AWPROT(S_AXI_HP0_AWPROT), + .S_AXI_HP0_ARADDR(S_AXI_HP0_ARADDR), + .S_AXI_HP0_AWADDR(S_AXI_HP0_AWADDR), + .S_AXI_HP0_ARCACHE(S_AXI_HP0_ARCACHE), + .S_AXI_HP0_ARLEN(S_AXI_HP0_ARLEN), + .S_AXI_HP0_ARQOS(S_AXI_HP0_ARQOS), + .S_AXI_HP0_AWCACHE(S_AXI_HP0_AWCACHE), + .S_AXI_HP0_AWLEN(S_AXI_HP0_AWLEN), + .S_AXI_HP0_AWQOS(S_AXI_HP0_AWQOS), + .S_AXI_HP0_ARID(S_AXI_HP0_ARID), + .S_AXI_HP0_AWID(S_AXI_HP0_AWID), + .S_AXI_HP0_WID(S_AXI_HP0_WID), + .S_AXI_HP0_WDATA(S_AXI_HP0_WDATA), + .S_AXI_HP0_WSTRB(S_AXI_HP0_WSTRB), + .S_AXI_HP1_ARREADY(), + .S_AXI_HP1_AWREADY(), + .S_AXI_HP1_BVALID(), + .S_AXI_HP1_RLAST(), + .S_AXI_HP1_RVALID(), + .S_AXI_HP1_WREADY(), + .S_AXI_HP1_BRESP(), + .S_AXI_HP1_RRESP(), + .S_AXI_HP1_BID(), + .S_AXI_HP1_RID(), + .S_AXI_HP1_RDATA(), + .S_AXI_HP1_RCOUNT(), + .S_AXI_HP1_WCOUNT(), + .S_AXI_HP1_RACOUNT(), + .S_AXI_HP1_WACOUNT(), + .S_AXI_HP1_ACLK(1'B0), + .S_AXI_HP1_ARVALID(1'B0), + .S_AXI_HP1_AWVALID(1'B0), + .S_AXI_HP1_BREADY(1'B0), + .S_AXI_HP1_RDISSUECAP1_EN(1'B0), + .S_AXI_HP1_RREADY(1'B0), + .S_AXI_HP1_WLAST(1'B0), + .S_AXI_HP1_WRISSUECAP1_EN(1'B0), + .S_AXI_HP1_WVALID(1'B0), + .S_AXI_HP1_ARBURST(2'B0), + .S_AXI_HP1_ARLOCK(2'B0), + .S_AXI_HP1_ARSIZE(3'B0), + .S_AXI_HP1_AWBURST(2'B0), + .S_AXI_HP1_AWLOCK(2'B0), + .S_AXI_HP1_AWSIZE(3'B0), + .S_AXI_HP1_ARPROT(3'B0), + .S_AXI_HP1_AWPROT(3'B0), + .S_AXI_HP1_ARADDR(32'B0), + .S_AXI_HP1_AWADDR(32'B0), + .S_AXI_HP1_ARCACHE(4'B0), + .S_AXI_HP1_ARLEN(4'B0), + .S_AXI_HP1_ARQOS(4'B0), + .S_AXI_HP1_AWCACHE(4'B0), + .S_AXI_HP1_AWLEN(4'B0), + .S_AXI_HP1_AWQOS(4'B0), + .S_AXI_HP1_ARID(6'B0), + .S_AXI_HP1_AWID(6'B0), + .S_AXI_HP1_WID(6'B0), + .S_AXI_HP1_WDATA(64'B0), + .S_AXI_HP1_WSTRB(8'B0), + .S_AXI_HP2_ARREADY(), + .S_AXI_HP2_AWREADY(), + .S_AXI_HP2_BVALID(), + .S_AXI_HP2_RLAST(), + .S_AXI_HP2_RVALID(), + .S_AXI_HP2_WREADY(), + .S_AXI_HP2_BRESP(), + .S_AXI_HP2_RRESP(), + .S_AXI_HP2_BID(), + .S_AXI_HP2_RID(), + .S_AXI_HP2_RDATA(), + .S_AXI_HP2_RCOUNT(), + .S_AXI_HP2_WCOUNT(), + .S_AXI_HP2_RACOUNT(), + .S_AXI_HP2_WACOUNT(), + .S_AXI_HP2_ACLK(1'B0), + .S_AXI_HP2_ARVALID(1'B0), + .S_AXI_HP2_AWVALID(1'B0), + .S_AXI_HP2_BREADY(1'B0), + .S_AXI_HP2_RDISSUECAP1_EN(1'B0), + .S_AXI_HP2_RREADY(1'B0), + .S_AXI_HP2_WLAST(1'B0), + .S_AXI_HP2_WRISSUECAP1_EN(1'B0), + .S_AXI_HP2_WVALID(1'B0), + .S_AXI_HP2_ARBURST(2'B0), + .S_AXI_HP2_ARLOCK(2'B0), + .S_AXI_HP2_ARSIZE(3'B0), + .S_AXI_HP2_AWBURST(2'B0), + .S_AXI_HP2_AWLOCK(2'B0), + .S_AXI_HP2_AWSIZE(3'B0), + .S_AXI_HP2_ARPROT(3'B0), + .S_AXI_HP2_AWPROT(3'B0), + .S_AXI_HP2_ARADDR(32'B0), + .S_AXI_HP2_AWADDR(32'B0), + .S_AXI_HP2_ARCACHE(4'B0), + .S_AXI_HP2_ARLEN(4'B0), + .S_AXI_HP2_ARQOS(4'B0), + .S_AXI_HP2_AWCACHE(4'B0), + .S_AXI_HP2_AWLEN(4'B0), + .S_AXI_HP2_AWQOS(4'B0), + .S_AXI_HP2_ARID(6'B0), + .S_AXI_HP2_AWID(6'B0), + .S_AXI_HP2_WID(6'B0), + .S_AXI_HP2_WDATA(64'B0), + .S_AXI_HP2_WSTRB(8'B0), + .S_AXI_HP3_ARREADY(), + .S_AXI_HP3_AWREADY(), + .S_AXI_HP3_BVALID(), + .S_AXI_HP3_RLAST(), + .S_AXI_HP3_RVALID(), + .S_AXI_HP3_WREADY(), + .S_AXI_HP3_BRESP(), + .S_AXI_HP3_RRESP(), + .S_AXI_HP3_BID(), + .S_AXI_HP3_RID(), + .S_AXI_HP3_RDATA(), + .S_AXI_HP3_RCOUNT(), + .S_AXI_HP3_WCOUNT(), + .S_AXI_HP3_RACOUNT(), + .S_AXI_HP3_WACOUNT(), + .S_AXI_HP3_ACLK(1'B0), + .S_AXI_HP3_ARVALID(1'B0), + .S_AXI_HP3_AWVALID(1'B0), + .S_AXI_HP3_BREADY(1'B0), + .S_AXI_HP3_RDISSUECAP1_EN(1'B0), + .S_AXI_HP3_RREADY(1'B0), + .S_AXI_HP3_WLAST(1'B0), + .S_AXI_HP3_WRISSUECAP1_EN(1'B0), + .S_AXI_HP3_WVALID(1'B0), + .S_AXI_HP3_ARBURST(2'B0), + .S_AXI_HP3_ARLOCK(2'B0), + .S_AXI_HP3_ARSIZE(3'B0), + .S_AXI_HP3_AWBURST(2'B0), + .S_AXI_HP3_AWLOCK(2'B0), + .S_AXI_HP3_AWSIZE(3'B0), + .S_AXI_HP3_ARPROT(3'B0), + .S_AXI_HP3_AWPROT(3'B0), + .S_AXI_HP3_ARADDR(32'B0), + .S_AXI_HP3_AWADDR(32'B0), + .S_AXI_HP3_ARCACHE(4'B0), + .S_AXI_HP3_ARLEN(4'B0), + .S_AXI_HP3_ARQOS(4'B0), + .S_AXI_HP3_AWCACHE(4'B0), + .S_AXI_HP3_AWLEN(4'B0), + .S_AXI_HP3_AWQOS(4'B0), + .S_AXI_HP3_ARID(6'B0), + .S_AXI_HP3_AWID(6'B0), + .S_AXI_HP3_WID(6'B0), + .S_AXI_HP3_WDATA(64'B0), + .S_AXI_HP3_WSTRB(8'B0), + .IRQ_P2F_DMAC_ABORT(), + .IRQ_P2F_DMAC0(), + .IRQ_P2F_DMAC1(), + .IRQ_P2F_DMAC2(), + .IRQ_P2F_DMAC3(), + .IRQ_P2F_DMAC4(), + .IRQ_P2F_DMAC5(), + .IRQ_P2F_DMAC6(), + .IRQ_P2F_DMAC7(), + .IRQ_P2F_SMC(), + .IRQ_P2F_QSPI(), + .IRQ_P2F_CTI(), + .IRQ_P2F_GPIO(), + .IRQ_P2F_USB0(), + .IRQ_P2F_ENET0(), + .IRQ_P2F_ENET_WAKE0(), + .IRQ_P2F_SDIO0(), + .IRQ_P2F_I2C0(), + .IRQ_P2F_SPI0(), + .IRQ_P2F_UART0(), + .IRQ_P2F_CAN0(), + .IRQ_P2F_USB1(), + .IRQ_P2F_ENET1(), + .IRQ_P2F_ENET_WAKE1(), + .IRQ_P2F_SDIO1(), + .IRQ_P2F_I2C1(), + .IRQ_P2F_SPI1(), + .IRQ_P2F_UART1(), + .IRQ_P2F_CAN1(), + .IRQ_F2P(IRQ_F2P), + .Core0_nFIQ(1'B0), + .Core0_nIRQ(1'B0), + .Core1_nFIQ(1'B0), + .Core1_nIRQ(1'B0), + .DMA0_DATYPE(), + .DMA0_DAVALID(), + .DMA0_DRREADY(), + .DMA1_DATYPE(), + .DMA1_DAVALID(), + .DMA1_DRREADY(), + .DMA2_DATYPE(), + .DMA2_DAVALID(), + .DMA2_DRREADY(), + .DMA3_DATYPE(), + .DMA3_DAVALID(), + .DMA3_DRREADY(), + .DMA0_ACLK(1'B0), + .DMA0_DAREADY(1'B0), + .DMA0_DRLAST(1'B0), + .DMA0_DRVALID(1'B0), + .DMA1_ACLK(1'B0), + .DMA1_DAREADY(1'B0), + .DMA1_DRLAST(1'B0), + .DMA1_DRVALID(1'B0), + .DMA2_ACLK(1'B0), + .DMA2_DAREADY(1'B0), + .DMA2_DRLAST(1'B0), + .DMA2_DRVALID(1'B0), + .DMA3_ACLK(1'B0), + .DMA3_DAREADY(1'B0), + .DMA3_DRLAST(1'B0), + .DMA3_DRVALID(1'B0), + .DMA0_DRTYPE(2'B0), + .DMA1_DRTYPE(2'B0), + .DMA2_DRTYPE(2'B0), + .DMA3_DRTYPE(2'B0), + .FCLK_CLK0(FCLK_CLK0), + .FCLK_CLK1(FCLK_CLK1), + .FCLK_CLK2(FCLK_CLK2), + .FCLK_CLK3(FCLK_CLK3), + .FCLK_CLKTRIG0_N(1'B0), + .FCLK_CLKTRIG1_N(1'B0), + .FCLK_CLKTRIG2_N(1'B0), + .FCLK_CLKTRIG3_N(1'B0), + .FCLK_RESET0_N(FCLK_RESET0_N), + .FCLK_RESET1_N(FCLK_RESET1_N), + .FCLK_RESET2_N(FCLK_RESET2_N), + .FCLK_RESET3_N(FCLK_RESET3_N), + .FTMD_TRACEIN_DATA(32'B0), + .FTMD_TRACEIN_VALID(1'B0), + .FTMD_TRACEIN_CLK(1'B0), + .FTMD_TRACEIN_ATID(4'B0), + .FTMT_F2P_TRIG_0(1'B0), + .FTMT_F2P_TRIGACK_0(), + .FTMT_F2P_TRIG_1(1'B0), + .FTMT_F2P_TRIGACK_1(), + .FTMT_F2P_TRIG_2(1'B0), + .FTMT_F2P_TRIGACK_2(), + .FTMT_F2P_TRIG_3(1'B0), + .FTMT_F2P_TRIGACK_3(), + .FTMT_F2P_DEBUG(32'B0), + .FTMT_P2F_TRIGACK_0(1'B0), + .FTMT_P2F_TRIG_0(), + .FTMT_P2F_TRIGACK_1(1'B0), + .FTMT_P2F_TRIG_1(), + .FTMT_P2F_TRIGACK_2(1'B0), + .FTMT_P2F_TRIG_2(), + .FTMT_P2F_TRIGACK_3(1'B0), + .FTMT_P2F_TRIG_3(), + .FTMT_P2F_DEBUG(), + .FPGA_IDLE_N(1'B0), + .EVENT_EVENTO(), + .EVENT_STANDBYWFE(), + .EVENT_STANDBYWFI(), + .EVENT_EVENTI(1'B0), + .DDR_ARB(4'B0), + .MIO(MIO), + .DDR_CAS_n(DDR_CAS_n), + .DDR_CKE(DDR_CKE), + .DDR_Clk_n(DDR_Clk_n), + .DDR_Clk(DDR_Clk), + .DDR_CS_n(DDR_CS_n), + .DDR_DRSTB(DDR_DRSTB), + .DDR_ODT(DDR_ODT), + .DDR_RAS_n(DDR_RAS_n), + .DDR_WEB(DDR_WEB), + .DDR_BankAddr(DDR_BankAddr), + .DDR_Addr(DDR_Addr), + .DDR_VRN(DDR_VRN), + .DDR_VRP(DDR_VRP), + .DDR_DM(DDR_DM), + .DDR_DQ(DDR_DQ), + .DDR_DQS_n(DDR_DQS_n), + .DDR_DQS(DDR_DQS), + .PS_SRSTB(PS_SRSTB), + .PS_CLK(PS_CLK), + .PS_PORB(PS_PORB) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.upgrade_log new file mode 100644 index 0000000..3984711 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.upgrade_log @@ -0,0 +1,22 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:12 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_processing_system7_0_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_processing_system7_0_0 (xilinx.com:ip:processing_system7:5.5 (Rev. 1)) to current project options. + +2. Upgrade messages +------------------- + +WARNING: upgrade cannot add parameter PCW_TRACE_INTERNAL_WIDTH with default value 32 : a parameter called PCW_TRACE_INTERNAL_WIDTH already exists in processing_system7_v5_5 +WARNING: upgrade cannot add parameter PCW_USE_AXI_NONSECURE with default value 0 : a parameter called PCW_USE_AXI_NONSECURE already exists in processing_system7_v5_5 + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.veo new file mode 100644 index 0000000..2620880 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.veo @@ -0,0 +1,200 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:processing_system7:5.5 +// IP Revision: 1 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_processing_system7_0_0 your_instance_name ( + .ENET0_PTP_DELAY_REQ_RX(ENET0_PTP_DELAY_REQ_RX), // output wire ENET0_PTP_DELAY_REQ_RX + .ENET0_PTP_DELAY_REQ_TX(ENET0_PTP_DELAY_REQ_TX), // output wire ENET0_PTP_DELAY_REQ_TX + .ENET0_PTP_PDELAY_REQ_RX(ENET0_PTP_PDELAY_REQ_RX), // output wire ENET0_PTP_PDELAY_REQ_RX + .ENET0_PTP_PDELAY_REQ_TX(ENET0_PTP_PDELAY_REQ_TX), // output wire ENET0_PTP_PDELAY_REQ_TX + .ENET0_PTP_PDELAY_RESP_RX(ENET0_PTP_PDELAY_RESP_RX), // output wire ENET0_PTP_PDELAY_RESP_RX + .ENET0_PTP_PDELAY_RESP_TX(ENET0_PTP_PDELAY_RESP_TX), // output wire ENET0_PTP_PDELAY_RESP_TX + .ENET0_PTP_SYNC_FRAME_RX(ENET0_PTP_SYNC_FRAME_RX), // output wire ENET0_PTP_SYNC_FRAME_RX + .ENET0_PTP_SYNC_FRAME_TX(ENET0_PTP_SYNC_FRAME_TX), // output wire ENET0_PTP_SYNC_FRAME_TX + .ENET0_SOF_RX(ENET0_SOF_RX), // output wire ENET0_SOF_RX + .ENET0_SOF_TX(ENET0_SOF_TX), // output wire ENET0_SOF_TX + .GPIO_I(GPIO_I), // input wire [63 : 0] GPIO_I + .GPIO_O(GPIO_O), // output wire [63 : 0] GPIO_O + .GPIO_T(GPIO_T), // output wire [63 : 0] GPIO_T + .I2C0_SDA_I(I2C0_SDA_I), // input wire I2C0_SDA_I + .I2C0_SDA_O(I2C0_SDA_O), // output wire I2C0_SDA_O + .I2C0_SDA_T(I2C0_SDA_T), // output wire I2C0_SDA_T + .I2C0_SCL_I(I2C0_SCL_I), // input wire I2C0_SCL_I + .I2C0_SCL_O(I2C0_SCL_O), // output wire I2C0_SCL_O + .I2C0_SCL_T(I2C0_SCL_T), // output wire I2C0_SCL_T + .USB0_PORT_INDCTL(USB0_PORT_INDCTL), // output wire [1 : 0] USB0_PORT_INDCTL + .USB0_VBUS_PWRSELECT(USB0_VBUS_PWRSELECT), // output wire USB0_VBUS_PWRSELECT + .USB0_VBUS_PWRFAULT(USB0_VBUS_PWRFAULT), // input wire USB0_VBUS_PWRFAULT + .M_AXI_GP0_ARVALID(M_AXI_GP0_ARVALID), // output wire M_AXI_GP0_ARVALID + .M_AXI_GP0_AWVALID(M_AXI_GP0_AWVALID), // output wire M_AXI_GP0_AWVALID + .M_AXI_GP0_BREADY(M_AXI_GP0_BREADY), // output wire M_AXI_GP0_BREADY + .M_AXI_GP0_RREADY(M_AXI_GP0_RREADY), // output wire M_AXI_GP0_RREADY + .M_AXI_GP0_WLAST(M_AXI_GP0_WLAST), // output wire M_AXI_GP0_WLAST + .M_AXI_GP0_WVALID(M_AXI_GP0_WVALID), // output wire M_AXI_GP0_WVALID + .M_AXI_GP0_ARID(M_AXI_GP0_ARID), // output wire [11 : 0] M_AXI_GP0_ARID + .M_AXI_GP0_AWID(M_AXI_GP0_AWID), // output wire [11 : 0] M_AXI_GP0_AWID + .M_AXI_GP0_WID(M_AXI_GP0_WID), // output wire [11 : 0] M_AXI_GP0_WID + .M_AXI_GP0_ARBURST(M_AXI_GP0_ARBURST), // output wire [1 : 0] M_AXI_GP0_ARBURST + .M_AXI_GP0_ARLOCK(M_AXI_GP0_ARLOCK), // output wire [1 : 0] M_AXI_GP0_ARLOCK + .M_AXI_GP0_ARSIZE(M_AXI_GP0_ARSIZE), // output wire [2 : 0] M_AXI_GP0_ARSIZE + .M_AXI_GP0_AWBURST(M_AXI_GP0_AWBURST), // output wire [1 : 0] M_AXI_GP0_AWBURST + .M_AXI_GP0_AWLOCK(M_AXI_GP0_AWLOCK), // output wire [1 : 0] M_AXI_GP0_AWLOCK + .M_AXI_GP0_AWSIZE(M_AXI_GP0_AWSIZE), // output wire [2 : 0] M_AXI_GP0_AWSIZE + .M_AXI_GP0_ARPROT(M_AXI_GP0_ARPROT), // output wire [2 : 0] M_AXI_GP0_ARPROT + .M_AXI_GP0_AWPROT(M_AXI_GP0_AWPROT), // output wire [2 : 0] M_AXI_GP0_AWPROT + .M_AXI_GP0_ARADDR(M_AXI_GP0_ARADDR), // output wire [31 : 0] M_AXI_GP0_ARADDR + .M_AXI_GP0_AWADDR(M_AXI_GP0_AWADDR), // output wire [31 : 0] M_AXI_GP0_AWADDR + .M_AXI_GP0_WDATA(M_AXI_GP0_WDATA), // output wire [31 : 0] M_AXI_GP0_WDATA + .M_AXI_GP0_ARCACHE(M_AXI_GP0_ARCACHE), // output wire [3 : 0] M_AXI_GP0_ARCACHE + .M_AXI_GP0_ARLEN(M_AXI_GP0_ARLEN), // output wire [3 : 0] M_AXI_GP0_ARLEN + .M_AXI_GP0_ARQOS(M_AXI_GP0_ARQOS), // output wire [3 : 0] M_AXI_GP0_ARQOS + .M_AXI_GP0_AWCACHE(M_AXI_GP0_AWCACHE), // output wire [3 : 0] M_AXI_GP0_AWCACHE + .M_AXI_GP0_AWLEN(M_AXI_GP0_AWLEN), // output wire [3 : 0] M_AXI_GP0_AWLEN + .M_AXI_GP0_AWQOS(M_AXI_GP0_AWQOS), // output wire [3 : 0] M_AXI_GP0_AWQOS + .M_AXI_GP0_WSTRB(M_AXI_GP0_WSTRB), // output wire [3 : 0] M_AXI_GP0_WSTRB + .M_AXI_GP0_ACLK(M_AXI_GP0_ACLK), // input wire M_AXI_GP0_ACLK + .M_AXI_GP0_ARREADY(M_AXI_GP0_ARREADY), // input wire M_AXI_GP0_ARREADY + .M_AXI_GP0_AWREADY(M_AXI_GP0_AWREADY), // input wire M_AXI_GP0_AWREADY + .M_AXI_GP0_BVALID(M_AXI_GP0_BVALID), // input wire M_AXI_GP0_BVALID + .M_AXI_GP0_RLAST(M_AXI_GP0_RLAST), // input wire M_AXI_GP0_RLAST + .M_AXI_GP0_RVALID(M_AXI_GP0_RVALID), // input wire M_AXI_GP0_RVALID + .M_AXI_GP0_WREADY(M_AXI_GP0_WREADY), // input wire M_AXI_GP0_WREADY + .M_AXI_GP0_BID(M_AXI_GP0_BID), // input wire [11 : 0] M_AXI_GP0_BID + .M_AXI_GP0_RID(M_AXI_GP0_RID), // input wire [11 : 0] M_AXI_GP0_RID + .M_AXI_GP0_BRESP(M_AXI_GP0_BRESP), // input wire [1 : 0] M_AXI_GP0_BRESP + .M_AXI_GP0_RRESP(M_AXI_GP0_RRESP), // input wire [1 : 0] M_AXI_GP0_RRESP + .M_AXI_GP0_RDATA(M_AXI_GP0_RDATA), // input wire [31 : 0] M_AXI_GP0_RDATA + .S_AXI_HP0_ARREADY(S_AXI_HP0_ARREADY), // output wire S_AXI_HP0_ARREADY + .S_AXI_HP0_AWREADY(S_AXI_HP0_AWREADY), // output wire S_AXI_HP0_AWREADY + .S_AXI_HP0_BVALID(S_AXI_HP0_BVALID), // output wire S_AXI_HP0_BVALID + .S_AXI_HP0_RLAST(S_AXI_HP0_RLAST), // output wire S_AXI_HP0_RLAST + .S_AXI_HP0_RVALID(S_AXI_HP0_RVALID), // output wire S_AXI_HP0_RVALID + .S_AXI_HP0_WREADY(S_AXI_HP0_WREADY), // output wire S_AXI_HP0_WREADY + .S_AXI_HP0_BRESP(S_AXI_HP0_BRESP), // output wire [1 : 0] S_AXI_HP0_BRESP + .S_AXI_HP0_RRESP(S_AXI_HP0_RRESP), // output wire [1 : 0] S_AXI_HP0_RRESP + .S_AXI_HP0_BID(S_AXI_HP0_BID), // output wire [5 : 0] S_AXI_HP0_BID + .S_AXI_HP0_RID(S_AXI_HP0_RID), // output wire [5 : 0] S_AXI_HP0_RID + .S_AXI_HP0_RDATA(S_AXI_HP0_RDATA), // output wire [63 : 0] S_AXI_HP0_RDATA + .S_AXI_HP0_RCOUNT(S_AXI_HP0_RCOUNT), // output wire [7 : 0] S_AXI_HP0_RCOUNT + .S_AXI_HP0_WCOUNT(S_AXI_HP0_WCOUNT), // output wire [7 : 0] S_AXI_HP0_WCOUNT + .S_AXI_HP0_RACOUNT(S_AXI_HP0_RACOUNT), // output wire [2 : 0] S_AXI_HP0_RACOUNT + .S_AXI_HP0_WACOUNT(S_AXI_HP0_WACOUNT), // output wire [5 : 0] S_AXI_HP0_WACOUNT + .S_AXI_HP0_ACLK(S_AXI_HP0_ACLK), // input wire S_AXI_HP0_ACLK + .S_AXI_HP0_ARVALID(S_AXI_HP0_ARVALID), // input wire S_AXI_HP0_ARVALID + .S_AXI_HP0_AWVALID(S_AXI_HP0_AWVALID), // input wire S_AXI_HP0_AWVALID + .S_AXI_HP0_BREADY(S_AXI_HP0_BREADY), // input wire S_AXI_HP0_BREADY + .S_AXI_HP0_RDISSUECAP1_EN(S_AXI_HP0_RDISSUECAP1_EN), // input wire S_AXI_HP0_RDISSUECAP1_EN + .S_AXI_HP0_RREADY(S_AXI_HP0_RREADY), // input wire S_AXI_HP0_RREADY + .S_AXI_HP0_WLAST(S_AXI_HP0_WLAST), // input wire S_AXI_HP0_WLAST + .S_AXI_HP0_WRISSUECAP1_EN(S_AXI_HP0_WRISSUECAP1_EN), // input wire S_AXI_HP0_WRISSUECAP1_EN + .S_AXI_HP0_WVALID(S_AXI_HP0_WVALID), // input wire S_AXI_HP0_WVALID + .S_AXI_HP0_ARBURST(S_AXI_HP0_ARBURST), // input wire [1 : 0] S_AXI_HP0_ARBURST + .S_AXI_HP0_ARLOCK(S_AXI_HP0_ARLOCK), // input wire [1 : 0] S_AXI_HP0_ARLOCK + .S_AXI_HP0_ARSIZE(S_AXI_HP0_ARSIZE), // input wire [2 : 0] S_AXI_HP0_ARSIZE + .S_AXI_HP0_AWBURST(S_AXI_HP0_AWBURST), // input wire [1 : 0] S_AXI_HP0_AWBURST + .S_AXI_HP0_AWLOCK(S_AXI_HP0_AWLOCK), // input wire [1 : 0] S_AXI_HP0_AWLOCK + .S_AXI_HP0_AWSIZE(S_AXI_HP0_AWSIZE), // input wire [2 : 0] S_AXI_HP0_AWSIZE + .S_AXI_HP0_ARPROT(S_AXI_HP0_ARPROT), // input wire [2 : 0] S_AXI_HP0_ARPROT + .S_AXI_HP0_AWPROT(S_AXI_HP0_AWPROT), // input wire [2 : 0] S_AXI_HP0_AWPROT + .S_AXI_HP0_ARADDR(S_AXI_HP0_ARADDR), // input wire [31 : 0] S_AXI_HP0_ARADDR + .S_AXI_HP0_AWADDR(S_AXI_HP0_AWADDR), // input wire [31 : 0] S_AXI_HP0_AWADDR + .S_AXI_HP0_ARCACHE(S_AXI_HP0_ARCACHE), // input wire [3 : 0] S_AXI_HP0_ARCACHE + .S_AXI_HP0_ARLEN(S_AXI_HP0_ARLEN), // input wire [3 : 0] S_AXI_HP0_ARLEN + .S_AXI_HP0_ARQOS(S_AXI_HP0_ARQOS), // input wire [3 : 0] S_AXI_HP0_ARQOS + .S_AXI_HP0_AWCACHE(S_AXI_HP0_AWCACHE), // input wire [3 : 0] S_AXI_HP0_AWCACHE + .S_AXI_HP0_AWLEN(S_AXI_HP0_AWLEN), // input wire [3 : 0] S_AXI_HP0_AWLEN + .S_AXI_HP0_AWQOS(S_AXI_HP0_AWQOS), // input wire [3 : 0] S_AXI_HP0_AWQOS + .S_AXI_HP0_ARID(S_AXI_HP0_ARID), // input wire [5 : 0] S_AXI_HP0_ARID + .S_AXI_HP0_AWID(S_AXI_HP0_AWID), // input wire [5 : 0] S_AXI_HP0_AWID + .S_AXI_HP0_WID(S_AXI_HP0_WID), // input wire [5 : 0] S_AXI_HP0_WID + .S_AXI_HP0_WDATA(S_AXI_HP0_WDATA), // input wire [63 : 0] S_AXI_HP0_WDATA + .S_AXI_HP0_WSTRB(S_AXI_HP0_WSTRB), // input wire [7 : 0] S_AXI_HP0_WSTRB + .IRQ_F2P(IRQ_F2P), // input wire [15 : 0] IRQ_F2P + .FCLK_CLK0(FCLK_CLK0), // output wire FCLK_CLK0 + .FCLK_CLK1(FCLK_CLK1), // output wire FCLK_CLK1 + .FCLK_CLK2(FCLK_CLK2), // output wire FCLK_CLK2 + .FCLK_CLK3(FCLK_CLK3), // output wire FCLK_CLK3 + .FCLK_RESET0_N(FCLK_RESET0_N), // output wire FCLK_RESET0_N + .FCLK_RESET1_N(FCLK_RESET1_N), // output wire FCLK_RESET1_N + .FCLK_RESET2_N(FCLK_RESET2_N), // output wire FCLK_RESET2_N + .FCLK_RESET3_N(FCLK_RESET3_N), // output wire FCLK_RESET3_N + .MIO(MIO), // inout wire [53 : 0] MIO + .DDR_CAS_n(DDR_CAS_n), // inout wire DDR_CAS_n + .DDR_CKE(DDR_CKE), // inout wire DDR_CKE + .DDR_Clk_n(DDR_Clk_n), // inout wire DDR_Clk_n + .DDR_Clk(DDR_Clk), // inout wire DDR_Clk + .DDR_CS_n(DDR_CS_n), // inout wire DDR_CS_n + .DDR_DRSTB(DDR_DRSTB), // inout wire DDR_DRSTB + .DDR_ODT(DDR_ODT), // inout wire DDR_ODT + .DDR_RAS_n(DDR_RAS_n), // inout wire DDR_RAS_n + .DDR_WEB(DDR_WEB), // inout wire DDR_WEB + .DDR_BankAddr(DDR_BankAddr), // inout wire [2 : 0] DDR_BankAddr + .DDR_Addr(DDR_Addr), // inout wire [14 : 0] DDR_Addr + .DDR_VRN(DDR_VRN), // inout wire DDR_VRN + .DDR_VRP(DDR_VRP), // inout wire DDR_VRP + .DDR_DM(DDR_DM), // inout wire [3 : 0] DDR_DM + .DDR_DQ(DDR_DQ), // inout wire [31 : 0] DDR_DQ + .DDR_DQS_n(DDR_DQS_n), // inout wire [3 : 0] DDR_DQS_n + .DDR_DQS(DDR_DQS), // inout wire [3 : 0] DDR_DQS + .PS_SRSTB(PS_SRSTB), // inout wire PS_SRSTB + .PS_CLK(PS_CLK), // inout wire PS_CLK + .PS_PORB(PS_PORB) // inout wire PS_PORB +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_processing_system7_0_0.v when simulating +// the core, z_turn_processing_system7_0_0. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xci new file mode 100644 index 0000000..b7103f5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xci @@ -0,0 +1,1134 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_processing_system7_0_0 + + + 0x00100000 + 0x3FFFFFFF + 0xE0000000 + 0xE0000FFF + 0xE0001000 + 0xE0001FFF + 0xE0004000 + 0xE0004FFF + 0xE0005000 + 0xE0005FFF + 0xE0006000 + 0xE0006FFF + 0xE0007000 + 0xE0007FFF + 0xE0008000 + 0xE0008FFF + 0xE0009000 + 0xE0009FFF + 0xE000A000 + 0xE000AFFF + 0xE000B000 + 0xE000BFFF + 0xE000C000 + 0xE000CFFF + 0xE0100000 + 0xE0100FFF + 0xE0101000 + 0xE0101FFF + 0xE0102000 + 0xE0102fff + 0xE0103000 + 0xE0103fff + 0xE0104000 + 0xE0104fff + 0xE0105000 + 0xE0105fff + true + true + true + true + 533.333333 + 3 + 15 + 10 + 7 + 6 + 7 + 7 + 49.5 + 36.0 + 45.0 + 0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 101.239 + 79.5025 + 60.536 + 71.7715 + 104.5365 + 70.676 + 59.1615 + 81.319 + 54.563 + 54.563 + 54.563 + 54.563 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + 160 + -0.047 + -0.025 + -0.006 + -0.017 + 0.080 + 0.063 + 0.057 + 0.068 + 667 + 33.333333 + 666.666666 + 10.159 + 200 + 100 + 60 + 60 + 100 + 100 + 166.666666 + 100 + -1 + -1 + 111.111115 + 133.333333 + 50 + 133.333333 + 133.333333 + 133.333333 + 133.333333 + 133.333333 + 133.333333 + 200 + 200 + 166.667 + 50 + 100 + 200 + 666.666687 + 533.333374 + 10.158731 + 200.000000 + 10.000000 + 125.000000 + 10.000000 + 60 + 60 + 100.000000 + 100.000000 + 10.000000 + 100.000000 + 23.8095 + 23.8095 + 50 + 111.111115 + 50 + 200.000000 + 200.000000 + 166.666672 + 50.000000 + 100.000000 + 200.000000 + 111.111115 + 111.111115 + 111.111115 + 111.111115 + 111.111115 + 111.111115 + 166666672 + 50000000 + 100000000 + 200000000 + 0 + 2 + 2 + 1 + 5 + 10 + 10 + 1 + 10 + 1 + 6 + 20 + 10 + 5 + 1 + 1 + 1 + 1 + 8 + 1 + 1 + 1 + 1 + 35 + 3 + 5 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 40 + 30 + 32 + 1333.333 + 1000.000 + 1066.667 + 0 + 1 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 50 + 10 + 10 + 10 + 10 + 100 + 10 + 10 + 10 + 0 + 0 + 0 + 0 + 0 + 8 + 0 + 128 + 0 + 12 + 0 + <Select> + <Select> + <Select> + <Select> + <Select> + <Select> + <Select> + <Select> + 0 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 64 + 115200 + 115200 + 0 + 12 + 0 + 0 + 12 + 12 + 0 + 0 + 12 + 6 + 6 + 3 + 0 + 0 + 31 + 31 + 6 + 64 + 6 + 64 + 6 + 64 + 6 + 64 + 16 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 32 + 4 + 4 + 54 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + DIRECT + 0 + 0 + 0 + 0 + 3 + None + None + LVCMOS 3.3V + LVCMOS 1.8V + 1 + 0 + DDR 3 + Disabled + 32 Bit + 8 + Normal (0-85) + MT41K256M16 RE-15E + 16 Bits + 4096 MBits + DDR3_1066F + 1 + 1 + 1 + 0 + 0 + <Select> + <Select> + <Select> + <Select> + <Select> + <Select> + <Select> + <Select> + 0 + 0 + 0 + 0 + HPR(0)/LPR(32) + 2 + 15 + 2 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 1 + MIO 1 .. 6 + 1 + MIO 1 .. 6 + 0 + <Select> + 0 + <Select> + 1 + MIO 8 + 0xFCFFFFFF + 1 + MIO 16 .. 27 + 1 + MIO 52 .. 53 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 1 + MIO 40 .. 45 + 1 + MIO 46 + 1 + MIO 47 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 1 + MIO 48 .. 49 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 1 + MIO 14 .. 15 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 2 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + <Select> + 1 + MIO 28 .. 39 + 1 + Share reset pin + 1 + MIO 51 + 0 + <Select> + 0 + <Select> + 1 + EMIO + 1 + EMIO + 0 + <Select> + 1 + MIO 12 .. 13 + 0 + <Select> + 0 + <Select> + 0 + <Select> + 0 + 1 + MIO + 1 + 64 + 6:2:1 + 1000 Mbps + 1000 Mbps + ARM PLL + DDR PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + IO PLL + External + External + External + CPU_1X + CPU_1X + CPU_1X + CPU_1X + CPU_1X + CPU_1X + CPU_1X + DDR PLL + IO PLL + Active Low + Active Low + Active Low + enabled + LVCMOS 3.3V + inout + slow + enabled + LVCMOS 3.3V + out + slow + disabled + LVCMOS 3.3V + inout + slow + disabled + LVCMOS 3.3V + inout + slow + disabled + LVCMOS 3.3V + inout + slow + disabled + LVCMOS 3.3V + inout + slow + disabled + LVCMOS 3.3V + out + slow + disabled + LVCMOS 3.3V + out + slow + disabled + LVCMOS 3.3V + out + slow + enabled + LVCMOS 3.3V + inout + slow + enabled + LVCMOS 3.3V + in + slow + enabled + LVCMOS 3.3V + out + slow + enabled + LVCMOS 3.3V + inout + slow + enabled + LVCMOS 3.3V + inout + slow + enabled + LVCMOS 3.3V + in + slow + enabled + LVCMOS 3.3V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + inout + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + in + slow + enabled + LVCMOS 1.8V + inout + slow + disabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + out + slow + enabled + LVCMOS 1.8V + inout + slow + None + NA + GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#Quad SPI Flash#GPIO#GPIO#GPIO#I2C 1#I2C 1#CAN 0#CAN 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#UART 1#UART 1#GPIO#USB Reset#Enet 0#Enet 0 + gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]#qspi0_sclk#gpio[7]#qspi_fbclk#gpio[9]#gpio[10]#gpio[11]#scl#sda#rx#tx#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#cd#wp#tx#rx#gpio[50]#reset#mdc#mdio + PRODUCTION + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 2 + 2 + 0 + 1 + 1 + 1 + 1 + 2 + 2 + 0 + 1 + 1 + 1 + 1 + 2 + 2 + 0 + 1 + 1 + 1 + 1 + 2 + 2 + 0 + 1 + 1 + 1 + 1 + 1 + 2 + 2 + NA + NA + NA + NA + NA + NA + NA + clg400 + z_turn_processing_system7_0_0 + 0 + 8 + 8 + z_turn_processing_system7_0_0_FCLK_CLK1 + 0.000 + 16 + READ_WRITE + 0 + 0 + 0 + 0 + 0 + 32 + 12 + 50000000 + AXI3 + 32 + AXI3 + READ_WRITE + 64 + 32 + 0 + 0 + 0 + 0 + 0 + 6 + 1 + 16 + 100000000 + z_turn_processing_system7_0_0_FCLK_CLK2 + 166666672 + + + z_turn_processing_system7_0_0_FCLK_CLK0 + 0.000 + 50000000 + + + z_turn_processing_system7_0_0_FCLK_CLK1 + 0.000 + 100000000 + + + z_turn_processing_system7_0_0_FCLK_CLK2 + 0.000 + 200000000 + + + z_turn_processing_system7_0_0_FCLK_CLK3 + 0.000 + 16 + LEVEL_HIGH + 50000000 + z_turn_processing_system7_0_0_FCLK_CLK1 + 100000000 + z_turn_processing_system7_0_0_FCLK_CLK2 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 1 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xdc b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xdc new file mode 100644 index 0000000..0e95a86 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xdc @@ -0,0 +1,712 @@ +############################################################################ +## +## Xilinx, Inc. 2006 www.xilinx.com +############################################################################ +## File name : ps7_constraints.xdc +## +## Details : Constraints file +## FPGA family: zynq +## FPGA: xc7z020clg400-1 +## Device Size: xc7z020 +## Package: clg400 +## Speedgrade: -1 +## +## +############################################################################ +############################################################################ +############################################################################ +# Clock constraints # +############################################################################ +create_clock -name clk_fpga_2 -period "10" [get_pins "PS7_i/FCLKCLK[2]"] +set_input_jitter clk_fpga_2 0.3 +#The clocks are asynchronous, user should constrain them appropriately.# +create_clock -name clk_fpga_0 -period "6" [get_pins "PS7_i/FCLKCLK[0]"] +set_input_jitter clk_fpga_0 0.18 +#The clocks are asynchronous, user should constrain them appropriately.# +create_clock -name clk_fpga_1 -period "20" [get_pins "PS7_i/FCLKCLK[1]"] +set_input_jitter clk_fpga_1 0.6 +#The clocks are asynchronous, user should constrain them appropriately.# +create_clock -name clk_fpga_3 -period "5" [get_pins "PS7_i/FCLKCLK[3]"] +set_input_jitter clk_fpga_3 0.15 +#The clocks are asynchronous, user should constrain them appropriately.# + + +############################################################################ +# I/O STANDARDS and Location Constraints # +############################################################################ + +# Enet 0 / mdio / MIO[53] +set_property iostandard "LVCMOS18" [get_ports "MIO[53]"] +set_property PACKAGE_PIN "C11" [get_ports "MIO[53]"] +set_property slew "slow" [get_ports "MIO[53]"] +set_property drive "8" [get_ports "MIO[53]"] +set_property pullup "TRUE" [get_ports "MIO[53]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[53]"] +# Enet 0 / mdc / MIO[52] +set_property iostandard "LVCMOS18" [get_ports "MIO[52]"] +set_property PACKAGE_PIN "C10" [get_ports "MIO[52]"] +set_property slew "slow" [get_ports "MIO[52]"] +set_property drive "8" [get_ports "MIO[52]"] +set_property pullup "TRUE" [get_ports "MIO[52]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[52]"] +# USB Reset / reset / MIO[51] +set_property iostandard "LVCMOS18" [get_ports "MIO[51]"] +set_property PACKAGE_PIN "B9" [get_ports "MIO[51]"] +set_property slew "slow" [get_ports "MIO[51]"] +set_property drive "8" [get_ports "MIO[51]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[51]"] +# GPIO / gpio[50] / MIO[50] +set_property iostandard "LVCMOS18" [get_ports "MIO[50]"] +set_property PACKAGE_PIN "B13" [get_ports "MIO[50]"] +set_property slew "slow" [get_ports "MIO[50]"] +set_property drive "8" [get_ports "MIO[50]"] +set_property pullup "TRUE" [get_ports "MIO[50]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[50]"] +# UART 1 / rx / MIO[49] +set_property iostandard "LVCMOS18" [get_ports "MIO[49]"] +set_property PACKAGE_PIN "C12" [get_ports "MIO[49]"] +set_property slew "slow" [get_ports "MIO[49]"] +set_property drive "8" [get_ports "MIO[49]"] +set_property pullup "TRUE" [get_ports "MIO[49]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[49]"] +# UART 1 / tx / MIO[48] +set_property iostandard "LVCMOS18" [get_ports "MIO[48]"] +set_property PACKAGE_PIN "B12" [get_ports "MIO[48]"] +set_property slew "slow" [get_ports "MIO[48]"] +set_property drive "8" [get_ports "MIO[48]"] +set_property pullup "TRUE" [get_ports "MIO[48]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[48]"] +# SD 0 / wp / MIO[47] +set_property iostandard "LVCMOS18" [get_ports "MIO[47]"] +set_property PACKAGE_PIN "B14" [get_ports "MIO[47]"] +set_property slew "slow" [get_ports "MIO[47]"] +set_property drive "8" [get_ports "MIO[47]"] +set_property pullup "TRUE" [get_ports "MIO[47]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[47]"] +# SD 0 / cd / MIO[46] +set_property iostandard "LVCMOS18" [get_ports "MIO[46]"] +set_property PACKAGE_PIN "D16" [get_ports "MIO[46]"] +set_property slew "slow" [get_ports "MIO[46]"] +set_property drive "8" [get_ports "MIO[46]"] +set_property pullup "TRUE" [get_ports "MIO[46]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[46]"] +# SD 0 / data[3] / MIO[45] +set_property iostandard "LVCMOS18" [get_ports "MIO[45]"] +set_property PACKAGE_PIN "B15" [get_ports "MIO[45]"] +set_property slew "slow" [get_ports "MIO[45]"] +set_property drive "8" [get_ports "MIO[45]"] +set_property pullup "TRUE" [get_ports "MIO[45]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[45]"] +# SD 0 / data[2] / MIO[44] +set_property iostandard "LVCMOS18" [get_ports "MIO[44]"] +set_property PACKAGE_PIN "F13" [get_ports "MIO[44]"] +set_property slew "slow" [get_ports "MIO[44]"] +set_property drive "8" [get_ports "MIO[44]"] +set_property pullup "TRUE" [get_ports "MIO[44]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[44]"] +# SD 0 / data[1] / MIO[43] +set_property iostandard "LVCMOS18" [get_ports "MIO[43]"] +set_property PACKAGE_PIN "A9" [get_ports "MIO[43]"] +set_property slew "slow" [get_ports "MIO[43]"] +set_property drive "8" [get_ports "MIO[43]"] +set_property pullup "TRUE" [get_ports "MIO[43]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[43]"] +# SD 0 / data[0] / MIO[42] +set_property iostandard "LVCMOS18" [get_ports "MIO[42]"] +set_property PACKAGE_PIN "E12" [get_ports "MIO[42]"] +set_property slew "slow" [get_ports "MIO[42]"] +set_property drive "8" [get_ports "MIO[42]"] +set_property pullup "TRUE" [get_ports "MIO[42]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[42]"] +# SD 0 / cmd / MIO[41] +set_property iostandard "LVCMOS18" [get_ports "MIO[41]"] +set_property PACKAGE_PIN "C17" [get_ports "MIO[41]"] +set_property slew "slow" [get_ports "MIO[41]"] +set_property drive "8" [get_ports "MIO[41]"] +set_property pullup "TRUE" [get_ports "MIO[41]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[41]"] +# SD 0 / clk / MIO[40] +set_property iostandard "LVCMOS18" [get_ports "MIO[40]"] +set_property PACKAGE_PIN "D14" [get_ports "MIO[40]"] +set_property slew "slow" [get_ports "MIO[40]"] +set_property drive "8" [get_ports "MIO[40]"] +set_property pullup "TRUE" [get_ports "MIO[40]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[40]"] +# USB 0 / data[7] / MIO[39] +set_property iostandard "LVCMOS18" [get_ports "MIO[39]"] +set_property PACKAGE_PIN "C18" [get_ports "MIO[39]"] +set_property slew "slow" [get_ports "MIO[39]"] +set_property drive "8" [get_ports "MIO[39]"] +set_property pullup "TRUE" [get_ports "MIO[39]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[39]"] +# USB 0 / data[6] / MIO[38] +set_property iostandard "LVCMOS18" [get_ports "MIO[38]"] +set_property PACKAGE_PIN "E13" [get_ports "MIO[38]"] +set_property slew "slow" [get_ports "MIO[38]"] +set_property drive "8" [get_ports "MIO[38]"] +set_property pullup "TRUE" [get_ports "MIO[38]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[38]"] +# USB 0 / data[5] / MIO[37] +set_property iostandard "LVCMOS18" [get_ports "MIO[37]"] +set_property PACKAGE_PIN "A10" [get_ports "MIO[37]"] +set_property slew "slow" [get_ports "MIO[37]"] +set_property drive "8" [get_ports "MIO[37]"] +set_property pullup "TRUE" [get_ports "MIO[37]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[37]"] +# USB 0 / clk / MIO[36] +set_property iostandard "LVCMOS18" [get_ports "MIO[36]"] +set_property PACKAGE_PIN "A11" [get_ports "MIO[36]"] +set_property slew "slow" [get_ports "MIO[36]"] +set_property drive "8" [get_ports "MIO[36]"] +set_property pullup "TRUE" [get_ports "MIO[36]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[36]"] +# USB 0 / data[3] / MIO[35] +set_property iostandard "LVCMOS18" [get_ports "MIO[35]"] +set_property PACKAGE_PIN "F12" [get_ports "MIO[35]"] +set_property slew "slow" [get_ports "MIO[35]"] +set_property drive "8" [get_ports "MIO[35]"] +set_property pullup "TRUE" [get_ports "MIO[35]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[35]"] +# USB 0 / data[2] / MIO[34] +set_property iostandard "LVCMOS18" [get_ports "MIO[34]"] +set_property PACKAGE_PIN "A12" [get_ports "MIO[34]"] +set_property slew "slow" [get_ports "MIO[34]"] +set_property drive "8" [get_ports "MIO[34]"] +set_property pullup "TRUE" [get_ports "MIO[34]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[34]"] +# USB 0 / data[1] / MIO[33] +set_property iostandard "LVCMOS18" [get_ports "MIO[33]"] +set_property PACKAGE_PIN "D15" [get_ports "MIO[33]"] +set_property slew "slow" [get_ports "MIO[33]"] +set_property drive "8" [get_ports "MIO[33]"] +set_property pullup "TRUE" [get_ports "MIO[33]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[33]"] +# USB 0 / data[0] / MIO[32] +set_property iostandard "LVCMOS18" [get_ports "MIO[32]"] +set_property PACKAGE_PIN "A14" [get_ports "MIO[32]"] +set_property slew "slow" [get_ports "MIO[32]"] +set_property drive "8" [get_ports "MIO[32]"] +set_property pullup "TRUE" [get_ports "MIO[32]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[32]"] +# USB 0 / nxt / MIO[31] +set_property iostandard "LVCMOS18" [get_ports "MIO[31]"] +set_property PACKAGE_PIN "E16" [get_ports "MIO[31]"] +set_property slew "slow" [get_ports "MIO[31]"] +set_property drive "8" [get_ports "MIO[31]"] +set_property pullup "TRUE" [get_ports "MIO[31]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[31]"] +# USB 0 / stp / MIO[30] +set_property iostandard "LVCMOS18" [get_ports "MIO[30]"] +set_property PACKAGE_PIN "C15" [get_ports "MIO[30]"] +set_property slew "slow" [get_ports "MIO[30]"] +set_property drive "8" [get_ports "MIO[30]"] +set_property pullup "TRUE" [get_ports "MIO[30]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[30]"] +# USB 0 / dir / MIO[29] +set_property iostandard "LVCMOS18" [get_ports "MIO[29]"] +set_property PACKAGE_PIN "C13" [get_ports "MIO[29]"] +set_property slew "slow" [get_ports "MIO[29]"] +set_property drive "8" [get_ports "MIO[29]"] +set_property pullup "TRUE" [get_ports "MIO[29]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[29]"] +# USB 0 / data[4] / MIO[28] +set_property iostandard "LVCMOS18" [get_ports "MIO[28]"] +set_property PACKAGE_PIN "C16" [get_ports "MIO[28]"] +set_property slew "slow" [get_ports "MIO[28]"] +set_property drive "8" [get_ports "MIO[28]"] +set_property pullup "TRUE" [get_ports "MIO[28]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[28]"] +# Enet 0 / rx_ctl / MIO[27] +set_property iostandard "LVCMOS18" [get_ports "MIO[27]"] +set_property PACKAGE_PIN "D13" [get_ports "MIO[27]"] +set_property slew "slow" [get_ports "MIO[27]"] +set_property drive "8" [get_ports "MIO[27]"] +set_property pullup "TRUE" [get_ports "MIO[27]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[27]"] +# Enet 0 / rxd[3] / MIO[26] +set_property iostandard "LVCMOS18" [get_ports "MIO[26]"] +set_property PACKAGE_PIN "A15" [get_ports "MIO[26]"] +set_property slew "slow" [get_ports "MIO[26]"] +set_property drive "8" [get_ports "MIO[26]"] +set_property pullup "TRUE" [get_ports "MIO[26]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[26]"] +# Enet 0 / rxd[2] / MIO[25] +set_property iostandard "LVCMOS18" [get_ports "MIO[25]"] +set_property PACKAGE_PIN "F15" [get_ports "MIO[25]"] +set_property slew "slow" [get_ports "MIO[25]"] +set_property drive "8" [get_ports "MIO[25]"] +set_property pullup "TRUE" [get_ports "MIO[25]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[25]"] +# Enet 0 / rxd[1] / MIO[24] +set_property iostandard "LVCMOS18" [get_ports "MIO[24]"] +set_property PACKAGE_PIN "A16" [get_ports "MIO[24]"] +set_property slew "slow" [get_ports "MIO[24]"] +set_property drive "8" [get_ports "MIO[24]"] +set_property pullup "TRUE" [get_ports "MIO[24]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[24]"] +# Enet 0 / rxd[0] / MIO[23] +set_property iostandard "LVCMOS18" [get_ports "MIO[23]"] +set_property PACKAGE_PIN "D11" [get_ports "MIO[23]"] +set_property slew "slow" [get_ports "MIO[23]"] +set_property drive "8" [get_ports "MIO[23]"] +set_property pullup "TRUE" [get_ports "MIO[23]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[23]"] +# Enet 0 / rx_clk / MIO[22] +set_property iostandard "LVCMOS18" [get_ports "MIO[22]"] +set_property PACKAGE_PIN "B17" [get_ports "MIO[22]"] +set_property slew "slow" [get_ports "MIO[22]"] +set_property drive "8" [get_ports "MIO[22]"] +set_property pullup "TRUE" [get_ports "MIO[22]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[22]"] +# Enet 0 / tx_ctl / MIO[21] +set_property iostandard "LVCMOS18" [get_ports "MIO[21]"] +set_property PACKAGE_PIN "F14" [get_ports "MIO[21]"] +set_property slew "slow" [get_ports "MIO[21]"] +set_property drive "8" [get_ports "MIO[21]"] +set_property pullup "TRUE" [get_ports "MIO[21]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[21]"] +# Enet 0 / txd[3] / MIO[20] +set_property iostandard "LVCMOS18" [get_ports "MIO[20]"] +set_property PACKAGE_PIN "A17" [get_ports "MIO[20]"] +set_property slew "slow" [get_ports "MIO[20]"] +set_property drive "8" [get_ports "MIO[20]"] +set_property pullup "TRUE" [get_ports "MIO[20]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[20]"] +# Enet 0 / txd[2] / MIO[19] +set_property iostandard "LVCMOS18" [get_ports "MIO[19]"] +set_property PACKAGE_PIN "D10" [get_ports "MIO[19]"] +set_property slew "slow" [get_ports "MIO[19]"] +set_property drive "8" [get_ports "MIO[19]"] +set_property pullup "TRUE" [get_ports "MIO[19]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[19]"] +# Enet 0 / txd[1] / MIO[18] +set_property iostandard "LVCMOS18" [get_ports "MIO[18]"] +set_property PACKAGE_PIN "B18" [get_ports "MIO[18]"] +set_property slew "slow" [get_ports "MIO[18]"] +set_property drive "8" [get_ports "MIO[18]"] +set_property pullup "TRUE" [get_ports "MIO[18]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[18]"] +# Enet 0 / txd[0] / MIO[17] +set_property iostandard "LVCMOS18" [get_ports "MIO[17]"] +set_property PACKAGE_PIN "E14" [get_ports "MIO[17]"] +set_property slew "slow" [get_ports "MIO[17]"] +set_property drive "8" [get_ports "MIO[17]"] +set_property pullup "TRUE" [get_ports "MIO[17]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[17]"] +# Enet 0 / tx_clk / MIO[16] +set_property iostandard "LVCMOS18" [get_ports "MIO[16]"] +set_property PACKAGE_PIN "A19" [get_ports "MIO[16]"] +set_property slew "slow" [get_ports "MIO[16]"] +set_property drive "8" [get_ports "MIO[16]"] +set_property pullup "TRUE" [get_ports "MIO[16]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[16]"] +# CAN 0 / tx / MIO[15] +set_property iostandard "LVCMOS33" [get_ports "MIO[15]"] +set_property PACKAGE_PIN "C8" [get_ports "MIO[15]"] +set_property slew "slow" [get_ports "MIO[15]"] +set_property drive "8" [get_ports "MIO[15]"] +set_property pullup "TRUE" [get_ports "MIO[15]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[15]"] +# CAN 0 / rx / MIO[14] +set_property iostandard "LVCMOS33" [get_ports "MIO[14]"] +set_property PACKAGE_PIN "C5" [get_ports "MIO[14]"] +set_property slew "slow" [get_ports "MIO[14]"] +set_property drive "8" [get_ports "MIO[14]"] +set_property pullup "TRUE" [get_ports "MIO[14]"] +set_property PIO_DIRECTION "INPUT" [get_ports "MIO[14]"] +# I2C 1 / sda / MIO[13] +set_property iostandard "LVCMOS33" [get_ports "MIO[13]"] +set_property PACKAGE_PIN "E8" [get_ports "MIO[13]"] +set_property slew "slow" [get_ports "MIO[13]"] +set_property drive "8" [get_ports "MIO[13]"] +set_property pullup "TRUE" [get_ports "MIO[13]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[13]"] +# I2C 1 / scl / MIO[12] +set_property iostandard "LVCMOS33" [get_ports "MIO[12]"] +set_property PACKAGE_PIN "D9" [get_ports "MIO[12]"] +set_property slew "slow" [get_ports "MIO[12]"] +set_property drive "8" [get_ports "MIO[12]"] +set_property pullup "TRUE" [get_ports "MIO[12]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[12]"] +# GPIO / gpio[11] / MIO[11] +set_property iostandard "LVCMOS33" [get_ports "MIO[11]"] +set_property PACKAGE_PIN "C6" [get_ports "MIO[11]"] +set_property slew "slow" [get_ports "MIO[11]"] +set_property drive "8" [get_ports "MIO[11]"] +set_property pullup "TRUE" [get_ports "MIO[11]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[11]"] +# GPIO / gpio[10] / MIO[10] +set_property iostandard "LVCMOS33" [get_ports "MIO[10]"] +set_property PACKAGE_PIN "E9" [get_ports "MIO[10]"] +set_property slew "slow" [get_ports "MIO[10]"] +set_property drive "8" [get_ports "MIO[10]"] +set_property pullup "TRUE" [get_ports "MIO[10]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[10]"] +# GPIO / gpio[9] / MIO[9] +set_property iostandard "LVCMOS33" [get_ports "MIO[9]"] +set_property PACKAGE_PIN "B5" [get_ports "MIO[9]"] +set_property slew "slow" [get_ports "MIO[9]"] +set_property drive "8" [get_ports "MIO[9]"] +set_property pullup "TRUE" [get_ports "MIO[9]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[9]"] +# Quad SPI Flash / qspi_fbclk / MIO[8] +set_property iostandard "LVCMOS33" [get_ports "MIO[8]"] +set_property PACKAGE_PIN "D5" [get_ports "MIO[8]"] +set_property slew "slow" [get_ports "MIO[8]"] +set_property drive "8" [get_ports "MIO[8]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[8]"] +# GPIO / gpio[7] / MIO[7] +set_property iostandard "LVCMOS33" [get_ports "MIO[7]"] +set_property PACKAGE_PIN "D8" [get_ports "MIO[7]"] +set_property slew "slow" [get_ports "MIO[7]"] +set_property drive "8" [get_ports "MIO[7]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[7]"] +# Quad SPI Flash / qspi0_sclk / MIO[6] +set_property iostandard "LVCMOS33" [get_ports "MIO[6]"] +set_property PACKAGE_PIN "A5" [get_ports "MIO[6]"] +set_property slew "slow" [get_ports "MIO[6]"] +set_property drive "8" [get_ports "MIO[6]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[6]"] +# Quad SPI Flash / qspi0_io[3] / MIO[5] +set_property iostandard "LVCMOS33" [get_ports "MIO[5]"] +set_property PACKAGE_PIN "A6" [get_ports "MIO[5]"] +set_property slew "slow" [get_ports "MIO[5]"] +set_property drive "8" [get_ports "MIO[5]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[5]"] +# Quad SPI Flash / qspi0_io[2] / MIO[4] +set_property iostandard "LVCMOS33" [get_ports "MIO[4]"] +set_property PACKAGE_PIN "B7" [get_ports "MIO[4]"] +set_property slew "slow" [get_ports "MIO[4]"] +set_property drive "8" [get_ports "MIO[4]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[4]"] +# Quad SPI Flash / qspi0_io[1] / MIO[3] +set_property iostandard "LVCMOS33" [get_ports "MIO[3]"] +set_property PACKAGE_PIN "D6" [get_ports "MIO[3]"] +set_property slew "slow" [get_ports "MIO[3]"] +set_property drive "8" [get_ports "MIO[3]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[3]"] +# Quad SPI Flash / qspi0_io[0] / MIO[2] +set_property iostandard "LVCMOS33" [get_ports "MIO[2]"] +set_property PACKAGE_PIN "B8" [get_ports "MIO[2]"] +set_property slew "slow" [get_ports "MIO[2]"] +set_property drive "8" [get_ports "MIO[2]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[2]"] +# Quad SPI Flash / qspi0_ss_b / MIO[1] +set_property iostandard "LVCMOS33" [get_ports "MIO[1]"] +set_property PACKAGE_PIN "A7" [get_ports "MIO[1]"] +set_property slew "slow" [get_ports "MIO[1]"] +set_property drive "8" [get_ports "MIO[1]"] +set_property pullup "TRUE" [get_ports "MIO[1]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "MIO[1]"] +# GPIO / gpio[0] / MIO[0] +set_property iostandard "LVCMOS33" [get_ports "MIO[0]"] +set_property PACKAGE_PIN "E6" [get_ports "MIO[0]"] +set_property slew "slow" [get_ports "MIO[0]"] +set_property drive "8" [get_ports "MIO[0]"] +set_property pullup "TRUE" [get_ports "MIO[0]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "MIO[0]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_VRP"] +set_property PACKAGE_PIN "H5" [get_ports "DDR_VRP"] +set_property slew "FAST" [get_ports "DDR_VRP"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_VRP"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_VRN"] +set_property PACKAGE_PIN "G5" [get_ports "DDR_VRN"] +set_property slew "FAST" [get_ports "DDR_VRN"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_VRN"] +set_property iostandard "SSTL15" [get_ports "DDR_WEB"] +set_property PACKAGE_PIN "M5" [get_ports "DDR_WEB"] +set_property slew "SLOW" [get_ports "DDR_WEB"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_WEB"] +set_property iostandard "SSTL15" [get_ports "DDR_RAS_n"] +set_property PACKAGE_PIN "P4" [get_ports "DDR_RAS_n"] +set_property slew "SLOW" [get_ports "DDR_RAS_n"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_RAS_n"] +set_property iostandard "SSTL15" [get_ports "DDR_ODT"] +set_property PACKAGE_PIN "N5" [get_ports "DDR_ODT"] +set_property slew "SLOW" [get_ports "DDR_ODT"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_ODT"] +set_property iostandard "SSTL15" [get_ports "DDR_DRSTB"] +set_property PACKAGE_PIN "B4" [get_ports "DDR_DRSTB"] +set_property slew "FAST" [get_ports "DDR_DRSTB"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DRSTB"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[3]"] +set_property PACKAGE_PIN "W5" [get_ports "DDR_DQS[3]"] +set_property slew "FAST" [get_ports "DDR_DQS[3]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS[3]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[2]"] +set_property PACKAGE_PIN "R2" [get_ports "DDR_DQS[2]"] +set_property slew "FAST" [get_ports "DDR_DQS[2]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS[2]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[1]"] +set_property PACKAGE_PIN "G2" [get_ports "DDR_DQS[1]"] +set_property slew "FAST" [get_ports "DDR_DQS[1]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS[1]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS[0]"] +set_property PACKAGE_PIN "C2" [get_ports "DDR_DQS[0]"] +set_property slew "FAST" [get_ports "DDR_DQS[0]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS[0]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[3]"] +set_property PACKAGE_PIN "W4" [get_ports "DDR_DQS_n[3]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[3]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS_n[3]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[2]"] +set_property PACKAGE_PIN "T2" [get_ports "DDR_DQS_n[2]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[2]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS_n[2]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[1]"] +set_property PACKAGE_PIN "F2" [get_ports "DDR_DQS_n[1]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[1]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS_n[1]"] +set_property iostandard "DIFF_SSTL15_T_DCI" [get_ports "DDR_DQS_n[0]"] +set_property PACKAGE_PIN "B2" [get_ports "DDR_DQS_n[0]"] +set_property slew "FAST" [get_ports "DDR_DQS_n[0]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQS_n[0]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[9]"] +set_property PACKAGE_PIN "E3" [get_ports "DDR_DQ[9]"] +set_property slew "FAST" [get_ports "DDR_DQ[9]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[9]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[8]"] +set_property PACKAGE_PIN "E2" [get_ports "DDR_DQ[8]"] +set_property slew "FAST" [get_ports "DDR_DQ[8]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[8]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[7]"] +set_property PACKAGE_PIN "E1" [get_ports "DDR_DQ[7]"] +set_property slew "FAST" [get_ports "DDR_DQ[7]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[7]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[6]"] +set_property PACKAGE_PIN "C1" [get_ports "DDR_DQ[6]"] +set_property slew "FAST" [get_ports "DDR_DQ[6]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[6]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[5]"] +set_property PACKAGE_PIN "D1" [get_ports "DDR_DQ[5]"] +set_property slew "FAST" [get_ports "DDR_DQ[5]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[5]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[4]"] +set_property PACKAGE_PIN "D3" [get_ports "DDR_DQ[4]"] +set_property slew "FAST" [get_ports "DDR_DQ[4]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[4]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[3]"] +set_property PACKAGE_PIN "A4" [get_ports "DDR_DQ[3]"] +set_property slew "FAST" [get_ports "DDR_DQ[3]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[3]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[31]"] +set_property PACKAGE_PIN "V3" [get_ports "DDR_DQ[31]"] +set_property slew "FAST" [get_ports "DDR_DQ[31]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[31]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[30]"] +set_property PACKAGE_PIN "V2" [get_ports "DDR_DQ[30]"] +set_property slew "FAST" [get_ports "DDR_DQ[30]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[30]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[2]"] +set_property PACKAGE_PIN "A2" [get_ports "DDR_DQ[2]"] +set_property slew "FAST" [get_ports "DDR_DQ[2]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[2]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[29]"] +set_property PACKAGE_PIN "W3" [get_ports "DDR_DQ[29]"] +set_property slew "FAST" [get_ports "DDR_DQ[29]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[29]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[28]"] +set_property PACKAGE_PIN "Y2" [get_ports "DDR_DQ[28]"] +set_property slew "FAST" [get_ports "DDR_DQ[28]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[28]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[27]"] +set_property PACKAGE_PIN "Y4" [get_ports "DDR_DQ[27]"] +set_property slew "FAST" [get_ports "DDR_DQ[27]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[27]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[26]"] +set_property PACKAGE_PIN "W1" [get_ports "DDR_DQ[26]"] +set_property slew "FAST" [get_ports "DDR_DQ[26]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[26]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[25]"] +set_property PACKAGE_PIN "Y3" [get_ports "DDR_DQ[25]"] +set_property slew "FAST" [get_ports "DDR_DQ[25]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[25]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[24]"] +set_property PACKAGE_PIN "V1" [get_ports "DDR_DQ[24]"] +set_property slew "FAST" [get_ports "DDR_DQ[24]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[24]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[23]"] +set_property PACKAGE_PIN "U3" [get_ports "DDR_DQ[23]"] +set_property slew "FAST" [get_ports "DDR_DQ[23]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[23]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[22]"] +set_property PACKAGE_PIN "U2" [get_ports "DDR_DQ[22]"] +set_property slew "FAST" [get_ports "DDR_DQ[22]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[22]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[21]"] +set_property PACKAGE_PIN "U4" [get_ports "DDR_DQ[21]"] +set_property slew "FAST" [get_ports "DDR_DQ[21]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[21]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[20]"] +set_property PACKAGE_PIN "T4" [get_ports "DDR_DQ[20]"] +set_property slew "FAST" [get_ports "DDR_DQ[20]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[20]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[1]"] +set_property PACKAGE_PIN "B3" [get_ports "DDR_DQ[1]"] +set_property slew "FAST" [get_ports "DDR_DQ[1]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[1]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[19]"] +set_property PACKAGE_PIN "R1" [get_ports "DDR_DQ[19]"] +set_property slew "FAST" [get_ports "DDR_DQ[19]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[19]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[18]"] +set_property PACKAGE_PIN "R3" [get_ports "DDR_DQ[18]"] +set_property slew "FAST" [get_ports "DDR_DQ[18]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[18]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[17]"] +set_property PACKAGE_PIN "P3" [get_ports "DDR_DQ[17]"] +set_property slew "FAST" [get_ports "DDR_DQ[17]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[17]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[16]"] +set_property PACKAGE_PIN "P1" [get_ports "DDR_DQ[16]"] +set_property slew "FAST" [get_ports "DDR_DQ[16]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[16]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[15]"] +set_property PACKAGE_PIN "J1" [get_ports "DDR_DQ[15]"] +set_property slew "FAST" [get_ports "DDR_DQ[15]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[15]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[14]"] +set_property PACKAGE_PIN "H1" [get_ports "DDR_DQ[14]"] +set_property slew "FAST" [get_ports "DDR_DQ[14]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[14]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[13]"] +set_property PACKAGE_PIN "H2" [get_ports "DDR_DQ[13]"] +set_property slew "FAST" [get_ports "DDR_DQ[13]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[13]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[12]"] +set_property PACKAGE_PIN "J3" [get_ports "DDR_DQ[12]"] +set_property slew "FAST" [get_ports "DDR_DQ[12]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[12]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[11]"] +set_property PACKAGE_PIN "H3" [get_ports "DDR_DQ[11]"] +set_property slew "FAST" [get_ports "DDR_DQ[11]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[11]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[10]"] +set_property PACKAGE_PIN "G3" [get_ports "DDR_DQ[10]"] +set_property slew "FAST" [get_ports "DDR_DQ[10]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[10]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DQ[0]"] +set_property PACKAGE_PIN "C3" [get_ports "DDR_DQ[0]"] +set_property slew "FAST" [get_ports "DDR_DQ[0]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DQ[0]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[3]"] +set_property PACKAGE_PIN "Y1" [get_ports "DDR_DM[3]"] +set_property slew "FAST" [get_ports "DDR_DM[3]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DM[3]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[2]"] +set_property PACKAGE_PIN "T1" [get_ports "DDR_DM[2]"] +set_property slew "FAST" [get_ports "DDR_DM[2]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DM[2]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[1]"] +set_property PACKAGE_PIN "F1" [get_ports "DDR_DM[1]"] +set_property slew "FAST" [get_ports "DDR_DM[1]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DM[1]"] +set_property iostandard "SSTL15_T_DCI" [get_ports "DDR_DM[0]"] +set_property PACKAGE_PIN "A1" [get_ports "DDR_DM[0]"] +set_property slew "FAST" [get_ports "DDR_DM[0]"] +set_property PIO_DIRECTION "BIDIR" [get_ports "DDR_DM[0]"] +set_property iostandard "SSTL15" [get_ports "DDR_CS_n"] +set_property PACKAGE_PIN "N1" [get_ports "DDR_CS_n"] +set_property slew "SLOW" [get_ports "DDR_CS_n"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_CS_n"] +set_property iostandard "SSTL15" [get_ports "DDR_CKE"] +set_property PACKAGE_PIN "N3" [get_ports "DDR_CKE"] +set_property slew "SLOW" [get_ports "DDR_CKE"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_CKE"] +set_property iostandard "DIFF_SSTL15" [get_ports "DDR_Clk"] +set_property PACKAGE_PIN "L2" [get_ports "DDR_Clk"] +set_property slew "FAST" [get_ports "DDR_Clk"] +set_property PIO_DIRECTION "INPUT" [get_ports "DDR_Clk"] +set_property iostandard "DIFF_SSTL15" [get_ports "DDR_Clk_n"] +set_property PACKAGE_PIN "M2" [get_ports "DDR_Clk_n"] +set_property slew "FAST" [get_ports "DDR_Clk_n"] +set_property PIO_DIRECTION "INPUT" [get_ports "DDR_Clk_n"] +set_property iostandard "SSTL15" [get_ports "DDR_CAS_n"] +set_property PACKAGE_PIN "P5" [get_ports "DDR_CAS_n"] +set_property slew "SLOW" [get_ports "DDR_CAS_n"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_CAS_n"] +set_property iostandard "SSTL15" [get_ports "DDR_BankAddr[2]"] +set_property PACKAGE_PIN "J5" [get_ports "DDR_BankAddr[2]"] +set_property slew "SLOW" [get_ports "DDR_BankAddr[2]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_BankAddr[2]"] +set_property iostandard "SSTL15" [get_ports "DDR_BankAddr[1]"] +set_property PACKAGE_PIN "R4" [get_ports "DDR_BankAddr[1]"] +set_property slew "SLOW" [get_ports "DDR_BankAddr[1]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_BankAddr[1]"] +set_property iostandard "SSTL15" [get_ports "DDR_BankAddr[0]"] +set_property PACKAGE_PIN "L5" [get_ports "DDR_BankAddr[0]"] +set_property slew "SLOW" [get_ports "DDR_BankAddr[0]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_BankAddr[0]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[9]"] +set_property PACKAGE_PIN "J4" [get_ports "DDR_Addr[9]"] +set_property slew "SLOW" [get_ports "DDR_Addr[9]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[9]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[8]"] +set_property PACKAGE_PIN "K1" [get_ports "DDR_Addr[8]"] +set_property slew "SLOW" [get_ports "DDR_Addr[8]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[8]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[7]"] +set_property PACKAGE_PIN "K4" [get_ports "DDR_Addr[7]"] +set_property slew "SLOW" [get_ports "DDR_Addr[7]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[7]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[6]"] +set_property PACKAGE_PIN "L4" [get_ports "DDR_Addr[6]"] +set_property slew "SLOW" [get_ports "DDR_Addr[6]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[6]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[5]"] +set_property PACKAGE_PIN "L1" [get_ports "DDR_Addr[5]"] +set_property slew "SLOW" [get_ports "DDR_Addr[5]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[5]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[4]"] +set_property PACKAGE_PIN "M4" [get_ports "DDR_Addr[4]"] +set_property slew "SLOW" [get_ports "DDR_Addr[4]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[4]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[3]"] +set_property PACKAGE_PIN "K3" [get_ports "DDR_Addr[3]"] +set_property slew "SLOW" [get_ports "DDR_Addr[3]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[3]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[2]"] +set_property PACKAGE_PIN "M3" [get_ports "DDR_Addr[2]"] +set_property slew "SLOW" [get_ports "DDR_Addr[2]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[2]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[1]"] +set_property PACKAGE_PIN "K2" [get_ports "DDR_Addr[1]"] +set_property slew "SLOW" [get_ports "DDR_Addr[1]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[1]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[14]"] +set_property PACKAGE_PIN "F4" [get_ports "DDR_Addr[14]"] +set_property slew "SLOW" [get_ports "DDR_Addr[14]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[14]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[13]"] +set_property PACKAGE_PIN "D4" [get_ports "DDR_Addr[13]"] +set_property slew "SLOW" [get_ports "DDR_Addr[13]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[13]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[12]"] +set_property PACKAGE_PIN "E4" [get_ports "DDR_Addr[12]"] +set_property slew "SLOW" [get_ports "DDR_Addr[12]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[12]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[11]"] +set_property PACKAGE_PIN "G4" [get_ports "DDR_Addr[11]"] +set_property slew "SLOW" [get_ports "DDR_Addr[11]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[11]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[10]"] +set_property PACKAGE_PIN "F5" [get_ports "DDR_Addr[10]"] +set_property slew "SLOW" [get_ports "DDR_Addr[10]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[10]"] +set_property iostandard "SSTL15" [get_ports "DDR_Addr[0]"] +set_property PACKAGE_PIN "N2" [get_ports "DDR_Addr[0]"] +set_property slew "SLOW" [get_ports "DDR_Addr[0]"] +set_property PIO_DIRECTION "OUTPUT" [get_ports "DDR_Addr[0]"] +set_property iostandard "LVCMOS33" [get_ports "PS_PORB"] +set_property PACKAGE_PIN "C7" [get_ports "PS_PORB"] +set_property slew "slow" [get_ports "PS_PORB"] +set_property drive "8" [get_ports "PS_PORB"] +set_property iostandard "LVCMOS18" [get_ports "PS_SRSTB"] +set_property PACKAGE_PIN "B10" [get_ports "PS_SRSTB"] +set_property slew "slow" [get_ports "PS_SRSTB"] +set_property drive "8" [get_ports "PS_SRSTB"] +set_property iostandard "LVCMOS33" [get_ports "PS_CLK"] +set_property PACKAGE_PIN "E7" [get_ports "PS_CLK"] +set_property slew "slow" [get_ports "PS_CLK"] +set_property drive "8" [get_ports "PS_CLK"] + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xml new file mode 100644 index 0000000..35942e1 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_processing_system7_0_0/z_turn_processing_system7_0_0.xml @@ -0,0 +1,48500 @@ + + + xilinx.com + customized_ip + z_turn_processing_system7_0_0 + 1.0 + + + GMII_ETHERNET_0 + + + + false + + + + TX_EN + + + ENET0_GMII_TX_EN + + + + + TX_ER + + + ENET0_GMII_TX_ER + + + + + TXD + + + ENET0_GMII_TXD + + + + + COL + + + ENET0_GMII_COL + + + + + CRS + + + ENET0_GMII_CRS + + + + + RX_CLK + + + ENET0_GMII_RX_CLK + + + + + RX_DV + + + ENET0_GMII_RX_DV + + + + + RX_ER + + + ENET0_GMII_RX_ER + + + + + TX_CLK + + + ENET0_GMII_TX_CLK + + + + + RXD + + + ENET0_GMII_RXD + + + + + + + optional + false + + + + + + MDIO_ETHERNET_0 + + + + false + + + + MDC + + + ENET0_MDIO_MDC + + + + + MDIO_O + + + ENET0_MDIO_O + + + + + MDIO_T + + + ENET0_MDIO_T + + + + + MDIO_I + + + ENET0_MDIO_I + + + + + + + optional + false + + + + + + PTP_ETHERNET_0 + + + + false + + + + DELAY_REQ_RX + + + ENET0_PTP_DELAY_REQ_RX + + + + + DELAY_REQ_TX + + + ENET0_PTP_DELAY_REQ_TX + + + + + PDELAY_REQ_RX + + + ENET0_PTP_PDELAY_REQ_RX + + + + + PDELAY_REQ_TX + + + ENET0_PTP_PDELAY_REQ_TX + + + + + PDELAY_RESP_RX + + + ENET0_PTP_PDELAY_RESP_RX + + + + + PDELAY_RESP_TX + + + ENET0_PTP_PDELAY_RESP_TX + + + + + SYNC_FRAME_RX + + + ENET0_PTP_SYNC_FRAME_RX + + + + + SYNC_FRAME_TX + + + ENET0_PTP_SYNC_FRAME_TX + + + + + SOF_RX + + + ENET0_SOF_RX + + + + + SOF_TX + + + ENET0_SOF_TX + + + + + + + optional + true + + + + + + ENET0_EXT_INTIN + + + + false + + + + INTERRUPT + + + ENET0_EXT_INTIN + + + + + + + optional + false + + + + + + GMII_ETHERNET_1 + + + + false + + + + TX_EN + + + ENET1_GMII_TX_EN + + + + + TX_ER + + + ENET1_GMII_TX_ER + + + + + TXD + + + ENET1_GMII_TXD + + + + + COL + + + ENET1_GMII_COL + + + + + CRS + + + ENET1_GMII_CRS + + + + + RX_CLK + + + ENET1_GMII_RX_CLK + + + + + RX_DV + + + ENET1_GMII_RX_DV + + + + + RX_ER + + + ENET1_GMII_RX_ER + + + + + TX_CLK + + + ENET1_GMII_TX_CLK + + + + + RXD + + + ENET1_GMII_RXD + + + + + + + optional + false + + + + + + MDIO_ETHERNET_1 + + + + false + + + + MDC + + + ENET1_MDIO_MDC + + + + + MDIO_O + + + ENET1_MDIO_O + + + + + MDIO_T + + + ENET1_MDIO_T + + + + + MDIO_I + + + ENET1_MDIO_I + + + + + + + optional + false + + + + + + PTP_ETHERNET_1 + + + + false + + + + DELAY_REQ_RX + + + ENET1_PTP_DELAY_REQ_RX + + + + + DELAY_REQ_TX + + + ENET1_PTP_DELAY_REQ_TX + + + + + PDELAY_REQ_RX + + + ENET1_PTP_PDELAY_REQ_RX + + + + + PDELAY_REQ_TX + + + ENET1_PTP_PDELAY_REQ_TX + + + + + PDELAY_RESP_RX + + + ENET1_PTP_PDELAY_RESP_RX + + + + + PDELAY_RESP_TX + + + ENET1_PTP_PDELAY_RESP_TX + + + + + SYNC_FRAME_RX + + + ENET1_PTP_SYNC_FRAME_RX + + + + + SYNC_FRAME_TX + + + ENET1_PTP_SYNC_FRAME_TX + + + + + SOF_RX + + + ENET1_SOF_RX + + + + + SOF_TX + + + ENET1_SOF_TX + + + + + + + optional + false + + + + + + ENET1_EXT_INTIN + + + + false + + + + INTERRUPT + + + ENET1_EXT_INTIN + + + + + + + optional + false + + + + + + GPIO_0 + + + + false + + + + TRI_I + + + GPIO_I + + + + + TRI_O + + + GPIO_O + + + + + TRI_T + + + GPIO_T + + + + + + + optional + true + + + + + + DDR + + + + false + + + + CAS_N + + + DDR_CAS_n + + + + + CKE + + + DDR_CKE + + + + + CK_N + + + DDR_Clk_n + + + + + CK_P + + + DDR_Clk + + + + + CS_N + + + DDR_CS_n + + + + + RESET_N + + + DDR_DRSTB + + + + + ODT + + + DDR_ODT + + + + + RAS_N + + + DDR_RAS_n + + + + + WE_N + + + DDR_WEB + + + + + BA + + + DDR_BankAddr + + + + + ADDR + + + DDR_Addr + + + + + DM + + + DDR_DM + + + + + DQ + + + DDR_DQ + + + + + DQS_N + + + DDR_DQS_n + + + + + DQS_P + + + DDR_DQS + + + + + + + optional + true + + + + + + FIXED_IO + + + + false + + + + MIO + + + MIO + + + + + DDR_VRN + + + DDR_VRN + + + + + DDR_VRP + + + DDR_VRP + + + + + PS_SRSTB + + + PS_SRSTB + + + + + PS_CLK + + + PS_CLK + + + + + PS_PORB + + + PS_PORB + + + + + + UART_0 + + + + false + + + + DTRn + + + UART0_DTRN + + + + + RTSn + + + UART0_RTSN + + + + + TxD + + + UART0_TX + + + + + CTSn + + + UART0_CTSN + + + + + DCDn + + + UART0_DCDN + + + + + DSRn + + + UART0_DSRN + + + + + RI + + + UART0_RIN + + + + + RxD + + + UART0_RX + + + + + + + optional + false + + + + + + UART_1 + + + + false + + + + DTRn + + + UART1_DTRN + + + + + RTSn + + + UART1_RTSN + + + + + TxD + + + UART1_TX + + + + + CTSn + + + UART1_CTSN + + + + + DCDn + + + UART1_DCDN + + + + + DSRn + + + UART1_DSRN + + + + + RI + + + UART1_RIN + + + + + RxD + + + UART1_RX + + + + + + + optional + false + + + + + + IIC_0 + + + + false + + + + SDA_I + + + I2C0_SDA_I + + + + + SDA_O + + + I2C0_SDA_O + + + + + SDA_T + + + I2C0_SDA_T + + + + + SCL_I + + + I2C0_SCL_I + + + + + SCL_O + + + I2C0_SCL_O + + + + + SCL_T + + + I2C0_SCL_T + + + + + + + optional + true + + + + + + IIC_1 + + + + false + + + + SDA_I + + + I2C1_SDA_I + + + + + SDA_O + + + I2C1_SDA_O + + + + + SDA_T + + + I2C1_SDA_T + + + + + SCL_I + + + I2C1_SCL_I + + + + + SCL_O + + + I2C1_SCL_O + + + + + SCL_T + + + I2C1_SCL_T + + + + + + + optional + false + + + + + + SPI_0 + + + + false + + + + SCK_I + + + SPI0_SCLK_I + + + + + SCK_O + + + SPI0_SCLK_O + + + + + SCK_T + + + SPI0_SCLK_T + + + + + IO0_I + + + SPI0_MOSI_I + + + + + IO0_O + + + SPI0_MOSI_O + + + + + IO0_T + + + SPI0_MOSI_T + + + + + IO1_I + + + SPI0_MISO_I + + + + + IO1_O + + + SPI0_MISO_O + + + + + IO1_T + + + SPI0_MISO_T + + + + + SS_I + + + SPI0_SS_I + + + + + SS_O + + + SPI0_SS_O + + + + + SS1_O + + + SPI0_SS1_O + + + + + SS2_O + + + SPI0_SS2_O + + + + + SS_T + + + SPI0_SS_T + + + + + + + optional + false + + + + + + SPI_1 + + + + false + + + + SCK_I + + + SPI1_SCLK_I + + + + + SCK_O + + + SPI1_SCLK_O + + + + + SCK_T + + + SPI1_SCLK_T + + + + + IO0_I + + + SPI1_MOSI_I + + + + + IO0_O + + + SPI1_MOSI_O + + + + + IO0_T + + + SPI1_MOSI_T + + + + + IO1_I + + + SPI1_MISO_I + + + + + IO1_O + + + SPI1_MISO_O + + + + + IO1_T + + + SPI1_MISO_T + + + + + SS_I + + + SPI1_SS_I + + + + + SS_O + + + SPI1_SS_O + + + + + SS1_O + + + SPI1_SS1_O + + + + + SS2_O + + + SPI1_SS2_O + + + + + SS_T + + + SPI1_SS_T + + + + + + + optional + false + + + + + + CAN_0 + + + + false + + + + TX + + + CAN0_PHY_TX + + + + + RX + + + CAN0_PHY_RX + + + + + + + optional + false + + + + + + CAN_1 + + + + false + + + + TX + + + CAN1_PHY_TX + + + + + RX + + + CAN1_PHY_RX + + + + + + + optional + false + + + + + + PJTAG + + + + false + + + + TCK + + + PJTAG_TCK + + + + + TMS + + + PJTAG_TMS + + + + + TDI + + + PJTAG_TDI + + + + + TDO + + + PJTAG_TDO + + + + + + + optional + false + + + + + + SDIO_0 + + + + false + + + + CLK + + + SDIO0_CLK + + + + + CLK_FB + + + SDIO0_CLK_FB + + + + + CMD_O + + + SDIO0_CMD_O + + + + + CMD_I + + + SDIO0_CMD_I + + + + + CMD_T + + + SDIO0_CMD_T + + + + + DATA_I + + + SDIO0_DATA_I + + + + + DATA_O + + + SDIO0_DATA_O + + + + + DATA_T + + + SDIO0_DATA_T + + + + + LED + + + SDIO0_LED + + + + + CDN + + + SDIO0_CDN + + + + + WP + + + SDIO0_WP + + + + + BUSPOW + + + SDIO0_BUSPOW + + + + + BUSVOLT + + + SDIO0_BUSVOLT + + + + + + + optional + false + + + + + + SDIO_1 + + + + false + + + + CLK + + + SDIO1_CLK + + + + + CLK_FB + + + SDIO1_CLK_FB + + + + + CMD_O + + + SDIO1_CMD_O + + + + + CMD_I + + + SDIO1_CMD_I + + + + + CMD_T + + + SDIO1_CMD_T + + + + + DATA_I + + + SDIO1_DATA_I + + + + + DATA_O + + + SDIO1_DATA_O + + + + + DATA_T + + + SDIO1_DATA_T + + + + + LED + + + SDIO1_LED + + + + + CDN + + + SDIO1_CDN + + + + + WP + + + SDIO1_WP + + + + + BUSPOW + + + SDIO1_BUSPOW + + + + + BUSVOLT + + + SDIO1_BUSVOLT + + + + + + + optional + false + + + + + + TRACE_0 + + + + false + + + + CLK_O + + + TRACE_CLK_OUT + + + + + CLK_I + + + TRACE_CLK + + + + + CTL + + + TRACE_CTL + + + + + DATA + + + TRACE_DATA + + + + + + + optional + false + + + + + + USBIND_0 + + + + false + + + + PORT_INDCTL + + + USB0_PORT_INDCTL + + + + + VBUS_PWRSELECT + + + USB0_VBUS_PWRSELECT + + + + + VBUS_PWRFAULT + + + USB0_VBUS_PWRFAULT + + + + + + + optional + true + + + + + + USBIND_1 + + + + false + + + + PORT_INDCTL + + + USB1_PORT_INDCTL + + + + + VBUS_PWRSELECT + + + USB1_VBUS_PWRSELECT + + + + + VBUS_PWRFAULT + + + USB1_VBUS_PWRFAULT + + + + + + + optional + false + + + + + + S_AXI_HP0_FIFO_CTRL + + + + false + + + + RCOUNT + + + S_AXI_HP0_RCOUNT + + + + + WCOUNT + + + S_AXI_HP0_WCOUNT + + + + + RACOUNT + + + S_AXI_HP0_RACOUNT + + + + + WACOUNT + + + S_AXI_HP0_WACOUNT + + + + + RDISSUECAPEN + + + S_AXI_HP0_RDISSUECAP1_EN + + + + + WRISSUECAPEN + + + S_AXI_HP0_WRISSUECAP1_EN + + + + + + + optional + true + + + + + + S_AXI_HP1_FIFO_CTRL + + + + false + + + + RCOUNT + + + S_AXI_HP1_RCOUNT + + + + + WCOUNT + + + S_AXI_HP1_WCOUNT + + + + + RACOUNT + + + S_AXI_HP1_RACOUNT + + + + + WACOUNT + + + S_AXI_HP1_WACOUNT + + + + + RDISSUECAPEN + + + S_AXI_HP1_RDISSUECAP1_EN + + + + + WRISSUECAPEN + + + S_AXI_HP1_WRISSUECAP1_EN + + + + + + + optional + false + + + + + + S_AXI_HP2_FIFO_CTRL + + + + false + + + + RCOUNT + + + S_AXI_HP2_RCOUNT + + + + + WCOUNT + + + S_AXI_HP2_WCOUNT + + + + + RACOUNT + + + S_AXI_HP2_RACOUNT + + + + + WACOUNT + + + S_AXI_HP2_WACOUNT + + + + + RDISSUECAPEN + + + S_AXI_HP2_RDISSUECAP1_EN + + + + + WRISSUECAPEN + + + S_AXI_HP2_WRISSUECAP1_EN + + + + + + + optional + false + + + + + + S_AXI_HP3_FIFO_CTRL + + + + false + + + + RCOUNT + + + S_AXI_HP3_RCOUNT + + + + + WCOUNT + + + S_AXI_HP3_WCOUNT + + + + + RACOUNT + + + S_AXI_HP3_RACOUNT + + + + + WACOUNT + + + S_AXI_HP3_WACOUNT + + + + + RDISSUECAPEN + + + S_AXI_HP3_RDISSUECAP1_EN + + + + + WRISSUECAPEN + + + S_AXI_HP3_WRISSUECAP1_EN + + + + + + + optional + false + + + + + + DMA0_REQ + + + + false + + + + TREADY + + + DMA0_DRREADY + + + + + TLAST + + + DMA0_DRLAST + + + + + TVALID + + + DMA0_DRVALID + + + + + TUSER + + + DMA0_DRTYPE + + + + + + + optional + false + + + + + + DMA0_ACK + + + + false + + + + TUSER + + + DMA0_DATYPE + + + + + TVALID + + + DMA0_DAVALID + + + + + TREADY + + + DMA0_DAREADY + + + + + + + optional + false + + + + + + DMA1_REQ + + + + false + + + + TREADY + + + DMA1_DRREADY + + + + + TLAST + + + DMA1_DRLAST + + + + + TVALID + + + DMA1_DRVALID + + + + + TUSER + + + DMA1_DRTYPE + + + + + + + optional + false + + + + + + DMA1_ACK + + + + false + + + + TUSER + + + DMA1_DATYPE + + + + + TVALID + + + DMA1_DAVALID + + + + + TREADY + + + DMA1_DAREADY + + + + + + + optional + false + + + + + + DMA2_REQ + + + + false + + + + TREADY + + + DMA2_DRREADY + + + + + TLAST + + + DMA2_DRLAST + + + + + TVALID + + + DMA2_DRVALID + + + + + TUSER + + + DMA2_DRTYPE + + + + + + + optional + false + + + + + + DMA2_ACK + + + + false + + + + TUSER + + + DMA2_DATYPE + + + + + TVALID + + + DMA2_DAVALID + + + + + TREADY + + + DMA2_DAREADY + + + + + + + optional + false + + + + + + DMA3_REQ + + + + false + + + + TREADY + + + DMA3_DRREADY + + + + + TLAST + + + DMA3_DRLAST + + + + + TVALID + + + DMA3_DRVALID + + + + + TUSER + + + DMA3_DRTYPE + + + + + + + optional + false + + + + + + DMA3_ACK + + + + false + + + + TUSER + + + DMA3_DATYPE + + + + + TVALID + + + DMA3_DAVALID + + + + + TREADY + + + DMA3_DAREADY + + + + + + + optional + false + + + + + + FTM_TRACE_DATA + + + + false + + + + TDATA + + + FTMD_TRACEIN_DATA + + + + + TVALID + + + FTMD_TRACEIN_VALID + + + + + TID + + + FTMD_TRACEIN_ATID + + + + + + + optional + false + + + + + + PROC_EVENT + + + + false + + + + EVENTO + + + EVENT_EVENTO + + + + + STANDBYWFE + + + EVENT_STANDBYWFE + + + + + STANDBYWFI + + + EVENT_STANDBYWFI + + + + + EVENTI + + + EVENT_EVENTI + + + + + + + optional + false + + + + + + M_AXI_GP0 + + + + + 0x40000000 + + + false + + + + ARVALID + + + M_AXI_GP0_ARVALID + + + + + AWVALID + + + M_AXI_GP0_AWVALID + + + + + BREADY + + + M_AXI_GP0_BREADY + + + + + RREADY + + + M_AXI_GP0_RREADY + + + + + WLAST + + + M_AXI_GP0_WLAST + + + + + WVALID + + + M_AXI_GP0_WVALID + + + + + ARID + + + M_AXI_GP0_ARID + + + + + AWID + + + M_AXI_GP0_AWID + + + + + WID + + + M_AXI_GP0_WID + + + + + ARBURST + + + M_AXI_GP0_ARBURST + + + + + ARLOCK + + + M_AXI_GP0_ARLOCK + + + + + ARSIZE + + + M_AXI_GP0_ARSIZE + + + + + AWBURST + + + M_AXI_GP0_AWBURST + + + + + AWLOCK + + + M_AXI_GP0_AWLOCK + + + + + AWSIZE + + + M_AXI_GP0_AWSIZE + + + + + ARPROT + + + M_AXI_GP0_ARPROT + + + + + AWPROT + + + M_AXI_GP0_AWPROT + + + + + ARADDR + + + M_AXI_GP0_ARADDR + + + + + AWADDR + + + M_AXI_GP0_AWADDR + + + + + WDATA + + + M_AXI_GP0_WDATA + + + + + ARCACHE + + + M_AXI_GP0_ARCACHE + + + + + ARLEN + + + M_AXI_GP0_ARLEN + + + + + ARQOS + + + M_AXI_GP0_ARQOS + + + + + AWCACHE + + + M_AXI_GP0_AWCACHE + + + + + AWLEN + + + M_AXI_GP0_AWLEN + + + + + AWQOS + + + M_AXI_GP0_AWQOS + + + + + WSTRB + + + M_AXI_GP0_WSTRB + + + + + ARREADY + + + M_AXI_GP0_ARREADY + + + + + AWREADY + + + M_AXI_GP0_AWREADY + + + + + BVALID + + + M_AXI_GP0_BVALID + + + + + RLAST + + + M_AXI_GP0_RLAST + + + + + RVALID + + + M_AXI_GP0_RVALID + + + + + WREADY + + + M_AXI_GP0_WREADY + + + + + BID + + + M_AXI_GP0_BID + + + + + RID + + + M_AXI_GP0_RID + + + + + BRESP + + + M_AXI_GP0_BRESP + + + + + RRESP + + + M_AXI_GP0_RRESP + + + + + RDATA + + + M_AXI_GP0_RDATA + + + + + + SUPPORTS_NARROW_BURST + 0 + + + + optional + true + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK1 + + + PHASE + 0.000 + + + MAX_BURST_LENGTH + 16 + + + READ_WRITE_MODE + READ_WRITE + + + BUSER_WIDTH + 0 + + + RUSER_WIDTH + 0 + + + WUSER_WIDTH + 0 + + + ARUSER_WIDTH + 0 + + + AWUSER_WIDTH + 0 + + + ADDR_WIDTH + 32 + + + ID_WIDTH + 12 + + + FREQ_HZ + 50000000 + + + PROTOCOL + AXI3 + + + DATA_WIDTH + 32 + + + + + + optional + true + + + + + + M_AXI_GP1 + + + + + 0x80000000 + + + false + + + + ARVALID + + + M_AXI_GP1_ARVALID + + + + + AWVALID + + + M_AXI_GP1_AWVALID + + + + + BREADY + + + M_AXI_GP1_BREADY + + + + + RREADY + + + M_AXI_GP1_RREADY + + + + + WLAST + + + M_AXI_GP1_WLAST + + + + + WVALID + + + M_AXI_GP1_WVALID + + + + + ARID + + + M_AXI_GP1_ARID + + + + + AWID + + + M_AXI_GP1_AWID + + + + + WID + + + M_AXI_GP1_WID + + + + + ARBURST + + + M_AXI_GP1_ARBURST + + + + + ARLOCK + + + M_AXI_GP1_ARLOCK + + + + + ARSIZE + + + M_AXI_GP1_ARSIZE + + + + + AWBURST + + + M_AXI_GP1_AWBURST + + + + + AWLOCK + + + M_AXI_GP1_AWLOCK + + + + + AWSIZE + + + M_AXI_GP1_AWSIZE + + + + + ARPROT + + + M_AXI_GP1_ARPROT + + + + + AWPROT + + + M_AXI_GP1_AWPROT + + + + + ARADDR + + + M_AXI_GP1_ARADDR + + + + + AWADDR + + + M_AXI_GP1_AWADDR + + + + + WDATA + + + M_AXI_GP1_WDATA + + + + + ARCACHE + + + M_AXI_GP1_ARCACHE + + + + + ARLEN + + + M_AXI_GP1_ARLEN + + + + + ARQOS + + + M_AXI_GP1_ARQOS + + + + + AWCACHE + + + M_AXI_GP1_AWCACHE + + + + + AWLEN + + + M_AXI_GP1_AWLEN + + + + + AWQOS + + + M_AXI_GP1_AWQOS + + + + + WSTRB + + + M_AXI_GP1_WSTRB + + + + + ARREADY + + + M_AXI_GP1_ARREADY + + + + + AWREADY + + + M_AXI_GP1_AWREADY + + + + + BVALID + + + M_AXI_GP1_BVALID + + + + + RLAST + + + M_AXI_GP1_RLAST + + + + + RVALID + + + M_AXI_GP1_RVALID + + + + + WREADY + + + M_AXI_GP1_WREADY + + + + + BID + + + M_AXI_GP1_BID + + + + + RID + + + M_AXI_GP1_RID + + + + + BRESP + + + M_AXI_GP1_BRESP + + + + + RRESP + + + M_AXI_GP1_RRESP + + + + + RDATA + + + M_AXI_GP1_RDATA + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + SUPPORTS_NARROW_BURST + 0 + + + + optional + false + + + + + + + + + optional + false + + + + + + S_AXI_ACP + + + + + + false + + + + ARREADY + + + S_AXI_ACP_ARREADY + + + + + AWREADY + + + S_AXI_ACP_AWREADY + + + + + BVALID + + + S_AXI_ACP_BVALID + + + + + RLAST + + + S_AXI_ACP_RLAST + + + + + RVALID + + + S_AXI_ACP_RVALID + + + + + WREADY + + + S_AXI_ACP_WREADY + + + + + BRESP + + + S_AXI_ACP_BRESP + + + + + RRESP + + + S_AXI_ACP_RRESP + + + + + BID + + + S_AXI_ACP_BID + + + + + RID + + + S_AXI_ACP_RID + + + + + RDATA + + + S_AXI_ACP_RDATA + + + + + ARVALID + + + S_AXI_ACP_ARVALID + + + + + AWVALID + + + S_AXI_ACP_AWVALID + + + + + BREADY + + + S_AXI_ACP_BREADY + + + + + RREADY + + + S_AXI_ACP_RREADY + + + + + WLAST + + + S_AXI_ACP_WLAST + + + + + WVALID + + + S_AXI_ACP_WVALID + + + + + ARID + + + S_AXI_ACP_ARID + + + + + ARPROT + + + S_AXI_ACP_ARPROT + + + + + AWID + + + S_AXI_ACP_AWID + + + + + AWPROT + + + S_AXI_ACP_AWPROT + + + + + WID + + + S_AXI_ACP_WID + + + + + ARADDR + + + S_AXI_ACP_ARADDR + + + + + AWADDR + + + S_AXI_ACP_AWADDR + + + + + ARCACHE + + + S_AXI_ACP_ARCACHE + + + + + ARLEN + + + S_AXI_ACP_ARLEN + + + + + ARQOS + + + S_AXI_ACP_ARQOS + + + + + AWCACHE + + + S_AXI_ACP_AWCACHE + + + + + AWLEN + + + S_AXI_ACP_AWLEN + + + + + AWQOS + + + S_AXI_ACP_AWQOS + + + + + ARBURST + + + S_AXI_ACP_ARBURST + + + + + ARLOCK + + + S_AXI_ACP_ARLOCK + + + + + ARSIZE + + + S_AXI_ACP_ARSIZE + + + + + AWBURST + + + S_AXI_ACP_AWBURST + + + + + AWLOCK + + + S_AXI_ACP_AWLOCK + + + + + AWSIZE + + + S_AXI_ACP_AWSIZE + + + + + ARUSER + + + S_AXI_ACP_ARUSER + + + + + AWUSER + + + S_AXI_ACP_AWUSER + + + + + WDATA + + + S_AXI_ACP_WDATA + + + + + WSTRB + + + S_AXI_ACP_WSTRB + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + + + + optional + false + + + + + + S_AXI_GP0 + + + + + + false + + + + ARREADY + + + S_AXI_GP0_ARREADY + + + + + AWREADY + + + S_AXI_GP0_AWREADY + + + + + BVALID + + + S_AXI_GP0_BVALID + + + + + RLAST + + + S_AXI_GP0_RLAST + + + + + RVALID + + + S_AXI_GP0_RVALID + + + + + WREADY + + + S_AXI_GP0_WREADY + + + + + BRESP + + + S_AXI_GP0_BRESP + + + + + RRESP + + + S_AXI_GP0_RRESP + + + + + RDATA + + + S_AXI_GP0_RDATA + + + + + BID + + + S_AXI_GP0_BID + + + + + RID + + + S_AXI_GP0_RID + + + + + ARVALID + + + S_AXI_GP0_ARVALID + + + + + AWVALID + + + S_AXI_GP0_AWVALID + + + + + BREADY + + + S_AXI_GP0_BREADY + + + + + RREADY + + + S_AXI_GP0_RREADY + + + + + WLAST + + + S_AXI_GP0_WLAST + + + + + WVALID + + + S_AXI_GP0_WVALID + + + + + ARBURST + + + S_AXI_GP0_ARBURST + + + + + ARLOCK + + + S_AXI_GP0_ARLOCK + + + + + ARSIZE + + + S_AXI_GP0_ARSIZE + + + + + AWBURST + + + S_AXI_GP0_AWBURST + + + + + AWLOCK + + + S_AXI_GP0_AWLOCK + + + + + AWSIZE + + + S_AXI_GP0_AWSIZE + + + + + ARPROT + + + S_AXI_GP0_ARPROT + + + + + AWPROT + + + S_AXI_GP0_AWPROT + + + + + ARADDR + + + S_AXI_GP0_ARADDR + + + + + AWADDR + + + S_AXI_GP0_AWADDR + + + + + WDATA + + + S_AXI_GP0_WDATA + + + + + ARCACHE + + + S_AXI_GP0_ARCACHE + + + + + ARLEN + + + S_AXI_GP0_ARLEN + + + + + ARQOS + + + S_AXI_GP0_ARQOS + + + + + AWCACHE + + + S_AXI_GP0_AWCACHE + + + + + AWLEN + + + S_AXI_GP0_AWLEN + + + + + AWQOS + + + S_AXI_GP0_AWQOS + + + + + WSTRB + + + S_AXI_GP0_WSTRB + + + + + ARID + + + S_AXI_GP0_ARID + + + + + AWID + + + S_AXI_GP0_AWID + + + + + WID + + + S_AXI_GP0_WID + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + + + + optional + false + + + + + + S_AXI_GP1 + + + + + + false + + + + ARREADY + + + S_AXI_GP1_ARREADY + + + + + AWREADY + + + S_AXI_GP1_AWREADY + + + + + BVALID + + + S_AXI_GP1_BVALID + + + + + RLAST + + + S_AXI_GP1_RLAST + + + + + RVALID + + + S_AXI_GP1_RVALID + + + + + WREADY + + + S_AXI_GP1_WREADY + + + + + BRESP + + + S_AXI_GP1_BRESP + + + + + RRESP + + + S_AXI_GP1_RRESP + + + + + RDATA + + + S_AXI_GP1_RDATA + + + + + BID + + + S_AXI_GP1_BID + + + + + RID + + + S_AXI_GP1_RID + + + + + ARVALID + + + S_AXI_GP1_ARVALID + + + + + AWVALID + + + S_AXI_GP1_AWVALID + + + + + BREADY + + + S_AXI_GP1_BREADY + + + + + RREADY + + + S_AXI_GP1_RREADY + + + + + WLAST + + + S_AXI_GP1_WLAST + + + + + WVALID + + + S_AXI_GP1_WVALID + + + + + ARBURST + + + S_AXI_GP1_ARBURST + + + + + ARLOCK + + + S_AXI_GP1_ARLOCK + + + + + ARSIZE + + + S_AXI_GP1_ARSIZE + + + + + AWBURST + + + S_AXI_GP1_AWBURST + + + + + AWLOCK + + + S_AXI_GP1_AWLOCK + + + + + AWSIZE + + + S_AXI_GP1_AWSIZE + + + + + ARPROT + + + S_AXI_GP1_ARPROT + + + + + AWPROT + + + S_AXI_GP1_AWPROT + + + + + ARADDR + + + S_AXI_GP1_ARADDR + + + + + AWADDR + + + S_AXI_GP1_AWADDR + + + + + WDATA + + + S_AXI_GP1_WDATA + + + + + ARCACHE + + + S_AXI_GP1_ARCACHE + + + + + ARLEN + + + S_AXI_GP1_ARLEN + + + + + ARQOS + + + S_AXI_GP1_ARQOS + + + + + AWCACHE + + + S_AXI_GP1_AWCACHE + + + + + AWLEN + + + S_AXI_GP1_AWLEN + + + + + AWQOS + + + S_AXI_GP1_AWQOS + + + + + WSTRB + + + S_AXI_GP1_WSTRB + + + + + ARID + + + S_AXI_GP1_ARID + + + + + AWID + + + S_AXI_GP1_AWID + + + + + WID + + + S_AXI_GP1_WID + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + + + + optional + false + + + + + + S_AXI_HP0 + + + + + + false + + + + ARREADY + + + S_AXI_HP0_ARREADY + + + + + AWREADY + + + S_AXI_HP0_AWREADY + + + + + BVALID + + + S_AXI_HP0_BVALID + + + + + RLAST + + + S_AXI_HP0_RLAST + + + + + RVALID + + + S_AXI_HP0_RVALID + + + + + WREADY + + + S_AXI_HP0_WREADY + + + + + BRESP + + + S_AXI_HP0_BRESP + + + + + RRESP + + + S_AXI_HP0_RRESP + + + + + BID + + + S_AXI_HP0_BID + + + + + RID + + + S_AXI_HP0_RID + + + + + RDATA + + + S_AXI_HP0_RDATA + + + + + ARVALID + + + S_AXI_HP0_ARVALID + + + + + AWVALID + + + S_AXI_HP0_AWVALID + + + + + BREADY + + + S_AXI_HP0_BREADY + + + + + RREADY + + + S_AXI_HP0_RREADY + + + + + WLAST + + + S_AXI_HP0_WLAST + + + + + WVALID + + + S_AXI_HP0_WVALID + + + + + ARBURST + + + S_AXI_HP0_ARBURST + + + + + ARLOCK + + + S_AXI_HP0_ARLOCK + + + + + ARSIZE + + + S_AXI_HP0_ARSIZE + + + + + AWBURST + + + S_AXI_HP0_AWBURST + + + + + AWLOCK + + + S_AXI_HP0_AWLOCK + + + + + AWSIZE + + + S_AXI_HP0_AWSIZE + + + + + ARPROT + + + S_AXI_HP0_ARPROT + + + + + AWPROT + + + S_AXI_HP0_AWPROT + + + + + ARADDR + + + S_AXI_HP0_ARADDR + + + + + AWADDR + + + S_AXI_HP0_AWADDR + + + + + ARCACHE + + + S_AXI_HP0_ARCACHE + + + + + ARLEN + + + S_AXI_HP0_ARLEN + + + + + ARQOS + + + S_AXI_HP0_ARQOS + + + + + AWCACHE + + + S_AXI_HP0_AWCACHE + + + + + AWLEN + + + S_AXI_HP0_AWLEN + + + + + AWQOS + + + S_AXI_HP0_AWQOS + + + + + ARID + + + S_AXI_HP0_ARID + + + + + AWID + + + S_AXI_HP0_AWID + + + + + WID + + + S_AXI_HP0_WID + + + + + WDATA + + + S_AXI_HP0_WDATA + + + + + WSTRB + + + S_AXI_HP0_WSTRB + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + PROTOCOL + AXI3 + + + READ_WRITE_MODE + READ_WRITE + + + DATA_WIDTH + 64 + + + ADDR_WIDTH + 32 + + + AWUSER_WIDTH + 0 + + + ARUSER_WIDTH + 0 + + + WUSER_WIDTH + 0 + + + RUSER_WIDTH + 0 + + + BUSER_WIDTH + 0 + + + ID_WIDTH + 6 + + + SUPPORTS_NARROW_BURST + 1 + + + MAX_BURST_LENGTH + 16 + + + FREQ_HZ + 100000000 + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK2 + + + + + + optional + true + + + + + + S_AXI_HP1 + + + + + + false + + + + ARREADY + + + S_AXI_HP1_ARREADY + + + + + AWREADY + + + S_AXI_HP1_AWREADY + + + + + BVALID + + + S_AXI_HP1_BVALID + + + + + RLAST + + + S_AXI_HP1_RLAST + + + + + RVALID + + + S_AXI_HP1_RVALID + + + + + WREADY + + + S_AXI_HP1_WREADY + + + + + BRESP + + + S_AXI_HP1_BRESP + + + + + RRESP + + + S_AXI_HP1_RRESP + + + + + BID + + + S_AXI_HP1_BID + + + + + RID + + + S_AXI_HP1_RID + + + + + RDATA + + + S_AXI_HP1_RDATA + + + + + ARVALID + + + S_AXI_HP1_ARVALID + + + + + AWVALID + + + S_AXI_HP1_AWVALID + + + + + BREADY + + + S_AXI_HP1_BREADY + + + + + RREADY + + + S_AXI_HP1_RREADY + + + + + WLAST + + + S_AXI_HP1_WLAST + + + + + WVALID + + + S_AXI_HP1_WVALID + + + + + ARBURST + + + S_AXI_HP1_ARBURST + + + + + ARLOCK + + + S_AXI_HP1_ARLOCK + + + + + ARSIZE + + + S_AXI_HP1_ARSIZE + + + + + AWBURST + + + S_AXI_HP1_AWBURST + + + + + AWLOCK + + + S_AXI_HP1_AWLOCK + + + + + AWSIZE + + + S_AXI_HP1_AWSIZE + + + + + ARPROT + + + S_AXI_HP1_ARPROT + + + + + AWPROT + + + S_AXI_HP1_AWPROT + + + + + ARADDR + + + S_AXI_HP1_ARADDR + + + + + AWADDR + + + S_AXI_HP1_AWADDR + + + + + ARCACHE + + + S_AXI_HP1_ARCACHE + + + + + ARLEN + + + S_AXI_HP1_ARLEN + + + + + ARQOS + + + S_AXI_HP1_ARQOS + + + + + AWCACHE + + + S_AXI_HP1_AWCACHE + + + + + AWLEN + + + S_AXI_HP1_AWLEN + + + + + AWQOS + + + S_AXI_HP1_AWQOS + + + + + ARID + + + S_AXI_HP1_ARID + + + + + AWID + + + S_AXI_HP1_AWID + + + + + WID + + + S_AXI_HP1_WID + + + + + WDATA + + + S_AXI_HP1_WDATA + + + + + WSTRB + + + S_AXI_HP1_WSTRB + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + + + + optional + false + + + + + + S_AXI_HP2 + + + + + + false + + + + ARREADY + + + S_AXI_HP2_ARREADY + + + + + AWREADY + + + S_AXI_HP2_AWREADY + + + + + BVALID + + + S_AXI_HP2_BVALID + + + + + RLAST + + + S_AXI_HP2_RLAST + + + + + RVALID + + + S_AXI_HP2_RVALID + + + + + WREADY + + + S_AXI_HP2_WREADY + + + + + BRESP + + + S_AXI_HP2_BRESP + + + + + RRESP + + + S_AXI_HP2_RRESP + + + + + BID + + + S_AXI_HP2_BID + + + + + RID + + + S_AXI_HP2_RID + + + + + RDATA + + + S_AXI_HP2_RDATA + + + + + ARVALID + + + S_AXI_HP2_ARVALID + + + + + AWVALID + + + S_AXI_HP2_AWVALID + + + + + BREADY + + + S_AXI_HP2_BREADY + + + + + RREADY + + + S_AXI_HP2_RREADY + + + + + WLAST + + + S_AXI_HP2_WLAST + + + + + WVALID + + + S_AXI_HP2_WVALID + + + + + ARBURST + + + S_AXI_HP2_ARBURST + + + + + ARLOCK + + + S_AXI_HP2_ARLOCK + + + + + ARSIZE + + + S_AXI_HP2_ARSIZE + + + + + AWBURST + + + S_AXI_HP2_AWBURST + + + + + AWLOCK + + + S_AXI_HP2_AWLOCK + + + + + AWSIZE + + + S_AXI_HP2_AWSIZE + + + + + ARPROT + + + S_AXI_HP2_ARPROT + + + + + AWPROT + + + S_AXI_HP2_AWPROT + + + + + ARADDR + + + S_AXI_HP2_ARADDR + + + + + AWADDR + + + S_AXI_HP2_AWADDR + + + + + ARCACHE + + + S_AXI_HP2_ARCACHE + + + + + ARLEN + + + S_AXI_HP2_ARLEN + + + + + ARQOS + + + S_AXI_HP2_ARQOS + + + + + AWCACHE + + + S_AXI_HP2_AWCACHE + + + + + AWLEN + + + S_AXI_HP2_AWLEN + + + + + AWQOS + + + S_AXI_HP2_AWQOS + + + + + ARID + + + S_AXI_HP2_ARID + + + + + AWID + + + S_AXI_HP2_AWID + + + + + WID + + + S_AXI_HP2_WID + + + + + WDATA + + + S_AXI_HP2_WDATA + + + + + WSTRB + + + S_AXI_HP2_WSTRB + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + + + + optional + false + + + + + + S_AXI_HP3 + + + + + + false + + + + ARREADY + + + S_AXI_HP3_ARREADY + + + + + AWREADY + + + S_AXI_HP3_AWREADY + + + + + BVALID + + + S_AXI_HP3_BVALID + + + + + RLAST + + + S_AXI_HP3_RLAST + + + + + RVALID + + + S_AXI_HP3_RVALID + + + + + WREADY + + + S_AXI_HP3_WREADY + + + + + BRESP + + + S_AXI_HP3_BRESP + + + + + RRESP + + + S_AXI_HP3_RRESP + + + + + BID + + + S_AXI_HP3_BID + + + + + RID + + + S_AXI_HP3_RID + + + + + RDATA + + + S_AXI_HP3_RDATA + + + + + ARVALID + + + S_AXI_HP3_ARVALID + + + + + AWVALID + + + S_AXI_HP3_AWVALID + + + + + BREADY + + + S_AXI_HP3_BREADY + + + + + RREADY + + + S_AXI_HP3_RREADY + + + + + WLAST + + + S_AXI_HP3_WLAST + + + + + WVALID + + + S_AXI_HP3_WVALID + + + + + ARBURST + + + S_AXI_HP3_ARBURST + + + + + ARLOCK + + + S_AXI_HP3_ARLOCK + + + + + ARSIZE + + + S_AXI_HP3_ARSIZE + + + + + AWBURST + + + S_AXI_HP3_AWBURST + + + + + AWLOCK + + + S_AXI_HP3_AWLOCK + + + + + AWSIZE + + + S_AXI_HP3_AWSIZE + + + + + ARPROT + + + S_AXI_HP3_ARPROT + + + + + AWPROT + + + S_AXI_HP3_AWPROT + + + + + ARADDR + + + S_AXI_HP3_ARADDR + + + + + AWADDR + + + S_AXI_HP3_AWADDR + + + + + ARCACHE + + + S_AXI_HP3_ARCACHE + + + + + ARLEN + + + S_AXI_HP3_ARLEN + + + + + ARQOS + + + S_AXI_HP3_ARQOS + + + + + AWCACHE + + + S_AXI_HP3_AWCACHE + + + + + AWLEN + + + S_AXI_HP3_AWLEN + + + + + AWQOS + + + S_AXI_HP3_AWQOS + + + + + ARID + + + S_AXI_HP3_ARID + + + + + AWID + + + S_AXI_HP3_AWID + + + + + WID + + + S_AXI_HP3_WID + + + + + WDATA + + + S_AXI_HP3_WDATA + + + + + WSTRB + + + S_AXI_HP3_WSTRB + + + + + + NUM_WRITE_OUTSTANDING + NUM WRITE OUTSTANDING + 8 + + + NUM_READ_OUTSTANDING + NUM READ OUTSTANDING + 8 + + + + + + optional + false + + + + + + FCLK_CLK0 + + + + false + + + + CLK + + + FCLK_CLK0 + + + + + + FREQ_HZ + 166666672 + + + ASSOCIATED_RESET + + + + ASSOCIATED_BUSIF + + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK0 + + + PHASE + 0.000 + + + + + + optional + true + + + + + + FCLK_CLK1 + + + + false + + + + CLK + + + FCLK_CLK1 + + + + + + FREQ_HZ + 50000000 + + + ASSOCIATED_RESET + + + + ASSOCIATED_BUSIF + + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK1 + + + PHASE + 0.000 + + + + + + optional + true + + + + + + FCLK_CLK2 + + + + false + + + + CLK + + + FCLK_CLK2 + + + + + + FREQ_HZ + 100000000 + + + ASSOCIATED_RESET + + + + ASSOCIATED_BUSIF + + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK2 + + + PHASE + 0.000 + + + + + + optional + true + + + + + + FCLK_CLK3 + + + + false + + + + CLK + + + FCLK_CLK3 + + + + + + FREQ_HZ + 200000000 + + + ASSOCIATED_RESET + + + + ASSOCIATED_BUSIF + + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK3 + + + PHASE + 0.000 + + + + + + optional + true + + + + + + FCLK_RESET0_N + + + + false + + + + RST + + + FCLK_RESET0_N + + + + + + + optional + true + + + + + + FCLK_RESET1_N + + + + false + + + + RST + + + FCLK_RESET1_N + + + + + + + optional + true + + + + + + FCLK_RESET2_N + + + + false + + + + RST + + + FCLK_RESET2_N + + + + + + + optional + true + + + + + + FCLK_RESET3_N + + + + false + + + + RST + + + FCLK_RESET3_N + + + + + + + optional + true + + + + + + IRQ_P2F_DMAC_ABORT + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC_ABORT + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC2 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC2 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC3 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC3 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC4 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC4 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC5 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC5 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC6 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC6 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_DMAC7 + + + + false + + + + INTERRUPT + + + IRQ_P2F_DMAC7 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_SMC + + + + false + + + + INTERRUPT + + + IRQ_P2F_SMC + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_QSPI + + + + false + + + + INTERRUPT + + + IRQ_P2F_QSPI + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_CTI + + + + false + + + + INTERRUPT + + + IRQ_P2F_CTI + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_GPIO + + + + false + + + + INTERRUPT + + + IRQ_P2F_GPIO + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_USB0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_USB0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_ENET0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_ENET0 + + + + + + SENSITIVITY + EDGE_RISING + + + + + + optional + false + + + + + + IRQ_P2F_ENET_WAKE0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_ENET_WAKE0 + + + + + + SENSITIVITY + EDGE_RISING + + + + + + optional + false + + + + + + IRQ_P2F_SDIO0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_SDIO0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_I2C0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_I2C0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_SPI0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_SPI0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_UART0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_UART0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_CAN0 + + + + false + + + + INTERRUPT + + + IRQ_P2F_CAN0 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_USB1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_USB1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_ENET1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_ENET1 + + + + + + SENSITIVITY + EDGE_RISING + + + + + + optional + false + + + + + + IRQ_P2F_ENET_WAKE1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_ENET_WAKE1 + + + + + + SENSITIVITY + EDGE_RISING + + + + + + optional + false + + + + + + IRQ_P2F_SDIO1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_SDIO1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_I2C1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_I2C1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_SPI1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_SPI1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_UART1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_UART1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_P2F_CAN1 + + + + false + + + + INTERRUPT + + + IRQ_P2F_CAN1 + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + false + + + + + + IRQ_F2P + + + + false + + + + INTERRUPT + + + IRQ_F2P + + + + + + PortWidth + 16 + + + SENSITIVITY + LEVEL_HIGH + + + + + + optional + true + + + + + + Core0_nFIQ + + + + false + + + + INTERRUPT + + + Core0_nFIQ + + + + + + + optional + false + + + + + + Core0_nIRQ + + + + false + + + + INTERRUPT + + + Core0_nIRQ + + + + + + + optional + false + + + + + + Core1_nFIQ + + + + false + + + + INTERRUPT + + + Core1_nFIQ + + + + + + + optional + false + + + + + + Core1_nIRQ + + + + false + + + + INTERRUPT + + + Core1_nIRQ + + + + + + + optional + false + + + + + + M_AXI_GP0_ACLK + + + + false + + + + CLK + + + M_AXI_GP0_ACLK + + + + + + ASSOCIATED_BUSIF + M_AXI_GP0 + + + FREQ_HZ + 50000000 + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK1 + + + + + + optional + true + + + + + + M_AXI_GP1_ACLK + + + + false + + + + CLK + + + M_AXI_GP1_ACLK + + + + + + ASSOCIATED_BUSIF + M_AXI_GP1 + + + + + + optional + false + + + + + + S_AXI_ACP_ACLK + + + + false + + + + CLK + + + S_AXI_ACP_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_ACP + + + + + + optional + false + + + + + + S_AXI_GP0_ACLK + + + + false + + + + CLK + + + S_AXI_GP0_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_GP0 + + + + + + optional + false + + + + + + S_AXI_GP1_ACLK + + + + false + + + + CLK + + + S_AXI_GP1_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_GP1 + + + + + + optional + false + + + + + + S_AXI_HP0_ACLK + + + + false + + + + CLK + + + S_AXI_HP0_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_HP0 + + + FREQ_HZ + 100000000 + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK2 + + + + + + optional + true + + + + + + S_AXI_HP1_ACLK + + + + false + + + + CLK + + + S_AXI_HP1_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_HP1 + + + + + + optional + false + + + + + + S_AXI_HP2_ACLK + + + + false + + + + CLK + + + S_AXI_HP2_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_HP2 + + + + + + optional + false + + + + + + S_AXI_HP3_ACLK + + + + false + + + + CLK + + + S_AXI_HP3_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI_HP3 + + + + + + optional + false + + + + + + FTMD_TRACEIN_CLK + + + + false + + + + CLK + + + FTMD_TRACEIN_CLK + + + + + + ASSOCIATED_BUSIF + FTM_TRACE_DATA + + + + + + optional + false + + + + + + DMA0_ACLK + + + + false + + + + CLK + + + DMA0_ACLK + + + + + + ASSOCIATED_BUSIF + DMA0_ACK:DMA0_REQ + + + + + + optional + false + + + + + + DMA1_ACLK + + + + false + + + + CLK + + + DMA1_ACLK + + + + + + ASSOCIATED_BUSIF + DMA1_ACK:DMA1_REQ + + + + + + optional + false + + + + + + DMA2_ACLK + + + + false + + + + CLK + + + DMA2_ACLK + + + + + + ASSOCIATED_BUSIF + DMA2_ACK:DMA2_REQ + + + + + + optional + false + + + + + + DMA3_ACLK + + + + false + + + + CLK + + + DMA3_ACLK + + + + + + ASSOCIATED_BUSIF + DMA3_ACK:DMA3_REQ + + + + + + optional + false + + + + + + TRIGGER_IN_0 + + + + false + + + + TRIG + + + FTMT_F2P_TRIG_0 + + + + + ACK + + + FTMT_F2P_TRIGACK_0 + + + + + + + optional + false + + + + + + TRIGGER_IN_1 + + + + false + + + + TRIG + + + FTMT_F2P_TRIG_1 + + + + + ACK + + + FTMT_F2P_TRIGACK_1 + + + + + + + optional + false + + + + + + TRIGGER_IN_2 + + + + false + + + + TRIG + + + FTMT_F2P_TRIG_2 + + + + + ACK + + + FTMT_F2P_TRIGACK_2 + + + + + + + optional + false + + + + + + TRIGGER_IN_3 + + + + false + + + + TRIG + + + FTMT_F2P_TRIG_3 + + + + + ACK + + + FTMT_F2P_TRIGACK_3 + + + + + + + optional + false + + + + + + TRIGGER_OUT_0 + + + + false + + + + ACK + + + FTMT_P2F_TRIGACK_0 + + + + + TRIG + + + FTMT_P2F_TRIG_0 + + + + + + + optional + false + + + + + + TRIGGER_OUT_1 + + + + false + + + + ACK + + + FTMT_P2F_TRIGACK_1 + + + + + TRIG + + + FTMT_P2F_TRIG_1 + + + + + + + optional + false + + + + + + TRIGGER_OUT_2 + + + + false + + + + ACK + + + FTMT_P2F_TRIGACK_2 + + + + + TRIG + + + FTMT_P2F_TRIG_2 + + + + + + + optional + false + + + + + + TRIGGER_OUT_3 + + + + false + + + + ACK + + + FTMT_P2F_TRIGACK_3 + + + + + TRIG + + + FTMT_P2F_TRIG_3 + + + + + + + optional + false + + + + + + + + Data + Data + 4G + 32 + + + segment1 + segment1 + 0x00000000 + 0x00040000 + + + segment2 + segment2 + 0x00040000 + 0x00040000 + + + segment3 + segment3 + 0x00080000 + 0x00080000 + + + segment4 + segment4 + 0x00100000 + 0x3ff00000 + + + M_AXI_GP0 + M_AXI_GP0 + 0x40000000 + 0x40000000 + + + M_AXI_GP1 + M_AXI_GP1 + 0x80000000 + 0x40000000 + + + IO_Peripheral_Registers + IO Peripheral Registers + 0xe0000000 + 0x00300000 + + + SMC_Memories + SMC Memories + 0xe1000000 + 0x05000000 + + + SLCR_Registers + SLCR Registers + 0xf8000000 + 0x00000c00 + + + PS_System_Registers + PS System Registers + 0xf8001000 + 0x0080f000 + + + CPU_Private_Registers + CPU Private Registers + 0xf8900000 + 0x00603000 + + + segment5 + segment5 + 0xfc000000 + 0x02000000 + + + segment6 + segment6 + 0xfffc0000 + 0x00040000 + + + 8 + + + + + S_AXI_HP0 + + HP0_LOW_OCM + HP0 LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + HP0_DDR_LOWOCM + HP0 DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + HP0_HIGH_OCM + HP0 HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + + + optional + true + + + + + + S_AXI_HP1 + + HP1_LOW_OCM + HP1 LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + HP1_DDR_LOWOCM + HP1 DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + HP1_HIGH_OCM + HP1 HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + + + optional + false + + + + + + S_AXI_HP2 + + HP2_LOW_OCM + HP2 LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + HP2_DDR_LOWOCM + HP2 DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + HP2_HIGH_OCM + HP2 HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + + + optional + false + + + + + + S_AXI_HP3 + + HP3_LOW_OCM + HP3 LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + HP3_DDR_LOWOCM + HP3 DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + HP3_HIGH_OCM + HP3 HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + + + optional + false + + + + + + S_AXI_GP0 + + GP0_LOW_OCM + GP0 LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + GP0_DDR_LOWOCM + GP0 DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + GP0_HIGH_OCM + GP0 HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + GP0_QSPI_LINEAR + GP0 QSPI LINEAR + 0xfc000000 + 16777216 + 32 + memory + + + + optional + true + + + + + + GP0_SRAM_NOR0 + GP0 SRAM NOR 0 + 0xe2000000 + 0x02000000 + 32 + memory + + + + optional + false + + + + + + GP0_SRAM_NOR1 + GP0 SRAM NOR 1 + 0xe4000000 + 0x02000000 + 32 + memory + + + + optional + false + + + + + + GP0_NAND + GP0 NAND + 0xe1000000 + 0x01000000 + 32 + memory + + + + optional + false + + + + + + GP0_IOP + GP0 IOP + 0xe0000000 + 0x00400000 + 32 + register + + + + optional + true + + + + + + GP0_UART0 + GP0 UART0 + 0xe0000000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_UART1 + GP0 UART0 + 0xe0001000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_USB0 + GP0 USB0 + 0xe0002000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_USB1 + GP0 USB1 + 0xe0003000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_IIC0 + GP0 IIC0 + 0xe0004000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_IIC1 + GP0 IIC1 + 0xe0005000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_SPI0 + GP0 SPI0 + 0xe0006000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_SPI1 + GP0 SPI1 + 0xe0007000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_CAN0 + GP0 CAN0 + 0xe0008000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_CAN1 + GP0 CAN1 + 0xe0009000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_GPIO + GP0 GPIO + 0xe000A000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_ENET0 + GP0 ENET0 + 0xe000B000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_ENET1 + GP0 ENET1 + 0xe000C000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_QSPI + GP0 QSPI + 0xe000D000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_SMC + GP0 SMC + 0xe000e000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_SDIO0 + GP0 SDIO0 + 0xe0100000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_SDIO1 + GP0 SDIO1 + 0xe0101000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_PS_SLCR_REGS + GP0 PS REG + 0xf8000000 + 0x00010000 + 32 + register + + + + optional + false + + + + + + GP0_SLCR + GP0 SLCR + 0xf8000000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_TTC0 + GP0 TTC0 + 0xf8001000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_TTC1 + GP0 TTC1 + 0xf8002000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_DMAC_S + GP0 DMAC S + 0xf8003000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_DMAC_NS + GP0 DMAC NS + 0xf8004000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_SWDT + GP0 SWDT + 0xf8005000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_DDRC + GP0 DDRC + 0xf8006000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_DEVCFG + GP0 DEVCFG + 0xf8007000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_AFI0 + GP0 AFI0 + 0xf8008000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_AFI1 + GP0 AFI1 + 0xf8009000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_AFI2 + GP0 AFI2 + 0xf800A000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_AFI3 + GP0 AFI3 + 0xf800B000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_OCM_REG + GP0 OCM REG + 0xf800C000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP0_CORESIGHT + GP0 CORESIGHT + 0xf8800000 + 0x00100000 + 32 + register + + + + optional + false + + + + + + GP0_M_AXI_GP0 + GP0 M AXI GP0 + 0x40000000 + 0x40000000 + 32 + register + + + + optional + true + + + + + + GP0_M_AXI_GP1 + GP0 M AXI GP1 + 0x80000000 + 0x40000000 + 32 + register + + + + optional + false + + + + + + + + optional + false + + + + + + S_AXI_GP1 + + GP1_LOW_OCM + GP1 LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + GP1_DDR_LOWOCM + GP1 DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + GP1_HIGH_OCM + GP1 HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + GP1_QSPI_LINEAR + GP1 QSPI LINEAR + 0xfc000000 + 16777216 + 32 + memory + + + + optional + true + + + + + + GP1_SRAM_NOR0 + GP1 SRAM NOR 0 + 0xe2000000 + 0x02000000 + 32 + memory + + + + optional + false + + + + + + GP1_SRAM_NOR1 + GP1 SRAM NOR 1 + 0xe4000000 + 0x02000000 + 32 + memory + + + + optional + false + + + + + + GP1_NAND + GP1 NAND + 0xe1000000 + 0x01000000 + 32 + memory + + + + optional + false + + + + + + GP1_IOP + GP1 IOP + 0xe0000000 + 0x00400000 + 32 + register + + + + optional + true + + + + + + GP1_UART0 + GP1 UART0 + 0xe0000000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_UART1 + GP1 UART0 + 0xe0001000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_USB0 + GP1 USB0 + 0xe0002000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_USB1 + GP1 USB1 + 0xe0003000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_IIC0 + GP1 IIC0 + 0xe0004000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_IIC1 + GP1 IIC1 + 0xe0005000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_SPI0 + GP1 SPI0 + 0xe0006000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_SPI1 + GP1 SPI1 + 0xe0007000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_CAN0 + GP1 CAN0 + 0xe0008000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_CAN1 + GP1 CAN1 + 0xe0009000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_GPIO + GP1 GPIO + 0xe000A000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_ENET0 + GP1 ENET0 + 0xe000B000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_ENET1 + GP1 ENET1 + 0xe000C000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_QSPI + GP1 QSPI + 0xe000D000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_SMC + GP1 SMC + 0xe000e000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_SDIO0 + GP1 SDIO0 + 0xe0100000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_SDIO1 + GP1 SDIO1 + 0xe0101000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_PS_SLCR_REGS + GP1 PS REG + 0xf8000000 + 0x00010000 + 32 + register + + + + optional + false + + + + + + GP1_SLCR + GP1 SLCR + 0xf8000000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_TTC0 + GP1 TTC0 + 0xf8001000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_TTC1 + GP1 TTC1 + 0xf8002000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_DMAC_S + GP1 DMAC S + 0xf8003000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_DMAC_NS + GP1 DMAC NS + 0xf8004000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_SWDT + GP1 SWDT + 0xf8005000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_DDRC + GP1 DDRC + 0xf8006000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_DEVCFG + GP1 DEVCFG + 0xf8007000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_AFI0 + GP1 AFI0 + 0xf8008000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_AFI1 + GP1 AFI1 + 0xf8009000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_AFI2 + GP1 AFI2 + 0xf800A000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_AFI3 + GP1 AFI3 + 0xf800B000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_OCM_REG + GP1 OCM REG + 0xf800C000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + GP1_CORESIGHT + GP1 CORESIGHT + 0xf8800000 + 0x00100000 + 32 + register + + + + optional + false + + + + + + GP1_M_AXI_GP0 + GP1 M AXI GP0 + 0x40000000 + 0x40000000 + 32 + register + + + + optional + true + + + + + + GP1_M_AXI_GP1 + GP1 M AXI GP1 + 0x80000000 + 0x40000000 + 32 + register + + + + optional + false + + + + + + + + optional + false + + + + + + S_AXI_ACP + + ACP_LOW_OCM + ACP LOW OCM + 0x00000000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + ACP_DDR_LOWOCM + ACP DDR LOWOCM + 0x00000000 + 1073741824 + 32 + memory + + + + optional + true + + + + + + ACP_HIGH_OCM + ACP HIGH OCM + 0xfffc0000 + 0x00040000 + 32 + memory + + + + optional + false + + + + + + ACP_QSPI_LINEAR + ACP QSPI LINEAR + 0xfc000000 + 16777216 + 32 + memory + + + + optional + true + + + + + + ACP_SRAM_NOR0 + ACP SRAM NOR 0 + 0xe2000000 + 0x02000000 + 32 + memory + + + + optional + false + + + + + + ACP_SRAM_NOR1 + ACP SRAM NOR 1 + 0xe4000000 + 0x02000000 + 32 + memory + + + + optional + false + + + + + + ACP_NAND + ACP NAND + 0xe1000000 + 0x01000000 + 32 + memory + + + + optional + false + + + + + + ACP_IOP + ACP IOP + 0xe0000000 + 0x00400000 + 32 + register + + + + optional + true + + + + + + ACP_UART0 + ACP UART0 + 0xe0000000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_UART1 + ACP UART0 + 0xe0001000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_USB0 + ACP USB0 + 0xe0002000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_USB1 + ACP USB1 + 0xe0003000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_IIC0 + ACP IIC0 + 0xe0004000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_IIC1 + ACP IIC1 + 0xe0005000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_SPI0 + ACP SPI0 + 0xe0006000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_SPI1 + ACP SPI1 + 0xe0007000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_CAN0 + ACP CAN0 + 0xe0008000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_CAN1 + ACP CAN1 + 0xe0009000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_GPIO + ACP GPIO + 0xe000A000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_ENET0 + ACP ENET0 + 0xe000B000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_ENET1 + ACP ENET1 + 0xe000C000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_QSPI + ACP QSPI + 0xe000D000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_SMC + ACP SMC + 0xe000e000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_SDIO0 + ACP SDIO0 + 0xe0100000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_SDIO1 + ACP SDIO1 + 0xe0101000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_PS_SLCR_REGS + ACP PS REG + 0xf8000000 + 0x00010000 + 32 + register + + + + optional + false + + + + + + ACP_SLCR + ACP SLCR + 0xf8000000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_TTC0 + ACP TTC0 + 0xf8001000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_TTC1 + ACP TTC1 + 0xf8002000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_DMAC_S + ACP DMAC S + 0xf8003000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_DMAC_NS + ACP DMAC NS + 0xf8004000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_SWDT + ACP SWDT + 0xf8005000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_DDRC + ACP DDRC + 0xf8006000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_DEVCFG + ACP DEVCFG + 0xf8007000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_AFI0 + ACP AFI0 + 0xf8008000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_AFI1 + ACP AFI1 + 0xf8009000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_AFI2 + ACP AFI2 + 0xf800A000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_AFI3 + ACP AFI3 + 0xf800B000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_OCM_REG + ACP OCM REG + 0xf800C000 + 0x00001000 + 32 + register + + + + optional + false + + + + + + ACP_CORESIGHT + ACP CORESIGHT + 0xf8800000 + 0x00100000 + 32 + register + + + + optional + false + + + + + + ACP_M_AXI_GP0 + ACP M AXI GP0 + 0x40000000 + 0x40000000 + 32 + register + + + + optional + true + + + + + + ACP_M_AXI_GP1 + ACP M AXI GP1 + 0x80000000 + 0x40000000 + 32 + register + + + + optional + false + + + + + + + + optional + false + + + + + + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + a9001dcd + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + GENtimestamp + Wed Jul 15 03:10:10 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_anylanguagesynthesis + Synthesis + :vivado.xilinx.com:synthesis + + xilinx_anylanguagesynthesis_view_fileset + + + + customizationCRC + a9001dcd + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + GENtimestamp + Wed Jul 15 03:10:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesiswrapper + Verilog Synthesis Wrapper + verilogSource:vivado.xilinx.com:synthesis.wrapper + verilog + + xilinx_verilogsynthesiswrapper_view_fileset + + + + customizationCRC + a9001dcd + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + GENtimestamp + Wed Jul 15 03:10:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_anylanguagebehavioralsimulation + Simulation + :vivado.xilinx.com:simulation + + xilinx_anylanguagebehavioralsimulation_xilinx_com_ip_processing_system7_bfm_2_0__ref_view_fileset + + + xilinx_anylanguagebehavioralsimulation_view_fileset + + + + customizationCRC + b15c4959 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + + + xilinx_anylanguagesimulationwrapper + Simulation Wrapper + :vivado.xilinx.com:simulation.wrapper + + xilinx_anylanguagesimulationwrapper_view_fileset + + + + customizationCRC + b15c4959 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + GENtimestamp + Wed Jul 15 03:10:35 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + customizationCRC + a9001dcd + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:52:02 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + a9001dcd + + + customizationCRCversion + 5 + + + boundaryCRC + 2cc787ac + + + boundaryCRCversion + 1 + + + GENtimestamp + Wed Jul 15 03:10:35 UTC 2015 + + + StaleAtRelink + false + + + + + + + CAN0_PHY_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + CAN0_PHY_RX + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + CAN1_PHY_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + CAN1_PHY_RX + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_GMII_TX_EN + + out + + 0 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_GMII_TX_ER + + out + + 0 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_MDIO_MDC + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_MDIO_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_MDIO_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_PTP_DELAY_REQ_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_DELAY_REQ_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_PDELAY_REQ_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_PDELAY_REQ_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_PDELAY_RESP_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_PDELAY_RESP_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_SYNC_FRAME_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_PTP_SYNC_FRAME_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_SOF_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_SOF_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + ENET0_GMII_TXD + + out + + 7 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_GMII_COL + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_GMII_CRS + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_GMII_RX_CLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_GMII_RX_DV + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_GMII_RX_ER + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_GMII_TX_CLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET0_MDIO_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_EXT_INTIN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET0_GMII_RXD + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_GMII_TX_EN + + out + + 0 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_GMII_TX_ER + + out + + 0 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_MDIO_MDC + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_MDIO_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_MDIO_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_DELAY_REQ_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_DELAY_REQ_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_PDELAY_REQ_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_PDELAY_REQ_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_PDELAY_RESP_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_PDELAY_RESP_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_SYNC_FRAME_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_PTP_SYNC_FRAME_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_SOF_RX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_SOF_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_GMII_TXD + + out + + 7 + 0 + + + + reg + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_GMII_COL + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_GMII_CRS + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_GMII_RX_CLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_GMII_RX_DV + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_GMII_RX_ER + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_GMII_TX_CLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + ENET1_MDIO_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_EXT_INTIN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + ENET1_GMII_RXD + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + GPIO_I + + in + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + GPIO_O + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + GPIO_T + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + I2C0_SDA_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + I2C0_SDA_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + I2C0_SDA_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + I2C0_SCL_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + I2C0_SCL_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + I2C0_SCL_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + I2C1_SDA_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + I2C1_SDA_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + I2C1_SDA_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + I2C1_SCL_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + I2C1_SCL_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + I2C1_SCL_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + PJTAG_TCK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + PJTAG_TMS + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + PJTAG_TDI + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + PJTAG_TDO + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_CLK + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_CLK_FB + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO0_CMD_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_CMD_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO0_CMD_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_DATA_I + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO0_DATA_O + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_DATA_T + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_LED + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_CDN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO0_WP + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO0_BUSPOW + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO0_BUSVOLT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_CLK + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_CLK_FB + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO1_CMD_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_CMD_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO1_CMD_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_DATA_I + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO1_DATA_O + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_DATA_T + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_LED + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_CDN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO1_WP + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SDIO1_BUSPOW + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SDIO1_BUSVOLT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_SCLK_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI0_SCLK_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_SCLK_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_MOSI_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI0_MOSI_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_MOSI_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_MISO_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI0_MISO_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_MISO_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_SS_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI0_SS_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_SS1_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_SS2_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI0_SS_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_SCLK_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI1_SCLK_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_SCLK_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_MOSI_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI1_MOSI_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_MOSI_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_MISO_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI1_MISO_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_MISO_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_SS_I + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SPI1_SS_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_SS1_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_SS2_O + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + SPI1_SS_T + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART0_DTRN + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART0_RTSN + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART0_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART0_CTSN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART0_DCDN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART0_DSRN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART0_RIN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART0_RX + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 1 + + + + + + optional + false + + + + + + UART1_DTRN + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART1_RTSN + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART1_TX + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + UART1_CTSN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART1_DCDN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART1_DSRN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART1_RIN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + UART1_RX + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 1 + + + + + + optional + false + + + + + + TTC0_WAVE0_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TTC0_WAVE1_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TTC0_WAVE2_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TTC0_CLK0_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + TTC0_CLK1_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + TTC0_CLK2_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + TTC1_WAVE0_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TTC1_WAVE1_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TTC1_WAVE2_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TTC1_CLK0_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + TTC1_CLK1_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + TTC1_CLK2_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + WDT_CLK_IN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + WDT_RST_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TRACE_CLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + TRACE_CLK_OUT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TRACE_CTL + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + TRACE_DATA + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + USB0_PORT_INDCTL + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + USB0_VBUS_PWRSELECT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + USB0_VBUS_PWRFAULT + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + USB1_PORT_INDCTL + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + USB1_VBUS_PWRSELECT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + USB1_VBUS_PWRFAULT + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + SRAM_INTIN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP0_ARVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_BREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_RREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_WLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_WVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARID + + out + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWID + + out + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_WID + + out + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARLEN + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWLEN + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + M_AXI_GP0_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_ARREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_AWREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_BVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_RLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_RVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_WREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_BID + + in + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_RID + + in + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP0_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + M_AXI_GP1_ARVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_BREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_RREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_WLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_WVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARID + + out + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWID + + out + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_WID + + out + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARLEN + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWLEN + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + M_AXI_GP1_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_ARREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_AWREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_BVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_RLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_RVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_WREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_BID + + in + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_RID + + in + + 11 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + M_AXI_GP1_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_BID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_RID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP0_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_ARID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_AWID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP0_WID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_BID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_RID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_GP1_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_ARID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_AWID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_GP1_WID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_BID + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_RID + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_RDATA + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_ACP_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARID + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWID + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_WID + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_ARUSER + + in + + 4 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_AWUSER + + in + + 4 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_WDATA + + in + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_ACP_WSTRB + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP0_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_BID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RDATA + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_WCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_RACOUNT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_WACOUNT + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + S_AXI_HP0_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_RDISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_WRISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_ARID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_AWID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_WID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_WDATA + + in + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP0_WSTRB + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + S_AXI_HP1_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_BID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RDATA + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_WCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_RACOUNT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_WACOUNT + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP1_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_RDISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_WRISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_ARID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_AWID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_WID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_WDATA + + in + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP1_WSTRB + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_BID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RDATA + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_WCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_RACOUNT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_WACOUNT + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP2_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_RDISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_WRISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_ARID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_AWID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_WID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_WDATA + + in + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP2_WSTRB + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_AWREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_BVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RLAST + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_WREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_BID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RID + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RDATA + + out + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_WCOUNT + + out + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_RACOUNT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_WACOUNT + + out + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + S_AXI_HP3_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_BREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_RDISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_RREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_WLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_WRISSUECAP1_EN + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_WVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWBURST + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWLOCK + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWSIZE + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWPROT + + in + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWADDR + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWCACHE + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWLEN + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWQOS + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_ARID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_AWID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_WID + + in + + 5 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_WDATA + + in + + 63 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + S_AXI_HP3_WSTRB + + in + + 7 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + IRQ_P2F_DMAC_ABORT + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC2 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC3 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC4 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC5 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC6 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_DMAC7 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_SMC + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_QSPI + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_CTI + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_GPIO + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_USB0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_ENET0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_ENET_WAKE0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_SDIO0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_I2C0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_SPI0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_UART0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_CAN0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_USB1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_ENET1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_ENET_WAKE1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_SDIO1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_I2C1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_SPI1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_UART1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_P2F_CAN1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + IRQ_F2P + + in + + 15 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + true + + + + + + Core0_nFIQ + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + Core0_nIRQ + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + Core1_nFIQ + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + Core1_nIRQ + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA0_DATYPE + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA0_DAVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA0_DRREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA1_DATYPE + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA1_DAVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA1_DRREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA2_DATYPE + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA2_DAVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA2_DRREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA3_DATYPE + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA3_DAVALID + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA3_DRREADY + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + DMA0_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA0_DAREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA0_DRLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA0_DRVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA1_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA1_DAREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA1_DRLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA1_DRVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA2_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA2_DAREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA2_DRLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA2_DRVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA3_ACLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA3_DAREADY + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA3_DRLAST + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA3_DRVALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA0_DRTYPE + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA1_DRTYPE + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA2_DRTYPE + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DMA3_DRTYPE + + in + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FCLK_CLK0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_CLK1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_CLK2 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_CLK3 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_CLKTRIG0_N + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FCLK_CLKTRIG1_N + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FCLK_CLKTRIG2_N + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FCLK_CLKTRIG3_N + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FCLK_RESET0_N + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_RESET1_N + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_RESET2_N + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FCLK_RESET3_N + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + FTMD_TRACEIN_DATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMD_TRACEIN_VALID + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMD_TRACEIN_CLK + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMD_TRACEIN_ATID + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_F2P_TRIG_0 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_F2P_TRIGACK_0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_F2P_TRIG_1 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_F2P_TRIGACK_1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_F2P_TRIG_2 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_F2P_TRIGACK_2 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_F2P_TRIG_3 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_F2P_TRIGACK_3 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_F2P_DEBUG + + in + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_P2F_TRIGACK_0 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_P2F_TRIG_0 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_P2F_TRIGACK_1 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_P2F_TRIG_1 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_P2F_TRIGACK_2 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_P2F_TRIG_2 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_P2F_TRIGACK_3 + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + FTMT_P2F_TRIG_3 + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FTMT_P2F_DEBUG + + out + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + FPGA_IDLE_N + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + EVENT_EVENTO + + out + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + EVENT_STANDBYWFE + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + EVENT_STANDBYWFI + + out + + 1 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + false + + + + + + EVENT_EVENTI + + in + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + DDR_ARB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + 0 + + + + + + optional + false + + + + + + MIO + + inout + + 53 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + true + + + + + + DDR_CAS_n + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_CKE + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_Clk_n + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_Clk + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_CS_n + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_DRSTB + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_ODT + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_RAS_n + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_WEB + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_BankAddr + + inout + + 2 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_Addr + + inout + + 14 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_VRN + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_VRP + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_DM + + inout + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_DQ + + inout + + 31 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_DQS_n + + inout + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + DDR_DQS + + inout + + 3 + 0 + + + + std_logic_vector + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + optional + true + + + + + + PS_SRSTB + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + true + + + + + + PS_CLK + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + true + + + + + + PS_PORB + + inout + + + std_logic + xilinx_anylanguagesynthesis + xilinx_anylanguagebehavioralsimulation + + + + + + + true + + + + + + + + C_EN_EMIO_PJTAG + 0 + + + C_EN_EMIO_ENET0 + 0 + + + C_EN_EMIO_ENET1 + 0 + + + C_EN_EMIO_TRACE + 0 + + + C_INCLUDE_TRACE_BUFFER + 0 + + + C_TRACE_BUFFER_FIFO_SIZE + 128 + + + USE_TRACE_DATA_EDGE_DETECTOR + 0 + + + C_TRACE_PIPELINE_WIDTH + 8 + + + C_TRACE_BUFFER_CLOCK_DELAY + 12 + + + C_EMIO_GPIO_WIDTH + 64 + + + C_INCLUDE_ACP_TRANS_CHECK + 0 + + + C_USE_DEFAULT_ACP_USER_VAL + 0 + + + C_S_AXI_ACP_ARUSER_VAL + 31 + + + C_S_AXI_ACP_AWUSER_VAL + 31 + + + C_M_AXI_GP0_ID_WIDTH + 12 + + + C_M_AXI_GP0_ENABLE_STATIC_REMAP + 0 + + + C_M_AXI_GP1_ID_WIDTH + 12 + + + C_M_AXI_GP1_ENABLE_STATIC_REMAP + 0 + + + C_S_AXI_GP0_ID_WIDTH + 6 + + + C_S_AXI_GP1_ID_WIDTH + 6 + + + C_S_AXI_ACP_ID_WIDTH + 3 + + + C_S_AXI_HP0_ID_WIDTH + 6 + + + C_S_AXI_HP0_DATA_WIDTH + 64 + + + C_S_AXI_HP1_ID_WIDTH + 6 + + + C_S_AXI_HP1_DATA_WIDTH + 64 + + + C_S_AXI_HP2_ID_WIDTH + 6 + + + C_S_AXI_HP2_DATA_WIDTH + 64 + + + C_S_AXI_HP3_ID_WIDTH + 6 + + + C_S_AXI_HP3_DATA_WIDTH + 64 + + + C_M_AXI_GP0_THREAD_ID_WIDTH + 12 + + + C_M_AXI_GP1_THREAD_ID_WIDTH + 12 + + + C_NUM_F2P_INTR_INPUTS + 16 + + + C_IRQ_F2P_MODE + DIRECT + + + C_DQ_WIDTH + 32 + + + C_DQS_WIDTH + 4 + + + C_DM_WIDTH + 4 + + + C_MIO_PRIMITIVE + 54 + + + C_TRACE_INTERNAL_WIDTH + 2 + + + C_USE_AXI_NONSECURE + 0 + + + C_USE_M_AXI_GP0 + 1 + + + C_USE_M_AXI_GP1 + 0 + + + C_USE_S_AXI_GP0 + 0 + + + C_USE_S_AXI_HP0 + 1 + + + C_USE_S_AXI_HP1 + 0 + + + C_USE_S_AXI_HP2 + 0 + + + C_USE_S_AXI_HP3 + 0 + + + C_USE_S_AXI_ACP + 0 + + + C_PS7_SI_REV + PRODUCTION + + + C_FCLK_CLK0_BUF + true + + + C_FCLK_CLK1_BUF + true + + + C_FCLK_CLK2_BUF + true + + + C_FCLK_CLK3_BUF + true + + + C_PACKAGE_NAME + clg400 + + + + + + choices_0 + 0x00100000 + 0x00040000 + + + choices_1 + 0x3FFFFFFF + + + choices_2 + 0xE0000000 + + + choices_3 + 0xE0000FFF + + + choices_4 + 0xE0001000 + + + choices_5 + 0xE0001FFF + + + choices_6 + 0xE0004000 + + + choices_7 + 0xE0004FFF + + + choices_8 + 0xE0005000 + + + choices_9 + 0xE0005FFF + + + choices_10 + 0xE0006000 + + + choices_11 + 0xE0006FFF + + + choices_12 + 0xE0007000 + + + choices_13 + 0xE0007FFF + + + choices_14 + 0xE0008000 + + + choices_15 + 0xE0008FFF + + + choices_16 + 0xE0009000 + + + choices_17 + 0xE0009FFF + + + choices_18 + 0xE000A000 + + + choices_19 + 0xE000AFFF + + + choices_20 + 0xE000B000 + + + choices_21 + 0xE000BFFF + + + choices_22 + 0xE000C000 + + + choices_23 + 0xE000CFFF + + + choices_24 + 0xE0100000 + + + choices_25 + 0xE0100FFF + + + choices_26 + 0xE0101000 + + + choices_27 + 0xE0101FFF + + + choices_28 + 0xE0102000 + + + choices_29 + 0xE0102fff + + + choices_30 + 0xE0103000 + + + choices_31 + 0xE0103fff + + + choices_32 + 0xE0104000 + + + choices_33 + 0xE0104fff + + + choices_34 + 0xE0105000 + + + choices_35 + 0xE0105fff + + + choices_36 + false + true + + + choices_37 + false + true + + + choices_38 + false + true + + + choices_39 + false + true + + + choices_40 + 0 + 1 + + + choices_41 + 0 + 1 + + + choices_42 + 0 + 1 + + + choices_43 + 0 + 1 + + + choices_44 + 0 + 1 + + + choices_45 + 0 + 1 + + + choices_46 + 0 + 1 + + + choices_47 + 0 + 1 + + + choices_48 + 0 + 1 + + + choices_49 + 0 + 1 + + + choices_50 + 0 + 1 + + + choices_51 + 0 + 1 + + + choices_52 + 0 + 1 + + + choices_53 + 0 + 1 + + + choices_54 + 0 + 1 + + + choices_55 + 0 + 1 + + + choices_56 + 0 + 1 + + + choices_57 + 0 + 1 + + + choices_58 + 0 + 1 + + + choices_59 + 0 + 1 + + + choices_60 + 0 + 1 + + + choices_61 + 0 + 1 + + + choices_62 + 0 + 1 + + + choices_63 + 0 + 1 + + + choices_64 + 0 + 1 + + + choices_65 + 0 + 1 + + + choices_66 + 0 + 1 + + + choices_67 + 0 + 1 + + + choices_68 + 0 + 1 + + + choices_69 + 0 + 1 + + + choices_70 + 1 + 0 + + + choices_71 + 0 + 1 + + + choices_72 + 0 + 1 + + + choices_73 + 0 + 1 + + + choices_74 + 0 + 1 + + + choices_75 + 0 + 1 + + + choices_76 + 0 + 1 + + + choices_77 + 0 + 1 + + + choices_78 + 0 + 1 + + + choices_79 + 0 + 1 + + + choices_80 + 0 + 1 + + + choices_81 + 0 + 1 + + + choices_82 + 0 + 1 + + + choices_83 + 0 + 1 + + + choices_84 + 0 + 1 + + + choices_85 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + + + choices_86 + 0 + 1 + + + choices_87 + 32 + 64 + 128 + 256 + + + choices_88 + 0 + 1 + + + choices_89 + 12 + + + choices_90 + 0 + 1 + + + choices_91 + <Select> + DISABLED + CPU0 DBG_REQ + CPU1 DBG_REQ + BOTH + + + choices_92 + <Select> + DISABLED + CPU0 DBG_REQ + CPU1 DBG_REQ + BOTH + + + choices_93 + <Select> + DISABLED + CPU0 DBG_REQ + CPU1 DBG_REQ + BOTH + + + choices_94 + <Select> + DISABLED + CPU0 DBG_REQ + CPU1 DBG_REQ + BOTH + + + choices_95 + <Select> + DISABLED + CPU0 DBG_ACK + CPU1 DBG_ACK + BOTH + + + choices_96 + <Select> + DISABLED + CPU0 DBG_ACK + CPU1 DBG_ACK + BOTH + + + choices_97 + <Select> + DISABLED + CPU0 DBG_ACK + CPU1 DBG_ACK + BOTH + + + choices_98 + <Select> + DISABLED + CPU0 DBG_ACK + CPU1 DBG_ACK + BOTH + + + choices_99 + 0 + 1 + + + choices_100 + 0 + 1 + + + choices_101 + 0 + 1 + + + choices_102 + 0 + 1 + + + choices_103 + 0 + 1 + + + choices_104 + 0 + 1 + + + choices_105 + 0 + 1 + + + choices_106 + 0 + 1 + + + choices_107 + 0 + 1 + + + choices_108 + 0 + 1 + + + choices_109 + 0 + 1 + + + choices_110 + 0 + 1 + + + choices_111 + 110 + 300 + 1200 + 2400 + 4800 + 9600 + 19200 + 38400 + 57600 + 115200 + 128000 + 230400 + 460800 + 921600 + + + choices_112 + 110 + 300 + 1200 + 2400 + 4800 + 9600 + 19200 + 38400 + 57600 + 115200 + 128000 + 230400 + 460800 + 921600 + + + choices_113 + 0 + 1 + + + choices_114 + 12 + + + choices_115 + 0 + 1 + + + choices_116 + 0 + 1 + + + choices_117 + 0 + 1 + + + choices_118 + 6 + 12 + + + choices_119 + 12 + + + choices_120 + 0 + 1 + + + choices_121 + 0 + 1 + + + choices_122 + 0 + 1 + + + choices_123 + 6 + 12 + + + choices_124 + 6 + + + choices_125 + 6 + + + choices_126 + 0 + 1 + + + choices_127 + 0 + 1 + + + choices_128 + 6 + + + choices_129 + 32 + 64 + + + choices_130 + 6 + + + choices_131 + 32 + 64 + + + choices_132 + 6 + + + choices_133 + 32 + 64 + + + choices_134 + 6 + + + choices_135 + 32 + 64 + + + choices_136 + 0 + 1 + + + choices_137 + 0 + 1 + + + choices_138 + 0 + 1 + + + choices_139 + 0 + 1 + + + choices_140 + 0 + 1 + + + choices_141 + 0 + 1 + + + choices_142 + 0 + 1 + + + choices_143 + 0 + 1 + + + choices_144 + 0 + 1 + + + choices_145 + 0 + 1 + + + choices_146 + 0 + 1 + + + choices_147 + 0 + 1 + + + choices_148 + 0 + 1 + + + choices_149 + 0 + 1 + + + choices_150 + 0 + 1 + + + choices_151 + 0 + 1 + + + choices_152 + 0 + 1 + + + choices_153 + 0 + 1 + + + choices_154 + 0 + 1 + + + choices_155 + 0 + 1 + + + choices_156 + 0 + 1 + + + choices_157 + 0 + 1 + + + choices_158 + 0 + 1 + + + choices_159 + 0 + 1 + + + choices_160 + 0 + 1 + + + choices_161 + 32 + 16 + + + choices_162 + 4 + 2 + + + choices_163 + 4 + 2 + + + choices_164 + 54 + 32 + + + choices_165 + 0 + 1 + + + choices_166 + 0 + 1 + + + choices_167 + 0 + 1 + + + choices_168 + 0 + 1 + + + choices_169 + 0 + 1 + + + choices_170 + 0 + 1 + + + choices_171 + 0 + 1 + + + choices_172 + 0 + 1 + + + choices_173 + 0 + 1 + + + choices_174 + 0 + 1 + + + choices_175 + 0 + 1 + + + choices_176 + 0 + 1 + + + choices_177 + 0 + 1 + + + choices_178 + 0 + 1 + + + choices_179 + 0 + 1 + + + choices_180 + 0 + 1 + + + choices_181 + 0 + 1 + + + choices_182 + 0 + 1 + + + choices_183 + 0 + 1 + + + choices_184 + 0 + 1 + + + choices_185 + 0 + 1 + + + choices_186 + 0 + 1 + + + choices_187 + 0 + 1 + + + choices_188 + 0 + 1 + + + choices_189 + 0 + 1 + + + choices_190 + 0 + 1 + + + choices_191 + 0 + 1 + + + choices_192 + 0 + 1 + + + choices_193 + 0 + 1 + + + choices_194 + 0 + 1 + + + choices_195 + 0 + 1 + + + choices_196 + 0 + 1 + + + choices_197 + 0 + 1 + + + choices_198 + 0 + 1 + + + choices_199 + 0 + 1 + + + choices_200 + 0 + 1 + + + choices_201 + 0 + 1 + + + choices_202 + 0 + 1 + + + choices_203 + 0 + 1 + + + choices_204 + 0 + 1 + + + choices_205 + DIRECT + REVERSE + + + choices_206 + 0 + 1 + + + choices_207 + 0 + 1 + + + choices_208 + 0 + 1 + + + choices_209 + 0 + 1 + + + choices_210 + 1 + 2 + 3 + + + choices_211 + LVCMOS 3.3V + LVCMOS 2.5V + HSTL 1.8V + LVCMOS 1.8V + + + choices_212 + LVCMOS 1.8V + LVCMOS 2.5V + LVCMOS 3.3V + HSTL 1.8V + + + choices_213 + 0 + 1 + + + choices_214 + 0 + 1 + + + choices_215 + LPDDR 2 + DDR 2 + DDR 3 + DDR 3 (Low Voltage) + + + choices_216 + Disabled + Enabled + + + choices_217 + 16 Bit + 32 Bit + + + choices_218 + 4 + 8 + + + choices_219 + Normal (0-85) + High (95 Max) + + + choices_220 + MT41J128M8 JP-125 + MT41J128M8 JP-15E + MT41J64M16 JT-125G + MT41J64M16 JT-15E + MT41J256M8 DA-107 + MT41K128M16 JT-125 + MT41J256M8 HX-125 + MT41J256M8 HX-15E + MT41J256M8 HX-187E + MT41J128M16 HA-107G + MT41J128M16 HA-125 + MT41J128M16 HA-15E + MT41J128M16 HA-187E + MT41J512M8 RA-15E + MT41K128M16 HA-15E + MT41K256M16 RE-125 + MT41K256M16 RE-15E + MT41K256M8 DA-125 + MT41K256M8 DA-15E + MT41K256M8 HX-15E + MT41J256M16 RE-125 + Custom + + + choices_221 + 8 Bits + 16 Bits + 32 Bits + + + choices_222 + 128 MBits + 256 MBits + 512 MBits + 1024 MBits + 2048 MBits + 4096 MBits + 8192 MBits + + + choices_223 + DDR3_800D + DDR3_800E + DDR3_1066E + DDR3_1066F + DDR3_1066G + DDR3_1333F + DDR3_1333G + DDR3_1333H + DDR3_1333J + DDR3_1600G + DDR3_1600H + DDR3_1600J + DDR3_1600K + + + choices_224 + 0 + 1 + + + choices_225 + 0 + 1 + + + choices_226 + 0 + 1 + + + choices_227 + 0 + 1 + + + choices_228 + 0 + 1 + + + choices_229 + <Select> + Low + Medium + High + + + choices_230 + <Select> + Low + Medium + High + + + choices_231 + <Select> + Low + Medium + High + + + choices_232 + <Select> + Low + Medium + High + + + choices_233 + <Select> + Low + Medium + High + + + choices_234 + <Select> + Low + Medium + High + + + choices_235 + <Select> + Low + Medium + High + + + choices_236 + <Select> + Low + Medium + High + + + choices_237 + 0 + 1 + + + choices_238 + 0 + 1 + + + choices_239 + 0 + 1 + + + choices_240 + 0 + 1 + + + choices_241 + HPR(0)/LPR(32) + HPR(8)/LPR(24) + HPR(16)/LPR(16) + HPR(24)/LPR(8) + HPR(32)/LPR(0) + + + choices_242 + 0 + 1 + + + choices_243 + <Select> + MIO 0 2.. 14 + + + choices_244 + 0 + 1 + + + choices_245 + <Select> + MIO 16 .. 23 + + + choices_246 + 0 + 1 + + + choices_247 + <Select> + MIO 3 .. 39 + + + choices_248 + 0 + 1 + + + choices_249 + <Select> + MIO 1 + + + choices_250 + 0 + 1 + + + choices_251 + <Select> + MIO 0 + + + choices_252 + 0 + 1 + + + choices_253 + <Select> + MIO 0 + + + choices_254 + 0 + 1 + + + choices_255 + <Select> + MIO 1 + + + choices_256 + 0 + 1 + + + choices_257 + <Select> + MIO 1 + + + choices_258 + 0 + 1 + + + choices_259 + <Select> + EMIO + + + choices_260 + 0 + 1 + + + choices_261 + MIO 1 .. 6 + + + choices_262 + 0 + 1 + + + choices_263 + MIO 1 .. 6 + + + choices_264 + 0 + 1 + + + choices_265 + <Select> + MIO 0 + + + choices_266 + 0 + 1 + + + choices_267 + <Select> + MIO 0 9 .. 13 + + + choices_268 + 0 + 1 + + + choices_269 + MIO 8 + + + choices_270 + 0xFCFFFFFF + + + choices_271 + 0 + 1 + + + choices_272 + EMIO + MIO 16 .. 27 + + + choices_273 + 0 + 1 + + + choices_274 + MIO 52 .. 53 + + + choices_275 + 0 + 1 + + + choices_276 + <Select> + Share reset pin + + + choices_277 + 0 + 1 + + + choices_278 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_279 + 0 + 1 + + + choices_280 + <Select> + EMIO + MIO 28 .. 39 + + + choices_281 + 0 + 1 + + + choices_282 + <Select> + EMIO + MIO 52 .. 53 + + + choices_283 + 0 + 1 + + + choices_284 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_285 + 0 + 1 + + + choices_286 + EMIO + MIO 16 .. 21 + MIO 28 .. 33 + MIO 40 .. 45 + + + choices_287 + 0 + 1 + + + choices_288 + EMIO + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_289 + 0 + 1 + + + choices_290 + EMIO + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_291 + 0 + 1 + + + choices_292 + <Select> + MIO 0 + MIO 2 + MIO 4 + MIO 6 + MIO 8 + MIO 10 + MIO 12 + MIO 14 + MIO 16 + MIO 18 + MIO 20 + MIO 22 + MIO 24 + MIO 26 + MIO 28 + MIO 30 + MIO 32 + MIO 34 + MIO 36 + MIO 38 + MIO 40 + MIO 42 + MIO 44 + MIO 46 + MIO 48 + MIO 50 + MIO 52 + + + choices_293 + 0 + 1 + + + choices_294 + <Select> + EMIO + MIO 10 .. 15 + MIO 22 .. 27 + MIO 34 .. 39 + MIO 46 .. 51 + + + choices_295 + 0 + 1 + + + choices_296 + <Select> + EMIO + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_297 + 0 + 1 + + + choices_298 + <Select> + EMIO + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_299 + 0 + 1 + + + choices_300 + <Select> + MIO 1 + MIO 3 + MIO 5 + MIO 7 + MIO 9 + MIO 11 + MIO 13 + MIO 15 + MIO 17 + MIO 19 + MIO 21 + MIO 23 + MIO 25 + MIO 27 + MIO 29 + MIO 31 + MIO 33 + MIO 35 + MIO 37 + MIO 39 + MIO 41 + MIO 43 + MIO 45 + MIO 47 + MIO 49 + MIO 51 + MIO 53 + + + choices_301 + 0 + 1 + + + choices_302 + <Select> + EMIO + MIO 10 .. 11 + MIO 14 .. 15 + MIO 18 .. 19 + MIO 22 .. 23 + MIO 26 .. 27 + MIO 30 .. 31 + MIO 34 .. 35 + MIO 38 .. 39 + MIO 42 .. 43 + MIO 46 .. 47 + MIO 50 .. 51 + + + choices_303 + 0 + 1 + + + choices_304 + <Select> + EMIO + + + choices_305 + 0 + 1 + + + choices_306 + EMIO + MIO 8 .. 9 + MIO 12 .. 13 + MIO 16 .. 17 + MIO 20 .. 21 + MIO 24 .. 25 + MIO 28 .. 29 + MIO 32 .. 33 + MIO 36 .. 37 + MIO 40 .. 41 + MIO 44 .. 45 + MIO 48 .. 49 + MIO 52 .. 53 + + + choices_307 + 0 + 1 + + + choices_308 + <Select> + EMIO + + + choices_309 + 0 + 1 + + + choices_310 + <Select> + EMIO + MIO 16 .. 21 + MIO 28 .. 33 + MIO 40 .. 45 + + + choices_311 + 0 + 1 + + + choices_312 + <Select> + EMIO + MIO 18 + MIO 30 + MIO 42 + + + choices_313 + 0 + 1 + + + choices_314 + <Select> + EMIO + MIO 19 + MIO 31 + MIO 43 + + + choices_315 + 0 + 1 + + + choices_316 + <Select> + EMIO + MIO 20 + MIO 32 + MIO 44 + + + choices_317 + 0 + 1 + + + choices_318 + <Select> + EMIO + MIO 10 .. 15 + MIO 22 .. 27 + MIO 34 .. 39 + MIO 46 .. 51 + + + choices_319 + 0 + 1 + + + choices_320 + <Select> + EMIO + MIO 13 + MIO 25 + MIO 37 + MIO 49 + + + choices_321 + 0 + 1 + + + choices_322 + <Select> + EMIO + MIO 14 + MIO 26 + MIO 38 + MIO 50 + + + choices_323 + 0 + 1 + + + choices_324 + <Select> + EMIO + MIO 15 + MIO 27 + MIO 39 + MIO 51 + + + choices_325 + 0 + 1 + + + choices_326 + EMIO + MIO 10 .. 11 + MIO 14 .. 15 + MIO 18 .. 19 + MIO 22 .. 23 + MIO 26 .. 27 + MIO 30 .. 31 + MIO 34 .. 35 + MIO 38 .. 39 + MIO 42 .. 43 + MIO 46 .. 47 + MIO 50 .. 51 + + + choices_327 + 0 + 1 + + + choices_328 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_329 + 0 + 1 + + + choices_330 + <Select> + EMIO + MIO 8 .. 9 + MIO 12 .. 13 + MIO 16 .. 17 + MIO 20 .. 21 + MIO 24 .. 25 + MIO 28 .. 29 + MIO 32 .. 33 + MIO 36 .. 37 + MIO 40 .. 41 + MIO 44 .. 45 + MIO 48 .. 49 + MIO 52 .. 53 + + + choices_331 + 0 + 1 + + + choices_332 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_333 + 0 + 1 + + + choices_334 + <Select> + EMIO + MIO 12 .. 13 + MIO 24 .. 25 + + + choices_335 + 0 + 1 + + + choices_336 + <Select> + EMIO + MIO 14 .. 15 + MIO 26 .. 27 + + + choices_337 + 0 + 1 + + + choices_338 + <Select> + EMIO + MIO 10 .. 11 + MIO 22 .. 23 + + + choices_339 + 0 + 1 + + + choices_340 + <Select> + EMIO + MIO 16 .. 19 + + + choices_341 + 0 + 1 + + + choices_342 + <Select> + EMIO + MIO 2 .. 9 + + + choices_343 + 0 + 1 + + + choices_344 + <Select> + EMIO + + + choices_345 + 2 + 4 + 8 + 16 + 32 + + + choices_346 + 0 + 1 + + + choices_347 + <Select> + EMIO + MIO 14 .. 15 + MIO 26 .. 27 + MIO 38 .. 39 + MIO 50 .. 51 + MIO 52 .. 53 + + + choices_348 + 0 + 1 + + + choices_349 + <Select> + EMIO + MIO 18 .. 19 + MIO 30 .. 31 + MIO 42 .. 43 + + + choices_350 + 0 + 1 + + + choices_351 + <Select> + EMIO + MIO 16 .. 17 + MIO 28 .. 29 + MIO 40 .. 41 + + + choices_352 + 0 + 1 + + + choices_353 + <Select> + EMIO + MIO 10 .. 13 + MIO 22 .. 25 + MIO 34 .. 37 + MIO 46 .. 49 + + + choices_354 + 0 + 1 + + + choices_355 + MIO 28 .. 39 + + + choices_356 + 0 + 1 + + + choices_357 + Share reset pin + + + choices_358 + 0 + 1 + + + choices_359 + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_360 + 0 + 1 + + + choices_361 + <Select> + MIO 40 .. 51 + + + choices_362 + 0 + 1 + + + choices_363 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_364 + 0 + 1 + + + choices_365 + EMIO + MIO 10 .. 11 + MIO 14 .. 15 + MIO 18 .. 19 + MIO 22 .. 23 + MIO 26 .. 27 + MIO 30 .. 31 + MIO 34 .. 35 + MIO 38 .. 39 + MIO 42 .. 43 + MIO 46 .. 47 + MIO 50 .. 51 + + + choices_366 + 0 + 1 + + + choices_367 + EMIO + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_368 + 0 + 1 + + + choices_369 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_370 + 0 + 1 + + + choices_371 + EMIO + MIO 12 .. 13 + MIO 16 .. 17 + MIO 20 .. 21 + MIO 24 .. 25 + MIO 28 .. 29 + MIO 32 .. 33 + MIO 36 .. 37 + MIO 40 .. 41 + MIO 44 .. 45 + MIO 48 .. 49 + MIO 52 .. 53 + + + choices_372 + 0 + 1 + + + choices_373 + <Select> + EMIO + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_374 + 0 + 1 + + + choices_375 + <Select> + Share reset pin + Separate reset pins + + + choices_376 + 0 + 1 + + + choices_377 + <Select> + MIO 0 + MIO 1 + MIO 2 + MIO 3 + MIO 4 + MIO 5 + MIO 6 + MIO 7 + MIO 8 + MIO 9 + MIO 10 + MIO 11 + MIO 12 + MIO 13 + MIO 14 + MIO 15 + MIO 16 + MIO 17 + MIO 18 + MIO 19 + MIO 20 + MIO 21 + MIO 22 + MIO 23 + MIO 24 + MIO 25 + MIO 26 + MIO 27 + MIO 28 + MIO 29 + MIO 30 + MIO 31 + MIO 32 + MIO 33 + MIO 34 + MIO 35 + MIO 36 + MIO 37 + MIO 38 + MIO 39 + MIO 40 + MIO 41 + MIO 42 + MIO 43 + MIO 44 + MIO 45 + MIO 46 + MIO 47 + MIO 48 + MIO 49 + MIO 50 + MIO 51 + MIO 52 + MIO 53 + + + choices_378 + 0 + 1 + + + choices_379 + 0 + 1 + + + choices_380 + MIO + + + choices_381 + 0 + 1 + + + choices_382 + 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 + + + choices_383 + 6:2:1 + 4:2:1 + + + choices_384 + 1000 Mbps + 100 Mbps + 10 Mbps + + + choices_385 + 1000 Mbps + 100 Mbps + 10 Mbps + + + choices_386 + ARM PLL + DDR PLL + IO PLL + + + choices_387 + DDR PLL + + + choices_388 + ARM PLL + DDR PLL + IO PLL + + + choices_389 + ARM PLL + DDR PLL + IO PLL + + + choices_390 + ARM PLL + DDR PLL + IO PLL + + + choices_391 + ARM PLL + DDR PLL + IO PLL + + + choices_392 + ARM PLL + DDR PLL + IO PLL + + + choices_393 + ARM PLL + DDR PLL + IO PLL + + + choices_394 + ARM PLL + DDR PLL + IO PLL + + + choices_395 + ARM PLL + DDR PLL + IO PLL + + + choices_396 + ARM PLL + DDR PLL + IO PLL + + + choices_397 + ARM PLL + DDR PLL + IO PLL + + + choices_398 + ARM PLL + IO PLL + DDR PLL + External + + + choices_399 + ARM PLL + DDR PLL + External + IO PLL + + + choices_400 + External + + + choices_401 + External + + + choices_402 + ARM PLL + DDR PLL + IO PLL + External + + + choices_403 + CPU_1X + External + + + choices_404 + CPU_1X + External + + + choices_405 + CPU_1X + External + + + choices_406 + CPU_1X + External + + + choices_407 + CPU_1X + External + + + choices_408 + CPU_1X + External + + + choices_409 + CPU_1X + External + + + choices_410 + DDR PLL + + + choices_411 + DDR PLL + ARM PLL + IO PLL + + + choices_412 + Active High + Active Low + + + choices_413 + Active High + Active Low + + + choices_414 + Active High + Active Low + + + choices_415 + disabled + enabled + + + choices_416 + LVCMOS 3.3V + + + choices_417 + in + out + inout + + + choices_418 + fast + slow + + + choices_419 + disabled + enabled + + + choices_420 + LVCMOS 3.3V + + + choices_421 + in + out + inout + + + choices_422 + fast + slow + + + choices_423 + disabled + enabled + + + choices_424 + LVCMOS 3.3V + + + choices_425 + in + out + inout + + + choices_426 + fast + slow + + + choices_427 + disabled + enabled + + + choices_428 + LVCMOS 3.3V + + + choices_429 + in + out + inout + + + choices_430 + fast + slow + + + choices_431 + disabled + enabled + + + choices_432 + LVCMOS 3.3V + + + choices_433 + in + out + inout + + + choices_434 + fast + slow + + + choices_435 + disabled + enabled + + + choices_436 + LVCMOS 3.3V + + + choices_437 + in + out + inout + + + choices_438 + fast + slow + + + choices_439 + disabled + enabled + + + choices_440 + LVCMOS 3.3V + + + choices_441 + in + out + inout + + + choices_442 + fast + slow + + + choices_443 + disabled + enabled + + + choices_444 + LVCMOS 3.3V + + + choices_445 + in + out + inout + + + choices_446 + fast + slow + + + choices_447 + disabled + enabled + + + choices_448 + LVCMOS 3.3V + + + choices_449 + in + out + inout + + + choices_450 + fast + slow + + + choices_451 + disabled + enabled + + + choices_452 + LVCMOS 3.3V + + + choices_453 + in + out + inout + + + choices_454 + fast + slow + + + choices_455 + disabled + enabled + + + choices_456 + LVCMOS 3.3V + + + choices_457 + in + out + inout + + + choices_458 + fast + slow + + + choices_459 + disabled + enabled + + + choices_460 + LVCMOS 3.3V + + + choices_461 + in + out + inout + + + choices_462 + fast + slow + + + choices_463 + disabled + enabled + + + choices_464 + LVCMOS 3.3V + + + choices_465 + in + out + inout + + + choices_466 + fast + slow + + + choices_467 + disabled + enabled + + + choices_468 + LVCMOS 3.3V + + + choices_469 + in + out + inout + + + choices_470 + fast + slow + + + choices_471 + disabled + enabled + + + choices_472 + LVCMOS 3.3V + + + choices_473 + in + out + inout + + + choices_474 + fast + slow + + + choices_475 + disabled + enabled + + + choices_476 + LVCMOS 3.3V + + + choices_477 + in + out + inout + + + choices_478 + fast + slow + + + choices_479 + disabled + enabled + + + choices_480 + LVCMOS 1.8V + HSTL 1.8V + + + choices_481 + in + out + inout + + + choices_482 + fast + slow + + + choices_483 + disabled + enabled + + + choices_484 + LVCMOS 1.8V + HSTL 1.8V + + + choices_485 + in + out + inout + + + choices_486 + fast + slow + + + choices_487 + disabled + enabled + + + choices_488 + LVCMOS 1.8V + HSTL 1.8V + + + choices_489 + in + out + inout + + + choices_490 + fast + slow + + + choices_491 + disabled + enabled + + + choices_492 + LVCMOS 1.8V + HSTL 1.8V + + + choices_493 + in + out + inout + + + choices_494 + fast + slow + + + choices_495 + disabled + enabled + + + choices_496 + LVCMOS 1.8V + HSTL 1.8V + + + choices_497 + in + out + inout + + + choices_498 + fast + slow + + + choices_499 + disabled + enabled + + + choices_500 + LVCMOS 1.8V + HSTL 1.8V + + + choices_501 + in + out + inout + + + choices_502 + fast + slow + + + choices_503 + disabled + enabled + + + choices_504 + LVCMOS 1.8V + HSTL 1.8V + + + choices_505 + in + out + inout + + + choices_506 + fast + slow + + + choices_507 + disabled + enabled + + + choices_508 + LVCMOS 1.8V + HSTL 1.8V + + + choices_509 + in + out + inout + + + choices_510 + fast + slow + + + choices_511 + disabled + enabled + + + choices_512 + LVCMOS 1.8V + HSTL 1.8V + + + choices_513 + in + out + inout + + + choices_514 + fast + slow + + + choices_515 + disabled + enabled + + + choices_516 + LVCMOS 1.8V + HSTL 1.8V + + + choices_517 + in + out + inout + + + choices_518 + fast + slow + + + choices_519 + disabled + enabled + + + choices_520 + LVCMOS 1.8V + HSTL 1.8V + + + choices_521 + in + out + inout + + + choices_522 + fast + slow + + + choices_523 + disabled + enabled + + + choices_524 + LVCMOS 1.8V + HSTL 1.8V + + + choices_525 + in + out + inout + + + choices_526 + fast + slow + + + choices_527 + disabled + enabled + + + choices_528 + LVCMOS 1.8V + HSTL 1.8V + + + choices_529 + in + out + inout + + + choices_530 + fast + slow + + + choices_531 + disabled + enabled + + + choices_532 + LVCMOS 1.8V + HSTL 1.8V + + + choices_533 + in + out + inout + + + choices_534 + fast + slow + + + choices_535 + disabled + enabled + + + choices_536 + LVCMOS 1.8V + HSTL 1.8V + + + choices_537 + in + out + inout + + + choices_538 + fast + slow + + + choices_539 + disabled + enabled + + + choices_540 + LVCMOS 1.8V + HSTL 1.8V + + + choices_541 + in + out + inout + + + choices_542 + fast + slow + + + choices_543 + disabled + enabled + + + choices_544 + LVCMOS 1.8V + HSTL 1.8V + + + choices_545 + in + out + inout + + + choices_546 + fast + slow + + + choices_547 + disabled + enabled + + + choices_548 + LVCMOS 1.8V + HSTL 1.8V + + + choices_549 + in + out + inout + + + choices_550 + fast + slow + + + choices_551 + disabled + enabled + + + choices_552 + LVCMOS 1.8V + HSTL 1.8V + + + choices_553 + in + out + inout + + + choices_554 + fast + slow + + + choices_555 + disabled + enabled + + + choices_556 + LVCMOS 1.8V + HSTL 1.8V + + + choices_557 + in + out + inout + + + choices_558 + fast + slow + + + choices_559 + disabled + enabled + + + choices_560 + LVCMOS 1.8V + HSTL 1.8V + + + choices_561 + in + out + inout + + + choices_562 + fast + slow + + + choices_563 + disabled + enabled + + + choices_564 + LVCMOS 1.8V + HSTL 1.8V + + + choices_565 + in + out + inout + + + choices_566 + fast + slow + + + choices_567 + disabled + enabled + + + choices_568 + LVCMOS 1.8V + HSTL 1.8V + + + choices_569 + in + out + inout + + + choices_570 + fast + slow + + + choices_571 + disabled + enabled + + + choices_572 + LVCMOS 1.8V + HSTL 1.8V + + + choices_573 + in + out + inout + + + choices_574 + fast + slow + + + choices_575 + disabled + enabled + + + choices_576 + LVCMOS 1.8V + HSTL 1.8V + + + choices_577 + in + out + inout + + + choices_578 + fast + slow + + + choices_579 + disabled + enabled + + + choices_580 + LVCMOS 1.8V + HSTL 1.8V + + + choices_581 + in + out + inout + + + choices_582 + fast + slow + + + choices_583 + disabled + enabled + + + choices_584 + LVCMOS 1.8V + HSTL 1.8V + + + choices_585 + in + out + inout + + + choices_586 + fast + slow + + + choices_587 + disabled + enabled + + + choices_588 + LVCMOS 1.8V + HSTL 1.8V + + + choices_589 + in + out + inout + + + choices_590 + fast + slow + + + choices_591 + disabled + enabled + + + choices_592 + LVCMOS 1.8V + HSTL 1.8V + + + choices_593 + in + out + inout + + + choices_594 + fast + slow + + + choices_595 + disabled + enabled + + + choices_596 + LVCMOS 1.8V + HSTL 1.8V + + + choices_597 + in + out + inout + + + choices_598 + fast + slow + + + choices_599 + disabled + enabled + + + choices_600 + LVCMOS 1.8V + HSTL 1.8V + + + choices_601 + in + out + inout + + + choices_602 + fast + slow + + + choices_603 + disabled + enabled + + + choices_604 + LVCMOS 1.8V + HSTL 1.8V + + + choices_605 + in + out + inout + + + choices_606 + fast + slow + + + choices_607 + disabled + enabled + + + choices_608 + LVCMOS 1.8V + HSTL 1.8V + + + choices_609 + in + out + inout + + + choices_610 + fast + slow + + + choices_611 + disabled + enabled + + + choices_612 + LVCMOS 1.8V + HSTL 1.8V + + + choices_613 + in + out + inout + + + choices_614 + fast + slow + + + choices_615 + disabled + enabled + + + choices_616 + LVCMOS 1.8V + HSTL 1.8V + + + choices_617 + in + out + inout + + + choices_618 + fast + slow + + + choices_619 + disabled + enabled + + + choices_620 + LVCMOS 1.8V + HSTL 1.8V + + + choices_621 + in + out + inout + + + choices_622 + fast + slow + + + choices_623 + disabled + enabled + + + choices_624 + LVCMOS 1.8V + HSTL 1.8V + + + choices_625 + in + out + inout + + + choices_626 + fast + slow + + + choices_627 + disabled + enabled + + + choices_628 + LVCMOS 1.8V + HSTL 1.8V + + + choices_629 + in + out + inout + + + choices_630 + fast + slow + + + choices_631 + None + Default + ZC702 + ZC706 + ZedBoard + + + choices_632 + PRODUCTION + + + choices_633 + 0 + 1 + + + choices_634 + 0 + 1 + + + choices_635 + 0 + 1 + + + choices_636 + 0 + 1 + + + choices_637 + clg484 + clg225 + clg400 + ffg676 + fbg676 + fbg484 + ffg900 + cl400 + cl484 + rf676 + fb484 + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_processing_system7_0_0.veo + verilogTemplate + + + + xilinx_anylanguagesynthesis_view_fileset + + z_turn_processing_system7_0_0.xdc + xdc + + processing_order + early + + + + ps7_init.c + cSource + USED_IN_hw_handoff + + + ps7_init.h + cSource + USED_IN_hw_handoff + + + ps7_init_gpl.c + cSource + USED_IN_hw_handoff + + + ps7_init_gpl.h + cSource + USED_IN_hw_handoff + + + ps7_init.tcl + tclSource + USED_IN_hw_handoff + + + ps7_init.html + html + USED_IN_hw_handoff + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_aw_atc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_b_atc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_w_atc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_atc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_trace_buffer.v + verilogSource + + + processing_system7.txt + text + + + hdl/verilog/processing_system7_v5_5_processing_system7.v + verilogSource + + + + xilinx_verilogsynthesiswrapper_view_fileset + + synth/z_turn_processing_system7_0_0.v + verilogSource + xil_defaultlib + + + + xilinx_anylanguagebehavioralsimulation_view_fileset + + + xilinx_anylanguagebehavioralsimulation_xilinx_com_ip_processing_system7_bfm_2_0__ref_view_fileset + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_local_params.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr_4.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd_4.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp2_3.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp0_1.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ssw_hp.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_sparse_mem.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_params.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_init.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_map.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocm_mem.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_wr_mem.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_rd_mem.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_fmsw_gp.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_regc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocmc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_interconnect_model.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_reset.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_clock.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ddrc.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_slave.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_master.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_afi_slave.v + verilogSource + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_apis.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_unused_ports.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_gp.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_acp.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_hp.v + verilogSource + true + + + ../../../../ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_processing_system7_bfm.v + verilogSource + + + + + + + + + + + xilinx_anylanguagesimulationwrapper_view_fileset + + sim/z_turn_processing_system7_0_0.v + verilogSource + + + + xilinx_miscfiles_view_fileset + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio_rtl.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag_rtl.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl_rtl.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl.xml + xml + + + ../../../../ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl_rtl.xml + xml + + + + xilinx_versioninformation_view_fileset + + doc/processing_system7_v5_5_changelog.txt + text + + + + + + CPU0_A9 + + + + is_visible + FALSE + + + processor_type + ARM + + + + + CPU1_A9 + + + + is_visible + FALSE + + + processor_type + ARM + + + + + Arm dual core SOC with Zynq fpga + + + PCW_DDR_RAM_BASEADDR + PCW DDR RAM BASEADDR + 0x00100000 + + + + optional + true + + + + + + PCW_DDR_RAM_HIGHADDR + PCW DDR RAM HIGHADDR + 0x3FFFFFFF + + + + optional + true + + + + + + PCW_UART0_BASEADDR + PCW UART0 BASEADDR + 0xE0000000 + + + + optional + false + + + + + + PCW_UART0_HIGHADDR + PCW UART0 HIGHADDR + 0xE0000FFF + + + + optional + false + + + + + + PCW_UART1_BASEADDR + PCW UART1 BASEADDR + 0xE0001000 + + + + optional + true + + + + + + PCW_UART1_HIGHADDR + PCW UART1 HIGHADDR + 0xE0001FFF + + + + optional + true + + + + + + PCW_I2C0_BASEADDR + PCW I2C0 BASEADDR + 0xE0004000 + + + + optional + true + + + + + + PCW_I2C0_HIGHADDR + PCW I2C0 HIGHADDR + 0xE0004FFF + + + + optional + true + + + + + + PCW_I2C1_BASEADDR + PCW I2C1 BASEADDR + 0xE0005000 + + + + optional + true + + + + + + PCW_I2C1_HIGHADDR + PCW I2C1 HIGHADDR + 0xE0005FFF + + + + optional + true + + + + + + PCW_SPI0_BASEADDR + PCW SPI0 BASEADDR + 0xE0006000 + + + + optional + false + + + + + + PCW_SPI0_HIGHADDR + PCW SPI0 HIGHADDR + 0xE0006FFF + + + + optional + false + + + + + + PCW_SPI1_BASEADDR + PCW SPI1 BASEADDR + 0xE0007000 + + + + optional + false + + + + + + PCW_SPI1_HIGHADDR + PCW SPI1 HIGHADDR + 0xE0007FFF + + + + optional + false + + + + + + PCW_CAN0_BASEADDR + PCW CAN0 BASEADDR + 0xE0008000 + + + + optional + true + + + + + + PCW_CAN0_HIGHADDR + PCW CAN0 HIGHADDR + 0xE0008FFF + + + + optional + true + + + + + + PCW_CAN1_BASEADDR + PCW CAN1 BASEADDR + 0xE0009000 + + + + optional + false + + + + + + PCW_CAN1_HIGHADDR + PCW CAN1 HIGHADDR + 0xE0009FFF + + + + optional + false + + + + + + PCW_GPIO_BASEADDR + PCW GPIO BASEADDR + 0xE000A000 + + + + optional + true + + + + + + PCW_GPIO_HIGHADDR + PCW GPIO HIGHADDR + 0xE000AFFF + + + + optional + true + + + + + + PCW_ENET0_BASEADDR + PCW ENET0 BASEADDR + 0xE000B000 + + + + optional + true + + + + + + PCW_ENET0_HIGHADDR + PCW ENET0 HIGHADDR + 0xE000BFFF + + + + optional + true + + + + + + PCW_ENET1_BASEADDR + PCW ENET1 BASEADDR + 0xE000C000 + + + + optional + false + + + + + + PCW_ENET1_HIGHADDR + PCW ENET1 HIGHADDR + 0xE000CFFF + + + + optional + false + + + + + + PCW_SDIO0_BASEADDR + PCW SDIO0 BASEADDR + 0xE0100000 + + + + optional + true + + + + + + PCW_SDIO0_HIGHADDR + PCW SDIO0 HIGHADDR + 0xE0100FFF + + + + optional + true + + + + + + PCW_SDIO1_BASEADDR + PCW SDIO1 BASEADDR + 0xE0101000 + + + + optional + false + + + + + + PCW_SDIO1_HIGHADDR + PCW SDIO1 HIGHADDR + 0xE0101FFF + + + + optional + false + + + + + + PCW_USB0_BASEADDR + PCW USB0 BASEADDR + 0xE0102000 + + + + optional + true + + + + + + PCW_USB0_HIGHADDR + PCW USB0 HIGHADDR + 0xE0102fff + + + + optional + true + + + + + + PCW_USB1_BASEADDR + PCW USB1 BASEADDR + 0xE0103000 + + + + optional + false + + + + + + PCW_USB1_HIGHADDR + PCW USB1 HIGHADDR + 0xE0103fff + + + + optional + false + + + + + + PCW_TTC0_BASEADDR + PCW TTC0 BASEADDR + 0xE0104000 + + + + optional + false + + + + + + PCW_TTC0_HIGHADDR + PCW TTC0 HIGHADDR + 0xE0104fff + + + + optional + false + + + + + + PCW_TTC1_BASEADDR + PCW TTC1 BASEADDR + 0xE0105000 + + + + optional + false + + + + + + PCW_TTC1_HIGHADDR + PCW TTC1 HIGHADDR + 0xE0105fff + + + + optional + false + + + + + + PCW_FCLK_CLK0_BUF + PCW FCLK CLK0 BUF + true + + + + optional + true + + + + + + PCW_FCLK_CLK1_BUF + PCW FCLK CLK1 BUF + true + + + + optional + true + + + + + + PCW_FCLK_CLK2_BUF + PCW FCLK CLK2 BUF + true + + + + optional + true + + + + + + PCW_FCLK_CLK3_BUF + PCW FCLK CLK3 BUF + true + + + + optional + true + + + + + + PCW_UIPARAM_DDR_FREQ_MHZ + PCW UIPARAM DDR FREQ MHZ + 533.333333 + + + + true + + + + + + PCW_UIPARAM_DDR_BANK_ADDR_COUNT + PCW UIPARAM DDR BANK ADDR COUNT + 3 + + + + false + + + + + + PCW_UIPARAM_DDR_ROW_ADDR_COUNT + PCW UIPARAM DDR ROW ADDR COUNT + 15 + + + + false + + + + + + PCW_UIPARAM_DDR_COL_ADDR_COUNT + PCW UIPARAM DDR COL ADDR COUNT + 10 + + + + false + + + + + + PCW_UIPARAM_DDR_CL + PCW UIPARAM DDR CL + 7 + + + + false + + + + + + PCW_UIPARAM_DDR_CWL + PCW UIPARAM DDR CWL + 6 + + + + false + + + + + + PCW_UIPARAM_DDR_T_RCD + PCW UIPARAM DDR T RCD + 7 + + + + false + + + + + + PCW_UIPARAM_DDR_T_RP + PCW UIPARAM DDR T RP + 7 + + + + false + + + + + + PCW_UIPARAM_DDR_T_RC + PCW UIPARAM DDR T RC + 49.5 + + + + false + + + + + + PCW_UIPARAM_DDR_T_RAS_MIN + PCW UIPARAM DDR T RAS MIN + 36.0 + + + + false + + + + + + PCW_UIPARAM_DDR_T_FAW + PCW UIPARAM DDR T FAW + 45.0 + + + + false + + + + + + PCW_UIPARAM_DDR_AL + PCW UIPARAM DDR AL + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_0 + PCW UIPARAM DDR DQS TO CLK DELAY 0 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_1 + PCW UIPARAM DDR DQS TO CLK DELAY 1 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_2 + PCW UIPARAM DDR DQS TO CLK DELAY 2 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_TO_CLK_DELAY_3 + PCW UIPARAM DDR DQS TO CLK DELAY 3 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_BOARD_DELAY0 + PCW UIPARAM DDR BOARD DELAY0 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_BOARD_DELAY1 + PCW UIPARAM DDR BOARD DELAY1 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_BOARD_DELAY2 + PCW UIPARAM DDR BOARD DELAY2 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_BOARD_DELAY3 + PCW UIPARAM DDR BOARD DELAY3 + 0.0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_0_LENGTH_MM + PCW UIPARAM DDR DQS 0 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_1_LENGTH_MM + PCW UIPARAM DDR DQS 1 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_2_LENGTH_MM + PCW UIPARAM DDR DQS 2 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_3_LENGTH_MM + PCW UIPARAM DDR DQS 3 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_0_LENGTH_MM + PCW UIPARAM DDR DQ 0 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_1_LENGTH_MM + PCW UIPARAM DDR DQ 1 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_2_LENGTH_MM + PCW UIPARAM DDR DQ 2 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_3_LENGTH_MM + PCW UIPARAM DDR DQ 3 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_0_LENGTH_MM + PCW UIPARAM DDR CLOCK 0 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_1_LENGTH_MM + PCW UIPARAM DDR CLOCK 1 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_2_LENGTH_MM + PCW UIPARAM DDR CLOCK 2 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_3_LENGTH_MM + PCW UIPARAM DDR CLOCK 3 LENGTH MM + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_0_PACKAGE_LENGTH + PCW UIPARAM DDR DQS 0 PACKAGE LENGTH + 101.239 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_1_PACKAGE_LENGTH + PCW UIPARAM DDR DQS 1 PACKAGE LENGTH + 79.5025 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_2_PACKAGE_LENGTH + PCW UIPARAM DDR DQS 2 PACKAGE LENGTH + 60.536 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_3_PACKAGE_LENGTH + PCW UIPARAM DDR DQS 3 PACKAGE LENGTH + 71.7715 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_0_PACKAGE_LENGTH + PCW UIPARAM DDR DQ 0 PACKAGE LENGTH + 104.5365 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_1_PACKAGE_LENGTH + PCW UIPARAM DDR DQ 1 PACKAGE LENGTH + 70.676 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_2_PACKAGE_LENGTH + PCW UIPARAM DDR DQ 2 PACKAGE LENGTH + 59.1615 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_3_PACKAGE_LENGTH + PCW UIPARAM DDR DQ 3 PACKAGE LENGTH + 81.319 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_0_PACKAGE_LENGTH + PCW UIPARAM DDR CLOCK 0 PACKAGE LENGTH + 54.563 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_1_PACKAGE_LENGTH + PCW UIPARAM DDR CLOCK 1 PACKAGE LENGTH + 54.563 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_2_PACKAGE_LENGTH + PCW UIPARAM DDR CLOCK 2 PACKAGE LENGTH + 54.563 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_3_PACKAGE_LENGTH + PCW UIPARAM DDR CLOCK 3 PACKAGE LENGTH + 54.563 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_0_PROPOGATION_DELAY + PCW UIPARAM DDR DQS 0 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_1_PROPOGATION_DELAY + PCW UIPARAM DDR DQS 1 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_2_PROPOGATION_DELAY + PCW UIPARAM DDR DQS 2 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQS_3_PROPOGATION_DELAY + PCW UIPARAM DDR DQS 3 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_0_PROPOGATION_DELAY + PCW UIPARAM DDR DQ 0 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_1_PROPOGATION_DELAY + PCW UIPARAM DDR DQ 1 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_2_PROPOGATION_DELAY + PCW UIPARAM DDR DQ 2 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_DQ_3_PROPOGATION_DELAY + PCW UIPARAM DDR DQ 3 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_0_PROPOGATION_DELAY + PCW UIPARAM DDR CLOCK 0 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_1_PROPOGATION_DELAY + PCW UIPARAM DDR CLOCK 1 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_2_PROPOGATION_DELAY + PCW UIPARAM DDR CLOCK 2 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_3_PROPOGATION_DELAY + PCW UIPARAM DDR CLOCK 3 PROPOGATION DELAY + 160 + + + + true + + + + + + PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_0 + PCW PACKAGE DDR DQS TO CLK DELAY 0 + -0.047 + + + + true + + + + + + PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_1 + PCW PACKAGE DDR DQS TO CLK DELAY 1 + -0.025 + + + + true + + + + + + PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_2 + PCW PACKAGE DDR DQS TO CLK DELAY 2 + -0.006 + + + + true + + + + + + PCW_PACKAGE_DDR_DQS_TO_CLK_DELAY_3 + PCW PACKAGE DDR DQS TO CLK DELAY 3 + -0.017 + + + + true + + + + + + PCW_PACKAGE_DDR_BOARD_DELAY0 + PCW PACKAGE DDR BOARD DELAY0 + 0.080 + + + + true + + + + + + PCW_PACKAGE_DDR_BOARD_DELAY1 + PCW PACKAGE DDR BOARD DELAY1 + 0.063 + + + + true + + + + + + PCW_PACKAGE_DDR_BOARD_DELAY2 + PCW PACKAGE DDR BOARD DELAY2 + 0.057 + + + + true + + + + + + PCW_PACKAGE_DDR_BOARD_DELAY3 + PCW PACKAGE DDR BOARD DELAY3 + 0.068 + + + + true + + + + + + PCW_CPU_CPU_6X4X_MAX_RANGE + PCW CPU CPU 6X4X MAX RANGE + 667 + + + + true + + + + + + PCW_CRYSTAL_PERIPHERAL_FREQMHZ + PCW CRYSTAL PERIPHERAL FREQMHZ + 33.333333 + + + + true + + + + + + PCW_APU_PERIPHERAL_FREQMHZ + PCW APU PERIPHERAL FREQMHZ + 666.666666 + + + + true + + + + + + PCW_DCI_PERIPHERAL_FREQMHZ + PCW DCI PERIPHERAL FREQMHZ + 10.159 + + + + true + + + + + + PCW_QSPI_PERIPHERAL_FREQMHZ + PCW QSPI PERIPHERAL FREQMHZ + 200 + + + + true + + + + + + PCW_SMC_PERIPHERAL_FREQMHZ + PCW SMC PERIPHERAL FREQMHZ + 100 + + + + false + + + + + + PCW_USB0_PERIPHERAL_FREQMHZ + PCW USB0 PERIPHERAL FREQMHZ + 60 + + + + false + + + + + + PCW_USB1_PERIPHERAL_FREQMHZ + PCW USB1 PERIPHERAL FREQMHZ + 60 + + + + false + + + + + + PCW_SDIO_PERIPHERAL_FREQMHZ + PCW SDIO PERIPHERAL FREQMHZ + 100 + + + + true + + + + + + PCW_UART_PERIPHERAL_FREQMHZ + PCW UART PERIPHERAL FREQMHZ + 100 + + + + true + + + + + + PCW_SPI_PERIPHERAL_FREQMHZ + PCW SPI PERIPHERAL FREQMHZ + 166.666666 + + + + false + + + + + + PCW_CAN_PERIPHERAL_FREQMHZ + PCW CAN PERIPHERAL FREQMHZ + 100 + + + + true + + + + + + PCW_CAN0_PERIPHERAL_FREQMHZ + PCW CAN0 PERIPHERAL FREQMHZ + -1 + + + + false + + + + + + PCW_CAN1_PERIPHERAL_FREQMHZ + PCW CAN1 PERIPHERAL FREQMHZ + -1 + + + + false + + + + + + PCW_I2C_PERIPHERAL_FREQMHZ + PCW I2C PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_WDT_PERIPHERAL_FREQMHZ + PCW WDT PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_TTC_PERIPHERAL_FREQMHZ + PCW TTC PERIPHERAL FREQMHZ + 50 + + + + false + + + + + + PCW_TTC0_CLK0_PERIPHERAL_FREQMHZ + PCW TTC0 CLK0 PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_TTC0_CLK1_PERIPHERAL_FREQMHZ + PCW TTC0 CLK1 PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_TTC0_CLK2_PERIPHERAL_FREQMHZ + PCW TTC0 CLK2 PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_TTC1_CLK0_PERIPHERAL_FREQMHZ + PCW TTC1 CLK0 PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_TTC1_CLK1_PERIPHERAL_FREQMHZ + PCW TTC1 CLK1 PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_TTC1_CLK2_PERIPHERAL_FREQMHZ + PCW TTC1 CLK2 PERIPHERAL FREQMHZ + 133.333333 + + + + false + + + + + + PCW_PCAP_PERIPHERAL_FREQMHZ + PCW PCAP PERIPHERAL FREQMHZ + 200 + + + + true + + + + + + PCW_TPIU_PERIPHERAL_FREQMHZ + PCW TPIU PERIPHERAL FREQMHZ + 200 + + + + false + + + + + + PCW_FPGA0_PERIPHERAL_FREQMHZ + PCW FPGA0 PERIPHERAL FREQMHZ + 166.667 + + + + true + + + + + + PCW_FPGA1_PERIPHERAL_FREQMHZ + PCW FPGA1 PERIPHERAL FREQMHZ + 50 + + + + true + + + + + + PCW_FPGA2_PERIPHERAL_FREQMHZ + PCW FPGA2 PERIPHERAL FREQMHZ + 100 + + + + true + + + + + + PCW_FPGA3_PERIPHERAL_FREQMHZ + PCW FPGA3 PERIPHERAL FREQMHZ + 200 + + + + true + + + + + + PCW_ACT_APU_PERIPHERAL_FREQMHZ + PCW ACT APU PERIPHERAL FREQMHZ + 666.666687 + + + + true + + + + + + PCW_UIPARAM_ACT_DDR_FREQ_MHZ + PCW UIPARAM ACT DDR FREQ MHZ + 533.333374 + + + + true + + + + + + PCW_ACT_DCI_PERIPHERAL_FREQMHZ + PCW ACT DCI PERIPHERAL FREQMHZ + 10.158731 + + + + true + + + + + + PCW_ACT_QSPI_PERIPHERAL_FREQMHZ + PCW ACT QSPI PERIPHERAL FREQMHZ + 200.000000 + + + + true + + + + + + PCW_ACT_SMC_PERIPHERAL_FREQMHZ + PCW ACT SMC PERIPHERAL FREQMHZ + 10.000000 + + + + true + + + + + + PCW_ACT_ENET0_PERIPHERAL_FREQMHZ + PCW ACT ENET0 PERIPHERAL FREQMHZ + 125.000000 + + + + true + + + + + + PCW_ACT_ENET1_PERIPHERAL_FREQMHZ + PCW ACT ENET1 PERIPHERAL FREQMHZ + 10.000000 + + + + true + + + + + + PCW_ACT_USB0_PERIPHERAL_FREQMHZ + PCW ACT USB0 PERIPHERAL FREQMHZ + 60 + + + + true + + + + + + PCW_ACT_USB1_PERIPHERAL_FREQMHZ + PCW ACT USB1 PERIPHERAL FREQMHZ + 60 + + + + true + + + + + + PCW_ACT_SDIO_PERIPHERAL_FREQMHZ + PCW ACT SDIO PERIPHERAL FREQMHZ + 100.000000 + + + + true + + + + + + PCW_ACT_UART_PERIPHERAL_FREQMHZ + PCW ACT UART PERIPHERAL FREQMHZ + 100.000000 + + + + true + + + + + + PCW_ACT_SPI_PERIPHERAL_FREQMHZ + PCW ACT SPI PERIPHERAL FREQMHZ + 10.000000 + + + + true + + + + + + PCW_ACT_CAN_PERIPHERAL_FREQMHZ + PCW ACT CAN PERIPHERAL FREQMHZ + 100.000000 + + + + true + + + + + + PCW_ACT_CAN0_PERIPHERAL_FREQMHZ + PCW ACT CAN0 PERIPHERAL FREQMHZ + 23.8095 + + + PCW_ACT_CAN1_PERIPHERAL_FREQMHZ + PCW ACT CAN0 PERIPHERAL FREQMHZ + 23.8095 + + + PCW_ACT_I2C_PERIPHERAL_FREQMHZ + PCW ACT I2C PERIPHERAL FREQMHZ + 50 + + + + true + + + + + + PCW_ACT_WDT_PERIPHERAL_FREQMHZ + PCW ACT WDT PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_ACT_TTC_PERIPHERAL_FREQMHZ + PCW ACT TTC PERIPHERAL FREQMHZ + 50 + + + + true + + + + + + PCW_ACT_PCAP_PERIPHERAL_FREQMHZ + PCW ACT PCAP PERIPHERAL FREQMHZ + 200.000000 + + + + true + + + + + + PCW_ACT_TPIU_PERIPHERAL_FREQMHZ + PCW ACT TPIU PERIPHERAL FREQMHZ + 200.000000 + + + + true + + + + + + PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ + PCW ACT FPGA0 PERIPHERAL FREQMHZ + 166.666672 + + + + true + + + + + + PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ + PCW ACT FPGA1 PERIPHERAL FREQMHZ + 50.000000 + + + + true + + + + + + PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ + PCW ACT FPGA2 PERIPHERAL FREQMHZ + 100.000000 + + + + true + + + + + + PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ + PCW ACT FPGA3 PERIPHERAL FREQMHZ + 200.000000 + + + + true + + + + + + PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ + PCW ACT TTC0 CLK0 PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ + PCW ACT TTC0 CLK1 PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ + PCW ACT TTC0 CLK2 PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ + PCW ACT TTC1 CLK0 PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ + PCW ACT TTC1 CLK1 PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ + PCW ACT TTC1 CLK2 PERIPHERAL FREQMHZ + 111.111115 + + + + true + + + + + + PCW_CLK0_FREQ + PCW CLK0 FREQ + 166666672 + + + + true + + + + + + PCW_CLK1_FREQ + PCW CLK1 FREQ + 50000000 + + + + true + + + + + + PCW_CLK2_FREQ + PCW CLK2 FREQ + 100000000 + + + + true + + + + + + PCW_CLK3_FREQ + PCW CLK3 FREQ + 200000000 + + + + true + + + + + + PCW_OVERRIDE_BASIC_CLOCK + PCW OVERRIDE FREQ + 0 + + + + true + + + + + + PCW_CPU_PERIPHERAL_DIVISOR0 + CLKPARAM + 2 + + + + false + + + + + + PCW_DDR_PERIPHERAL_DIVISOR0 + CLKPARAM + 2 + + + + false + + + + + + PCW_SMC_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + false + + + + + + PCW_QSPI_PERIPHERAL_DIVISOR0 + CLKPARAM + 5 + + + + false + + + + + + PCW_SDIO_PERIPHERAL_DIVISOR0 + CLKPARAM + 10 + + + + false + + + + + + PCW_UART_PERIPHERAL_DIVISOR0 + CLKPARAM + 10 + + + + false + + + + + + PCW_SPI_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + false + + + + + + PCW_CAN_PERIPHERAL_DIVISOR0 + CLKPARAM + 10 + + + + false + + + + + + PCW_CAN_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_FCLK0_PERIPHERAL_DIVISOR0 + CLKPARAM + 6 + + + + false + + + + + + PCW_FCLK1_PERIPHERAL_DIVISOR0 + CLKPARAM + 20 + + + + false + + + + + + PCW_FCLK2_PERIPHERAL_DIVISOR0 + CLKPARAM + 10 + + + + false + + + + + + PCW_FCLK3_PERIPHERAL_DIVISOR0 + CLKPARAM + 5 + + + + false + + + + + + PCW_FCLK0_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_FCLK1_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_FCLK2_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_FCLK3_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_ENET0_PERIPHERAL_DIVISOR0 + CLKPARAM + 8 + + + + false + + + + + + PCW_ENET1_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + false + + + + + + PCW_ENET0_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_ENET1_PERIPHERAL_DIVISOR1 + CLKPARAM + 1 + + + + false + + + + + + PCW_TPIU_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + false + + + + + + PCW_DCI_PERIPHERAL_DIVISOR0 + CLKPARAM + 35 + + + + false + + + + + + PCW_DCI_PERIPHERAL_DIVISOR1 + CLKPARAM + 3 + + + + false + + + + + + PCW_PCAP_PERIPHERAL_DIVISOR0 + CLKPARAM + 5 + + + + false + + + + + + PCW_TTC0_CLK0_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_TTC0_CLK1_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_TTC0_CLK2_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_TTC1_CLK0_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_TTC1_CLK1_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_TTC1_CLK2_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_WDT_PERIPHERAL_DIVISOR0 + CLKPARAM + 1 + + + + true + + + + + + PCW_ARMPLL_CTRL_FBDIV + CLKPARAM + 40 + + + + false + + + + + + PCW_IOPLL_CTRL_FBDIV + CLKPARAM + 30 + + + + false + + + + + + PCW_DDRPLL_CTRL_FBDIV + CLKPARAM + 32 + + + + false + + + + + + PCW_CPU_CPU_PLL_FREQMHZ + CLKPARAM + 1333.333 + + + + false + + + + + + PCW_IO_IO_PLL_FREQMHZ + CLKPARAM + 1000.000 + + + + false + + + + + + PCW_DDR_DDR_PLL_FREQMHZ + CLKPARAM + 1066.667 + + + + false + + + + + + PCW_SMC_PERIPHERAL_VALID + PCW SMC PERIPHERAL VALID + 0 + + + + true + + + + + + PCW_SDIO_PERIPHERAL_VALID + PCW SDIO PERIPHERAL VALID + 1 + + + + true + + + + + + PCW_SPI_PERIPHERAL_VALID + PCW SPI PERIPHERAL VALID + 0 + + + + true + + + + + + PCW_CAN_PERIPHERAL_VALID + PCW CAN PERIPHERAL VALID + 1 + + + + true + + + + + + PCW_UART_PERIPHERAL_VALID + PCW UART PERIPHERAL VALID + 1 + + + + true + + + + + + PCW_EN_EMIO_CAN0 + PCW EN EMIO CAN0 + 0 + + + + true + + + + + + PCW_EN_EMIO_CAN1 + PCW EN EMIO CAN1 + 0 + + + + true + + + + + + PCW_EN_EMIO_ENET0 + PCW EN EMIO ENET0 + 0 + + + + true + + + + + + PCW_EN_EMIO_ENET1 + PCW EN EMIO ENET1 + 0 + + + + true + + + + + + PCW_EN_EMIO_GPIO + PCW EN EMIO GPIO + 1 + + + + true + + + + + + PCW_EN_EMIO_I2C0 + PCW EN EMIO I2C0 + 1 + + + + true + + + + + + PCW_EN_EMIO_I2C1 + PCW EN EMIO I2C1 + 0 + + + + true + + + + + + PCW_EN_EMIO_PJTAG + PCW EN EMIO PJTAG + 0 + + + + true + + + + + + PCW_EN_EMIO_SDIO0 + PCW EN EMIO SDIO0 + 0 + + + + true + + + + + + PCW_EN_EMIO_CD_SDIO0 + PCW EN EMIO CD SDIO0 + 0 + + + + true + + + + + + PCW_EN_EMIO_WP_SDIO0 + PCW EN EMIO WP SDIO0 + 0 + + + + true + + + + + + PCW_EN_EMIO_SDIO1 + PCW EN EMIO SDIO1 + 0 + + + + true + + + + + + PCW_EN_EMIO_CD_SDIO1 + PCW EN EMIO CD SDIO1 + 0 + + + + true + + + + + + PCW_EN_EMIO_WP_SDIO1 + PCW EN EMIO WP SDIO1 + 0 + + + + true + + + + + + PCW_EN_EMIO_SPI0 + PCW EN EMIO SPI0 + 0 + + + + true + + + + + + PCW_EN_EMIO_SPI1 + PCW EN EMIO SPI1 + 0 + + + + true + + + + + + PCW_EN_EMIO_UART0 + PCW EN EMIO UART0 + 0 + + + + true + + + + + + PCW_EN_EMIO_UART1 + PCW EN EMIO UART1 + 0 + + + + true + + + + + + PCW_EN_EMIO_MODEM_UART0 + PCW EN EMIO MODEM UART0 + 0 + + + + true + + + + + + PCW_EN_EMIO_MODEM_UART1 + PCW EN EMIO MODEM UART1 + 0 + + + + true + + + + + + PCW_EN_EMIO_TTC0 + PCW EN EMIO TTC0 + 0 + + + + true + + + + + + PCW_EN_EMIO_TTC1 + PCW EN EMIO TTC1 + 0 + + + + true + + + + + + PCW_EN_EMIO_WDT + PCW EN EMIO WDT + 0 + + + + true + + + + + + PCW_EN_EMIO_TRACE + PCW EN EMIO TRACE + 0 + + + + true + + + + + + PCW_USE_AXI_NONSECURE + PCW USE AXI NON SECURE + 0 + + + + true + + + + + + PCW_USE_M_AXI_GP0 + PCW USE M AXI GP0 + 1 + + + PCW_USE_M_AXI_GP1 + PCW USE M AXI GP1 + 0 + + + PCW_USE_S_AXI_GP0 + PCW USE S AXI GP0 + 0 + + + PCW_USE_S_AXI_GP1 + PCW USE S AXI GP1 + 0 + + + PCW_USE_S_AXI_ACP + PCW USE S AXI ACP + 0 + + + PCW_USE_S_AXI_HP0 + PCW USE S AXI HP0 + 1 + + + PCW_USE_S_AXI_HP1 + PCW USE S AXI HP1 + 0 + + + PCW_USE_S_AXI_HP2 + PCW USE S AXI HP2 + 0 + + + PCW_USE_S_AXI_HP3 + PCW USE S AXI HP3 + 0 + + + PCW_M_AXI_GP0_FREQMHZ + PCW M AXI GP0 FREQMHZ + 50 + + + + optional + true + + + + + + PCW_M_AXI_GP1_FREQMHZ + PCW M AXI GP1 FREQMHZ + 10 + + + + optional + false + + + + + + PCW_S_AXI_GP0_FREQMHZ + PCW S AXI GP0 FREQMHZ + 10 + + + + optional + false + + + + + + PCW_S_AXI_GP1_FREQMHZ + PCW S AXI GP1 FREQMHZ + 10 + + + + optional + false + + + + + + PCW_S_AXI_ACP_FREQMHZ + PCW S AXI ACP FREQMHZ + 10 + + + + optional + false + + + + + + PCW_S_AXI_HP0_FREQMHZ + PCW S AXI HP0 FREQMHZ + 100 + + + + optional + true + + + + + + PCW_S_AXI_HP1_FREQMHZ + PCW S AXI HP1 FREQMHZ + 10 + + + + optional + false + + + + + + PCW_S_AXI_HP2_FREQMHZ + PCW S AXI HP2 FREQMHZ + 10 + + + + optional + false + + + + + + PCW_S_AXI_HP3_FREQMHZ + PCW S AXI HP3 FREQMHZ + 10 + + + + optional + false + + + + + + PCW_USE_DMA0 + PCW USE DMA0 + 0 + + + PCW_USE_DMA1 + PCW USE DMA1 + 0 + + + PCW_USE_DMA2 + PCW USE DMA2 + 0 + + + PCW_USE_DMA3 + PCW USE DMA3 + 0 + + + PCW_USE_TRACE + PCW USE TRACE + Enable FTM Trace interface used to capture data from PL to PS debug system + 0 + + + PCW_TRACE_PIPELINE_WIDTH + PCW TRACE PIPELINE WIDTH + 8 + + + + optional + false + + + + + + PCW_INCLUDE_TRACE_BUFFER + PCW INCLUDE TRACE BUFFER + 0 + + + + optional + false + + + + + + PCW_TRACE_BUFFER_FIFO_SIZE + PCW TRACE BUFFER FIFO SIZE + 128 + + + + optional + false + + + + + + PCW_USE_TRACE_DATA_EDGE_DETECTOR + PCW USE TRACE DATA EDGE DETECTOR + 0 + + + + optional + false + + + + + + PCW_TRACE_BUFFER_CLOCK_DELAY + PCW TRACE BUFFER CLOCK DELAY + 12 + + + + optional + false + + + + + + PCW_USE_CROSS_TRIGGER + PCW USE CROSS TRIGGER + 0 + + + + true + + + + + + PCW_FTM_CTI_IN0 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_IN1 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_IN2 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_IN3 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_OUT0 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_OUT1 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_OUT2 + <Select> + + + + optional + false + + + + + + PCW_FTM_CTI_OUT3 + <Select> + + + + optional + false + + + + + + PCW_USE_DEBUG + PCW USE DEBUG + 0 + + + PCW_USE_CR_FABRIC + PCW USE CR FABRIC + 1 + + + PCW_USE_AXI_FABRIC_IDLE + PCW USE AXI FABRIC IDLE + Enables idle AXI signal to the PS used to indicate that there are no outstanding AXI transactions in the PL + 0 + + + PCW_USE_DDR_BYPASS + PCW USE DDR BYPASS + Enables DDR urgent/arb signal used to signal a critical memory starvation situation to the DDR arbitration for the four AXI ports of the PS DDR memory controller + 0 + + + PCW_USE_FABRIC_INTERRUPT + PCW USE FABRIC INTERRUPT + 1 + + + PCW_USE_PROC_EVENT_BUS + PCW USE PROC EVENT BUS + 0 + + + PCW_USE_EXPANDED_IOP + PCW USE EXPANDED IOP + 0 + + + PCW_USE_HIGH_OCM + PCW USE HIGH OCM + 0 + + + PCW_USE_PS_SLCR_REGISTERS + PCW USE PS SLCR REGISTERS + 0 + + + PCW_USE_EXPANDED_PS_SLCR_REGISTERS + PCW USE EXPANDED PS SLCR REGISTERS + 0 + + + + optional + false + + + + + + PCW_USE_CORESIGHT + PCW USE CORESIGHT + 0 + + + PCW_EN_EMIO_SRAM_INT + PCW EN EMIO SRAM INT + 0 + + + + true + + + + + + PCW_GPIO_EMIO_GPIO_WIDTH + PCW EMIO GPIO WIDTH + 64 + + + + optional + true + + + + + + PCW_UART0_BAUD_RATE + PCW UART0 BAUD RATE + Configure baud rate to determine UART0 operating frequency + 115200 + + + + optional + false + + + + + + PCW_UART1_BAUD_RATE + PCW UART1 BAUD RATE + Configure baud rate to determine UART1 operating frequency + 115200 + + + + optional + true + + + + + + PCW_EN_4K_TIMER + PCW EN 4K TIMER + 0 + + + + true + + + + + + PCW_M_AXI_GP0_ID_WIDTH + PCW M AXI GP0 ID WIDTH + 12 + + + + optional + true + + + + + + PCW_M_AXI_GP0_ENABLE_STATIC_REMAP + PCW M AXI GP0 ENABLE STATIC REMAP + 0 + + + + optional + true + + + + + + PCW_M_AXI_GP0_SUPPORT_NARROW_BURST + PCW M AXI GP0 SUPPORT NARROW BURST + 0 + + + + optional + true + + + + + + PCW_M_AXI_GP0_THREAD_ID_WIDTH + PCW M AXI GP0 THREAD ID WIDTH + 12 + + + + optional + true + + + + + + PCW_M_AXI_GP1_ID_WIDTH + PCW M AXI GP1 ID WIDTH + 12 + + + + optional + false + + + + + + PCW_M_AXI_GP1_ENABLE_STATIC_REMAP + PCW M AXI GP1 ENABLE STATIC REMAP + 0 + + + + optional + false + + + + + + PCW_M_AXI_GP1_SUPPORT_NARROW_BURST + PCW M AXI GP1 SUPPORT NARROW BURST + 0 + + + + optional + false + + + + + + PCW_M_AXI_GP1_THREAD_ID_WIDTH + PCW M AXI GP1 THREAD ID WIDTH + 12 + + + + optional + false + + + + + + PCW_S_AXI_GP0_ID_WIDTH + PCW S AXI GP0 ID WIDTH + 6 + + + + optional + false + + + + + + PCW_S_AXI_GP1_ID_WIDTH + PCW S AXI GP1 ID WIDTH + 6 + + + + optional + false + + + + + + PCW_S_AXI_ACP_ID_WIDTH + PCW S AXI ACP ID WIDTH + 3 + + + + optional + false + + + + + + PCW_INCLUDE_ACP_TRANS_CHECK + PCW INCLUDE ACP TRANS CHECK + 0 + + + PCW_USE_DEFAULT_ACP_USER_VAL + PCW USE DEFAULT ACP USER VAL + 0 + + + + optional + false + + + + + + PCW_S_AXI_ACP_ARUSER_VAL + PCW S AXI ACP ARUSER VAL + 31 + + + + optional + false + + + + + + PCW_S_AXI_ACP_AWUSER_VAL + PCW S AXI ACP AWUSER VAL + 31 + + + + optional + false + + + + + + PCW_S_AXI_HP0_ID_WIDTH + PCW S AXI HP0 ID WIDTH + 6 + + + + optional + true + + + + + + PCW_S_AXI_HP0_DATA_WIDTH + PCW S AXI HP0 DATA WIDTH + 64 + + + + optional + true + + + + + + PCW_S_AXI_HP1_ID_WIDTH + PCW S AXI HP1 ID WIDTH + 6 + + + + optional + false + + + + + + PCW_S_AXI_HP1_DATA_WIDTH + PCW S AXI HP1 DATA WIDTH + 64 + + + + optional + true + + + + + + PCW_S_AXI_HP2_ID_WIDTH + PCW S AXI HP2 ID WIDTH + 6 + + + + optional + false + + + + + + PCW_S_AXI_HP2_DATA_WIDTH + PCW S AXI HP2 DATA WIDTH + 64 + + + + optional + true + + + + + + PCW_S_AXI_HP3_ID_WIDTH + PCW S AXI HP3 ID WIDTH + 6 + + + + optional + false + + + + + + PCW_S_AXI_HP3_DATA_WIDTH + PCW S AXI HP3 DATA WIDTH + 64 + + + + optional + true + + + + + + PCW_NUM_F2P_INTR_INPUTS + PCW NUM F2P INTR INPUTS + 16 + + + + optional + true + + + + + + PCW_EN_DDR + PCW EN DDR + 1 + + + + true + + + + + + PCW_EN_SMC + PCW EN SMC + 0 + + + + true + + + + + + PCW_EN_QSPI + PCW EN QSPI + 1 + + + + true + + + + + + PCW_EN_CAN0 + PCW EN CAN0 + 1 + + + + true + + + + + + PCW_EN_CAN1 + PCW EN CAN1 + 0 + + + + true + + + + + + PCW_EN_ENET0 + PCW EN ENET0 + 1 + + + + true + + + + + + PCW_EN_ENET1 + PCW EN ENET1 + 0 + + + + true + + + + + + PCW_EN_GPIO + PCW EN GPIO + 1 + + + + true + + + + + + PCW_EN_I2C0 + PCW EN I2C0 + 1 + + + + true + + + + + + PCW_EN_I2C1 + PCW EN I2C1 + 1 + + + + true + + + + + + PCW_EN_PJTAG + PCW EN PJTAG + 0 + + + + true + + + + + + PCW_EN_SDIO0 + PCW EN SDIO0 + 1 + + + + true + + + + + + PCW_EN_SDIO1 + PCW EN SDIO1 + 0 + + + + true + + + + + + PCW_EN_SPI0 + PCW EN SPI0 + 0 + + + + true + + + + + + PCW_EN_SPI1 + PCW EN SPI1 + 0 + + + + true + + + + + + PCW_EN_UART0 + PCW EN UART0 + 0 + + + + true + + + + + + PCW_EN_UART1 + PCW EN UART1 + 1 + + + + true + + + + + + PCW_EN_MODEM_UART0 + PCW EN MODEM UART0 + 0 + + + + true + + + + + + PCW_EN_MODEM_UART1 + PCW EN MODEM UART1 + 0 + + + + true + + + + + + PCW_EN_TTC0 + PCW EN TTC0 + 0 + + + + true + + + + + + PCW_EN_TTC1 + PCW EN TTC1 + 0 + + + + true + + + + + + PCW_EN_WDT + PCW EN WDT + 0 + + + + true + + + + + + PCW_EN_TRACE + PCW EN TRACE + 0 + + + + true + + + + + + PCW_EN_USB0 + PCW EN USB0 + 1 + + + + true + + + + + + PCW_EN_USB1 + PCW EN USB1 + 0 + + + + true + + + + + + PCW_DQ_WIDTH + PCW DQ WIDTH + 32 + + + PCW_DQS_WIDTH + PCW DQS WIDTH + 4 + + + PCW_DM_WIDTH + PCW DM WIDTH + 4 + + + PCW_MIO_PRIMITIVE + PCW MIO PRIMITIVE + 54 + + + PCW_EN_CLK0_PORT + PCW EN CLK0 PORT + 1 + + + + optional + true + + + + + + PCW_EN_CLK1_PORT + PCW EN CLK1 PORT + 1 + + + + optional + true + + + + + + PCW_EN_CLK2_PORT + PCW EN CLK2 PORT + 1 + + + + optional + true + + + + + + PCW_EN_CLK3_PORT + PCW EN CLK3 PORT + 1 + + + + optional + true + + + + + + PCW_EN_RST0_PORT + PCW EN RST0 PORT + Enables general purpose reset signal 0 for PL logic + 1 + + + + optional + true + + + + + + PCW_EN_RST1_PORT + PCW EN RST1 PORT + Enables general purpose reset signal 1 for PL logic + 1 + + + + optional + true + + + + + + PCW_EN_RST2_PORT + PCW EN RST2 PORT + Enables general purpose reset signal 2 for PL logic + 1 + + + + optional + true + + + + + + PCW_EN_RST3_PORT + PCW EN RST3 PORT + Enables general purpose reset signal 3 for PL logic + 1 + + + + optional + true + + + + + + PCW_EN_CLKTRIG0_PORT + PCW EN CLKTRIG0 PORT + Enables PL clock trigger signal 0 used to halt the PL clock when counting a programmed number of clock pulses + 0 + + + + optional + true + + + + + + PCW_EN_CLKTRIG1_PORT + PCW EN CLKTRIG1 PORT + Enables PL clock trigger signal 1 used to halt the PL clock when counting a programmed number of clock pulses + 0 + + + + optional + true + + + + + + PCW_EN_CLKTRIG2_PORT + PCW EN CLKTRIG2 PORT + Enables PL clock trigger signal 2 used to halt the PL clock when counting a programmed number of clock pulses + 0 + + + + optional + true + + + + + + PCW_EN_CLKTRIG3_PORT + PCW EN CLKTRIG3 PORT + Enables PL clock trigger signal 3 used to halt the PL clock when counting a programmed number of clock pulses + 0 + + + + optional + true + + + + + + PCW_P2F_DMAC_ABORT_INTR + PCW P2F DMAC ABORT INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC0_INTR + PCW P2F DMAC0 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC1_INTR + PCW P2F DMAC1 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC2_INTR + PCW P2F DMAC2 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC3_INTR + PCW P2F DMAC3 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC4_INTR + PCW P2F DMAC4 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC5_INTR + PCW P2F DMAC5 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC6_INTR + PCW P2F DMAC6 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_DMAC7_INTR + PCW P2F DMAC7 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_SMC_INTR + PCW P2F SMC INTR + 0 + + + + optional + false + + + + + + PCW_P2F_QSPI_INTR + PCW P2F QSPI INTR + 0 + + + + optional + true + + + + + + PCW_P2F_CTI_INTR + PCW P2F CTI INTR + 0 + + + + optional + false + + + + + + PCW_P2F_GPIO_INTR + PCW P2F GPIO INTR + 0 + + + + optional + true + + + + + + PCW_P2F_USB0_INTR + PCW P2F USB0 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_ENET0_INTR + PCW P2F ENET0 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_SDIO0_INTR + PCW P2F SDIO0 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_I2C0_INTR + PCW P2F I2C0 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_SPI0_INTR + PCW P2F SPI0 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_UART0_INTR + PCW P2F UART0 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_CAN0_INTR + PCW P2F CAN0 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_USB1_INTR + PCW P2F USB1 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_ENET1_INTR + PCW P2F ENET1 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_SDIO1_INTR + PCW P2F SDIO1 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_I2C1_INTR + PCW P2F I2C1 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_SPI1_INTR + PCW P2F SPI1 INTR + 0 + + + + optional + false + + + + + + PCW_P2F_UART1_INTR + PCW P2F UART1 INTR + 0 + + + + optional + true + + + + + + PCW_P2F_CAN1_INTR + PCW P2F CAN1 INTR + 0 + + + + optional + false + + + + + + PCW_IRQ_F2P_INTR + PCW IRQ F2P INTR + 1 + + + + optional + true + + + + + + PCW_IRQ_F2P_MODE + PCW IRQ F2P MODE + DIRECT + + + + optional + true + + + + + + PCW_CORE0_FIQ_INTR + PCW CORE0 FIQ INTR + 0 + + + + optional + true + + + + + + PCW_CORE0_IRQ_INTR + PCW CORE0 IRQ INTR + 0 + + + + optional + true + + + + + + PCW_CORE1_FIQ_INTR + PCW CORE1 FIQ INTR + 0 + + + + optional + true + + + + + + PCW_CORE1_IRQ_INTR + PCW CORE1 IRQ INTR + 0 + + + + optional + true + + + + + + PCW_VALUE_SILVERSION + PCW VALUE SILVERSION + 3 + + + PCW_IMPORT_BOARD_PRESET + PCW IMPORT BOARD PRESET + None + + + PCW_PERIPHERAL_BOARD_PRESET + PCW PERIPHERAL BOARD PRESET + None + + + PCW_PRESET_BANK0_VOLTAGE + PCW PRESET BANK0 VOLTAGE + LVCMOS 3.3V + + + + true + + + + + + PCW_PRESET_BANK1_VOLTAGE + PCW PRESET BANK1 VOLTAGE + LVCMOS 1.8V + + + + true + + + + + + PCW_UIPARAM_DDR_ENABLE + PCW UIPARAM DDR ENABLE + 1 + + + + true + + + + + + PCW_UIPARAM_DDR_ADV_ENABLE + PCW UIPARAM DDR ADV ENABLE + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_MEMORY_TYPE + PCW UIPARAM DDR MEMORY TYPE + DDR 3 + + + + true + + + + + + PCW_UIPARAM_DDR_ECC + PCW UIPARAM DDR ECC + Disabled + + + + false + + + + + + PCW_UIPARAM_DDR_BUS_WIDTH + PCW UIPARAM DDR BUS WIDTH + 32 Bit + + + + true + + + + + + PCW_UIPARAM_DDR_BL + PCW UIPARAM DDR BL + 8 + + + + true + + + + + + PCW_UIPARAM_DDR_HIGH_TEMP + PCW UIPARAM DDR HIGH TEMP + Normal (0-85) + + + + true + + + + + + PCW_UIPARAM_DDR_PARTNO + PCW UIPARAM DDR PARTNO + MT41K256M16 RE-15E + + + + true + + + + + + PCW_UIPARAM_DDR_DRAM_WIDTH + PCW UIPARAM DDR DRAM WIDTH + 16 Bits + + + + false + + + + + + PCW_UIPARAM_DDR_DEVICE_CAPACITY + PCW UIPARAM DDR DEVICE CAPACITY + 4096 MBits + + + + false + + + + + + PCW_UIPARAM_DDR_SPEED_BIN + PCW UIPARAM DDR SPEED BIN + DDR3_1066F + + + + false + + + + + + PCW_UIPARAM_DDR_TRAIN_WRITE_LEVEL + PCW UIPARAM DDR TRAIN WRITE LEVEL + 1 + + + + true + + + + + + PCW_UIPARAM_DDR_TRAIN_READ_GATE + PCW UIPARAM DDR TRAIN READ GATE + 1 + + + + true + + + + + + PCW_UIPARAM_DDR_TRAIN_DATA_EYE + PCW UIPARAM DDR TRAIN DATA EYE + 1 + + + + true + + + + + + PCW_UIPARAM_DDR_CLOCK_STOP_EN + PCW UIPARAM DDR CLOCK STOP EN + 0 + + + + true + + + + + + PCW_UIPARAM_DDR_USE_INTERNAL_VREF + PCW UIPARAM DDR USE INTERNAL VREF + 0 + + + + true + + + + + + PCW_DDR_PRIORITY_WRITEPORT_0 + PCW DDR PRIORITY WRITEPORT 0 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_WRITEPORT_1 + PCW DDR PRIORITY WRITEPORT 0 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_WRITEPORT_2 + PCW DDR PRIORITY WRITEPORT 0 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_WRITEPORT_3 + PCW DDR PRIORITY WRITEPORT 0 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_READPORT_0 + PCW DDR PRIORITY READPORT 0 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_READPORT_1 + PCW DDR PRIORITY READPORT 1 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_READPORT_2 + PCW DDR PRIORITY READPORT 2 + <Select> + + + + false + + + + + + PCW_DDR_PRIORITY_READPORT_3 + PCW DDR PRIORITY READPORT 3 + <Select> + + + + false + + + + + + PCW_DDR_PORT0_HPR_ENABLE + PCW DDR PORT0 ENABLE HPR + 0 + + + + false + + + + + + PCW_DDR_PORT1_HPR_ENABLE + PCW DDR PORT1 ENABLE HPR + 0 + + + + false + + + + + + PCW_DDR_PORT2_HPR_ENABLE + PCW DDR PORT2 ENABLE HPR + 0 + + + + false + + + + + + PCW_DDR_PORT3_HPR_ENABLE + PCW DDR PORT3 ENABLE HPR + 0 + + + + false + + + + + + PCW_DDR_HPRLPR_QUEUE_PARTITION + PCW DDR HPRLPR QUEUE PARTITION + HPR(0)/LPR(32) + + + + false + + + + + + PCW_DDR_LPR_TO_CRITICAL_PRIORITY_LEVEL + PCW DDR LPR TO CRITICAL PRIORITY LEVEL + 2 + + + + false + + + + + + PCW_DDR_HPR_TO_CRITICAL_PRIORITY_LEVEL + PCW DDR HPR TO CRITICAL PRIORITY LEVEL + 15 + + + + false + + + + + + PCW_DDR_WRITE_TO_CRITICAL_PRIORITY_LEVEL + PCW DDR WRITE TO CRITICAL PRIORITY LEVEL + 2 + + + + false + + + + + + PCW_NAND_PERIPHERAL_ENABLE + PCW NAND PERIPHERAL ENABLE + 0 + + + + false + + + + + + PCW_NAND_NAND_IO + PCW NAND NAND IO + <Select> + + + + false + + + + + + PCW_NAND_GRP_D8_ENABLE + 0 + + + + false + + + + + + PCW_NAND_GRP_D8_IO + PCW NAND GRP D8 IO + <Select> + + + + false + + + + + + PCW_NOR_PERIPHERAL_ENABLE + PCW NOR PERIPHERAL ENABLE + 0 + + + + false + + + + + + PCW_NOR_NOR_IO + PCW NOR NOR IO + <Select> + + + + false + + + + + + PCW_NOR_GRP_A25_ENABLE + PCW NOR GRP A25 IO + 0 + + + + false + + + + + + PCW_NOR_GRP_A25_IO + PCW NOR GRP CS0 IO + <Select> + + + + false + + + + + + PCW_NOR_GRP_CS0_ENABLE + 0 + + + + false + + + + + + PCW_NOR_GRP_CS0_IO + PCW NOR GRP CS1 IO + <Select> + + + + false + + + + + + PCW_NOR_GRP_SRAM_CS0_ENABLE + PCW NOR GRP SRAM CS0 ENABLE + 0 + + + + false + + + + + + PCW_NOR_GRP_SRAM_CS0_IO + PCW NOR GRP SRAM CS1 IO + <Select> + + + + false + + + + + + PCW_NOR_GRP_CS1_ENABLE + 0 + + + + false + + + + + + PCW_NOR_GRP_CS1_IO + PCW NOR GRP SRAM CS0 IO + <Select> + + + + false + + + + + + PCW_NOR_GRP_SRAM_CS1_ENABLE + PCW NOR GRP SRAM CS1 ENABLE + 0 + + + + false + + + + + + PCW_NOR_GRP_SRAM_CS1_IO + <Select> + + + + false + + + + + + PCW_NOR_GRP_SRAM_INT_ENABLE + 0 + + + + false + + + + + + PCW_NOR_GRP_SRAM_INT_IO + <Select> + + + + false + + + + + + PCW_QSPI_PERIPHERAL_ENABLE + PCW QSPI PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_QSPI_QSPI_IO + PCW QSPI QSPI IO + MIO 1 .. 6 + + + + true + + + + + + PCW_QSPI_GRP_SINGLE_SS_ENABLE + PCW QSPI GRP SINGLE SS ENABLE + 1 + + + + true + + + + + + PCW_QSPI_GRP_SINGLE_SS_IO + PCW QSPI GRP SINGLE SS IO + MIO 1 .. 6 + + + + true + + + + + + PCW_QSPI_GRP_SS1_ENABLE + 0 + + + + true + + + + + + PCW_QSPI_GRP_SS1_IO + PCW QSPI GRP SS1 IO + <Select> + + + + false + + + + + + PCW_QSPI_GRP_IO1_ENABLE + 0 + + + + true + + + + + + PCW_QSPI_GRP_IO1_IO + PCW QSPI GRP IO1 IO + <Select> + + + + false + + + + + + PCW_QSPI_GRP_FBCLK_ENABLE + 1 + + + + true + + + + + + PCW_QSPI_GRP_FBCLK_IO + PCW QSPI GRP FBCLK IO + MIO 8 + + + + true + + + + + + PCW_QSPI_INTERNAL_HIGHADDRESS + PCW QSPI INTERNAL HIGHADDRESS + 0xFCFFFFFF + + + + true + + + + + + PCW_ENET0_PERIPHERAL_ENABLE + PCW ENET0 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_ENET0_ENET0_IO + PCW ENET0 ENET0 IO + MIO 16 .. 27 + + + + true + + + + + + PCW_ENET0_GRP_MDIO_ENABLE + 1 + + + + true + + + + + + PCW_ENET0_GRP_MDIO_IO + PCW ENET0 GRP MDIO IO + MIO 52 .. 53 + + + + true + + + + + + PCW_ENET_RESET_ENABLE + 0 + + + + true + + + + + + PCW_ENET_RESET_SELECT + <Select> + + + + false + + + + + + PCW_ENET0_RESET_ENABLE + 0 + + + + false + + + + + + PCW_ENET0_RESET_IO + <Select> + + + + false + + + + + + PCW_ENET1_PERIPHERAL_ENABLE + PCW ENET1 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_ENET1_ENET1_IO + PCW ENET1 ENET1 IO + <Select> + + + + false + + + + + + PCW_ENET1_GRP_MDIO_ENABLE + 0 + + + + false + + + + + + PCW_ENET1_GRP_MDIO_IO + PCW ENET1 GRP MDIO IO + <Select> + + + + false + + + + + + PCW_ENET1_RESET_ENABLE + 0 + + + + false + + + + + + PCW_ENET1_RESET_IO + <Select> + + + + false + + + + + + PCW_SD0_PERIPHERAL_ENABLE + PCW SD0 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_SD0_SD0_IO + PCW SD0 SD0 IO + MIO 40 .. 45 + + + + true + + + + + + PCW_SD0_GRP_CD_ENABLE + 1 + + + + true + + + + + + PCW_SD0_GRP_CD_IO + PCW SD0 GRP CD IO + MIO 46 + + + + true + + + + + + PCW_SD0_GRP_WP_ENABLE + 1 + + + + true + + + + + + PCW_SD0_GRP_WP_IO + PCW SD0 GRP WP IO + MIO 47 + + + + true + + + + + + PCW_SD0_GRP_POW_ENABLE + 0 + + + + true + + + + + + PCW_SD0_GRP_POW_IO + PCW SD0 GRP POW IO + <Select> + + + + false + + + + + + PCW_SD1_PERIPHERAL_ENABLE + PCW SD1 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_SD1_SD1_IO + PCW SD1 SD1 IO + <Select> + + + + false + + + + + + PCW_SD1_GRP_CD_ENABLE + 0 + + + + false + + + + + + PCW_SD1_GRP_CD_IO + PCW SD1 GRP CD IO + <Select> + + + + false + + + + + + PCW_SD1_GRP_WP_ENABLE + 0 + + + + false + + + + + + PCW_SD1_GRP_WP_IO + PCW SD1 GRP WP IO + <Select> + + + + false + + + + + + PCW_SD1_GRP_POW_ENABLE + 0 + + + + false + + + + + + PCW_SD1_GRP_POW_IO + PCW SD1 GRP POW IO + <Select> + + + + false + + + + + + PCW_UART0_PERIPHERAL_ENABLE + PCW UART0 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_UART0_UART0_IO + PCW UART0 UART0 IO + <Select> + + + + false + + + + + + PCW_UART0_GRP_FULL_ENABLE + 0 + + + + false + + + + + + PCW_UART0_GRP_FULL_IO + <Select> + + + + false + + + + + + PCW_UART1_PERIPHERAL_ENABLE + PCW UART1 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_UART1_UART1_IO + PCW UART1 UART1 IO + MIO 48 .. 49 + + + + true + + + + + + PCW_UART1_GRP_FULL_ENABLE + 0 + + + + true + + + + + + PCW_UART1_GRP_FULL_IO + <Select> + + + + false + + + + + + PCW_SPI0_PERIPHERAL_ENABLE + PCW SPI0 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_SPI0_SPI0_IO + PCW SPI0 SPI0 IO + <Select> + + + + false + + + + + + PCW_SPI0_GRP_SS0_ENABLE + 0 + + + + false + + + + + + PCW_SPI0_GRP_SS0_IO + PCW SPI0 GRP SS0 IO + <Select> + + + + false + + + + + + PCW_SPI0_GRP_SS1_ENABLE + 0 + + + + false + + + + + + PCW_SPI0_GRP_SS1_IO + PCW SPI0 GRP SS1 IO + <Select> + + + + false + + + + + + PCW_SPI0_GRP_SS2_ENABLE + 0 + + + + false + + + + + + PCW_SPI0_GRP_SS2_IO + PCW SPI0 GRP SS2 IO + <Select> + + + + false + + + + + + PCW_SPI1_PERIPHERAL_ENABLE + PCW SPI1 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_SPI1_SPI1_IO + PCW SPI1 SPI1 IO + <Select> + + + + false + + + + + + PCW_SPI1_GRP_SS0_ENABLE + 0 + + + + false + + + + + + PCW_SPI1_GRP_SS0_IO + PCW SPI1 GRP SS0 IO + <Select> + + + + false + + + + + + PCW_SPI1_GRP_SS1_ENABLE + 0 + + + + false + + + + + + PCW_SPI1_GRP_SS1_IO + PCW SPI1 GRP SS1 IO + <Select> + + + + false + + + + + + PCW_SPI1_GRP_SS2_ENABLE + 0 + + + + false + + + + + + PCW_SPI1_GRP_SS2_IO + PCW SPI1 GRP SS2 IO + <Select> + + + + false + + + + + + PCW_CAN0_PERIPHERAL_ENABLE + PCW CAN0 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_CAN0_CAN0_IO + PCW CAN0 CAN0 IO + MIO 14 .. 15 + + + + true + + + + + + PCW_CAN0_GRP_CLK_ENABLE + 0 + + + + true + + + + + + PCW_CAN0_GRP_CLK_IO + PCW CAN0 GRP CLK IO + <Select> + + + + false + + + + + + PCW_CAN1_PERIPHERAL_ENABLE + PCW CAN1 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_CAN1_CAN1_IO + PCW CAN1 CAN1 IO + <Select> + + + + false + + + + + + PCW_CAN1_GRP_CLK_ENABLE + 0 + + + + false + + + + + + PCW_CAN1_GRP_CLK_IO + PCW CAN1 GRP CLK IO + <Select> + + + + false + + + + + + PCW_TRACE_PERIPHERAL_ENABLE + PCW TRACE PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_TRACE_TRACE_IO + PCW TRACE TRACE IO + <Select> + + + + false + + + + + + PCW_TRACE_GRP_2BIT_ENABLE + 0 + + + + false + + + + + + PCW_TRACE_GRP_2BIT_IO + PCW TRACE GRP 2BIT IO + <Select> + + + + false + + + + + + PCW_TRACE_GRP_4BIT_ENABLE + 0 + + + + false + + + + + + PCW_TRACE_GRP_4BIT_IO + PCW TRACE GRP 4BIT IO + <Select> + + + + false + + + + + + PCW_TRACE_GRP_8BIT_ENABLE + 0 + + + + false + + + + + + PCW_TRACE_GRP_8BIT_IO + PCW TRACE GRP 8BIT IO + <Select> + + + + false + + + + + + PCW_TRACE_GRP_16BIT_ENABLE + 0 + + + + false + + + + + + PCW_TRACE_GRP_16BIT_IO + PCW TRACE GRP 16BIT IO + <Select> + + + + false + + + + + + PCW_TRACE_GRP_32BIT_ENABLE + 0 + + + + false + + + + + + PCW_TRACE_GRP_32BIT_IO + PCW TRACE GRP 32BIT IO + <Select> + + + + false + + + + + + PCW_TRACE_INTERNAL_WIDTH + PCW TRACE INTERNAL WIDTH + 2 + + + + true + + + + + + PCW_WDT_PERIPHERAL_ENABLE + PCW WDT PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_WDT_WDT_IO + PCW WDT WDT IO + <Select> + + + + false + + + + + + PCW_TTC0_PERIPHERAL_ENABLE + PCW TTC0 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_TTC0_TTC0_IO + PCW TTC0 TTC0 IO + <Select> + + + + false + + + + + + PCW_TTC1_PERIPHERAL_ENABLE + PCW TTC1 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_TTC1_TTC1_IO + PCW TTC1 TTC1 IO + <Select> + + + + false + + + + + + PCW_PJTAG_PERIPHERAL_ENABLE + PCW PJTAG PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_PJTAG_PJTAG_IO + PCW PJTAG PJTAG IO + <Select> + + + + false + + + + + + PCW_USB0_PERIPHERAL_ENABLE + PCW USB0 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_USB0_USB0_IO + PCW USB0 USB0 IO + MIO 28 .. 39 + + + + true + + + + + + PCW_USB_RESET_ENABLE + 1 + + + + true + + + + + + PCW_USB_RESET_SELECT + Share reset pin + + + + true + + + + + + PCW_USB0_RESET_ENABLE + 1 + + + + true + + + + + + PCW_USB0_RESET_IO + MIO 51 + + + + true + + + + + + PCW_USB1_PERIPHERAL_ENABLE + PCW USB1 PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_USB1_USB1_IO + PCW USB1 USB1 IO + <Select> + + + + false + + + + + + PCW_USB1_RESET_ENABLE + 0 + + + + false + + + + + + PCW_USB1_RESET_IO + <Select> + + + + false + + + + + + PCW_I2C0_PERIPHERAL_ENABLE + PCW I2C0 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_I2C0_I2C0_IO + PCW I2C0 I2C0 IO + EMIO + + + + true + + + + + + PCW_I2C0_GRP_INT_ENABLE + 1 + + + + false + + + + + + PCW_I2C0_GRP_INT_IO + PCW I2C0 GRP INT IO + EMIO + + + + false + + + + + + PCW_I2C0_RESET_ENABLE + 0 + + + + false + + + + + + PCW_I2C0_RESET_IO + <Select> + + + + false + + + + + + PCW_I2C1_PERIPHERAL_ENABLE + PCW I2C1 PERIPHERAL ENABLE + 1 + + + + true + + + + + + PCW_I2C1_I2C1_IO + PCW I2C1 I2C1 IO + MIO 12 .. 13 + + + + true + + + + + + PCW_I2C1_GRP_INT_ENABLE + 0 + + + + true + + + + + + PCW_I2C1_GRP_INT_IO + PCW I2C1 GRP INT IO + <Select> + + + + false + + + + + + PCW_I2C_RESET_ENABLE + 0 + + + + true + + + + + + PCW_I2C_RESET_SELECT + <Select> + + + + false + + + + + + PCW_I2C1_RESET_ENABLE + 0 + + + + false + + + + + + PCW_I2C1_RESET_IO + <Select> + + + + false + + + + + + PCW_GPIO_PERIPHERAL_ENABLE + PCW GPIO PERIPHERAL ENABLE + 0 + + + + true + + + + + + PCW_GPIO_MIO_GPIO_ENABLE + 1 + + + + true + + + + + + PCW_GPIO_MIO_GPIO_IO + PCW GPIO MIO GPIO IO + MIO + + + + true + + + + + + PCW_GPIO_EMIO_GPIO_ENABLE + PCW GPIO EMIO GPIO ENABLE + 1 + + + + true + + + + + + PCW_GPIO_EMIO_GPIO_IO + PCW GPIO EMIO GPIO IO + 64 + + + + true + + + + + + PCW_APU_CLK_RATIO_ENABLE + PCW APU CLK RATIO ENABLE + 6:2:1 + + + + true + + + + + + PCW_ENET0_PERIPHERAL_FREQMHZ + PCW ENET0 PERIPHERAL FREQMHZ + 1000 Mbps + + + + true + + + + + + PCW_ENET1_PERIPHERAL_FREQMHZ + PCW ENET1 PERIPHERAL FREQMHZ + 1000 Mbps + + + + false + + + + + + PCW_CPU_PERIPHERAL_CLKSRC + PCW CPU PERIPHERAL CLKSRC + ARM PLL + + + + true + + + + + + PCW_DDR_PERIPHERAL_CLKSRC + PCW DDR PERIPHERAL CLKSRC + DDR PLL + + + + true + + + + + + PCW_SMC_PERIPHERAL_CLKSRC + PCW SMC PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_QSPI_PERIPHERAL_CLKSRC + PCW QSPI PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_SDIO_PERIPHERAL_CLKSRC + PCW SDIO PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_UART_PERIPHERAL_CLKSRC + PCW UART PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_SPI_PERIPHERAL_CLKSRC + PCW SPI PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_CAN_PERIPHERAL_CLKSRC + PCW CAN PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_FCLK0_PERIPHERAL_CLKSRC + PCW FCLK0 PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_FCLK1_PERIPHERAL_CLKSRC + PCW FCLK1 PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_FCLK2_PERIPHERAL_CLKSRC + PCW FCLK2 PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_FCLK3_PERIPHERAL_CLKSRC + PCW FCLK3 PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_ENET0_PERIPHERAL_CLKSRC + PCW ENET0 PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_ENET1_PERIPHERAL_CLKSRC + PCW ENET1 PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_CAN0_PERIPHERAL_CLKSRC + PCW CAN0 PERIPHERAL CLKSRC + External + + + + true + + + + + + PCW_CAN1_PERIPHERAL_CLKSRC + PCW CAN1 PERIPHERAL CLKSRC + External + + + + true + + + + + + PCW_TPIU_PERIPHERAL_CLKSRC + PCW TPIU PERIPHERAL CLKSRC + External + + + + true + + + + + + PCW_TTC0_CLK0_PERIPHERAL_CLKSRC + PCW TTC0 CLK0 PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_TTC0_CLK1_PERIPHERAL_CLKSRC + PCW TTC0 CLK1 PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_TTC0_CLK2_PERIPHERAL_CLKSRC + PCW TTC0 CLK2 PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_TTC1_CLK0_PERIPHERAL_CLKSRC + PCW TTC1 CLK0 PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_TTC1_CLK1_PERIPHERAL_CLKSRC + PCW TTC1 CLK1 PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_TTC1_CLK2_PERIPHERAL_CLKSRC + PCW TTC1 CLK2 PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_WDT_PERIPHERAL_CLKSRC + PCW WDT PERIPHERAL CLKSRC + CPU_1X + + + + true + + + + + + PCW_DCI_PERIPHERAL_CLKSRC + PCW DCI PERIPHERAL CLKSRC + DDR PLL + + + + true + + + + + + PCW_PCAP_PERIPHERAL_CLKSRC + PCW PCAP PERIPHERAL CLKSRC + IO PLL + + + + true + + + + + + PCW_USB_RESET_POLARITY + PCW USB RESET POLARITY + Active Low + + + + true + + + + + + PCW_ENET_RESET_POLARITY + PCW USB RESET POLARITY + Active Low + + + + true + + + + + + PCW_I2C_RESET_POLARITY + PCW USB RESET POLARITY + Active Low + + + + true + + + + + + PCW_MIO_0_PULLUP + PCW MIO 0 PULLUP + enabled + + + + true + + + + + + PCW_MIO_0_IOTYPE + PCW MIO 0 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_0_DIRECTION + PCW MIO 0 DIRECTION + inout + + + + false + + + + + + PCW_MIO_0_SLEW + PCW MIO 0 SLEW + slow + + + + true + + + + + + PCW_MIO_1_PULLUP + PCW MIO 1 PULLUP + enabled + + + + true + + + + + + PCW_MIO_1_IOTYPE + PCW MIO 1 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_1_DIRECTION + PCW MIO 1 DIRECTION + out + + + + false + + + + + + PCW_MIO_1_SLEW + PCW MIO 1 SLEW + slow + + + + true + + + + + + PCW_MIO_2_PULLUP + PCW MIO 2 PULLUP + disabled + + + + false + + + + + + PCW_MIO_2_IOTYPE + PCW MIO 2 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_2_DIRECTION + PCW MIO 2 DIRECTION + inout + + + + false + + + + + + PCW_MIO_2_SLEW + PCW MIO 2 SLEW + slow + + + + true + + + + + + PCW_MIO_3_PULLUP + PCW MIO 3 PULLUP + disabled + + + + false + + + + + + PCW_MIO_3_IOTYPE + PCW MIO 3 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_3_DIRECTION + PCW MIO 3 DIRECTION + inout + + + + false + + + + + + PCW_MIO_3_SLEW + PCW MIO 3 SLEW + slow + + + + true + + + + + + PCW_MIO_4_PULLUP + PCW MIO 4 PULLUP + disabled + + + + false + + + + + + PCW_MIO_4_IOTYPE + PCW MIO 4 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_4_DIRECTION + PCW MIO 4 DIRECTION + inout + + + + false + + + + + + PCW_MIO_4_SLEW + PCW MIO 4 SLEW + slow + + + + true + + + + + + PCW_MIO_5_PULLUP + PCW MIO 5 PULLUP + disabled + + + + false + + + + + + PCW_MIO_5_IOTYPE + PCW MIO 5 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_5_DIRECTION + PCW MIO 5 DIRECTION + inout + + + + false + + + + + + PCW_MIO_5_SLEW + PCW MIO 5 SLEW + slow + + + + true + + + + + + PCW_MIO_6_PULLUP + PCW MIO 6 PULLUP + disabled + + + + false + + + + + + PCW_MIO_6_IOTYPE + PCW MIO 6 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_6_DIRECTION + PCW MIO 6 DIRECTION + out + + + + false + + + + + + PCW_MIO_6_SLEW + PCW MIO 6 SLEW + slow + + + + true + + + + + + PCW_MIO_7_PULLUP + PCW MIO 7 PULLUP + disabled + + + + false + + + + + + PCW_MIO_7_IOTYPE + PCW MIO 7 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_7_DIRECTION + PCW MIO 7 DIRECTION + out + + + + false + + + + + + PCW_MIO_7_SLEW + PCW MIO 7 SLEW + slow + + + + true + + + + + + PCW_MIO_8_PULLUP + PCW MIO 8 PULLUP + disabled + + + + false + + + + + + PCW_MIO_8_IOTYPE + PCW MIO 8 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_8_DIRECTION + PCW MIO 8 DIRECTION + out + + + + false + + + + + + PCW_MIO_8_SLEW + PCW MIO 8 SLEW + slow + + + + true + + + + + + PCW_MIO_9_PULLUP + PCW MIO 9 PULLUP + enabled + + + + true + + + + + + PCW_MIO_9_IOTYPE + PCW MIO 9 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_9_DIRECTION + PCW MIO 9 DIRECTION + inout + + + + false + + + + + + PCW_MIO_9_SLEW + PCW MIO 9 SLEW + slow + + + + true + + + + + + PCW_MIO_10_PULLUP + PCW MIO 10 PULLUP + enabled + + + + true + + + + + + PCW_MIO_10_IOTYPE + PCW MIO 10 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_10_DIRECTION + PCW MIO 10 DIRECTION + in + + + + false + + + + + + PCW_MIO_10_SLEW + PCW MIO 10 SLEW + slow + + + + true + + + + + + PCW_MIO_11_PULLUP + PCW MIO 11 PULLUP + enabled + + + + true + + + + + + PCW_MIO_11_IOTYPE + PCW MIO 11 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_11_DIRECTION + PCW MIO 11 DIRECTION + out + + + + false + + + + + + PCW_MIO_11_SLEW + PCW MIO 11 SLEW + slow + + + + true + + + + + + PCW_MIO_12_PULLUP + PCW MIO 12 PULLUP + enabled + + + + true + + + + + + PCW_MIO_12_IOTYPE + PCW MIO 12 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_12_DIRECTION + PCW MIO 12 DIRECTION + inout + + + + false + + + + + + PCW_MIO_12_SLEW + PCW MIO 12 SLEW + slow + + + + true + + + + + + PCW_MIO_13_PULLUP + PCW MIO 13 PULLUP + enabled + + + + true + + + + + + PCW_MIO_13_IOTYPE + PCW MIO 13 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_13_DIRECTION + PCW MIO 13 DIRECTION + inout + + + + false + + + + + + PCW_MIO_13_SLEW + PCW MIO 13 SLEW + slow + + + + true + + + + + + PCW_MIO_14_PULLUP + PCW MIO 14 PULLUP + enabled + + + + true + + + + + + PCW_MIO_14_IOTYPE + PCW MIO 14 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_14_DIRECTION + PCW MIO 14 DIRECTION + in + + + + false + + + + + + PCW_MIO_14_SLEW + PCW MIO 14 SLEW + slow + + + + true + + + + + + PCW_MIO_15_PULLUP + PCW MIO 15 PULLUP + enabled + + + + true + + + + + + PCW_MIO_15_IOTYPE + PCW MIO 15 IOTYPE + LVCMOS 3.3V + + + + true + + + + + + PCW_MIO_15_DIRECTION + PCW MIO 15 DIRECTION + out + + + + false + + + + + + PCW_MIO_15_SLEW + PCW MIO 15 SLEW + slow + + + + true + + + + + + PCW_MIO_16_PULLUP + PCW MIO 16 PULLUP + enabled + + + + true + + + + + + PCW_MIO_16_IOTYPE + PCW MIO 16 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_16_DIRECTION + PCW MIO 16 DIRECTION + out + + + + false + + + + + + PCW_MIO_16_SLEW + PCW MIO 16 SLEW + slow + + + + true + + + + + + PCW_MIO_17_PULLUP + PCW MIO 17 PULLUP + enabled + + + + true + + + + + + PCW_MIO_17_IOTYPE + PCW MIO 17 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_17_DIRECTION + PCW MIO 17 DIRECTION + out + + + + false + + + + + + PCW_MIO_17_SLEW + PCW MIO 17 SLEW + slow + + + + true + + + + + + PCW_MIO_18_PULLUP + PCW MIO 18 PULLUP + enabled + + + + true + + + + + + PCW_MIO_18_IOTYPE + PCW MIO 18 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_18_DIRECTION + PCW MIO 18 DIRECTION + out + + + + false + + + + + + PCW_MIO_18_SLEW + PCW MIO 18 SLEW + slow + + + + true + + + + + + PCW_MIO_19_PULLUP + PCW MIO 19 PULLUP + enabled + + + + true + + + + + + PCW_MIO_19_IOTYPE + PCW MIO 19 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_19_DIRECTION + PCW MIO 19 DIRECTION + out + + + + false + + + + + + PCW_MIO_19_SLEW + PCW MIO 19 SLEW + slow + + + + true + + + + + + PCW_MIO_20_PULLUP + PCW MIO 20 PULLUP + enabled + + + + true + + + + + + PCW_MIO_20_IOTYPE + PCW MIO 20 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_20_DIRECTION + PCW MIO 20 DIRECTION + out + + + + false + + + + + + PCW_MIO_20_SLEW + PCW MIO 20 SLEW + slow + + + + true + + + + + + PCW_MIO_21_PULLUP + PCW MIO 21 PULLUP + enabled + + + + true + + + + + + PCW_MIO_21_IOTYPE + PCW MIO 21 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_21_DIRECTION + PCW MIO 21 DIRECTION + out + + + + false + + + + + + PCW_MIO_21_SLEW + PCW MIO 21 SLEW + slow + + + + true + + + + + + PCW_MIO_22_PULLUP + PCW MIO 22 PULLUP + enabled + + + + true + + + + + + PCW_MIO_22_IOTYPE + PCW MIO 22 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_22_DIRECTION + PCW MIO 22 DIRECTION + in + + + + false + + + + + + PCW_MIO_22_SLEW + PCW MIO 22 SLEW + slow + + + + true + + + + + + PCW_MIO_23_PULLUP + PCW MIO 23 PULLUP + enabled + + + + true + + + + + + PCW_MIO_23_IOTYPE + PCW MIO 23 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_23_DIRECTION + PCW MIO 23 DIRECTION + in + + + + false + + + + + + PCW_MIO_23_SLEW + PCW MIO 23 SLEW + slow + + + + true + + + + + + PCW_MIO_24_PULLUP + PCW MIO 24 PULLUP + enabled + + + + true + + + + + + PCW_MIO_24_IOTYPE + PCW MIO 24 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_24_DIRECTION + PCW MIO 24 DIRECTION + in + + + + false + + + + + + PCW_MIO_24_SLEW + PCW MIO 24 SLEW + slow + + + + true + + + + + + PCW_MIO_25_PULLUP + PCW MIO 25 PULLUP + enabled + + + + true + + + + + + PCW_MIO_25_IOTYPE + PCW MIO 25 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_25_DIRECTION + PCW MIO 25 DIRECTION + in + + + + false + + + + + + PCW_MIO_25_SLEW + PCW MIO 25 SLEW + slow + + + + true + + + + + + PCW_MIO_26_PULLUP + PCW MIO 26 PULLUP + enabled + + + + true + + + + + + PCW_MIO_26_IOTYPE + PCW MIO 26 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_26_DIRECTION + PCW MIO 26 DIRECTION + in + + + + false + + + + + + PCW_MIO_26_SLEW + PCW MIO 26 SLEW + slow + + + + true + + + + + + PCW_MIO_27_PULLUP + PCW MIO 27 PULLUP + enabled + + + + true + + + + + + PCW_MIO_27_IOTYPE + PCW MIO 27 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_27_DIRECTION + PCW MIO 27 DIRECTION + in + + + + false + + + + + + PCW_MIO_27_SLEW + PCW MIO 27 SLEW + slow + + + + true + + + + + + PCW_MIO_28_PULLUP + PCW MIO 28 PULLUP + enabled + + + + true + + + + + + PCW_MIO_28_IOTYPE + PCW MIO 28 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_28_DIRECTION + PCW MIO 28 DIRECTION + inout + + + + false + + + + + + PCW_MIO_28_SLEW + PCW MIO 28 SLEW + slow + + + + true + + + + + + PCW_MIO_29_PULLUP + PCW MIO 29 PULLUP + enabled + + + + true + + + + + + PCW_MIO_29_IOTYPE + PCW MIO 29 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_29_DIRECTION + PCW MIO 29 DIRECTION + in + + + + false + + + + + + PCW_MIO_29_SLEW + PCW MIO 29 SLEW + slow + + + + true + + + + + + PCW_MIO_30_PULLUP + PCW MIO 30 PULLUP + enabled + + + + true + + + + + + PCW_MIO_30_IOTYPE + PCW MIO 30 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_30_DIRECTION + PCW MIO 30 DIRECTION + out + + + + false + + + + + + PCW_MIO_30_SLEW + PCW MIO 30 SLEW + slow + + + + true + + + + + + PCW_MIO_31_PULLUP + PCW MIO 31 PULLUP + enabled + + + + true + + + + + + PCW_MIO_31_IOTYPE + PCW MIO 31 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_31_DIRECTION + PCW MIO 31 DIRECTION + in + + + + false + + + + + + PCW_MIO_31_SLEW + PCW MIO 31 SLEW + slow + + + + true + + + + + + PCW_MIO_32_PULLUP + PCW MIO 32 PULLUP + enabled + + + + true + + + + + + PCW_MIO_32_IOTYPE + PCW MIO 32 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_32_DIRECTION + PCW MIO 32 DIRECTION + inout + + + + false + + + + + + PCW_MIO_32_SLEW + PCW MIO 32 SLEW + slow + + + + true + + + + + + PCW_MIO_33_PULLUP + PCW MIO 33 PULLUP + enabled + + + + true + + + + + + PCW_MIO_33_IOTYPE + PCW MIO 33 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_33_DIRECTION + PCW MIO 33 DIRECTION + inout + + + + false + + + + + + PCW_MIO_33_SLEW + PCW MIO 33 SLEW + slow + + + + true + + + + + + PCW_MIO_34_PULLUP + PCW MIO 34 PULLUP + enabled + + + + true + + + + + + PCW_MIO_34_IOTYPE + PCW MIO 34 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_34_DIRECTION + PCW MIO 34 DIRECTION + inout + + + + false + + + + + + PCW_MIO_34_SLEW + PCW MIO 34 SLEW + slow + + + + true + + + + + + PCW_MIO_35_PULLUP + PCW MIO 35 PULLUP + enabled + + + + true + + + + + + PCW_MIO_35_IOTYPE + PCW MIO 35 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_35_DIRECTION + PCW MIO 35 DIRECTION + inout + + + + false + + + + + + PCW_MIO_35_SLEW + PCW MIO 35 SLEW + slow + + + + true + + + + + + PCW_MIO_36_PULLUP + PCW MIO 36 PULLUP + enabled + + + + true + + + + + + PCW_MIO_36_IOTYPE + PCW MIO 36 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_36_DIRECTION + PCW MIO 36 DIRECTION + in + + + + false + + + + + + PCW_MIO_36_SLEW + PCW MIO 36 SLEW + slow + + + + true + + + + + + PCW_MIO_37_PULLUP + PCW MIO 37 PULLUP + enabled + + + + true + + + + + + PCW_MIO_37_IOTYPE + PCW MIO 37 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_37_DIRECTION + PCW MIO 37 DIRECTION + inout + + + + false + + + + + + PCW_MIO_37_SLEW + PCW MIO 37 SLEW + slow + + + + true + + + + + + PCW_MIO_38_PULLUP + PCW MIO 38 PULLUP + enabled + + + + true + + + + + + PCW_MIO_38_IOTYPE + PCW MIO 38 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_38_DIRECTION + PCW MIO 38 DIRECTION + inout + + + + false + + + + + + PCW_MIO_38_SLEW + PCW MIO 38 SLEW + slow + + + + true + + + + + + PCW_MIO_39_PULLUP + PCW MIO 39 PULLUP + enabled + + + + true + + + + + + PCW_MIO_39_IOTYPE + PCW MIO 39 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_39_DIRECTION + PCW MIO 39 DIRECTION + inout + + + + false + + + + + + PCW_MIO_39_SLEW + PCW MIO 39 SLEW + slow + + + + true + + + + + + PCW_MIO_40_PULLUP + PCW MIO 40 PULLUP + enabled + + + + true + + + + + + PCW_MIO_40_IOTYPE + PCW MIO 40 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_40_DIRECTION + PCW MIO 40 DIRECTION + inout + + + + false + + + + + + PCW_MIO_40_SLEW + PCW MIO 40 SLEW + slow + + + + true + + + + + + PCW_MIO_41_PULLUP + PCW MIO 41 PULLUP + enabled + + + + true + + + + + + PCW_MIO_41_IOTYPE + PCW MIO 41 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_41_DIRECTION + PCW MIO 41 DIRECTION + inout + + + + false + + + + + + PCW_MIO_41_SLEW + PCW MIO 41 SLEW + slow + + + + true + + + + + + PCW_MIO_42_PULLUP + PCW MIO 42 PULLUP + enabled + + + + true + + + + + + PCW_MIO_42_IOTYPE + PCW MIO 42 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_42_DIRECTION + PCW MIO 42 DIRECTION + inout + + + + false + + + + + + PCW_MIO_42_SLEW + PCW MIO 42 SLEW + slow + + + + true + + + + + + PCW_MIO_43_PULLUP + PCW MIO 43 PULLUP + enabled + + + + true + + + + + + PCW_MIO_43_IOTYPE + PCW MIO 43 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_43_DIRECTION + PCW MIO 43 DIRECTION + inout + + + + false + + + + + + PCW_MIO_43_SLEW + PCW MIO 43 SLEW + slow + + + + true + + + + + + PCW_MIO_44_PULLUP + PCW MIO 44 PULLUP + enabled + + + + true + + + + + + PCW_MIO_44_IOTYPE + PCW MIO 44 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_44_DIRECTION + PCW MIO 44 DIRECTION + inout + + + + false + + + + + + PCW_MIO_44_SLEW + PCW MIO 44 SLEW + slow + + + + true + + + + + + PCW_MIO_45_PULLUP + PCW MIO 45 PULLUP + enabled + + + + true + + + + + + PCW_MIO_45_IOTYPE + PCW MIO 45 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_45_DIRECTION + PCW MIO 45 DIRECTION + inout + + + + false + + + + + + PCW_MIO_45_SLEW + PCW MIO 45 SLEW + slow + + + + true + + + + + + PCW_MIO_46_PULLUP + PCW MIO 46 PULLUP + enabled + + + + true + + + + + + PCW_MIO_46_IOTYPE + PCW MIO 46 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_46_DIRECTION + PCW MIO 46 DIRECTION + in + + + + false + + + + + + PCW_MIO_46_SLEW + PCW MIO 46 SLEW + slow + + + + true + + + + + + PCW_MIO_47_PULLUP + PCW MIO 47 PULLUP + enabled + + + + true + + + + + + PCW_MIO_47_IOTYPE + PCW MIO 47 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_47_DIRECTION + PCW MIO 47 DIRECTION + in + + + + false + + + + + + PCW_MIO_47_SLEW + PCW MIO 47 SLEW + slow + + + + true + + + + + + PCW_MIO_48_PULLUP + PCW MIO 48 PULLUP + enabled + + + + true + + + + + + PCW_MIO_48_IOTYPE + PCW MIO 48 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_48_DIRECTION + PCW MIO 48 DIRECTION + out + + + + false + + + + + + PCW_MIO_48_SLEW + PCW MIO 48 SLEW + slow + + + + true + + + + + + PCW_MIO_49_PULLUP + PCW MIO 49 PULLUP + enabled + + + + true + + + + + + PCW_MIO_49_IOTYPE + PCW MIO 49 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_49_DIRECTION + PCW MIO 49 DIRECTION + in + + + + false + + + + + + PCW_MIO_49_SLEW + PCW MIO 49 SLEW + slow + + + + true + + + + + + PCW_MIO_50_PULLUP + PCW MIO 50 PULLUP + enabled + + + + true + + + + + + PCW_MIO_50_IOTYPE + PCW MIO 50 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_50_DIRECTION + PCW MIO 50 DIRECTION + inout + + + + false + + + + + + PCW_MIO_50_SLEW + PCW MIO 50 SLEW + slow + + + + true + + + + + + PCW_MIO_51_PULLUP + PCW MIO 51 PULLUP + disabled + + + + true + + + + + + PCW_MIO_51_IOTYPE + PCW MIO 51 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_51_DIRECTION + PCW MIO 51 DIRECTION + out + + + + false + + + + + + PCW_MIO_51_SLEW + PCW MIO 51 SLEW + slow + + + + true + + + + + + PCW_MIO_52_PULLUP + PCW MIO 52 PULLUP + enabled + + + + true + + + + + + PCW_MIO_52_IOTYPE + PCW MIO 52 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_52_DIRECTION + PCW MIO 52 DIRECTION + out + + + + false + + + + + + PCW_MIO_52_SLEW + PCW MIO 52 SLEW + slow + + + + true + + + + + + PCW_MIO_53_PULLUP + PCW MIO 53 PULLUP + enabled + + + + true + + + + + + PCW_MIO_53_IOTYPE + PCW MIO 53 IOTYPE + LVCMOS 1.8V + + + + true + + + + + + PCW_MIO_53_DIRECTION + PCW MIO 53 DIRECTION + inout + + + + false + + + + + + PCW_MIO_53_SLEW + PCW MIO 53 SLEW + slow + + + + true + + + + + + preset + preset + None + + + PCW_UIPARAM_GENERATE_SUMMARY + PCW UIPARAM GENERATE SUMMARY + NA + + + PCW_MIO_TREE_PERIPHERALS + PCW MIO TREE PERIPHERALS + GPIO#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#Quad SPI Flash#GPIO#Quad SPI Flash#GPIO#GPIO#GPIO#I2C 1#I2C 1#CAN 0#CAN 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#Enet 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#SD 0#UART 1#UART 1#GPIO#USB Reset#Enet 0#Enet 0 + + + + true + + + + + + PCW_MIO_TREE_SIGNALS + PCW MIO TREE SIGNALS + gpio[0]#qspi0_ss_b#qspi0_io[0]#qspi0_io[1]#qspi0_io[2]#qspi0_io[3]#qspi0_sclk#gpio[7]#qspi_fbclk#gpio[9]#gpio[10]#gpio[11]#scl#sda#rx#tx#tx_clk#txd[0]#txd[1]#txd[2]#txd[3]#tx_ctl#rx_clk#rxd[0]#rxd[1]#rxd[2]#rxd[3]#rx_ctl#data[4]#dir#stp#nxt#data[0]#data[1]#data[2]#data[3]#clk#data[5]#data[6]#data[7]#clk#cmd#data[0]#data[1]#data[2]#data[3]#cd#wp#tx#rx#gpio[50]#reset#mdc#mdio + + + + true + + + + + + PCW_PS7_SI_REV + PCW PS7 SI REV + PRODUCTION + + + PCW_FPGA_FCLK0_ENABLE + PCW FPGA FCLK0 ENABLE + 1 + + + + optional + true + + + + + + PCW_FPGA_FCLK1_ENABLE + PCW FPGA FCLK1 ENABLE + 1 + + + + optional + true + + + + + + PCW_FPGA_FCLK2_ENABLE + PCW FPGA FCLK2 ENABLE + 1 + + + + optional + true + + + + + + PCW_FPGA_FCLK3_ENABLE + PCW FPGA FCLK3 ENABLE + 1 + + + + optional + true + + + + + + PCW_NOR_SRAM_CS0_T_TR + PCW NOR SRAM CS0 T TR + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS0_T_PC + PCW NOR SRAM CS0 T PC + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS0_T_WP + PCW NOR SRAM CS0 T WP + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS0_T_CEOE + PCW NOR SRAM CS0 T CEOE + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS0_T_WC + PCW NOR SRAM CS0 T WC + 2 + + + + true + + + + + + PCW_NOR_SRAM_CS0_T_RC + PCW NOR SRAM CS0 T RC + 2 + + + + true + + + + + + PCW_NOR_SRAM_CS0_WE_TIME + PCW NOR SRAM CS0 WE TIME + 0 + + + + true + + + + + + PCW_NOR_SRAM_CS1_T_TR + PCW NOR SRAM CS1 T TR + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS1_T_PC + PCW NOR SRAM CS1 T PC + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS1_T_WP + PCW NOR SRAM CS1 T WP + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS1_T_CEOE + PCW NOR SRAM CS1 T CEOE + 1 + + + + true + + + + + + PCW_NOR_SRAM_CS1_T_WC + PCW NOR SRAM CS1 T WC + 2 + + + + true + + + + + + PCW_NOR_SRAM_CS1_T_RC + PCW NOR SRAM CS1 T RC + 2 + + + + true + + + + + + PCW_NOR_SRAM_CS1_WE_TIME + PCW NOR SRAM CS1 WE TIME + 0 + + + + true + + + + + + PCW_NOR_CS0_T_TR + PCW NOR CS0 T TR + 1 + + + + true + + + + + + PCW_NOR_CS0_T_PC + PCW NOR CS0 T PC + 1 + + + + true + + + + + + PCW_NOR_CS0_T_WP + PCW NOR CS0 T WP + 1 + + + + true + + + + + + PCW_NOR_CS0_T_CEOE + PCW NOR CS0 T CEOE + 1 + + + + true + + + + + + PCW_NOR_CS0_T_WC + PCW NOR CS0 T WC + 2 + + + + true + + + + + + PCW_NOR_CS0_T_RC + PCW NOR CS0 T RC + 2 + + + + true + + + + + + PCW_NOR_CS0_WE_TIME + PCW NOR CS0 WE TIME + 0 + + + + true + + + + + + PCW_NOR_CS1_T_TR + PCW NOR CS1 T TR + 1 + + + + true + + + + + + PCW_NOR_CS1_T_PC + PCW NOR CS1 T PC + 1 + + + + true + + + + + + PCW_NOR_CS1_T_WP + PCW NOR CS1 T WP + 1 + + + + true + + + + + + PCW_NOR_CS1_T_CEOE + PCW NOR CS1 T CEOE + 1 + + + + true + + + + + + PCW_NOR_CS1_T_WC + PCW NOR CS1 T WC + 2 + + + + true + + + + + + PCW_NOR_CS1_T_RC + PCW NOR CS1 T RC + 2 + + + + true + + + + + + PCW_NOR_CS1_WE_TIME + PCW NOR CS1 WE TIME + 0 + + + + true + + + + + + PCW_NAND_CYCLES_T_RR + PCW NAND CYCLES T RR + 1 + + + + true + + + + + + PCW_NAND_CYCLES_T_AR + PCW NAND CYCLES T AR + 1 + + + + true + + + + + + PCW_NAND_CYCLES_T_CLR + PCW NAND CYCLES T CLR + 1 + + + + true + + + + + + PCW_NAND_CYCLES_T_WP + PCW NAND CYCLES T WP + 1 + + + + true + + + + + + PCW_NAND_CYCLES_T_REA + PCW NAND CYCLES T REA + 1 + + + + true + + + + + + PCW_NAND_CYCLES_T_WC + PCW NAND CYCLES T WC + 2 + + + + true + + + + + + PCW_NAND_CYCLES_T_RC + PCW NAND CYCLES T RC + 2 + + + + true + + + + + + PCW_SMC_CYCLE_T0 + PCW SMC CYCLE T0 + NA + + + PCW_SMC_CYCLE_T1 + PCW SMC CYCLE T1 + NA + + + PCW_SMC_CYCLE_T2 + PCW SMC CYCLE T2 + NA + + + PCW_SMC_CYCLE_T3 + PCW SMC CYCLE T3 + NA + + + PCW_SMC_CYCLE_T4 + PCW SMC CYCLE T4 + NA + + + PCW_SMC_CYCLE_T5 + PCW SMC CYCLE T5 + NA + + + PCW_SMC_CYCLE_T6 + PCW SMC CYCLE T6 + NA + + + PCW_PACKAGE_NAME + PCW PACKAGE NAME + clg400 + + + Component_Name + z_turn_processing_system7_0_0 + + + + + + azynq + qzynq + zynq + + + /Embedded Processing/Processor/ + + ZYNQ7 Processing System + 1 + + xilinx.com:ip:processing_system7:5.01 + xilinx.com:ip:processing_system7:5.2 + xilinx.com:ip:processing_system7:5.3 + xilinx.com:ip:processing_system7:5.4 + + 2015-06-23T16:16:11Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2015.2 + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.upgrade_log new file mode 100644 index 0000000..7ac9eb5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:15 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_ps_7_axi_periph_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_ps_7_axi_periph_0 (xilinx.com:ip:axi_interconnect:2.1 (Rev. 6)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xci new file mode 100644 index 0000000..399ed8a --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xci @@ -0,0 +1,341 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_ps_7_axi_periph_0 + + + 1 + 1 + 0 + 0 + 0 + 32 + 0 + 2 + 2 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + z_turn_ps_7_axi_periph_0 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 6 + GLOBAL + + . + ../../../../ipshared + IP_Integrator_AppCore + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xml new file mode 100644 index 0000000..91e4100 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_0/z_turn_ps_7_axi_periph_0.xml @@ -0,0 +1,4459 @@ + + + xilinx.com + customized_ip + z_turn_ps_7_axi_periph_0 + 1.0 + + + + choices_0 + 0 + 1 + 2 + + + choices_1 + 0 + 1 + + + choices_2 + 0 + 1 + + + choices_3 + 32 + 64 + 128 + 256 + 512 + 1024 + + + choices_4 + 2 + 4 + 8 + 16 + 32 + 64 + + + choices_5 + 2 + 4 + 8 + 16 + 32 + 64 + + + choices_6 + 0 + 1 + 3 + 4 + + + choices_7 + 0 + 1 + 3 + 4 + + + choices_8 + 0 + 1 + 3 + 4 + + + choices_9 + 0 + 1 + 3 + 4 + + + choices_10 + 0 + 1 + 3 + 4 + + + choices_11 + 0 + 1 + 3 + 4 + + + choices_12 + 0 + 1 + 3 + 4 + + + choices_13 + 0 + 1 + 3 + 4 + + + choices_14 + 0 + 1 + 3 + 4 + + + choices_15 + 0 + 1 + 3 + 4 + + + choices_16 + 0 + 1 + 3 + 4 + + + choices_17 + 0 + 1 + 3 + 4 + + + choices_18 + 0 + 1 + 3 + 4 + + + choices_19 + 0 + 1 + 3 + 4 + + + choices_20 + 0 + 1 + 3 + 4 + + + choices_21 + 0 + 1 + 3 + 4 + + + choices_22 + 0 + 1 + 3 + 4 + + + choices_23 + 0 + 1 + 3 + 4 + + + choices_24 + 0 + 1 + 3 + 4 + + + choices_25 + 0 + 1 + 3 + 4 + + + choices_26 + 0 + 1 + 3 + 4 + + + choices_27 + 0 + 1 + 3 + 4 + + + choices_28 + 0 + 1 + 3 + 4 + + + choices_29 + 0 + 1 + 3 + 4 + + + choices_30 + 0 + 1 + 3 + 4 + + + choices_31 + 0 + 1 + 3 + 4 + + + choices_32 + 0 + 1 + 3 + 4 + + + choices_33 + 0 + 1 + 3 + 4 + + + choices_34 + 0 + 1 + 3 + 4 + + + choices_35 + 0 + 1 + 3 + 4 + + + choices_36 + 0 + 1 + 3 + 4 + + + choices_37 + 0 + 1 + 3 + 4 + + + choices_38 + 0 + 1 + 3 + 4 + + + choices_39 + 0 + 1 + 3 + 4 + + + choices_40 + 0 + 1 + 3 + 4 + + + choices_41 + 0 + 1 + 3 + 4 + + + choices_42 + 0 + 1 + 3 + 4 + + + choices_43 + 0 + 1 + 3 + 4 + + + choices_44 + 0 + 1 + 3 + 4 + + + choices_45 + 0 + 1 + 3 + 4 + + + choices_46 + 0 + 1 + 3 + 4 + + + choices_47 + 0 + 1 + 3 + 4 + + + choices_48 + 0 + 1 + 3 + 4 + + + choices_49 + 0 + 1 + 3 + 4 + + + choices_50 + 0 + 1 + 3 + 4 + + + choices_51 + 0 + 1 + 3 + 4 + + + choices_52 + 0 + 1 + 3 + 4 + + + choices_53 + 0 + 1 + 3 + 4 + + + choices_54 + 0 + 1 + 3 + 4 + + + choices_55 + 0 + 1 + 3 + 4 + + + choices_56 + 0 + 1 + 3 + 4 + + + choices_57 + 0 + 1 + 3 + 4 + + + choices_58 + 0 + 1 + 3 + 4 + + + choices_59 + 0 + 1 + 3 + 4 + + + choices_60 + 0 + 1 + 3 + 4 + + + choices_61 + 0 + 1 + 3 + 4 + + + choices_62 + 0 + 1 + 3 + 4 + + + choices_63 + 0 + 1 + 3 + 4 + + + choices_64 + 0 + 1 + 3 + 4 + + + choices_65 + 0 + 1 + 3 + 4 + + + choices_66 + 0 + 1 + 3 + 4 + + + choices_67 + 0 + 1 + 3 + 4 + + + choices_68 + 0 + 1 + 3 + 4 + + + choices_69 + 0 + 1 + 3 + 4 + + + choices_70 + 0 + 1 + 2 + + + choices_71 + 0 + 1 + 2 + + + choices_72 + 0 + 1 + 2 + + + choices_73 + 0 + 1 + 2 + + + choices_74 + 0 + 1 + 2 + + + choices_75 + 0 + 1 + 2 + + + choices_76 + 0 + 1 + 2 + + + choices_77 + 0 + 1 + 2 + + + choices_78 + 0 + 1 + 2 + + + choices_79 + 0 + 1 + 2 + + + choices_80 + 0 + 1 + 2 + + + choices_81 + 0 + 1 + 2 + + + choices_82 + 0 + 1 + 2 + + + choices_83 + 0 + 1 + 2 + + + choices_84 + 0 + 1 + 2 + + + choices_85 + 0 + 1 + 2 + + + choices_86 + 0 + 1 + 2 + + + choices_87 + 0 + 1 + 2 + + + choices_88 + 0 + 1 + 2 + + + choices_89 + 0 + 1 + 2 + + + choices_90 + 0 + 1 + 2 + + + choices_91 + 0 + 1 + 2 + + + choices_92 + 0 + 1 + 2 + + + choices_93 + 0 + 1 + 2 + + + choices_94 + 0 + 1 + 2 + + + choices_95 + 0 + 1 + 2 + + + choices_96 + 0 + 1 + 2 + + + choices_97 + 0 + 1 + 2 + + + choices_98 + 0 + 1 + 2 + + + choices_99 + 0 + 1 + 2 + + + choices_100 + 0 + 1 + 2 + + + choices_101 + 0 + 1 + 2 + + + choices_102 + 0 + 1 + 2 + + + choices_103 + 0 + 1 + 2 + + + choices_104 + 0 + 1 + 2 + + + choices_105 + 0 + 1 + 2 + + + choices_106 + 0 + 1 + 2 + + + choices_107 + 0 + 1 + 2 + + + choices_108 + 0 + 1 + 2 + + + choices_109 + 0 + 1 + 2 + + + choices_110 + 0 + 1 + 2 + + + choices_111 + 0 + 1 + 2 + + + choices_112 + 0 + 1 + 2 + + + choices_113 + 0 + 1 + 2 + + + choices_114 + 0 + 1 + 2 + + + choices_115 + 0 + 1 + 2 + + + choices_116 + 0 + 1 + 2 + + + choices_117 + 0 + 1 + 2 + + + choices_118 + 0 + 1 + 2 + + + choices_119 + 0 + 1 + 2 + + + choices_120 + 0 + 1 + 2 + + + choices_121 + 0 + 1 + 2 + + + choices_122 + 0 + 1 + 2 + + + choices_123 + 0 + 1 + 2 + + + choices_124 + 0 + 1 + 2 + + + choices_125 + 0 + 1 + 2 + + + choices_126 + 0 + 1 + 2 + + + choices_127 + 0 + 1 + 2 + + + choices_128 + 0 + 1 + 2 + + + choices_129 + 0 + 1 + 2 + + + choices_130 + 0 + 1 + 2 + + + choices_131 + 0 + 1 + 2 + + + choices_132 + 0 + 1 + 2 + + + choices_133 + 0 + 1 + 2 + + + choices_134 + 0 + 1 + 3 + 4 + + + choices_135 + 0 + 1 + 3 + 4 + + + choices_136 + 0 + 1 + 3 + 4 + + + choices_137 + 0 + 1 + 3 + 4 + + + choices_138 + 0 + 1 + 3 + 4 + + + choices_139 + 0 + 1 + 3 + 4 + + + choices_140 + 0 + 1 + 3 + 4 + + + choices_141 + 0 + 1 + 3 + 4 + + + choices_142 + 0 + 1 + 3 + 4 + + + choices_143 + 0 + 1 + 3 + 4 + + + choices_144 + 0 + 1 + 3 + 4 + + + choices_145 + 0 + 1 + 3 + 4 + + + choices_146 + 0 + 1 + 3 + 4 + + + choices_147 + 0 + 1 + 3 + 4 + + + choices_148 + 0 + 1 + 3 + 4 + + + choices_149 + 0 + 1 + 3 + 4 + + + choices_150 + 0 + 1 + 2 + + + choices_151 + 0 + 1 + 2 + + + choices_152 + 0 + 1 + 2 + + + choices_153 + 0 + 1 + 2 + + + choices_154 + 0 + 1 + 2 + + + choices_155 + 0 + 1 + 2 + + + choices_156 + 0 + 1 + 2 + + + choices_157 + 0 + 1 + 2 + + + choices_158 + 0 + 1 + 2 + + + choices_159 + 0 + 1 + 2 + + + choices_160 + 0 + 1 + 2 + + + choices_161 + 0 + 1 + 2 + + + choices_162 + 0 + 1 + 2 + + + choices_163 + 0 + 1 + 2 + + + choices_164 + 0 + 1 + 2 + + + choices_165 + 0 + 1 + 2 + + + choices_166 + 0 + 1 + + + choices_167 + 0 + 1 + + + choices_168 + 0 + 1 + + + choices_169 + 0 + 1 + + + choices_170 + 0 + 1 + + + choices_171 + 0 + 1 + + + choices_172 + 0 + 1 + + + choices_173 + 0 + 1 + + + choices_174 + 0 + 1 + + + choices_175 + 0 + 1 + + + choices_176 + 0 + 1 + + + choices_177 + 0 + 1 + + + choices_178 + 0 + 1 + + + choices_179 + 0 + 1 + + + choices_180 + 0 + 1 + + + choices_181 + 0 + 1 + + + choices_182 + 0 + 1 + + + choices_183 + 0 + 1 + + + choices_184 + 0 + 1 + + + choices_185 + 0 + 1 + + + choices_186 + 0 + 1 + + + choices_187 + 0 + 1 + + + choices_188 + 0 + 1 + + + choices_189 + 0 + 1 + + + choices_190 + 0 + 1 + + + choices_191 + 0 + 1 + + + choices_192 + 0 + 1 + + + choices_193 + 0 + 1 + + + choices_194 + 0 + 1 + + + choices_195 + 0 + 1 + + + choices_196 + 0 + 1 + + + choices_197 + 0 + 1 + + + choices_198 + 0 + 1 + + + choices_199 + 0 + 1 + + + choices_200 + 0 + 1 + + + choices_201 + 0 + 1 + + + choices_202 + 0 + 1 + + + choices_203 + 0 + 1 + + + choices_204 + 0 + 1 + + + choices_205 + 0 + 1 + + + choices_206 + 0 + 1 + + + choices_207 + 0 + 1 + + + choices_208 + 0 + 1 + + + choices_209 + 0 + 1 + + + choices_210 + 0 + 1 + + + choices_211 + 0 + 1 + + + choices_212 + 0 + 1 + + + choices_213 + 0 + 1 + + + choices_214 + 0 + 1 + + + choices_215 + 0 + 1 + + + choices_216 + 0 + 1 + + + choices_217 + 0 + 1 + + + choices_218 + 0 + 1 + + + choices_219 + 0 + 1 + + + choices_220 + 0 + 1 + + + choices_221 + 0 + 1 + + + choices_222 + 0 + 1 + + + choices_223 + 0 + 1 + + + choices_224 + 0 + 1 + + + choices_225 + 0 + 1 + + + choices_226 + 0 + 1 + + + choices_227 + 0 + 1 + + + choices_228 + 0 + 1 + + + choices_229 + 0 + 1 + + + choices_230 + 0 + 1 + + + choices_231 + 0 + 1 + + + choices_232 + 0 + 1 + + + choices_233 + 0 + 1 + + + choices_234 + 0 + 1 + + + choices_235 + 0 + 1 + + + choices_236 + 0 + 1 + + + choices_237 + 0 + 1 + + + choices_238 + 0 + 1 + + + choices_239 + 0 + 1 + + + choices_240 + 0 + 1 + + + choices_241 + 0 + 1 + + + choices_242 + 0 + 1 + + + choices_243 + 0 + 1 + + + choices_244 + 0 + 1 + + + choices_245 + 0 + 1 + + + choices_246 + 0 + 1 + + + choices_247 + 0 + 1 + + + choices_248 + 0 + 1 + + + choices_249 + 0 + 1 + + + choices_250 + 0 + 1 + + + choices_251 + 0 + 1 + + + choices_252 + 0 + 1 + + + choices_253 + 0 + 1 + + + choices_254 + 0 + 1 + + + choices_255 + 0 + 1 + + + choices_256 + 0 + 1 + + + choices_257 + 0 + 1 + + + choices_258 + 0 + 1 + + + choices_259 + 0 + 1 + + + choices_260 + 0 + 1 + + + choices_261 + 0 + 1 + + + choices_262 + 0 + 1 + + + choices_263 + 0 + 1 + + + choices_264 + 0 + 1 + + + choices_265 + 0 + 1 + + + choices_266 + 0 + 1 + + + choices_267 + 0 + 1 + + + choices_268 + 0 + 1 + + + choices_269 + 0 + 1 + + + choices_270 + 0 + 1 + + + choices_271 + 0 + 1 + + + choices_272 + 0 + 1 + + + choices_273 + 0 + 1 + + + choices_274 + 0 + 1 + + + choices_275 + 0 + 1 + + + choices_276 + 0 + 1 + + + choices_277 + 0 + 1 + + + choices_278 + 0 + 1 + + + choices_279 + 0 + 1 + + + choices_280 + 0 + 1 + + + choices_281 + 0 + 1 + + + choices_282 + 0 + 1 + + + choices_283 + 0 + 1 + + + choices_284 + 0 + 1 + + + choices_285 + 0 + 1 + + + choices_286 + 0 + 1 + + + choices_287 + 0 + 1 + + + choices_288 + 0 + 1 + + + choices_289 + 0 + 1 + + + choices_290 + 0 + 1 + + + choices_291 + 0 + 1 + + + choices_292 + 0 + 1 + + + choices_293 + 0 + 1 + + + The AXI Interconnect IP connects one or more AXI memory-mapped master devices to one or more AXI memory mapped slave devices + + + NUM_SI + Number of Slave Interfaces + 1 + + + NUM_MI + Number of Master Interfaces + 1 + + + STRATEGY + Interconnect Optimization Strategy + 0 + + + ENABLE_ADVANCED_OPTIONS + Enable Advanced Configuration Options + 0 + + + ENABLE_PROTOCOL_CHECKERS + Enable Protocol Checkers and mark interfaces for debug + 0 + + + XBAR_DATA_WIDTH + Data Width of the AXI Crossbar + 32 + + + PCHK_WAITS + Maximum number of idle cycles for READY monitoring + 0 + + + PCHK_MAX_RD_BURSTS + Maximum outstanding READ Transactions per ID + 2 + + + PCHK_MAX_WR_BURSTS + Maximum outstanding WRITE Transactions per ID + 2 + + + SYNCHRONIZATION_STAGES + Synchronization Stages + 2 + + + M00_HAS_REGSLICE + Enable Register Slice on interface M00_AXI + 0 + + + M01_HAS_REGSLICE + Enable Register Slice on interface M01_AXI + 0 + + + M02_HAS_REGSLICE + Enable Register Slice on interface M02_AXI + 0 + + + M03_HAS_REGSLICE + Enable Register Slice on interface M03_AXI + 0 + + + M04_HAS_REGSLICE + Enable Register Slice on interface M04_AXI + 0 + + + M05_HAS_REGSLICE + Enable Register Slice on interface M05_AXI + 0 + + + M06_HAS_REGSLICE + Enable Register Slice on interface M06_AXI + 0 + + + M07_HAS_REGSLICE + Enable Register Slice on interface M07_AXI + 0 + + + M08_HAS_REGSLICE + Enable Register Slice on interface M08_AXI + 0 + + + M09_HAS_REGSLICE + Enable Register Slice on interface M09_AXI + 0 + + + M10_HAS_REGSLICE + Enable Register Slice on interface M10_AXI + 0 + + + M11_HAS_REGSLICE + Enable Register Slice on interface M11_AXI + 0 + + + M12_HAS_REGSLICE + Enable Register Slice on interface M12_AXI + 0 + + + M13_HAS_REGSLICE + Enable Register Slice on interface M13_AXI + 0 + + + M14_HAS_REGSLICE + Enable Register Slice on interface M14_AXI + 0 + + + M15_HAS_REGSLICE + Enable Register Slice on interface M15_AXI + 0 + + + M16_HAS_REGSLICE + Enable Register Slice on interface M16_AXI + 0 + + + M17_HAS_REGSLICE + Enable Register Slice on interface M17_AXI + 0 + + + M18_HAS_REGSLICE + Enable Register Slice on interface M18_AXI + 0 + + + M19_HAS_REGSLICE + Enable Register Slice on interface M19_AXI + 0 + + + M20_HAS_REGSLICE + Enable Register Slice on interface M20_AXI + 0 + + + M21_HAS_REGSLICE + Enable Register Slice on interface M21_AXI + 0 + + + M22_HAS_REGSLICE + Enable Register Slice on interface M22_AXI + 0 + + + M23_HAS_REGSLICE + Enable Register Slice on interface M23_AXI + 0 + + + M24_HAS_REGSLICE + Enable Register Slice on interface M24_AXI + 0 + + + M25_HAS_REGSLICE + Enable Register Slice on interface M25_AXI + 0 + + + M26_HAS_REGSLICE + Enable Register Slice on interface M26_AXI + 0 + + + M27_HAS_REGSLICE + Enable Register Slice on interface M27_AXI + 0 + + + M28_HAS_REGSLICE + Enable Register Slice on interface M28_AXI + 0 + + + M29_HAS_REGSLICE + Enable Register Slice on interface M29_AXI + 0 + + + M30_HAS_REGSLICE + Enable Register Slice on interface M30_AXI + 0 + + + M31_HAS_REGSLICE + Enable Register Slice on interface M31_AXI + 0 + + + M32_HAS_REGSLICE + Enable Register Slice on interface M32_AXI + 0 + + + M33_HAS_REGSLICE + Enable Register Slice on interface M33_AXI + 0 + + + M34_HAS_REGSLICE + Enable Register Slice on interface M34_AXI + 0 + + + M35_HAS_REGSLICE + Enable Register Slice on interface M35_AXI + 0 + + + M36_HAS_REGSLICE + Enable Register Slice on interface M36_AXI + 0 + + + M37_HAS_REGSLICE + Enable Register Slice on interface M37_AXI + 0 + + + M38_HAS_REGSLICE + Enable Register Slice on interface M38_AXI + 0 + + + M39_HAS_REGSLICE + Enable Register Slice on interface M39_AXI + 0 + + + M40_HAS_REGSLICE + Enable Register Slice on interface M40_AXI + 0 + + + M41_HAS_REGSLICE + Enable Register Slice on interface M41_AXI + 0 + + + M42_HAS_REGSLICE + Enable Register Slice on interface M42_AXI + 0 + + + M43_HAS_REGSLICE + Enable Register Slice on interface M43_AXI + 0 + + + M44_HAS_REGSLICE + Enable Register Slice on interface M44_AXI + 0 + + + M45_HAS_REGSLICE + Enable Register Slice on interface M45_AXI + 0 + + + M46_HAS_REGSLICE + Enable Register Slice on interface M46_AXI + 0 + + + M47_HAS_REGSLICE + Enable Register Slice on interface M47_AXI + 0 + + + M48_HAS_REGSLICE + Enable Register Slice on interface M48_AXI + 0 + + + M49_HAS_REGSLICE + Enable Register Slice on interface M49_AXI + 0 + + + M50_HAS_REGSLICE + Enable Register Slice on interface M50_AXI + 0 + + + M51_HAS_REGSLICE + Enable Register Slice on interface M51_AXI + 0 + + + M52_HAS_REGSLICE + Enable Register Slice on interface M52_AXI + 0 + + + M53_HAS_REGSLICE + Enable Register Slice on interface M53_AXI + 0 + + + M54_HAS_REGSLICE + Enable Register Slice on interface M54_AXI + 0 + + + M55_HAS_REGSLICE + Enable Register Slice on interface M55_AXI + 0 + + + M56_HAS_REGSLICE + Enable Register Slice on interface M56_AXI + 0 + + + M57_HAS_REGSLICE + Enable Register Slice on interface M57_AXI + 0 + + + M58_HAS_REGSLICE + Enable Register Slice on interface M58_AXI + 0 + + + M59_HAS_REGSLICE + Enable Register Slice on interface M59_AXI + 0 + + + M60_HAS_REGSLICE + Enable Register Slice on interface M60_AXI + 0 + + + M61_HAS_REGSLICE + Enable Register Slice on interface M61_AXI + 0 + + + M62_HAS_REGSLICE + Enable Register Slice on interface M62_AXI + 0 + + + M63_HAS_REGSLICE + Enable Register Slice on interface M63_AXI + 0 + + + M00_HAS_DATA_FIFO + Enable Data FIFO on interface M00_AXI + 0 + + + M01_HAS_DATA_FIFO + Enable Data FIFO on interface M01_AXI + 0 + + + M02_HAS_DATA_FIFO + Enable Data FIFO on interface M02_AXI + 0 + + + M03_HAS_DATA_FIFO + Enable Data FIFO on interface M03_AXI + 0 + + + M04_HAS_DATA_FIFO + Enable Data FIFO on interface M04_AXI + 0 + + + M05_HAS_DATA_FIFO + Enable Data FIFO on interface M05_AXI + 0 + + + M06_HAS_DATA_FIFO + Enable Data FIFO on interface M06_AXI + 0 + + + M07_HAS_DATA_FIFO + Enable Data FIFO on interface M07_AXI + 0 + + + M08_HAS_DATA_FIFO + Enable Data FIFO on interface M08_AXI + 0 + + + M09_HAS_DATA_FIFO + Enable Data FIFO on interface M09_AXI + 0 + + + M10_HAS_DATA_FIFO + Enable Data FIFO on interface M10_AXI + 0 + + + M11_HAS_DATA_FIFO + Enable Data FIFO on interface M11_AXI + 0 + + + M12_HAS_DATA_FIFO + Enable Data FIFO on interface M12_AXI + 0 + + + M13_HAS_DATA_FIFO + Enable Data FIFO on interface M13_AXI + 0 + + + M14_HAS_DATA_FIFO + Enable Data FIFO on interface M14_AXI + 0 + + + M15_HAS_DATA_FIFO + Enable Data FIFO on interface M15_AXI + 0 + + + M16_HAS_DATA_FIFO + Enable Data FIFO on interface M16_AXI + 0 + + + M17_HAS_DATA_FIFO + Enable Data FIFO on interface M17_AXI + 0 + + + M18_HAS_DATA_FIFO + Enable Data FIFO on interface M18_AXI + 0 + + + M19_HAS_DATA_FIFO + Enable Data FIFO on interface M19_AXI + 0 + + + M20_HAS_DATA_FIFO + Enable Data FIFO on interface M20_AXI + 0 + + + M21_HAS_DATA_FIFO + Enable Data FIFO on interface M21_AXI + 0 + + + M22_HAS_DATA_FIFO + Enable Data FIFO on interface M22_AXI + 0 + + + M23_HAS_DATA_FIFO + Enable Data FIFO on interface M23_AXI + 0 + + + M24_HAS_DATA_FIFO + Enable Data FIFO on interface M24_AXI + 0 + + + M25_HAS_DATA_FIFO + Enable Data FIFO on interface M25_AXI + 0 + + + M26_HAS_DATA_FIFO + Enable Data FIFO on interface M26_AXI + 0 + + + M27_HAS_DATA_FIFO + Enable Data FIFO on interface M27_AXI + 0 + + + M28_HAS_DATA_FIFO + Enable Data FIFO on interface M28_AXI + 0 + + + M29_HAS_DATA_FIFO + Enable Data FIFO on interface M29_AXI + 0 + + + M30_HAS_DATA_FIFO + Enable Data FIFO on interface M30_AXI + 0 + + + M31_HAS_DATA_FIFO + Enable Data FIFO on interface M31_AXI + 0 + + + M32_HAS_DATA_FIFO + Enable Data FIFO on interface M32_AXI + 0 + + + M33_HAS_DATA_FIFO + Enable Data FIFO on interface M33_AXI + 0 + + + M34_HAS_DATA_FIFO + Enable Data FIFO on interface M34_AXI + 0 + + + M35_HAS_DATA_FIFO + Enable Data FIFO on interface M35_AXI + 0 + + + M36_HAS_DATA_FIFO + Enable Data FIFO on interface M36_AXI + 0 + + + M37_HAS_DATA_FIFO + Enable Data FIFO on interface M37_AXI + 0 + + + M38_HAS_DATA_FIFO + Enable Data FIFO on interface M38_AXI + 0 + + + M39_HAS_DATA_FIFO + Enable Data FIFO on interface M39_AXI + 0 + + + M40_HAS_DATA_FIFO + Enable Data FIFO on interface M40_AXI + 0 + + + M41_HAS_DATA_FIFO + Enable Data FIFO on interface M41_AXI + 0 + + + M42_HAS_DATA_FIFO + Enable Data FIFO on interface M42_AXI + 0 + + + M43_HAS_DATA_FIFO + Enable Data FIFO on interface M43_AXI + 0 + + + M44_HAS_DATA_FIFO + Enable Data FIFO on interface M44_AXI + 0 + + + M45_HAS_DATA_FIFO + Enable Data FIFO on interface M45_AXI + 0 + + + M46_HAS_DATA_FIFO + Enable Data FIFO on interface M46_AXI + 0 + + + M47_HAS_DATA_FIFO + Enable Data FIFO on interface M47_AXI + 0 + + + M48_HAS_DATA_FIFO + Enable Data FIFO on interface M48_AXI + 0 + + + M49_HAS_DATA_FIFO + Enable Data FIFO on interface M49_AXI + 0 + + + M50_HAS_DATA_FIFO + Enable Data FIFO on interface M50_AXI + 0 + + + M51_HAS_DATA_FIFO + Enable Data FIFO on interface M51_AXI + 0 + + + M52_HAS_DATA_FIFO + Enable Data FIFO on interface M52_AXI + 0 + + + M53_HAS_DATA_FIFO + Enable Data FIFO on interface M53_AXI + 0 + + + M54_HAS_DATA_FIFO + Enable Data FIFO on interface M54_AXI + 0 + + + M55_HAS_DATA_FIFO + Enable Data FIFO on interface M55_AXI + 0 + + + M56_HAS_DATA_FIFO + Enable Data FIFO on interface M56_AXI + 0 + + + M57_HAS_DATA_FIFO + Enable Data FIFO on interface M57_AXI + 0 + + + M58_HAS_DATA_FIFO + Enable Data FIFO on interface M58_AXI + 0 + + + M59_HAS_DATA_FIFO + Enable Data FIFO on interface M59_AXI + 0 + + + M60_HAS_DATA_FIFO + Enable Data FIFO on interface M60_AXI + 0 + + + M61_HAS_DATA_FIFO + Enable Data FIFO on interface M61_AXI + 0 + + + M62_HAS_DATA_FIFO + Enable Data FIFO on interface M62_AXI + 0 + + + M63_HAS_DATA_FIFO + Enable Data FIFO on interface M63_AXI + 0 + + + S00_HAS_REGSLICE + Enable Register Slice on interface S00_AXI + 0 + + + S01_HAS_REGSLICE + Enable Register Slice on interface S01_AXI + 0 + + + S02_HAS_REGSLICE + Enable Register Slice on interface S02_AXI + 0 + + + S03_HAS_REGSLICE + Enable Register Slice on interface S03_AXI + 0 + + + S04_HAS_REGSLICE + Enable Register Slice on interface S04_AXI + 0 + + + S05_HAS_REGSLICE + Enable Register Slice on interface S05_AXI + 0 + + + S06_HAS_REGSLICE + Enable Register Slice on interface S06_AXI + 0 + + + S07_HAS_REGSLICE + Enable Register Slice on interface S07_AXI + 0 + + + S08_HAS_REGSLICE + Enable Register Slice on interface S08_AXI + 0 + + + S09_HAS_REGSLICE + Enable Register Slice on interface S09_AXI + 0 + + + S10_HAS_REGSLICE + Enable Register Slice on interface S10_AXI + 0 + + + S11_HAS_REGSLICE + Enable Register Slice on interface S11_AXI + 0 + + + S12_HAS_REGSLICE + Enable Register Slice on interface S12_AXI + 0 + + + S13_HAS_REGSLICE + Enable Register Slice on interface S13_AXI + 0 + + + S14_HAS_REGSLICE + Enable Register Slice on interface S14_AXI + 0 + + + S15_HAS_REGSLICE + Enable Register Slice on interface S15_AXI + 0 + + + S00_HAS_DATA_FIFO + Enable Data FIFO on interface S00_AXI + 0 + + + S01_HAS_DATA_FIFO + Enable Data FIFO on interface S01_AXI + 0 + + + S02_HAS_DATA_FIFO + Enable Data FIFO on interface S02_AXI + 0 + + + S03_HAS_DATA_FIFO + Enable Data FIFO on interface S03_AXI + 0 + + + S04_HAS_DATA_FIFO + Enable Data FIFO on interface S04_AXI + 0 + + + S05_HAS_DATA_FIFO + Enable Data FIFO on interface S05_AXI + 0 + + + S06_HAS_DATA_FIFO + Enable Data FIFO on interface S06_AXI + 0 + + + S07_HAS_DATA_FIFO + Enable Data FIFO on interface S07_AXI + 0 + + + S08_HAS_DATA_FIFO + Enable Data FIFO on interface S08_AXI + 0 + + + S09_HAS_DATA_FIFO + Enable Data FIFO on interface S09_AXI + 0 + + + S10_HAS_DATA_FIFO + Enable Data FIFO on interface S10_AXI + 0 + + + S11_HAS_DATA_FIFO + Enable Data FIFO on interface S11_AXI + 0 + + + S12_HAS_DATA_FIFO + Enable Data FIFO on interface S12_AXI + 0 + + + S13_HAS_DATA_FIFO + Enable Data FIFO on interface S13_AXI + 0 + + + S14_HAS_DATA_FIFO + Enable Data FIFO on interface S14_AXI + 0 + + + S15_HAS_DATA_FIFO + Enable Data FIFO on interface S15_AXI + 0 + + + M00_ISSUANCE + Incicates whether M00_AXI connects to a secure slave + 0 + + + M01_ISSUANCE + Incicates whether M01_AXI connects to a secure slave + 0 + + + M02_ISSUANCE + Incicates whether M02_AXI connects to a secure slave + 0 + + + M03_ISSUANCE + Incicates whether M03_AXI connects to a secure slave + 0 + + + M04_ISSUANCE + Incicates whether M04_AXI connects to a secure slave + 0 + + + M05_ISSUANCE + Incicates whether M05_AXI connects to a secure slave + 0 + + + M06_ISSUANCE + Incicates whether M06_AXI connects to a secure slave + 0 + + + M07_ISSUANCE + Incicates whether M07_AXI connects to a secure slave + 0 + + + M08_ISSUANCE + Incicates whether M08_AXI connects to a secure slave + 0 + + + M09_ISSUANCE + Incicates whether M09_AXI connects to a secure slave + 0 + + + M10_ISSUANCE + Incicates whether M10_AXI connects to a secure slave + 0 + + + M11_ISSUANCE + Incicates whether M11_AXI connects to a secure slave + 0 + + + M12_ISSUANCE + Incicates whether M12_AXI connects to a secure slave + 0 + + + M13_ISSUANCE + Incicates whether M13_AXI connects to a secure slave + 0 + + + M14_ISSUANCE + Incicates whether M14_AXI connects to a secure slave + 0 + + + M15_ISSUANCE + Incicates whether M15_AXI connects to a secure slave + 0 + + + M16_ISSUANCE + Incicates whether M16_AXI connects to a secure slave + 0 + + + M17_ISSUANCE + Incicates whether M17_AXI connects to a secure slave + 0 + + + M18_ISSUANCE + Incicates whether M18_AXI connects to a secure slave + 0 + + + M19_ISSUANCE + Incicates whether M19_AXI connects to a secure slave + 0 + + + M20_ISSUANCE + Incicates whether M20_AXI connects to a secure slave + 0 + + + M21_ISSUANCE + Incicates whether M21_AXI connects to a secure slave + 0 + + + M22_ISSUANCE + Incicates whether M22_AXI connects to a secure slave + 0 + + + M23_ISSUANCE + Incicates whether M23_AXI connects to a secure slave + 0 + + + M24_ISSUANCE + Incicates whether M24_AXI connects to a secure slave + 0 + + + M25_ISSUANCE + Incicates whether M25_AXI connects to a secure slave + 0 + + + M26_ISSUANCE + Incicates whether M26_AXI connects to a secure slave + 0 + + + M27_ISSUANCE + Incicates whether M27_AXI connects to a secure slave + 0 + + + M28_ISSUANCE + Incicates whether M28_AXI connects to a secure slave + 0 + + + M29_ISSUANCE + Incicates whether M29_AXI connects to a secure slave + 0 + + + M30_ISSUANCE + Incicates whether M30_AXI connects to a secure slave + 0 + + + M31_ISSUANCE + Incicates whether M31_AXI connects to a secure slave + 0 + + + M32_ISSUANCE + Incicates whether M32_AXI connects to a secure slave + 0 + + + M33_ISSUANCE + Incicates whether M33_AXI connects to a secure slave + 0 + + + M34_ISSUANCE + Incicates whether M34_AXI connects to a secure slave + 0 + + + M35_ISSUANCE + Incicates whether M35_AXI connects to a secure slave + 0 + + + M36_ISSUANCE + Incicates whether M36_AXI connects to a secure slave + 0 + + + M37_ISSUANCE + Incicates whether M37_AXI connects to a secure slave + 0 + + + M38_ISSUANCE + Incicates whether M38_AXI connects to a secure slave + 0 + + + M39_ISSUANCE + Incicates whether M39_AXI connects to a secure slave + 0 + + + M40_ISSUANCE + Incicates whether M40_AXI connects to a secure slave + 0 + + + M41_ISSUANCE + Incicates whether M41_AXI connects to a secure slave + 0 + + + M42_ISSUANCE + Incicates whether M42_AXI connects to a secure slave + 0 + + + M43_ISSUANCE + Incicates whether M43_AXI connects to a secure slave + 0 + + + M44_ISSUANCE + Incicates whether M44_AXI connects to a secure slave + 0 + + + M45_ISSUANCE + Incicates whether M45_AXI connects to a secure slave + 0 + + + M46_ISSUANCE + Incicates whether M46_AXI connects to a secure slave + 0 + + + M47_ISSUANCE + Incicates whether M47_AXI connects to a secure slave + 0 + + + M48_ISSUANCE + Incicates whether M48_AXI connects to a secure slave + 0 + + + M49_ISSUANCE + Incicates whether M49_AXI connects to a secure slave + 0 + + + M50_ISSUANCE + Incicates whether M50_AXI connects to a secure slave + 0 + + + M51_ISSUANCE + Incicates whether M51_AXI connects to a secure slave + 0 + + + M52_ISSUANCE + Incicates whether M52_AXI connects to a secure slave + 0 + + + M53_ISSUANCE + Incicates whether M53_AXI connects to a secure slave + 0 + + + M54_ISSUANCE + Incicates whether M54_AXI connects to a secure slave + 0 + + + M55_ISSUANCE + Incicates whether M55_AXI connects to a secure slave + 0 + + + M56_ISSUANCE + Incicates whether M56_AXI connects to a secure slave + 0 + + + M57_ISSUANCE + Incicates whether M57_AXI connects to a secure slave + 0 + + + M58_ISSUANCE + Incicates whether M58_AXI connects to a secure slave + 0 + + + M59_ISSUANCE + Incicates whether M59_AXI connects to a secure slave + 0 + + + M60_ISSUANCE + Incicates whether M60_AXI connects to a secure slave + 0 + + + M61_ISSUANCE + Incicates whether M61_AXI connects to a secure slave + 0 + + + M62_ISSUANCE + Incicates whether M62_AXI connects to a secure slave + 0 + + + M63_ISSUANCE + Incicates whether M63_AXI connects to a secure slave + 0 + + + M00_SECURE + Incicates whether M00_AXI connects to a secure slave + 0 + + + M01_SECURE + Incicates whether M01_AXI connects to a secure slave + 0 + + + M02_SECURE + Incicates whether M02_AXI connects to a secure slave + 0 + + + M03_SECURE + Incicates whether M03_AXI connects to a secure slave + 0 + + + M04_SECURE + Incicates whether M04_AXI connects to a secure slave + 0 + + + M05_SECURE + Incicates whether M05_AXI connects to a secure slave + 0 + + + M06_SECURE + Incicates whether M06_AXI connects to a secure slave + 0 + + + M07_SECURE + Incicates whether M07_AXI connects to a secure slave + 0 + + + M08_SECURE + Incicates whether M08_AXI connects to a secure slave + 0 + + + M09_SECURE + Incicates whether M09_AXI connects to a secure slave + 0 + + + M10_SECURE + Incicates whether M10_AXI connects to a secure slave + 0 + + + M11_SECURE + Incicates whether M11_AXI connects to a secure slave + 0 + + + M12_SECURE + Incicates whether M12_AXI connects to a secure slave + 0 + + + M13_SECURE + Incicates whether M13_AXI connects to a secure slave + 0 + + + M14_SECURE + Incicates whether M14_AXI connects to a secure slave + 0 + + + M15_SECURE + Incicates whether M15_AXI connects to a secure slave + 0 + + + M16_SECURE + Incicates whether M16_AXI connects to a secure slave + 0 + + + M17_SECURE + Incicates whether M17_AXI connects to a secure slave + 0 + + + M18_SECURE + Incicates whether M18_AXI connects to a secure slave + 0 + + + M19_SECURE + Incicates whether M19_AXI connects to a secure slave + 0 + + + M20_SECURE + Incicates whether M20_AXI connects to a secure slave + 0 + + + M21_SECURE + Incicates whether M21_AXI connects to a secure slave + 0 + + + M22_SECURE + Incicates whether M22_AXI connects to a secure slave + 0 + + + M23_SECURE + Incicates whether M23_AXI connects to a secure slave + 0 + + + M24_SECURE + Incicates whether M24_AXI connects to a secure slave + 0 + + + M25_SECURE + Incicates whether M25_AXI connects to a secure slave + 0 + + + M26_SECURE + Incicates whether M26_AXI connects to a secure slave + 0 + + + M27_SECURE + Incicates whether M27_AXI connects to a secure slave + 0 + + + M28_SECURE + Incicates whether M28_AXI connects to a secure slave + 0 + + + M29_SECURE + Incicates whether M29_AXI connects to a secure slave + 0 + + + M30_SECURE + Incicates whether M30_AXI connects to a secure slave + 0 + + + M31_SECURE + Incicates whether M31_AXI connects to a secure slave + 0 + + + M32_SECURE + Incicates whether M32_AXI connects to a secure slave + 0 + + + M33_SECURE + Incicates whether M33_AXI connects to a secure slave + 0 + + + M34_SECURE + Incicates whether M34_AXI connects to a secure slave + 0 + + + M35_SECURE + Incicates whether M35_AXI connects to a secure slave + 0 + + + M36_SECURE + Incicates whether M36_AXI connects to a secure slave + 0 + + + M37_SECURE + Incicates whether M37_AXI connects to a secure slave + 0 + + + M38_SECURE + Incicates whether M38_AXI connects to a secure slave + 0 + + + M39_SECURE + Incicates whether M39_AXI connects to a secure slave + 0 + + + M40_SECURE + Incicates whether M40_AXI connects to a secure slave + 0 + + + M41_SECURE + Incicates whether M41_AXI connects to a secure slave + 0 + + + M42_SECURE + Incicates whether M42_AXI connects to a secure slave + 0 + + + M43_SECURE + Incicates whether M43_AXI connects to a secure slave + 0 + + + M44_SECURE + Incicates whether M44_AXI connects to a secure slave + 0 + + + M45_SECURE + Incicates whether M45_AXI connects to a secure slave + 0 + + + M46_SECURE + Incicates whether M46_AXI connects to a secure slave + 0 + + + M47_SECURE + Incicates whether M47_AXI connects to a secure slave + 0 + + + M48_SECURE + Incicates whether M48_AXI connects to a secure slave + 0 + + + M49_SECURE + Incicates whether M49_AXI connects to a secure slave + 0 + + + M50_SECURE + Incicates whether M50_AXI connects to a secure slave + 0 + + + M51_SECURE + Incicates whether M51_AXI connects to a secure slave + 0 + + + M52_SECURE + Incicates whether M52_AXI connects to a secure slave + 0 + + + M53_SECURE + Incicates whether M53_AXI connects to a secure slave + 0 + + + M54_SECURE + Incicates whether M54_AXI connects to a secure slave + 0 + + + M55_SECURE + Incicates whether M55_AXI connects to a secure slave + 0 + + + M56_SECURE + Incicates whether M56_AXI connects to a secure slave + 0 + + + M57_SECURE + Incicates whether M57_AXI connects to a secure slave + 0 + + + M58_SECURE + Incicates whether M58_AXI connects to a secure slave + 0 + + + M59_SECURE + Incicates whether M59_AXI connects to a secure slave + 0 + + + M60_SECURE + Incicates whether M60_AXI connects to a secure slave + 0 + + + M61_SECURE + Incicates whether M61_AXI connects to a secure slave + 0 + + + M62_SECURE + Incicates whether M62_AXI connects to a secure slave + 0 + + + M63_SECURE + Incicates whether M63_AXI connects to a secure slave + 0 + + + Component_Name + z_turn_ps_7_axi_periph_0 + + + + + + /AXI_Infrastructure + /Embedded_Processing/AXI_Infrastructure + + AXI Interconnect + level_2 + http://www.xilinx.com + 6 + + xilinx.com:ip:axi_interconnect:2.0 + + 2015-06-23T16:14:23Z + + + + + + + 2015.2 + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.upgrade_log new file mode 100644 index 0000000..d7048c3 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:16 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_ps_7_axi_periph_1' + +1. Summary +---------- + +SUCCESS in the update of z_turn_ps_7_axi_periph_1 (xilinx.com:ip:axi_interconnect:2.1 (Rev. 6)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xci new file mode 100644 index 0000000..dddb5af --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xci @@ -0,0 +1,341 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_ps_7_axi_periph_1 + + + 1 + 1 + 0 + 0 + 0 + 32 + 0 + 2 + 2 + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + z_turn_ps_7_axi_periph_0 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 6 + GLOBAL + + . + ../../../../ipshared + IP_Integrator_AppCore + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xml new file mode 100644 index 0000000..deed3d3 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_ps_7_axi_periph_1/z_turn_ps_7_axi_periph_1.xml @@ -0,0 +1,4459 @@ + + + xilinx.com + customized_ip + z_turn_ps_7_axi_periph_1 + 1.0 + + + + choices_0 + 0 + 1 + 2 + + + choices_1 + 0 + 1 + + + choices_2 + 0 + 1 + + + choices_3 + 32 + 64 + 128 + 256 + 512 + 1024 + + + choices_4 + 2 + 4 + 8 + 16 + 32 + 64 + + + choices_5 + 2 + 4 + 8 + 16 + 32 + 64 + + + choices_6 + 0 + 1 + 3 + 4 + + + choices_7 + 0 + 1 + 3 + 4 + + + choices_8 + 0 + 1 + 3 + 4 + + + choices_9 + 0 + 1 + 3 + 4 + + + choices_10 + 0 + 1 + 3 + 4 + + + choices_11 + 0 + 1 + 3 + 4 + + + choices_12 + 0 + 1 + 3 + 4 + + + choices_13 + 0 + 1 + 3 + 4 + + + choices_14 + 0 + 1 + 3 + 4 + + + choices_15 + 0 + 1 + 3 + 4 + + + choices_16 + 0 + 1 + 3 + 4 + + + choices_17 + 0 + 1 + 3 + 4 + + + choices_18 + 0 + 1 + 3 + 4 + + + choices_19 + 0 + 1 + 3 + 4 + + + choices_20 + 0 + 1 + 3 + 4 + + + choices_21 + 0 + 1 + 3 + 4 + + + choices_22 + 0 + 1 + 3 + 4 + + + choices_23 + 0 + 1 + 3 + 4 + + + choices_24 + 0 + 1 + 3 + 4 + + + choices_25 + 0 + 1 + 3 + 4 + + + choices_26 + 0 + 1 + 3 + 4 + + + choices_27 + 0 + 1 + 3 + 4 + + + choices_28 + 0 + 1 + 3 + 4 + + + choices_29 + 0 + 1 + 3 + 4 + + + choices_30 + 0 + 1 + 3 + 4 + + + choices_31 + 0 + 1 + 3 + 4 + + + choices_32 + 0 + 1 + 3 + 4 + + + choices_33 + 0 + 1 + 3 + 4 + + + choices_34 + 0 + 1 + 3 + 4 + + + choices_35 + 0 + 1 + 3 + 4 + + + choices_36 + 0 + 1 + 3 + 4 + + + choices_37 + 0 + 1 + 3 + 4 + + + choices_38 + 0 + 1 + 3 + 4 + + + choices_39 + 0 + 1 + 3 + 4 + + + choices_40 + 0 + 1 + 3 + 4 + + + choices_41 + 0 + 1 + 3 + 4 + + + choices_42 + 0 + 1 + 3 + 4 + + + choices_43 + 0 + 1 + 3 + 4 + + + choices_44 + 0 + 1 + 3 + 4 + + + choices_45 + 0 + 1 + 3 + 4 + + + choices_46 + 0 + 1 + 3 + 4 + + + choices_47 + 0 + 1 + 3 + 4 + + + choices_48 + 0 + 1 + 3 + 4 + + + choices_49 + 0 + 1 + 3 + 4 + + + choices_50 + 0 + 1 + 3 + 4 + + + choices_51 + 0 + 1 + 3 + 4 + + + choices_52 + 0 + 1 + 3 + 4 + + + choices_53 + 0 + 1 + 3 + 4 + + + choices_54 + 0 + 1 + 3 + 4 + + + choices_55 + 0 + 1 + 3 + 4 + + + choices_56 + 0 + 1 + 3 + 4 + + + choices_57 + 0 + 1 + 3 + 4 + + + choices_58 + 0 + 1 + 3 + 4 + + + choices_59 + 0 + 1 + 3 + 4 + + + choices_60 + 0 + 1 + 3 + 4 + + + choices_61 + 0 + 1 + 3 + 4 + + + choices_62 + 0 + 1 + 3 + 4 + + + choices_63 + 0 + 1 + 3 + 4 + + + choices_64 + 0 + 1 + 3 + 4 + + + choices_65 + 0 + 1 + 3 + 4 + + + choices_66 + 0 + 1 + 3 + 4 + + + choices_67 + 0 + 1 + 3 + 4 + + + choices_68 + 0 + 1 + 3 + 4 + + + choices_69 + 0 + 1 + 3 + 4 + + + choices_70 + 0 + 1 + 2 + + + choices_71 + 0 + 1 + 2 + + + choices_72 + 0 + 1 + 2 + + + choices_73 + 0 + 1 + 2 + + + choices_74 + 0 + 1 + 2 + + + choices_75 + 0 + 1 + 2 + + + choices_76 + 0 + 1 + 2 + + + choices_77 + 0 + 1 + 2 + + + choices_78 + 0 + 1 + 2 + + + choices_79 + 0 + 1 + 2 + + + choices_80 + 0 + 1 + 2 + + + choices_81 + 0 + 1 + 2 + + + choices_82 + 0 + 1 + 2 + + + choices_83 + 0 + 1 + 2 + + + choices_84 + 0 + 1 + 2 + + + choices_85 + 0 + 1 + 2 + + + choices_86 + 0 + 1 + 2 + + + choices_87 + 0 + 1 + 2 + + + choices_88 + 0 + 1 + 2 + + + choices_89 + 0 + 1 + 2 + + + choices_90 + 0 + 1 + 2 + + + choices_91 + 0 + 1 + 2 + + + choices_92 + 0 + 1 + 2 + + + choices_93 + 0 + 1 + 2 + + + choices_94 + 0 + 1 + 2 + + + choices_95 + 0 + 1 + 2 + + + choices_96 + 0 + 1 + 2 + + + choices_97 + 0 + 1 + 2 + + + choices_98 + 0 + 1 + 2 + + + choices_99 + 0 + 1 + 2 + + + choices_100 + 0 + 1 + 2 + + + choices_101 + 0 + 1 + 2 + + + choices_102 + 0 + 1 + 2 + + + choices_103 + 0 + 1 + 2 + + + choices_104 + 0 + 1 + 2 + + + choices_105 + 0 + 1 + 2 + + + choices_106 + 0 + 1 + 2 + + + choices_107 + 0 + 1 + 2 + + + choices_108 + 0 + 1 + 2 + + + choices_109 + 0 + 1 + 2 + + + choices_110 + 0 + 1 + 2 + + + choices_111 + 0 + 1 + 2 + + + choices_112 + 0 + 1 + 2 + + + choices_113 + 0 + 1 + 2 + + + choices_114 + 0 + 1 + 2 + + + choices_115 + 0 + 1 + 2 + + + choices_116 + 0 + 1 + 2 + + + choices_117 + 0 + 1 + 2 + + + choices_118 + 0 + 1 + 2 + + + choices_119 + 0 + 1 + 2 + + + choices_120 + 0 + 1 + 2 + + + choices_121 + 0 + 1 + 2 + + + choices_122 + 0 + 1 + 2 + + + choices_123 + 0 + 1 + 2 + + + choices_124 + 0 + 1 + 2 + + + choices_125 + 0 + 1 + 2 + + + choices_126 + 0 + 1 + 2 + + + choices_127 + 0 + 1 + 2 + + + choices_128 + 0 + 1 + 2 + + + choices_129 + 0 + 1 + 2 + + + choices_130 + 0 + 1 + 2 + + + choices_131 + 0 + 1 + 2 + + + choices_132 + 0 + 1 + 2 + + + choices_133 + 0 + 1 + 2 + + + choices_134 + 0 + 1 + 3 + 4 + + + choices_135 + 0 + 1 + 3 + 4 + + + choices_136 + 0 + 1 + 3 + 4 + + + choices_137 + 0 + 1 + 3 + 4 + + + choices_138 + 0 + 1 + 3 + 4 + + + choices_139 + 0 + 1 + 3 + 4 + + + choices_140 + 0 + 1 + 3 + 4 + + + choices_141 + 0 + 1 + 3 + 4 + + + choices_142 + 0 + 1 + 3 + 4 + + + choices_143 + 0 + 1 + 3 + 4 + + + choices_144 + 0 + 1 + 3 + 4 + + + choices_145 + 0 + 1 + 3 + 4 + + + choices_146 + 0 + 1 + 3 + 4 + + + choices_147 + 0 + 1 + 3 + 4 + + + choices_148 + 0 + 1 + 3 + 4 + + + choices_149 + 0 + 1 + 3 + 4 + + + choices_150 + 0 + 1 + 2 + + + choices_151 + 0 + 1 + 2 + + + choices_152 + 0 + 1 + 2 + + + choices_153 + 0 + 1 + 2 + + + choices_154 + 0 + 1 + 2 + + + choices_155 + 0 + 1 + 2 + + + choices_156 + 0 + 1 + 2 + + + choices_157 + 0 + 1 + 2 + + + choices_158 + 0 + 1 + 2 + + + choices_159 + 0 + 1 + 2 + + + choices_160 + 0 + 1 + 2 + + + choices_161 + 0 + 1 + 2 + + + choices_162 + 0 + 1 + 2 + + + choices_163 + 0 + 1 + 2 + + + choices_164 + 0 + 1 + 2 + + + choices_165 + 0 + 1 + 2 + + + choices_166 + 0 + 1 + + + choices_167 + 0 + 1 + + + choices_168 + 0 + 1 + + + choices_169 + 0 + 1 + + + choices_170 + 0 + 1 + + + choices_171 + 0 + 1 + + + choices_172 + 0 + 1 + + + choices_173 + 0 + 1 + + + choices_174 + 0 + 1 + + + choices_175 + 0 + 1 + + + choices_176 + 0 + 1 + + + choices_177 + 0 + 1 + + + choices_178 + 0 + 1 + + + choices_179 + 0 + 1 + + + choices_180 + 0 + 1 + + + choices_181 + 0 + 1 + + + choices_182 + 0 + 1 + + + choices_183 + 0 + 1 + + + choices_184 + 0 + 1 + + + choices_185 + 0 + 1 + + + choices_186 + 0 + 1 + + + choices_187 + 0 + 1 + + + choices_188 + 0 + 1 + + + choices_189 + 0 + 1 + + + choices_190 + 0 + 1 + + + choices_191 + 0 + 1 + + + choices_192 + 0 + 1 + + + choices_193 + 0 + 1 + + + choices_194 + 0 + 1 + + + choices_195 + 0 + 1 + + + choices_196 + 0 + 1 + + + choices_197 + 0 + 1 + + + choices_198 + 0 + 1 + + + choices_199 + 0 + 1 + + + choices_200 + 0 + 1 + + + choices_201 + 0 + 1 + + + choices_202 + 0 + 1 + + + choices_203 + 0 + 1 + + + choices_204 + 0 + 1 + + + choices_205 + 0 + 1 + + + choices_206 + 0 + 1 + + + choices_207 + 0 + 1 + + + choices_208 + 0 + 1 + + + choices_209 + 0 + 1 + + + choices_210 + 0 + 1 + + + choices_211 + 0 + 1 + + + choices_212 + 0 + 1 + + + choices_213 + 0 + 1 + + + choices_214 + 0 + 1 + + + choices_215 + 0 + 1 + + + choices_216 + 0 + 1 + + + choices_217 + 0 + 1 + + + choices_218 + 0 + 1 + + + choices_219 + 0 + 1 + + + choices_220 + 0 + 1 + + + choices_221 + 0 + 1 + + + choices_222 + 0 + 1 + + + choices_223 + 0 + 1 + + + choices_224 + 0 + 1 + + + choices_225 + 0 + 1 + + + choices_226 + 0 + 1 + + + choices_227 + 0 + 1 + + + choices_228 + 0 + 1 + + + choices_229 + 0 + 1 + + + choices_230 + 0 + 1 + + + choices_231 + 0 + 1 + + + choices_232 + 0 + 1 + + + choices_233 + 0 + 1 + + + choices_234 + 0 + 1 + + + choices_235 + 0 + 1 + + + choices_236 + 0 + 1 + + + choices_237 + 0 + 1 + + + choices_238 + 0 + 1 + + + choices_239 + 0 + 1 + + + choices_240 + 0 + 1 + + + choices_241 + 0 + 1 + + + choices_242 + 0 + 1 + + + choices_243 + 0 + 1 + + + choices_244 + 0 + 1 + + + choices_245 + 0 + 1 + + + choices_246 + 0 + 1 + + + choices_247 + 0 + 1 + + + choices_248 + 0 + 1 + + + choices_249 + 0 + 1 + + + choices_250 + 0 + 1 + + + choices_251 + 0 + 1 + + + choices_252 + 0 + 1 + + + choices_253 + 0 + 1 + + + choices_254 + 0 + 1 + + + choices_255 + 0 + 1 + + + choices_256 + 0 + 1 + + + choices_257 + 0 + 1 + + + choices_258 + 0 + 1 + + + choices_259 + 0 + 1 + + + choices_260 + 0 + 1 + + + choices_261 + 0 + 1 + + + choices_262 + 0 + 1 + + + choices_263 + 0 + 1 + + + choices_264 + 0 + 1 + + + choices_265 + 0 + 1 + + + choices_266 + 0 + 1 + + + choices_267 + 0 + 1 + + + choices_268 + 0 + 1 + + + choices_269 + 0 + 1 + + + choices_270 + 0 + 1 + + + choices_271 + 0 + 1 + + + choices_272 + 0 + 1 + + + choices_273 + 0 + 1 + + + choices_274 + 0 + 1 + + + choices_275 + 0 + 1 + + + choices_276 + 0 + 1 + + + choices_277 + 0 + 1 + + + choices_278 + 0 + 1 + + + choices_279 + 0 + 1 + + + choices_280 + 0 + 1 + + + choices_281 + 0 + 1 + + + choices_282 + 0 + 1 + + + choices_283 + 0 + 1 + + + choices_284 + 0 + 1 + + + choices_285 + 0 + 1 + + + choices_286 + 0 + 1 + + + choices_287 + 0 + 1 + + + choices_288 + 0 + 1 + + + choices_289 + 0 + 1 + + + choices_290 + 0 + 1 + + + choices_291 + 0 + 1 + + + choices_292 + 0 + 1 + + + choices_293 + 0 + 1 + + + The AXI Interconnect IP connects one or more AXI memory-mapped master devices to one or more AXI memory mapped slave devices + + + NUM_SI + Number of Slave Interfaces + 1 + + + NUM_MI + Number of Master Interfaces + 1 + + + STRATEGY + Interconnect Optimization Strategy + 0 + + + ENABLE_ADVANCED_OPTIONS + Enable Advanced Configuration Options + 0 + + + ENABLE_PROTOCOL_CHECKERS + Enable Protocol Checkers and mark interfaces for debug + 0 + + + XBAR_DATA_WIDTH + Data Width of the AXI Crossbar + 32 + + + PCHK_WAITS + Maximum number of idle cycles for READY monitoring + 0 + + + PCHK_MAX_RD_BURSTS + Maximum outstanding READ Transactions per ID + 2 + + + PCHK_MAX_WR_BURSTS + Maximum outstanding WRITE Transactions per ID + 2 + + + SYNCHRONIZATION_STAGES + Synchronization Stages + 2 + + + M00_HAS_REGSLICE + Enable Register Slice on interface M00_AXI + 0 + + + M01_HAS_REGSLICE + Enable Register Slice on interface M01_AXI + 0 + + + M02_HAS_REGSLICE + Enable Register Slice on interface M02_AXI + 0 + + + M03_HAS_REGSLICE + Enable Register Slice on interface M03_AXI + 0 + + + M04_HAS_REGSLICE + Enable Register Slice on interface M04_AXI + 0 + + + M05_HAS_REGSLICE + Enable Register Slice on interface M05_AXI + 0 + + + M06_HAS_REGSLICE + Enable Register Slice on interface M06_AXI + 0 + + + M07_HAS_REGSLICE + Enable Register Slice on interface M07_AXI + 0 + + + M08_HAS_REGSLICE + Enable Register Slice on interface M08_AXI + 0 + + + M09_HAS_REGSLICE + Enable Register Slice on interface M09_AXI + 0 + + + M10_HAS_REGSLICE + Enable Register Slice on interface M10_AXI + 0 + + + M11_HAS_REGSLICE + Enable Register Slice on interface M11_AXI + 0 + + + M12_HAS_REGSLICE + Enable Register Slice on interface M12_AXI + 0 + + + M13_HAS_REGSLICE + Enable Register Slice on interface M13_AXI + 0 + + + M14_HAS_REGSLICE + Enable Register Slice on interface M14_AXI + 0 + + + M15_HAS_REGSLICE + Enable Register Slice on interface M15_AXI + 0 + + + M16_HAS_REGSLICE + Enable Register Slice on interface M16_AXI + 0 + + + M17_HAS_REGSLICE + Enable Register Slice on interface M17_AXI + 0 + + + M18_HAS_REGSLICE + Enable Register Slice on interface M18_AXI + 0 + + + M19_HAS_REGSLICE + Enable Register Slice on interface M19_AXI + 0 + + + M20_HAS_REGSLICE + Enable Register Slice on interface M20_AXI + 0 + + + M21_HAS_REGSLICE + Enable Register Slice on interface M21_AXI + 0 + + + M22_HAS_REGSLICE + Enable Register Slice on interface M22_AXI + 0 + + + M23_HAS_REGSLICE + Enable Register Slice on interface M23_AXI + 0 + + + M24_HAS_REGSLICE + Enable Register Slice on interface M24_AXI + 0 + + + M25_HAS_REGSLICE + Enable Register Slice on interface M25_AXI + 0 + + + M26_HAS_REGSLICE + Enable Register Slice on interface M26_AXI + 0 + + + M27_HAS_REGSLICE + Enable Register Slice on interface M27_AXI + 0 + + + M28_HAS_REGSLICE + Enable Register Slice on interface M28_AXI + 0 + + + M29_HAS_REGSLICE + Enable Register Slice on interface M29_AXI + 0 + + + M30_HAS_REGSLICE + Enable Register Slice on interface M30_AXI + 0 + + + M31_HAS_REGSLICE + Enable Register Slice on interface M31_AXI + 0 + + + M32_HAS_REGSLICE + Enable Register Slice on interface M32_AXI + 0 + + + M33_HAS_REGSLICE + Enable Register Slice on interface M33_AXI + 0 + + + M34_HAS_REGSLICE + Enable Register Slice on interface M34_AXI + 0 + + + M35_HAS_REGSLICE + Enable Register Slice on interface M35_AXI + 0 + + + M36_HAS_REGSLICE + Enable Register Slice on interface M36_AXI + 0 + + + M37_HAS_REGSLICE + Enable Register Slice on interface M37_AXI + 0 + + + M38_HAS_REGSLICE + Enable Register Slice on interface M38_AXI + 0 + + + M39_HAS_REGSLICE + Enable Register Slice on interface M39_AXI + 0 + + + M40_HAS_REGSLICE + Enable Register Slice on interface M40_AXI + 0 + + + M41_HAS_REGSLICE + Enable Register Slice on interface M41_AXI + 0 + + + M42_HAS_REGSLICE + Enable Register Slice on interface M42_AXI + 0 + + + M43_HAS_REGSLICE + Enable Register Slice on interface M43_AXI + 0 + + + M44_HAS_REGSLICE + Enable Register Slice on interface M44_AXI + 0 + + + M45_HAS_REGSLICE + Enable Register Slice on interface M45_AXI + 0 + + + M46_HAS_REGSLICE + Enable Register Slice on interface M46_AXI + 0 + + + M47_HAS_REGSLICE + Enable Register Slice on interface M47_AXI + 0 + + + M48_HAS_REGSLICE + Enable Register Slice on interface M48_AXI + 0 + + + M49_HAS_REGSLICE + Enable Register Slice on interface M49_AXI + 0 + + + M50_HAS_REGSLICE + Enable Register Slice on interface M50_AXI + 0 + + + M51_HAS_REGSLICE + Enable Register Slice on interface M51_AXI + 0 + + + M52_HAS_REGSLICE + Enable Register Slice on interface M52_AXI + 0 + + + M53_HAS_REGSLICE + Enable Register Slice on interface M53_AXI + 0 + + + M54_HAS_REGSLICE + Enable Register Slice on interface M54_AXI + 0 + + + M55_HAS_REGSLICE + Enable Register Slice on interface M55_AXI + 0 + + + M56_HAS_REGSLICE + Enable Register Slice on interface M56_AXI + 0 + + + M57_HAS_REGSLICE + Enable Register Slice on interface M57_AXI + 0 + + + M58_HAS_REGSLICE + Enable Register Slice on interface M58_AXI + 0 + + + M59_HAS_REGSLICE + Enable Register Slice on interface M59_AXI + 0 + + + M60_HAS_REGSLICE + Enable Register Slice on interface M60_AXI + 0 + + + M61_HAS_REGSLICE + Enable Register Slice on interface M61_AXI + 0 + + + M62_HAS_REGSLICE + Enable Register Slice on interface M62_AXI + 0 + + + M63_HAS_REGSLICE + Enable Register Slice on interface M63_AXI + 0 + + + M00_HAS_DATA_FIFO + Enable Data FIFO on interface M00_AXI + 0 + + + M01_HAS_DATA_FIFO + Enable Data FIFO on interface M01_AXI + 0 + + + M02_HAS_DATA_FIFO + Enable Data FIFO on interface M02_AXI + 0 + + + M03_HAS_DATA_FIFO + Enable Data FIFO on interface M03_AXI + 0 + + + M04_HAS_DATA_FIFO + Enable Data FIFO on interface M04_AXI + 0 + + + M05_HAS_DATA_FIFO + Enable Data FIFO on interface M05_AXI + 0 + + + M06_HAS_DATA_FIFO + Enable Data FIFO on interface M06_AXI + 0 + + + M07_HAS_DATA_FIFO + Enable Data FIFO on interface M07_AXI + 0 + + + M08_HAS_DATA_FIFO + Enable Data FIFO on interface M08_AXI + 0 + + + M09_HAS_DATA_FIFO + Enable Data FIFO on interface M09_AXI + 0 + + + M10_HAS_DATA_FIFO + Enable Data FIFO on interface M10_AXI + 0 + + + M11_HAS_DATA_FIFO + Enable Data FIFO on interface M11_AXI + 0 + + + M12_HAS_DATA_FIFO + Enable Data FIFO on interface M12_AXI + 0 + + + M13_HAS_DATA_FIFO + Enable Data FIFO on interface M13_AXI + 0 + + + M14_HAS_DATA_FIFO + Enable Data FIFO on interface M14_AXI + 0 + + + M15_HAS_DATA_FIFO + Enable Data FIFO on interface M15_AXI + 0 + + + M16_HAS_DATA_FIFO + Enable Data FIFO on interface M16_AXI + 0 + + + M17_HAS_DATA_FIFO + Enable Data FIFO on interface M17_AXI + 0 + + + M18_HAS_DATA_FIFO + Enable Data FIFO on interface M18_AXI + 0 + + + M19_HAS_DATA_FIFO + Enable Data FIFO on interface M19_AXI + 0 + + + M20_HAS_DATA_FIFO + Enable Data FIFO on interface M20_AXI + 0 + + + M21_HAS_DATA_FIFO + Enable Data FIFO on interface M21_AXI + 0 + + + M22_HAS_DATA_FIFO + Enable Data FIFO on interface M22_AXI + 0 + + + M23_HAS_DATA_FIFO + Enable Data FIFO on interface M23_AXI + 0 + + + M24_HAS_DATA_FIFO + Enable Data FIFO on interface M24_AXI + 0 + + + M25_HAS_DATA_FIFO + Enable Data FIFO on interface M25_AXI + 0 + + + M26_HAS_DATA_FIFO + Enable Data FIFO on interface M26_AXI + 0 + + + M27_HAS_DATA_FIFO + Enable Data FIFO on interface M27_AXI + 0 + + + M28_HAS_DATA_FIFO + Enable Data FIFO on interface M28_AXI + 0 + + + M29_HAS_DATA_FIFO + Enable Data FIFO on interface M29_AXI + 0 + + + M30_HAS_DATA_FIFO + Enable Data FIFO on interface M30_AXI + 0 + + + M31_HAS_DATA_FIFO + Enable Data FIFO on interface M31_AXI + 0 + + + M32_HAS_DATA_FIFO + Enable Data FIFO on interface M32_AXI + 0 + + + M33_HAS_DATA_FIFO + Enable Data FIFO on interface M33_AXI + 0 + + + M34_HAS_DATA_FIFO + Enable Data FIFO on interface M34_AXI + 0 + + + M35_HAS_DATA_FIFO + Enable Data FIFO on interface M35_AXI + 0 + + + M36_HAS_DATA_FIFO + Enable Data FIFO on interface M36_AXI + 0 + + + M37_HAS_DATA_FIFO + Enable Data FIFO on interface M37_AXI + 0 + + + M38_HAS_DATA_FIFO + Enable Data FIFO on interface M38_AXI + 0 + + + M39_HAS_DATA_FIFO + Enable Data FIFO on interface M39_AXI + 0 + + + M40_HAS_DATA_FIFO + Enable Data FIFO on interface M40_AXI + 0 + + + M41_HAS_DATA_FIFO + Enable Data FIFO on interface M41_AXI + 0 + + + M42_HAS_DATA_FIFO + Enable Data FIFO on interface M42_AXI + 0 + + + M43_HAS_DATA_FIFO + Enable Data FIFO on interface M43_AXI + 0 + + + M44_HAS_DATA_FIFO + Enable Data FIFO on interface M44_AXI + 0 + + + M45_HAS_DATA_FIFO + Enable Data FIFO on interface M45_AXI + 0 + + + M46_HAS_DATA_FIFO + Enable Data FIFO on interface M46_AXI + 0 + + + M47_HAS_DATA_FIFO + Enable Data FIFO on interface M47_AXI + 0 + + + M48_HAS_DATA_FIFO + Enable Data FIFO on interface M48_AXI + 0 + + + M49_HAS_DATA_FIFO + Enable Data FIFO on interface M49_AXI + 0 + + + M50_HAS_DATA_FIFO + Enable Data FIFO on interface M50_AXI + 0 + + + M51_HAS_DATA_FIFO + Enable Data FIFO on interface M51_AXI + 0 + + + M52_HAS_DATA_FIFO + Enable Data FIFO on interface M52_AXI + 0 + + + M53_HAS_DATA_FIFO + Enable Data FIFO on interface M53_AXI + 0 + + + M54_HAS_DATA_FIFO + Enable Data FIFO on interface M54_AXI + 0 + + + M55_HAS_DATA_FIFO + Enable Data FIFO on interface M55_AXI + 0 + + + M56_HAS_DATA_FIFO + Enable Data FIFO on interface M56_AXI + 0 + + + M57_HAS_DATA_FIFO + Enable Data FIFO on interface M57_AXI + 0 + + + M58_HAS_DATA_FIFO + Enable Data FIFO on interface M58_AXI + 0 + + + M59_HAS_DATA_FIFO + Enable Data FIFO on interface M59_AXI + 0 + + + M60_HAS_DATA_FIFO + Enable Data FIFO on interface M60_AXI + 0 + + + M61_HAS_DATA_FIFO + Enable Data FIFO on interface M61_AXI + 0 + + + M62_HAS_DATA_FIFO + Enable Data FIFO on interface M62_AXI + 0 + + + M63_HAS_DATA_FIFO + Enable Data FIFO on interface M63_AXI + 0 + + + S00_HAS_REGSLICE + Enable Register Slice on interface S00_AXI + 0 + + + S01_HAS_REGSLICE + Enable Register Slice on interface S01_AXI + 0 + + + S02_HAS_REGSLICE + Enable Register Slice on interface S02_AXI + 0 + + + S03_HAS_REGSLICE + Enable Register Slice on interface S03_AXI + 0 + + + S04_HAS_REGSLICE + Enable Register Slice on interface S04_AXI + 0 + + + S05_HAS_REGSLICE + Enable Register Slice on interface S05_AXI + 0 + + + S06_HAS_REGSLICE + Enable Register Slice on interface S06_AXI + 0 + + + S07_HAS_REGSLICE + Enable Register Slice on interface S07_AXI + 0 + + + S08_HAS_REGSLICE + Enable Register Slice on interface S08_AXI + 0 + + + S09_HAS_REGSLICE + Enable Register Slice on interface S09_AXI + 0 + + + S10_HAS_REGSLICE + Enable Register Slice on interface S10_AXI + 0 + + + S11_HAS_REGSLICE + Enable Register Slice on interface S11_AXI + 0 + + + S12_HAS_REGSLICE + Enable Register Slice on interface S12_AXI + 0 + + + S13_HAS_REGSLICE + Enable Register Slice on interface S13_AXI + 0 + + + S14_HAS_REGSLICE + Enable Register Slice on interface S14_AXI + 0 + + + S15_HAS_REGSLICE + Enable Register Slice on interface S15_AXI + 0 + + + S00_HAS_DATA_FIFO + Enable Data FIFO on interface S00_AXI + 0 + + + S01_HAS_DATA_FIFO + Enable Data FIFO on interface S01_AXI + 0 + + + S02_HAS_DATA_FIFO + Enable Data FIFO on interface S02_AXI + 0 + + + S03_HAS_DATA_FIFO + Enable Data FIFO on interface S03_AXI + 0 + + + S04_HAS_DATA_FIFO + Enable Data FIFO on interface S04_AXI + 0 + + + S05_HAS_DATA_FIFO + Enable Data FIFO on interface S05_AXI + 0 + + + S06_HAS_DATA_FIFO + Enable Data FIFO on interface S06_AXI + 0 + + + S07_HAS_DATA_FIFO + Enable Data FIFO on interface S07_AXI + 0 + + + S08_HAS_DATA_FIFO + Enable Data FIFO on interface S08_AXI + 0 + + + S09_HAS_DATA_FIFO + Enable Data FIFO on interface S09_AXI + 0 + + + S10_HAS_DATA_FIFO + Enable Data FIFO on interface S10_AXI + 0 + + + S11_HAS_DATA_FIFO + Enable Data FIFO on interface S11_AXI + 0 + + + S12_HAS_DATA_FIFO + Enable Data FIFO on interface S12_AXI + 0 + + + S13_HAS_DATA_FIFO + Enable Data FIFO on interface S13_AXI + 0 + + + S14_HAS_DATA_FIFO + Enable Data FIFO on interface S14_AXI + 0 + + + S15_HAS_DATA_FIFO + Enable Data FIFO on interface S15_AXI + 0 + + + M00_ISSUANCE + Incicates whether M00_AXI connects to a secure slave + 0 + + + M01_ISSUANCE + Incicates whether M01_AXI connects to a secure slave + 0 + + + M02_ISSUANCE + Incicates whether M02_AXI connects to a secure slave + 0 + + + M03_ISSUANCE + Incicates whether M03_AXI connects to a secure slave + 0 + + + M04_ISSUANCE + Incicates whether M04_AXI connects to a secure slave + 0 + + + M05_ISSUANCE + Incicates whether M05_AXI connects to a secure slave + 0 + + + M06_ISSUANCE + Incicates whether M06_AXI connects to a secure slave + 0 + + + M07_ISSUANCE + Incicates whether M07_AXI connects to a secure slave + 0 + + + M08_ISSUANCE + Incicates whether M08_AXI connects to a secure slave + 0 + + + M09_ISSUANCE + Incicates whether M09_AXI connects to a secure slave + 0 + + + M10_ISSUANCE + Incicates whether M10_AXI connects to a secure slave + 0 + + + M11_ISSUANCE + Incicates whether M11_AXI connects to a secure slave + 0 + + + M12_ISSUANCE + Incicates whether M12_AXI connects to a secure slave + 0 + + + M13_ISSUANCE + Incicates whether M13_AXI connects to a secure slave + 0 + + + M14_ISSUANCE + Incicates whether M14_AXI connects to a secure slave + 0 + + + M15_ISSUANCE + Incicates whether M15_AXI connects to a secure slave + 0 + + + M16_ISSUANCE + Incicates whether M16_AXI connects to a secure slave + 0 + + + M17_ISSUANCE + Incicates whether M17_AXI connects to a secure slave + 0 + + + M18_ISSUANCE + Incicates whether M18_AXI connects to a secure slave + 0 + + + M19_ISSUANCE + Incicates whether M19_AXI connects to a secure slave + 0 + + + M20_ISSUANCE + Incicates whether M20_AXI connects to a secure slave + 0 + + + M21_ISSUANCE + Incicates whether M21_AXI connects to a secure slave + 0 + + + M22_ISSUANCE + Incicates whether M22_AXI connects to a secure slave + 0 + + + M23_ISSUANCE + Incicates whether M23_AXI connects to a secure slave + 0 + + + M24_ISSUANCE + Incicates whether M24_AXI connects to a secure slave + 0 + + + M25_ISSUANCE + Incicates whether M25_AXI connects to a secure slave + 0 + + + M26_ISSUANCE + Incicates whether M26_AXI connects to a secure slave + 0 + + + M27_ISSUANCE + Incicates whether M27_AXI connects to a secure slave + 0 + + + M28_ISSUANCE + Incicates whether M28_AXI connects to a secure slave + 0 + + + M29_ISSUANCE + Incicates whether M29_AXI connects to a secure slave + 0 + + + M30_ISSUANCE + Incicates whether M30_AXI connects to a secure slave + 0 + + + M31_ISSUANCE + Incicates whether M31_AXI connects to a secure slave + 0 + + + M32_ISSUANCE + Incicates whether M32_AXI connects to a secure slave + 0 + + + M33_ISSUANCE + Incicates whether M33_AXI connects to a secure slave + 0 + + + M34_ISSUANCE + Incicates whether M34_AXI connects to a secure slave + 0 + + + M35_ISSUANCE + Incicates whether M35_AXI connects to a secure slave + 0 + + + M36_ISSUANCE + Incicates whether M36_AXI connects to a secure slave + 0 + + + M37_ISSUANCE + Incicates whether M37_AXI connects to a secure slave + 0 + + + M38_ISSUANCE + Incicates whether M38_AXI connects to a secure slave + 0 + + + M39_ISSUANCE + Incicates whether M39_AXI connects to a secure slave + 0 + + + M40_ISSUANCE + Incicates whether M40_AXI connects to a secure slave + 0 + + + M41_ISSUANCE + Incicates whether M41_AXI connects to a secure slave + 0 + + + M42_ISSUANCE + Incicates whether M42_AXI connects to a secure slave + 0 + + + M43_ISSUANCE + Incicates whether M43_AXI connects to a secure slave + 0 + + + M44_ISSUANCE + Incicates whether M44_AXI connects to a secure slave + 0 + + + M45_ISSUANCE + Incicates whether M45_AXI connects to a secure slave + 0 + + + M46_ISSUANCE + Incicates whether M46_AXI connects to a secure slave + 0 + + + M47_ISSUANCE + Incicates whether M47_AXI connects to a secure slave + 0 + + + M48_ISSUANCE + Incicates whether M48_AXI connects to a secure slave + 0 + + + M49_ISSUANCE + Incicates whether M49_AXI connects to a secure slave + 0 + + + M50_ISSUANCE + Incicates whether M50_AXI connects to a secure slave + 0 + + + M51_ISSUANCE + Incicates whether M51_AXI connects to a secure slave + 0 + + + M52_ISSUANCE + Incicates whether M52_AXI connects to a secure slave + 0 + + + M53_ISSUANCE + Incicates whether M53_AXI connects to a secure slave + 0 + + + M54_ISSUANCE + Incicates whether M54_AXI connects to a secure slave + 0 + + + M55_ISSUANCE + Incicates whether M55_AXI connects to a secure slave + 0 + + + M56_ISSUANCE + Incicates whether M56_AXI connects to a secure slave + 0 + + + M57_ISSUANCE + Incicates whether M57_AXI connects to a secure slave + 0 + + + M58_ISSUANCE + Incicates whether M58_AXI connects to a secure slave + 0 + + + M59_ISSUANCE + Incicates whether M59_AXI connects to a secure slave + 0 + + + M60_ISSUANCE + Incicates whether M60_AXI connects to a secure slave + 0 + + + M61_ISSUANCE + Incicates whether M61_AXI connects to a secure slave + 0 + + + M62_ISSUANCE + Incicates whether M62_AXI connects to a secure slave + 0 + + + M63_ISSUANCE + Incicates whether M63_AXI connects to a secure slave + 0 + + + M00_SECURE + Incicates whether M00_AXI connects to a secure slave + 0 + + + M01_SECURE + Incicates whether M01_AXI connects to a secure slave + 0 + + + M02_SECURE + Incicates whether M02_AXI connects to a secure slave + 0 + + + M03_SECURE + Incicates whether M03_AXI connects to a secure slave + 0 + + + M04_SECURE + Incicates whether M04_AXI connects to a secure slave + 0 + + + M05_SECURE + Incicates whether M05_AXI connects to a secure slave + 0 + + + M06_SECURE + Incicates whether M06_AXI connects to a secure slave + 0 + + + M07_SECURE + Incicates whether M07_AXI connects to a secure slave + 0 + + + M08_SECURE + Incicates whether M08_AXI connects to a secure slave + 0 + + + M09_SECURE + Incicates whether M09_AXI connects to a secure slave + 0 + + + M10_SECURE + Incicates whether M10_AXI connects to a secure slave + 0 + + + M11_SECURE + Incicates whether M11_AXI connects to a secure slave + 0 + + + M12_SECURE + Incicates whether M12_AXI connects to a secure slave + 0 + + + M13_SECURE + Incicates whether M13_AXI connects to a secure slave + 0 + + + M14_SECURE + Incicates whether M14_AXI connects to a secure slave + 0 + + + M15_SECURE + Incicates whether M15_AXI connects to a secure slave + 0 + + + M16_SECURE + Incicates whether M16_AXI connects to a secure slave + 0 + + + M17_SECURE + Incicates whether M17_AXI connects to a secure slave + 0 + + + M18_SECURE + Incicates whether M18_AXI connects to a secure slave + 0 + + + M19_SECURE + Incicates whether M19_AXI connects to a secure slave + 0 + + + M20_SECURE + Incicates whether M20_AXI connects to a secure slave + 0 + + + M21_SECURE + Incicates whether M21_AXI connects to a secure slave + 0 + + + M22_SECURE + Incicates whether M22_AXI connects to a secure slave + 0 + + + M23_SECURE + Incicates whether M23_AXI connects to a secure slave + 0 + + + M24_SECURE + Incicates whether M24_AXI connects to a secure slave + 0 + + + M25_SECURE + Incicates whether M25_AXI connects to a secure slave + 0 + + + M26_SECURE + Incicates whether M26_AXI connects to a secure slave + 0 + + + M27_SECURE + Incicates whether M27_AXI connects to a secure slave + 0 + + + M28_SECURE + Incicates whether M28_AXI connects to a secure slave + 0 + + + M29_SECURE + Incicates whether M29_AXI connects to a secure slave + 0 + + + M30_SECURE + Incicates whether M30_AXI connects to a secure slave + 0 + + + M31_SECURE + Incicates whether M31_AXI connects to a secure slave + 0 + + + M32_SECURE + Incicates whether M32_AXI connects to a secure slave + 0 + + + M33_SECURE + Incicates whether M33_AXI connects to a secure slave + 0 + + + M34_SECURE + Incicates whether M34_AXI connects to a secure slave + 0 + + + M35_SECURE + Incicates whether M35_AXI connects to a secure slave + 0 + + + M36_SECURE + Incicates whether M36_AXI connects to a secure slave + 0 + + + M37_SECURE + Incicates whether M37_AXI connects to a secure slave + 0 + + + M38_SECURE + Incicates whether M38_AXI connects to a secure slave + 0 + + + M39_SECURE + Incicates whether M39_AXI connects to a secure slave + 0 + + + M40_SECURE + Incicates whether M40_AXI connects to a secure slave + 0 + + + M41_SECURE + Incicates whether M41_AXI connects to a secure slave + 0 + + + M42_SECURE + Incicates whether M42_AXI connects to a secure slave + 0 + + + M43_SECURE + Incicates whether M43_AXI connects to a secure slave + 0 + + + M44_SECURE + Incicates whether M44_AXI connects to a secure slave + 0 + + + M45_SECURE + Incicates whether M45_AXI connects to a secure slave + 0 + + + M46_SECURE + Incicates whether M46_AXI connects to a secure slave + 0 + + + M47_SECURE + Incicates whether M47_AXI connects to a secure slave + 0 + + + M48_SECURE + Incicates whether M48_AXI connects to a secure slave + 0 + + + M49_SECURE + Incicates whether M49_AXI connects to a secure slave + 0 + + + M50_SECURE + Incicates whether M50_AXI connects to a secure slave + 0 + + + M51_SECURE + Incicates whether M51_AXI connects to a secure slave + 0 + + + M52_SECURE + Incicates whether M52_AXI connects to a secure slave + 0 + + + M53_SECURE + Incicates whether M53_AXI connects to a secure slave + 0 + + + M54_SECURE + Incicates whether M54_AXI connects to a secure slave + 0 + + + M55_SECURE + Incicates whether M55_AXI connects to a secure slave + 0 + + + M56_SECURE + Incicates whether M56_AXI connects to a secure slave + 0 + + + M57_SECURE + Incicates whether M57_AXI connects to a secure slave + 0 + + + M58_SECURE + Incicates whether M58_AXI connects to a secure slave + 0 + + + M59_SECURE + Incicates whether M59_AXI connects to a secure slave + 0 + + + M60_SECURE + Incicates whether M60_AXI connects to a secure slave + 0 + + + M61_SECURE + Incicates whether M61_AXI connects to a secure slave + 0 + + + M62_SECURE + Incicates whether M62_AXI connects to a secure slave + 0 + + + M63_SECURE + Incicates whether M63_AXI connects to a secure slave + 0 + + + Component_Name + z_turn_ps_7_axi_periph_0 + + + + + + /AXI_Infrastructure + /Embedded_Processing/AXI_Infrastructure + + AXI Interconnect + level_2 + http://www.xilinx.com + 6 + + xilinx.com:ip:axi_interconnect:2.0 + + 2015-06-23T16:14:23Z + + + + + + + 2015.2 + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/doc/proc_sys_reset_v5_0_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/doc/proc_sys_reset_v5_0_changelog.txt new file mode 100644 index 0000000..d8c5a93 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/doc/proc_sys_reset_v5_0_changelog.txt @@ -0,0 +1,104 @@ +2015.2: + * Version 5.0 (Rev. 7) + * No changes + +2015.1: + * Version 5.0 (Rev. 7) + * Enabled out-of-context clock frequency setting by adding FREQ_HZ parameter to slowest_sync_clk + * Supported devices and production status are now determined automatically, to simplify support for future devices + +2014.4.1: + * Version 5.0 (Rev. 6) + * No changes + +2014.4: + * Version 5.0 (Rev. 6) + * No changes + +2014.3: + * Version 5.0 (Rev. 6) + * Modified to use new sub-cores in place of proc_common,no functional changes + * Updated synchronizers for clock domain crossing to reduce Mean Time Between Failures (MTBF) from metastability + * Updated core to use utils.tcl, needed for board flow from common location + +2014.2: + * Version 5.0 (Rev. 5) + * Enhanced support for IP Integrator + * Board flow related updates, no functional changes + +2014.1: + * Version 5.0 (Rev. 4) + * Internal device family name change, no functional changes + +2013.4: + * Version 5.0 (Rev. 3) + * Added exdes.xdc file + * Changed the associated resets for slowest_sync_clk + * Kintex UltraScale Pre-Production support + +2013.3: + * Version 5.0 (Rev. 2) + * Changed board flow specific parameter name as per new requirements + * Added example design and demonstration testbench + * Reduced warnings in synthesis and simulation + * Enhanced support for IP Integrator + * Added support for Cadence IES and Synopsys VCS simulators + * Updated synchronizers for clock domain crossing to reduce Mean Time Between Failures (MTBF) from metastability + * Support for 7-series devices at Production status + +2013.2: + * Version 5.0 (Rev. 1) + * Added BETA support for future devices. + * No other RTL updates + +2013.1: + * Version 5.0 + * Updated version for 2013.1 + * Updated bd.tcl for board flow + * No other RTL updates + +(c) Copyright 2013 - 2015 Xilinx, Inc. All rights reserved. + +This file contains confidential and proprietary information +of Xilinx, Inc. and is protected under U.S. and +international copyright and other intellectual property +laws. + +DISCLAIMER +This disclaimer is not a license and does not grant any +rights to the materials distributed herewith. Except as +otherwise provided in a valid license issued to you by +Xilinx, and to the maximum extent permitted by applicable +law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +(2) Xilinx shall not be liable (whether in contract or tort, +including negligence, or under any other theory of +liability) for any loss or damage of any kind or nature +related to, arising under or in connection with these +materials, including for any direct, or any indirect, +special, incidental, or consequential loss or damage +(including loss of data, profits, goodwill, or any type of +loss or damage suffered as a result of any action brought +by a third party) even if such damage or loss was +reasonably foreseeable or Xilinx had been advised of the +possibility of the same. + +CRITICAL APPLICATIONS +Xilinx products are not designed or intended to be fail- +safe, or for use in any application requiring fail-safe +performance, such as life-support or safety devices or +systems, Class III medical devices, nuclear facilities, +applications related to the deployment of airbags, or any +other applications that could lead to death, personal +injury, or severe property or environmental damage +(individually and collectively, "Critical +Applications"). Customer assumes the sole risk and +liability of any use of Xilinx products in Critical +Applications, subject only to applicable laws and +regulations governing limitations on product liability. + +THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +PART OF THIS FILE AT ALL TIMES. diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/sim/z_turn_rst_ps_7_166M_0.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/sim/z_turn_rst_ps_7_166M_0.vhd new file mode 100644 index 0000000..867916e --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/sim/z_turn_rst_ps_7_166M_0.vhd @@ -0,0 +1,138 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:proc_sys_reset:5.0 +-- IP Revision: 7 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY proc_sys_reset_v5_0; +USE proc_sys_reset_v5_0.proc_sys_reset; + +ENTITY z_turn_rst_ps_7_166M_0 IS + PORT ( + slowest_sync_clk : IN STD_LOGIC; + ext_reset_in : IN STD_LOGIC; + aux_reset_in : IN STD_LOGIC; + mb_debug_sys_rst : IN STD_LOGIC; + dcm_locked : IN STD_LOGIC; + mb_reset : OUT STD_LOGIC; + bus_struct_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + interconnect_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_rst_ps_7_166M_0; + +ARCHITECTURE z_turn_rst_ps_7_166M_0_arch OF z_turn_rst_ps_7_166M_0 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_rst_ps_7_166M_0_arch: ARCHITECTURE IS "yes"; + + COMPONENT proc_sys_reset IS + GENERIC ( + C_FAMILY : STRING; + C_EXT_RST_WIDTH : INTEGER; + C_AUX_RST_WIDTH : INTEGER; + C_EXT_RESET_HIGH : STD_LOGIC; + C_AUX_RESET_HIGH : STD_LOGIC; + C_NUM_BUS_RST : INTEGER; + C_NUM_PERP_RST : INTEGER; + C_NUM_INTERCONNECT_ARESETN : INTEGER; + C_NUM_PERP_ARESETN : INTEGER + ); + PORT ( + slowest_sync_clk : IN STD_LOGIC; + ext_reset_in : IN STD_LOGIC; + aux_reset_in : IN STD_LOGIC; + mb_debug_sys_rst : IN STD_LOGIC; + dcm_locked : IN STD_LOGIC; + mb_reset : OUT STD_LOGIC; + bus_struct_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + interconnect_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT proc_sys_reset; + ATTRIBUTE X_INTERFACE_INFO : STRING; + ATTRIBUTE X_INTERFACE_INFO OF slowest_sync_clk: SIGNAL IS "xilinx.com:signal:clock:1.0 clock CLK"; + ATTRIBUTE X_INTERFACE_INFO OF ext_reset_in: SIGNAL IS "xilinx.com:signal:reset:1.0 ext_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF aux_reset_in: SIGNAL IS "xilinx.com:signal:reset:1.0 aux_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF mb_debug_sys_rst: SIGNAL IS "xilinx.com:signal:reset:1.0 dbg_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF mb_reset: SIGNAL IS "xilinx.com:signal:reset:1.0 mb_rst RST"; + ATTRIBUTE X_INTERFACE_INFO OF bus_struct_reset: SIGNAL IS "xilinx.com:signal:reset:1.0 bus_struct_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF peripheral_reset: SIGNAL IS "xilinx.com:signal:reset:1.0 peripheral_high_rst RST"; + ATTRIBUTE X_INTERFACE_INFO OF interconnect_aresetn: SIGNAL IS "xilinx.com:signal:reset:1.0 interconnect_low_rst RST"; + ATTRIBUTE X_INTERFACE_INFO OF peripheral_aresetn: SIGNAL IS "xilinx.com:signal:reset:1.0 peripheral_low_rst RST"; +BEGIN + U0 : proc_sys_reset + GENERIC MAP ( + C_FAMILY => "zynq", + C_EXT_RST_WIDTH => 4, + C_AUX_RST_WIDTH => 4, + C_EXT_RESET_HIGH => '0', + C_AUX_RESET_HIGH => '0', + C_NUM_BUS_RST => 1, + C_NUM_PERP_RST => 1, + C_NUM_INTERCONNECT_ARESETN => 1, + C_NUM_PERP_ARESETN => 1 + ) + PORT MAP ( + slowest_sync_clk => slowest_sync_clk, + ext_reset_in => ext_reset_in, + aux_reset_in => aux_reset_in, + mb_debug_sys_rst => mb_debug_sys_rst, + dcm_locked => dcm_locked, + mb_reset => mb_reset, + bus_struct_reset => bus_struct_reset, + peripheral_reset => peripheral_reset, + interconnect_aresetn => interconnect_aresetn, + peripheral_aresetn => peripheral_aresetn + ); +END z_turn_rst_ps_7_166M_0_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/synth/z_turn_rst_ps_7_166M_0.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/synth/z_turn_rst_ps_7_166M_0.vhd new file mode 100644 index 0000000..3479bc5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/synth/z_turn_rst_ps_7_166M_0.vhd @@ -0,0 +1,144 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:proc_sys_reset:5.0 +-- IP Revision: 7 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY proc_sys_reset_v5_0; +USE proc_sys_reset_v5_0.proc_sys_reset; + +ENTITY z_turn_rst_ps_7_166M_0 IS + PORT ( + slowest_sync_clk : IN STD_LOGIC; + ext_reset_in : IN STD_LOGIC; + aux_reset_in : IN STD_LOGIC; + mb_debug_sys_rst : IN STD_LOGIC; + dcm_locked : IN STD_LOGIC; + mb_reset : OUT STD_LOGIC; + bus_struct_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + interconnect_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_rst_ps_7_166M_0; + +ARCHITECTURE z_turn_rst_ps_7_166M_0_arch OF z_turn_rst_ps_7_166M_0 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_rst_ps_7_166M_0_arch: ARCHITECTURE IS "yes"; + + COMPONENT proc_sys_reset IS + GENERIC ( + C_FAMILY : STRING; + C_EXT_RST_WIDTH : INTEGER; + C_AUX_RST_WIDTH : INTEGER; + C_EXT_RESET_HIGH : STD_LOGIC; + C_AUX_RESET_HIGH : STD_LOGIC; + C_NUM_BUS_RST : INTEGER; + C_NUM_PERP_RST : INTEGER; + C_NUM_INTERCONNECT_ARESETN : INTEGER; + C_NUM_PERP_ARESETN : INTEGER + ); + PORT ( + slowest_sync_clk : IN STD_LOGIC; + ext_reset_in : IN STD_LOGIC; + aux_reset_in : IN STD_LOGIC; + mb_debug_sys_rst : IN STD_LOGIC; + dcm_locked : IN STD_LOGIC; + mb_reset : OUT STD_LOGIC; + bus_struct_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_reset : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + interconnect_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); + peripheral_aresetn : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT proc_sys_reset; + ATTRIBUTE X_CORE_INFO : STRING; + ATTRIBUTE X_CORE_INFO OF z_turn_rst_ps_7_166M_0_arch: ARCHITECTURE IS "proc_sys_reset,Vivado 2015.2"; + ATTRIBUTE CHECK_LICENSE_TYPE : STRING; + ATTRIBUTE CHECK_LICENSE_TYPE OF z_turn_rst_ps_7_166M_0_arch : ARCHITECTURE IS "z_turn_rst_ps_7_166M_0,proc_sys_reset,{}"; + ATTRIBUTE CORE_GENERATION_INFO : STRING; + ATTRIBUTE CORE_GENERATION_INFO OF z_turn_rst_ps_7_166M_0_arch: ARCHITECTURE IS "z_turn_rst_ps_7_166M_0,proc_sys_reset,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=proc_sys_reset,x_ipVersion=5.0,x_ipCoreRevision=7,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,C_FAMILY=zynq,C_EXT_RST_WIDTH=4,C_AUX_RST_WIDTH=4,C_EXT_RESET_HIGH=0,C_AUX_RESET_HIGH=0,C_NUM_BUS_RST=1,C_NUM_PERP_RST=1,C_NUM_INTERCONNECT_ARESETN=1,C_NUM_PERP_ARESETN=1}"; + ATTRIBUTE X_INTERFACE_INFO : STRING; + ATTRIBUTE X_INTERFACE_INFO OF slowest_sync_clk: SIGNAL IS "xilinx.com:signal:clock:1.0 clock CLK"; + ATTRIBUTE X_INTERFACE_INFO OF ext_reset_in: SIGNAL IS "xilinx.com:signal:reset:1.0 ext_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF aux_reset_in: SIGNAL IS "xilinx.com:signal:reset:1.0 aux_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF mb_debug_sys_rst: SIGNAL IS "xilinx.com:signal:reset:1.0 dbg_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF mb_reset: SIGNAL IS "xilinx.com:signal:reset:1.0 mb_rst RST"; + ATTRIBUTE X_INTERFACE_INFO OF bus_struct_reset: SIGNAL IS "xilinx.com:signal:reset:1.0 bus_struct_reset RST"; + ATTRIBUTE X_INTERFACE_INFO OF peripheral_reset: SIGNAL IS "xilinx.com:signal:reset:1.0 peripheral_high_rst RST"; + ATTRIBUTE X_INTERFACE_INFO OF interconnect_aresetn: SIGNAL IS "xilinx.com:signal:reset:1.0 interconnect_low_rst RST"; + ATTRIBUTE X_INTERFACE_INFO OF peripheral_aresetn: SIGNAL IS "xilinx.com:signal:reset:1.0 peripheral_low_rst RST"; +BEGIN + U0 : proc_sys_reset + GENERIC MAP ( + C_FAMILY => "zynq", + C_EXT_RST_WIDTH => 4, + C_AUX_RST_WIDTH => 4, + C_EXT_RESET_HIGH => '0', + C_AUX_RESET_HIGH => '0', + C_NUM_BUS_RST => 1, + C_NUM_PERP_RST => 1, + C_NUM_INTERCONNECT_ARESETN => 1, + C_NUM_PERP_ARESETN => 1 + ) + PORT MAP ( + slowest_sync_clk => slowest_sync_clk, + ext_reset_in => ext_reset_in, + aux_reset_in => aux_reset_in, + mb_debug_sys_rst => mb_debug_sys_rst, + dcm_locked => dcm_locked, + mb_reset => mb_reset, + bus_struct_reset => bus_struct_reset, + peripheral_reset => peripheral_reset, + interconnect_aresetn => interconnect_aresetn, + peripheral_aresetn => peripheral_aresetn + ); +END z_turn_rst_ps_7_166M_0_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.upgrade_log new file mode 100644 index 0000000..9bb29c8 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:17 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_rst_ps_7_166M_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_rst_ps_7_166M_0 (xilinx.com:ip:proc_sys_reset:5.0 (Rev. 7)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.veo new file mode 100644 index 0000000..a0c569d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.veo @@ -0,0 +1,74 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:proc_sys_reset:5.0 +// IP Revision: 7 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_rst_ps_7_166M_0 your_instance_name ( + .slowest_sync_clk(slowest_sync_clk), // input wire slowest_sync_clk + .ext_reset_in(ext_reset_in), // input wire ext_reset_in + .aux_reset_in(aux_reset_in), // input wire aux_reset_in + .mb_debug_sys_rst(mb_debug_sys_rst), // input wire mb_debug_sys_rst + .dcm_locked(dcm_locked), // input wire dcm_locked + .mb_reset(mb_reset), // output wire mb_reset + .bus_struct_reset(bus_struct_reset), // output wire [0 : 0] bus_struct_reset + .peripheral_reset(peripheral_reset), // output wire [0 : 0] peripheral_reset + .interconnect_aresetn(interconnect_aresetn), // output wire [0 : 0] interconnect_aresetn + .peripheral_aresetn(peripheral_aresetn) // output wire [0 : 0] peripheral_aresetn +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_rst_ps_7_166M_0.v when simulating +// the core, z_turn_rst_ps_7_166M_0. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xci new file mode 100644 index 0000000..959686b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xci @@ -0,0 +1,66 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_rst_ps_7_166M_0 + + + 1 + 1 + 1 + 1 + 0 + 0 + 4 + 4 + z_turn_rst_ps_7_166M_0 + false + Custom + zynq + 4 + 4 + 0 + 0 + 1 + 1 + 1 + 1 + 50000000 + z_turn_processing_system7_0_0_FCLK_CLK1 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 7 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xdc b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xdc new file mode 100644 index 0000000..0d284d0 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xdc @@ -0,0 +1,49 @@ + +# file: z_turn_rst_ps_7_166M_0.xdc +# (c) Copyright 2009 - 2013 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. + +set_false_path -to [get_pins -hier *cdc_to*/D] diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xml new file mode 100644 index 0000000..98de275 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0.xml @@ -0,0 +1,1204 @@ + + + xilinx.com + customized_ip + z_turn_rst_ps_7_166M_0 + 1.0 + + + clock + Clock + + + + + + + CLK + + + slowest_sync_clk + + + + + + ASSOCIATED_RESET + mb_reset:bus_struct_reset:interconnect_aresetn:peripheral_aresetn:peripheral_reset + + + FREQ_HZ + Slowest Sync clock frequency + Slowest Synchronous clock frequency + 50000000 + + + CLK_DOMAIN + z_turn_processing_system7_0_0_FCLK_CLK1 + + + + + ext_reset + Ext_Reset + + + + + + + RST + + + ext_reset_in + + + + + + BOARD.ASSOCIATED_PARAM + RESET_BOARD_INTERFACE + + + + required + + + + + + + + aux_reset + aux_reset + + + + + + + RST + + + aux_reset_in + + + + + + dbg_reset + DBG_Reset + + + + + + + RST + + + mb_debug_sys_rst + + + + + + POLARITY + ACTIVE_HIGH + + + + + mb_rst + MB_rst + + + + + + + RST + + + mb_reset + + + + + + POLARITY + ACTIVE_HIGH + + + TYPE + PROCESSOR + + + + + bus_struct_reset + bus_struct_reset + + + + + + + RST + + + bus_struct_reset + + + + + + POLARITY + ACTIVE_HIGH + + + TYPE + INTERCONNECT + + + + + interconnect_low_rst + interconnect_low_rst + + + + + + + RST + + + interconnect_aresetn + + + + + + POLARITY + ACTIVE_LOW + + + TYPE + INTERCONNECT + + + + + peripheral_high_rst + peripheral_high_rst + + + + + + + RST + + + peripheral_reset + + + + + + POLARITY + ACTIVE_HIGH + + + TYPE + PERIPHERAL + + + + + peripheral_low_rst + peripheral_low_rst + + + + + + + RST + + + peripheral_aresetn + + + + + + POLARITY + ACTIVE_LOW + + + TYPE + PERIPHERAL + + + + + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + c4626279 + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + + xilinx_vhdlsynthesis_xilinx_com_ip_lib_cdc_1_0__ref_view_fileset + + + xilinx_vhdlsynthesis_view_fileset + + + + customizationCRC + c4626279 + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_synthesisconstraints + Synthesis Constraints + :vivado.xilinx.com:synthesis.constraints + + xilinx_synthesisconstraints_view_fileset + + + + customizationCRC + c4626279 + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesiswrapper + VHDL Synthesis Wrapper + vhdlSource:vivado.xilinx.com:synthesis.wrapper + vhdl + + xilinx_vhdlsynthesiswrapper_view_fileset + + + + customizationCRC + c4626279 + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + + xilinx_vhdlbehavioralsimulation_xilinx_com_ip_lib_cdc_1_0__ref_view_fileset + + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + customizationCRC + e72ca2db + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Wed Jul 08 07:19:55 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsimulationwrapper + VHDL Simulation Wrapper + vhdlSource:vivado.xilinx.com:simulation.wrapper + vhdl + + xilinx_vhdlsimulationwrapper_view_fileset + + + + customizationCRC + e72ca2db + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_implementation + Implementation + :vivado.xilinx.com:implementation + + xilinx_implementation_view_fileset + + + + customizationCRC + c4626279 + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + c4626279 + + + customizationCRCversion + 5 + + + boundaryCRC + db2c5124 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + + + slowest_sync_clk + + in + + + std_logic + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + true + + + + + + ext_reset_in + + in + + + std_logic + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + true + + + + + + aux_reset_in + + in + + + std_logic + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 1 + + + + + + true + + + + + + mb_debug_sys_rst + + in + + + std_logic + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 0 + + + + + + true + + + + + + dcm_locked + + in + + + std_logic + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 0x1 + + + + + mb_reset + + out + + + std_logic + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 0x0 + + + + + + true + + + + + + bus_struct_reset + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 0 + + + + + + true + + + + + + peripheral_reset + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 0 + + + + + + true + + + + + + interconnect_aresetn + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 1 + + + + + + true + + + + + + peripheral_aresetn + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + 1 + + + + + + true + + + + + + + + C_FAMILY + zynq + + + C_EXT_RST_WIDTH + Ext Rst Width + 4 + + + C_AUX_RST_WIDTH + Aux Rst Width + 4 + + + C_EXT_RESET_HIGH + Ext Reset High + 0 + + + C_AUX_RESET_HIGH + Aux Reset High + 0 + + + C_NUM_BUS_RST + No. of Bus Reset (Active High) + 1 + + + C_NUM_PERP_RST + No. of Peripheral Reset (Active High) + 1 + + + C_NUM_INTERCONNECT_ARESETN + No. of Interconnect Reset (Active Low) + 1 + + + C_NUM_PERP_ARESETN + No. of Peripheral Reset (Active Low) + 1 + + + + + + choices_0 + Custom + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_rst_ps_7_166M_0.veo + verilogTemplate + + + + xilinx_vhdlsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/upcnt_n.vhd + vhdlSource + proc_sys_reset_v5_0 + + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/sequence.vhd + vhdlSource + proc_sys_reset_v5_0 + + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/lpf.vhd + vhdlSource + proc_sys_reset_v5_0 + + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/proc_sys_reset.vhd + vhdlSource + proc_sys_reset_v5_0 + + + z_turn_rst_ps_7_166M_0.xdc + xdc + + + + xilinx_vhdlsynthesis_xilinx_com_ip_lib_cdc_1_0__ref_view_fileset + + ../../../../ipshared/xilinx.com/lib_cdc_v1_0/ea79928f/hdl/src/vhdl/cdc_sync.vhd + vhdlSource + lib_cdc_v1_0 + + + + + + + + + + + xilinx_synthesisconstraints_view_fileset + + z_turn_rst_ps_7_166M_0_ooc.xdc + xdc + USED_IN_synthesis + USED_IN_implementation + USED_IN_out_of_context + + + + xilinx_vhdlsynthesiswrapper_view_fileset + + synth/z_turn_rst_ps_7_166M_0.vhd + vhdlSource + xil_defaultlib + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/upcnt_n.vhd + vhdlSource + proc_sys_reset_v5_0 + + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/sequence.vhd + vhdlSource + proc_sys_reset_v5_0 + + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/lpf.vhd + vhdlSource + proc_sys_reset_v5_0 + + + ../../../../ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/proc_sys_reset.vhd + vhdlSource + proc_sys_reset_v5_0 + + + + xilinx_vhdlbehavioralsimulation_xilinx_com_ip_lib_cdc_1_0__ref_view_fileset + + ../../../../ipshared/xilinx.com/lib_cdc_v1_0/ea79928f/hdl/src/vhdl/cdc_sync.vhd + vhdlSource + lib_cdc_v1_0 + + + + + + + + + + + xilinx_vhdlsimulationwrapper_view_fileset + + sim/z_turn_rst_ps_7_166M_0.vhd + vhdlSource + xil_defaultlib + + + + xilinx_implementation_view_fileset + + z_turn_rst_ps_7_166M_0_board.xdc + xdc + USED_IN_synthesis + USED_IN_implementation + USED_IN_board + + + + xilinx_versioninformation_view_fileset + + doc/proc_sys_reset_v5_0_changelog.txt + text + + + + Processor Reset System + + + C_NUM_PERP_ARESETN + No. of Peripheral Reset (Active Low) + 1 + + + C_NUM_INTERCONNECT_ARESETN + No. of Interconnect Reset (Active Low) + 1 + + + C_NUM_PERP_RST + No. of Peripheral Reset (Active High) + 1 + + + C_NUM_BUS_RST + No. of Bus Reset (Active High) + 1 + + + C_AUX_RESET_HIGH + Aux Reset High + 0 + + + C_EXT_RESET_HIGH + Ext Reset High + 0 + + + C_AUX_RST_WIDTH + Aux Rst Width + 4 + + + C_EXT_RST_WIDTH + Ext Rst Width + 4 + + + Component_Name + z_turn_rst_ps_7_166M_0 + + + USE_BOARD_FLOW + Generate Board based IO Constraints + false + + + RESET_BOARD_INTERFACE + Custom + + + + + + /Embedded_Processing/Clock_&_Reset + + Processor System Reset + level_2 + http://www.xilinx.com + 7 + + xilinx.com:ip:proc_sys_reset:4.00.a + + 2015-06-23T16:14:01Z + + + + + + + + + 2015.2 + + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_board.xdc b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_board.xdc new file mode 100644 index 0000000..3422a8e --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_board.xdc @@ -0,0 +1,2 @@ +#--------------------Physical Constraints----------------- + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_ooc.xdc b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_ooc.xdc new file mode 100644 index 0000000..af238a2 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_rst_ps_7_166M_0/z_turn_rst_ps_7_166M_0_ooc.xdc @@ -0,0 +1,58 @@ +# (c) Copyright 2012-2015 Xilinx, Inc. All rights reserved. +# +# This file contains confidential and proprietary information +# of Xilinx, Inc. and is protected under U.S. and +# international copyright and other intellectual property +# laws. +# +# DISCLAIMER +# This disclaimer is not a license and does not grant any +# rights to the materials distributed herewith. Except as +# otherwise provided in a valid license issued to you by +# Xilinx, and to the maximum extent permitted by applicable +# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +# (2) Xilinx shall not be liable (whether in contract or tort, +# including negligence, or under any other theory of +# liability) for any loss or damage of any kind or nature +# related to, arising under or in connection with these +# materials, including for any direct, or any indirect, +# special, incidental, or consequential loss or damage +# (including loss of data, profits, goodwill, or any type of +# loss or damage suffered as a result of any action brought +# by a third party) even if such damage or loss was +# reasonably foreseeable or Xilinx had been advised of the +# possibility of the same. +# +# CRITICAL APPLICATIONS +# Xilinx products are not designed or intended to be fail- +# safe, or for use in any application requiring fail-safe +# performance, such as life-support or safety devices or +# systems, Class III medical devices, nuclear facilities, +# applications related to the deployment of airbags, or any +# other applications that could lead to death, personal +# injury, or severe property or environmental damage +# (individually and collectively, "Critical +# Applications"). Customer assumes the sole risk and +# liability of any use of Xilinx products in Critical +# Applications, subject only to applicable laws and +# regulations governing limitations on product liability. +# +# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +# PART OF THIS FILE AT ALL TIMES. +# +# DO NOT MODIFY THIS FILE. +# ######################################################### +# +# This XDC is used only in OOC mode for synthesis, implementation +# +# ######################################################### + + +create_clock -period 20 -name slowest_sync_clk [get_ports slowest_sync_clk] +set_property HD.CLK_SRC BUFGCTRL_X0Y0 [get_ports slowest_sync_clk] + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/doc/util_vector_logic_v2_0_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/doc/util_vector_logic_v2_0_changelog.txt new file mode 100644 index 0000000..c29ccd1 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/doc/util_vector_logic_v2_0_changelog.txt @@ -0,0 +1,56 @@ +2014.4: +* Version 2.0 +* Changed the port ordering from (0 to C_SIZE-1) to (C_SIZE-1 downto 0) +* Updated the vhdl library name from util_vector_logic_v1_0 to util_vector_logic_v2_0 + +2014.1: + * Version 1.0 (Rev. 2) + * Updated the vhdl library name from work to util_vector_logic_v1_0 + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/sim/z_turn_util_vector_logic_0_0.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/sim/z_turn_util_vector_logic_0_0.vhd new file mode 100644 index 0000000..0a7713b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/sim/z_turn_util_vector_logic_0_0.vhd @@ -0,0 +1,92 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +-- IP Revision: 0 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY util_vector_logic_v2_0; +USE util_vector_logic_v2_0.util_vector_logic; + +ENTITY z_turn_util_vector_logic_0_0 IS + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_util_vector_logic_0_0; + +ARCHITECTURE z_turn_util_vector_logic_0_0_arch OF z_turn_util_vector_logic_0_0 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_util_vector_logic_0_0_arch: ARCHITECTURE IS "yes"; + + COMPONENT util_vector_logic IS + GENERIC ( + C_OPERATION : STRING; + C_SIZE : INTEGER + ); + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Op2 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT util_vector_logic; +BEGIN + U0 : util_vector_logic + GENERIC MAP ( + C_OPERATION => "not", + C_SIZE => 1 + ) + PORT MAP ( + Op1 => Op1, + Op2 => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)), + Res => Res + ); +END z_turn_util_vector_logic_0_0_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/synth/z_turn_util_vector_logic_0_0.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/synth/z_turn_util_vector_logic_0_0.vhd new file mode 100644 index 0000000..206bd25 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/synth/z_turn_util_vector_logic_0_0.vhd @@ -0,0 +1,98 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +-- IP Revision: 0 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY util_vector_logic_v2_0; +USE util_vector_logic_v2_0.util_vector_logic; + +ENTITY z_turn_util_vector_logic_0_0 IS + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_util_vector_logic_0_0; + +ARCHITECTURE z_turn_util_vector_logic_0_0_arch OF z_turn_util_vector_logic_0_0 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_util_vector_logic_0_0_arch: ARCHITECTURE IS "yes"; + + COMPONENT util_vector_logic IS + GENERIC ( + C_OPERATION : STRING; + C_SIZE : INTEGER + ); + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Op2 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT util_vector_logic; + ATTRIBUTE X_CORE_INFO : STRING; + ATTRIBUTE X_CORE_INFO OF z_turn_util_vector_logic_0_0_arch: ARCHITECTURE IS "util_vector_logic,Vivado 2015.2"; + ATTRIBUTE CHECK_LICENSE_TYPE : STRING; + ATTRIBUTE CHECK_LICENSE_TYPE OF z_turn_util_vector_logic_0_0_arch : ARCHITECTURE IS "z_turn_util_vector_logic_0_0,util_vector_logic,{}"; + ATTRIBUTE CORE_GENERATION_INFO : STRING; + ATTRIBUTE CORE_GENERATION_INFO OF z_turn_util_vector_logic_0_0_arch: ARCHITECTURE IS "z_turn_util_vector_logic_0_0,util_vector_logic,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=util_vector_logic,x_ipVersion=2.0,x_ipCoreRevision=0,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,C_OPERATION=not,C_SIZE=1}"; +BEGIN + U0 : util_vector_logic + GENERIC MAP ( + C_OPERATION => "not", + C_SIZE => 1 + ) + PORT MAP ( + Op1 => Op1, + Op2 => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)), + Res => Res + ); +END z_turn_util_vector_logic_0_0_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.upgrade_log new file mode 100644 index 0000000..7c1bd9d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:18 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_util_vector_logic_0_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_util_vector_logic_0_0 (xilinx.com:ip:util_vector_logic:2.0) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.veo new file mode 100644 index 0000000..09e2f30 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.veo @@ -0,0 +1,66 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +// IP Revision: 0 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_util_vector_logic_0_0 your_instance_name ( + .Op1(Op1), // input wire [0 : 0] Op1 + .Res(Res) // output wire [0 : 0] Res +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_util_vector_logic_0_0.v when simulating +// the core, z_turn_util_vector_logic_0_0. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xci new file mode 100644 index 0000000..eb28ce7 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xci @@ -0,0 +1,47 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_util_vector_logic_0_0 + + + 1 + not + z_turn_util_vector_logic_0_0 + not + 1 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 0 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xml new file mode 100644 index 0000000..353913b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_0/z_turn_util_vector_logic_0_0.xml @@ -0,0 +1,443 @@ + + + xilinx.com + customized_ip + z_turn_util_vector_logic_0_0 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + + xilinx_vhdlsynthesis_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 03:52:31 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesiswrapper + VHDL Synthesis Wrapper + vhdlSource:vivado.xilinx.com:synthesis.wrapper + vhdl + + xilinx_vhdlsynthesiswrapper_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + customizationCRC + e54c2ed1 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 03:52:31 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsimulationwrapper + VHDL Simulation Wrapper + vhdlSource:vivado.xilinx.com:simulation.wrapper + vhdl + + xilinx_vhdlsimulationwrapper_view_fileset + + + + customizationCRC + e54c2ed1 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + + + Op1 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + Op2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + optional + false + + + + + + Res + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + + C_OPERATION + C Operation + not + + + C_SIZE + C Size + 1 + + + + + + choices_0 + and + or + xor + not + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_util_vector_logic_0_0.veo + verilogTemplate + + + + xilinx_vhdlsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd + vhdlSource + util_vector_logic_v2_0 + + + + xilinx_vhdlsynthesiswrapper_view_fileset + + synth/z_turn_util_vector_logic_0_0.vhd + vhdlSource + xil_defaultlib + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd + vhdlSource + util_vector_logic_v2_0 + + + + xilinx_vhdlsimulationwrapper_view_fileset + + sim/z_turn_util_vector_logic_0_0.vhd + vhdlSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/util_vector_logic_v2_0_changelog.txt + text + + + + Performs bitwise logic operations on two n-bit inputs to produce a single n-bit output + + + C_SIZE + C Size + 1 + + + C_OPERATION + C Operation + not + + + Component_Name + z_turn_util_vector_logic_0_0 + + + + + + aartix7 + artix7 + artix7l + azynq + kintex7l + qartix7 + qkintex7 + qkintex7l + qvirtex7 + qzynq + virtex7 + zynq + kintex7 + kintexu + virtexu + + + /BaseIP + + Utility Vector Logic + + IPI + + Xilinx + http://www.xilinx.com + 0 + 2014-10-03T23:01:11Z + + + + + + + + 2014.4.0 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/doc/util_vector_logic_v2_0_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/doc/util_vector_logic_v2_0_changelog.txt new file mode 100644 index 0000000..c29ccd1 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/doc/util_vector_logic_v2_0_changelog.txt @@ -0,0 +1,56 @@ +2014.4: +* Version 2.0 +* Changed the port ordering from (0 to C_SIZE-1) to (C_SIZE-1 downto 0) +* Updated the vhdl library name from util_vector_logic_v1_0 to util_vector_logic_v2_0 + +2014.1: + * Version 1.0 (Rev. 2) + * Updated the vhdl library name from work to util_vector_logic_v1_0 + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/sim/z_turn_util_vector_logic_0_1.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/sim/z_turn_util_vector_logic_0_1.vhd new file mode 100644 index 0000000..4923f2b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/sim/z_turn_util_vector_logic_0_1.vhd @@ -0,0 +1,92 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +-- IP Revision: 0 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY util_vector_logic_v2_0; +USE util_vector_logic_v2_0.util_vector_logic; + +ENTITY z_turn_util_vector_logic_0_1 IS + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_util_vector_logic_0_1; + +ARCHITECTURE z_turn_util_vector_logic_0_1_arch OF z_turn_util_vector_logic_0_1 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_util_vector_logic_0_1_arch: ARCHITECTURE IS "yes"; + + COMPONENT util_vector_logic IS + GENERIC ( + C_OPERATION : STRING; + C_SIZE : INTEGER + ); + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Op2 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT util_vector_logic; +BEGIN + U0 : util_vector_logic + GENERIC MAP ( + C_OPERATION => "not", + C_SIZE => 1 + ) + PORT MAP ( + Op1 => Op1, + Op2 => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)), + Res => Res + ); +END z_turn_util_vector_logic_0_1_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/synth/z_turn_util_vector_logic_0_1.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/synth/z_turn_util_vector_logic_0_1.vhd new file mode 100644 index 0000000..8a8f9a9 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/synth/z_turn_util_vector_logic_0_1.vhd @@ -0,0 +1,98 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +-- IP Revision: 0 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY util_vector_logic_v2_0; +USE util_vector_logic_v2_0.util_vector_logic; + +ENTITY z_turn_util_vector_logic_0_1 IS + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_util_vector_logic_0_1; + +ARCHITECTURE z_turn_util_vector_logic_0_1_arch OF z_turn_util_vector_logic_0_1 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_util_vector_logic_0_1_arch: ARCHITECTURE IS "yes"; + + COMPONENT util_vector_logic IS + GENERIC ( + C_OPERATION : STRING; + C_SIZE : INTEGER + ); + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Op2 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT util_vector_logic; + ATTRIBUTE X_CORE_INFO : STRING; + ATTRIBUTE X_CORE_INFO OF z_turn_util_vector_logic_0_1_arch: ARCHITECTURE IS "util_vector_logic,Vivado 2015.2"; + ATTRIBUTE CHECK_LICENSE_TYPE : STRING; + ATTRIBUTE CHECK_LICENSE_TYPE OF z_turn_util_vector_logic_0_1_arch : ARCHITECTURE IS "z_turn_util_vector_logic_0_1,util_vector_logic,{}"; + ATTRIBUTE CORE_GENERATION_INFO : STRING; + ATTRIBUTE CORE_GENERATION_INFO OF z_turn_util_vector_logic_0_1_arch: ARCHITECTURE IS "z_turn_util_vector_logic_0_1,util_vector_logic,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=util_vector_logic,x_ipVersion=2.0,x_ipCoreRevision=0,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,C_OPERATION=not,C_SIZE=1}"; +BEGIN + U0 : util_vector_logic + GENERIC MAP ( + C_OPERATION => "not", + C_SIZE => 1 + ) + PORT MAP ( + Op1 => Op1, + Op2 => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)), + Res => Res + ); +END z_turn_util_vector_logic_0_1_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.upgrade_log new file mode 100644 index 0000000..5b8c4cf --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:21 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_util_vector_logic_0_1' + +1. Summary +---------- + +SUCCESS in the update of z_turn_util_vector_logic_0_1 (xilinx.com:ip:util_vector_logic:2.0) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.veo new file mode 100644 index 0000000..e48254c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.veo @@ -0,0 +1,66 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +// IP Revision: 0 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_util_vector_logic_0_1 your_instance_name ( + .Op1(Op1), // input wire [0 : 0] Op1 + .Res(Res) // output wire [0 : 0] Res +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_util_vector_logic_0_1.v when simulating +// the core, z_turn_util_vector_logic_0_1. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xci new file mode 100644 index 0000000..0eabad4 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xci @@ -0,0 +1,47 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_util_vector_logic_0_1 + + + 1 + not + z_turn_util_vector_logic_0_1 + not + 1 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 0 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xml new file mode 100644 index 0000000..f8f2bba --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_0_1/z_turn_util_vector_logic_0_1.xml @@ -0,0 +1,443 @@ + + + xilinx.com + customized_ip + z_turn_util_vector_logic_0_1 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + + xilinx_vhdlsynthesis_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 03:52:31 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesiswrapper + VHDL Synthesis Wrapper + vhdlSource:vivado.xilinx.com:synthesis.wrapper + vhdl + + xilinx_vhdlsynthesiswrapper_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + customizationCRC + e54c2ed1 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 03:52:31 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsimulationwrapper + VHDL Simulation Wrapper + vhdlSource:vivado.xilinx.com:simulation.wrapper + vhdl + + xilinx_vhdlsimulationwrapper_view_fileset + + + + customizationCRC + e54c2ed1 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + + + Op1 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + Op2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + optional + false + + + + + + Res + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + + C_OPERATION + C Operation + not + + + C_SIZE + C Size + 1 + + + + + + choices_0 + and + or + xor + not + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_util_vector_logic_0_1.veo + verilogTemplate + + + + xilinx_vhdlsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd + vhdlSource + util_vector_logic_v2_0 + + + + xilinx_vhdlsynthesiswrapper_view_fileset + + synth/z_turn_util_vector_logic_0_1.vhd + vhdlSource + xil_defaultlib + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd + vhdlSource + util_vector_logic_v2_0 + + + + xilinx_vhdlsimulationwrapper_view_fileset + + sim/z_turn_util_vector_logic_0_1.vhd + vhdlSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/util_vector_logic_v2_0_changelog.txt + text + + + + Performs bitwise logic operations on two n-bit inputs to produce a single n-bit output + + + C_SIZE + C Size + 1 + + + C_OPERATION + C Operation + not + + + Component_Name + z_turn_util_vector_logic_0_1 + + + + + + aartix7 + artix7 + artix7l + azynq + kintex7l + qartix7 + qkintex7 + qkintex7l + qvirtex7 + qzynq + virtex7 + zynq + kintex7 + kintexu + virtexu + + + /BaseIP + + Utility Vector Logic + + IPI + + Xilinx + http://www.xilinx.com + 0 + 2014-10-03T23:01:11Z + + + + + + + + 2014.4.0 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/doc/util_vector_logic_v2_0_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/doc/util_vector_logic_v2_0_changelog.txt new file mode 100644 index 0000000..c29ccd1 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/doc/util_vector_logic_v2_0_changelog.txt @@ -0,0 +1,56 @@ +2014.4: +* Version 2.0 +* Changed the port ordering from (0 to C_SIZE-1) to (C_SIZE-1 downto 0) +* Updated the vhdl library name from util_vector_logic_v1_0 to util_vector_logic_v2_0 + +2014.1: + * Version 1.0 (Rev. 2) + * Updated the vhdl library name from work to util_vector_logic_v1_0 + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/sim/z_turn_util_vector_logic_1_0.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/sim/z_turn_util_vector_logic_1_0.vhd new file mode 100644 index 0000000..fdef930 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/sim/z_turn_util_vector_logic_1_0.vhd @@ -0,0 +1,92 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +-- IP Revision: 0 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY util_vector_logic_v2_0; +USE util_vector_logic_v2_0.util_vector_logic; + +ENTITY z_turn_util_vector_logic_1_0 IS + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_util_vector_logic_1_0; + +ARCHITECTURE z_turn_util_vector_logic_1_0_arch OF z_turn_util_vector_logic_1_0 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_util_vector_logic_1_0_arch: ARCHITECTURE IS "yes"; + + COMPONENT util_vector_logic IS + GENERIC ( + C_OPERATION : STRING; + C_SIZE : INTEGER + ); + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Op2 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT util_vector_logic; +BEGIN + U0 : util_vector_logic + GENERIC MAP ( + C_OPERATION => "not", + C_SIZE => 1 + ) + PORT MAP ( + Op1 => Op1, + Op2 => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)), + Res => Res + ); +END z_turn_util_vector_logic_1_0_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/synth/z_turn_util_vector_logic_1_0.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/synth/z_turn_util_vector_logic_1_0.vhd new file mode 100644 index 0000000..57a667f --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/synth/z_turn_util_vector_logic_1_0.vhd @@ -0,0 +1,98 @@ +-- (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +-- +-- This file contains confidential and proprietary information +-- of Xilinx, Inc. and is protected under U.S. and +-- international copyright and other intellectual property +-- laws. +-- +-- DISCLAIMER +-- This disclaimer is not a license and does not grant any +-- rights to the materials distributed herewith. Except as +-- otherwise provided in a valid license issued to you by +-- Xilinx, and to the maximum extent permitted by applicable +-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +-- (2) Xilinx shall not be liable (whether in contract or tort, +-- including negligence, or under any other theory of +-- liability) for any loss or damage of any kind or nature +-- related to, arising under or in connection with these +-- materials, including for any direct, or any indirect, +-- special, incidental, or consequential loss or damage +-- (including loss of data, profits, goodwill, or any type of +-- loss or damage suffered as a result of any action brought +-- by a third party) even if such damage or loss was +-- reasonably foreseeable or Xilinx had been advised of the +-- possibility of the same. +-- +-- CRITICAL APPLICATIONS +-- Xilinx products are not designed or intended to be fail- +-- safe, or for use in any application requiring fail-safe +-- performance, such as life-support or safety devices or +-- systems, Class III medical devices, nuclear facilities, +-- applications related to the deployment of airbags, or any +-- other applications that could lead to death, personal +-- injury, or severe property or environmental damage +-- (individually and collectively, "Critical +-- Applications"). Customer assumes the sole risk and +-- liability of any use of Xilinx products in Critical +-- Applications, subject only to applicable laws and +-- regulations governing limitations on product liability. +-- +-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +-- PART OF THIS FILE AT ALL TIMES. +-- +-- DO NOT MODIFY THIS FILE. + +-- IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +-- IP Revision: 0 + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; + +LIBRARY util_vector_logic_v2_0; +USE util_vector_logic_v2_0.util_vector_logic; + +ENTITY z_turn_util_vector_logic_1_0 IS + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); +END z_turn_util_vector_logic_1_0; + +ARCHITECTURE z_turn_util_vector_logic_1_0_arch OF z_turn_util_vector_logic_1_0 IS + ATTRIBUTE DowngradeIPIdentifiedWarnings : string; + ATTRIBUTE DowngradeIPIdentifiedWarnings OF z_turn_util_vector_logic_1_0_arch: ARCHITECTURE IS "yes"; + + COMPONENT util_vector_logic IS + GENERIC ( + C_OPERATION : STRING; + C_SIZE : INTEGER + ); + PORT ( + Op1 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Op2 : IN STD_LOGIC_VECTOR(0 DOWNTO 0); + Res : OUT STD_LOGIC_VECTOR(0 DOWNTO 0) + ); + END COMPONENT util_vector_logic; + ATTRIBUTE X_CORE_INFO : STRING; + ATTRIBUTE X_CORE_INFO OF z_turn_util_vector_logic_1_0_arch: ARCHITECTURE IS "util_vector_logic,Vivado 2015.2"; + ATTRIBUTE CHECK_LICENSE_TYPE : STRING; + ATTRIBUTE CHECK_LICENSE_TYPE OF z_turn_util_vector_logic_1_0_arch : ARCHITECTURE IS "z_turn_util_vector_logic_1_0,util_vector_logic,{}"; + ATTRIBUTE CORE_GENERATION_INFO : STRING; + ATTRIBUTE CORE_GENERATION_INFO OF z_turn_util_vector_logic_1_0_arch: ARCHITECTURE IS "z_turn_util_vector_logic_1_0,util_vector_logic,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=util_vector_logic,x_ipVersion=2.0,x_ipCoreRevision=0,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,C_OPERATION=not,C_SIZE=1}"; +BEGIN + U0 : util_vector_logic + GENERIC MAP ( + C_OPERATION => "not", + C_SIZE => 1 + ) + PORT MAP ( + Op1 => Op1, + Op2 => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 1)), + Res => Res + ); +END z_turn_util_vector_logic_1_0_arch; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.upgrade_log new file mode 100644 index 0000000..7c83933 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:22 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_util_vector_logic_1_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_util_vector_logic_1_0 (xilinx.com:ip:util_vector_logic:2.0) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.veo new file mode 100644 index 0000000..4090d08 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.veo @@ -0,0 +1,66 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:util_vector_logic:2.0 +// IP Revision: 0 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_util_vector_logic_1_0 your_instance_name ( + .Op1(Op1), // input wire [0 : 0] Op1 + .Res(Res) // output wire [0 : 0] Res +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_util_vector_logic_1_0.v when simulating +// the core, z_turn_util_vector_logic_1_0. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xci new file mode 100644 index 0000000..a09eb1e --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xci @@ -0,0 +1,47 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_util_vector_logic_1_0 + + + 1 + not + z_turn_util_vector_logic_1_0 + not + 1 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 0 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xml new file mode 100644 index 0000000..dc7a4b3 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_util_vector_logic_1_0/z_turn_util_vector_logic_1_0.xml @@ -0,0 +1,443 @@ + + + xilinx.com + customized_ip + z_turn_util_vector_logic_1_0 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + + xilinx_vhdlsynthesis_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 03:52:31 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsynthesiswrapper + VHDL Synthesis Wrapper + vhdlSource:vivado.xilinx.com:synthesis.wrapper + vhdl + + xilinx_vhdlsynthesiswrapper_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + customizationCRC + e54c2ed1 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 03:52:31 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_vhdlsimulationwrapper + VHDL Simulation Wrapper + vhdlSource:vivado.xilinx.com:simulation.wrapper + vhdl + + xilinx_vhdlsimulationwrapper_view_fileset + + + + customizationCRC + e54c2ed1 + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + 41518b0e + + + customizationCRCversion + 5 + + + boundaryCRC + 2cb6a31c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + + + Op1 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + Op2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + optional + false + + + + + + Res + + out + + 0 + 0 + + + + std_logic_vector + xilinx_vhdlsynthesis + xilinx_vhdlbehavioralsimulation + + + + + + + + C_OPERATION + C Operation + not + + + C_SIZE + C Size + 1 + + + + + + choices_0 + and + or + xor + not + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_util_vector_logic_1_0.veo + verilogTemplate + + + + xilinx_vhdlsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd + vhdlSource + util_vector_logic_v2_0 + + + + xilinx_vhdlsynthesiswrapper_view_fileset + + synth/z_turn_util_vector_logic_1_0.vhd + vhdlSource + xil_defaultlib + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd + vhdlSource + util_vector_logic_v2_0 + + + + xilinx_vhdlsimulationwrapper_view_fileset + + sim/z_turn_util_vector_logic_1_0.vhd + vhdlSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/util_vector_logic_v2_0_changelog.txt + text + + + + Performs bitwise logic operations on two n-bit inputs to produce a single n-bit output + + + C_SIZE + C Size + 1 + + + C_OPERATION + C Operation + not + + + Component_Name + z_turn_util_vector_logic_1_0 + + + + + + aartix7 + artix7 + artix7l + azynq + kintex7l + qartix7 + qkintex7 + qkintex7l + qvirtex7 + qzynq + virtex7 + zynq + kintex7 + kintexu + virtexu + + + /BaseIP + + Utility Vector Logic + + IPI + + Xilinx + http://www.xilinx.com + 0 + 2014-10-03T23:01:11Z + + + + + + + + 2014.4.0 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/doc/xlconcat_v2_1_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/doc/xlconcat_v2_1_changelog.txt new file mode 100644 index 0000000..d07a13b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/doc/xlconcat_v2_1_changelog.txt @@ -0,0 +1,64 @@ +2014.4 + * Version 2.1 (Rev.1) + * Add Auto/Manual button for Inxx Width in GUI dialog. + +2014.2 + * Version 2.1 + * upgrade input sources from 16 to 32. + +2014.1: + * Version 2.0 + * Version 1.0 of the xlconcat block reverses the order in + * which input signals are concatenated. Version 2.0 + * preserves the order of input signals on the output. + * The upgrade from 1.0 to 2.0 will change input connections + * in order to preserve the overall the signal order on output. + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/sim/z_turn_xlconcat_0_0.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/sim/z_turn_xlconcat_0_0.v new file mode 100644 index 0000000..e6ec994 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/sim/z_turn_xlconcat_0_0.v @@ -0,0 +1,164 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +`timescale 1ns/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_0_0 ( + In0, + In1, + In2, + In3, + In4, + In5, + In6, + In7, + In8, + In9, + In10, + In11, + In12, + In13, + In14, + In15, + dout +); + +input wire [0 : 0] In0; +input wire [0 : 0] In1; +input wire [0 : 0] In2; +input wire [0 : 0] In3; +input wire [0 : 0] In4; +input wire [0 : 0] In5; +input wire [0 : 0] In6; +input wire [0 : 0] In7; +input wire [0 : 0] In8; +input wire [0 : 0] In9; +input wire [0 : 0] In10; +input wire [0 : 0] In11; +input wire [0 : 0] In12; +input wire [0 : 0] In13; +input wire [0 : 0] In14; +input wire [0 : 0] In15; +output wire [15 : 0] dout; + + xlconcat #( + .IN0_WIDTH(1), + .IN1_WIDTH(1), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(1), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(16), + .NUM_PORTS(16) + ) inst ( + .In0(In0), + .In1(In1), + .In2(In2), + .In3(In3), + .In4(In4), + .In5(In5), + .In6(In6), + .In7(In7), + .In8(In8), + .In9(In9), + .In10(In10), + .In11(In11), + .In12(In12), + .In13(In13), + .In14(In14), + .In15(In15), + .In16(1'B0), + .In17(1'B0), + .In18(1'B0), + .In19(1'B0), + .In20(1'B0), + .In21(1'B0), + .In22(1'B0), + .In23(1'B0), + .In24(1'B0), + .In25(1'B0), + .In26(1'B0), + .In27(1'B0), + .In28(1'B0), + .In29(1'B0), + .In30(1'B0), + .In31(1'B0), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/synth/z_turn_xlconcat_0_0.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/synth/z_turn_xlconcat_0_0.v new file mode 100644 index 0000000..14ff4ec --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/synth/z_turn_xlconcat_0_0.v @@ -0,0 +1,165 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +(* X_CORE_INFO = "xlconcat,Vivado 2015.2" *) +(* CHECK_LICENSE_TYPE = "z_turn_xlconcat_0_0,xlconcat,{}" *) +(* CORE_GENERATION_INFO = "z_turn_xlconcat_0_0,xlconcat,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=xlconcat,x_ipVersion=2.1,x_ipCoreRevision=1,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,IN0_WIDTH=1,IN1_WIDTH=1,IN2_WIDTH=1,IN3_WIDTH=1,IN4_WIDTH=1,IN5_WIDTH=1,IN6_WIDTH=1,IN7_WIDTH=1,IN8_WIDTH=1,IN9_WIDTH=1,IN10_WIDTH=1,IN11_WIDTH=1,IN12_WIDTH=1,IN13_WIDTH=1,IN14_WIDTH=1,IN15_WIDTH=1,IN16_WIDTH=1,IN17_WIDTH=1,IN18_WIDTH=1,IN19_WIDTH=1,IN20_WIDTH=1,IN21_WIDTH=1,IN22_WIDTH=1,IN23_WIDTH=1,IN24_WIDTH=1,IN25_WIDTH=1,IN26_WIDTH=1,IN27_WIDTH=1,IN28_WIDTH=1,IN29_WIDTH=1,IN30_WIDTH=1,IN31_WIDTH=1,dout_width=16,NUM_PORTS=16}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_0_0 ( + In0, + In1, + In2, + In3, + In4, + In5, + In6, + In7, + In8, + In9, + In10, + In11, + In12, + In13, + In14, + In15, + dout +); + +input wire [0 : 0] In0; +input wire [0 : 0] In1; +input wire [0 : 0] In2; +input wire [0 : 0] In3; +input wire [0 : 0] In4; +input wire [0 : 0] In5; +input wire [0 : 0] In6; +input wire [0 : 0] In7; +input wire [0 : 0] In8; +input wire [0 : 0] In9; +input wire [0 : 0] In10; +input wire [0 : 0] In11; +input wire [0 : 0] In12; +input wire [0 : 0] In13; +input wire [0 : 0] In14; +input wire [0 : 0] In15; +output wire [15 : 0] dout; + + xlconcat #( + .IN0_WIDTH(1), + .IN1_WIDTH(1), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(1), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(16), + .NUM_PORTS(16) + ) inst ( + .In0(In0), + .In1(In1), + .In2(In2), + .In3(In3), + .In4(In4), + .In5(In5), + .In6(In6), + .In7(In7), + .In8(In8), + .In9(In9), + .In10(In10), + .In11(In11), + .In12(In12), + .In13(In13), + .In14(In14), + .In15(In15), + .In16(1'B0), + .In17(1'B0), + .In18(1'B0), + .In19(1'B0), + .In20(1'B0), + .In21(1'B0), + .In22(1'B0), + .In23(1'B0), + .In24(1'B0), + .In25(1'B0), + .In26(1'B0), + .In27(1'B0), + .In28(1'B0), + .In29(1'B0), + .In30(1'B0), + .In31(1'B0), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.upgrade_log new file mode 100644 index 0000000..00a29dc --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:23 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_xlconcat_0_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_xlconcat_0_0 (xilinx.com:ip:xlconcat:2.1 (Rev. 1)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.veo new file mode 100644 index 0000000..e553f93 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.veo @@ -0,0 +1,81 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_xlconcat_0_0 your_instance_name ( + .In0(In0), // input wire [0 : 0] In0 + .In1(In1), // input wire [0 : 0] In1 + .In2(In2), // input wire [0 : 0] In2 + .In3(In3), // input wire [0 : 0] In3 + .In4(In4), // input wire [0 : 0] In4 + .In5(In5), // input wire [0 : 0] In5 + .In6(In6), // input wire [0 : 0] In6 + .In7(In7), // input wire [0 : 0] In7 + .In8(In8), // input wire [0 : 0] In8 + .In9(In9), // input wire [0 : 0] In9 + .In10(In10), // input wire [0 : 0] In10 + .In11(In11), // input wire [0 : 0] In11 + .In12(In12), // input wire [0 : 0] In12 + .In13(In13), // input wire [0 : 0] In13 + .In14(In14), // input wire [0 : 0] In14 + .In15(In15), // input wire [0 : 0] In15 + .dout(dout) // output wire [15 : 0] dout +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_xlconcat_0_0.v when simulating +// the core, z_turn_xlconcat_0_0. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xci new file mode 100644 index 0000000..b231c0e --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xci @@ -0,0 +1,126 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_xlconcat_0_0 + + + 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + z_turn_xlconcat_0_0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 16 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 16 + 16 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 1 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xml new file mode 100644 index 0000000..64abb91 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_0/z_turn_xlconcat_0_0.xml @@ -0,0 +1,1936 @@ + + + xilinx.com + customized_ip + z_turn_xlconcat_0_0 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + e59d4259 + + + customizationCRCversion + 5 + + + boundaryCRC + c92f259f + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + + xilinx_verilogsynthesis_view_fileset + + + + customizationCRC + e59d4259 + + + customizationCRCversion + 5 + + + boundaryCRC + c92f259f + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesiswrapper + Verilog Synthesis Wrapper + verilogSource:vivado.xilinx.com:synthesis.wrapper + verilog + + xilinx_verilogsynthesiswrapper_view_fileset + + + + customizationCRC + e59d4259 + + + customizationCRCversion + 5 + + + boundaryCRC + c92f259f + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + + xilinx_verilogbehavioralsimulation_view_fileset + + + + customizationCRC + 0686b6b9 + + + customizationCRCversion + 5 + + + boundaryCRC + c92f259f + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsimulationwrapper + Verilog Simulation Wrapper + verilogSource:vivado.xilinx.com:simulation.wrapper + verilog + + xilinx_verilogsimulationwrapper_view_fileset + + + + customizationCRC + 0686b6b9 + + + customizationCRCversion + 5 + + + boundaryCRC + c92f259f + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + e59d4259 + + + customizationCRCversion + 5 + + + boundaryCRC + c92f259f + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:43 UTC 2015 + + + StaleAtRelink + false + + + + + + + In0 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In1 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In3 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In4 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In5 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In6 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In7 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In8 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In9 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In10 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In11 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In12 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In13 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In14 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In15 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In16 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In17 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In18 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In19 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In20 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In21 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In22 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In23 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In24 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In25 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In26 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In27 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In28 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In29 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In30 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In31 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + dout + + out + + 15 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + IN0_WIDTH + In0 Width + 1 + + + IN1_WIDTH + In1 Width + 1 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 1 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 16 + + + NUM_PORTS + Number of Ports + 16 + + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_xlconcat_0_0.veo + verilogTemplate + + + + xilinx_verilogsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsynthesiswrapper_view_fileset + + synth/z_turn_xlconcat_0_0.v + verilogSource + xil_defaultlib + + + + xilinx_verilogbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsimulationwrapper_view_fileset + + sim/z_turn_xlconcat_0_0.v + verilogSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/xlconcat_v2_1_changelog.txt + text + + + + Concatenates up to 32 ports into a single port + + + NUM_PORTS + Number of Ports + 16 + + + IN0_WIDTH + In0 Width + 1 + + + IN1_WIDTH + In1 Width + 1 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + Component_Name + z_turn_xlconcat_0_0 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 1 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 16 + + + + + + virtex7 + qvirtex7 + kintex7 + kintex7l + qkintex7 + qkintex7l + artix7 + artix7l + aartix7 + qartix7 + zynq + qzynq + azynq + virtexu + kintexu + + + /Basic_Elements + + Concat + + IPI + + http://www.xilinx.com + 1 + 2014-10-09T21:18:16Z + + + + + + + + + + + + + + + + + + + + + + 2014.4 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/doc/xlconcat_v2_1_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/doc/xlconcat_v2_1_changelog.txt new file mode 100644 index 0000000..d07a13b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/doc/xlconcat_v2_1_changelog.txt @@ -0,0 +1,64 @@ +2014.4 + * Version 2.1 (Rev.1) + * Add Auto/Manual button for Inxx Width in GUI dialog. + +2014.2 + * Version 2.1 + * upgrade input sources from 16 to 32. + +2014.1: + * Version 2.0 + * Version 1.0 of the xlconcat block reverses the order in + * which input signals are concatenated. Version 2.0 + * preserves the order of input signals on the output. + * The upgrade from 1.0 to 2.0 will change input connections + * in order to preserve the overall the signal order on output. + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/sim/z_turn_xlconcat_0_1.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/sim/z_turn_xlconcat_0_1.v new file mode 100644 index 0000000..d24b6a8 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/sim/z_turn_xlconcat_0_1.v @@ -0,0 +1,136 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +`timescale 1ns/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_0_1 ( + In0, + In1, + dout +); + +input wire [31 : 0] In0; +input wire [31 : 0] In1; +output wire [63 : 0] dout; + + xlconcat #( + .IN0_WIDTH(32), + .IN1_WIDTH(32), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(1), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(64), + .NUM_PORTS(2) + ) inst ( + .In0(In0), + .In1(In1), + .In2(1'B0), + .In3(1'B0), + .In4(1'B0), + .In5(1'B0), + .In6(1'B0), + .In7(1'B0), + .In8(1'B0), + .In9(1'B0), + .In10(1'B0), + .In11(1'B0), + .In12(1'B0), + .In13(1'B0), + .In14(1'B0), + .In15(1'B0), + .In16(1'B0), + .In17(1'B0), + .In18(1'B0), + .In19(1'B0), + .In20(1'B0), + .In21(1'B0), + .In22(1'B0), + .In23(1'B0), + .In24(1'B0), + .In25(1'B0), + .In26(1'B0), + .In27(1'B0), + .In28(1'B0), + .In29(1'B0), + .In30(1'B0), + .In31(1'B0), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/synth/z_turn_xlconcat_0_1.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/synth/z_turn_xlconcat_0_1.v new file mode 100644 index 0000000..d0fc1a3 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/synth/z_turn_xlconcat_0_1.v @@ -0,0 +1,137 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +(* X_CORE_INFO = "xlconcat,Vivado 2015.2" *) +(* CHECK_LICENSE_TYPE = "z_turn_xlconcat_0_1,xlconcat,{}" *) +(* CORE_GENERATION_INFO = "z_turn_xlconcat_0_1,xlconcat,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=xlconcat,x_ipVersion=2.1,x_ipCoreRevision=1,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,IN0_WIDTH=32,IN1_WIDTH=32,IN2_WIDTH=1,IN3_WIDTH=1,IN4_WIDTH=1,IN5_WIDTH=1,IN6_WIDTH=1,IN7_WIDTH=1,IN8_WIDTH=1,IN9_WIDTH=1,IN10_WIDTH=1,IN11_WIDTH=1,IN12_WIDTH=1,IN13_WIDTH=1,IN14_WIDTH=1,IN15_WIDTH=1,IN16_WIDTH=1,IN17_WIDTH=1,IN18_WIDTH=1,IN19_WIDTH=1,IN20_WIDTH=1,IN21_WIDTH=1,IN22_WIDTH=1,IN23_WIDTH=1,IN24_WIDTH=1,IN25_WIDTH=1,IN26_WIDTH=1,IN27_WIDTH=1,IN28_WIDTH=1,IN29_WIDTH=1,IN30_WIDTH=1,IN31_WIDTH=1,dout_width=64,NUM_PORTS=2}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_0_1 ( + In0, + In1, + dout +); + +input wire [31 : 0] In0; +input wire [31 : 0] In1; +output wire [63 : 0] dout; + + xlconcat #( + .IN0_WIDTH(32), + .IN1_WIDTH(32), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(1), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(64), + .NUM_PORTS(2) + ) inst ( + .In0(In0), + .In1(In1), + .In2(1'B0), + .In3(1'B0), + .In4(1'B0), + .In5(1'B0), + .In6(1'B0), + .In7(1'B0), + .In8(1'B0), + .In9(1'B0), + .In10(1'B0), + .In11(1'B0), + .In12(1'B0), + .In13(1'B0), + .In14(1'B0), + .In15(1'B0), + .In16(1'B0), + .In17(1'B0), + .In18(1'B0), + .In19(1'B0), + .In20(1'B0), + .In21(1'B0), + .In22(1'B0), + .In23(1'B0), + .In24(1'B0), + .In25(1'B0), + .In26(1'B0), + .In27(1'B0), + .In28(1'B0), + .In29(1'B0), + .In30(1'B0), + .In31(1'B0), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.upgrade_log new file mode 100644 index 0000000..c751b41 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:23 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_xlconcat_0_1' + +1. Summary +---------- + +SUCCESS in the update of z_turn_xlconcat_0_1 (xilinx.com:ip:xlconcat:2.1 (Rev. 1)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.veo new file mode 100644 index 0000000..4683bb4 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.veo @@ -0,0 +1,67 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_xlconcat_0_1 your_instance_name ( + .In0(In0), // input wire [31 : 0] In0 + .In1(In1), // input wire [31 : 0] In1 + .dout(dout) // output wire [63 : 0] dout +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_xlconcat_0_1.v when simulating +// the core, z_turn_xlconcat_0_1. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xci new file mode 100644 index 0000000..c087e8c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xci @@ -0,0 +1,111 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_xlconcat_0_1 + + + 2 + 32 + 32 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + z_turn_xlconcat_0_1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 64 + 32 + 32 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 64 + 2 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 1 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xml new file mode 100644 index 0000000..52bfdca --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_1/z_turn_xlconcat_0_1.xml @@ -0,0 +1,1906 @@ + + + xilinx.com + customized_ip + z_turn_xlconcat_0_1 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + 4a7a1063 + + + customizationCRCversion + 5 + + + boundaryCRC + 445d2e6d + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + + xilinx_verilogsynthesis_view_fileset + + + + customizationCRC + 4a7a1063 + + + customizationCRCversion + 5 + + + boundaryCRC + 445d2e6d + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesiswrapper + Verilog Synthesis Wrapper + verilogSource:vivado.xilinx.com:synthesis.wrapper + verilog + + xilinx_verilogsynthesiswrapper_view_fileset + + + + customizationCRC + 4a7a1063 + + + customizationCRCversion + 5 + + + boundaryCRC + 445d2e6d + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + + xilinx_verilogbehavioralsimulation_view_fileset + + + + customizationCRC + 4ef8d8e5 + + + customizationCRCversion + 5 + + + boundaryCRC + 445d2e6d + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsimulationwrapper + Verilog Simulation Wrapper + verilogSource:vivado.xilinx.com:simulation.wrapper + verilog + + xilinx_verilogsimulationwrapper_view_fileset + + + + customizationCRC + 4ef8d8e5 + + + customizationCRCversion + 5 + + + boundaryCRC + 445d2e6d + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + 4a7a1063 + + + customizationCRCversion + 5 + + + boundaryCRC + 445d2e6d + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + + + In0 + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In1 + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In3 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In4 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In5 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In6 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In7 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In8 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In9 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In10 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In11 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In12 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In13 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In14 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In15 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In16 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In17 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In18 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In19 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In20 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In21 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In22 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In23 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In24 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In25 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In26 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In27 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In28 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In29 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In30 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In31 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + dout + + out + + 63 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + IN0_WIDTH + In0 Width + 32 + + + IN1_WIDTH + In1 Width + 32 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 1 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 64 + + + NUM_PORTS + Number of Ports + 2 + + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_xlconcat_0_1.veo + verilogTemplate + + + + xilinx_verilogsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsynthesiswrapper_view_fileset + + synth/z_turn_xlconcat_0_1.v + verilogSource + xil_defaultlib + + + + xilinx_verilogbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsimulationwrapper_view_fileset + + sim/z_turn_xlconcat_0_1.v + verilogSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/xlconcat_v2_1_changelog.txt + text + + + + Concatenates up to 32 ports into a single port + + + NUM_PORTS + Number of Ports + 2 + + + IN0_WIDTH + In0 Width + 32 + + + IN1_WIDTH + In1 Width + 32 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + Component_Name + z_turn_xlconcat_0_1 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 1 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 64 + + + + + + virtex7 + qvirtex7 + kintex7 + kintex7l + qkintex7 + qkintex7l + artix7 + artix7l + aartix7 + qartix7 + zynq + qzynq + azynq + virtexu + kintexu + + + /Basic_Elements + + Concat + + IPI + + http://www.xilinx.com + 1 + 2014-10-09T21:18:16Z + + + + + + + 2014.4 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/doc/xlconcat_v2_1_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/doc/xlconcat_v2_1_changelog.txt new file mode 100644 index 0000000..d07a13b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/doc/xlconcat_v2_1_changelog.txt @@ -0,0 +1,64 @@ +2014.4 + * Version 2.1 (Rev.1) + * Add Auto/Manual button for Inxx Width in GUI dialog. + +2014.2 + * Version 2.1 + * upgrade input sources from 16 to 32. + +2014.1: + * Version 2.0 + * Version 1.0 of the xlconcat block reverses the order in + * which input signals are concatenated. Version 2.0 + * preserves the order of input signals on the output. + * The upgrade from 1.0 to 2.0 will change input connections + * in order to preserve the overall the signal order on output. + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/sim/z_turn_xlconcat_0_2.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/sim/z_turn_xlconcat_0_2.v new file mode 100644 index 0000000..ee0b169 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/sim/z_turn_xlconcat_0_2.v @@ -0,0 +1,196 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +`timescale 1ns/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_0_2 ( + In0, + In1, + In2, + In3, + In4, + In5, + In6, + In7, + In8, + In9, + In10, + In11, + In12, + In13, + In14, + In15, + In16, + In17, + In18, + In19, + In20, + In21, + In22, + In23, + In24, + In25, + In26, + In27, + In28, + In29, + In30, + In31, + dout +); + +input wire [0 : 0] In0; +input wire [0 : 0] In1; +input wire [0 : 0] In2; +input wire [0 : 0] In3; +input wire [0 : 0] In4; +input wire [0 : 0] In5; +input wire [0 : 0] In6; +input wire [0 : 0] In7; +input wire [0 : 0] In8; +input wire [0 : 0] In9; +input wire [0 : 0] In10; +input wire [0 : 0] In11; +input wire [0 : 0] In12; +input wire [0 : 0] In13; +input wire [0 : 0] In14; +input wire [0 : 0] In15; +input wire [0 : 0] In16; +input wire [0 : 0] In17; +input wire [0 : 0] In18; +input wire [0 : 0] In19; +input wire [0 : 0] In20; +input wire [0 : 0] In21; +input wire [0 : 0] In22; +input wire [0 : 0] In23; +input wire [0 : 0] In24; +input wire [0 : 0] In25; +input wire [0 : 0] In26; +input wire [0 : 0] In27; +input wire [0 : 0] In28; +input wire [0 : 0] In29; +input wire [0 : 0] In30; +input wire [0 : 0] In31; +output wire [31 : 0] dout; + + xlconcat #( + .IN0_WIDTH(1), + .IN1_WIDTH(1), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(1), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(32), + .NUM_PORTS(32) + ) inst ( + .In0(In0), + .In1(In1), + .In2(In2), + .In3(In3), + .In4(In4), + .In5(In5), + .In6(In6), + .In7(In7), + .In8(In8), + .In9(In9), + .In10(In10), + .In11(In11), + .In12(In12), + .In13(In13), + .In14(In14), + .In15(In15), + .In16(In16), + .In17(In17), + .In18(In18), + .In19(In19), + .In20(In20), + .In21(In21), + .In22(In22), + .In23(In23), + .In24(In24), + .In25(In25), + .In26(In26), + .In27(In27), + .In28(In28), + .In29(In29), + .In30(In30), + .In31(In31), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/synth/z_turn_xlconcat_0_2.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/synth/z_turn_xlconcat_0_2.v new file mode 100644 index 0000000..18d861a --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/synth/z_turn_xlconcat_0_2.v @@ -0,0 +1,197 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +(* X_CORE_INFO = "xlconcat,Vivado 2015.2" *) +(* CHECK_LICENSE_TYPE = "z_turn_xlconcat_0_2,xlconcat,{}" *) +(* CORE_GENERATION_INFO = "z_turn_xlconcat_0_2,xlconcat,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=xlconcat,x_ipVersion=2.1,x_ipCoreRevision=1,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,IN0_WIDTH=1,IN1_WIDTH=1,IN2_WIDTH=1,IN3_WIDTH=1,IN4_WIDTH=1,IN5_WIDTH=1,IN6_WIDTH=1,IN7_WIDTH=1,IN8_WIDTH=1,IN9_WIDTH=1,IN10_WIDTH=1,IN11_WIDTH=1,IN12_WIDTH=1,IN13_WIDTH=1,IN14_WIDTH=1,IN15_WIDTH=1,IN16_WIDTH=1,IN17_WIDTH=1,IN18_WIDTH=1,IN19_WIDTH=1,IN20_WIDTH=1,IN21_WIDTH=1,IN22_WIDTH=1,IN23_WIDTH=1,IN24_WIDTH=1,IN25_WIDTH=1,IN26_WIDTH=1,IN27_WIDTH=1,IN28_WIDTH=1,IN29_WIDTH=1,IN30_WIDTH=1,IN31_WIDTH=1,dout_width=32,NUM_PORTS=32}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_0_2 ( + In0, + In1, + In2, + In3, + In4, + In5, + In6, + In7, + In8, + In9, + In10, + In11, + In12, + In13, + In14, + In15, + In16, + In17, + In18, + In19, + In20, + In21, + In22, + In23, + In24, + In25, + In26, + In27, + In28, + In29, + In30, + In31, + dout +); + +input wire [0 : 0] In0; +input wire [0 : 0] In1; +input wire [0 : 0] In2; +input wire [0 : 0] In3; +input wire [0 : 0] In4; +input wire [0 : 0] In5; +input wire [0 : 0] In6; +input wire [0 : 0] In7; +input wire [0 : 0] In8; +input wire [0 : 0] In9; +input wire [0 : 0] In10; +input wire [0 : 0] In11; +input wire [0 : 0] In12; +input wire [0 : 0] In13; +input wire [0 : 0] In14; +input wire [0 : 0] In15; +input wire [0 : 0] In16; +input wire [0 : 0] In17; +input wire [0 : 0] In18; +input wire [0 : 0] In19; +input wire [0 : 0] In20; +input wire [0 : 0] In21; +input wire [0 : 0] In22; +input wire [0 : 0] In23; +input wire [0 : 0] In24; +input wire [0 : 0] In25; +input wire [0 : 0] In26; +input wire [0 : 0] In27; +input wire [0 : 0] In28; +input wire [0 : 0] In29; +input wire [0 : 0] In30; +input wire [0 : 0] In31; +output wire [31 : 0] dout; + + xlconcat #( + .IN0_WIDTH(1), + .IN1_WIDTH(1), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(1), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(32), + .NUM_PORTS(32) + ) inst ( + .In0(In0), + .In1(In1), + .In2(In2), + .In3(In3), + .In4(In4), + .In5(In5), + .In6(In6), + .In7(In7), + .In8(In8), + .In9(In9), + .In10(In10), + .In11(In11), + .In12(In12), + .In13(In13), + .In14(In14), + .In15(In15), + .In16(In16), + .In17(In17), + .In18(In18), + .In19(In19), + .In20(In20), + .In21(In21), + .In22(In22), + .In23(In23), + .In24(In24), + .In25(In25), + .In26(In26), + .In27(In27), + .In28(In28), + .In29(In29), + .In30(In30), + .In31(In31), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.upgrade_log new file mode 100644 index 0000000..80e061c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:24 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_xlconcat_0_2' + +1. Summary +---------- + +SUCCESS in the update of z_turn_xlconcat_0_2 (xilinx.com:ip:xlconcat:2.1 (Rev. 1)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.veo new file mode 100644 index 0000000..b82707d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.veo @@ -0,0 +1,97 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_xlconcat_0_2 your_instance_name ( + .In0(In0), // input wire [0 : 0] In0 + .In1(In1), // input wire [0 : 0] In1 + .In2(In2), // input wire [0 : 0] In2 + .In3(In3), // input wire [0 : 0] In3 + .In4(In4), // input wire [0 : 0] In4 + .In5(In5), // input wire [0 : 0] In5 + .In6(In6), // input wire [0 : 0] In6 + .In7(In7), // input wire [0 : 0] In7 + .In8(In8), // input wire [0 : 0] In8 + .In9(In9), // input wire [0 : 0] In9 + .In10(In10), // input wire [0 : 0] In10 + .In11(In11), // input wire [0 : 0] In11 + .In12(In12), // input wire [0 : 0] In12 + .In13(In13), // input wire [0 : 0] In13 + .In14(In14), // input wire [0 : 0] In14 + .In15(In15), // input wire [0 : 0] In15 + .In16(In16), // input wire [0 : 0] In16 + .In17(In17), // input wire [0 : 0] In17 + .In18(In18), // input wire [0 : 0] In18 + .In19(In19), // input wire [0 : 0] In19 + .In20(In20), // input wire [0 : 0] In20 + .In21(In21), // input wire [0 : 0] In21 + .In22(In22), // input wire [0 : 0] In22 + .In23(In23), // input wire [0 : 0] In23 + .In24(In24), // input wire [0 : 0] In24 + .In25(In25), // input wire [0 : 0] In25 + .In26(In26), // input wire [0 : 0] In26 + .In27(In27), // input wire [0 : 0] In27 + .In28(In28), // input wire [0 : 0] In28 + .In29(In29), // input wire [0 : 0] In29 + .In30(In30), // input wire [0 : 0] In30 + .In31(In31), // input wire [0 : 0] In31 + .dout(dout) // output wire [31 : 0] dout +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_xlconcat_0_2.v when simulating +// the core, z_turn_xlconcat_0_2. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xci new file mode 100644 index 0000000..6e2f621 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xci @@ -0,0 +1,142 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_xlconcat_0_2 + + + 32 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + z_turn_xlconcat_0_2 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 32 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 1 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xml new file mode 100644 index 0000000..8cea8f6 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_0_2/z_turn_xlconcat_0_2.xml @@ -0,0 +1,1968 @@ + + + xilinx.com + customized_ip + z_turn_xlconcat_0_2 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + d42439e7 + + + customizationCRCversion + 5 + + + boundaryCRC + cfd21d2c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + + xilinx_verilogsynthesis_view_fileset + + + + customizationCRC + d42439e7 + + + customizationCRCversion + 5 + + + boundaryCRC + cfd21d2c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesiswrapper + Verilog Synthesis Wrapper + verilogSource:vivado.xilinx.com:synthesis.wrapper + verilog + + xilinx_verilogsynthesiswrapper_view_fileset + + + + customizationCRC + d42439e7 + + + customizationCRCversion + 5 + + + boundaryCRC + cfd21d2c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + + xilinx_verilogbehavioralsimulation_view_fileset + + + + customizationCRC + 05a2bdc2 + + + customizationCRCversion + 5 + + + boundaryCRC + cfd21d2c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsimulationwrapper + Verilog Simulation Wrapper + verilogSource:vivado.xilinx.com:simulation.wrapper + verilog + + xilinx_verilogsimulationwrapper_view_fileset + + + + customizationCRC + 05a2bdc2 + + + customizationCRCversion + 5 + + + boundaryCRC + cfd21d2c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + d42439e7 + + + customizationCRCversion + 5 + + + boundaryCRC + cfd21d2c + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + + + In0 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In1 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In3 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In4 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In5 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In6 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In7 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In8 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In9 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In10 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In11 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In12 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In13 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In14 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In15 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In16 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In17 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In18 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In19 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In20 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In21 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In22 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In23 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In24 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In25 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In26 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In27 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In28 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In29 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In30 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In31 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + dout + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + IN0_WIDTH + In0 Width + 1 + + + IN1_WIDTH + In1 Width + 1 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 1 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 32 + + + NUM_PORTS + Number of Ports + 32 + + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_xlconcat_0_2.veo + verilogTemplate + + + + xilinx_verilogsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsynthesiswrapper_view_fileset + + synth/z_turn_xlconcat_0_2.v + verilogSource + xil_defaultlib + + + + xilinx_verilogbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsimulationwrapper_view_fileset + + sim/z_turn_xlconcat_0_2.v + verilogSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/xlconcat_v2_1_changelog.txt + text + + + + Concatenates up to 32 ports into a single port + + + NUM_PORTS + Number of Ports + 32 + + + IN0_WIDTH + In0 Width + 1 + + + IN1_WIDTH + In1 Width + 1 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + Component_Name + z_turn_xlconcat_0_2 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 1 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 32 + + + + + + virtex7 + qvirtex7 + kintex7 + kintex7l + qkintex7 + qkintex7l + artix7 + artix7l + aartix7 + qartix7 + zynq + qzynq + azynq + virtexu + kintexu + + + /Basic_Elements + + Concat + + IPI + + http://www.xilinx.com + 1 + 2014-10-09T21:18:16Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2014.4 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/doc/xlconcat_v2_1_changelog.txt b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/doc/xlconcat_v2_1_changelog.txt new file mode 100644 index 0000000..d07a13b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/doc/xlconcat_v2_1_changelog.txt @@ -0,0 +1,64 @@ +2014.4 + * Version 2.1 (Rev.1) + * Add Auto/Manual button for Inxx Width in GUI dialog. + +2014.2 + * Version 2.1 + * upgrade input sources from 16 to 32. + +2014.1: + * Version 2.0 + * Version 1.0 of the xlconcat block reverses the order in + * which input signals are concatenated. Version 2.0 + * preserves the order of input signals on the output. + * The upgrade from 1.0 to 2.0 will change input connections + * in order to preserve the overall the signal order on output. + + + (c) Copyright 2012 - 2014 Xilinx, Inc. All rights reserved. + + This file contains confidential and proprietary information + of Xilinx, Inc. and is protected under U.S. and + international copyright and other intellectual property + laws. + + DISCLAIMER + This disclaimer is not a license and does not grant any + rights to the materials distributed herewith. Except as + otherwise provided in a valid license issued to you by + Xilinx, and to the maximum extent permitted by applicable + law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND + WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES + AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING + BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- + INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and + (2) Xilinx shall not be liable (whether in contract or tort, + including negligence, or under any other theory of + liability) for any loss or damage of any kind or nature + related to, arising under or in connection with these + materials, including for any direct, or any indirect, + special, incidental, or consequential loss or damage + (including loss of data, profits, goodwill, or any type of + loss or damage suffered as a result of any action brought + by a third party) even if such damage or loss was + reasonably foreseeable or Xilinx had been advised of the + possibility of the same. + + CRITICAL APPLICATIONS + Xilinx products are not designed or intended to be fail- + safe, or for use in any application requiring fail-safe + performance, such as life-support or safety devices or + systems, Class III medical devices, nuclear facilities, + applications related to the deployment of airbags, or any + other applications that could lead to death, personal + injury, or severe property or environmental damage + (individually and collectively, "Critical + Applications"). Customer assumes the sole risk and + liability of any use of Xilinx products in Critical + Applications, subject only to applicable laws and + regulations governing limitations on product liability. + + THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS + PART OF THIS FILE AT ALL TIMES. + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/sim/z_turn_xlconcat_1_0.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/sim/z_turn_xlconcat_1_0.v new file mode 100644 index 0000000..8d58a8c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/sim/z_turn_xlconcat_1_0.v @@ -0,0 +1,190 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +`timescale 1ns/1ps + +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_1_0 ( + In0, + In1, + In2, + In3, + In4, + In5, + In6, + In7, + In8, + In9, + In10, + In11, + In12, + In13, + In14, + In15, + In16, + In17, + In18, + In19, + In20, + In21, + In22, + In23, + In24, + In25, + In26, + In27, + In28, + dout +); + +input wire [0 : 0] In0; +input wire [0 : 0] In1; +input wire [0 : 0] In2; +input wire [0 : 0] In3; +input wire [0 : 0] In4; +input wire [0 : 0] In5; +input wire [0 : 0] In6; +input wire [0 : 0] In7; +input wire [0 : 0] In8; +input wire [0 : 0] In9; +input wire [0 : 0] In10; +input wire [0 : 0] In11; +input wire [0 : 0] In12; +input wire [0 : 0] In13; +input wire [0 : 0] In14; +input wire [0 : 0] In15; +input wire [0 : 0] In16; +input wire [0 : 0] In17; +input wire [0 : 0] In18; +input wire [0 : 0] In19; +input wire [0 : 0] In20; +input wire [0 : 0] In21; +input wire [0 : 0] In22; +input wire [0 : 0] In23; +input wire [3 : 0] In24; +input wire [0 : 0] In25; +input wire [0 : 0] In26; +input wire [0 : 0] In27; +input wire [0 : 0] In28; +output wire [31 : 0] dout; + + xlconcat #( + .IN0_WIDTH(1), + .IN1_WIDTH(1), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(4), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(32), + .NUM_PORTS(29) + ) inst ( + .In0(In0), + .In1(In1), + .In2(In2), + .In3(In3), + .In4(In4), + .In5(In5), + .In6(In6), + .In7(In7), + .In8(In8), + .In9(In9), + .In10(In10), + .In11(In11), + .In12(In12), + .In13(In13), + .In14(In14), + .In15(In15), + .In16(In16), + .In17(In17), + .In18(In18), + .In19(In19), + .In20(In20), + .In21(In21), + .In22(In22), + .In23(In23), + .In24(In24), + .In25(In25), + .In26(In26), + .In27(In27), + .In28(In28), + .In29(1'B0), + .In30(1'B0), + .In31(1'B0), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/synth/z_turn_xlconcat_1_0.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/synth/z_turn_xlconcat_1_0.v new file mode 100644 index 0000000..9aabf15 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/synth/z_turn_xlconcat_1_0.v @@ -0,0 +1,191 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +(* X_CORE_INFO = "xlconcat,Vivado 2015.2" *) +(* CHECK_LICENSE_TYPE = "z_turn_xlconcat_1_0,xlconcat,{}" *) +(* CORE_GENERATION_INFO = "z_turn_xlconcat_1_0,xlconcat,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=xlconcat,x_ipVersion=2.1,x_ipCoreRevision=1,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,IN0_WIDTH=1,IN1_WIDTH=1,IN2_WIDTH=1,IN3_WIDTH=1,IN4_WIDTH=1,IN5_WIDTH=1,IN6_WIDTH=1,IN7_WIDTH=1,IN8_WIDTH=1,IN9_WIDTH=1,IN10_WIDTH=1,IN11_WIDTH=1,IN12_WIDTH=1,IN13_WIDTH=1,IN14_WIDTH=1,IN15_WIDTH=1,IN16_WIDTH=1,IN17_WIDTH=1,IN18_WIDTH=1,IN19_WIDTH=1,IN20_WIDTH=1,IN21_WIDTH=1,IN22_WIDTH=1,IN23_WIDTH=1,IN24_WIDTH=4,IN25_WIDTH=1,IN26_WIDTH=1,IN27_WIDTH=1,IN28_WIDTH=1,IN29_WIDTH=1,IN30_WIDTH=1,IN31_WIDTH=1,dout_width=32,NUM_PORTS=29}" *) +(* DowngradeIPIdentifiedWarnings = "yes" *) +module z_turn_xlconcat_1_0 ( + In0, + In1, + In2, + In3, + In4, + In5, + In6, + In7, + In8, + In9, + In10, + In11, + In12, + In13, + In14, + In15, + In16, + In17, + In18, + In19, + In20, + In21, + In22, + In23, + In24, + In25, + In26, + In27, + In28, + dout +); + +input wire [0 : 0] In0; +input wire [0 : 0] In1; +input wire [0 : 0] In2; +input wire [0 : 0] In3; +input wire [0 : 0] In4; +input wire [0 : 0] In5; +input wire [0 : 0] In6; +input wire [0 : 0] In7; +input wire [0 : 0] In8; +input wire [0 : 0] In9; +input wire [0 : 0] In10; +input wire [0 : 0] In11; +input wire [0 : 0] In12; +input wire [0 : 0] In13; +input wire [0 : 0] In14; +input wire [0 : 0] In15; +input wire [0 : 0] In16; +input wire [0 : 0] In17; +input wire [0 : 0] In18; +input wire [0 : 0] In19; +input wire [0 : 0] In20; +input wire [0 : 0] In21; +input wire [0 : 0] In22; +input wire [0 : 0] In23; +input wire [3 : 0] In24; +input wire [0 : 0] In25; +input wire [0 : 0] In26; +input wire [0 : 0] In27; +input wire [0 : 0] In28; +output wire [31 : 0] dout; + + xlconcat #( + .IN0_WIDTH(1), + .IN1_WIDTH(1), + .IN2_WIDTH(1), + .IN3_WIDTH(1), + .IN4_WIDTH(1), + .IN5_WIDTH(1), + .IN6_WIDTH(1), + .IN7_WIDTH(1), + .IN8_WIDTH(1), + .IN9_WIDTH(1), + .IN10_WIDTH(1), + .IN11_WIDTH(1), + .IN12_WIDTH(1), + .IN13_WIDTH(1), + .IN14_WIDTH(1), + .IN15_WIDTH(1), + .IN16_WIDTH(1), + .IN17_WIDTH(1), + .IN18_WIDTH(1), + .IN19_WIDTH(1), + .IN20_WIDTH(1), + .IN21_WIDTH(1), + .IN22_WIDTH(1), + .IN23_WIDTH(1), + .IN24_WIDTH(4), + .IN25_WIDTH(1), + .IN26_WIDTH(1), + .IN27_WIDTH(1), + .IN28_WIDTH(1), + .IN29_WIDTH(1), + .IN30_WIDTH(1), + .IN31_WIDTH(1), + .dout_width(32), + .NUM_PORTS(29) + ) inst ( + .In0(In0), + .In1(In1), + .In2(In2), + .In3(In3), + .In4(In4), + .In5(In5), + .In6(In6), + .In7(In7), + .In8(In8), + .In9(In9), + .In10(In10), + .In11(In11), + .In12(In12), + .In13(In13), + .In14(In14), + .In15(In15), + .In16(In16), + .In17(In17), + .In18(In18), + .In19(In19), + .In20(In20), + .In21(In21), + .In22(In22), + .In23(In23), + .In24(In24), + .In25(In25), + .In26(In26), + .In27(In27), + .In28(In28), + .In29(1'B0), + .In30(1'B0), + .In31(1'B0), + .dout(dout) + ); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.upgrade_log b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.upgrade_log new file mode 100644 index 0000000..3d73b0f --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.upgrade_log @@ -0,0 +1,16 @@ +Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +------------------------------------------------------------------------------------ +| Tool Version : Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +| Date : Fri Jul 10 13:44:25 2015 +| Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +| Command : upgrade_ip +| Device : xc7z020clg400-1 +------------------------------------------------------------------------------------ + +Upgrade Log for IP 'z_turn_xlconcat_1_0' + +1. Summary +---------- + +SUCCESS in the update of z_turn_xlconcat_1_0 (xilinx.com:ip:xlconcat:2.1 (Rev. 1)) to current project options. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.veo b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.veo new file mode 100644 index 0000000..6b48581 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.veo @@ -0,0 +1,94 @@ +// (c) Copyright 1995-2015 Xilinx, Inc. All rights reserved. +// +// This file contains confidential and proprietary information +// of Xilinx, Inc. and is protected under U.S. and +// international copyright and other intellectual property +// laws. +// +// DISCLAIMER +// This disclaimer is not a license and does not grant any +// rights to the materials distributed herewith. Except as +// otherwise provided in a valid license issued to you by +// Xilinx, and to the maximum extent permitted by applicable +// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// (2) Xilinx shall not be liable (whether in contract or tort, +// including negligence, or under any other theory of +// liability) for any loss or damage of any kind or nature +// related to, arising under or in connection with these +// materials, including for any direct, or any indirect, +// special, incidental, or consequential loss or damage +// (including loss of data, profits, goodwill, or any type of +// loss or damage suffered as a result of any action brought +// by a third party) even if such damage or loss was +// reasonably foreseeable or Xilinx had been advised of the +// possibility of the same. +// +// CRITICAL APPLICATIONS +// Xilinx products are not designed or intended to be fail- +// safe, or for use in any application requiring fail-safe +// performance, such as life-support or safety devices or +// systems, Class III medical devices, nuclear facilities, +// applications related to the deployment of airbags, or any +// other applications that could lead to death, personal +// injury, or severe property or environmental damage +// (individually and collectively, "Critical +// Applications"). Customer assumes the sole risk and +// liability of any use of Xilinx products in Critical +// Applications, subject only to applicable laws and +// regulations governing limitations on product liability. +// +// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// PART OF THIS FILE AT ALL TIMES. +// +// DO NOT MODIFY THIS FILE. + +// IP VLNV: xilinx.com:ip:xlconcat:2.1 +// IP Revision: 1 + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +z_turn_xlconcat_1_0 your_instance_name ( + .In0(In0), // input wire [0 : 0] In0 + .In1(In1), // input wire [0 : 0] In1 + .In2(In2), // input wire [0 : 0] In2 + .In3(In3), // input wire [0 : 0] In3 + .In4(In4), // input wire [0 : 0] In4 + .In5(In5), // input wire [0 : 0] In5 + .In6(In6), // input wire [0 : 0] In6 + .In7(In7), // input wire [0 : 0] In7 + .In8(In8), // input wire [0 : 0] In8 + .In9(In9), // input wire [0 : 0] In9 + .In10(In10), // input wire [0 : 0] In10 + .In11(In11), // input wire [0 : 0] In11 + .In12(In12), // input wire [0 : 0] In12 + .In13(In13), // input wire [0 : 0] In13 + .In14(In14), // input wire [0 : 0] In14 + .In15(In15), // input wire [0 : 0] In15 + .In16(In16), // input wire [0 : 0] In16 + .In17(In17), // input wire [0 : 0] In17 + .In18(In18), // input wire [0 : 0] In18 + .In19(In19), // input wire [0 : 0] In19 + .In20(In20), // input wire [0 : 0] In20 + .In21(In21), // input wire [0 : 0] In21 + .In22(In22), // input wire [0 : 0] In22 + .In23(In23), // input wire [0 : 0] In23 + .In24(In24), // input wire [3 : 0] In24 + .In25(In25), // input wire [0 : 0] In25 + .In26(In26), // input wire [0 : 0] In26 + .In27(In27), // input wire [0 : 0] In27 + .In28(In28), // input wire [0 : 0] In28 + .dout(dout) // output wire [31 : 0] dout +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file z_turn_xlconcat_1_0.v when simulating +// the core, z_turn_xlconcat_1_0. When compiling the wrapper file, be sure to +// reference the Verilog simulation library. + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xci b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xci new file mode 100644 index 0000000..30158f5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xci @@ -0,0 +1,139 @@ + + + xilinx.com + xci + unknown + 1.0 + + + z_turn_xlconcat_1_0 + + + 29 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + z_turn_xlconcat_1_0 + 1 + 1 + 1 + 1 + 1 + 1 + 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 4 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 32 + 29 + zynq + xc7z020 + clg400 + -1 + C + + VERILOG + MIXED + TRUE + TRUE + + TRUE + 2015.2 + 1 + OUT_OF_CONTEXT + + . + ../../../../ipshared + IP_Integrator + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xml new file mode 100644 index 0000000..59f4b12 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ip/z_turn_xlconcat_1_0/z_turn_xlconcat_1_0.xml @@ -0,0 +1,1962 @@ + + + xilinx.com + customized_ip + z_turn_xlconcat_1_0 + 1.0 + + + + xilinx_veriloginstantiationtemplate + Verilog Instantiation Template + verilogSource:vivado.xilinx.com:synthesis.template + verilog + + xilinx_veriloginstantiationtemplate_view_fileset + + + + customizationCRC + 5fb472c2 + + + customizationCRCversion + 5 + + + boundaryCRC + d2a88554 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + + xilinx_verilogsynthesis_view_fileset + + + + customizationCRC + 5fb472c2 + + + customizationCRCversion + 5 + + + boundaryCRC + d2a88554 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsynthesiswrapper + Verilog Synthesis Wrapper + verilogSource:vivado.xilinx.com:synthesis.wrapper + verilog + + xilinx_verilogsynthesiswrapper_view_fileset + + + + customizationCRC + 5fb472c2 + + + customizationCRCversion + 5 + + + boundaryCRC + d2a88554 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + + xilinx_verilogbehavioralsimulation_view_fileset + + + + customizationCRC + 3a7189c7 + + + customizationCRCversion + 5 + + + boundaryCRC + d2a88554 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 03 07:51:34 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_verilogsimulationwrapper + Verilog Simulation Wrapper + verilogSource:vivado.xilinx.com:simulation.wrapper + verilog + + xilinx_verilogsimulationwrapper_view_fileset + + + + customizationCRC + 3a7189c7 + + + customizationCRCversion + 5 + + + boundaryCRC + d2a88554 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + xilinx_versioninformation + Version Information + :vivado.xilinx.com:docs.versioninfo + + xilinx_versioninformation_view_fileset + + + + customizationCRC + 5fb472c2 + + + customizationCRCversion + 5 + + + boundaryCRC + d2a88554 + + + boundaryCRCversion + 1 + + + GENtimestamp + Fri Jul 10 05:48:45 UTC 2015 + + + StaleAtRelink + false + + + + + + + In0 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In1 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In2 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In3 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In4 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In5 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In6 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In7 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In8 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In9 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In10 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In11 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In12 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In13 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In14 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In15 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In16 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In17 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In18 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In19 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In20 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In21 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In22 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In23 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In24 + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In25 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In26 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In27 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In28 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + true + + + + + + In29 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In30 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + In31 + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + optional + false + + + + + + dout + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + IN0_WIDTH + In0 Width + 1 + + + IN1_WIDTH + In1 Width + 1 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 4 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 32 + + + NUM_PORTS + Number of Ports + 29 + + + + + + xilinx_veriloginstantiationtemplate_view_fileset + + z_turn_xlconcat_1_0.veo + verilogTemplate + + + + xilinx_verilogsynthesis_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsynthesiswrapper_view_fileset + + synth/z_turn_xlconcat_1_0.v + verilogSource + xil_defaultlib + + + + xilinx_verilogbehavioralsimulation_view_fileset + + ../../../../ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v + verilogSource + work + + + + xilinx_verilogsimulationwrapper_view_fileset + + sim/z_turn_xlconcat_1_0.v + verilogSource + xil_defaultlib + + + + xilinx_versioninformation_view_fileset + + doc/xlconcat_v2_1_changelog.txt + text + + + + Concatenates up to 32 ports into a single port + + + NUM_PORTS + Number of Ports + 29 + + + IN0_WIDTH + In0 Width + 1 + + + IN1_WIDTH + In1 Width + 1 + + + IN2_WIDTH + In2 Width + 1 + + + IN3_WIDTH + In3 Width + 1 + + + IN4_WIDTH + In4 Width + 1 + + + IN5_WIDTH + In5 Width + 1 + + + IN6_WIDTH + In6 Width + 1 + + + IN7_WIDTH + In7 Width + 1 + + + IN8_WIDTH + In8 Width + 1 + + + IN9_WIDTH + In9 Width + 1 + + + IN10_WIDTH + In10 Width + 1 + + + IN11_WIDTH + In11 Width + 1 + + + IN12_WIDTH + In12 Width + 1 + + + IN13_WIDTH + In13 Width + 1 + + + IN14_WIDTH + In14 Width + 1 + + + IN15_WIDTH + In15 Width + 1 + + + IN16_WIDTH + In16 Width + 1 + + + IN17_WIDTH + In17 Width + 1 + + + Component_Name + z_turn_xlconcat_1_0 + + + IN18_WIDTH + In18 Width + 1 + + + IN19_WIDTH + In19 Width + 1 + + + IN20_WIDTH + In20 Width + 1 + + + IN21_WIDTH + In21 Width + 1 + + + IN22_WIDTH + In22 Width + 1 + + + IN23_WIDTH + In23 Width + 1 + + + IN24_WIDTH + In24 Width + 4 + + + IN25_WIDTH + In25 Width + 1 + + + IN26_WIDTH + In26 Width + 1 + + + IN27_WIDTH + In27 Width + 1 + + + IN28_WIDTH + In28 Width + 1 + + + IN29_WIDTH + In29 Width + 1 + + + IN30_WIDTH + In30 Width + 1 + + + IN31_WIDTH + In31 Width + 1 + + + dout_width + Dout Width + 32 + + + + + + virtex7 + qvirtex7 + kintex7 + kintex7l + qkintex7 + qkintex7l + artix7 + artix7l + aartix7 + qartix7 + zynq + qzynq + azynq + virtexu + kintexu + + + /Basic_Elements + + Concat + + IPI + + http://www.xilinx.com + 1 + 2014-10-09T21:18:16Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2014.4 + + + + + + + \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_24d8caf0.ui b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_24d8caf0.ui new file mode 100644 index 0000000..0d2ad77 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_24d8caf0.ui @@ -0,0 +1,17 @@ +{ + guistr: "# # String gsaved with Nlview 6.4.12 2014-12-16 bk=1.3272 VDI=35 GEI=35 GUI=JA:1.6 +# -string -flagsOSRD +preplace port M_ACLK -pg 1 -y 60 -defaultsOSRD +preplace port S_ACLK -pg 1 -y 20 -defaultsOSRD +preplace port S_AXI -pg 1 -y 40 -defaultsOSRD +preplace port M_AXI -pg 1 -y 60 -defaultsOSRD +preplace portBus M_ARESETN -pg 1 -y 80 -defaultsOSRD +preplace portBus S_ARESETN -pg 1 -y 100 -defaultsOSRD +preplace inst s00_data_fifo -pg 1 -lvl 1 -y 60 -defaultsOSRD +preplace netloc s00_data_fifo_to_s00_couplers 1 1 1 N +preplace netloc M_ACLK_1 1 0 1 NJ +preplace netloc M_ARESETN_1 1 0 1 NJ +preplace netloc s00_couplers_to_s00_data_fifo 1 0 1 NJ +levelinfo -pg 1 130 240 350 +", +} diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_35e35d22.ui b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_35e35d22.ui new file mode 100644 index 0000000..75b3a50 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/ui/bd_35e35d22.ui @@ -0,0 +1,78 @@ +{ + commentid: "", + guistr: "# # String gsaved with Nlview 6.4.12 2014-12-16 bk=1.3272 VDI=35 GEI=35 GUI=JA:1.6 +# -string -flagsOSRD +preplace port I2S_FSYNC_IN -pg 1 -y 80 -defaultsOSRD +preplace port I2S_DIN -pg 1 -y 180 -defaultsOSRD +preplace port DDR -pg 1 -y 470 -defaultsOSRD +preplace port MEMS_INTn -pg 1 -y 260 -defaultsOSRD +preplace port HDMI_INTn -pg 1 -y 340 -defaultsOSRD +preplace port IO_B34_LP11 -pg 1 -y 160 -defaultsOSRD +preplace port LCD_VSYNC -pg 1 -y 380 -defaultsOSRD +preplace port IO_B34_LN8 -pg 1 -y 140 -defaultsOSRD +preplace port I2S_SCLK -pg 1 -y 70 -defaultsOSRD +preplace port LCD_HSYNC -pg 1 -y 400 -defaultsOSRD +preplace port BP -pg 1 -y 210 -defaultsOSRD +preplace port IO_B34_LN11 -pg 1 -y 100 -defaultsOSRD +preplace port LCD_PCLK -pg 1 -y 340 -defaultsOSRD +preplace port LCD_DE -pg 1 -y 360 -defaultsOSRD +preplace port IIC_0 -pg 1 -y 710 -defaultsOSRD +preplace port FIXED_IO -pg 1 -y 490 -defaultsOSRD +preplace port IO_B34_LP6 -pg 1 -y 60 -defaultsOSRD +preplace port I2S_DOUT -pg 1 -y 110 -defaultsOSRD +preplace port IO_B34_LP8 -pg 1 -y 120 -defaultsOSRD +preplace port I2S_FSYNC_OUT -pg 1 -y 90 -defaultsOSRD +preplace portBus IO_B35_LP -pg 1 -y 360 -defaultsOSRD +preplace portBus IO_B34_LN -pg 1 -y 40 -defaultsOSRD +preplace portBus IO_B34_LP -pg 1 -y 20 -defaultsOSRD +preplace portBus LCD_DATA -pg 1 -y 420 -defaultsOSRD +preplace portBus SW -pg 1 -y 210 -defaultsOSRD +preplace portBus LEDS -pg 1 -y 230 -defaultsOSRD +preplace portBus IO_B35_LN -pg 1 -y 390 -defaultsOSRD +preplace inst z_turn_ps_7_axi_periph_0 -pg 1 -lvl 7 -y 500 -defaultsOSRD +preplace inst ps7 -pg 1 -lvl 5 -y 820 -defaultsOSRD +preplace inst z_turn_ps_7_axi_periph_1 -pg 1 -lvl 7 -y 800 -defaultsOSRD -resize 200 196 +preplace inst xlconcat_0 -pg 1 -lvl 2 -y 430 -defaultsOSRD +preplace inst util_vector_logic_0 -pg 1 -lvl 3 -y 430 -defaultsOSRD +preplace inst proc_sys_reset_0 -pg 1 -lvl 6 -y 230 -defaultsOSRD -resize 280 140 +preplace inst xlconcat_1 -pg 1 -lvl 1 -y 510 -defaultsOSRD -resize 160 205 +preplace inst util_vector_logic_1 -pg 1 -lvl 3 -y 510 -defaultsOSRD -resize 140 60 +preplace inst proc_sys_reset_1 -pg 1 -lvl 6 -y 440 -defaultsOSRD +preplace inst xlconcat_2 -pg 1 -lvl 1 -y 980 -defaultsOSRD -resize 160 205 +preplace inst xlconcat -pg 1 -lvl 4 -y 580 -defaultsOSRD +preplace inst util_vector_logic_2 -pg 1 -lvl 3 -y 610 -defaultsOSRD -resize 140 60 +preplace inst proc_sys_reset_2 -pg 1 -lvl 6 -y 760 -defaultsOSRD -resize 280 140 +preplace inst proc_sys_reset_3 -pg 1 -lvl 6 -y 990 -defaultsOSRD -resize 280 140 +preplace netloc ps_7_FIXED_IO 1 5 3 2140 870 NJ 930 NJ +preplace netloc MEMS_INTn_1 1 0 3 NJ 260 NJ 260 610 +preplace netloc ps_7_FCLK_CLK0 1 4 3 1460 370 2110 350 2600 +preplace netloc ps_7_FCLK_CLK1 1 5 1 2090 +preplace netloc proc_sys_reset2_peripheral_aresetn 1 6 1 2540 +preplace netloc proc_sys_reset2_interconnect_aresetn 1 6 1 N +preplace netloc ps_7_FCLK_RESET1_N 1 5 1 2150 +preplace netloc xlconcat_1_dout 1 1 1 360 +preplace netloc util_vector_logic_0_Res 1 3 1 N +preplace netloc ps_7_FCLK_RESET0_N 1 5 1 2100 +preplace netloc ps_7_FCLK_CLK2 1 4 3 1470 1080 2180 550 2570 +preplace netloc ps_7_FCLK_CLK3 1 5 1 N +preplace netloc HDMI_INTn_1 1 0 3 NJ 340 NJ 490 620 +preplace netloc ps_7_M_AXI_GP0 1 5 2 2130 850 NJ +preplace netloc ps_7_FCLK_RESET3_N 1 5 1 2190 +preplace netloc ps_7_FCLK_RESET2_N 1 5 1 2170 +preplace netloc rst_ps_7_166M_peripheral_aresetn 1 6 1 2580 +preplace netloc xlconcat_0_dout 1 4 1 1450 +preplace netloc ps_7_DDR 1 5 3 2160 860 NJ 920 NJ +preplace netloc ps7_IIC_0 1 5 3 2120 880 NJ 940 NJ +preplace netloc util_vector_logic_2_Res 1 3 1 1110 +preplace netloc util_vector_logic_1_Res 1 3 1 1100 +preplace netloc io2axis_M00_AXI 1 4 4 1470 560 NJ 560 NJ 680 2940 +preplace netloc xlconcat_2_dout 1 1 1 380 +preplace netloc SW_1 1 0 1 160 +preplace netloc xlconcat_0_dout1 1 2 4 NJ 560 NJ 380 NJ 380 2080 +preplace netloc rst_ps_7_166M_interconnect_aresetn 1 6 1 2590 +levelinfo -pg 1 140 260 500 990 1350 1880 2350 2800 2990 +", +} +{ + da_axi4_cnt: "1", +} \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bd new file mode 100644 index 0000000..95c5863 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bd @@ -0,0 +1,1685 @@ + + + + + xilinx.com + BlockDiagram + z_turn + 1.00.a + + + isTop + true + + + + + DDR + + + + + + FIXED_IO + + + + + + IIC_0 + + + + + + DATA.IO_B35_LP + Data + Data + + + + + + + DATA + + + IO_B35_LP + + + + + + LAYERED_METADATA + undef + + + + + + + + + + DATA.IO_B35_LN + Data + Data + + + + + + + DATA + + + IO_B35_LN + + + + + + LAYERED_METADATA + undef + + + + + + + + + + DATA.LCD_DATA + Data + Data + + + + + + + DATA + + + LCD_DATA + + + + + + LAYERED_METADATA + undef + + + + + + + + + + CLK.LCD_PCLK + Clk + Clock + + + + + + + CLK + + + LCD_PCLK + + + + + + FREQ_HZ + 100000000 + + + + + + + + PHASE + 0.000 + + + + + + + + + + CLK.I2S_SCLK + Clk + Clock + + + + + + + CLK + + + I2S_SCLK + + + + + + FREQ_HZ + 100000000 + + + + + + + + PHASE + 0.000 + + + + + + + + + + CLK.IO_B34_LP11 + Clk + Clock + + + + + + + CLK + + + IO_B34_LP11 + + + + + + FREQ_HZ + 50000000 + + + + + + + + PHASE + 0.000 + + + + + + + + CLK_DOMAIN + z_turn_IO_B34_LP11 + + + + + + + + + + + + + BlockDiagram + :vivado.xilinx.com: + + + + + + IO_B35_LP + + in + + 24 + 1 + + + + + IO_B35_LN + + in + + 24 + 1 + + + + + LCD_DATA + + out + + 15 + 0 + + + + + LCD_VSYNC + + out + + + + LCD_HSYNC + + out + + + + LCD_DE + + out + + + + LCD_PCLK + + out + + + + I2S_SCLK + + out + + + + I2S_FSYNC_OUT + + out + + + + I2S_DOUT + + out + + + + IO_B34_LP + + in + + 5 + 1 + + + + + IO_B34_LN + + in + + 5 + 1 + + + + + I2S_DIN + + in + + + + I2S_FSYNC_IN + + in + + + + IO_B34_LP6 + + in + + + + IO_B34_LP8 + + in + + + + IO_B34_LN8 + + in + + + + IO_B34_LP11 + + in + + + + IO_B34_LN11 + + in + + + + LEDS + + out + + 2 + 0 + + + + + BP + + out + + + + HDMI_INTn + + in + + + + MEMS_INTn + + in + + + + SW + + in + + 3 + 0 + + + + + + + + + xilinx.com + BlockDiagram + z_turn_imp + 1.00.a + + + proc_sys_reset_2 + + + z_turn_proc_sys_reset1_0 + + + + proc_sys_reset_3 + + + z_turn_proc_sys_reset_1_0 + + + + proc_sys_reset_0 + + + z_turn_proc_sys_reset_3_0 + + + + ps7 + + + z_turn_processing_system7_0_0 + 166.667 + 100 + 200 + 1 + 1 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + LVCMOS 1.8V + MT41K256M16 RE-15E + 1 + 1 + 1 + 1 + MIO 16 .. 27 + 1 + 0 + 1 + 1 + MIO 46 + 1 + MIO 47 + 0 + 0 + 1 + 1 + MIO 14 .. 15 + 0 + 1 + 1 + MIO 51 + 0 + 1 + 1 + MIO 12 .. 13 + 0 + 1 + 1 + disabled + + + + z_turn_ps_7_axi_periph_0 + + + z_turn_ps_7_axi_periph_0 + 1 + 0 + xilinx.com:ip:axi_interconnect:2.1 + + + + z_turn_ps_7_axi_periph_1 + + + z_turn_ps_7_axi_periph_1 + 1 + 0 + xilinx.com:ip:axi_interconnect:2.1 + + + + proc_sys_reset_1 + + + z_turn_rst_ps_7_166M_0 + + + + util_vector_logic_0 + + + z_turn_util_vector_logic_0_0 + 1 + not + + + + util_vector_logic_1 + + + z_turn_util_vector_logic_0_1 + 1 + not + + + + util_vector_logic_2 + + + z_turn_util_vector_logic_1_0 + 1 + not + + + + xlconcat + + + z_turn_xlconcat_0_0 + 16 + + + + xlconcat_0 + + + z_turn_xlconcat_0_1 + 32 + 32 + + + + xlconcat_1 + + + z_turn_xlconcat_0_2 + 32 + + + + xlconcat_2 + + + z_turn_xlconcat_1_0 + 29 + 4 + 1 + + + + + + ps_7_M_AXI_GP0 + + + + + io2axis_M00_AXI + + + + + + + xlconcat_0_dout + + + + + ps_7_FCLK_CLK0 + + + + + + + + + rst_ps_7_166M_peripheral_aresetn + + + + + + rst_ps_7_166M_interconnect_aresetn + + + + + ps_7_FCLK_CLK2 + + + + + + + + + ps_7_FCLK_RESET1_N + + + + + ps_7_FCLK_RESET2_N + + + + + proc_sys_reset2_interconnect_aresetn + + + + + proc_sys_reset2_peripheral_aresetn + + + + + + ps_7_FCLK_RESET0_N + + + + + ps_7_FCLK_RESET3_N + + + + + ps_7_FCLK_CLK3 + + + + + ps_7_FCLK_CLK1 + + + + + util_vector_logic_0_Res + + + + + HDMI_INTn_1 + + + + + util_vector_logic_1_Res + + + + + MEMS_INTn_1 + + + + + + util_vector_logic_2_Res + + + + + xlconcat_1_dout + + + + + xlconcat_2_dout + + + + + xlconcat_0_dout1 + + + + + SW_1 + + + + + + + + + + + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp + z_turn_ps_7_axi_periph_1 + 1.00.a + + + S00_AXI + + + + + + M00_AXI + + + + + + CLK.ACLK + Clk + Clock + + + + + + + CLK + + + ACLK + + + + + + RST.ARESETN + Reset + Reset + + + + + + + RST + + + ARESETN + + + + + + CLK.S00_ACLK + Clk + Clock + + + + + + + CLK + + + S00_ACLK + + + + + + ASSOCIATED_BUSIF + S00_AXI + + + + + + + + ASSOCIATED_RESET + S00_ARESETN + + + + + + + + + + RST.S00_ARESETN + Reset + Reset + + + + + + + RST + + + S00_ARESETN + + + + + + CLK.M00_ACLK + Clk + Clock + + + + + + + CLK + + + M00_ACLK + + + + + + ASSOCIATED_BUSIF + M00_AXI + + + + + + + + ASSOCIATED_RESET + M00_ARESETN + + + + + + + + + + RST.M00_ARESETN + Reset + Reset + + + + + + + RST + + + M00_ARESETN + + + + + + + + + BlockDiagram + :vivado.xilinx.com: + + + + + + ACLK + + in + + + + ARESETN + + in + + 0 + 0 + + + + + S00_ACLK + + in + + + + S00_ARESETN + + in + + 0 + 0 + + + + + M00_ACLK + + in + + + + M00_ARESETN + + in + + 0 + 0 + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp + z_turn_ps_7_axi_periph_1_imp + 1.00.a + + + s00_couplers + + + + + + + z_turn_ps_7_axi_periph_1_ACLK_net + + + + + z_turn_ps_7_axi_periph_1_ARESETN_net + + + + + S00_ACLK_1 + + + + + S00_ARESETN_1 + + + + + + + + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp/z_turn_ps_7_axi_periph_1_imp + s00_couplers + 1.00.a + + + M_AXI + + + + + + S_AXI + + + + + + CLK.M_ACLK + Clk + Clock + + + + + + + CLK + + + M_ACLK + + + + + + ASSOCIATED_BUSIF + M_AXI + + + + + + + + ASSOCIATED_RESET + M_ARESETN + + + + + + + + + + RST.M_ARESETN + Reset + Reset + + + + + + + RST + + + M_ARESETN + + + + + + CLK.S_ACLK + Clk + Clock + + + + + + + CLK + + + S_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI + + + + + + + + ASSOCIATED_RESET + S_ARESETN + + + + + + + + + + RST.S_ARESETN + Reset + Reset + + + + + + + RST + + + S_ARESETN + + + + + + + + + BlockDiagram + :vivado.xilinx.com: + + + + + + M_ACLK + + in + + + + M_ARESETN + + in + + 0 + 0 + + + + + S_ACLK + + in + + + + S_ARESETN + + in + + 0 + 0 + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp/z_turn_ps_7_axi_periph_1_imp + s00_couplers_imp + 1.00.a + + + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp + z_turn_ps_7_axi_periph_0 + 1.00.a + + + S00_AXI + + + + + + M00_AXI + + + + + + CLK.ACLK + Clk + Clock + + + + + + + CLK + + + ACLK + + + + + + RST.ARESETN + Reset + Reset + + + + + + + RST + + + ARESETN + + + + + + CLK.S00_ACLK + Clk + Clock + + + + + + + CLK + + + S00_ACLK + + + + + + ASSOCIATED_BUSIF + S00_AXI + + + + + + + + ASSOCIATED_RESET + S00_ARESETN + + + + + + + + + + RST.S00_ARESETN + Reset + Reset + + + + + + + RST + + + S00_ARESETN + + + + + + CLK.M00_ACLK + Clk + Clock + + + + + + + CLK + + + M00_ACLK + + + + + + ASSOCIATED_BUSIF + M00_AXI + + + + + + + + ASSOCIATED_RESET + M00_ARESETN + + + + + + + + + + RST.M00_ARESETN + Reset + Reset + + + + + + + RST + + + M00_ARESETN + + + + + + + + + BlockDiagram + :vivado.xilinx.com: + + + + + + ACLK + + in + + + + ARESETN + + in + + 0 + 0 + + + + + S00_ACLK + + in + + + + S00_ARESETN + + in + + 0 + 0 + + + + + M00_ACLK + + in + + + + M00_ARESETN + + in + + 0 + 0 + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp + z_turn_ps_7_axi_periph_0_imp + 1.00.a + + + s00_couplers + + + + + + + z_turn_ps_7_axi_periph_0_ACLK_net + + + + + z_turn_ps_7_axi_periph_0_ARESETN_net + + + + + S00_ACLK_1 + + + + + S00_ARESETN_1 + + + + + + + + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp/z_turn_ps_7_axi_periph_0_imp + s00_couplers + 1.00.a + + + M_AXI + + + + + + S_AXI + + + + + + CLK.M_ACLK + Clk + Clock + + + + + + + CLK + + + M_ACLK + + + + + + ASSOCIATED_BUSIF + M_AXI + + + + + + + + ASSOCIATED_RESET + M_ARESETN + + + + + + + + + + RST.M_ARESETN + Reset + Reset + + + + + + + RST + + + M_ARESETN + + + + + + CLK.S_ACLK + Clk + Clock + + + + + + + CLK + + + S_ACLK + + + + + + ASSOCIATED_BUSIF + S_AXI + + + + + + + + ASSOCIATED_RESET + S_ARESETN + + + + + + + + + + RST.S_ARESETN + Reset + Reset + + + + + + + RST + + + S_ARESETN + + + + + + + + + BlockDiagram + :vivado.xilinx.com: + + + + + + M_ACLK + + in + + + + M_ARESETN + + in + + 0 + 0 + + + + + S_ACLK + + in + + + + S_ARESETN + + in + + 0 + 0 + + + + + + + + + xilinx.com + BlockDiagram/z_turn_imp/z_turn_ps_7_axi_periph_0_imp + s00_couplers_imp + 1.00.a + + + + + + + + + + + xilinx.com + Addressing/ps7 + processing_system7 + 5.5 + + + Data + 4G + 32 + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bxml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bxml new file mode 100644 index 0000000..0d2ca58 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn.bxml @@ -0,0 +1,252 @@ + + + + Composite Fileset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn_ooc.xdc b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn_ooc.xdc new file mode 100644 index 0000000..8fd1446 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/z_turn_ooc.xdc @@ -0,0 +1,15 @@ +################################################################################ + +# This XDC is used only for OOC mode of synthesis, implementation +# This constraints file contains default clock frequencies to be used during +# out-of-context flows such as OOC Synthesis and Hierarchical Designs. +# This constraints file is not used in normal top-down synthesis (default flow +# of Vivado) +################################################################################ +create_clock -name IO_B34_LP11 -period 20 [get_ports IO_B34_LP11] +create_clock -name ps7_FCLK_CLK0 -period 5.9999998080000063 [get_pins ps7/FCLK_CLK0] +create_clock -name ps7_FCLK_CLK1 -period 20 [get_pins ps7/FCLK_CLK1] +create_clock -name ps7_FCLK_CLK2 -period 10 [get_pins ps7/FCLK_CLK2] +create_clock -name ps7_FCLK_CLK3 -period 5 [get_pins ps7/FCLK_CLK3] + +################################################################################ \ No newline at end of file diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/lib_cdc_v1_0/ea79928f/hdl/src/vhdl/cdc_sync.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/lib_cdc_v1_0/ea79928f/hdl/src/vhdl/cdc_sync.vhd new file mode 100644 index 0000000..3286567 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/lib_cdc_v1_0/ea79928f/hdl/src/vhdl/cdc_sync.vhd @@ -0,0 +1,1261 @@ + +--Generic Help +--C_CDC_TYPE : Defines the type of CDC needed +-- 0 means pulse synchronizer. Used to transfer one clock pulse +-- from prmry domain to scndry domain. +-- 1 means level synchronizer. Used to transfer level signal. +-- 2 means level synchronizer with ack. Used to transfer level +-- signal. Input signal should change only when prmry_ack is detected +-- +--C_FLOP_INPUT : when set to 1 adds one flop stage to the input prmry_in signal +-- Set to 0 when incoming signal is purely floped signal. +-- +--C_RESET_STATE : Generally sync flops need not have resets. However, in some cases +-- it might be needed. +-- 0 means reset not needed for sync flops +-- 1 means reset needed for sync flops. i +-- In this case prmry_resetn should be in prmry clock, +-- while scndry_reset should be in scndry clock. +-- +--C_SINGLE_BIT : CDC should normally be done for single bit signals only. +-- However, based on design buses can also be CDC'ed. +-- 0 means it is a bus. In this case input be connected to prmry_vect_in. +-- Output is on scndry_vect_out. +-- 1 means it is a single bit. In this case input be connected to prmry_in. +-- Output is on scndry_out. +-- +--C_VECTOR_WIDTH : defines the size of bus. This is irrelevant when C_SINGLE_BIT = 1 +-- +--C_MTBF_STAGES : Defines the number of sync stages needed. Allowed values are 0 to 6. +-- Value of 0, 1 is allowed only for level CDC. +-- Min value for Pulse CDC is 2 +-- +--Whenever this file is used following XDC constraint has to be added + +-- set_false_path -to [get_pins -hier *cdc_to*/D] + + +--IO Ports +-- +-- prmry_aclk : clock of originating domain (source domain) +-- prmry_resetn : sync reset of originating clock domain (source domain) +-- prmry_in : input signal bit. This should be a pure flop output without +-- any combi logic. This is source. +-- prmry_vect_in : bus signal. From Source domain. +-- prmry_ack : Ack signal, valid for one clock period, in prmry_aclk domain. +-- Used only when C_CDC_TYPE = 2 +-- scndry_aclk : destination clock. +-- scndry_resetn : sync reset of destination domain +-- scndry_out : sync'ed output in destination domain. Single bit. +-- scndry_vect_out : sync'ed output in destination domain. bus. + + + + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; +use ieee.std_logic_misc.all; +library unisim; +use unisim.vcomponents.FDR; + + + +entity cdc_sync is + generic ( + C_CDC_TYPE : integer range 0 to 2 := 1 ; + -- 0 is pulse synch + -- 1 is level synch + -- 2 is ack based level sync + C_RESET_STATE : integer range 0 to 1 := 0 ; + -- 0 is reset not needed + -- 1 is reset needed + C_SINGLE_BIT : integer range 0 to 1 := 1 ; + -- 0 is bus input + -- 1 is single bit input + C_FLOP_INPUT : integer range 0 to 1 := 0 ; + C_VECTOR_WIDTH : integer range 0 to 64 := 32 ; + C_MTBF_STAGES : integer range 0 to 6 := 2 + -- Vector Data witdth + ); + + port ( + prmry_aclk : in std_logic ; -- + prmry_resetn : in std_logic ; -- + prmry_in : in std_logic ; -- + prmry_vect_in : in std_logic_vector -- + (C_VECTOR_WIDTH - 1 downto 0) ; -- + prmry_ack : out std_logic ; + -- + scndry_aclk : in std_logic ; -- + scndry_resetn : in std_logic ; -- + -- + -- Primary to Secondary Clock Crossing -- + scndry_out : out std_logic ; -- + -- + scndry_vect_out : out std_logic_vector -- + (C_VECTOR_WIDTH - 1 downto 0) -- + + ); + +end cdc_sync; + +------------------------------------------------------------------------------- +-- Architecture +------------------------------------------------------------------------------- +architecture implementation of cdc_sync is + +attribute DowngradeIPIdentifiedWarnings : string; +attribute DowngradeIPIdentifiedWarnings of implementation : architecture is "yes"; + +--attribute DONT_TOUCH : STRING; +--attribute KEEP : STRING; +--attribute DONT_TOUCH of implementation : architecture is "yes"; +signal prmry_resetn1 : std_logic := '0'; +signal scndry_resetn1 : std_logic := '0'; +signal prmry_reset2 : std_logic := '0'; +signal scndry_reset2 : std_logic := '0'; +--attribute KEEP of prmry_resetn1 : signal is "true"; +--attribute KEEP of scndry_resetn1 : signal is "true"; + +------------------------------------------------------------------------------- +-- Functions +------------------------------------------------------------------------------- + +-- No Functions Declared + +------------------------------------------------------------------------------- +-- Constants Declarations +------------------------------------------------------------------------------- + +-- No Constants Declared + +------------------------------------------------------------------------------- +-- Begin architecture logic +------------------------------------------------------------------------------- +begin + +HAS_RESET : if C_RESET_STATE = 1 generate +begin +prmry_resetn1 <= prmry_resetn; +scndry_resetn1 <= scndry_resetn; + +end generate HAS_RESET; + +HAS_NO_RESET : if C_RESET_STATE = 0 generate +begin + +prmry_resetn1 <= '1'; +scndry_resetn1 <= '1'; + +end generate HAS_NO_RESET; + +prmry_reset2 <= not prmry_resetn1; +scndry_reset2 <= not scndry_resetn1; + + +-- Generate PULSE clock domain crossing +GENERATE_PULSE_P_S_CDC_OPEN_ENDED : if C_CDC_TYPE = 0 generate + +-- Primary to Secondary +signal s_out_d1_cdc_to : std_logic := '0'; +--attribute DONT_TOUCH of s_out_d1_cdc_to : signal is "true"; +signal s_out_d2 : std_logic := '0'; +signal s_out_d3 : std_logic := '0'; +signal s_out_d4 : std_logic := '0'; +signal s_out_d5 : std_logic := '0'; +signal s_out_d6 : std_logic := '0'; +signal s_out_d7 : std_logic := '0'; +signal s_out_re : std_logic := '0'; +signal prmry_in_xored : std_logic := '0'; +signal p_in_d1_cdc_from : std_logic := '0'; + +signal srst_d1 : std_logic := '0'; +signal srst_d2 : std_logic := '0'; +signal srst_d3 : std_logic := '0'; +signal srst_d4 : std_logic := '0'; +signal srst_d5 : std_logic := '0'; +signal srst_d6 : std_logic := '0'; +signal srst_d7 : std_logic := '0'; + + ----------------------------------------------------------------------------- + -- ATTRIBUTE Declarations + ----------------------------------------------------------------------------- + -- Prevent x-propagation on clock-domain crossing register + ATTRIBUTE async_reg : STRING; + ATTRIBUTE async_reg OF REG_P_IN2_cdc_to : label IS "true"; + ATTRIBUTE async_reg OF P_IN_CROSS2SCNDRY_s_out_d2 : label IS "true"; + ATTRIBUTE async_reg OF P_IN_CROSS2SCNDRY_s_out_d3 : label IS "true"; + ATTRIBUTE async_reg OF P_IN_CROSS2SCNDRY_s_out_d4 : label IS "true"; + ATTRIBUTE async_reg OF P_IN_CROSS2SCNDRY_s_out_d5 : label IS "true"; + ATTRIBUTE async_reg OF P_IN_CROSS2SCNDRY_s_out_d6 : label IS "true"; + ATTRIBUTE async_reg OF P_IN_CROSS2SCNDRY_s_out_d7 : label IS "true"; + +begin + + --***************************************************************************** + --** Asynchronous Pulse Clock Crossing ** + --** PRIMARY TO SECONDARY OPEN-ENDED ** + --***************************************************************************** + +scndry_vect_out <= (others => '0'); +prmry_ack <= '0'; + +prmry_in_xored <= prmry_in xor p_in_d1_cdc_from; + +--------------------------------------REG_P_IN : process(prmry_aclk) +-------------------------------------- begin +-------------------------------------- if(prmry_aclk'EVENT and prmry_aclk ='1')then +-------------------------------------- if(prmry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +-------------------------------------- p_in_d1_cdc_from <= '0'; +-------------------------------------- else +-------------------------------------- p_in_d1_cdc_from <= prmry_in_xored; +-------------------------------------- end if; +-------------------------------------- end if; +-------------------------------------- end process REG_P_IN; + + + +REG_P_IN_cdc_from : component FDR + generic map(INIT => '0' + )port map ( + Q => p_in_d1_cdc_from, + C => prmry_aclk, + D => prmry_in_xored, + R => prmry_reset2 + ); + + + + + +REG_P_IN2_cdc_to : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d1_cdc_to, + C => scndry_aclk, + D => p_in_d1_cdc_from, + R => scndry_reset2 + ); + + + +------------------------------------ P_IN_CROSS2SCNDRY : process(scndry_aclk) +------------------------------------ begin +------------------------------------ if(scndry_aclk'EVENT and scndry_aclk ='1')then +------------------------------------ if(scndry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +------------------------------------ s_out_d2 <= '0'; +------------------------------------ s_out_d3 <= '0'; +------------------------------------ s_out_d4 <= '0'; +------------------------------------ s_out_d5 <= '0'; +------------------------------------ s_out_d6 <= '0'; +------------------------------------ s_out_d7 <= '0'; +------------------------------------ scndry_out <= '0'; +------------------------------------ else +------------------------------------ s_out_d2 <= s_out_d1_cdc_to; +------------------------------------ s_out_d3 <= s_out_d2; +------------------------------------ s_out_d4 <= s_out_d3; +------------------------------------ s_out_d5 <= s_out_d4; +------------------------------------ s_out_d6 <= s_out_d5; +------------------------------------ s_out_d7 <= s_out_d6; +------------------------------------ scndry_out <= s_out_re; +------------------------------------ end if; +------------------------------------ end if; +------------------------------------ end process P_IN_CROSS2SCNDRY; + + + + +P_IN_CROSS2SCNDRY_s_out_d2 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d2, + C => scndry_aclk, + D => s_out_d1_cdc_to, + R => scndry_reset2 + ); + + +P_IN_CROSS2SCNDRY_s_out_d3 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d3, + C => scndry_aclk, + D => s_out_d2, + R => scndry_reset2 + ); + + +P_IN_CROSS2SCNDRY_s_out_d4 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d4, + C => scndry_aclk, + D => s_out_d3, + R => scndry_reset2 + ); + + +P_IN_CROSS2SCNDRY_s_out_d5 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d5, + C => scndry_aclk, + D => s_out_d4, + R => scndry_reset2 + ); + + +P_IN_CROSS2SCNDRY_s_out_d6 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d6, + C => scndry_aclk, + D => s_out_d5, + R => scndry_reset2 + ); + + + +P_IN_CROSS2SCNDRY_s_out_d7 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_out_d7, + C => scndry_aclk, + D => s_out_d6, + R => scndry_reset2 + ); + + +P_IN_CROSS2SCNDRY_scndry_out : component FDR + generic map(INIT => '0' + )port map ( + Q => scndry_out, + C => scndry_aclk, + D => s_out_re, + R => scndry_reset2 + ); + +s_rst_d1 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d1, + C => scndry_aclk, + D => '1', + R => scndry_reset2 + ); +s_rst_d2 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d2, + C => scndry_aclk, + D => srst_d1, + R => scndry_reset2 + ); +s_rst_d3 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d3, + C => scndry_aclk, + D => srst_d2, + R => scndry_reset2 + ); + +s_rst_d4 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d4, + C => scndry_aclk, + D => srst_d3, + R => scndry_reset2 + ); + + +s_rst_d5 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d5, + C => scndry_aclk, + D => srst_d4, + R => scndry_reset2 + ); + +s_rst_d6 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d6, + C => scndry_aclk, + D => srst_d5, + R => scndry_reset2 + ); + +s_rst_d7 : component FDR + generic map(INIT => '0' + )port map ( + Q => srst_d7, + C => scndry_aclk, + D => srst_d6, + R => scndry_reset2 + ); + +MTBF_2 : if C_MTBF_STAGES = 2 generate +begin + s_out_re <= (s_out_d2 xor s_out_d3) and (srst_d3); + +end generate MTBF_2; + +MTBF_3 : if C_MTBF_STAGES = 3 generate +begin + s_out_re <= (s_out_d3 xor s_out_d4) and (srst_d4); + +end generate MTBF_3; + +MTBF_4 : if C_MTBF_STAGES = 4 generate +begin + s_out_re <= (s_out_d4 xor s_out_d5) and (srst_d5); + +end generate MTBF_4; + +MTBF_5 : if C_MTBF_STAGES = 5 generate +begin + s_out_re <= (s_out_d5 xor s_out_d6) and (srst_d6); + +end generate MTBF_5; + +MTBF_6 : if C_MTBF_STAGES = 6 generate +begin + s_out_re <= (s_out_d6 xor s_out_d7) and (srst_d7); + +end generate MTBF_6; + + -- Feed secondary pulse out + +end generate GENERATE_PULSE_P_S_CDC_OPEN_ENDED; + + +-- Generate LEVEL clock domain crossing with reset state = 0 +GENERATE_LEVEL_P_S_CDC : if C_CDC_TYPE = 1 generate +begin +-- Primary to Secondary + +SINGLE_BIT : if C_SINGLE_BIT = 1 generate + +signal p_level_in_d1_cdc_from : std_logic := '0'; +signal p_level_in_int : std_logic := '0'; +signal s_level_out_d1_cdc_to : std_logic := '0'; +--attribute DONT_TOUCH of s_level_out_d1_cdc_to : signal is "true"; +signal s_level_out_d2 : std_logic := '0'; +signal s_level_out_d3 : std_logic := '0'; +signal s_level_out_d4 : std_logic := '0'; +signal s_level_out_d5 : std_logic := '0'; +signal s_level_out_d6 : std_logic := '0'; + ----------------------------------------------------------------------------- + -- ATTRIBUTE Declarations + ----------------------------------------------------------------------------- + -- Prevent x-propagation on clock-domain crossing register + ATTRIBUTE async_reg : STRING; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_IN_cdc_to : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d2 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d3 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d4 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d5 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d6 : label IS "true"; + +begin + + --***************************************************************************** + --** Asynchronous Level Clock Crossing ** + --** PRIMARY TO SECONDARY ** + --***************************************************************************** + -- register is scndry to provide clean ff output to clock crossing logic + +scndry_vect_out <= (others => '0'); +prmry_ack <= '0'; + + +INPUT_FLOP : if C_FLOP_INPUT = 1 generate +begin + +---------------------------------- REG_PLEVEL_IN : process(prmry_aclk) +---------------------------------- begin +---------------------------------- if(prmry_aclk'EVENT and prmry_aclk ='1')then +---------------------------------- if(prmry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +---------------------------------- p_level_in_d1_cdc_from <= '0'; +---------------------------------- else +---------------------------------- p_level_in_d1_cdc_from <= prmry_in; +---------------------------------- end if; +---------------------------------- end if; +---------------------------------- end process REG_PLEVEL_IN; + + +REG_PLEVEL_IN_cdc_from : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_in_d1_cdc_from, + C => prmry_aclk, + D => prmry_in, + R => prmry_reset2 + ); + + + p_level_in_int <= p_level_in_d1_cdc_from; + +end generate INPUT_FLOP; + + +NO_INPUT_FLOP : if C_FLOP_INPUT = 0 generate +begin + + p_level_in_int <= prmry_in; + +end generate NO_INPUT_FLOP; + + +CROSS_PLEVEL_IN2SCNDRY_IN_cdc_to : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d1_cdc_to, + C => scndry_aclk, + D => p_level_in_int, + R => scndry_reset2 + ); + + +------------------------------ CROSS_PLEVEL_IN2SCNDRY : process(scndry_aclk) +------------------------------ begin +------------------------------ if(scndry_aclk'EVENT and scndry_aclk ='1')then +------------------------------ if(scndry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +------------------------------ s_level_out_d2 <= '0'; +------------------------------ s_level_out_d3 <= '0'; +------------------------------ s_level_out_d4 <= '0'; +------------------------------ s_level_out_d5 <= '0'; +------------------------------ s_level_out_d6 <= '0'; +------------------------------ else +------------------------------ s_level_out_d2 <= s_level_out_d1_cdc_to; +------------------------------ s_level_out_d3 <= s_level_out_d2; +------------------------------ s_level_out_d4 <= s_level_out_d3; +------------------------------ s_level_out_d5 <= s_level_out_d4; +------------------------------ s_level_out_d6 <= s_level_out_d5; +------------------------------ end if; +------------------------------ end if; +------------------------------ end process CROSS_PLEVEL_IN2SCNDRY; + + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d2 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d2, + C => scndry_aclk, + D => s_level_out_d1_cdc_to, + R => scndry_reset2 + ); + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d3 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d3, + C => scndry_aclk, + D => s_level_out_d2, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d4 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d4, + C => scndry_aclk, + D => s_level_out_d3, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d5 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d5, + C => scndry_aclk, + D => s_level_out_d4, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d6 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d6, + C => scndry_aclk, + D => s_level_out_d5, + R => scndry_reset2 + ); + + + + + + + +MTBF_L1 : if C_MTBF_STAGES = 1 generate +begin + scndry_out <= s_level_out_d1_cdc_to; + + +end generate MTBF_L1; + +MTBF_L2 : if C_MTBF_STAGES = 2 generate +begin + + scndry_out <= s_level_out_d2; + + +end generate MTBF_L2; + +MTBF_L3 : if C_MTBF_STAGES = 3 generate +begin + + scndry_out <= s_level_out_d3; + + + +end generate MTBF_L3; + +MTBF_L4 : if C_MTBF_STAGES = 4 generate +begin + scndry_out <= s_level_out_d4; + + + +end generate MTBF_L4; + +MTBF_L5 : if C_MTBF_STAGES = 5 generate +begin + + scndry_out <= s_level_out_d5; + + +end generate MTBF_L5; + +MTBF_L6 : if C_MTBF_STAGES = 6 generate +begin + + scndry_out <= s_level_out_d6; + + +end generate MTBF_L6; + +end generate SINGLE_BIT; + + + +MULTI_BIT : if C_SINGLE_BIT = 0 generate + +signal p_level_in_bus_int : std_logic_vector (C_VECTOR_WIDTH - 1 downto 0); +signal p_level_in_bus_d1_cdc_from : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +signal s_level_out_bus_d1_cdc_to : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +--attribute DONT_TOUCH of s_level_out_bus_d1_cdc_to : signal is "true"; +signal s_level_out_bus_d1_cdc_tig : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +signal s_level_out_bus_d2 : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +signal s_level_out_bus_d3 : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +signal s_level_out_bus_d4 : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +signal s_level_out_bus_d5 : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); +signal s_level_out_bus_d6 : std_logic_vector(C_VECTOR_WIDTH - 1 downto 0); + ----------------------------------------------------------------------------- + -- ATTRIBUTE Declarations + ----------------------------------------------------------------------------- + -- Prevent x-propagation on clock-domain crossing register + ATTRIBUTE async_reg : STRING; + -----------------ATTRIBUTE async_reg OF s_level_out_bus_d2 : SIGNAL IS "true"; + -----------------ATTRIBUTE async_reg OF s_level_out_bus_d3 : SIGNAL IS "true"; + -----------------ATTRIBUTE async_reg OF s_level_out_bus_d4 : SIGNAL IS "true"; + -----------------ATTRIBUTE async_reg OF s_level_out_bus_d5 : SIGNAL IS "true"; + -----------------ATTRIBUTE async_reg OF s_level_out_bus_d6 : SIGNAL IS "true"; + +begin + + --***************************************************************************** + --** Asynchronous Level Clock Crossing ** + --** PRIMARY TO SECONDARY ** + --***************************************************************************** + -- register is scndry to provide clean ff output to clock crossing logic + +scndry_out <= '0'; +prmry_ack <= '0'; + + +INPUT_FLOP_BUS : if C_FLOP_INPUT = 1 generate +begin + + + +----------------------------------- REG_PLEVEL_IN : process(prmry_aclk) +----------------------------------- begin +----------------------------------- if(prmry_aclk'EVENT and prmry_aclk ='1')then +----------------------------------- if(prmry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +----------------------------------- p_level_in_bus_d1_cdc_from <= (others => '0'); +----------------------------------- else +----------------------------------- p_level_in_bus_d1_cdc_from <= prmry_vect_in; +----------------------------------- end if; +----------------------------------- end if; +----------------------------------- end process REG_PLEVEL_IN; + +FOR_REG_PLEVEL_IN: for i in 0 to (C_VECTOR_WIDTH-1) generate +begin + +REG_PLEVEL_IN_p_level_in_bus_d1_cdc_from : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_in_bus_d1_cdc_from (i), + C => prmry_aclk, + D => prmry_vect_in (i), + R => prmry_reset2 + ); +end generate FOR_REG_PLEVEL_IN; + + + + + + p_level_in_bus_int <= p_level_in_bus_d1_cdc_from; + +end generate INPUT_FLOP_BUS; + + +NO_INPUT_FLOP_BUS : if C_FLOP_INPUT = 0 generate +begin + +p_level_in_bus_int <= prmry_vect_in; + +end generate NO_INPUT_FLOP_BUS; + +FOR_IN_cdc_to: for i in 0 to (C_VECTOR_WIDTH-1) generate + + ATTRIBUTE async_reg OF CROSS2_PLEVEL_IN2SCNDRY_IN_cdc_to : label IS "true"; +begin + +CROSS2_PLEVEL_IN2SCNDRY_IN_cdc_to : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_bus_d1_cdc_to (i), + C => scndry_aclk, + D => p_level_in_bus_int (i), + R => scndry_reset2 + ); +end generate FOR_IN_cdc_to; + +----------------------------------------- CROSS_PLEVEL_IN2SCNDRY : process(scndry_aclk) +----------------------------------------- begin +----------------------------------------- if(scndry_aclk'EVENT and scndry_aclk ='1')then +----------------------------------------- if(scndry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +----------------------------------------- s_level_out_bus_d2 <= (others => '0'); +----------------------------------------- s_level_out_bus_d3 <= (others => '0'); +----------------------------------------- s_level_out_bus_d4 <= (others => '0'); +----------------------------------------- s_level_out_bus_d5 <= (others => '0'); +----------------------------------------- s_level_out_bus_d6 <= (others => '0'); +----------------------------------------- else +----------------------------------------- s_level_out_bus_d2 <= s_level_out_bus_d1_cdc_to; +----------------------------------------- s_level_out_bus_d3 <= s_level_out_bus_d2; +----------------------------------------- s_level_out_bus_d4 <= s_level_out_bus_d3; +----------------------------------------- s_level_out_bus_d5 <= s_level_out_bus_d4; +----------------------------------------- s_level_out_bus_d6 <= s_level_out_bus_d5; +----------------------------------------- end if; +----------------------------------------- end if; +----------------------------------------- end process CROSS_PLEVEL_IN2SCNDRY; + + + +FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d2: for i in 0 to (C_VECTOR_WIDTH-1) generate + + ATTRIBUTE async_reg OF CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d2 : label IS "true"; +begin + +CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d2 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_bus_d2 (i), + C => scndry_aclk, + D => s_level_out_bus_d1_cdc_to (i), + R => scndry_reset2 + ); +end generate FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d2; + + +FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d3: for i in 0 to (C_VECTOR_WIDTH-1) generate + + ATTRIBUTE async_reg OF CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d3 : label IS "true"; +begin + +CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d3 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_bus_d3 (i), + C => scndry_aclk, + D => s_level_out_bus_d2 (i), + R => scndry_reset2 + ); +end generate FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d3; + + +FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d4: for i in 0 to (C_VECTOR_WIDTH-1) generate + + ATTRIBUTE async_reg OF CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d4 : label IS "true"; +begin + +CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d4 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_bus_d4 (i), + C => scndry_aclk, + D => s_level_out_bus_d3 (i), + R => scndry_reset2 + ); +end generate FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d4; + + + +FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d5: for i in 0 to (C_VECTOR_WIDTH-1) generate + + ATTRIBUTE async_reg OF CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d5 : label IS "true"; +begin + +CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d5 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_bus_d5 (i), + C => scndry_aclk, + D => s_level_out_bus_d4 (i), + R => scndry_reset2 + ); +end generate FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d5; + + +FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d6: for i in 0 to (C_VECTOR_WIDTH-1) generate + + ATTRIBUTE async_reg OF CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d6 : label IS "true"; +begin + +CROSS2_PLEVEL_IN2SCNDRY_s_level_out_bus_d6 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_bus_d6 (i), + C => scndry_aclk, + D => s_level_out_bus_d5 (i), + R => scndry_reset2 + ); +end generate FOR_CROSS_PLEVEL_IN2SCNDRY_bus_d6; + + + +MTBF_L1 : if C_MTBF_STAGES = 1 generate +begin + + scndry_vect_out <= s_level_out_bus_d1_cdc_to; + + +end generate MTBF_L1; + +MTBF_L2 : if C_MTBF_STAGES = 2 generate +begin + + scndry_vect_out <= s_level_out_bus_d2; + + +end generate MTBF_L2; + +MTBF_L3 : if C_MTBF_STAGES = 3 generate +begin + + scndry_vect_out <= s_level_out_bus_d3; + + + +end generate MTBF_L3; + +MTBF_L4 : if C_MTBF_STAGES = 4 generate +begin + scndry_vect_out <= s_level_out_bus_d4; + + + +end generate MTBF_L4; + +MTBF_L5 : if C_MTBF_STAGES = 5 generate +begin + + scndry_vect_out <= s_level_out_bus_d5; + + +end generate MTBF_L5; + +MTBF_L6 : if C_MTBF_STAGES = 6 generate +begin + + scndry_vect_out <= s_level_out_bus_d6; + + +end generate MTBF_L6; + +end generate MULTI_BIT; + + +end generate GENERATE_LEVEL_P_S_CDC; + + +GENERATE_LEVEL_ACK_P_S_CDC : if C_CDC_TYPE = 2 generate +-- Primary to Secondary + + +signal p_level_in_d1_cdc_from : std_logic := '0'; +signal p_level_in_int : std_logic := '0'; +signal s_level_out_d1_cdc_to : std_logic := '0'; +--attribute DONT_TOUCH of s_level_out_d1_cdc_to : signal is "true"; +signal s_level_out_d2 : std_logic := '0'; +signal s_level_out_d3 : std_logic := '0'; +signal s_level_out_d4 : std_logic := '0'; +signal s_level_out_d5 : std_logic := '0'; +signal s_level_out_d6 : std_logic := '0'; +signal p_level_out_d1_cdc_to : std_logic := '0'; +--attribute DONT_TOUCH of p_level_out_d1_cdc_to : signal is "true"; +signal p_level_out_d2 : std_logic := '0'; +signal p_level_out_d3 : std_logic := '0'; +signal p_level_out_d4 : std_logic := '0'; +signal p_level_out_d5 : std_logic := '0'; +signal p_level_out_d6 : std_logic := '0'; +signal p_level_out_d7 : std_logic := '0'; +signal scndry_out_int : std_logic := '0'; +signal prmry_pulse_ack : std_logic := '0'; + ----------------------------------------------------------------------------- + -- ATTRIBUTE Declarations + ----------------------------------------------------------------------------- + -- Prevent x-propagation on clock-domain crossing register + ATTRIBUTE async_reg : STRING; + ATTRIBUTE async_reg OF CROSS3_PLEVEL_IN2SCNDRY_IN_cdc_to : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d2 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d3 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d4 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d5 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_IN2SCNDRY_s_level_out_d6 : label IS "true"; + + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d1_cdc_to : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d2 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d3 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d4 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d5 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d6 : label IS "true"; + ATTRIBUTE async_reg OF CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d7 : label IS "true"; + +begin + + --***************************************************************************** + --** Asynchronous Level Clock Crossing ** + --** PRIMARY TO SECONDARY ** + --***************************************************************************** + -- register is scndry to provide clean ff output to clock crossing logic +scndry_vect_out <= (others => '0'); + + +INPUT_FLOP : if C_FLOP_INPUT = 1 generate +begin + +------------------------------------------ REG_PLEVEL_IN : process(prmry_aclk) +------------------------------------------ begin +------------------------------------------ if(prmry_aclk'EVENT and prmry_aclk ='1')then +------------------------------------------ if(prmry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +------------------------------------------ p_level_in_d1_cdc_from <= '0'; +------------------------------------------ else +------------------------------------------ p_level_in_d1_cdc_from <= prmry_in; +------------------------------------------ end if; +------------------------------------------ end if; +------------------------------------------ end process REG_PLEVEL_IN; + + + +REG_PLEVEL_IN_cdc_from : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_in_d1_cdc_from, + C => prmry_aclk, + D => prmry_in, + R => prmry_reset2 + ); + + + p_level_in_int <= p_level_in_d1_cdc_from; + +end generate INPUT_FLOP; + + +NO_INPUT_FLOP : if C_FLOP_INPUT = 0 generate +begin + + p_level_in_int <= prmry_in; + +end generate NO_INPUT_FLOP; + + +CROSS3_PLEVEL_IN2SCNDRY_IN_cdc_to : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d1_cdc_to, + C => scndry_aclk, + D => p_level_in_int, + R => scndry_reset2 + ); + + +------------------------------------------------ CROSS_PLEVEL_IN2SCNDRY : process(scndry_aclk) +------------------------------------------------ begin +------------------------------------------------ if(scndry_aclk'EVENT and scndry_aclk ='1')then +------------------------------------------------ if(scndry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +------------------------------------------------ s_level_out_d2 <= '0'; +------------------------------------------------ s_level_out_d3 <= '0'; +------------------------------------------------ s_level_out_d4 <= '0'; +------------------------------------------------ s_level_out_d5 <= '0'; +------------------------------------------------ s_level_out_d6 <= '0'; +------------------------------------------------ else +------------------------------------------------ s_level_out_d2 <= s_level_out_d1_cdc_to; +------------------------------------------------ s_level_out_d3 <= s_level_out_d2; +------------------------------------------------ s_level_out_d4 <= s_level_out_d3; +------------------------------------------------ s_level_out_d5 <= s_level_out_d4; +------------------------------------------------ s_level_out_d6 <= s_level_out_d5; +------------------------------------------------ end if; +------------------------------------------------ end if; +------------------------------------------------ end process CROSS_PLEVEL_IN2SCNDRY; + + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d2 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d2, + C => scndry_aclk, + D => s_level_out_d1_cdc_to, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d3 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d3, + C => scndry_aclk, + D => s_level_out_d2, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d4 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d4, + C => scndry_aclk, + D => s_level_out_d3, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d5 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d5, + C => scndry_aclk, + D => s_level_out_d4, + R => scndry_reset2 + ); + + +CROSS_PLEVEL_IN2SCNDRY_s_level_out_d6 : component FDR + generic map(INIT => '0' + )port map ( + Q => s_level_out_d6, + C => scndry_aclk, + D => s_level_out_d5, + R => scndry_reset2 + ); + + + + + + + + +--------------------------------------------------- CROSS_PLEVEL_SCNDRY2PRMRY : process(prmry_aclk) +--------------------------------------------------- begin +--------------------------------------------------- if(prmry_aclk'EVENT and prmry_aclk ='1')then +--------------------------------------------------- if(prmry_resetn1 = '0') then -- and C_RESET_STATE = 1)then +--------------------------------------------------- p_level_out_d1_cdc_to <= '0'; +--------------------------------------------------- p_level_out_d2 <= '0'; +--------------------------------------------------- p_level_out_d3 <= '0'; +--------------------------------------------------- p_level_out_d4 <= '0'; +--------------------------------------------------- p_level_out_d5 <= '0'; +--------------------------------------------------- p_level_out_d6 <= '0'; +--------------------------------------------------- p_level_out_d7 <= '0'; +--------------------------------------------------- prmry_ack <= '0'; +--------------------------------------------------- else +--------------------------------------------------- p_level_out_d1_cdc_to <= scndry_out_int; +--------------------------------------------------- p_level_out_d2 <= p_level_out_d1_cdc_to; +--------------------------------------------------- p_level_out_d3 <= p_level_out_d2; +--------------------------------------------------- p_level_out_d4 <= p_level_out_d3; +--------------------------------------------------- p_level_out_d5 <= p_level_out_d4; +--------------------------------------------------- p_level_out_d6 <= p_level_out_d5; +--------------------------------------------------- p_level_out_d7 <= p_level_out_d6; +--------------------------------------------------- prmry_ack <= prmry_pulse_ack; +--------------------------------------------------- end if; +--------------------------------------------------- end if; +--------------------------------------------------- end process CROSS_PLEVEL_SCNDRY2PRMRY; + + + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d1_cdc_to : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d1_cdc_to, + C => prmry_aclk, + D => scndry_out_int, + R => prmry_reset2 + ); + + + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d2 : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d2, + C => prmry_aclk, + D => p_level_out_d1_cdc_to, + R => prmry_reset2 + ); + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d3 : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d3, + C => prmry_aclk, + D => p_level_out_d2, + R => prmry_reset2 + ); + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d4 : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d4, + C => prmry_aclk, + D => p_level_out_d3, + R => prmry_reset2 + ); + + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d5 : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d5, + C => prmry_aclk, + D => p_level_out_d4, + R => prmry_reset2 + ); + + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d6 : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d6, + C => prmry_aclk, + D => p_level_out_d5, + R => prmry_reset2 + ); + + +CROSS_PLEVEL_SCNDRY2PRMRY_p_level_out_d7 : component FDR + generic map(INIT => '0' + )port map ( + Q => p_level_out_d7, + C => prmry_aclk, + D => p_level_out_d6, + R => prmry_reset2 + ); + + +CROSS_PLEVEL_SCNDRY2PRMRY_prmry_ack : component FDR + generic map(INIT => '0' + )port map ( + Q => prmry_ack, + C => prmry_aclk, + D => prmry_pulse_ack, + R => prmry_reset2 + ); + + + + + + + + + + + + + + + +MTBF_L2 : if C_MTBF_STAGES = 2 or C_MTBF_STAGES = 1 generate +begin + + scndry_out_int <= s_level_out_d2; + --prmry_pulse_ack <= p_level_out_d3 xor p_level_out_d2; + prmry_pulse_ack <= (not p_level_out_d3) and p_level_out_d2; + + +end generate MTBF_L2; + +MTBF_L3 : if C_MTBF_STAGES = 3 generate +begin + + scndry_out_int <= s_level_out_d3; + --prmry_pulse_ack <= p_level_out_d4 xor p_level_out_d3; + prmry_pulse_ack <= (not p_level_out_d4) and p_level_out_d3; + + + +end generate MTBF_L3; + +MTBF_L4 : if C_MTBF_STAGES = 4 generate +begin + scndry_out_int <= s_level_out_d4; + --prmry_pulse_ack <= p_level_out_d5 xor p_level_out_d4; + prmry_pulse_ack <= (not p_level_out_d5) and p_level_out_d4; + + + +end generate MTBF_L4; + +MTBF_L5 : if C_MTBF_STAGES = 5 generate +begin + + scndry_out_int <= s_level_out_d5; + --prmry_pulse_ack <= p_level_out_d6 xor p_level_out_d5; + prmry_pulse_ack <= (not p_level_out_d6) and p_level_out_d5; + + +end generate MTBF_L5; + +MTBF_L6 : if C_MTBF_STAGES = 6 generate +begin + + scndry_out_int <= s_level_out_d6; + --prmry_pulse_ack <= p_level_out_d7 xor p_level_out_d6; + prmry_pulse_ack <= (not p_level_out_d7) and p_level_out_d6; + + +end generate MTBF_L6; + + scndry_out <= scndry_out_int; + + +end generate GENERATE_LEVEL_ACK_P_S_CDC; + + +end implementation; + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/lpf.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/lpf.vhd new file mode 100644 index 0000000..e7a05b5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/lpf.vhd @@ -0,0 +1,444 @@ +------------------------------------------------------------------------------- +-- lpf - entity/architecture pair +------------------------------------------------------------------------------- +-- +-- ************************************************************************ +-- ** DISCLAIMER OF LIABILITY ** +-- ** ** +-- ** This file contains proprietary and confidential information of ** +-- ** Xilinx, Inc. ("Xilinx"), that is distributed under a license ** +-- ** from Xilinx, and may be used, copied and/or disclosed only ** +-- ** pursuant to the terms of a valid license agreement with Xilinx. ** +-- ** ** +-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION ** +-- ** ("MATERIALS") "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER ** +-- ** EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING WITHOUT ** +-- ** LIMITATION, ANY WARRANTY WITH RESPECT TO NONINFRINGEMENT, ** +-- ** MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Xilinx ** +-- ** does not warrant that functions included in the Materials will ** +-- ** meet the requirements of Licensee, or that the operation of the ** +-- ** Materials will be uninterrupted or error-free, or that defects ** +-- ** in the Materials will be corrected. Furthermore, Xilinx does ** +-- ** not warrant or make any representations regarding use, or the ** +-- ** results of the use, of the Materials in terms of correctness, ** +-- ** accuracy, reliability or otherwise. ** +-- ** ** +-- ** Xilinx products are not designed or intended to be fail-safe, ** +-- ** or for use in any application requiring fail-safe performance, ** +-- ** such as life-support or safety devices or systems, Class III ** +-- ** medical devices, nuclear facilities, applications related to ** +-- ** the deployment of airbags, or any other applications that could ** +-- ** lead to death, personal injury or severe property or ** +-- ** environmental damage (individually and collectively, "critical ** +-- ** applications"). Customer assumes the sole risk and liability ** +-- ** of any use of Xilinx products in critical applications, ** +-- ** subject only to applicable laws and regulations governing ** +-- ** limitations on product liability. ** +-- ** ** +-- ** Copyright 2012 Xilinx, Inc. ** +-- ** All rights reserved. ** +-- ** ** +-- ** This disclaimer and copyright notice must be retained as part ** +-- ** of this file at all times. ** +-- ************************************************************************ +-- +------------------------------------------------------------------------------- +-- Filename: lpf.vhd +-- Version: v4.00a +-- Description: Parameterizeable top level processor reset module. +-- VHDL-Standard: VHDL'93 +------------------------------------------------------------------------------- +-- Structure: This section should show the hierarchical structure of the +-- designs.Separate lines with blank lines if necessary to improve +-- readability. +-- +-- proc_sys_reset.vhd +-- upcnt_n.vhd +-- lpf.vhd +-- sequence.vhd +------------------------------------------------------------------------------- +-- Author: Kurt Conover +-- History: +-- Kurt Conover 11/08/01 -- First Release +-- +-- KC 02/25/2002 -- Added Dcm_locked as an input +-- -- Added Power on reset srl_time_out +-- +-- KC 08/26/2003 -- Added attribute statements for power on +-- reset SRL +-- +-- ~~~~~~~ +-- SK 03/11/10 +-- ^^^^^^^ +-- 1. Updated the core so support the active low "Interconnect_aresetn" and +-- "Peripheral_aresetn" signals. +-- ^^^^^^^ +------------------------------------------------------------------------------- +-- Naming Conventions: +-- active low signals: "*_n" +-- clock signals: "clk", "clk_div#", "clk_#x" +-- reset signals: "rst", "rst_n" +-- generics: "C_*" +-- user defined types: "*_TYPE" +-- state machine next state: "*_ns" +-- state machine current state: "*_cs" +-- combinatorial signals: "*_com" +-- pipelined or register delay signals: "*_d#" +-- counter signals: "*cnt*" +-- clock enable signals: "*_ce" +-- internal version of output port "*_i" +-- device pins: "*_pin" +-- ports: - Names begin with Uppercase +-- processes: "*_PROCESS" +-- component instantiations: "I_<#|FUNC> +------------------------------------------------------------------------------- +library IEEE; + use IEEE.std_logic_1164.all; + use IEEE.std_logic_arith.all; +library lib_cdc_v1_0; +--use lib_cdc_v1_0.all; +library Unisim; + use Unisim.all; +------------------------------------------------------------------------------- +-- Port Declaration +------------------------------------------------------------------------------- +-- Definition of Generics: +-- C_EXT_RST_WIDTH -- External Reset Low Pass Filter setting +-- C_AUX_RST_WIDTH -- Auxiliary Reset Low Pass Filter setting +-- C_EXT_RESET_HIGH -- External Reset Active High or Active Low +-- C_AUX_RESET_HIGH -= Auxiliary Reset Active High or Active Low +-- +-- Definition of Ports: +-- Slowest_sync_clk -- Clock +-- External_System_Reset -- External Reset Input +-- Auxiliary_System_Reset -- Auxiliary Reset Input +-- Dcm_locked -- DCM Locked, hold system in reset until 1 +-- Lpf_reset -- Low Pass Filtered Output +-- +------------------------------------------------------------------------------- +entity lpf is + generic( + C_EXT_RST_WIDTH : Integer; + C_AUX_RST_WIDTH : Integer; + C_EXT_RESET_HIGH : std_logic; + C_AUX_RESET_HIGH : std_logic + ); + + port( + MB_Debug_Sys_Rst : in std_logic; + Dcm_locked : in std_logic; + External_System_Reset : in std_logic; + Auxiliary_System_Reset : in std_logic; + Slowest_Sync_Clk : in std_logic; + Lpf_reset : out std_logic + ); + +end lpf; + +architecture imp of lpf is + +component SRL16 is +-- synthesis translate_off + generic ( + INIT : bit_vector ); +-- synthesis translate_on + port (D : in std_logic; + CLK : in std_logic; + A0 : in std_logic; + A1 : in std_logic; + A2 : in std_logic; + A3 : in std_logic; + Q : out std_logic); +end component SRL16; + + +constant CLEAR : std_logic := '0'; + +signal exr_d1 : std_logic := '0'; -- delayed External_System_Reset +signal exr_lpf : std_logic_vector(0 to C_EXT_RST_WIDTH - 1) + := (others => '0'); -- LPF DFF + +signal asr_d1 : std_logic := '0'; -- delayed Auxiliary_System_Reset +signal asr_lpf : std_logic_vector(0 to C_AUX_RST_WIDTH - 1) + := (others => '0'); -- LPF DFF + +signal exr_and : std_logic := '0'; -- varible input width "and" gate +signal exr_nand : std_logic := '0'; -- vaiable input width "and" gate + +signal asr_and : std_logic := '0'; -- varible input width "and" gate +signal asr_nand : std_logic := '0'; -- vaiable input width "and" gate + +signal lpf_int : std_logic := '0'; -- internal Lpf_reset +signal lpf_exr : std_logic := '0'; +signal lpf_asr : std_logic := '0'; + +signal srl_time_out : std_logic; + +attribute INIT : string; +attribute INIT of POR_SRL_I: label is "FFFF"; + + +begin + + Lpf_reset <= lpf_int; + +------------------------------------------------------------------------------- +-- Power On Reset Generation +------------------------------------------------------------------------------- +-- This generates a reset for the first 16 clocks after a power up +------------------------------------------------------------------------------- + POR_SRL_I: SRL16 +-- synthesis translate_off + generic map ( + INIT => X"FFFF") +-- synthesis translate_on + port map ( + D => '0', + CLK => Slowest_sync_clk, + A0 => '1', + A1 => '1', + A2 => '1', + A3 => '1', + Q => srl_time_out); + +------------------------------------------------------------------------------- +-- LPF_OUTPUT_PROCESS +------------------------------------------------------------------------------- +-- This generates the reset pulse and the count enable to core reset counter +-- +--ACTIVE_HIGH_LPF_EXT: if (C_EXT_RESET_HIGH = '1') generate +--begin +LPF_OUTPUT_PROCESS: process (Slowest_sync_clk) +begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + lpf_int <= lpf_exr or lpf_asr or srl_time_out or not Dcm_locked; + end if; +end process LPF_OUTPUT_PROCESS; +--end generate ACTIVE_HIGH_LPF_EXT; + +--ACTIVE_LOW_LPF_EXT: if (C_EXT_RESET_HIGH = '0') generate +--begin +--LPF_OUTPUT_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- lpf_int <= not (lpf_exr or +-- lpf_asr or +-- srl_time_out)or +-- not Dcm_locked; +-- end if; +-- end process; +--end generate ACTIVE_LOW_LPF_EXT; + +EXR_OUTPUT_PROCESS: process (Slowest_sync_clk) +begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + if exr_and = '1' then + lpf_exr <= '1'; + elsif (exr_and = '0' and exr_nand = '1') then + lpf_exr <= '0'; + end if; + end if; +end process EXR_OUTPUT_PROCESS; + +ASR_OUTPUT_PROCESS: process (Slowest_sync_clk) +begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + if asr_and = '1' then + lpf_asr <= '1'; + elsif (asr_and = '0' and asr_nand = '1') then + lpf_asr <= '0'; + end if; + end if; +end process ASR_OUTPUT_PROCESS; +------------------------------------------------------------------------------- +-- This If-generate selects an active high input for External System Reset +------------------------------------------------------------------------------- +ACTIVE_HIGH_EXT: if (C_EXT_RESET_HIGH /= '0') generate +begin + ----------------------------------- +exr_d1 <= External_System_Reset or MB_Debug_Sys_Rst; + +ACT_HI_EXT: entity lib_cdc_v1_0.cdc_sync + generic map ( + C_CDC_TYPE => 1, + C_RESET_STATE => 0, + C_SINGLE_BIT => 1, + C_FLOP_INPUT => 0, + C_VECTOR_WIDTH => 2, + C_MTBF_STAGES => 4 + ) + port map( + prmry_aclk => '1', + prmry_resetn => '1',--S_AXI_ARESETN, + prmry_in => exr_d1, + prmry_ack => open, + scndry_out => exr_lpf(0), + scndry_aclk => Slowest_Sync_Clk, + scndry_resetn => '1', --S_AXIS_ARESETN, + prmry_vect_in => "00", + scndry_vect_out => open + ); + +----------------------------------- +end generate ACTIVE_HIGH_EXT; +------------------------------------------------------------------------------- +-- This If-generate selects an active low input for External System Reset +------------------------------------------------------------------------------- +ACTIVE_LOW_EXT: if (C_EXT_RESET_HIGH = '0') generate +begin +exr_d1 <= not External_System_Reset or MB_Debug_Sys_Rst; + ------------------------------------- + +ACT_LO_EXT: entity lib_cdc_v1_0.cdc_sync + generic map ( + C_CDC_TYPE => 1, + C_RESET_STATE => 0, + C_SINGLE_BIT => 1, + C_FLOP_INPUT => 0, + C_VECTOR_WIDTH => 2, + C_MTBF_STAGES => 4 + ) + port map( + prmry_aclk => '1', + prmry_resetn => '1',--S_AXI_ARESETN, + prmry_in => exr_d1, + prmry_ack => open, + scndry_out => exr_lpf(0), + scndry_aclk => Slowest_Sync_Clk, + scndry_resetn => '1', --S_AXIS_ARESETN, + prmry_vect_in => "00", + scndry_vect_out => open + ); +------------------------------------- +end generate ACTIVE_LOW_EXT; + +------------------------------------------------------------------------------- +-- This If-generate selects an active high input for Auxiliary System Reset +------------------------------------------------------------------------------- +ACTIVE_HIGH_AUX: if (C_AUX_RESET_HIGH /= '0') generate +begin +asr_d1 <= Auxiliary_System_Reset; +------------------------------------- + +ACT_HI_AUX: entity lib_cdc_v1_0.cdc_sync + generic map ( + C_CDC_TYPE => 1, + C_RESET_STATE => 0, + C_SINGLE_BIT => 1, + C_FLOP_INPUT => 0, + C_VECTOR_WIDTH => 2, + C_MTBF_STAGES => 4 + ) + port map( + prmry_aclk => '1', + prmry_resetn => '1',--S_AXI_ARESETN, + prmry_in => asr_d1, + prmry_ack => open, + scndry_out => asr_lpf(0), + scndry_aclk => Slowest_Sync_Clk, + scndry_resetn => '1', --S_AXIS_ARESETN, + prmry_vect_in => "00", + scndry_vect_out => open + ); + ------------------------------------- +end generate ACTIVE_HIGH_AUX; +------------------------------------------------------------------------------- +-- This If-generate selects an active low input for Auxiliary System Reset +------------------------------------------------------------------------------- +ACTIVE_LOW_AUX: if (C_AUX_RESET_HIGH = '0') generate +begin + ------------------------------------- +asr_d1 <= not Auxiliary_System_Reset; + +ACT_LO_AUX: entity lib_cdc_v1_0.cdc_sync + generic map ( + C_CDC_TYPE => 1, + C_RESET_STATE => 0, + C_SINGLE_BIT => 1, + C_FLOP_INPUT => 0, + C_VECTOR_WIDTH => 2, + C_MTBF_STAGES => 4 + ) + port map( + prmry_aclk => '1', + prmry_resetn => '1',--S_AXI_ARESETN, + prmry_in => asr_d1, + prmry_ack => open, + scndry_out => asr_lpf(0), + scndry_aclk => Slowest_Sync_Clk, + scndry_resetn => '1', --S_AXIS_ARESETN, + prmry_vect_in => "00", + scndry_vect_out => open + ); + ------------------------------------- +end generate ACTIVE_LOW_AUX; + +------------------------------------------------------------------------------- +-- This For-generate creates the low pass filter D-Flip Flops +------------------------------------------------------------------------------- +EXT_LPF: for i in 1 to C_EXT_RST_WIDTH - 1 generate +begin + ---------------------------------------- + EXT_LPF_DFF : process (Slowest_Sync_Clk) + begin + if (Slowest_Sync_Clk'event) and Slowest_Sync_Clk = '1' then + exr_lpf(i) <= exr_lpf(i-1); + end if; + end process; + ---------------------------------------- +end generate EXT_LPF; +------------------------------------------------------------------------------------------ +-- Implement the 'AND' function on the for the LPF +------------------------------------------------------------------------------------------ +EXT_LPF_AND : process (exr_lpf) +Variable loop_and : std_logic; +Variable loop_nand : std_logic; +Begin + loop_and := '1'; + loop_nand := '1'; + for j in 0 to C_EXT_RST_WIDTH - 1 loop + loop_and := loop_and and exr_lpf(j); + loop_nand := loop_nand and not exr_lpf(j); + End loop; + + exr_and <= loop_and; + exr_nand <= loop_nand; + +end process; + +------------------------------------------------------------------------------- +-- This For-generate creates the low pass filter D-Flip Flops +------------------------------------------------------------------------------- +AUX_LPF: for k in 1 to C_AUX_RST_WIDTH - 1 generate +begin + ---------------------------------------- + AUX_LPF_DFF : process (Slowest_Sync_Clk) + begin + if (Slowest_Sync_Clk'event) and Slowest_Sync_Clk = '1' then + asr_lpf(k) <= asr_lpf(k-1); + end if; + end process; + ---------------------------------------- +end generate AUX_LPF; +------------------------------------------------------------------------------------------ +-- Implement the 'AND' function on the for the LPF +------------------------------------------------------------------------------------------ +AUX_LPF_AND : process (asr_lpf) +Variable aux_loop_and : std_logic; +Variable aux_loop_nand : std_logic; +Begin + aux_loop_and := '1'; + aux_loop_nand := '1'; + for m in 0 to C_AUX_RST_WIDTH - 1 loop + aux_loop_and := aux_loop_and and asr_lpf(m); + aux_loop_nand := aux_loop_nand and not asr_lpf(m); + End loop; + + asr_and <= aux_loop_and; + asr_nand <= aux_loop_nand; + +end process; + +end imp; + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/proc_sys_reset.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/proc_sys_reset.vhd new file mode 100644 index 0000000..f2aae81 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/proc_sys_reset.vhd @@ -0,0 +1,455 @@ +------------------------------------------------------------------------------- +-- proc_sys_reset - entity/architecture pair +------------------------------------------------------------------------------- +-- +-- ************************************************************************ +-- ** DISCLAIMER OF LIABILITY ** +-- ** ** +-- ** This file contains proprietary and confidential information of ** +-- ** Xilinx, Inc. ("Xilinx"), that is distributed under a license ** +-- ** from Xilinx, and may be used, copied and/or disclosed only ** +-- ** pursuant to the terms of a valid license agreement with Xilinx. ** +-- ** ** +-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION ** +-- ** ("MATERIALS") "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER ** +-- ** EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING WITHOUT ** +-- ** LIMITATION, ANY WARRANTY WITH RESPECT TO NONINFRINGEMENT, ** +-- ** MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Xilinx ** +-- ** does not warrant that functions included in the Materials will ** +-- ** meet the requirements of Licensee, or that the operation of the ** +-- ** Materials will be uninterrupted or error-free, or that defects ** +-- ** in the Materials will be corrected. Furthermore, Xilinx does ** +-- ** not warrant or make any representations regarding use, or the ** +-- ** results of the use, of the Materials in terms of correctness, ** +-- ** accuracy, reliability or otherwise. ** +-- ** ** +-- ** Xilinx products are not designed or intended to be fail-safe, ** +-- ** or for use in any application requiring fail-safe performance, ** +-- ** such as life-support or safety devices or systems, Class III ** +-- ** medical devices, nuclear facilities, applications related to ** +-- ** the deployment of airbags, or any other applications that could ** +-- ** lead to death, personal injury or severe property or ** +-- ** environmental damage (individually and collectively, "critical ** +-- ** applications"). Customer assumes the sole risk and liability ** +-- ** of any use of Xilinx products in critical applications, ** +-- ** subject only to applicable laws and regulations governing ** +-- ** limitations on product liability. ** +-- ** ** +-- ** Copyright 2012 Xilinx, Inc. ** +-- ** All rights reserved. ** +-- ** ** +-- ** This disclaimer and copyright notice must be retained as part ** +-- ** of this file at all times. ** +-- ************************************************************************ +-- +------------------------------------------------------------------------------- +-- Filename: proc_sys_reset.vhd +-- Version: v4.00a +-- Description: Parameterizeable top level processor reset module. +-- VHDL-Standard: VHDL'93 +------------------------------------------------------------------------------- +-- Structure: This section should show the hierarchical structure of the +-- designs.Separate lines with blank lines if necessary to improve +-- readability. +-- +-- proc_sys_reset.vhd +-- upcnt_n.vhd +-- lpf.vhd +-- sequence.vhd +------------------------------------------------------------------------------- +-- Author: rolandp +-- History: +-- kc 11/07/01 -- First version +-- +-- kc 02/25/2002 -- Changed generic names C_EXT_RST_ACTIVE to +-- C_EXT_RESET_HIGH and C_AUX_RST_ACTIVE to +-- C_AUX_RESET_HIGH to match generics used in +-- MicroBlaze. Added the DCM Lock as an input +-- to keep reset active until after the Lock +-- is valid. +-- lcw 10/11/2004 -- Updated for NCSim +-- Ravi 09/14/2006 -- Added Attributes for synthesis +-- rolandp 04/16/2007 -- version 2.00a +-- ~~~~~~~ +-- SK 03/11/10 +-- ^^^^^^^ +-- 1. Updated the core so support the active low "Interconnect_aresetn" and +-- "Peripheral_aresetn" signals. +-- ^^^^^^^ +-- ~~~~~~~ +-- SK 05/12/11 +-- ^^^^^^^ +-- 1. Updated the core so remove the support for PPC related functionality. +-- ^^^^^^^ +------------------------------------------------------------------------------- +-- Naming Conventions: +-- active low signals: "*_n" +-- clock signals: "clk", "clk_div#", "clk_#x" +-- reset signals: "rst", "rst_n" +-- generics: "C_*" +-- user defined types: "*_TYPE" +-- state machine next state: "*_ns" +-- state machine current state: "*_cs" +-- combinatorial signals: "*_cmb" +-- pipelined or register delay signals: "*_d#" +-- counter signals: "*cnt*" +-- clock enable signals: "*_ce" +-- internal version of output port "*_i" +-- device pins: "*_pin" +-- ports: - Names begin with Uppercase +-- processes: "*_PROCESS" +-- component instantiations: "I_<#|FUNC> +------------------------------------------------------------------------------- +library ieee; + use ieee.std_logic_1164.all; +library unisim; + use unisim.vcomponents.all; +library proc_sys_reset_v5_0; + use proc_sys_reset_v5_0.all; + +------------------------------------------------------------------------------- +-- Port Declaration +------------------------------------------------------------------------------- +-- Definition of Generics: +-- C_EXT_RST_WIDTH -- External Reset Low Pass Filter setting +-- C_AUX_RST_WIDTH -- Auxiliary Reset Low Pass Filter setting + +-- C_EXT_RESET_HIGH -- External Reset Active High or Active Low +-- C_AUX_RESET_HIGH -= Auxiliary Reset Active High or Active Low + +-- C_NUM_BUS_RST -- Number of Bus Structures reset to generate +-- C_NUM_PERP_RST -- Number of Peripheral resets to generate +-- +-- C_NUM_INTERCONNECT_ARESETN -- No. of Active low reset to interconnect +-- C_NUM_PERP_ARESETN -- No. of Active low reset to peripheral + +-- Definition of Ports: +-- slowest_sync_clk -- Clock +-- ext_reset_in -- External Reset Input +-- aux_reset_in -- Auxiliary Reset Input +-- mb_debug_sys_rst -- MDM Reset Input +-- dcm_locked -- DCM Locked, hold system in reset until 1 +-- mb_reset -- MB core reset out +-- bus_struct_reset -- Bus structure reset out +-- peripheral_reset -- Peripheral reset out + +-- interconnect_aresetn -- Interconnect Bus structure registered rst out +-- peripheral_aresetn -- Active Low Peripheral registered reset out +------------------------------------------------------------------------------- + +entity proc_sys_reset is + generic ( + C_FAMILY : string := "virtex7"; + C_EXT_RST_WIDTH : integer := 4; + C_AUX_RST_WIDTH : integer := 4; + C_EXT_RESET_HIGH : std_logic := '0'; -- High active input + C_AUX_RESET_HIGH : std_logic := '1'; -- High active input + C_NUM_BUS_RST : integer := 1; + C_NUM_PERP_RST : integer := 1; + + C_NUM_INTERCONNECT_ARESETN : integer := 1; -- 3/15/2010 + C_NUM_PERP_ARESETN : integer := 1 -- 3/15/2010 + ); + port ( + slowest_sync_clk : in std_logic; + + ext_reset_in : in std_logic; + aux_reset_in : in std_logic; + + -- from MDM + mb_debug_sys_rst : in std_logic; + -- DCM locked information + dcm_locked : in std_logic := '1'; + + -- -- from PPC + -- Core_Reset_Req_0 : in std_logic; + -- Chip_Reset_Req_0 : in std_logic; + -- System_Reset_Req_0 : in std_logic; + -- Core_Reset_Req_1 : in std_logic; + -- Chip_Reset_Req_1 : in std_logic; + -- System_Reset_Req_1 : in std_logic; + + -- RstcPPCresetcore_0 : out std_logic := '0'; + -- RstcPPCresetchip_0 : out std_logic := '0'; + -- RstcPPCresetsys_0 : out std_logic := '0'; + -- RstcPPCresetcore_1 : out std_logic := '0'; + -- RstcPPCresetchip_1 : out std_logic := '0'; + -- RstcPPCresetsys_1 : out std_logic := '0'; + + -- to Microblaze active high reset + mb_reset : out std_logic := '0'; + -- active high resets + bus_struct_reset : out std_logic_vector(0 to C_NUM_BUS_RST - 1) + := (others => '0'); + peripheral_reset : out std_logic_vector(0 to C_NUM_PERP_RST - 1) + := (others => '0'); + -- active low resets + interconnect_aresetn : out + std_logic_vector(0 to (C_NUM_INTERCONNECT_ARESETN-1)) + := (others => '1'); + peripheral_aresetn : out std_logic_vector(0 to (C_NUM_PERP_ARESETN-1)) + := (others => '1') + ); + +end entity proc_sys_reset; + +------------------------------------------------------------------------------- +-- Architecture +------------------------------------------------------------------------------- +architecture imp of proc_sys_reset is + +------------------------------------------------------------------------------- +-- Constant Declarations +------------------------------------------------------------------------------- + +------------------------------------------------------------------------------- +-- Signal and Type Declarations +-- signal Core_Reset_Req_0_d1 : std_logic := '0'; -- delayed Core_Reset_Req +-- signal Core_Reset_Req_0_d2 : std_logic := '0'; -- delayed Core_Reset_Req +-- signal Core_Reset_Req_0_d3 : std_logic := '0'; -- delayed Core_Reset_Req +-- signal Core_Reset_Req_1_d1 : std_logic := '0'; -- delayed Core_Reset_Req +-- signal Core_Reset_Req_1_d2 : std_logic := '0'; -- delayed Core_Reset_Req +-- signal Core_Reset_Req_1_d3 : std_logic := '0'; -- delayed Core_Reset_Req + +signal core_cnt_en_0 : std_logic := '0'; -- Core_Reset_Req_0 counter enable +signal core_cnt_en_1 : std_logic := '0'; -- Core_Reset_Req_1 counter enable + +signal core_req_edge_0 : std_logic := '1'; -- Rising edge of Core_Reset_Req_0 +signal core_req_edge_1 : std_logic := '1'; -- Rising edge of Core_Reset_Req_1 + +signal core_cnt_0 : std_logic_vector(3 downto 0); -- core counter output +signal core_cnt_1 : std_logic_vector(3 downto 0); -- core counter output + +signal lpf_reset : std_logic; -- Low pass filtered ext or aux + +--signal Chip_Reset_Req : std_logic := '0'; +--signal System_Reset_Req : std_logic := '0'; + +signal Bsr_out : std_logic; +signal Pr_out : std_logic; + +-- signal Core_out : std_logic; +-- signal Chip_out : std_logic; +-- signal Sys_out : std_logic; +signal MB_out : std_logic; + +------------------------------------------------------------------------------- +-- Attributes to synthesis +------------------------------------------------------------------------------- + +attribute equivalent_register_removal: string; +attribute equivalent_register_removal of bus_struct_reset : signal is "no"; +attribute equivalent_register_removal of peripheral_reset : signal is "no"; + +attribute equivalent_register_removal of interconnect_aresetn : signal is "no"; +attribute equivalent_register_removal of peripheral_aresetn : signal is "no"; + +begin +------------------------------------------------------------------------------- + +-- --------------------- +-- -- MB_RESET_HIGH_GEN: Generate active high reset for Micro-Blaze +-- --------------------- +-- MB_RESET_HIGH_GEN: if C_INT_RESET_HIGH = 1 generate +-- begin + MB_Reset_PROCESS: process (slowest_sync_clk) + begin + if (slowest_sync_clk'event and slowest_sync_clk = '1') then + mb_reset <= MB_out; + end if; + end process; +-- ---------------------------------------------------------------------------- +-- -- This For-generate creates D-Flip Flops for the Bus_Struct_Reset output(s) +-- ---------------------------------------------------------------------------- + BSR_OUT_DFF: for i in 0 to (C_NUM_BUS_RST-1) generate + BSR_DFF : process (slowest_sync_clk) + begin + if (slowest_sync_clk'event and slowest_sync_clk = '1') then + bus_struct_reset(i) <= Bsr_out; + end if; + end process; + end generate BSR_OUT_DFF; + +-- --------------------------------------------------------------------------- +-- This For-generate creates D-Flip Flops for the Interconnect_aresetn op(s) +-- --------------------------------------------------------------------------- + ACTIVE_LOW_BSR_OUT_DFF: for i in 0 to (C_NUM_INTERCONNECT_ARESETN-1) generate + BSR_DFF : process (slowest_sync_clk) + begin + if (slowest_sync_clk'event and slowest_sync_clk = '1') then + interconnect_aresetn(i) <= not (Bsr_out); + end if; + end process; + end generate ACTIVE_LOW_BSR_OUT_DFF; +------------------------------------------------------------------------------- + +-- ---------------------------------------------------------------------------- +-- -- This For-generate creates D-Flip Flops for the Peripheral_Reset output(s) +-- ---------------------------------------------------------------------------- + PR_OUT_DFF: for i in 0 to (C_NUM_PERP_RST-1) generate + PR_DFF : process (slowest_sync_clk) + begin + if (slowest_sync_clk'event and slowest_sync_clk = '1') then + peripheral_reset(i) <= Pr_out; + end if; + end process; + end generate PR_OUT_DFF; + +-- ---------------------------------------------------------------------------- +-- This For-generate creates D-Flip Flops for the Peripheral_aresetn op(s) +-- ---------------------------------------------------------------------------- + ACTIVE_LOW_PR_OUT_DFF: for i in 0 to (C_NUM_PERP_ARESETN-1) generate + ACTIVE_LOW_PR_DFF : process (slowest_sync_clk) + begin + if (slowest_sync_clk'event and slowest_sync_clk = '1') then + peripheral_aresetn(i) <= not(Pr_out); + end if; + end process; + end generate ACTIVE_LOW_PR_OUT_DFF; +------------------------------------------------------------------------------- +-- This process defines the RstcPPCreset and MB_Reset outputs +------------------------------------------------------------------------------- + -- Rstc_output_PROCESS_0: process (Slowest_sync_clk) + -- begin + -- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + -- RstcPPCresetcore_0 <= not (core_cnt_0(3) and core_cnt_0(2) and + -- core_cnt_0(1) and core_cnt_0(0)) + -- or Core_out; + -- RstcPPCresetchip_0 <= Chip_out; + -- RstcPPCresetsys_0 <= Sys_out; + -- end if; + -- end process; + + -- Rstc_output_PROCESS_1: process (Slowest_sync_clk) + -- begin + -- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + -- RstcPPCresetcore_1 <= not (core_cnt_1(3) and core_cnt_1(2) and + -- core_cnt_1(1) and core_cnt_1(0)) + -- or Core_out; + -- RstcPPCresetchip_1 <= Chip_out; + -- RstcPPCresetsys_1 <= Sys_out; + -- end if; + -- end process; + +------------------------------------------------------------------------------- + +--------------------------------------------------------------------------------- +---- This process delays signals so the the edge can be detected and used +---- Double register to sync up with slowest_sync_clk +--------------------------------------------------------------------------------- +-- DELAY_PROCESS_0: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- core_reset_req_0_d1 <= Core_Reset_Req_0; +-- core_reset_req_0_d2 <= core_reset_req_0_d1; +-- core_reset_req_0_d3 <= core_reset_req_0_d2; +-- end if; +-- end process; +-- +-- DELAY_PROCESS_1: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- core_reset_req_1_d1 <= Core_Reset_Req_1; +-- core_reset_req_1_d2 <= core_reset_req_1_d1; +-- core_reset_req_1_d3 <= core_reset_req_1_d2; +-- end if; +-- end process; + + +-- ** -- ------------------------------------------------------------------------------- +-- ** -- -- This instantiates a counter to ensure the Core_Reset_Req_* will genereate a +-- ** -- -- RstcPPCresetcore_* that is a mimimum of 15 clocks +-- ** -- ------------------------------------------------------------------------------- +-- ** -- CORE_RESET_0 : entity proc_sys_reset_v5_0.UPCNT_N +-- ** -- generic map (C_SIZE => 4) +-- ** -- port map( +-- ** -- Data => "0000", -- in STD_LOGIC_VECTOR (C_SIZE-1 downto 0); +-- ** -- Cnt_en => core_cnt_en_0, -- in STD_LOGIC; +-- ** -- Load => '0', -- in STD_LOGIC; +-- ** -- Clr => core_req_edge_0, -- in STD_LOGIC; +-- ** -- Clk => Slowest_sync_clk, -- in STD_LOGIC; +-- ** -- Qout => core_cnt_0 -- out STD_LOGIC_VECTOR (C_SIZE-1 downto 0) +-- ** -- ); +-- ** -- +-- ** -- CORE_RESET_1 : entity proc_sys_reset_v5_0.UPCNT_N +-- ** -- generic map (C_SIZE => 4) +-- ** -- port map( +-- ** -- Data => "0000", -- in STD_LOGIC_VECTOR (C_SIZE-1 downto 0); +-- ** -- Cnt_en => core_cnt_en_1, -- in STD_LOGIC; +-- ** -- Load => '0', -- in STD_LOGIC; +-- ** -- Clr => core_req_edge_1, -- in STD_LOGIC; +-- ** -- Clk => Slowest_sync_clk, -- in STD_LOGIC; +-- ** -- Qout => core_cnt_1 -- out STD_LOGIC_VECTOR (C_SIZE-1 downto 0) +-- ** -- ); +-- ** -- +-- ** -- ------------------------------------------------------------------------------- +-- ** -- -- CORE_RESET_PROCESS +-- ** -- ------------------------------------------------------------------------------- +-- ** -- -- This generates the reset pulse and the count enable to core reset counter +-- ** -- -- +-- ** -- CORE_RESET_PROCESS_0: process (Slowest_sync_clk) +-- ** -- begin +-- ** -- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- ** -- core_cnt_en_0 <= not (core_cnt_0(3) and core_cnt_0(2) and core_cnt_0(1)); +-- ** -- --or not core_req_edge_0; +-- ** -- --core_req_edge_0 <= not(Core_Reset_Req_0_d2 and not Core_Reset_Req_0_d3); +-- ** -- end if; +-- ** -- end process; +-- ** -- +-- ** -- CORE_RESET_PROCESS_1: process (Slowest_sync_clk) +-- ** -- begin +-- ** -- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- ** -- core_cnt_en_1 <= not (core_cnt_1(3) and core_cnt_1(2) and core_cnt_1(1)); +-- ** -- --or not core_req_edge_1; +-- ** -- --core_req_edge_1 <= not(Core_Reset_Req_1_d2 and not Core_Reset_Req_1_d3); +-- ** -- end if; +-- ** -- end process; + +------------------------------------------------------------------------------- +-- This instantiates a low pass filter to filter both External and Auxiliary +-- Reset Inputs. +------------------------------------------------------------------------------- + EXT_LPF : entity proc_sys_reset_v5_0.LPF + generic map ( + C_EXT_RST_WIDTH => C_EXT_RST_WIDTH, + C_AUX_RST_WIDTH => C_AUX_RST_WIDTH, + C_EXT_RESET_HIGH => C_EXT_RESET_HIGH, + C_AUX_RESET_HIGH => C_AUX_RESET_HIGH + ) + port map( + MB_Debug_Sys_Rst => mb_debug_sys_rst, -- in std_logic + Dcm_locked => dcm_locked, -- in std_logic + External_System_Reset => ext_reset_in, -- in std_logic + Auxiliary_System_Reset => aux_reset_in, -- in std_logic + Slowest_Sync_Clk => slowest_sync_clk, -- in std_logic + Lpf_reset => lpf_reset -- out std_logic + ); + +------------------------------------------------------------------------------- +-- This instantiates the sequencer +-- This controls the time between resets becoming inactive +------------------------------------------------------------------------------- + + -- System_Reset_Req <= System_Reset_Req_0 or System_Reset_Req_1; + + -- Chip_Reset_Req <= Chip_Reset_Req_0 or Chip_Reset_Req_1; + + SEQ : entity proc_sys_reset_v5_0.SEQUENCE + --generic map ( + -- C_EXT_RESET_HIGH_1 => C_EXT_RESET_HIGH + --) + port map( + Lpf_reset => lpf_reset, -- in std_logic + --System_Reset_Req => '0', -- System_Reset_Req, -- in std_logic + --Chip_Reset_Req => '0', -- Chip_Reset_Req, -- in std_logic + Slowest_Sync_Clk => slowest_sync_clk, -- in std_logic + Bsr_out => Bsr_out, -- out std_logic + Pr_out => Pr_out, -- out std_logic + --Core_out => open, -- Core_out, -- out std_logic + --Chip_out => open, -- Chip_out, -- out std_logic + --Sys_out => open, -- Sys_out, -- out std_logic + MB_out => MB_out); -- out std_logic + +end imp; + +--END_SINGLE_FILE_TAG diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/sequence.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/sequence.vhd new file mode 100644 index 0000000..61b0461 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/sequence.vhd @@ -0,0 +1,521 @@ +------------------------------------------------------------------------------- +-- sequence - entity/architecture pair +------------------------------------------------------------------------------- +-- +-- ************************************************************************ +-- ** DISCLAIMER OF LIABILITY ** +-- ** ** +-- ** This file contains proprietary and confidential information of ** +-- ** Xilinx, Inc. ("Xilinx"), that is distributed under a license ** +-- ** from Xilinx, and may be used, copied and/or disclosed only ** +-- ** pursuant to the terms of a valid license agreement with Xilinx. ** +-- ** ** +-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION ** +-- ** ("MATERIALS") "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER ** +-- ** EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING WITHOUT ** +-- ** LIMITATION, ANY WARRANTY WITH RESPECT TO NONINFRINGEMENT, ** +-- ** MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Xilinx ** +-- ** does not warrant that functions included in the Materials will ** +-- ** meet the requirements of Licensee, or that the operation of the ** +-- ** Materials will be uninterrupted or error-free, or that defects ** +-- ** in the Materials will be corrected. Furthermore, Xilinx does ** +-- ** not warrant or make any representations regarding use, or the ** +-- ** results of the use, of the Materials in terms of correctness, ** +-- ** accuracy, reliability or otherwise. ** +-- ** ** +-- ** Xilinx products are not designed or intended to be fail-safe, ** +-- ** or for use in any application requiring fail-safe performance, ** +-- ** such as life-support or safety devices or systems, Class III ** +-- ** medical devices, nuclear facilities, applications related to ** +-- ** the deployment of airbags, or any other applications that could ** +-- ** lead to death, personal injury or severe property or ** +-- ** environmental damage (individually and collectively, "critical ** +-- ** applications"). Customer assumes the sole risk and liability ** +-- ** of any use of Xilinx products in critical applications, ** +-- ** subject only to applicable laws and regulations governing ** +-- ** limitations on product liability. ** +-- ** ** +-- ** Copyright 2012 Xilinx, Inc. ** +-- ** All rights reserved. ** +-- ** ** +-- ** This disclaimer and copyright notice must be retained as part ** +-- ** of this file at all times. ** +-- ************************************************************************ +-- +------------------------------------------------------------------------------- +-- Filename: proc_sys_reset.vhd +-- Version: v4.00a +-- Description: Parameterizeable top level processor reset module. +-- VHDL-Standard: VHDL'93 +------------------------------------------------------------------------------- +-- Structure: This section should show the hierarchical structure of the +-- designs.Separate lines with blank lines if necessary to improve +-- readability. +-- -- proc_sys_reset.vhd +-- -- upcnt_n.vhd +-- -- lpf.vhd +-- -- sequence.vhd +------------------------------------------------------------------------------- +-- Filename: sequence.vhd +-- +-- Description: +-- This file control the sequencing coming out of a reset. +-- The sequencing is as follows: +-- Bus_Struct_Reset comes out of reset first. Either when the +-- external or auxiliary reset goes inactive or 16 clocks +-- after a PPC Chip_Reset_Request, or 30 clocks after a PPC +-- System_Reset_Request. +-- Peripheral_Reset comes out of reset 16 clocks after +-- Bus_Struct_Reset. +-- The PPC resetcore, comes out of reset +-- 16 clocks after Peripheral_Reset. +-- The PPC resetchip and resetsystem come out of reset +-- at the same time as Bus_Struct_Reset. +------------------------------------------------------------------------------- +-- Author: Kurt Conover +-- History: +-- Kurt Conover 11/12/01 -- First Release +-- LC Whittle 10/11/2004 -- Update for NCSim +-- rolandp 04/16/2007 -- v2.00a +-- +-- ~~~~~~~ +-- SK 03/11/10 +-- ^^^^^^^ +-- 1. Updated the core so support the active low "Interconnect_aresetn" and +-- "Peripheral_aresetn" signals. +-- ^^^^^^^ +------------------------------------------------------------------------------- +-- Naming Conventions: +-- active low signals: "*_n" +-- clock signals: "clk", "clk_div#", "clk_#x" +-- reset signals: "rst", "rst_n" +-- generics: "C_*" +-- user defined types: "*_TYPE" +-- state machine next state: "*_ns" +-- state machine current state: "*_cs" +-- combinatorial signals: "*_com" +-- pipelined or register delay signals: "*_d#" +-- counter signals: "*cnt*" +-- clock enable signals: "*_ce" +-- internal version of output port "*_i" +-- device pins: "*_pin" +-- ports: - Names begin with Uppercase +-- processes: "*_PROCESS" +-- component instantiations: "I_<#|FUNC> +------------------------------------------------------------------------------- +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_arith.all; +library unisim; +use unisim.vcomponents.all; +library proc_sys_reset_v5_0; + +------------------------------------------------------------------------------- +-- Port Declaration +------------------------------------------------------------------------------- +-- Definition of Generics: +-- +-- Definition of Ports: +-- Lpf_reset -- Low Pass Filtered in +-- System_Reset_Req -- System Reset Request +-- Chip_Reset_Req -- Chip Reset Request +-- Slowest_Sync_Clk -- Clock +-- Bsr_out -- Bus Structure Reset out +-- Pr_out -- Peripheral Reset out +-- Core_out -- Core reset out +-- Chip_out -- Chip reset out +-- Sys_out -- System reset out +-- MB_out -- MB reset out +-- +------------------------------------------------------------------------------- +entity sequence is + port( + Lpf_reset : in std_logic; + -- System_Reset_Req : in std_logic; + -- Chip_Reset_Req : in std_logic; + Slowest_Sync_Clk : in std_logic; + Bsr_out : out std_logic; + Pr_out : out std_logic; + -- Core_out : out std_logic; + -- Chip_out : out std_logic; + -- Sys_out : out std_logic; + MB_out : out std_logic + ); +end sequence; + +architecture imp of sequence is + +constant CLEAR : std_logic := '0'; +constant BSR_END_LPF_CHIP : std_logic_vector(5 downto 0) := "001100"; -- 12 +constant BSR_END_SYS : std_logic_vector(5 downto 0) := "011001"; -- 25 +constant PR_END_LPF_CHIP : std_logic_vector(5 downto 0) := "011100"; -- 28 +constant PR_END_SYS : std_logic_vector(5 downto 0) := "101001"; -- 41 +constant CORE_END_LPF_CHIP : std_logic_vector(5 downto 0) := "101100"; -- 44 +constant CORE_END_SYS : std_logic_vector(5 downto 0) := "111001"; -- 57 +constant CHIP_END_LPF_CHIP : std_logic_vector(5 downto 0) := BSR_END_LPF_CHIP; +constant CHIP_END_SYS : std_logic_vector(5 downto 0) := BSR_END_SYS; +constant SYS_END_LPF : std_logic_vector(5 downto 0) := BSR_END_LPF_CHIP; +constant SYS_END_SYS : std_logic_vector(5 downto 0) := BSR_END_SYS; + +signal bsr : std_logic := '0'; +signal bsr_dec : std_logic_vector(2 downto 0) := (others => '0'); +signal pr : std_logic := '0'; +signal pr_dec : std_logic_vector(2 downto 0) := (others => '0'); +signal Core : std_logic := '0'; +signal core_dec : std_logic_vector(2 downto 0) := (others => '0'); +signal Chip : std_logic := '0'; +signal chip_dec : std_logic_vector(2 downto 0) := (others => '0'); +signal Sys : std_logic := '0'; +signal sys_dec : std_logic_vector(2 downto 0) := (others => '0'); +signal chip_Reset_Req_d1 : std_logic := '0'; -- delayed Chip_Reset_Req +signal chip_Reset_Req_d2 : std_logic := '0'; -- delayed Chip_Reset_Req +signal chip_Reset_Req_d3 : std_logic := '0'; -- delayed Chip_Reset_Req +signal system_Reset_Req_d1 : std_logic := '0'; -- delayed System_Reset_Req +signal system_Reset_Req_d2 : std_logic := '0'; -- delayed System_Reset_Req +signal system_Reset_Req_d3 : std_logic := '0'; -- delayed System_Reset_Req +signal seq_cnt : std_logic_vector(5 downto 0); +signal seq_cnt_en : std_logic := '0'; +signal seq_clr : std_logic := '0'; + +signal ris_edge : std_logic := '0'; +signal sys_edge : std_logic := '0'; +signal from_sys : std_logic; + +------------------------------------------------------------------------------- +-- Component Declarations +------------------------------------------------------------------------------- + +begin + + Pr_out <= pr; + Bsr_out <= bsr; + MB_out <= core; + -- Core_out <= core; + -- Chip_out <= chip or sys; + -- Sys_out <= sys; + +------------------------------------------------------------------------------- +-- This process remembers that the reset was caused be +-- System_Reset_Req +------------------------------------------------------------------------------- + SYS_FROM_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + --if Lpf_reset='1' or system_reset_req_d3='1' then + if (Lpf_reset = '1') then + from_sys <= '1'; + --elsif Chip_Reset_Req_d3='1' then + -- from_sys <= '0'; + elsif (Core = '0') then + from_sys <='0'; + end if; + end if; + end process; + +------------------------------------------------------------------------------- +-- This instantiates a counter to control the sequencing +------------------------------------------------------------------------------- + SEQ_COUNTER : entity proc_sys_reset_v5_0.UPCNT_N + generic map (C_SIZE => 6) + port map( + Data => "000000", + Cnt_en => seq_cnt_en, + Load => '0', + Clr => seq_clr, + Clk => Slowest_sync_clk, + Qout => seq_cnt + ); + +------------------------------------------------------------------------------- +-- SEQ_CNT_EN_PROCESS +------------------------------------------------------------------------------- +-- This generates the reset pulse and the count enable to core reset counter +-- count until all outputs are inactive +------------------------------------------------------------------------------- + SEQ_CNT_EN_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + if (Lpf_reset='1' --or + --System_Reset_Req_d3='1' or + --Chip_Reset_Req_d3='1' or + --ris_edge = '1' + ) then + seq_cnt_en <= '1'; + elsif (Core='0') then -- Core always present and always last + seq_cnt_en <= '0'; + end if; + end if; + end process; + +------------------------------------------------------------------------------- +-- SEQ_CLR_PROCESS +------------------------------------------------------------------------------- +-- This generates the reset to the sequence counter +-- Clear the counter on a rising edge of chip or system request or low pass +-- filter output +------------------------------------------------------------------------------- + SEQ_CLR_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + -- if ris_edge = '1' or Lpf_reset = '1' then + if (Lpf_reset = '1') then + seq_clr <= '0'; + else + seq_clr <= '1'; + end if; + end if; + end process; + +------------------------------------------------------------------------------- +-- This process defines the Peripheral_Reset output signal +------------------------------------------------------------------------------- + PR_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + --if ris_edge = '1' or Lpf_reset = '1' then + if (Lpf_reset = '1') then + pr <= '1'; + elsif (pr_dec(2) = '1') then + pr <= '0'; + end if; + end if; + end process; + +------------------------------------------------------------------------------- +-- This process decodes the sequence counter for PR to use +------------------------------------------------------------------------------- + PR_DECODE_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + if ( + (seq_cnt(5 downto 3) = PR_END_LPF_CHIP(5 downto 3) and from_sys = '0') + or + (seq_cnt(5 downto 3) = PR_END_SYS(5 downto 3) and from_sys = '1') + ) then + pr_dec(0) <= '1'; + else + pr_dec(0) <= '0'; + end if; + if ( + (seq_cnt(2 downto 0) = PR_END_LPF_CHIP(2 downto 0) and from_sys = '0') + or + (seq_cnt(2 downto 0) = PR_END_SYS(2 downto 0) and from_sys = '1') + )then + pr_dec(1) <= '1'; + else + pr_dec(1) <= '0'; + end if; + pr_dec(2) <= pr_dec(1) and pr_dec(0); + end if; + end process; + +------------------------------------------------------------------------------- +-- This process defines the Bus_Struct_Reset output signal +------------------------------------------------------------------------------- + BSR_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + --if ris_edge = '1' or Lpf_reset = '1' then + if (Lpf_reset = '1') then + bsr <= '1'; + elsif (bsr_dec(2) = '1') then + bsr <= '0'; + end if; + end if; + end process; + +------------------------------------------------------------------------------- +-- This process decodes the sequence counter for BSR to use +------------------------------------------------------------------------------- + BSR_DECODE_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + if ( + (seq_cnt(5 downto 3) = BSR_END_LPF_CHIP(5 downto 3) and from_sys = '0') + or + (seq_cnt(5 downto 3) = BSR_END_SYS(5 downto 3) and from_sys = '1') + )then + bsr_dec(0) <= '1'; + else + bsr_dec(0) <= '0'; + end if; + if ( + (seq_cnt(2 downto 0) = BSR_END_LPF_CHIP(2 downto 0) and from_sys = '0') + or + (seq_cnt(2 downto 0) = BSR_END_SYS(2 downto 0) and from_sys = '1') + )then + bsr_dec(1) <= '1'; + else + bsr_dec(1) <= '0'; + end if; + bsr_dec(2) <= bsr_dec(1) and bsr_dec(0); + end if; + end process; + + +------------------------------------------------------------------------------- +-- This process defines the Peripheral_Reset output signal +------------------------------------------------------------------------------- + CORE_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + -- if ris_edge = '1' or Lpf_reset = '1' then + if (Lpf_reset = '1') then + core <= '1'; + elsif (core_dec(2) = '1') then + core <= '0'; + end if; + end if; + end process; + +------------------------------------------------------------------------------- +-- This process decodes the sequence counter for PR to use +------------------------------------------------------------------------------- + CORE_DECODE_PROCESS: process (Slowest_sync_clk) + begin + if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then + if ( + (seq_cnt(5 downto 3) = CORE_END_LPF_CHIP(5 downto 3) and from_sys = '0') + or + (seq_cnt(5 downto 3) = CORE_END_SYS(5 downto 3) and from_sys = '1') + )then + core_dec(0) <= '1'; + else + core_dec(0) <= '0'; + end if; + if ( + (seq_cnt(2 downto 0) = CORE_END_LPF_CHIP(2 downto 0) and from_sys = '0') + or + (seq_cnt(2 downto 0) = CORE_END_SYS(2 downto 0) and from_sys = '1') + )then + core_dec(1) <= '1'; + else + core_dec(1) <= '0'; + end if; + core_dec(2) <= core_dec(1) and core_dec(0); + end if; + end process; + +--------------------------------------------------------------------------------- +---- This process defines the Chip output signal +--------------------------------------------------------------------------------- +-- CHIP_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- -- if ris_edge = '1' or Lpf_reset = '1' then +-- if Lpf_reset = '1' then +-- chip <= '1'; +-- elsif chip_dec(2) = '1' then +-- chip <= '0'; +-- end if; +-- end if; +-- end process; +-- +--------------------------------------------------------------------------------- +---- This process decodes the sequence counter for Chip to use +---- sys is overlapping the chip reset and thus no need to decode this here +--------------------------------------------------------------------------------- +-- CHIP_DECODE_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- if (seq_cnt(5 downto 2) = CHIP_END_LPF_CHIP(5 downto 2)) then +-- chip_dec(0) <= '1'; +-- else +-- chip_dec(0) <= '0'; +-- end if; +-- if (seq_cnt(1 downto 0) = CHIP_END_LPF_CHIP(1 downto 0)) then +-- chip_dec(1) <= '1'; +-- else +-- chip_dec(1) <= '0'; +-- end if; +-- chip_dec(2) <= chip_dec(1) and chip_dec(0); +-- end if; +-- end process; + +--------------------------------------------------------------------------------- +---- This process defines the Sys output signal +--------------------------------------------------------------------------------- +-- SYS_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- if sys_edge = '1' or Lpf_reset = '1' then +-- sys <= '1'; +-- elsif sys_dec(2) = '1' then +-- sys <= '0'; +-- end if; +-- end if; +-- end process; +-- +--------------------------------------------------------------------------------- +---- This process decodes the sequence counter for Sys to use +--------------------------------------------------------------------------------- +-- SYS_DECODE_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- if (seq_cnt(5 downto 3) = SYS_END_LPF(5 downto 3) and from_sys = '0') or +-- (seq_cnt(5 downto 3) = SYS_END_SYS(5 downto 3) and from_sys = '1') then +-- sys_dec(0) <= '1'; +-- else +-- sys_dec(0) <= '0'; +-- end if; +-- if (seq_cnt(2 downto 0) = SYS_END_LPF(2 downto 0) and from_sys = '0') or +-- (seq_cnt(2 downto 0) = SYS_END_SYS(2 downto 0) and from_sys = '1') then +-- sys_dec(1) <= '1'; +-- else +-- sys_dec(1) <= '0'; +-- end if; +-- sys_dec(2) <= sys_dec(1) and sys_dec(0); +-- end if; +-- end process; +-- +--------------------------------------------------------------------------------- +---- This process delays signals so the the edge can be detected and used +--------------------------------------------------------------------------------- +-- DELAY_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- chip_reset_req_d1 <= Chip_Reset_Req ; +-- chip_reset_req_d2 <= chip_Reset_Req_d1 ; +-- chip_reset_req_d3 <= chip_Reset_Req_d2 ; +-- system_reset_req_d1 <= System_Reset_Req; +-- system_reset_req_d2 <= system_Reset_Req_d1; +-- system_reset_req_d3 <= system_Reset_Req_d2; +-- end if; +-- end process; + +------------------------------------------------------------------------------- +-- This process creates a signal that goes high on the rising edge of either +-- Chip_Reset_Req or System_Reset_Req +------------------------------------------------------------------------------- +-- RIS_EDGE_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- if (chip_reset_req_d3='0' and chip_Reset_Req_d2= '1') -- rising edge +-- or (system_reset_req_d3='0' and system_Reset_Req_d2='1') then +-- ris_edge <= '1'; +-- else +-- ris_edge <='0'; +-- end if; +-- end if; +-- end process; + +------------------------------------------------------------------------------- +-- This process creates a signal that goes high on the rising edge of +-- System_Reset_Req +------------------------------------------------------------------------------- +-- SYS_EDGE_PROCESS: process (Slowest_sync_clk) +-- begin +-- if (Slowest_sync_clk'event and Slowest_sync_clk = '1') then +-- if (system_reset_req_d3='0' and system_reset_req_d2='1') then +-- sys_edge <= '1'; +-- else +-- sys_edge <='0'; +-- end if; +-- end if; +-- end process; + + + +end architecture imp; + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/upcnt_n.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/upcnt_n.vhd new file mode 100644 index 0000000..4afed3c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/proc_sys_reset_v5_0/066de7cd/hdl/src/vhdl/upcnt_n.vhd @@ -0,0 +1,153 @@ +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- +-- upcnt_n - entity/architecture pair +------------------------------------------------------------------------------- +-- +-- ************************************************************************ +-- ** DISCLAIMER OF LIABILITY ** +-- ** ** +-- ** This file contains proprietary and confidential information of ** +-- ** Xilinx, Inc. ("Xilinx"), that is distributed under a license ** +-- ** from Xilinx, and may be used, copied and/or disclosed only ** +-- ** pursuant to the terms of a valid license agreement with Xilinx. ** +-- ** ** +-- ** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION ** +-- ** ("MATERIALS") "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER ** +-- ** EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING WITHOUT ** +-- ** LIMITATION, ANY WARRANTY WITH RESPECT TO NONINFRINGEMENT, ** +-- ** MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Xilinx ** +-- ** does not warrant that functions included in the Materials will ** +-- ** meet the requirements of Licensee, or that the operation of the ** +-- ** Materials will be uninterrupted or error-free, or that defects ** +-- ** in the Materials will be corrected. Furthermore, Xilinx does ** +-- ** not warrant or make any representations regarding use, or the ** +-- ** results of the use, of the Materials in terms of correctness, ** +-- ** accuracy, reliability or otherwise. ** +-- ** ** +-- ** Xilinx products are not designed or intended to be fail-safe, ** +-- ** or for use in any application requiring fail-safe performance, ** +-- ** such as life-support or safety devices or systems, Class III ** +-- ** medical devices, nuclear facilities, applications related to ** +-- ** the deployment of airbags, or any other applications that could ** +-- ** lead to death, personal injury or severe property or ** +-- ** environmental damage (individually and collectively, "critical ** +-- ** applications"). Customer assumes the sole risk and liability ** +-- ** of any use of Xilinx products in critical applications, ** +-- ** subject only to applicable laws and regulations governing ** +-- ** limitations on product liability. ** +-- ** ** +-- ** Copyright 2010 Xilinx, Inc. ** +-- ** All rights reserved. ** +-- ** ** +-- ** This disclaimer and copyright notice must be retained as part ** +-- ** of this file at all times. ** +-- ************************************************************************ +-- +------------------------------------------------------------------------------- +-- Filename: upcnt_n.vhd +-- Version: v4.00a +-- Description: Parameterizeable top level processor reset module. +-- VHDL-Standard: VHDL'93 +------------------------------------------------------------------------------- +-- Structure: This section should show the hierarchical structure of the +-- designs.Separate lines with blank lines if necessary to improve +-- readability. +-- +-- proc_sys_reset.vhd +-- upcnt_n.vhd +-- lpf.vhd +-- sequence.vhd +------------------------------------------------------------------------------- +-- Author: Kurt Conover +-- History: +-- Kurt Conover 11/07/01 -- First Release +-- +-- ~~~~~~~ +-- SK 03/11/10 +-- ^^^^^^^ +-- 1. Updated the core so support the active low "Interconnect_aresetn" and +-- "Peripheral_aresetn" signals. +-- ^^^^^^^ +------------------------------------------------------------------------------- +-- Naming Conventions: +-- active low signals: "*_n" +-- clock signals: "clk", "clk_div#", "clk_#x" +-- reset signals: "rst", "rst_n" +-- generics: "C_*" +-- user defined types: "*_TYPE" +-- state machine next state: "*_ns" +-- state machine current state: "*_cs" +-- combinatorial signals: "*_com" +-- pipelined or register delay signals: "*_d#" +-- counter signals: "*cnt*" +-- clock enable signals: "*_ce" +-- internal version of output port "*_i" +-- device pins: "*_pin" +-- ports: - Names begin with Uppercase +-- processes: "*_PROCESS" +-- component instantiations: "I_<#|FUNC> +------------------------------------------------------------------------------- +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.std_logic_arith.all; +------------------------------------------------------------------------------- +-- Port Declaration +------------------------------------------------------------------------------- +-- Definition of Generics: +-- C_SIZE -- Number of bits in counter +-- +-- +-- Definition of Ports: +-- Data -- parallel data input +-- Cnt_en -- count enable +-- Load -- Load Data +-- Clr -- reset +-- Clk -- Clock +-- Qout -- Count output +-- +------------------------------------------------------------------------------- +entity upcnt_n is + generic( + C_SIZE : Integer + ); + + port( + Data : in STD_LOGIC_VECTOR (C_SIZE-1 downto 0); + Cnt_en : in STD_LOGIC; + Load : in STD_LOGIC; + Clr : in STD_LOGIC; + Clk : in STD_LOGIC; + Qout : out STD_LOGIC_VECTOR (C_SIZE-1 downto 0) + ); + +end upcnt_n; + +architecture imp of upcnt_n is + +constant CLEAR : std_logic := '0'; + +signal q_int : UNSIGNED (C_SIZE-1 downto 0) := (others => '1'); + +begin + process(Clk) + begin + + if (Clk'event) and Clk = '1' then + -- Clear output register + if (Clr = CLEAR) then + q_int <= (others => '0'); + -- Load in start value + elsif (Load = '1') then + q_int <= UNSIGNED(Data); + -- If count enable is high + elsif Cnt_en = '1' then + q_int <= q_int + 1; + end if; + end if; + end process; + + Qout <= STD_LOGIC_VECTOR(q_int); + +end imp; + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_afi_slave.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_afi_slave.v new file mode 100644 index 0000000..dcc7214 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_afi_slave.v @@ -0,0 +1,978 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_afi_slave.v + * + * Date : 2012-11 + * + * Description : Model that acts as AFI port interface. It uses AXI3 Slave BFM + * from Cadence. + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_afi_slave ( + S_RESETN, + + S_ARREADY, + S_AWREADY, + S_BVALID, + S_RLAST, + S_RVALID, + S_WREADY, + S_BRESP, + S_RRESP, + S_RDATA, + S_BID, + S_RID, + S_ACLK, + S_ARVALID, + S_AWVALID, + S_BREADY, + S_RREADY, + S_WLAST, + S_WVALID, + S_ARBURST, + S_ARLOCK, + S_ARSIZE, + S_AWBURST, + S_AWLOCK, + S_AWSIZE, + S_ARPROT, + S_AWPROT, + S_ARADDR, + S_AWADDR, + S_WDATA, + S_ARCACHE, + S_ARLEN, + S_AWCACHE, + S_AWLEN, + S_WSTRB, + S_ARID, + S_AWID, + S_WID, + + S_AWQOS, + S_ARQOS, + + SW_CLK, + WR_DATA_ACK_OCM, + WR_DATA_ACK_DDR, + WR_ADDR, + WR_DATA, + WR_BYTES, + WR_DATA_VALID_OCM, + WR_DATA_VALID_DDR, + WR_QOS, + + RD_REQ_DDR, + RD_REQ_OCM, + RD_ADDR, + RD_DATA_OCM, + RD_DATA_DDR, + RD_BYTES, + RD_QOS, + RD_DATA_VALID_OCM, + RD_DATA_VALID_DDR, + S_RDISSUECAP1_EN, + S_WRISSUECAP1_EN, + S_RCOUNT, + S_WCOUNT, + S_RACOUNT, + S_WACOUNT + +); + parameter enable_this_port = 0; + parameter slave_name = "Slave"; + parameter data_bus_width = 32; + parameter address_bus_width = 32; + parameter id_bus_width = 6; + parameter slave_base_address = 0; + parameter slave_high_address = 4; + parameter max_outstanding_transactions = 8; + parameter exclusive_access_supported = 0; + + `include "processing_system7_bfm_v2_0_local_params.v" + + /* Local parameters only for this module */ + /* Internal counters that are used as Read/Write pointers to the fifo's that store all the transaction info on all channles. + This parameter is used to define the width of these pointers --> depending on Maximum outstanding transactions supported. + 1-bit extra width than the no.of.bits needed to represent the outstanding transactions + Extra bit helps in generating the empty and full flags + */ + parameter int_cntr_width = clogb2(max_outstanding_transactions)+1; + + /* RESP data */ + parameter rsp_fifo_bits = axi_rsp_width+id_bus_width; + parameter rsp_lsb = 0; + parameter rsp_msb = axi_rsp_width-1; + parameter rsp_id_lsb = rsp_msb + 1; + parameter rsp_id_msb = rsp_id_lsb + id_bus_width-1; + + input S_RESETN; + + output S_ARREADY; + output S_AWREADY; + output S_BVALID; + output S_RLAST; + output S_RVALID; + output S_WREADY; + output [axi_rsp_width-1:0] S_BRESP; + output [axi_rsp_width-1:0] S_RRESP; + output [data_bus_width-1:0] S_RDATA; + output [id_bus_width-1:0] S_BID; + output [id_bus_width-1:0] S_RID; + input S_ACLK; + input S_ARVALID; + input S_AWVALID; + input S_BREADY; + input S_RREADY; + input S_WLAST; + input S_WVALID; + input [axi_brst_type_width-1:0] S_ARBURST; + input [axi_lock_width-1:0] S_ARLOCK; + input [axi_size_width-1:0] S_ARSIZE; + input [axi_brst_type_width-1:0] S_AWBURST; + input [axi_lock_width-1:0] S_AWLOCK; + input [axi_size_width-1:0] S_AWSIZE; + input [axi_prot_width-1:0] S_ARPROT; + input [axi_prot_width-1:0] S_AWPROT; + input [address_bus_width-1:0] S_ARADDR; + input [address_bus_width-1:0] S_AWADDR; + input [data_bus_width-1:0] S_WDATA; + input [axi_cache_width-1:0] S_ARCACHE; + input [axi_cache_width-1:0] S_ARLEN; + + input [axi_qos_width-1:0] S_ARQOS; + + input [axi_cache_width-1:0] S_AWCACHE; + input [axi_len_width-1:0] S_AWLEN; + + input [axi_qos_width-1:0] S_AWQOS; + input [(data_bus_width/8)-1:0] S_WSTRB; + input [id_bus_width-1:0] S_ARID; + input [id_bus_width-1:0] S_AWID; + input [id_bus_width-1:0] S_WID; + + input SW_CLK; + input WR_DATA_ACK_DDR, WR_DATA_ACK_OCM; + output WR_DATA_VALID_DDR, WR_DATA_VALID_OCM; + output [max_burst_bits-1:0] WR_DATA; + output [addr_width-1:0] WR_ADDR; + output [max_transfer_bytes_width:0] WR_BYTES; + output reg RD_REQ_OCM, RD_REQ_DDR; + output reg [addr_width-1:0] RD_ADDR; + input [max_burst_bits-1:0] RD_DATA_DDR,RD_DATA_OCM; + output reg[max_transfer_bytes_width:0] RD_BYTES; + input RD_DATA_VALID_OCM,RD_DATA_VALID_DDR; + output [axi_qos_width-1:0] WR_QOS; + output reg [axi_qos_width-1:0] RD_QOS; + + input S_RDISSUECAP1_EN; + input S_WRISSUECAP1_EN; + + output [7:0] S_RCOUNT; + output [7:0] S_WCOUNT; + output [2:0] S_RACOUNT; + output [5:0] S_WACOUNT; + + wire net_ARVALID; + wire net_AWVALID; + wire net_WVALID; + + real s_aclk_period; + + cdn_axi3_slave_bfm #(slave_name, + data_bus_width, + address_bus_width, + id_bus_width, + slave_base_address, + (slave_high_address- slave_base_address), + max_outstanding_transactions, + 0, ///MEMORY_MODEL_MODE, + exclusive_access_supported) + slave (.ACLK (S_ACLK), + .ARESETn (S_RESETN), /// confirm this + // Write Address Channel + .AWID (S_AWID), + .AWADDR (S_AWADDR), + .AWLEN (S_AWLEN), + .AWSIZE (S_AWSIZE), + .AWBURST (S_AWBURST), + .AWLOCK (S_AWLOCK), + .AWCACHE (S_AWCACHE), + .AWPROT (S_AWPROT), + .AWVALID (net_AWVALID), + .AWREADY (S_AWREADY), + // Write Data Channel Signals. + .WID (S_WID), + .WDATA (S_WDATA), + .WSTRB (S_WSTRB), + .WLAST (S_WLAST), + .WVALID (net_WVALID), + .WREADY (S_WREADY), + // Write Response Channel Signals. + .BID (S_BID), + .BRESP (S_BRESP), + .BVALID (S_BVALID), + .BREADY (S_BREADY), + // Read Address Channel Signals. + .ARID (S_ARID), + .ARADDR (S_ARADDR), + .ARLEN (S_ARLEN), + .ARSIZE (S_ARSIZE), + .ARBURST (S_ARBURST), + .ARLOCK (S_ARLOCK), + .ARCACHE (S_ARCACHE), + .ARPROT (S_ARPROT), + .ARVALID (net_ARVALID), + .ARREADY (S_ARREADY), + // Read Data Channel Signals. + .RID (S_RID), + .RDATA (S_RDATA), + .RRESP (S_RRESP), + .RLAST (S_RLAST), + .RVALID (S_RVALID), + .RREADY (S_RREADY)); + + + wire wr_intr_fifo_full; + reg temp_wr_intr_fifo_full; + + /* Interconnect WR_FIFO model instance */ + processing_system7_bfm_v2_0_intr_wr_mem wr_intr_fifo(SW_CLK, S_RESETN, wr_intr_fifo_full, WR_DATA_ACK_OCM, WR_DATA_ACK_DDR, WR_ADDR, WR_DATA, WR_BYTES, WR_QOS, WR_DATA_VALID_OCM, WR_DATA_VALID_DDR); + + /* Register the async 'full' signal to S_ACLK clock */ + always@(posedge S_ACLK) temp_wr_intr_fifo_full = wr_intr_fifo_full; + + /* Latency type and Debug/Error Control */ + reg[1:0] latency_type = RANDOM_CASE; + reg DEBUG_INFO = 1; + reg STOP_ON_ERROR = 1'b1; + + /* Internal nets/regs for calling slave BFM API's*/ + reg [wr_afi_fifo_data_bits-1:0] wr_fifo [0:max_outstanding_transactions-1]; + reg [int_cntr_width-1:0] wr_fifo_wr_ptr = 0, wr_fifo_rd_ptr = 0; + wire wr_fifo_empty; + + /* Store the awvalid receive time --- necessary for calculating the bresp latency */ + reg [7:0] aw_time_cnt = 0,bresp_time_cnt = 0; + real awvalid_receive_time[0:max_outstanding_transactions]; // store the time when a new awvalid is received + reg awvalid_flag[0:max_outstanding_transactions]; // store the time when a new awvalid is received + + /* Address Write Channel handshake*/ + reg[int_cntr_width-1:0] aw_cnt = 0;// + + /* various FIFOs for storing the ADDR channel info */ + reg [axi_size_width-1:0] awsize [0:max_outstanding_transactions-1]; + reg [axi_prot_width-1:0] awprot [0:max_outstanding_transactions-1]; + reg [axi_lock_width-1:0] awlock [0:max_outstanding_transactions-1]; + reg [axi_cache_width-1:0] awcache [0:max_outstanding_transactions-1]; + reg [axi_brst_type_width-1:0] awbrst [0:max_outstanding_transactions-1]; + reg [axi_len_width-1:0] awlen [0:max_outstanding_transactions-1]; + reg aw_flag [0:max_outstanding_transactions-1]; + reg [addr_width-1:0] awaddr [0:max_outstanding_transactions-1]; + reg [id_bus_width-1:0] awid [0:max_outstanding_transactions-1]; + reg [axi_qos_width-1:0] awqos [0:max_outstanding_transactions-1]; + wire aw_fifo_full; // indicates awvalid_fifo is full (max outstanding transactions reached) + + /* internal fifos to store burst write data, ID & strobes*/ + reg [(data_bus_width*axi_burst_len)-1:0] burst_data [0:max_outstanding_transactions-1]; + reg [max_burst_bytes_width:0] burst_valid_bytes [0:max_outstanding_transactions-1]; /// total valid bytes received in a complete burst transfer + reg wlast_flag [0:max_outstanding_transactions-1]; // flag to indicate WLAST received + wire wd_fifo_full; + + /* Write Data Channel and Write Response handshake signals*/ + reg [int_cntr_width-1:0] wd_cnt = 0; + reg [(data_bus_width*axi_burst_len)-1:0] aligned_wr_data; + reg [addr_width-1:0] aligned_wr_addr; + reg [max_burst_bytes_width:0] valid_data_bytes; + reg [int_cntr_width-1:0] wr_bresp_cnt = 0; + reg [axi_rsp_width-1:0] bresp; + reg [rsp_fifo_bits-1:0] fifo_bresp [0:max_outstanding_transactions-1]; // store the ID and its corresponding response + reg enable_write_bresp; + reg [int_cntr_width-1:0] rd_bresp_cnt = 0; + integer wr_latency_count; + reg wr_delayed; + wire bresp_fifo_empty; + + /* keep track of count values */ + reg[7:0] wcount; + reg[5:0] wacount; + + /* Qos*/ + reg [axi_qos_width-1:0] ar_qos, aw_qos; + + initial begin + if(DEBUG_INFO) begin + if(enable_this_port) + $display("[%0d] : %0s : %0s : Port is ENABLED.",$time, DISP_INFO, slave_name); + else + $display("[%0d] : %0s : %0s : Port is DISABLED.",$time, DISP_INFO, slave_name); + end + end + /*--------------------------------------------------------------------------------*/ + + /* Store the Clock cycle time period */ + + always@(S_RESETN) + begin + if(S_RESETN) begin + @(posedge S_ACLK); + s_aclk_period = $time; + @(posedge S_ACLK); + s_aclk_period = $time - s_aclk_period; + end + end + /*--------------------------------------------------------------------------------*/ + + initial slave.set_disable_reset_value_checks(1); + initial begin + repeat(2) @(posedge S_ACLK); + if(!enable_this_port) begin + slave.set_channel_level_info(0); + slave.set_function_level_info(0); + end + slave.RESPONSE_TIMEOUT = 0; + end + /*--------------------------------------------------------------------------------*/ + + /* Set Latency type to be used */ + task set_latency_type; + input[1:0] lat; + begin + if(enable_this_port) + latency_type = lat; + else begin + //if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Port is disabled. 'Latency Profile' will not be set...",$time, DISP_WARN, slave_name); + end + end + endtask + /*--------------------------------------------------------------------------------*/ + /* Set ARQoS to be used */ + task set_arqos; + input[axi_qos_width-1:0] qos; + begin + if(enable_this_port) + ar_qos = qos; + else begin + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Port is disabled. 'ARQOS' will not be set...",$time, DISP_WARN, slave_name); + end + end + endtask + /*--------------------------------------------------------------------------------*/ + + /* Set AWQoS to be used */ + task set_awqos; + input[axi_qos_width-1:0] qos; + begin + if(enable_this_port) + aw_qos = qos; + else begin + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Port is disabled. 'AWQOS' will not be set...",$time, DISP_WARN, slave_name); + end + end + endtask + /*--------------------------------------------------------------------------------*/ + + /* get the wr latency number */ + function [31:0] get_wr_lat_number; + input dummy; + reg[1:0] temp; + begin + case(latency_type) + BEST_CASE : get_wr_lat_number = afi_wr_min; + AVG_CASE : get_wr_lat_number = afi_wr_avg; + WORST_CASE : get_wr_lat_number = afi_wr_max; + default : begin // RANDOM_CASE + temp = $random; + case(temp) + 2'b00 : get_wr_lat_number = ($random()%10+ afi_wr_min); + 2'b01 : get_wr_lat_number = ($random()%40+ afi_wr_avg); + default : get_wr_lat_number = ($random()%60+ afi_wr_max); + endcase + end + endcase + end + endfunction + /*--------------------------------------------------------------------------------*/ + + /* get the rd latency number */ + function [31:0] get_rd_lat_number; + input dummy; + reg[1:0] temp; + begin + case(latency_type) + BEST_CASE : get_rd_lat_number = afi_rd_min; + AVG_CASE : get_rd_lat_number = afi_rd_avg; + WORST_CASE : get_rd_lat_number = afi_rd_max; + default : begin // RANDOM_CASE + temp = $random; + case(temp) + 2'b00 : get_rd_lat_number = ($random()%10+ afi_rd_min); + 2'b01 : get_rd_lat_number = ($random()%40+ afi_rd_avg); + default : get_rd_lat_number = ($random()%60+ afi_rd_max); + endcase + end + endcase + end + endfunction + /*--------------------------------------------------------------------------------*/ + /* Check for any WRITE/READs when this port is disabled */ + always@(S_AWVALID or S_WVALID or S_ARVALID) + begin + if((S_AWVALID | S_WVALID | S_ARVALID) && !enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. AXI transaction is initiated on this port ...\nSimulation will halt ..",$time, DISP_ERR, slave_name); + $stop; + end + end + + /*--------------------------------------------------------------------------------*/ + + assign net_ARVALID = enable_this_port ? S_ARVALID : 1'b0; + assign net_AWVALID = enable_this_port ? S_AWVALID : 1'b0; + assign net_WVALID = enable_this_port ? S_WVALID : 1'b0; + + assign wr_fifo_empty = (wr_fifo_wr_ptr === wr_fifo_rd_ptr)?1'b1: 1'b0; + assign bresp_fifo_empty = (wr_bresp_cnt === rd_bresp_cnt)?1'b1:1'b0; + assign bresp_fifo_full = ((wr_bresp_cnt[int_cntr_width-1] !== rd_bresp_cnt[int_cntr_width-1]) && (wr_bresp_cnt[int_cntr_width-2:0] === rd_bresp_cnt[int_cntr_width-2:0]))?1'b1:1'b0; + + assign S_WCOUNT = wcount; + assign S_WACOUNT = wacount; + + // FIFO_STATUS (only if AFI port) 1- full + function automatic wrfifo_full ; + input [axi_len_width:0] fifo_space_exp; + integer fifo_space_left; + begin + fifo_space_left = afi_fifo_locations - wcount; + if(fifo_space_left < fifo_space_exp) + wrfifo_full = 1; + else + wrfifo_full = 0; + end + endfunction + /*--------------------------------------------------------------------------------*/ + + /* Store the awvalid receive time --- necessary for calculating the bresp latency */ + always@(negedge S_RESETN or S_AWID or S_AWADDR or S_AWVALID ) + begin + if(!S_RESETN) + aw_time_cnt = 0; + else begin + if(S_AWVALID) begin + awvalid_receive_time[aw_time_cnt] = $time; + awvalid_flag[aw_time_cnt] = 1'b1; + aw_time_cnt = aw_time_cnt + 1; + end + end // else + end /// always + /*--------------------------------------------------------------------------------*/ + always@(posedge S_ACLK) + begin + if(net_AWVALID && S_AWREADY) begin + if(S_AWQOS === 0) awqos[aw_cnt[int_cntr_width-2:0]] = aw_qos; + else awqos[aw_cnt[int_cntr_width-2:0]] = S_AWQOS; + end + end + + /* Address Write Channel handshake*/ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + aw_cnt = 0; + wacount = 0; + end else begin + if(S_AWVALID && !wrfifo_full(S_AWLEN+1)) begin + slave.RECEIVE_WRITE_ADDRESS(0, + id_invalid, + awaddr[aw_cnt[int_cntr_width-2:0]], + awlen[aw_cnt[int_cntr_width-2:0]], + awsize[aw_cnt[int_cntr_width-2:0]], + awbrst[aw_cnt[int_cntr_width-2:0]], + awlock[aw_cnt[int_cntr_width-2:0]], + awcache[aw_cnt[int_cntr_width-2:0]], + awprot[aw_cnt[int_cntr_width-2:0]], + awid[aw_cnt[int_cntr_width-2:0]]); /// sampled valid ID. + aw_flag[aw_cnt[int_cntr_width-2:0]] = 1'b1; + aw_cnt = aw_cnt + 1; + wacount = wacount + 1; + end // if (!aw_fifo_full) + end /// if else + end /// always + /*--------------------------------------------------------------------------------*/ + + /* Write Data Channel Handshake */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + wd_cnt = 0; + end else begin + if(aw_flag[wd_cnt[int_cntr_width-2:0]]) begin + if(S_WVALID && !wrfifo_full(awlen[wd_cnt[int_cntr_width-2:0]] + 1)) begin + slave.RECEIVE_WRITE_BURST_NO_CHECKS(S_WID, burst_data[wd_cnt[int_cntr_width-2:0]], burst_valid_bytes[wd_cnt[int_cntr_width-2:0]]); + wlast_flag[wd_cnt[int_cntr_width-2:0]] = 1'b1; + wd_cnt = wd_cnt + 1; + end + end else begin + if(!wrfifo_full(axi_burst_len+1) && S_WVALID) begin + slave.RECEIVE_WRITE_BURST_NO_CHECKS(S_WID, burst_data[wd_cnt[int_cntr_width-2:0]], burst_valid_bytes[wd_cnt[int_cntr_width-2:0]]); + wlast_flag[wd_cnt[int_cntr_width-2:0]] = 1'b1; + wd_cnt = wd_cnt + 1; + end + end /// if + end /// else + end /// always + /*--------------------------------------------------------------------------------*/ + + /* Align the wrap data for write transaction */ + task automatic get_wrap_aligned_wr_data; + output [(data_bus_width*axi_burst_len)-1:0] aligned_data; + output [addr_width-1:0] start_addr; /// aligned start address + input [addr_width-1:0] addr; + input [(data_bus_width*axi_burst_len)-1:0] b_data; + input [max_burst_bytes_width:0] v_bytes; + reg [(data_bus_width*axi_burst_len)-1:0] temp_data, wrp_data; + integer wrp_bytes; + integer i; + begin + start_addr = (addr/v_bytes) * v_bytes; + wrp_bytes = addr - start_addr; + wrp_data = b_data; + temp_data = 0; + wrp_data = wrp_data << ((data_bus_width*axi_burst_len) - (v_bytes*8)); + while(wrp_bytes > 0) begin /// get the data that is wrapped + temp_data = temp_data << 8; + temp_data[7:0] = wrp_data[(data_bus_width*axi_burst_len)-1 : (data_bus_width*axi_burst_len)-8]; + wrp_data = wrp_data << 8; + wrp_bytes = wrp_bytes - 1; + end + wrp_bytes = addr - start_addr; + wrp_data = b_data << (wrp_bytes*8); + + aligned_data = (temp_data | wrp_data); + end + endtask + /*--------------------------------------------------------------------------------*/ + + /* Calculate the Response for each read/write transaction */ + function [axi_rsp_width-1:0] calculate_resp; + input [addr_width-1:0] awaddr; + input [axi_prot_width-1:0] awprot; + reg [axi_rsp_width-1:0] rsp; + begin + rsp = AXI_OK; + /* Address Decode */ + if(decode_address(awaddr) === INVALID_MEM_TYPE) begin + rsp = AXI_SLV_ERR; //slave error + $display("[%0d] : %0s : %0s : AXI Access to Invalid location(0x%0h) ",$time, DISP_ERR, slave_name, awaddr); + end + else if(decode_address(awaddr) === REG_MEM) begin + rsp = AXI_SLV_ERR; //slave error + $display("[%0d] : %0s : %0s : AXI Access to Register Map(0x%0h) is not allowed through this port.",$time, DISP_ERR, slave_name, awaddr); + end + if(secure_access_enabled && awprot[1]) + rsp = AXI_DEC_ERR; // decode error + calculate_resp = rsp; + end + endfunction + /*--------------------------------------------------------------------------------*/ + reg[max_burst_bits-1:0] temp_wr_data; + /* Store the Write response for each write transaction */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + wr_fifo_wr_ptr = 0; + wcount = 0; + end else begin + enable_write_bresp = aw_flag[wr_fifo_wr_ptr[int_cntr_width-2:0]] && wlast_flag[wr_fifo_wr_ptr[int_cntr_width-2:0]]; + /* calculate bresp only when AWVALID && WLAST is received */ + if(enable_write_bresp) begin + aw_flag[wr_fifo_wr_ptr[int_cntr_width-2:0]] = 0; + wlast_flag[wr_fifo_wr_ptr[int_cntr_width-2:0]] = 0; + + bresp = calculate_resp(awaddr[wr_fifo_wr_ptr[int_cntr_width-2:0]], awprot[wr_fifo_wr_ptr[int_cntr_width-2:0]]); + /* Fill AFI_WR_data FIFO */ + if(bresp === AXI_OK ) begin + if(awbrst[wr_fifo_wr_ptr[int_cntr_width-2:0]]=== AXI_WRAP) begin /// wrap type? then align the data + get_wrap_aligned_wr_data(aligned_wr_data, aligned_wr_addr, awaddr[wr_fifo_wr_ptr[int_cntr_width-2:0]], burst_data[wr_fifo_wr_ptr[int_cntr_width-2:0]],burst_valid_bytes[wr_fifo_wr_ptr[int_cntr_width-2:0]]); /// gives wrapped start address + end else begin + aligned_wr_data = burst_data[wr_fifo_wr_ptr[int_cntr_width-2:0]]; + aligned_wr_addr = awaddr[wr_fifo_wr_ptr[int_cntr_width-2:0]] ; + end + valid_data_bytes = burst_valid_bytes[wr_fifo_wr_ptr[int_cntr_width-2:0]]; + end else + valid_data_bytes = 0; + temp_wr_data = aligned_wr_data; + wr_fifo[wr_fifo_wr_ptr[int_cntr_width-2:0]] = {awqos[wr_fifo_wr_ptr[int_cntr_width-2:0]], awlen[wr_fifo_wr_ptr[int_cntr_width-2:0]], awid[wr_fifo_wr_ptr[int_cntr_width-2:0]], bresp, temp_wr_data, aligned_wr_addr, valid_data_bytes}; + wcount = wcount + awlen[wr_fifo_wr_ptr[int_cntr_width-2:0]]+1; + wr_fifo_wr_ptr = wr_fifo_wr_ptr + 1; + end + end // else + end // always + /*--------------------------------------------------------------------------------*/ + + /* Send Write Response Channel handshake */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + rd_bresp_cnt = 0; + wr_latency_count = get_wr_lat_number(1); + wr_delayed = 0; + bresp_time_cnt = 0; + end else begin + wr_delayed = 1'b0; + if(awvalid_flag[bresp_time_cnt] && (($time - awvalid_receive_time[bresp_time_cnt])/s_aclk_period >= wr_latency_count)) + wr_delayed = 1; + if(!bresp_fifo_empty && wr_delayed) begin + slave.SEND_WRITE_RESPONSE(fifo_bresp[rd_bresp_cnt[int_cntr_width-2:0]][rsp_id_msb : rsp_id_lsb], // ID + fifo_bresp[rd_bresp_cnt[int_cntr_width-2:0]][rsp_msb : rsp_lsb] // Response + ); + wr_delayed = 0; + awvalid_flag[bresp_time_cnt] = 1'b0; + bresp_time_cnt = bresp_time_cnt+1; + rd_bresp_cnt = rd_bresp_cnt + 1; + wr_latency_count = get_wr_lat_number(1); + end + end // else + end//always + /*--------------------------------------------------------------------------------*/ + + /* Write Response Channel handshake */ + reg wr_int_state; + /* Reading from the wr_fifo and sending to Interconnect fifo*/ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + wr_int_state = 1'b0; + wr_bresp_cnt = 0; + wr_fifo_rd_ptr = 0; + end else begin + case(wr_int_state) + 1'b0 : begin + wr_int_state = 1'b0; + if(!temp_wr_intr_fifo_full && !bresp_fifo_full && !wr_fifo_empty) begin + wr_intr_fifo.write_mem({wr_fifo[wr_fifo_rd_ptr[int_cntr_width-2:0]][wr_afi_qos_msb:wr_afi_qos_lsb], wr_fifo[wr_fifo_rd_ptr[int_cntr_width-2:0]][wr_afi_data_msb:wr_afi_bytes_lsb]}); /// qos, data, address and valid_bytes + wr_int_state = 1'b1; + /* start filling the write response fifo at the same time */ + fifo_bresp[wr_bresp_cnt[int_cntr_width-2:0]] = wr_fifo[wr_fifo_rd_ptr[int_cntr_width-2:0]][wr_afi_id_msb:wr_afi_rsp_lsb]; // ID and Resp + wcount = wcount - (wr_fifo[wr_fifo_rd_ptr[int_cntr_width-2:0]][wr_afi_ln_msb:wr_afi_ln_lsb] + 1); /// burst length + wacount = wacount - 1; + wr_fifo_rd_ptr = wr_fifo_rd_ptr + 1; + wr_bresp_cnt = wr_bresp_cnt+1; + end + end + 1'b1 : begin + wr_int_state = 0; + end + endcase + end + end + /*--------------------------------------------------------------------------------*/ +/*-------------------------------- WRITE HANDSHAKE END ----------------------------------------*/ + +/*-------------------------------- READ HANDSHAKE ---------------------------------------------*/ + +/* READ CHANNELS */ +/* Store the arvalid receive time --- necessary for calculating latency in sending the rresp latency */ + reg [7:0] ar_time_cnt = 0,rresp_time_cnt = 0; + real arvalid_receive_time[0:max_outstanding_transactions]; // store the time when a new arvalid is received + reg arvalid_flag[0:max_outstanding_transactions]; // store the time when a new arvalid is received + reg [int_cntr_width-1:0] ar_cnt = 0;// counter for arvalid info + +/* various FIFOs for storing the ADDR channel info */ + reg [axi_size_width-1:0] arsize [0:max_outstanding_transactions-1]; + reg [axi_prot_width-1:0] arprot [0:max_outstanding_transactions-1]; + reg [axi_brst_type_width-1:0] arbrst [0:max_outstanding_transactions-1]; + reg [axi_len_width-1:0] arlen [0:max_outstanding_transactions-1]; + reg [axi_cache_width-1:0] arcache [0:max_outstanding_transactions-1]; + reg [axi_lock_width-1:0] arlock [0:max_outstanding_transactions-1]; + reg ar_flag [0:max_outstanding_transactions-1]; + reg [addr_width-1:0] araddr [0:max_outstanding_transactions-1]; + reg [id_bus_width-1:0] arid [0:max_outstanding_transactions-1]; + reg [axi_qos_width-1:0] arqos [0:max_outstanding_transactions-1]; + wire ar_fifo_full; // indicates arvalid_fifo is full (max outstanding transactions reached) + + reg [int_cntr_width-1:0] wr_rresp_cnt = 0; + reg [axi_rsp_width-1:0] rresp; + reg [rsp_fifo_bits-1:0] fifo_rresp [0:max_outstanding_transactions-1]; // store the ID and its corresponding response + reg enable_write_rresp; + + /* Send Read Response & Data Channel handshake */ + integer rd_latency_count; + reg rd_delayed; + + reg [rd_afi_fifo_bits-1:0] read_fifo[0:max_outstanding_transactions-1]; /// Read Burst Data, addr, size, burst, len, RID, RRESP, valid_bytes + reg [int_cntr_width-1:0] rd_fifo_wr_ptr = 0, rd_fifo_rd_ptr = 0; + wire read_fifo_full; + + reg [7:0] rcount; + reg [2:0] racount; + + wire rd_intr_fifo_full, rd_intr_fifo_empty; + wire read_fifo_empty; + + /* signals to communicate with interconnect RD_FIFO model */ + reg rd_req, invalid_rd_req; + + /* REad control Info + 56:25 : Address (32) + 24:22 : Size (3) + 21:20 : BRST (2) + 19:16 : LEN (4) + 15:10 : RID (6) + 9:8 : RRSP (2) + 7:0 : byte cnt (8) + */ + reg [rd_info_bits-1:0] read_control_info; + reg [(data_bus_width*axi_burst_len)-1:0] aligned_rd_data; + reg temp_rd_intr_fifo_empty; + + processing_system7_bfm_v2_0_intr_rd_mem rd_intr_fifo(SW_CLK, S_RESETN, rd_intr_fifo_full, rd_intr_fifo_empty, rd_req, invalid_rd_req, read_control_info , RD_DATA_OCM, RD_DATA_DDR, RD_DATA_VALID_OCM, RD_DATA_VALID_DDR); + + assign read_fifo_empty = (rd_fifo_wr_ptr === rd_fifo_rd_ptr)?1'b1: 1'b0; + assign S_RCOUNT = rcount; + assign S_RACOUNT = racount; + + /* Register the asynch signal empty coming from Interconnect READ FIFO */ + always@(posedge S_ACLK) temp_rd_intr_fifo_empty = rd_intr_fifo_empty; + + // FIFO_STATUS (only if AFI port) 1- full + function automatic rdfifo_full ; + input [axi_len_width:0] fifo_space_exp; + integer fifo_space_left; + begin + fifo_space_left = afi_fifo_locations - rcount; + if(fifo_space_left < fifo_space_exp) + rdfifo_full = 1; + else + rdfifo_full = 0; + end + endfunction + + /* Store the arvalid receive time --- necessary for calculating the bresp latency */ + always@(negedge S_RESETN or S_ARID or S_ARADDR or S_ARVALID ) + begin + if(!S_RESETN) + ar_time_cnt = 0; + else begin + if(S_ARVALID) begin + arvalid_receive_time[ar_time_cnt] = $time; + arvalid_flag[ar_time_cnt] = 1'b1; + ar_time_cnt = ar_time_cnt + 1; + end + end // else + end /// always + /*--------------------------------------------------------------------------------*/ + always@(posedge S_ACLK) + begin + if(net_ARVALID && S_ARREADY) begin + if(S_ARQOS === 0) arqos[aw_cnt[int_cntr_width-2:0]] = ar_qos; + else arqos[aw_cnt[int_cntr_width-2:0]] = S_ARQOS; + end + end + + /* Address Read Channel handshake*/ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + ar_cnt = 0; + racount = 0; + end else begin + if(S_ARVALID && !rdfifo_full(S_ARLEN+1)) begin /// if AFI read fifo is not full + slave.RECEIVE_READ_ADDRESS(0, + id_invalid, + araddr[ar_cnt[int_cntr_width-2:0]], + arlen[ar_cnt[int_cntr_width-2:0]], + arsize[ar_cnt[int_cntr_width-2:0]], + arbrst[ar_cnt[int_cntr_width-2:0]], + arlock[ar_cnt[int_cntr_width-2:0]], + arcache[ar_cnt[int_cntr_width-2:0]], + arprot[ar_cnt[int_cntr_width-2:0]], + arid[ar_cnt[int_cntr_width-2:0]]); /// sampled valid ID. + ar_flag[ar_cnt[int_cntr_width-2:0]] = 1'b1; + ar_cnt = ar_cnt+1; + racount = racount + 1; + end /// if(!ar_fifo_full) + end /// if else + end /// always*/ + + /*--------------------------------------------------------------------------------*/ + + /* Align Wrap data for read transaction*/ + task automatic get_wrap_aligned_rd_data; + output [(data_bus_width*axi_burst_len)-1:0] aligned_data; + input [addr_width-1:0] addr; + input [(data_bus_width*axi_burst_len)-1:0] b_data; + input [max_burst_bytes_width:0] v_bytes; + reg [addr_width-1:0] start_addr; + reg [(data_bus_width*axi_burst_len)-1:0] temp_data, wrp_data; + integer wrp_bytes; + integer i; + begin + start_addr = (addr/v_bytes) * v_bytes; + wrp_bytes = addr - start_addr; + wrp_data = b_data; + temp_data = 0; + while(wrp_bytes > 0) begin /// get the data that is wrapped + temp_data = temp_data >> 8; + temp_data[(data_bus_width*axi_burst_len)-1 : (data_bus_width*axi_burst_len)-8] = wrp_data[7:0]; + wrp_data = wrp_data >> 8; + wrp_bytes = wrp_bytes - 1; + end + temp_data = temp_data >> ((data_bus_width*axi_burst_len) - (v_bytes*8)); + wrp_bytes = addr - start_addr; + wrp_data = b_data >> (wrp_bytes*8); + + aligned_data = (temp_data | wrp_data); + end + endtask + /*--------------------------------------------------------------------------------*/ + + parameter RD_DATA_REQ = 1'b0, WAIT_RD_VALID = 1'b1; + reg rd_fifo_state; + reg [addr_width-1:0] temp_read_address; + reg [max_burst_bytes_width:0] temp_rd_valid_bytes; + /* get the data from memory && also calculate the rresp*/ + always@(negedge S_RESETN or posedge SW_CLK) + begin + if(!S_RESETN)begin + wr_rresp_cnt =0; + rd_fifo_state = RD_DATA_REQ; + temp_rd_valid_bytes = 0; + temp_read_address = 0; + RD_REQ_DDR = 1'b0; + RD_REQ_OCM = 1'b0; + rd_req = 0; + invalid_rd_req= 0; + RD_QOS = 0; + end else begin + case(rd_fifo_state) + RD_DATA_REQ : begin + rd_fifo_state = RD_DATA_REQ; + RD_REQ_DDR = 1'b0; + RD_REQ_OCM = 1'b0; + invalid_rd_req = 0; + if(ar_flag[wr_rresp_cnt[int_cntr_width-2:0]] && !rd_intr_fifo_full) begin /// check the rd_fifo_bytes, interconnect fifo full condition + ar_flag[wr_rresp_cnt[int_cntr_width-2:0]] = 0; + rresp = calculate_resp(araddr[wr_rresp_cnt[int_cntr_width-2:0]],arprot[wr_rresp_cnt[int_cntr_width-2:0]]); + temp_rd_valid_bytes = (arlen[wr_rresp_cnt[int_cntr_width-2:0]]+1)*(2**arsize[wr_rresp_cnt[int_cntr_width-2:0]]);//data_bus_width/8; + + if(arbrst[wr_rresp_cnt[int_cntr_width-2:0]] === AXI_WRAP) /// wrap begin + temp_read_address = (araddr[wr_rresp_cnt[int_cntr_width-2:0]]/temp_rd_valid_bytes) * temp_rd_valid_bytes; + else + temp_read_address = araddr[wr_rresp_cnt[int_cntr_width-2:0]]; + + if(rresp === AXI_OK) begin + case(decode_address(temp_read_address))//decode_address(araddr[wr_rresp_cnt[int_cntr_width-2:0]]); + OCM_MEM : RD_REQ_OCM = 1; + DDR_MEM : RD_REQ_DDR = 1; + default : invalid_rd_req = 1; + endcase + end else + invalid_rd_req = 1; + RD_ADDR = temp_read_address; ///araddr[wr_rresp_cnt[int_cntr_width-2:0]]; + RD_BYTES = temp_rd_valid_bytes; + RD_QOS = arqos[wr_rresp_cnt[int_cntr_width-2:0]]; + rd_fifo_state = WAIT_RD_VALID; + rd_req = 1; + racount = racount - 1; + read_control_info = {araddr[wr_rresp_cnt[int_cntr_width-2:0]], arsize[wr_rresp_cnt[int_cntr_width-2:0]], arbrst[wr_rresp_cnt[int_cntr_width-2:0]], arlen[wr_rresp_cnt[int_cntr_width-2:0]], arid[wr_rresp_cnt[int_cntr_width-2:0]], rresp, temp_rd_valid_bytes }; + wr_rresp_cnt = wr_rresp_cnt + 1; + end + end + WAIT_RD_VALID : begin + rd_fifo_state = WAIT_RD_VALID; + rd_req = 0; + if(RD_DATA_VALID_OCM | RD_DATA_VALID_DDR | invalid_rd_req) begin ///temp_dec == 2'b11) begin + RD_REQ_DDR = 1'b0; + RD_REQ_OCM = 1'b0; + invalid_rd_req = 0; + rd_fifo_state = RD_DATA_REQ; + end + end + endcase + end /// else + end /// always + /*--------------------------------------------------------------------------------*/ + + /* thread to fill in the AFI RD_FIFO */ + reg[rd_afi_fifo_bits-1:0] temp_rd_data;//Read Burst Data, addr, size, burst, len, RID, RRESP, valid bytes + reg tmp_state; + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN)begin + rd_fifo_wr_ptr = 0; + rcount = 0; + tmp_state = 0; + end else begin + case(tmp_state) + 0 : begin + tmp_state = 0; + if(!temp_rd_intr_fifo_empty) begin + rd_intr_fifo.read_mem(temp_rd_data); + tmp_state = 1; + end + end + 1 : begin + tmp_state = 1; + if(!rdfifo_full(temp_rd_data[rd_afi_ln_msb:rd_afi_ln_lsb]+1)) begin + read_fifo[rd_fifo_wr_ptr[int_cntr_width-2:0]] = temp_rd_data; + rd_fifo_wr_ptr = rd_fifo_wr_ptr + 1; + rcount = rcount + temp_rd_data[rd_afi_ln_msb:rd_afi_ln_lsb]+1; /// Burst length + tmp_state = 0; + end + end + endcase + end + end + /*--------------------------------------------------------------------------------*/ + + reg[max_burst_bytes_width:0] rd_v_b; + reg[rd_afi_fifo_bits-1:0] tmp_fifo_rd; /// Data, addr, size, burst, len, RID, RRESP,valid_bytes + reg[(data_bus_width*axi_burst_len)-1:0] temp_read_data; + reg[(axi_rsp_width*axi_burst_len)-1:0] temp_read_rsp; + + /* Read Data Channel handshake */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN)begin + rd_fifo_rd_ptr = 0; + rd_latency_count = get_rd_lat_number(1); + rd_delayed = 0; + rresp_time_cnt = 0; + rd_v_b = 0; + end else begin + if(arvalid_flag[rresp_time_cnt] && ((($time - arvalid_receive_time[rresp_time_cnt])/s_aclk_period) >= rd_latency_count)) begin + rd_delayed = 1; + end + if(!read_fifo_empty && rd_delayed)begin + rd_delayed = 0; + arvalid_flag[rresp_time_cnt] = 1'b0; + tmp_fifo_rd = read_fifo[rd_fifo_rd_ptr[int_cntr_width-2:0]]; + rd_v_b = (tmp_fifo_rd[rd_afi_ln_msb : rd_afi_ln_lsb]+1)*(2**tmp_fifo_rd[rd_afi_siz_msb : rd_afi_siz_lsb]); + temp_read_data = tmp_fifo_rd[rd_afi_data_msb : rd_afi_data_lsb]; + if(tmp_fifo_rd[rd_afi_brst_msb : rd_afi_brst_lsb] === AXI_WRAP) begin + get_wrap_aligned_rd_data(aligned_rd_data, tmp_fifo_rd[rd_afi_addr_msb : rd_afi_addr_lsb], tmp_fifo_rd[rd_afi_data_msb : rd_afi_data_lsb], rd_v_b); + temp_read_data = aligned_rd_data; + end + temp_read_rsp = 0; + repeat(axi_burst_len) begin + temp_read_rsp = temp_read_rsp >> axi_rsp_width; + temp_read_rsp[(axi_rsp_width*axi_burst_len)-1:(axi_rsp_width*axi_burst_len)-axi_rsp_width] = tmp_fifo_rd[rd_afi_rsp_msb : rd_afi_rsp_lsb]; + end + slave.SEND_READ_BURST_RESP_CTRL(tmp_fifo_rd[rd_afi_id_msb : rd_afi_id_lsb], + tmp_fifo_rd[rd_afi_addr_msb : rd_afi_addr_lsb], + tmp_fifo_rd[rd_afi_ln_msb : rd_afi_ln_lsb], + tmp_fifo_rd[rd_afi_siz_msb : rd_afi_siz_lsb], + tmp_fifo_rd[rd_afi_brst_msb : rd_afi_brst_lsb], + temp_read_data, + temp_read_rsp); + rcount = rcount - (tmp_fifo_rd[rd_afi_ln_msb : rd_afi_ln_lsb]+ 1) ; + rresp_time_cnt = rresp_time_cnt+1; + rd_latency_count = get_rd_lat_number(1); + rd_fifo_rd_ptr = rd_fifo_rd_ptr+1; + end + end /// else + end /// always +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_apis.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_apis.v new file mode 100644 index 0000000..a12c3b1 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_apis.v @@ -0,0 +1,825 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_apis.v + * + * Date : 2012-11 + * + * Description : Set of Zynq BFM APIs that are used for writing tests. + * + *****************************************************************************/ + + /* API for setting the STOP_ON_ERROR*/ + task automatic set_stop_on_error; + input LEVEL; + begin + $display("[%0d] : %0s : Setting Stop On Error as %0b",$time, DISP_INFO, LEVEL); + STOP_ON_ERROR = LEVEL; + M_AXI_GP0.master.set_stop_on_error(LEVEL); + M_AXI_GP1.master.set_stop_on_error(LEVEL); + S_AXI_GP0.slave.set_stop_on_error(LEVEL); + S_AXI_GP1.slave.set_stop_on_error(LEVEL); + S_AXI_HP0.slave.set_stop_on_error(LEVEL); + S_AXI_HP1.slave.set_stop_on_error(LEVEL); + S_AXI_HP2.slave.set_stop_on_error(LEVEL); + S_AXI_HP3.slave.set_stop_on_error(LEVEL); + S_AXI_ACP.slave.set_stop_on_error(LEVEL); + M_AXI_GP0.STOP_ON_ERROR = LEVEL; + M_AXI_GP1.STOP_ON_ERROR = LEVEL; + S_AXI_GP0.STOP_ON_ERROR = LEVEL; + S_AXI_GP1.STOP_ON_ERROR = LEVEL; + S_AXI_HP0.STOP_ON_ERROR = LEVEL; + S_AXI_HP1.STOP_ON_ERROR = LEVEL; + S_AXI_HP2.STOP_ON_ERROR = LEVEL; + S_AXI_HP3.STOP_ON_ERROR = LEVEL; + S_AXI_ACP.STOP_ON_ERROR = LEVEL; + + end + endtask + + /* API for setting the verbosity for channel level info*/ + task automatic set_channel_level_info; + input [1023:0] name; + input LEVEL; + begin + $display("[%0d] : [%0s] : %0s Port/s : Setting Channel Level Info as %0b",$time, DISP_INFO, name , LEVEL); + case(name) + "M_AXI_GP0" : M_AXI_GP0.master.set_channel_level_info(LEVEL); + "M_AXI_GP1" : M_AXI_GP1.master.set_channel_level_info(LEVEL); + "S_AXI_GP0" : S_AXI_GP0.slave.set_channel_level_info(LEVEL); + "S_AXI_GP1" : S_AXI_GP1.slave.set_channel_level_info(LEVEL); + "S_AXI_HP0" : S_AXI_HP0.slave.set_channel_level_info(LEVEL); + "S_AXI_HP1" : S_AXI_HP1.slave.set_channel_level_info(LEVEL); + "S_AXI_HP2" : S_AXI_HP2.slave.set_channel_level_info(LEVEL); + "S_AXI_HP3" : S_AXI_HP3.slave.set_channel_level_info(LEVEL); + "S_AXI_ACP" : S_AXI_ACP.slave.set_channel_level_info(LEVEL); + "ALL" : begin + M_AXI_GP0.master.set_channel_level_info(LEVEL); + M_AXI_GP1.master.set_channel_level_info(LEVEL); + S_AXI_GP0.slave.set_channel_level_info(LEVEL); + S_AXI_GP1.slave.set_channel_level_info(LEVEL); + S_AXI_HP0.slave.set_channel_level_info(LEVEL); + S_AXI_HP1.slave.set_channel_level_info(LEVEL); + S_AXI_HP2.slave.set_channel_level_info(LEVEL); + S_AXI_HP3.slave.set_channel_level_info(LEVEL); + S_AXI_ACP.slave.set_channel_level_info(LEVEL); + end + default : $display("[%0d] : %0s : Invalid Port name (%0s)",$time, DISP_ERR, name); + endcase + end + endtask + + /* API for setting the verbosity for function level info*/ + task automatic set_function_level_info; + input [1023:0] name; + input LEVEL; + begin + $display("[%0d] : [%0s] : %0s Port/s : Setting Function Level Info as %0b",$time, DISP_INFO, name , LEVEL); + case(name) + "M_AXI_GP0" : M_AXI_GP0.master.set_function_level_info(LEVEL); + "M_AXI_GP1" : M_AXI_GP1.master.set_function_level_info(LEVEL); + "S_AXI_GP0" : S_AXI_GP0.slave.set_function_level_info(LEVEL); + "S_AXI_GP1" : S_AXI_GP1.slave.set_function_level_info(LEVEL); + "S_AXI_HP0" : S_AXI_HP0.slave.set_function_level_info(LEVEL); + "S_AXI_HP1" : S_AXI_HP1.slave.set_function_level_info(LEVEL); + "S_AXI_HP2" : S_AXI_HP2.slave.set_function_level_info(LEVEL); + "S_AXI_HP3" : S_AXI_HP3.slave.set_function_level_info(LEVEL); + "S_AXI_ACP" : S_AXI_ACP.slave.set_function_level_info(LEVEL); + "ALL" : begin + M_AXI_GP0.master.set_function_level_info(LEVEL); + M_AXI_GP1.master.set_function_level_info(LEVEL); + S_AXI_GP0.slave.set_function_level_info(LEVEL); + S_AXI_GP1.slave.set_function_level_info(LEVEL); + S_AXI_HP0.slave.set_function_level_info(LEVEL); + S_AXI_HP1.slave.set_function_level_info(LEVEL); + S_AXI_HP2.slave.set_function_level_info(LEVEL); + S_AXI_HP3.slave.set_function_level_info(LEVEL); + S_AXI_ACP.slave.set_function_level_info(LEVEL); + end + default : $display("[%0d] : %0s : Invalid Port name (%0s)",$time, DISP_ERR, name); + endcase + end + endtask + + /* API for setting the Message verbosity */ + task automatic set_debug_level_info; + input LEVEL; + begin + $display("[%0d] : %0s : Setting Debug Level Info as %0b",$time, DISP_INFO, LEVEL); + DEBUG_INFO = LEVEL; + M_AXI_GP0.DEBUG_INFO = LEVEL; + M_AXI_GP1.DEBUG_INFO = LEVEL; + S_AXI_GP0.DEBUG_INFO = LEVEL; + S_AXI_GP1.DEBUG_INFO = LEVEL; + S_AXI_HP0.DEBUG_INFO = LEVEL; + S_AXI_HP1.DEBUG_INFO = LEVEL; + S_AXI_HP2.DEBUG_INFO = LEVEL; + S_AXI_HP3.DEBUG_INFO = LEVEL; + S_AXI_ACP.DEBUG_INFO = LEVEL; + end + endtask + + /* API for setting ARQos Values */ + task automatic set_arqos; + input [1023:0] name; + input [axi_qos_width-1:0] value; + begin + $display("[%0d] : [%0s] : %0s Port/s : Setting AWQOS as %0b",$time, DISP_INFO, name , value); + case(name) + "S_AXI_GP0" : S_AXI_GP0.set_arqos(value); + "S_AXI_GP1" : S_AXI_GP1.set_arqos(value); + "S_AXI_HP0" : S_AXI_HP0.set_arqos(value); + "S_AXI_HP1" : S_AXI_HP1.set_arqos(value); + "S_AXI_HP2" : S_AXI_HP2.set_arqos(value); + "S_AXI_HP3" : S_AXI_HP3.set_arqos(value); + "S_AXI_ACP" : S_AXI_ACP.set_arqos(value); + default : $display("[%0d] : %0s : Invalid Slave Port name (%0s)",$time, DISP_ERR, name); + endcase + end + endtask + + /* API for setting AWQos Values */ + task automatic set_awqos; + input [1023:0] name; + input [axi_qos_width-1:0] value; + begin + $display("[%0d] : [%0s] : %0s Port/s : Setting ARQOS as %0b",$time, DISP_INFO, name , value); + case(name) + "S_AXI_GP0" : S_AXI_GP0.set_awqos(value); + "S_AXI_GP1" : S_AXI_GP1.set_awqos(value); + "S_AXI_HP0" : S_AXI_HP0.set_awqos(value); + "S_AXI_HP1" : S_AXI_HP1.set_awqos(value); + "S_AXI_HP2" : S_AXI_HP2.set_awqos(value); + "S_AXI_HP3" : S_AXI_HP3.set_awqos(value); + "S_AXI_ACP" : S_AXI_ACP.set_awqos(value); + default : $display("[%0d] : %0s : Invalid Slave Port (%0s)",$time, DISP_ERR, name); + endcase + end + endtask + + /* API for soft reset control */ + task automatic fpga_soft_reset; + input[data_width-1:0] reset_ctrl; + begin + if(DEBUG_INFO) $display("[%0d] : %0s : FPGA Soft Reset called for 0x%0h",$time, DISP_INFO, reset_ctrl); + gen_rst.fpga_soft_reset(reset_ctrl); + end + endtask + + /* API for pre-loading memories from (DDR/OCM model) */ + task automatic pre_load_mem_from_file; + input [(max_chars*8)-1:0] file_name; + input [addr_width-1:0] start_addr; + input [int_width-1:0] no_of_bytes; + reg [1:0] mem_type; + integer succ; + begin + mem_type = decode_address(start_addr); + succ = $fopen(file_name,"r"); + if(succ == 0) begin + $display("[%0d] : %0s : '%0s' doesn't exist. 'pre_load_mem_from_file' call failed ...\n",$time, DISP_ERR, file_name); + if(STOP_ON_ERROR) $stop; + end + else if(check_addr_aligned(start_addr)) begin + case(mem_type) + OCM_MEM : begin + if (!C_HIGH_OCM_EN) + ocmc.ocm.pre_load_mem_from_file(file_name,start_addr,no_of_bytes); + else + ocmc.ocm.pre_load_mem_from_file(file_name,(start_addr - high_ocm_start_addr),no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> OCM Memory is pre-loaded with %0d bytes of data from file %0s",$time, DISP_INFO, start_addr, no_of_bytes, file_name); + end + DDR_MEM : begin + ddrc.ddr.pre_load_mem_from_file(file_name,start_addr,no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> DDR Memory is pre-loaded with %0d bytes of data from file %0s",$time, DISP_INFO, start_addr, no_of_bytes, file_name); + end + default : begin + $display("[%0d] : %0s : Address(0x%0h) is out-of-range. 'pre_load_mem_from_file' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'pre_load_mem_from_file' call failed ...",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) + $stop; + end + end + endtask + + /* API for pre-loading memories (DDR/OCM) */ + task automatic pre_load_mem; + input [1:0] data_type; + input [addr_width-1:0] start_addr; + input [int_width-1:0] no_of_bytes; + reg [1:0] mem_type; + begin + mem_type = decode_address(start_addr); + if(check_addr_aligned(start_addr)) begin + case(mem_type) + OCM_MEM : begin + if (!C_HIGH_OCM_EN) + ocmc.ocm.pre_load_mem(data_type,start_addr,no_of_bytes); + else + ocmc.ocm.pre_load_mem(data_type,(start_addr - high_ocm_start_addr),no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> OCM Memory is pre-loaded with %0d bytes of data",$time, DISP_INFO, start_addr, no_of_bytes); + end + DDR_MEM : begin + ddrc.ddr.pre_load_mem(data_type,start_addr,no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> DDR Memory is pre-loaded with %0d bytes of data",$time, DISP_INFO, start_addr, no_of_bytes); + end + default : begin + $display("[%0d] : %0s : Address(0x%0h) is out-of-range. 'pre_load_mem' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'pre_load_mem' call failed ...",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + end + endtask + + /* API for backdoor write to memories (DDR/OCM) */ + task automatic write_mem; + input [max_burst_bits-1 :0] data; + input [addr_width-1:0] start_addr; + input [max_burst_bytes_width:0] no_of_bytes; + reg [1:0] mem_type; + integer succ; + begin + mem_type = decode_address(start_addr); + if(check_addr_aligned(start_addr)) begin + case(mem_type) + OCM_MEM : begin + if (!C_HIGH_OCM_EN) + ocmc.ocm.write_mem(data,start_addr,no_of_bytes); + else + ocmc.ocm.write_mem(data,(start_addr - high_ocm_start_addr),no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> Write %0d bytes of data to OCM Memory",$time, DISP_INFO, start_addr, no_of_bytes); + end + DDR_MEM : begin + ddrc.ddr.write_mem(data,start_addr,no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> Write %0d bytes of data to DDR Memory",$time, DISP_INFO, start_addr, no_of_bytes); + end + default : begin + $display("[%0d] : %0s : Address(0x%0h) is out-of-range. 'write_mem' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'write_mem' call failed ...",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) + $stop; + end + end + endtask + + /* read_memory */ + task automatic read_mem; + input [addr_width-1:0] start_addr; + input [max_burst_bytes_width :0] no_of_bytes; + output[max_burst_bits-1 :0] data; + reg [1:0] mem_type; + integer succ; + begin + mem_type = decode_address(start_addr); + if(check_addr_aligned(start_addr)) begin + case(mem_type) + OCM_MEM : begin + if (!C_HIGH_OCM_EN) + ocmc.ocm.read_mem(data,start_addr,no_of_bytes); + else + ocmc.ocm.read_mem(data,(start_addr - high_ocm_start_addr),no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> Read %0d bytes of data from OCM Memory ",$time, DISP_INFO, start_addr, no_of_bytes); + end + DDR_MEM : begin + ddrc.ddr.read_mem(data,start_addr,no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> Read %0d bytes of data from DDR Memory",$time, DISP_INFO, start_addr, no_of_bytes); + end + default : begin + $display("[%0d] : %0s : Address(0x%0h) is out-of-range. 'read_mem' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'read_mem' call failed ...",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) + $stop; + end + end + endtask + + /* API for backdoor read to memories (DDR/OCM) */ + task automatic peek_mem_to_file; + input [(max_chars*8)-1:0] file_name; + input [addr_width-1:0] start_addr; + input [int_width-1:0] no_of_bytes; + reg [1:0] mem_type; + integer succ; + begin + mem_type = decode_address(start_addr); + if(check_addr_aligned(start_addr)) begin + case(mem_type) + OCM_MEM : begin + if (!C_HIGH_OCM_EN) + ocmc.ocm.peek_mem_to_file(file_name,start_addr,no_of_bytes); + else + ocmc.ocm.peek_mem_to_file(file_name,(start_addr - high_ocm_start_addr),no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> Peeked %0d bytes of data from OCM Memory to file %0s",$time, DISP_INFO, start_addr, no_of_bytes, file_name); + end + DDR_MEM : begin + ddrc.ddr.peek_mem_to_file(file_name,start_addr,no_of_bytes); + if(DEBUG_INFO) + $display("[%0d] : %0s : Starting Address(0x%0h) -> Peeked %0d bytes of data from DDR Memory to file %0s",$time, DISP_INFO, start_addr, no_of_bytes, file_name); + end + default : begin + $display("[%0d] : %0s : Address(0x%0h) is out-of-range. 'peek_mem_to_file' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'peek_mem_to_file' call failed ...",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) + $stop; + end + end + endtask + + /* API to read interrupt status */ + task automatic read_interrupt; + output[irq_width-1:0] irq_status; + begin + irq_status = IRQ_F2P; + if(DEBUG_INFO) $display("[%0d] : %0s : Reading Interrupt Status as 0x%0h",$time, DISP_INFO, irq_status); + end + endtask + + /* API to wait on interrup */ + task automatic wait_interrupt; + input [3:0] irq; + output[irq_width-1:0] irq_status; + begin + if(DEBUG_INFO) $display("[%0d] : %0s : Waiting on Interrupt irq[%0d]",$time, DISP_INFO, irq); + + case(irq) + 0 : wait(IRQ_F2P[0] === 1'b1); + 1 : wait(IRQ_F2P[1] === 1'b1); + 2 : wait(IRQ_F2P[2] === 1'b1); + 3 : wait(IRQ_F2P[3] === 1'b1); + 4 : wait(IRQ_F2P[4] === 1'b1); + 5 : wait(IRQ_F2P[5] === 1'b1); + 6 : wait(IRQ_F2P[6] === 1'b1); + 7 : wait(IRQ_F2P[7] === 1'b1); + 8 : wait(IRQ_F2P[8] === 1'b1); + 8 : wait(IRQ_F2P[9] === 1'b1); + 10: wait(IRQ_F2P[10] === 1'b1); + 11: wait(IRQ_F2P[11] === 1'b1); + 12: wait(IRQ_F2P[12] === 1'b1); + 13: wait(IRQ_F2P[13] === 1'b1); + 14: wait(IRQ_F2P[14] === 1'b1); + 15: wait(IRQ_F2P[15] === 1'b1); + default : $display("[%0d] : %0s : Only 16 Interrupt lines (irq_fp0:irq_fp15) are supported",$time, DISP_ERR); + endcase + if(DEBUG_INFO) $display("[%0d] : %0s : Received Interrupt irq[%0d]",$time, DISP_INFO, irq); + irq_status = IRQ_F2P; + end + endtask + + /* API to wait for a certain match pattern*/ + task automatic wait_mem_update; + input[addr_width-1:0] address; + input[data_width-1:0] data_in; + output[data_width-1:0] data_out; + reg[data_width-1:0] datao; + begin + if(mem_update_key) begin + mem_update_key = 0; + if(DEBUG_INFO) $display("[%0d] : %0s : 'wait_mem_update' called for Address(0x%0h) , Match Pattern(0x%0h) \n",$time, DISP_INFO, address, data_in); + if(check_addr_aligned(address)) begin + ddrc.ddr.wait_mem_update(address, datao); + if(datao != data_in)begin + $display("[%0d] : %0s : Address(0x%0h) -> DATA PATTERN MATCH FAILED, Expected data = 0x%0h, Received data = 0x%0h \n",$time, DISP_ERR, address, data_in,datao); + $stop; + end else + $display("[%0d] : %0s : Address(0x%0h) -> DATA PATTERN(0x%0h) MATCHED \n",$time, DISP_INFO, address, data_in); + data_out = datao; + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'wait_mem_update' call failed ...\n",$time, DISP_ERR, address); + if(STOP_ON_ERROR) $stop; + end + mem_update_key = 1; + end else + $display("[%0d] : %0s : One instance of 'wait_mem_update' thread is already running.Only one instance can be called at a time ...\n",$time, DISP_WARN); + end + endtask + + + /* API to initiate a WRITE transaction on one of the AXI-Master ports*/ + task automatic write_from_file; + input [(max_chars*8)-1:0] file_name; + input [addr_width-1:0] start_addr; + input [int_width-1:0] wr_size; + output [axi_rsp_width-1:0] response; + integer succ; + begin + succ = $fopen(file_name,"r"); + if(succ == 0) begin + $display("[%0d] : %0s : '%0s' doesn't exist. 'write_from_file' call failed ...\n",$time, DISP_ERR, file_name); + if(STOP_ON_ERROR) $stop; + end + else if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(check_addr_aligned(start_addr)) begin + $fclose(succ); + case(start_addr[31:30]) + GP_M0 : begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes from file %0s",$time, DISP_INFO, start_addr, wr_size, file_name); + M_AXI_GP0.write_from_file(file_name,start_addr,wr_size,response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Write for Starting Address(0x%0h)",$time, DISP_INFO, start_addr); + end + GP_M1 : begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes from file %0s",$time, DISP_INFO, start_addr, wr_size, file_name); + M_AXI_GP1.write_from_file(file_name,start_addr,wr_size,response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Write for Starting Address(0x%0h)",$time, DISP_INFO, start_addr); + end + default : begin + $display("[%0d] : %0s : Invalid Address(0x%0h) 'write_from_file' call failed ...\n",$time, DISP_ERR, start_addr); + end + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'write_from_file' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + end + endtask + + /* API to initiate a READ transaction on one of the AXI-Master ports*/ + task automatic read_to_file; + input [(max_chars*8)-1:0] file_name; + input [addr_width-1:0] start_addr; + input [int_width-1:0] rd_size; + output [axi_rsp_width-1:0] response; + begin + if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range\n",$time, DISP_ERR , start_addr); + if(STOP_ON_ERROR) $stop; + end else if(check_addr_aligned(start_addr)) begin + case(start_addr[31:30]) + GP_M0 : begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Read -> %0d bytes to file %0s",$time, DISP_INFO, start_addr, rd_size, file_name); + M_AXI_GP0.read_to_file(file_name,start_addr,rd_size,response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Read for Starting Address(0x%0h)",$time, DISP_INFO, start_addr); + end + GP_M1 : begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Read -> %0d bytes to file %0s",$time, DISP_INFO, start_addr, rd_size, file_name); + M_AXI_GP1.read_to_file(file_name,start_addr,rd_size,response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Read for Starting Address(0x%0h)",$time, DISP_INFO, start_addr); + end + default : $display("[%0d] : %0s : Invalid Address(0x%0h) 'read_to_file' call failed ...\n",$time, DISP_ERR, start_addr); + endcase + end else begin + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'read_to_file' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end + end + endtask + + /* API to initiate a WRITE transaction(<= 128 bytes) on one of the AXI-Master ports*/ + task automatic write_data; + input [addr_width-1:0] start_addr; + input [max_transfer_bytes_width:0] wr_size; + input [(max_transfer_bytes*8)-1:0] w_data; + output [axi_rsp_width-1:0] response; + reg[511:0] rsp; + begin + if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range. 'write_data' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(wr_size > max_transfer_bytes) begin + $display("[%0d] : %0s : Byte Size supported is 128 bytes only. 'write_data' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(start_addr[31:30] === GP_M0) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes",$time, DISP_INFO, start_addr, wr_size); + M_AXI_GP0.write_data(start_addr,wr_size,w_data,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Write for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else if(start_addr[31:30] === GP_M1) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes",$time, DISP_INFO, start_addr, wr_size); + M_AXI_GP1.write_data(start_addr,wr_size,w_data,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Write for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else + $display("[%0d] : %0s : Invalid Address(0x%0h) 'write_data' call failed ...\n",$time, DISP_ERR, start_addr); + end + endtask + + /* API to initiate a READ transaction(<= 128 bytes) on one of the AXI-Master ports*/ + task automatic read_data; + input [addr_width-1:0] start_addr; + input [max_transfer_bytes_width:0] rd_size; + output[(max_transfer_bytes*8)-1:0] rd_data; + output [axi_rsp_width-1:0] response; + reg[511:0] rsp; + begin + if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range 'read_data' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(rd_size > max_transfer_bytes) begin + $display("[%0d] : %0s : Byte Size supported is 128 bytes only.'read_data' call failed ... \n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(start_addr[31:30] === GP_M0) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Read -> %0d bytes",$time, DISP_INFO, start_addr, rd_size); + M_AXI_GP0.read_data(start_addr,rd_size,rd_data,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Read for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else if(start_addr[31:30] === GP_M1) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Read -> %0d bytes",$time, DISP_INFO, start_addr, rd_size); + M_AXI_GP1.read_data(start_addr,rd_size,rd_data,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Read for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else + $display("[%0d] : %0s : Invalid Address(0x%0h) 'read_data' call failed ...\n",$time, DISP_ERR, start_addr); + end + endtask + +/* Hooks to call to BFM APIs */ + task automatic write_burst(input [addr_width-1:0] start_addr,input [axi_len_width-1:0] len,input [axi_size_width-1:0] siz,input [axi_brst_type_width-1:0] burst,input [axi_lock_width-1:0] lck,input [axi_cache_width-1:0] cache,input [axi_prot_width-1:0] prot,input [(axi_mgp_data_width*axi_burst_len)-1:0] data,input integer datasize, output [axi_rsp_width-1:0] response); + reg[511:0] rsp; + begin + if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range. 'write_burst' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(start_addr[31:30] === GP_M0) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes",$time, DISP_INFO, start_addr, datasize); + M_AXI_GP0.write_burst(start_addr,len,siz,burst,lck,cache,prot,data,datasize,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Write for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else if(start_addr[31:30] === GP_M1) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes",$time, DISP_INFO, start_addr, datasize); + M_AXI_GP1.write_burst(start_addr,len,siz,burst,lck,cache,prot,data,datasize,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Write for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else + $display("[%0d] : %0s : Invalid Address(0x%0h) 'write_burst' call failed ... \n",$time, DISP_ERR, start_addr); + end + endtask + + task automatic write_burst_concurrent(input [addr_width-1:0] start_addr,input [axi_len_width-1:0] len,input [axi_size_width-1:0] siz,input [axi_brst_type_width-1:0] burst,input [axi_lock_width-1:0] lck,input [axi_cache_width-1:0] cache,input [axi_prot_width-1:0] prot,input [(axi_mgp_data_width*axi_burst_len)-1:0] data,input integer datasize, output [axi_rsp_width-1:0] response); + reg[511:0] rsp; /// string for response + begin + if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range. 'write_burst_concurrent' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(start_addr[31:30] === GP_M0) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes",$time, DISP_INFO, start_addr, datasize); + M_AXI_GP0.write_burst_concurrent(start_addr,len,siz,burst,lck,cache,prot,data,datasize,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Write for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else if(start_addr[31:30] === GP_M1) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Write -> %0d bytes",$time, DISP_INFO, start_addr, datasize); + M_AXI_GP1.write_burst_concurrent(start_addr,len,siz,burst,lck,cache,prot,data,datasize,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Write for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else + $display("[%0d] : %0s : Invalid Address(0x%0h) 'write_burst_concurrent' call failed ... \n",$time, DISP_ERR, start_addr); + end + endtask + + task automatic read_burst; + input [addr_width-1:0] start_addr; + input [axi_len_width-1:0] len; + input [axi_size_width-1:0] siz; + input [axi_brst_type_width-1:0] burst; + input [axi_lock_width-1:0] lck; + input [axi_cache_width-1:0] cache; + input [axi_prot_width-1:0] prot; + output [(axi_mgp_data_width*axi_burst_len)-1:0] data; + output [(axi_rsp_width*axi_burst_len)-1:0] response; + reg[511:0] rsp; + begin + if(!check_master_address(start_addr)) begin + $display("[%0d] : %0s : Master Address(0x%0h) is out of range. 'read_burst' call failed ...\n",$time, DISP_ERR, start_addr); + if(STOP_ON_ERROR) $stop; + end else if(start_addr[31:30] === GP_M0) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Starting Address(0x%0h) -> AXI Read",$time, DISP_INFO, start_addr); + M_AXI_GP0.read_burst(start_addr,len,siz,burst,lck,cache,prot,data,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : Done AXI Read for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else if(start_addr[31:30] === GP_M1) begin + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Starting Address(0x%0h) -> AXI Read",$time, DISP_INFO, start_addr); + M_AXI_GP1.read_burst(start_addr,len,siz,burst,lck,cache,prot,data,response); + rsp = get_resp(response); + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : Done AXI Read for Starting Address(0x%0h) with Response '%0s'",$time, DISP_INFO, start_addr, rsp); + end else + $display("[%0d] : %0s : Invalid Address(0x%0h) 'read_burst' call failed ... \n",$time, DISP_ERR, start_addr); + end + endtask + + task automatic wait_reg_update; + input [addr_width-1:0] addr; + input [data_width-1:0] data_i; + input [data_width-1:0] mask_i; + input [int_width-1:0] time_interval; + input [int_width-1:0] time_out; + output [data_width-1:0] data_o; + + reg upd_done0; + reg upd_done1; + begin + if(!check_master_address(addr)) begin + $display("[%0d] : %0s : Address(0x%0h) is out of range. 'wait_reg_update' call failed ...\n",$time, DISP_ERR, addr); + if(STOP_ON_ERROR) $stop; + end else if(addr[31:30] === GP_M0) begin + if(reg_update_key_0) begin + reg_update_key_0 = 0; + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP0 : %0s : 'wait_reg_update' called for Address(0x%0h), Mask(0x%0h), Match Pattern(0x%0h) \n ",$time, DISP_INFO, addr, mask_i, data_i); + M_AXI_GP0.wait_reg_update(addr, data_i, mask_i, time_interval, time_out, data_o, upd_done0); + if(DEBUG_INFO && upd_done0) + $display("[%0d] : M_AXI_GP0 : %0s : Register mapped at Address(0x%0h) is updated ",$time, DISP_INFO, addr); + reg_update_key_0 = 1; + end else + $display("[%0d] : M_AXI_GP0 : One instance of 'wait_reg_update' thread is already running.Only one instance can be called at a time ...\n",$time, DISP_WARN); + end else if(addr[31:30] === GP_M1) begin + if(reg_update_key_1) begin + reg_update_key_1 = 0; + if(DEBUG_INFO) + $display("[%0d] : M_AXI_GP1 : %0s : 'wait_reg_update' called for Address(0x%0h), Mask(0x%0h), Match Pattern(0x%0h) \n ",$time, DISP_INFO, addr, mask_i, data_i); + M_AXI_GP1.wait_reg_update(addr, data_i, mask_i, time_interval, time_out, data_o, upd_done1); + if(DEBUG_INFO && upd_done1) + $display("[%0d] : M_AXI_GP1 : %0s : Register mapped at Address(0x%0h) is updated ",$time, DISP_INFO, addr); + reg_update_key_1 = 1; + end else + $display("[%0d] : M_AXI_GP1 : One instance of 'wait_reg_update' thread is already running.Only one instance can be called at a time ...\n",$time, DISP_WARN); + end else + $display("[%0d] : %0s : Invalid Address(0x%0h) 'wait_reg_update' call failed ... \n",$time, DISP_ERR, addr); + end + endtask + +/* API to read register map */ + task read_register_map; + input [addr_width-1:0] start_addr; + input [max_regs_width:0] no_of_registers; + output[max_burst_bits-1 :0] data; + reg [max_regs_width:0] no_of_regs; + begin + no_of_regs = no_of_registers; + if(no_of_registers > 32) begin + $display("[%0d] : %0s : No_of_Registers(%0d) exceeds the supported number (32).\n Only 32 registers will be read.",$time, DISP_ERR, start_addr); + no_of_regs = 32; + end + if(check_addr_aligned(start_addr)) begin + if(decode_address(start_addr) == REG_MEM) begin + if(DEBUG_INFO) $display("[%0d] : %0s : Reading Registers starting address (0x%0h) -> %0d registers",$time, DISP_INFO, start_addr,no_of_regs ); + regc.regm.read_reg_mem(data,start_addr,no_of_regs*4); /// as each register is of 4 bytes + if(DEBUG_INFO) $display("[%0d] : %0s : DONE -> Reading Registers starting address (0x%0h), Data returned(0x%0h)",$time, DISP_INFO, start_addr, data ); + end else begin + $display("[%0d] : %0s : Invalid Address(0x%0h) for Register Read. 'read_register_map' call failed ...",$time, DISP_ERR, start_addr); + end + end else begin + data = 0; + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'read_register_map' call failed ...",$time, DISP_ERR, start_addr); + end + end + endtask + +/* API to read single register */ + task read_register; + input [addr_width-1:0] addr; + output[data_width-1:0] data; + begin + if(check_addr_aligned(addr)) begin + if(decode_address(addr) == REG_MEM) begin + if(DEBUG_INFO) $display("[%0d] : %0s : Reading Register (0x%0h) ",$time, DISP_INFO, addr ); + regc.regm.get_data(addr >> 2, data); + if(DEBUG_INFO) $display("[%0d] : %0s : DONE -> Reading Register (0x%0h), Data returned(0x%0h)",$time, DISP_INFO, addr, data ); + end else begin + $display("[%0d] : %0s : Invalid Address(0x%0h) for Register Read. 'read_register' call failed ...",$time, DISP_ERR, addr); + end + end else begin + data = 0; + $display("[%0d] : %0s : Address(0x%0h) has to be 32-bit aligned. 'read_register' call failed ...",$time, DISP_ERR, addr); + end + + end + endtask + + /* API to set the AXI-Slave profile*/ + task automatic set_slave_profile; + input[1023:0] name; + input[1:0] latency ; + begin + if(DEBUG_INFO) $display("[%0d] : %0s : %0s Port/s : Setting Slave profile",$time, DISP_INFO, name); + case(name) + "S_AXI_GP0" : S_AXI_GP0.set_latency_type(latency); + "S_AXI_GP1" : S_AXI_GP1.set_latency_type(latency); + "S_AXI_HP0" : S_AXI_HP0.set_latency_type(latency); + "S_AXI_HP1" : S_AXI_HP1.set_latency_type(latency); + "S_AXI_HP2" : S_AXI_HP2.set_latency_type(latency); + "S_AXI_HP3" : S_AXI_HP3.set_latency_type(latency); + "S_AXI_ACP" : S_AXI_ACP.set_latency_type(latency); + "ALL" : begin + S_AXI_GP0.set_latency_type(latency); + S_AXI_GP1.set_latency_type(latency); + S_AXI_HP0.set_latency_type(latency); + S_AXI_HP1.set_latency_type(latency); + S_AXI_HP2.set_latency_type(latency); + S_AXI_HP3.set_latency_type(latency); + S_AXI_ACP.set_latency_type(latency); + end + endcase + end + endtask + + +/*------------------------------ LOCAL APIs ------------------------------------------------ */ + + /* local API for address decoding*/ + function automatic [1:0] decode_address; + input [addr_width-1:0] address; + begin + if(!C_HIGH_OCM_EN && (address < ocm_end_addr || address >= ocm_low_addr )) + decode_address = OCM_MEM; /// OCM + else if(address >= ddr_start_addr && address <= ddr_end_addr) + decode_address = DDR_MEM; /// DDR + else if(C_HIGH_OCM_EN && address >= high_ocm_start_addr) + decode_address = OCM_MEM; /// OCM + else if(address >= reg_start_addr && reg_start_addr <= reg_end_addr) + decode_address = REG_MEM; /// Register Map + else + decode_address = INVALID_MEM_TYPE; /// ERROR in Address + end + endfunction + + /* local API for checking address is 32-bit (4-byte) aligned */ + function automatic check_addr_aligned; + input [addr_width-1:0] address; + begin + if((address%4) !=0 ) begin // + check_addr_aligned = 0; ///not_aligned + end else + check_addr_aligned = 1; + end + endfunction + + /* local API to check address for GP Masters */ + function check_master_address; + input [addr_width-1:0] address; + begin + if(address >= m_axi_gp0_baseaddr && address <= m_axi_gp0_highaddr) + check_master_address = 1'b1; + else if(address >= m_axi_gp1_baseaddr && address <= m_axi_gp1_highaddr) + check_master_address = 1'b1; + else + check_master_address = 1'b0; /// ERROR in Address + end + endfunction + + /* Response decode */ + function automatic [511:0] get_resp; + input[axi_rsp_width-1:0] response; + begin + case(response) + 2'b00 : get_resp = "OKAY"; + 2'b01 : get_resp = "EXOKAY"; + 2'b10 : get_resp = "SLVERR"; + 2'b11 : get_resp = "DECERR"; + endcase + end + endfunction diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp0_1.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp0_1.v new file mode 100644 index 0000000..c5577b7 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp0_1.v @@ -0,0 +1,151 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_arb_hp0_1.v + * + * Date : 2012-11 + * + * Description : Module that arbitrates between RD/WR requests from 2 ports. + * Used for modelling the Top_Interconnect switch. + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_arb_hp0_1( + sw_clk, + rstn, + w_qos_hp0, + r_qos_hp0, + w_qos_hp1, + r_qos_hp1, + + wr_ack_ddr_hp0, + wr_data_hp0, + wr_addr_hp0, + wr_bytes_hp0, + wr_dv_ddr_hp0, + rd_req_ddr_hp0, + rd_addr_hp0, + rd_bytes_hp0, + rd_data_ddr_hp0, + rd_dv_ddr_hp0, + + wr_ack_ddr_hp1, + wr_data_hp1, + wr_addr_hp1, + wr_bytes_hp1, + wr_dv_ddr_hp1, + rd_req_ddr_hp1, + rd_addr_hp1, + rd_bytes_hp1, + rd_data_ddr_hp1, + rd_dv_ddr_hp1, + + ddr_wr_ack, + ddr_wr_dv, + ddr_rd_req, + ddr_rd_dv, + ddr_rd_qos, + ddr_wr_qos, + + ddr_wr_addr, + ddr_wr_data, + ddr_wr_bytes, + ddr_rd_addr, + ddr_rd_data, + ddr_rd_bytes + +); +`include "processing_system7_bfm_v2_0_local_params.v" +input sw_clk; +input rstn; +input [axi_qos_width-1:0] w_qos_hp0; +input [axi_qos_width-1:0] r_qos_hp0; +input [axi_qos_width-1:0] w_qos_hp1; +input [axi_qos_width-1:0] r_qos_hp1; +input [axi_qos_width-1:0] ddr_rd_qos; +input [axi_qos_width-1:0] ddr_wr_qos; + +output wr_ack_ddr_hp0; +input [max_burst_bits-1:0] wr_data_hp0; +input [addr_width-1:0] wr_addr_hp0; +input [max_burst_bytes_width:0] wr_bytes_hp0; +output wr_dv_ddr_hp0; + +input rd_req_ddr_hp0; +input [addr_width-1:0] rd_addr_hp0; +input [max_burst_bytes_width:0] rd_bytes_hp0; +output [max_burst_bits-1:0] rd_data_ddr_hp0; +output rd_dv_ddr_hp0; + +output wr_ack_ddr_hp1; +input [max_burst_bits-1:0] wr_data_hp1; +input [addr_width-1:0] wr_addr_hp1; +input [max_burst_bytes_width:0] wr_bytes_hp1; +output wr_dv_ddr_hp1; + +input rd_req_ddr_hp1; +input [addr_width-1:0] rd_addr_hp1; +input [max_burst_bytes_width:0] rd_bytes_hp1; +output [max_burst_bits-1:0] rd_data_ddr_hp1; +output rd_dv_ddr_hp1; + +input ddr_wr_ack; +output ddr_wr_dv; +output [addr_width-1:0]ddr_wr_addr; +output [max_burst_bits-1:0]ddr_wr_data; +output [max_burst_bytes_width:0]ddr_wr_bytes; + +input ddr_rd_dv; +input [max_burst_bits-1:0] ddr_rd_data; +output ddr_rd_req; +output [addr_width-1:0] ddr_rd_addr; +output [max_burst_bytes_width:0] ddr_rd_bytes; + + + + +processing_system7_bfm_v2_0_arb_wr ddr_hp_wr( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(w_qos_hp0), + .qos2(w_qos_hp1), + .prt_dv1(wr_dv_ddr_hp0), + .prt_dv2(wr_dv_ddr_hp1), + .prt_data1(wr_data_hp0), + .prt_data2(wr_data_hp1), + .prt_addr1(wr_addr_hp0), + .prt_addr2(wr_addr_hp1), + .prt_bytes1(wr_bytes_hp0), + .prt_bytes2(wr_bytes_hp1), + .prt_ack1(wr_ack_ddr_hp0), + .prt_ack2(wr_ack_ddr_hp1), + .prt_req(ddr_wr_dv), + .prt_qos(ddr_wr_qos), + .prt_data(ddr_wr_data), + .prt_addr(ddr_wr_addr), + .prt_bytes(ddr_wr_bytes), + .prt_ack(ddr_wr_ack) +); + +processing_system7_bfm_v2_0_arb_rd ddr_hp_rd( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(r_qos_hp0), + .qos2(r_qos_hp1), + .prt_req1(rd_req_ddr_hp0), + .prt_req2(rd_req_ddr_hp1), + .prt_data1(rd_data_ddr_hp0), + .prt_data2(rd_data_ddr_hp1), + .prt_addr1(rd_addr_hp0), + .prt_addr2(rd_addr_hp1), + .prt_bytes1(rd_bytes_hp0), + .prt_bytes2(rd_bytes_hp1), + .prt_dv1(rd_dv_ddr_hp0), + .prt_dv2(rd_dv_ddr_hp1), + .prt_qos(ddr_rd_qos), + .prt_req(ddr_rd_req), + .prt_data(ddr_rd_data), + .prt_addr(ddr_rd_addr), + .prt_bytes(ddr_rd_bytes), + .prt_dv(ddr_rd_dv) +); + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp2_3.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp2_3.v new file mode 100644 index 0000000..809d558 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_hp2_3.v @@ -0,0 +1,151 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_arb_hp2_3.v + * + * Date : 2012-11 + * + * Description : Module that arbitrates between RD/WR requests from 2 ports. + * Used for modelling the Top_Interconnect switch. + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_arb_hp2_3( + sw_clk, + rstn, + w_qos_hp2, + r_qos_hp2, + w_qos_hp3, + r_qos_hp3, + + wr_ack_ddr_hp2, + wr_data_hp2, + wr_addr_hp2, + wr_bytes_hp2, + wr_dv_ddr_hp2, + rd_req_ddr_hp2, + rd_addr_hp2, + rd_bytes_hp2, + rd_data_ddr_hp2, + rd_dv_ddr_hp2, + + wr_ack_ddr_hp3, + wr_data_hp3, + wr_addr_hp3, + wr_bytes_hp3, + wr_dv_ddr_hp3, + rd_req_ddr_hp3, + rd_addr_hp3, + rd_bytes_hp3, + rd_data_ddr_hp3, + rd_dv_ddr_hp3, + + ddr_wr_ack, + ddr_wr_dv, + ddr_rd_req, + ddr_rd_dv, + ddr_rd_qos, + ddr_wr_qos, + + ddr_wr_addr, + ddr_wr_data, + ddr_wr_bytes, + ddr_rd_addr, + ddr_rd_data, + ddr_rd_bytes + +); +`include "processing_system7_bfm_v2_0_local_params.v" +input sw_clk; +input rstn; +input [axi_qos_width-1:0] w_qos_hp2; +input [axi_qos_width-1:0] r_qos_hp2; +input [axi_qos_width-1:0] w_qos_hp3; +input [axi_qos_width-1:0] r_qos_hp3; +input [axi_qos_width-1:0] ddr_rd_qos; +input [axi_qos_width-1:0] ddr_wr_qos; + +output wr_ack_ddr_hp2; +input [max_burst_bits-1:0] wr_data_hp2; +input [addr_width-1:0] wr_addr_hp2; +input [max_burst_bytes_width:0] wr_bytes_hp2; +output wr_dv_ddr_hp2; + +input rd_req_ddr_hp2; +input [addr_width-1:0] rd_addr_hp2; +input [max_burst_bytes_width:0] rd_bytes_hp2; +output [max_burst_bits-1:0] rd_data_ddr_hp2; +output rd_dv_ddr_hp2; + +output wr_ack_ddr_hp3; +input [max_burst_bits-1:0] wr_data_hp3; +input [addr_width-1:0] wr_addr_hp3; +input [max_burst_bytes_width:0] wr_bytes_hp3; +output wr_dv_ddr_hp3; + +input rd_req_ddr_hp3; +input [addr_width-1:0] rd_addr_hp3; +input [max_burst_bytes_width:0] rd_bytes_hp3; +output [max_burst_bits-1:0] rd_data_ddr_hp3; +output rd_dv_ddr_hp3; + +input ddr_wr_ack; +output ddr_wr_dv; +output [addr_width-1:0]ddr_wr_addr; +output [max_burst_bits-1:0]ddr_wr_data; +output [max_burst_bytes_width:0]ddr_wr_bytes; + +input ddr_rd_dv; +input [max_burst_bits-1:0] ddr_rd_data; +output ddr_rd_req; +output [addr_width-1:0] ddr_rd_addr; +output [max_burst_bytes_width:0] ddr_rd_bytes; + + + + +processing_system7_bfm_v2_0_arb_wr ddr_hp_wr( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(w_qos_hp2), + .qos2(w_qos_hp3), + .prt_dv1(wr_dv_ddr_hp2), + .prt_dv2(wr_dv_ddr_hp3), + .prt_data1(wr_data_hp2), + .prt_data2(wr_data_hp3), + .prt_addr1(wr_addr_hp2), + .prt_addr2(wr_addr_hp3), + .prt_bytes1(wr_bytes_hp2), + .prt_bytes2(wr_bytes_hp3), + .prt_ack1(wr_ack_ddr_hp2), + .prt_ack2(wr_ack_ddr_hp3), + .prt_req(ddr_wr_dv), + .prt_qos(ddr_wr_qos), + .prt_data(ddr_wr_data), + .prt_addr(ddr_wr_addr), + .prt_bytes(ddr_wr_bytes), + .prt_ack(ddr_wr_ack) +); + +processing_system7_bfm_v2_0_arb_rd ddr_hp_rd( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(r_qos_hp2), + .qos2(r_qos_hp3), + .prt_req1(rd_req_ddr_hp2), + .prt_req2(rd_req_ddr_hp3), + .prt_data1(rd_data_ddr_hp2), + .prt_data2(rd_data_ddr_hp3), + .prt_addr1(rd_addr_hp2), + .prt_addr2(rd_addr_hp3), + .prt_bytes1(rd_bytes_hp2), + .prt_bytes2(rd_bytes_hp3), + .prt_dv1(rd_dv_ddr_hp2), + .prt_dv2(rd_dv_ddr_hp3), + .prt_req(ddr_rd_req), + .prt_qos(ddr_rd_qos), + .prt_data(ddr_rd_data), + .prt_addr(ddr_rd_addr), + .prt_bytes(ddr_rd_bytes), + .prt_dv(ddr_rd_dv) +); + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd.v new file mode 100644 index 0000000..7c791e5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd.v @@ -0,0 +1,154 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_arb_rd.v + * + * Date : 2012-11 + * + * Description : Module that arbitrates between 2 read requests from 2 ports. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_arb_rd( + rstn, + sw_clk, + + qos1, + qos2, + + prt_req1, + prt_req2, + prt_bytes1, + prt_bytes2, + prt_addr1, + prt_addr2, + prt_data1, + prt_data2, + prt_dv1, + prt_dv2, + + prt_req, + prt_qos, + prt_addr, + prt_bytes, + prt_data, + prt_dv + +); +`include "processing_system7_bfm_v2_0_local_params.v" +input rstn, sw_clk; +input [axi_qos_width-1:0] qos1,qos2; +input prt_req1, prt_req2; +input [addr_width-1:0] prt_addr1, prt_addr2; +input [max_burst_bytes_width:0] prt_bytes1, prt_bytes2; +output reg prt_dv1, prt_dv2; +output reg [max_burst_bits-1:0] prt_data1,prt_data2; + +output reg prt_req; +output reg [axi_qos_width-1:0] prt_qos; +output reg [addr_width-1:0] prt_addr; +output reg [max_burst_bytes_width:0] prt_bytes; +input [max_burst_bits-1:0] prt_data; +input prt_dv; + +parameter wait_req = 2'b00, serv_req1 = 2'b01, serv_req2 = 2'b10,wait_dv_low = 2'b11; +reg [1:0] state; + +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + state = wait_req; + prt_req = 1'b0; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_qos = 0; +end else begin + case(state) + wait_req:begin + state = wait_req; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_req = 0; + if(prt_req1 && !prt_req2) begin + state = serv_req1; + prt_req = 1; + prt_qos = qos1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(!prt_req1 && prt_req2) begin + state = serv_req2; + prt_req = 1; + prt_qos = qos2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_req1 && prt_req2) begin + if(qos1 > qos2) begin + prt_req = 1; + prt_qos = qos1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end else if(qos1 < qos2) begin + prt_req = 1; + prt_addr = prt_addr2; + prt_qos = qos2; + prt_bytes = prt_bytes2; + state = serv_req2; + end else begin + prt_req = 1; + prt_qos = qos1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end + end + end + serv_req1:begin + state = serv_req1; + prt_dv2 = 1'b0; + if(prt_dv) begin + prt_dv1 = 1'b1; + prt_data1 = prt_data; + prt_req = 0; + if(prt_req2) begin + prt_req = 1; + prt_qos = qos2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + state = serv_req2; + end else begin + state = wait_dv_low; + //state = wait_req; + end + end + end + serv_req2:begin + state = serv_req2; + prt_dv1 = 1'b0; + if(prt_dv) begin + prt_dv2 = 1'b1; + prt_data2 = prt_data; + prt_req = 0; + if(prt_req1) begin + prt_req = 1; + prt_qos = qos1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end else begin + state = wait_dv_low; + //state = wait_req; + end + end + end + + wait_dv_low:begin + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + state = wait_dv_low; + if(!prt_dv) + state = wait_req; + end + endcase +end /// if else +end /// always +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd_4.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd_4.v new file mode 100644 index 0000000..0f44158 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_rd_4.v @@ -0,0 +1,254 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_arb_rd_4.v + * + * Date : 2012-11 + * + * Description : Module that arbitrates between 4 read requests from 4 ports. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_arb_rd_4( + rstn, + sw_clk, + + qos1, + qos2, + qos3, + qos4, + + prt_req1, + prt_req2, + prt_req3, + prt_req4, + + prt_data1, + prt_data2, + prt_data3, + prt_data4, + + prt_addr1, + prt_addr2, + prt_addr3, + prt_addr4, + + prt_bytes1, + prt_bytes2, + prt_bytes3, + prt_bytes4, + + prt_dv1, + prt_dv2, + prt_dv3, + prt_dv4, + + prt_qos, + prt_req, + prt_data, + prt_addr, + prt_bytes, + prt_dv + +); +`include "processing_system7_bfm_v2_0_local_params.v" +input rstn, sw_clk; +input [axi_qos_width-1:0] qos1,qos2,qos3,qos4; +input prt_req1, prt_req2,prt_req3, prt_req4, prt_dv; +output reg [max_burst_bits-1:0] prt_data1,prt_data2,prt_data3,prt_data4; +input [addr_width-1:0] prt_addr1,prt_addr2,prt_addr3,prt_addr4; +input [max_burst_bytes_width:0] prt_bytes1,prt_bytes2,prt_bytes3,prt_bytes4; +output reg prt_dv1,prt_dv2,prt_dv3,prt_dv4,prt_req; +input [max_burst_bits-1:0] prt_data; +output reg [addr_width-1:0] prt_addr; +output reg [max_burst_bytes_width:0] prt_bytes; +output reg [axi_qos_width-1:0] prt_qos; + +parameter wait_req = 3'b000, serv_req1 = 3'b001, serv_req2 = 3'b010, serv_req3 = 3'b011, serv_req4 = 3'b100, wait_dv_low=3'b101; +reg [2:0] state; + +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + state = wait_req; + prt_req = 1'b0; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_dv3 = 1'b0; + prt_dv4 = 1'b0; + prt_qos = 0; +end else begin + case(state) + wait_req:begin + state = wait_req; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_dv3 = 1'b0; + prt_dv4 = 1'b0; + prt_req = 1'b0; + if(prt_req1) begin + state = serv_req1; + prt_req = 1; + prt_qos = qos1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(prt_req2) begin + state = serv_req2; + prt_req = 1; + prt_qos = qos2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_req3) begin + state = serv_req3; + prt_req = 1; + prt_qos = qos3; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + end else if(prt_req4) begin + prt_req = 1; + prt_addr = prt_addr4; + prt_qos = qos4; + prt_bytes = prt_bytes4; + state = serv_req4; + end + end + serv_req1:begin + state = serv_req1; + prt_dv2 = 1'b0; + prt_dv3 = 1'b0; + prt_dv4 = 1'b0; + if(prt_dv)begin + prt_dv1 = 1'b1; + prt_data1 = prt_data; + //state = wait_req; + state = wait_dv_low; + prt_req = 1'b0; + if(prt_req2) begin + state = serv_req2; + prt_qos = qos2; + prt_req = 1; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_req3) begin + state = serv_req3; + prt_qos = qos3; + prt_req = 1; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + end else if(prt_req4) begin + prt_req = 1; + prt_qos = qos4; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + state = serv_req4; + end + end + end + serv_req2:begin + state = serv_req2; + prt_dv1 = 1'b0; + prt_dv3 = 1'b0; + prt_dv4 = 1'b0; + if(prt_dv)begin + prt_dv2 = 1'b1; + prt_data2 = prt_data; + //state = wait_req; + state = wait_dv_low; + prt_req = 1'b0; + if(prt_req3) begin + state = serv_req3; + prt_req = 1; + prt_qos = qos3; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + end else if(prt_req4) begin + state = serv_req4; + prt_req = 1; + prt_qos = qos4; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + end else if(prt_req1) begin + prt_req = 1; + prt_addr = prt_addr1; + prt_qos = qos1; + prt_bytes = prt_bytes1; + state = serv_req1; + end + end + end + serv_req3:begin + state = serv_req3; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_dv4 = 1'b0; + if(prt_dv)begin + prt_dv3 = 1'b1; + prt_data3 = prt_data; + //state = wait_req; + state = wait_dv_low; + prt_req = 1'b0; + if(prt_req4) begin + state = serv_req4; + prt_qos = qos4; + prt_req = 1; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + end else if(prt_req1) begin + state = serv_req1; + prt_req = 1; + prt_qos = qos1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(prt_req2) begin + prt_req = 1; + prt_qos = qos2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + state = serv_req2; + end + end + end + serv_req4:begin + state = serv_req4; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_dv3 = 1'b0; + if(prt_dv)begin + prt_dv4 = 1'b1; + prt_data4 = prt_data; + //state = wait_req; + state = wait_dv_low; + prt_req = 1'b0; + if(prt_req1) begin + state = serv_req1; + prt_qos = qos1; + prt_req = 1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(prt_req2) begin + state = serv_req2; + prt_req = 1; + prt_qos = qos2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_req3) begin + prt_req = 1; + prt_addr = prt_addr3; + prt_qos = qos3; + prt_bytes = prt_bytes3; + state = serv_req3; + end + end + end + wait_dv_low:begin + state = wait_dv_low; + prt_dv1 = 1'b0; + prt_dv2 = 1'b0; + prt_dv3 = 1'b0; + prt_dv4 = 1'b0; + if(!prt_dv) + state = wait_req; + end + endcase +end /// if else +end /// always +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr.v new file mode 100644 index 0000000..6af1e2b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr.v @@ -0,0 +1,152 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_arb_wr.v + * + * Date : 2012-11 + * + * Description : Module that arbitrates between 2 write requests from 2 ports. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_arb_wr( + rstn, + sw_clk, + qos1, + qos2, + prt_dv1, + prt_dv2, + prt_data1, + prt_data2, + prt_addr1, + prt_addr2, + prt_bytes1, + prt_bytes2, + prt_ack1, + prt_ack2, + prt_qos, + prt_req, + prt_data, + prt_addr, + prt_bytes, + prt_ack + +); +`include "processing_system7_bfm_v2_0_local_params.v" +input rstn, sw_clk; +input [axi_qos_width-1:0] qos1,qos2; +input [max_burst_bits-1:0] prt_data1,prt_data2; +input [addr_width-1:0] prt_addr1,prt_addr2; +input [max_burst_bytes_width:0] prt_bytes1,prt_bytes2; +input prt_dv1, prt_dv2, prt_ack; +output reg prt_ack1,prt_ack2,prt_req; +output reg [max_burst_bits-1:0] prt_data; +output reg [addr_width-1:0] prt_addr; +output reg [max_burst_bytes_width:0] prt_bytes; +output reg [axi_qos_width-1:0] prt_qos; + +parameter wait_req = 2'b00, serv_req1 = 2'b01, serv_req2 = 2'b10,wait_ack_low = 2'b11; +reg [1:0] state,temp_state; + +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + state = wait_req; + prt_req = 1'b0; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_qos = 0; +end else begin + case(state) + wait_req:begin + state = wait_req; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_req = 1'b0; + if(prt_dv1 && !prt_dv2) begin + state = serv_req1; + prt_req = 1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + prt_qos = qos1; + end else if(!prt_dv1 && prt_dv2) begin + state = serv_req2; + prt_req = 1; + prt_qos = qos2; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_dv1 && prt_dv2) begin + if(qos1 > qos2) begin + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end else if(qos1 < qos2) begin + prt_req = 1; + prt_qos = qos2; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + state = serv_req2; + end else begin + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end + end + end + serv_req1:begin + state = serv_req1; + prt_ack2 = 1'b0; + if(prt_ack) begin + prt_ack1 = 1'b1; + prt_req = 0; + if(prt_dv2) begin + prt_req = 1; + prt_qos = qos2; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + state = serv_req2; + end else begin + // state = wait_req; + state = wait_ack_low; + end + end + end + serv_req2:begin + state = serv_req2; + prt_ack1 = 1'b0; + if(prt_ack) begin + prt_ack2 = 1'b1; + prt_req = 0; + if(prt_dv1) begin + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end else begin + state = wait_ack_low; + // state = wait_req; + end + end + end + wait_ack_low:begin + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + state = wait_ack_low; + if(!prt_ack) + state = wait_req; + end + endcase +end /// if else +end /// always +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr_4.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr_4.v new file mode 100644 index 0000000..4409478 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_arb_wr_4.v @@ -0,0 +1,265 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_arb_wr_4.v + * + * Date : 2012-11 + * + * Description : Module that arbitrates between 4 write requests from 4 ports. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_arb_wr_4( + rstn, + sw_clk, + + qos1, + qos2, + qos3, + qos4, + + prt_dv1, + prt_dv2, + prt_dv3, + prt_dv4, + + prt_data1, + prt_data2, + prt_data3, + prt_data4, + + prt_addr1, + prt_addr2, + prt_addr3, + prt_addr4, + + prt_bytes1, + prt_bytes2, + prt_bytes3, + prt_bytes4, + + prt_ack1, + prt_ack2, + prt_ack3, + prt_ack4, + + prt_qos, + prt_req, + prt_data, + prt_addr, + prt_bytes, + prt_ack + +); +`include "processing_system7_bfm_v2_0_local_params.v" +input rstn, sw_clk; +input [axi_qos_width-1:0] qos1,qos2,qos3,qos4; +input [max_burst_bits-1:0] prt_data1,prt_data2,prt_data3,prt_data4; +input [addr_width-1:0] prt_addr1,prt_addr2,prt_addr3,prt_addr4; +input [max_burst_bytes_width:0] prt_bytes1,prt_bytes2,prt_bytes3,prt_bytes4; +input prt_dv1, prt_dv2,prt_dv3, prt_dv4, prt_ack; +output reg prt_ack1,prt_ack2,prt_ack3,prt_ack4,prt_req; +output reg [max_burst_bits-1:0] prt_data; +output reg [addr_width-1:0] prt_addr; +output reg [max_burst_bytes_width:0] prt_bytes; +output reg [axi_qos_width-1:0] prt_qos; +parameter wait_req = 3'b000, serv_req1 = 3'b001, serv_req2 = 3'b010, serv_req3 = 3'b011, serv_req4 = 4'b100,wait_ack_low = 3'b101; +reg [2:0] state; + +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + state = wait_req; + prt_req = 1'b0; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_ack3 = 1'b0; + prt_ack4 = 1'b0; + prt_qos = 0; +end else begin + case(state) + wait_req:begin + state = wait_req; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_ack3 = 1'b0; + prt_ack4 = 1'b0; + prt_req = 0; + if(prt_dv1) begin + state = serv_req1; + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(prt_dv2) begin + state = serv_req2; + prt_req = 1; + prt_qos = qos2; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_dv3) begin + state = serv_req3; + prt_req = 1; + prt_qos = qos3; + prt_data = prt_data3; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + end else if(prt_dv4) begin + prt_req = 1; + prt_qos = qos4; + prt_data = prt_data4; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + state = serv_req4; + end + end + serv_req1:begin + state = serv_req1; + prt_ack2 = 1'b0; + prt_ack3 = 1'b0; + prt_ack4 = 1'b0; + if(prt_ack)begin + prt_ack1 = 1'b1; + //state = wait_req; + state = wait_ack_low; + prt_req = 0; + if(prt_dv2) begin + state = serv_req2; + prt_qos = qos2; + prt_req = 1; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_dv3) begin + state = serv_req3; + prt_req = 1; + prt_qos = qos3; + prt_data = prt_data3; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + end else if(prt_dv4) begin + prt_req = 1; + prt_qos = qos4; + prt_data = prt_data4; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + state = serv_req4; + end + end + end + serv_req2:begin + state = serv_req2; + prt_ack1 = 1'b0; + prt_ack3 = 1'b0; + prt_ack4 = 1'b0; + if(prt_ack)begin + prt_ack2 = 1'b1; + //state = wait_req; + state = wait_ack_low; + prt_req = 0; + if(prt_dv3) begin + state = serv_req3; + prt_qos = qos3; + prt_req = 1; + prt_data = prt_data3; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + end else if(prt_dv4) begin + state = serv_req4; + prt_req = 1; + prt_qos = qos4; + prt_data = prt_data4; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + end else if(prt_dv1) begin + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + state = serv_req1; + end + end + end + serv_req3:begin + state = serv_req3; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_ack4 = 1'b0; + if(prt_ack)begin + prt_ack3 = 1'b1; +// state = wait_req; + state = wait_ack_low; + prt_req = 0; + if(prt_dv4) begin + state = serv_req4; + prt_qos = qos4; + prt_req = 1; + prt_data = prt_data4; + prt_addr = prt_addr4; + prt_bytes = prt_bytes4; + end else if(prt_dv1) begin + state = serv_req1; + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(prt_dv2) begin + prt_req = 1; + prt_qos = qos2; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + state = serv_req2; + end + end + end + serv_req4:begin + state = serv_req4; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_ack3 = 1'b0; + if(prt_ack)begin + prt_ack4 = 1'b1; + //state = wait_req; + state = wait_ack_low; + prt_req = 0; + if(prt_dv1) begin + state = serv_req1; + prt_req = 1; + prt_qos = qos1; + prt_data = prt_data1; + prt_addr = prt_addr1; + prt_bytes = prt_bytes1; + end else if(prt_dv2) begin + state = serv_req2; + prt_req = 1; + prt_qos = qos2; + prt_data = prt_data2; + prt_addr = prt_addr2; + prt_bytes = prt_bytes2; + end else if(prt_dv3) begin + prt_req = 1; + prt_qos = qos3; + prt_data = prt_data3; + prt_addr = prt_addr3; + prt_bytes = prt_bytes3; + state = serv_req3; + end + end + end + wait_ack_low:begin + state = wait_ack_low; + prt_ack1 = 1'b0; + prt_ack2 = 1'b0; + prt_ack3 = 1'b0; + prt_ack4 = 1'b0; + if(!prt_ack) + state = wait_req; + end + endcase +end /// if else +end /// always +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_acp.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_acp.v new file mode 100644 index 0000000..3d31167 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_acp.v @@ -0,0 +1,93 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_axi_acp.v + * + * Date : 2012-11 + * + * Description : Connections for ACP port + * + *****************************************************************************/ + +/* AXI Slave ACP */ + processing_system7_bfm_v2_0_axi_slave #( C_USE_S_AXI_ACP, // enable + axi_acp_name, // name + axi_acp_data_width, // data width + addr_width, /// address width + axi_acp_id_width, // ID width + C_S_AXI_ACP_BASEADDR, // slave base address + C_S_AXI_ACP_HIGHADDR,// slave size + axi_acp_outstanding, // outstanding transactions // 7 Reads and 3 Writes + axi_slv_excl_support, // Exclusive access support + axi_acp_wr_outstanding, + axi_acp_rd_outstanding) + S_AXI_ACP(.S_RESETN (net_axi_acp_rstn), + .S_ACLK (S_AXI_ACP_ACLK), + // Write Address Channel + .S_AWID (S_AXI_ACP_AWID), + .S_AWADDR (S_AXI_ACP_AWADDR), + .S_AWLEN (S_AXI_ACP_AWLEN), + .S_AWSIZE (S_AXI_ACP_AWSIZE), + .S_AWBURST (S_AXI_ACP_AWBURST), + .S_AWLOCK (S_AXI_ACP_AWLOCK), + .S_AWCACHE (S_AXI_ACP_AWCACHE), + .S_AWPROT (S_AXI_ACP_AWPROT), + .S_AWVALID (S_AXI_ACP_AWVALID), + .S_AWREADY (S_AXI_ACP_AWREADY), + // Write Data Channel Signals. + .S_WID (S_AXI_ACP_WID), + .S_WDATA (S_AXI_ACP_WDATA), + .S_WSTRB (S_AXI_ACP_WSTRB), + .S_WLAST (S_AXI_ACP_WLAST), + .S_WVALID (S_AXI_ACP_WVALID), + .S_WREADY (S_AXI_ACP_WREADY), + // Write Response Channel Signals. + .S_BID (S_AXI_ACP_BID), + .S_BRESP (S_AXI_ACP_BRESP), + .S_BVALID (S_AXI_ACP_BVALID), + .S_BREADY (S_AXI_ACP_BREADY), + // Read Address Channel Signals. + .S_ARID (S_AXI_ACP_ARID), + .S_ARADDR (S_AXI_ACP_ARADDR), + .S_ARLEN (S_AXI_ACP_ARLEN), + .S_ARSIZE (S_AXI_ACP_ARSIZE), + .S_ARBURST (S_AXI_ACP_ARBURST), + .S_ARLOCK (S_AXI_ACP_ARLOCK), + .S_ARCACHE (S_AXI_ACP_ARCACHE), + .S_ARPROT (S_AXI_ACP_ARPROT), + .S_ARVALID (S_AXI_ACP_ARVALID), + .S_ARREADY (S_AXI_ACP_ARREADY), + // Read Data Channel Signals. + .S_RID (S_AXI_ACP_RID), + .S_RDATA (S_AXI_ACP_RDATA), + .S_RRESP (S_AXI_ACP_RRESP), + .S_RLAST (S_AXI_ACP_RLAST), + .S_RVALID (S_AXI_ACP_RVALID), + .S_RREADY (S_AXI_ACP_RREADY), + // Side band signals + .S_AWQOS (S_AXI_ACP_AWQOS), + .S_ARQOS (S_AXI_ACP_ARQOS), // Side band signals + + .SW_CLK (net_sw_clk), +/* This goes to port 0 of DDR and port 0 of OCM , port 0 of REG*/ + .WR_DATA_ACK_DDR (ddr_wr_ack_port0), + .WR_DATA_ACK_OCM (ocm_wr_ack_port0), + .WR_DATA (net_wr_data_acp), + .WR_ADDR (net_wr_addr_acp), + .WR_BYTES (net_wr_bytes_acp), + .WR_DATA_VALID_DDR (ddr_wr_dv_port0), + .WR_DATA_VALID_OCM (ocm_wr_dv_port0), + .WR_QOS (net_wr_qos_acp), + + .RD_REQ_DDR (ddr_rd_req_port0), + .RD_REQ_OCM (ocm_rd_req_port0), + .RD_REQ_REG (reg_rd_req_port0), + .RD_ADDR (net_rd_addr_acp), + .RD_DATA_DDR (ddr_rd_data_port0), + .RD_DATA_OCM (ocm_rd_data_port0), + .RD_DATA_REG (reg_rd_data_port0), + .RD_BYTES (net_rd_bytes_acp), + .RD_DATA_VALID_DDR (ddr_rd_dv_port0), + .RD_DATA_VALID_OCM (ocm_rd_dv_port0), + .RD_DATA_VALID_REG (reg_rd_dv_port0), + .RD_QOS (net_rd_qos_acp) + +); diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_gp.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_gp.v new file mode 100644 index 0000000..145bf89 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_gp.v @@ -0,0 +1,309 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_axi_gp.v + * + * Date : 2012-11 + * + * Description : Connections for AXI GP ports + * + *****************************************************************************/ + + /* IDs for Masters + // l2m1 (CPU000) + 12'b11_000_000_00_00 + 12'b11_010_000_00_00 + 12'b11_011_000_00_00 + 12'b11_100_000_00_00 + 12'b11_101_000_00_00 + 12'b11_110_000_00_00 + 12'b11_111_000_00_00 + // l2m1 (CPU001) + 12'b11_000_001_00_00 + 12'b11_010_001_00_00 + 12'b11_011_001_00_00 + 12'b11_100_001_00_00 + 12'b11_101_001_00_00 + 12'b11_110_001_00_00 + 12'b11_111_001_00_00 + */ + +/* AXI -Master GP0 */ + processing_system7_bfm_v2_0_axi_master #(C_USE_M_AXI_GP0, // enable + axi_mgp0_name,// name + axi_mgp_data_width, /// Data Width + addr_width, /// Address width + axi_mgp_id_width, //// ID Width + axi_mgp_outstanding, //// Outstanding transactions + axi_mst_excl_support, // EXCL Access Support + axi_mgp_wr_id, //WR_ID + axi_mgp_rd_id) //RD_ID + M_AXI_GP0(.M_RESETN (net_axi_mgp0_rstn), + .M_ACLK (M_AXI_GP0_ACLK), + // Write Address Channel + .M_AWID (M_AXI_GP0_AWID_FULL), + .M_AWADDR (M_AXI_GP0_AWADDR), + .M_AWLEN (M_AXI_GP0_AWLEN), + .M_AWSIZE (M_AXI_GP0_AWSIZE), + .M_AWBURST (M_AXI_GP0_AWBURST), + .M_AWLOCK (M_AXI_GP0_AWLOCK), + .M_AWCACHE (M_AXI_GP0_AWCACHE), + .M_AWPROT (M_AXI_GP0_AWPROT), + .M_AWVALID (M_AXI_GP0_AWVALID), + .M_AWREADY (M_AXI_GP0_AWREADY), + // Write Data Channel Signals. + .M_WID (M_AXI_GP0_WID_FULL), + .M_WDATA (M_AXI_GP0_WDATA), + .M_WSTRB (M_AXI_GP0_WSTRB), + .M_WLAST (M_AXI_GP0_WLAST), + .M_WVALID (M_AXI_GP0_WVALID), + .M_WREADY (M_AXI_GP0_WREADY), + // Write Response Channel Signals. + .M_BID (M_AXI_GP0_BID_FULL), + .M_BRESP (M_AXI_GP0_BRESP), + .M_BVALID (M_AXI_GP0_BVALID), + .M_BREADY (M_AXI_GP0_BREADY), + // Read Address Channel Signals. + .M_ARID (M_AXI_GP0_ARID_FULL), + .M_ARADDR (M_AXI_GP0_ARADDR), + .M_ARLEN (M_AXI_GP0_ARLEN), + .M_ARSIZE (M_AXI_GP0_ARSIZE), + .M_ARBURST (M_AXI_GP0_ARBURST), + .M_ARLOCK (M_AXI_GP0_ARLOCK), + .M_ARCACHE (M_AXI_GP0_ARCACHE), + .M_ARPROT (M_AXI_GP0_ARPROT), + .M_ARVALID (M_AXI_GP0_ARVALID), + .M_ARREADY (M_AXI_GP0_ARREADY), + // Read Data Channel Signals. + .M_RID (M_AXI_GP0_RID_FULL), + .M_RDATA (M_AXI_GP0_RDATA), + .M_RRESP (M_AXI_GP0_RRESP), + .M_RLAST (M_AXI_GP0_RLAST), + .M_RVALID (M_AXI_GP0_RVALID), + .M_RREADY (M_AXI_GP0_RREADY), + // Side band signals + .M_AWQOS (M_AXI_GP0_AWQOS), + .M_ARQOS (M_AXI_GP0_ARQOS) + ); + + /* AXI Master GP1 */ + processing_system7_bfm_v2_0_axi_master #(C_USE_M_AXI_GP1, // enable + axi_mgp1_name,// name + axi_mgp_data_width, /// Data Width + addr_width, /// Address width + axi_mgp_id_width, //// ID Width + axi_mgp_outstanding, //// Outstanding transactions + axi_mst_excl_support, // EXCL Access Support + axi_mgp_wr_id, //WR_ID + axi_mgp_rd_id) //RD_ID + M_AXI_GP1(.M_RESETN (net_axi_mgp1_rstn), + .M_ACLK (M_AXI_GP1_ACLK), + // Write Address Channel + .M_AWID (M_AXI_GP1_AWID_FULL), + .M_AWADDR (M_AXI_GP1_AWADDR), + .M_AWLEN (M_AXI_GP1_AWLEN), + .M_AWSIZE (M_AXI_GP1_AWSIZE), + .M_AWBURST (M_AXI_GP1_AWBURST), + .M_AWLOCK (M_AXI_GP1_AWLOCK), + .M_AWCACHE (M_AXI_GP1_AWCACHE), + .M_AWPROT (M_AXI_GP1_AWPROT), + .M_AWVALID (M_AXI_GP1_AWVALID), + .M_AWREADY (M_AXI_GP1_AWREADY), + // Write Data Channel Signals. + .M_WID (M_AXI_GP1_WID_FULL), + .M_WDATA (M_AXI_GP1_WDATA), + .M_WSTRB (M_AXI_GP1_WSTRB), + .M_WLAST (M_AXI_GP1_WLAST), + .M_WVALID (M_AXI_GP1_WVALID), + .M_WREADY (M_AXI_GP1_WREADY), + // Write Response Channel Signals. + .M_BID (M_AXI_GP1_BID_FULL), + .M_BRESP (M_AXI_GP1_BRESP), + .M_BVALID (M_AXI_GP1_BVALID), + .M_BREADY (M_AXI_GP1_BREADY), + // Read Address Channel Signals. + .M_ARID (M_AXI_GP1_ARID_FULL), + .M_ARADDR (M_AXI_GP1_ARADDR), + .M_ARLEN (M_AXI_GP1_ARLEN), + .M_ARSIZE (M_AXI_GP1_ARSIZE), + .M_ARBURST (M_AXI_GP1_ARBURST), + .M_ARLOCK (M_AXI_GP1_ARLOCK), + .M_ARCACHE (M_AXI_GP1_ARCACHE), + .M_ARPROT (M_AXI_GP1_ARPROT), + .M_ARVALID (M_AXI_GP1_ARVALID), + .M_ARREADY (M_AXI_GP1_ARREADY), + // Read Data Channel Signals. + .M_RID (M_AXI_GP1_RID_FULL), + .M_RDATA (M_AXI_GP1_RDATA), + .M_RRESP (M_AXI_GP1_RRESP), + .M_RLAST (M_AXI_GP1_RLAST), + .M_RVALID (M_AXI_GP1_RVALID), + .M_RREADY (M_AXI_GP1_RREADY), + // Side band signals + .M_AWQOS (M_AXI_GP1_AWQOS), + .M_ARQOS (M_AXI_GP1_ARQOS) + ); + +/* AXI Slave GP0 */ + processing_system7_bfm_v2_0_axi_slave #(C_USE_S_AXI_GP0, /// enable + axi_sgp0_name, //name + axi_sgp_data_width, /// data width + addr_width, /// address width + axi_sgp_id_width, /// ID width + C_S_AXI_GP0_BASEADDR,//// base address + C_S_AXI_GP0_HIGHADDR,/// Memory size (high_addr - base_addr) + axi_sgp_outstanding, // outstanding transactions + axi_slv_excl_support, // exclusive access not supported + axi_sgp_wr_outstanding, + axi_sgp_rd_outstanding) + S_AXI_GP0(.S_RESETN (net_axi_gp0_rstn), + .S_ACLK (S_AXI_GP0_ACLK), + // Write Address Channel + .S_AWID (S_AXI_GP0_AWID), + .S_AWADDR (S_AXI_GP0_AWADDR), + .S_AWLEN (S_AXI_GP0_AWLEN), + .S_AWSIZE (S_AXI_GP0_AWSIZE), + .S_AWBURST (S_AXI_GP0_AWBURST), + .S_AWLOCK (S_AXI_GP0_AWLOCK), + .S_AWCACHE (S_AXI_GP0_AWCACHE), + .S_AWPROT (S_AXI_GP0_AWPROT), + .S_AWVALID (S_AXI_GP0_AWVALID), + .S_AWREADY (S_AXI_GP0_AWREADY), + // Write Data Channel Signals. + .S_WID (S_AXI_GP0_WID), + .S_WDATA (S_AXI_GP0_WDATA), + .S_WSTRB (S_AXI_GP0_WSTRB), + .S_WLAST (S_AXI_GP0_WLAST), + .S_WVALID (S_AXI_GP0_WVALID), + .S_WREADY (S_AXI_GP0_WREADY), + // Write Response Channel Signals. + .S_BID (S_AXI_GP0_BID), + .S_BRESP (S_AXI_GP0_BRESP), + .S_BVALID (S_AXI_GP0_BVALID), + .S_BREADY (S_AXI_GP0_BREADY), + // Read Address Channel Signals. + .S_ARID (S_AXI_GP0_ARID), + .S_ARADDR (S_AXI_GP0_ARADDR), + .S_ARLEN (S_AXI_GP0_ARLEN), + .S_ARSIZE (S_AXI_GP0_ARSIZE), + .S_ARBURST (S_AXI_GP0_ARBURST), + .S_ARLOCK (S_AXI_GP0_ARLOCK), + .S_ARCACHE (S_AXI_GP0_ARCACHE), + .S_ARPROT (S_AXI_GP0_ARPROT), + .S_ARVALID (S_AXI_GP0_ARVALID), + .S_ARREADY (S_AXI_GP0_ARREADY), + // Read Data Channel Signals. + .S_RID (S_AXI_GP0_RID), + .S_RDATA (S_AXI_GP0_RDATA), + .S_RRESP (S_AXI_GP0_RRESP), + .S_RLAST (S_AXI_GP0_RLAST), + .S_RVALID (S_AXI_GP0_RVALID), + .S_RREADY (S_AXI_GP0_RREADY), + // Side band signals + .S_AWQOS (S_AXI_GP0_AWQOS), + .S_ARQOS (S_AXI_GP0_ARQOS), + + .SW_CLK (net_sw_clk), + .WR_DATA_ACK_OCM (net_wr_ack_ocm_gp0), + .WR_DATA_ACK_DDR (net_wr_ack_ddr_gp0), + .WR_DATA (net_wr_data_gp0), + .WR_ADDR (net_wr_addr_gp0), + .WR_BYTES (net_wr_bytes_gp0), + .WR_DATA_VALID_OCM (net_wr_dv_ocm_gp0), + .WR_DATA_VALID_DDR (net_wr_dv_ddr_gp0), + .WR_QOS (net_wr_qos_gp0), + .RD_REQ_DDR (net_rd_req_ddr_gp0), + .RD_REQ_OCM (net_rd_req_ocm_gp0), + .RD_REQ_REG (net_rd_req_reg_gp0), + .RD_ADDR (net_rd_addr_gp0), + .RD_DATA_DDR (net_rd_data_ddr_gp0), + .RD_DATA_OCM (net_rd_data_ocm_gp0), + .RD_DATA_REG (net_rd_data_reg_gp0), + .RD_BYTES (net_rd_bytes_gp0), + .RD_DATA_VALID_DDR (net_rd_dv_ddr_gp0), + .RD_DATA_VALID_OCM (net_rd_dv_ocm_gp0), + .RD_DATA_VALID_REG (net_rd_dv_reg_gp0), + .RD_QOS (net_rd_qos_gp0) + +); + +/* AXI Slave GP1 */ + processing_system7_bfm_v2_0_axi_slave #(C_USE_S_AXI_GP1, /// enable + axi_sgp1_name, //name + axi_sgp_data_width, /// data width + addr_width, /// address width + axi_sgp_id_width, /// ID width + C_S_AXI_GP1_BASEADDR,//// base address + C_S_AXI_GP1_HIGHADDR,/// HIGh_addr + axi_sgp_outstanding, // outstanding transactions + axi_slv_excl_support, // exclusive access + axi_sgp_wr_outstanding, + axi_sgp_rd_outstanding) + S_AXI_GP1(.S_RESETN (net_axi_gp1_rstn), + .S_ACLK (S_AXI_GP1_ACLK), + // Write Address Channel + .S_AWID (S_AXI_GP1_AWID), + .S_AWADDR (S_AXI_GP1_AWADDR), + .S_AWLEN (S_AXI_GP1_AWLEN), + .S_AWSIZE (S_AXI_GP1_AWSIZE), + .S_AWBURST (S_AXI_GP1_AWBURST), + .S_AWLOCK (S_AXI_GP1_AWLOCK), + .S_AWCACHE (S_AXI_GP1_AWCACHE), + .S_AWPROT (S_AXI_GP1_AWPROT), + .S_AWVALID (S_AXI_GP1_AWVALID), + .S_AWREADY (S_AXI_GP1_AWREADY), + // Write Data Channel Signals. + .S_WID (S_AXI_GP1_WID), + .S_WDATA (S_AXI_GP1_WDATA), + .S_WSTRB (S_AXI_GP1_WSTRB), + .S_WLAST (S_AXI_GP1_WLAST), + .S_WVALID (S_AXI_GP1_WVALID), + .S_WREADY (S_AXI_GP1_WREADY), + // Write Response Channel Signals. + .S_BID (S_AXI_GP1_BID), + .S_BRESP (S_AXI_GP1_BRESP), + .S_BVALID (S_AXI_GP1_BVALID), + .S_BREADY (S_AXI_GP1_BREADY), + // Read Address Channel Signals. + .S_ARID (S_AXI_GP1_ARID), + .S_ARADDR (S_AXI_GP1_ARADDR), + .S_ARLEN (S_AXI_GP1_ARLEN), + .S_ARSIZE (S_AXI_GP1_ARSIZE), + .S_ARBURST (S_AXI_GP1_ARBURST), + .S_ARLOCK (S_AXI_GP1_ARLOCK), + .S_ARCACHE (S_AXI_GP1_ARCACHE), + .S_ARPROT (S_AXI_GP1_ARPROT), + .S_ARVALID (S_AXI_GP1_ARVALID), + .S_ARREADY (S_AXI_GP1_ARREADY), + // Read Data Channel Signals. + .S_RID (S_AXI_GP1_RID), + .S_RDATA (S_AXI_GP1_RDATA), + .S_RRESP (S_AXI_GP1_RRESP), + .S_RLAST (S_AXI_GP1_RLAST), + .S_RVALID (S_AXI_GP1_RVALID), + .S_RREADY (S_AXI_GP1_RREADY), + // Side band signals + .S_AWQOS (S_AXI_GP1_AWQOS), + .S_ARQOS (S_AXI_GP1_ARQOS), + + .SW_CLK (net_sw_clk), + .WR_DATA_ACK_DDR (net_wr_ack_ddr_gp1), + .WR_DATA_ACK_OCM (net_wr_ack_ocm_gp1), + .WR_DATA (net_wr_data_gp1), + .WR_ADDR (net_wr_addr_gp1), + .WR_BYTES (net_wr_bytes_gp1), + .WR_DATA_VALID_OCM (net_wr_dv_ocm_gp1), + .WR_DATA_VALID_DDR (net_wr_dv_ddr_gp1), + .WR_QOS (net_wr_qos_gp1), + .RD_REQ_OCM (net_rd_req_ocm_gp1), + .RD_REQ_DDR (net_rd_req_ddr_gp1), + .RD_REQ_REG (net_rd_req_reg_gp1), + .RD_ADDR (net_rd_addr_gp1), + .RD_DATA_DDR (net_rd_data_ddr_gp1), + .RD_DATA_OCM (net_rd_data_ocm_gp1), + .RD_DATA_REG (net_rd_data_reg_gp1), + .RD_BYTES (net_rd_bytes_gp1), + .RD_DATA_VALID_OCM (net_rd_dv_ocm_gp1), + .RD_DATA_VALID_DDR (net_rd_dv_ddr_gp1), + .RD_DATA_VALID_REG (net_rd_dv_reg_gp1), + .RD_QOS (net_rd_qos_gp1) + +); diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_hp.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_hp.v new file mode 100644 index 0000000..bb1ad62 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_hp.v @@ -0,0 +1,346 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_axi_hp.v + * + * Date : 2012-11 + * + * Description : Connections for AXI HP ports + * + *****************************************************************************/ + +/* AXI Slave HP0 */ + processing_system7_bfm_v2_0_afi_slave #( C_USE_S_AXI_HP0, // enable + axi_hp0_name, // name + C_S_AXI_HP0_DATA_WIDTH, // data width + addr_width, /// address width + axi_hp_id_width, // ID width + C_S_AXI_HP0_BASEADDR, // slave base address + C_S_AXI_HP0_HIGHADDR, // slave size + axi_hp_outstanding, // outstanding transactions // dynamic for AFI ports + axi_slv_excl_support) // Exclusive access support + S_AXI_HP0(.S_RESETN (net_axi_hp0_rstn), + .S_ACLK (S_AXI_HP0_ACLK), + // Write Address channel + .S_AWID (S_AXI_HP0_AWID), + .S_AWADDR (S_AXI_HP0_AWADDR), + .S_AWLEN (S_AXI_HP0_AWLEN), + .S_AWSIZE (S_AXI_HP0_AWSIZE), + .S_AWBURST (S_AXI_HP0_AWBURST), + .S_AWLOCK (S_AXI_HP0_AWLOCK), + .S_AWCACHE (S_AXI_HP0_AWCACHE), + .S_AWPROT (S_AXI_HP0_AWPROT), + .S_AWVALID (S_AXI_HP0_AWVALID), + .S_AWREADY (S_AXI_HP0_AWREADY), + // Write Data channel signals. + .S_WID (S_AXI_HP0_WID), + .S_WDATA (S_AXI_HP0_WDATA), + .S_WSTRB (S_AXI_HP0_WSTRB), + .S_WLAST (S_AXI_HP0_WLAST), + .S_WVALID (S_AXI_HP0_WVALID), + .S_WREADY (S_AXI_HP0_WREADY), + // Write Response channel signals. + .S_BID (S_AXI_HP0_BID), + .S_BRESP (S_AXI_HP0_BRESP), + .S_BVALID (S_AXI_HP0_BVALID), + .S_BREADY (S_AXI_HP0_BREADY), + // Read Address channel signals. + .S_ARID (S_AXI_HP0_ARID), + .S_ARADDR (S_AXI_HP0_ARADDR), + .S_ARLEN (S_AXI_HP0_ARLEN), + .S_ARSIZE (S_AXI_HP0_ARSIZE), + .S_ARBURST (S_AXI_HP0_ARBURST), + .S_ARLOCK (S_AXI_HP0_ARLOCK), + .S_ARCACHE (S_AXI_HP0_ARCACHE), + .S_ARPROT (S_AXI_HP0_ARPROT), + .S_ARVALID (S_AXI_HP0_ARVALID), + .S_ARREADY (S_AXI_HP0_ARREADY), + // Read Data channel signals. + .S_RID (S_AXI_HP0_RID), + .S_RDATA (S_AXI_HP0_RDATA), + .S_RRESP (S_AXI_HP0_RRESP), + .S_RLAST (S_AXI_HP0_RLAST), + .S_RVALID (S_AXI_HP0_RVALID), + .S_RREADY (S_AXI_HP0_RREADY), + // Side band signals + .S_AWQOS (S_AXI_HP0_AWQOS), + .S_ARQOS (S_AXI_HP0_ARQOS), + // these are needed only for HP ports + .S_RDISSUECAP1_EN (S_AXI_HP0_RDISSUECAP1_EN), + .S_WRISSUECAP1_EN (S_AXI_HP0_WRISSUECAP1_EN), + .S_RCOUNT (S_AXI_HP0_RCOUNT), + .S_WCOUNT (S_AXI_HP0_WCOUNT), + .S_RACOUNT (S_AXI_HP0_RACOUNT), + .S_WACOUNT (S_AXI_HP0_WACOUNT), + + .SW_CLK (net_sw_clk), + .WR_DATA_ACK_DDR (net_wr_ack_ddr_hp0), + .WR_DATA_ACK_OCM (net_wr_ack_ocm_hp0), + .WR_DATA (net_wr_data_hp0), + .WR_ADDR (net_wr_addr_hp0), + .WR_BYTES (net_wr_bytes_hp0), + .WR_DATA_VALID_DDR (net_wr_dv_ddr_hp0), + .WR_DATA_VALID_OCM (net_wr_dv_ocm_hp0), + .WR_QOS (net_wr_qos_hp0), + .RD_REQ_DDR (net_rd_req_ddr_hp0), + .RD_REQ_OCM (net_rd_req_ocm_hp0), + .RD_ADDR (net_rd_addr_hp0), + .RD_DATA_DDR (net_rd_data_ddr_hp0), + .RD_DATA_OCM (net_rd_data_ocm_hp0), + .RD_BYTES (net_rd_bytes_hp0), + .RD_DATA_VALID_DDR (net_rd_dv_ddr_hp0), + .RD_DATA_VALID_OCM (net_rd_dv_ocm_hp0), + .RD_QOS (net_rd_qos_hp0) + ); + +/* AXI Slave HP1 */ + processing_system7_bfm_v2_0_afi_slave #( C_USE_S_AXI_HP1, // enable + axi_hp1_name, // name + C_S_AXI_HP1_DATA_WIDTH, // data width + addr_width, /// address width + axi_hp_id_width, // ID width + C_S_AXI_HP1_BASEADDR, // slave base address + C_S_AXI_HP1_HIGHADDR, // Slave size + axi_hp_outstanding, // outstanding transactions // dynamic for AFI ports + axi_slv_excl_support) // Exclusive access support + S_AXI_HP1(.S_RESETN (net_axi_hp1_rstn), + .S_ACLK (S_AXI_HP1_ACLK), + // Write Address channel + .S_AWID (S_AXI_HP1_AWID), + .S_AWADDR (S_AXI_HP1_AWADDR), + .S_AWLEN (S_AXI_HP1_AWLEN), + .S_AWSIZE (S_AXI_HP1_AWSIZE), + .S_AWBURST (S_AXI_HP1_AWBURST), + .S_AWLOCK (S_AXI_HP1_AWLOCK), + .S_AWCACHE (S_AXI_HP1_AWCACHE), + .S_AWPROT (S_AXI_HP1_AWPROT), + .S_AWVALID (S_AXI_HP1_AWVALID), + .S_AWREADY (S_AXI_HP1_AWREADY), + // Write Data channel signals. + .S_WID (S_AXI_HP1_WID), + .S_WDATA (S_AXI_HP1_WDATA), + .S_WSTRB (S_AXI_HP1_WSTRB), + .S_WLAST (S_AXI_HP1_WLAST), + .S_WVALID (S_AXI_HP1_WVALID), + .S_WREADY (S_AXI_HP1_WREADY), + // Write Response channel signals. + .S_BID (S_AXI_HP1_BID), + .S_BRESP (S_AXI_HP1_BRESP), + .S_BVALID (S_AXI_HP1_BVALID), + .S_BREADY (S_AXI_HP1_BREADY), + // Read Address channel signals. + .S_ARID (S_AXI_HP1_ARID), + .S_ARADDR (S_AXI_HP1_ARADDR), + .S_ARLEN (S_AXI_HP1_ARLEN), + .S_ARSIZE (S_AXI_HP1_ARSIZE), + .S_ARBURST (S_AXI_HP1_ARBURST), + .S_ARLOCK (S_AXI_HP1_ARLOCK), + .S_ARCACHE (S_AXI_HP1_ARCACHE), + .S_ARPROT (S_AXI_HP1_ARPROT), + .S_ARVALID (S_AXI_HP1_ARVALID), + .S_ARREADY (S_AXI_HP1_ARREADY), + // Read Data channel signals. + .S_RID (S_AXI_HP1_RID), + .S_RDATA (S_AXI_HP1_RDATA), + .S_RRESP (S_AXI_HP1_RRESP), + .S_RLAST (S_AXI_HP1_RLAST), + .S_RVALID (S_AXI_HP1_RVALID), + .S_RREADY (S_AXI_HP1_RREADY), + // Side band signals + .S_AWQOS (S_AXI_HP1_AWQOS), + .S_ARQOS (S_AXI_HP1_ARQOS), + // these are needed only for HP ports + .S_RDISSUECAP1_EN (S_AXI_HP1_RDISSUECAP1_EN), + .S_WRISSUECAP1_EN (S_AXI_HP1_WRISSUECAP1_EN), + .S_RCOUNT (S_AXI_HP1_RCOUNT), + .S_WCOUNT (S_AXI_HP1_WCOUNT), + .S_RACOUNT (S_AXI_HP1_RACOUNT), + .S_WACOUNT (S_AXI_HP1_WACOUNT), + + .SW_CLK (net_sw_clk), + .WR_DATA_ACK_DDR (net_wr_ack_ddr_hp1), + .WR_DATA_ACK_OCM (net_wr_ack_ocm_hp1), + .WR_DATA (net_wr_data_hp1), + .WR_ADDR (net_wr_addr_hp1), + .WR_BYTES (net_wr_bytes_hp1), + .WR_DATA_VALID_DDR (net_wr_dv_ddr_hp1), + .WR_DATA_VALID_OCM (net_wr_dv_ocm_hp1), + .WR_QOS (net_wr_qos_hp1), + .RD_REQ_DDR (net_rd_req_ddr_hp1), + .RD_REQ_OCM (net_rd_req_ocm_hp1), + .RD_ADDR (net_rd_addr_hp1), + .RD_DATA_DDR (net_rd_data_ddr_hp1), + .RD_DATA_OCM (net_rd_data_ocm_hp1), + .RD_BYTES (net_rd_bytes_hp1), + .RD_DATA_VALID_DDR (net_rd_dv_ddr_hp1), + .RD_DATA_VALID_OCM (net_rd_dv_ocm_hp1), + .RD_QOS (net_rd_qos_hp1) + + ); + +/* AXI Slave HP2 */ + processing_system7_bfm_v2_0_afi_slave #( C_USE_S_AXI_HP2, // enable + axi_hp2_name, // name + C_S_AXI_HP2_DATA_WIDTH, // data width + addr_width, /// address width + axi_hp_id_width, // ID width + C_S_AXI_HP2_BASEADDR, // slave base address + C_S_AXI_HP2_HIGHADDR, // SLave size + axi_hp_outstanding, // outstanding transactions // dynamic for AFI ports + axi_slv_excl_support) // Exclusive access support + S_AXI_HP2(.S_RESETN (net_axi_hp2_rstn), + .S_ACLK (S_AXI_HP2_ACLK), + // Write Address channel + .S_AWID (S_AXI_HP2_AWID), + .S_AWADDR (S_AXI_HP2_AWADDR), + .S_AWLEN (S_AXI_HP2_AWLEN), + .S_AWSIZE (S_AXI_HP2_AWSIZE), + .S_AWBURST (S_AXI_HP2_AWBURST), + .S_AWLOCK (S_AXI_HP2_AWLOCK), + .S_AWCACHE (S_AXI_HP2_AWCACHE), + .S_AWPROT (S_AXI_HP2_AWPROT), + .S_AWVALID (S_AXI_HP2_AWVALID), + .S_AWREADY (S_AXI_HP2_AWREADY), + // Write Data channel signals. + .S_WID (S_AXI_HP2_WID), + .S_WDATA (S_AXI_HP2_WDATA), + .S_WSTRB (S_AXI_HP2_WSTRB), + .S_WLAST (S_AXI_HP2_WLAST), + .S_WVALID (S_AXI_HP2_WVALID), + .S_WREADY (S_AXI_HP2_WREADY), + // Write Response channel signals. + .S_BID (S_AXI_HP2_BID), + .S_BRESP (S_AXI_HP2_BRESP), + .S_BVALID (S_AXI_HP2_BVALID), + .S_BREADY (S_AXI_HP2_BREADY), + // Read Address channel signals. + .S_ARID (S_AXI_HP2_ARID), + .S_ARADDR (S_AXI_HP2_ARADDR), + .S_ARLEN (S_AXI_HP2_ARLEN), + .S_ARSIZE (S_AXI_HP2_ARSIZE), + .S_ARBURST (S_AXI_HP2_ARBURST), + .S_ARLOCK (S_AXI_HP2_ARLOCK), + .S_ARCACHE (S_AXI_HP2_ARCACHE), + .S_ARPROT (S_AXI_HP2_ARPROT), + .S_ARVALID (S_AXI_HP2_ARVALID), + .S_ARREADY (S_AXI_HP2_ARREADY), + // Read Data channel signals. + .S_RID (S_AXI_HP2_RID), + .S_RDATA (S_AXI_HP2_RDATA), + .S_RRESP (S_AXI_HP2_RRESP), + .S_RLAST (S_AXI_HP2_RLAST), + .S_RVALID (S_AXI_HP2_RVALID), + .S_RREADY (S_AXI_HP2_RREADY), + // Side band signals + .S_AWQOS (S_AXI_HP2_AWQOS), + .S_ARQOS (S_AXI_HP2_ARQOS), + // these are needed only for HP ports + .S_RDISSUECAP1_EN (S_AXI_HP2_RDISSUECAP1_EN), + .S_WRISSUECAP1_EN (S_AXI_HP2_WRISSUECAP1_EN), + .S_RCOUNT (S_AXI_HP2_RCOUNT), + .S_WCOUNT (S_AXI_HP2_WCOUNT), + .S_RACOUNT (S_AXI_HP2_RACOUNT), + .S_WACOUNT (S_AXI_HP2_WACOUNT), + + .SW_CLK (net_sw_clk), + .WR_DATA_ACK_DDR (net_wr_ack_ddr_hp2), + .WR_DATA_ACK_OCM (net_wr_ack_ocm_hp2), + .WR_DATA (net_wr_data_hp2), + .WR_ADDR (net_wr_addr_hp2), + .WR_BYTES (net_wr_bytes_hp2), + .WR_DATA_VALID_DDR (net_wr_dv_ddr_hp2), + .WR_DATA_VALID_OCM (net_wr_dv_ocm_hp2), + .WR_QOS (net_wr_qos_hp2), + .RD_REQ_DDR (net_rd_req_ddr_hp2), + .RD_REQ_OCM (net_rd_req_ocm_hp2), + .RD_ADDR (net_rd_addr_hp2), + .RD_DATA_DDR (net_rd_data_ddr_hp2), + .RD_DATA_OCM (net_rd_data_ocm_hp2), + .RD_BYTES (net_rd_bytes_hp2), + .RD_DATA_VALID_DDR (net_rd_dv_ddr_hp2), + .RD_DATA_VALID_OCM (net_rd_dv_ocm_hp2), + .RD_QOS (net_rd_qos_hp2) + + ); + +/* AXI Slave HP3 */ + processing_system7_bfm_v2_0_afi_slave #( C_USE_S_AXI_HP3, // enable + axi_hp3_name, // name + C_S_AXI_HP3_DATA_WIDTH, // data width + addr_width, /// address width + axi_hp_id_width, // ID width + C_S_AXI_HP3_BASEADDR, // slave base address + C_S_AXI_HP3_HIGHADDR, // SLave size + axi_hp_outstanding, // outstanding transactions // dynamic for AFI ports + axi_slv_excl_support) // Exclusive access support + S_AXI_HP3(.S_RESETN (net_axi_hp3_rstn), + .S_ACLK (S_AXI_HP3_ACLK), + // Write ADDRESS CHANNEL + .S_AWID (S_AXI_HP3_AWID), + .S_AWADDR (S_AXI_HP3_AWADDR), + .S_AWLEN (S_AXI_HP3_AWLEN), + .S_AWSIZE (S_AXI_HP3_AWSIZE), + .S_AWBURST (S_AXI_HP3_AWBURST), + .S_AWLOCK (S_AXI_HP3_AWLOCK), + .S_AWCACHE (S_AXI_HP3_AWCACHE), + .S_AWPROT (S_AXI_HP3_AWPROT), + .S_AWVALID (S_AXI_HP3_AWVALID), + .S_AWREADY (S_AXI_HP3_AWREADY), + // Write Data channel signals. + .S_WID (S_AXI_HP3_WID), + .S_WDATA (S_AXI_HP3_WDATA), + .S_WSTRB (S_AXI_HP3_WSTRB), + .S_WLAST (S_AXI_HP3_WLAST), + .S_WVALID (S_AXI_HP3_WVALID), + .S_WREADY (S_AXI_HP3_WREADY), + // Write Response channel signals. + .S_BID (S_AXI_HP3_BID), + .S_BRESP (S_AXI_HP3_BRESP), + .S_BVALID (S_AXI_HP3_BVALID), + .S_BREADY (S_AXI_HP3_BREADY), + // Read Address channel signals. + .S_ARID (S_AXI_HP3_ARID), + .S_ARADDR (S_AXI_HP3_ARADDR), + .S_ARLEN (S_AXI_HP3_ARLEN), + .S_ARSIZE (S_AXI_HP3_ARSIZE), + .S_ARBURST (S_AXI_HP3_ARBURST), + .S_ARLOCK (S_AXI_HP3_ARLOCK), + .S_ARCACHE (S_AXI_HP3_ARCACHE), + .S_ARPROT (S_AXI_HP3_ARPROT), + .S_ARVALID (S_AXI_HP3_ARVALID), + .S_ARREADY (S_AXI_HP3_ARREADY), + // Read Data channel signals. + .S_RID (S_AXI_HP3_RID), + .S_RDATA (S_AXI_HP3_RDATA), + .S_RRESP (S_AXI_HP3_RRESP), + .S_RLAST (S_AXI_HP3_RLAST), + .S_RVALID (S_AXI_HP3_RVALID), + .S_RREADY (S_AXI_HP3_RREADY), + // Side band signals + .S_AWQOS (S_AXI_HP3_AWQOS), + .S_ARQOS (S_AXI_HP3_ARQOS), + // these are needed only for HP ports + .S_RDISSUECAP1_EN (S_AXI_HP3_RDISSUECAP1_EN), + .S_WRISSUECAP1_EN (S_AXI_HP3_WRISSUECAP1_EN), + .S_RCOUNT (S_AXI_HP3_RCOUNT), + .S_WCOUNT (S_AXI_HP3_WCOUNT), + .S_RACOUNT (S_AXI_HP3_RACOUNT), + .S_WACOUNT (S_AXI_HP3_WACOUNT), + + .SW_CLK (net_sw_clk), + .WR_DATA_ACK_DDR (net_wr_ack_ddr_hp3), + .WR_DATA_ACK_OCM (net_wr_ack_ocm_hp3), + .WR_DATA (net_wr_data_hp3), + .WR_ADDR (net_wr_addr_hp3), + .WR_BYTES (net_wr_bytes_hp3), + .WR_DATA_VALID_DDR (net_wr_dv_ddr_hp3), + .WR_DATA_VALID_OCM (net_wr_dv_ocm_hp3), + .WR_QOS (net_wr_qos_hp3), + .RD_REQ_DDR (net_rd_req_ddr_hp3), + .RD_REQ_OCM (net_rd_req_ocm_hp3), + .RD_ADDR (net_rd_addr_hp3), + .RD_DATA_DDR (net_rd_data_ddr_hp3), + .RD_DATA_OCM (net_rd_data_ocm_hp3), + .RD_BYTES (net_rd_bytes_hp3), + .RD_DATA_VALID_DDR (net_rd_dv_ddr_hp3), + .RD_DATA_VALID_OCM (net_rd_dv_ocm_hp3), + .RD_QOS (net_rd_qos_hp3) + ); diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_master.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_master.v new file mode 100644 index 0000000..f60070c --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_master.v @@ -0,0 +1,679 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_axi_master.v + * + * Date : 2012-11 + * + * Description : Model that acts as PS AXI Master port interface. + * It uses AXI3 Master BFM + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_axi_master ( + M_RESETN, + M_ARVALID, + M_AWVALID, + M_BREADY, + M_RREADY, + M_WLAST, + M_WVALID, + M_ARID, + M_AWID, + M_WID, + M_ARBURST, + M_ARLOCK, + M_ARSIZE, + M_AWBURST, + M_AWLOCK, + M_AWSIZE, + M_ARPROT, + M_AWPROT, + M_ARADDR, + M_AWADDR, + M_WDATA, + M_ARCACHE, + M_ARLEN, + M_AWCACHE, + M_AWLEN, + M_ARQOS, // not connected to AXI BFM + M_AWQOS, // not connected to AXI BFM + M_WSTRB, + M_ACLK, + M_ARREADY, + M_AWREADY, + M_BVALID, + M_RLAST, + M_RVALID, + M_WREADY, + M_BID, + M_RID, + M_BRESP, + M_RRESP, + M_RDATA + +); + parameter enable_this_port = 0; + parameter master_name = "Master"; + parameter data_bus_width = 32; + parameter address_bus_width = 32; + parameter id_bus_width = 6; + parameter max_outstanding_transactions = 8; + parameter exclusive_access_supported = 0; + parameter EXCL_ID = 12'hC00; + `include "processing_system7_bfm_v2_0_local_params.v" + /* IDs for Masters + // l2m1 (CPU000) + 12'b11_000_000_00_00 + 12'b11_010_000_00_00 + 12'b11_011_000_00_00 + 12'b11_100_000_00_00 + 12'b11_101_000_00_00 + 12'b11_110_000_00_00 + 12'b11_111_000_00_00 + // l2m1 (CPU001) + 12'b11_000_001_00_00 + 12'b11_010_001_00_00 + 12'b11_011_001_00_00 + 12'b11_100_001_00_00 + 12'b11_101_001_00_00 + 12'b11_110_001_00_00 + 12'b11_111_001_00_00 + */ + + input M_RESETN; + + output M_ARVALID; + output M_AWVALID; + output M_BREADY; + output M_RREADY; + output M_WLAST; + output M_WVALID; + output [id_bus_width-1:0] M_ARID; + output [id_bus_width-1:0] M_AWID; + output [id_bus_width-1:0] M_WID; + output [axi_brst_type_width-1:0] M_ARBURST; + output [axi_lock_width-1:0] M_ARLOCK; + output [axi_size_width-1:0] M_ARSIZE; + output [axi_brst_type_width-1:0] M_AWBURST; + output [axi_lock_width-1:0] M_AWLOCK; + output [axi_size_width-1:0] M_AWSIZE; + output [axi_prot_width-1:0] M_ARPROT; + output [axi_prot_width-1:0] M_AWPROT; + output [address_bus_width-1:0] M_ARADDR; + output [address_bus_width-1:0] M_AWADDR; + output [data_bus_width-1:0] M_WDATA; + output [axi_cache_width-1:0] M_ARCACHE; + output [axi_len_width-1:0] M_ARLEN; + output [axi_qos_width-1:0] M_ARQOS; // not connected to AXI BFM + output [axi_cache_width-1:0] M_AWCACHE; + output [axi_len_width-1:0] M_AWLEN; + output [axi_qos_width-1:0] M_AWQOS; // not connected to AXI BFM + output [(data_bus_width/8)-1:0] M_WSTRB; + input M_ACLK; + input M_ARREADY; + input M_AWREADY; + input M_BVALID; + input M_RLAST; + input M_RVALID; + input M_WREADY; + input [id_bus_width-1:0] M_BID; + input [id_bus_width-1:0] M_RID; + input [axi_rsp_width-1:0] M_BRESP; + input [axi_rsp_width-1:0] M_RRESP; + input [data_bus_width-1:0] M_RDATA; + + wire net_RESETN; + wire net_RVALID; + wire net_BVALID; + reg DEBUG_INFO = 1'b1; + reg STOP_ON_ERROR = 1'b1; + + integer use_id_no = 0; + + assign M_ARQOS = 'b0; + assign M_AWQOS = 'b0; + assign net_RESETN = M_RESETN; //ENABLE_THIS_PORT ? M_RESETN : 1'b0; + assign net_RVALID = enable_this_port ? M_RVALID : 1'b0; + assign net_BVALID = enable_this_port ? M_BVALID : 1'b0; + + initial begin + if(DEBUG_INFO) begin + if(enable_this_port) + $display("[%0d] : %0s : %0s : Port is ENABLED.",$time, DISP_INFO, master_name); + else + $display("[%0d] : %0s : %0s : Port is DISABLED.",$time, DISP_INFO, master_name); + end + end + + initial master.set_disable_reset_value_checks(1); + initial begin + repeat(2) @(posedge M_ACLK); + if(!enable_this_port) begin + master.set_channel_level_info(0); + master.set_function_level_info(0); + end + master.RESPONSE_TIMEOUT = 0; + end + + cdn_axi3_master_bfm #(master_name, + data_bus_width, + address_bus_width, + id_bus_width, + max_outstanding_transactions, + exclusive_access_supported) + + master (.ACLK (M_ACLK), + .ARESETn (net_RESETN), /// confirm this + // Write Address Channel + .AWID (M_AWID), + .AWADDR (M_AWADDR), + .AWLEN (M_AWLEN), + .AWSIZE (M_AWSIZE), + .AWBURST (M_AWBURST), + .AWLOCK (M_AWLOCK), + .AWCACHE (M_AWCACHE), + .AWPROT (M_AWPROT), + .AWVALID (M_AWVALID), + .AWREADY (M_AWREADY), + // Write Data Channel Signals. + .WID (M_WID), + .WDATA (M_WDATA), + .WSTRB (M_WSTRB), + .WLAST (M_WLAST), + .WVALID (M_WVALID), + .WREADY (M_WREADY), + // Write Response Channel Signals. + .BID (M_BID), + .BRESP (M_BRESP), + .BVALID (net_BVALID), + .BREADY (M_BREADY), + // Read Address Channel Signals. + .ARID (M_ARID), + .ARADDR (M_ARADDR), + .ARLEN (M_ARLEN), + .ARSIZE (M_ARSIZE), + .ARBURST (M_ARBURST), + .ARLOCK (M_ARLOCK), + .ARCACHE (M_ARCACHE), + .ARPROT (M_ARPROT), + .ARVALID (M_ARVALID), + .ARREADY (M_ARREADY), + // Read Data Channel Signals. + .RID (M_RID), + .RDATA (M_RDATA), + .RRESP (M_RRESP), + .RLAST (M_RLAST), + .RVALID (net_RVALID), + .RREADY (M_RREADY)); + + +/* Call to BFM APIs */ +task automatic read_burst(input [address_bus_width-1:0] addr,input [axi_len_width-1:0] len,input [axi_size_width-1:0] siz,input [axi_brst_type_width-1:0] burst,input [axi_lock_width-1:0] lck,input [axi_cache_width-1:0] cache,input [axi_prot_width-1:0] prot,output [(axi_mgp_data_width*axi_burst_len)-1:0] data, output [(axi_rsp_width*axi_burst_len)-1:0] response); + if(enable_this_port)begin + if(lck !== AXI_NRML) + master.READ_BURST(EXCL_ID,addr,len,siz,burst,lck,cache,prot,data,response); + else + master.READ_BURST(get_id(1),addr,len,siz,burst,lck,cache,prot,data,response); + end else begin + $display("[%0d] : %0s : %0s : Port is disabled. 'read_burst' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; + end +endtask + +task automatic write_burst(input [address_bus_width-1:0] addr,input [axi_len_width-1:0] len,input [axi_size_width-1:0] siz,input [axi_brst_type_width-1:0] burst,input [axi_lock_width-1:0] lck,input [axi_cache_width-1:0] cache,input [axi_prot_width-1:0] prot,input [(axi_mgp_data_width*axi_burst_len)-1:0] data,input integer datasize, output [axi_rsp_width-1:0] response); + if(enable_this_port)begin + if(lck !== AXI_NRML) + master.WRITE_BURST(EXCL_ID,addr,len,siz,burst,lck,cache,prot,data,datasize,response); + else + master.WRITE_BURST(get_id(1),addr,len,siz,burst,lck,cache,prot,data,datasize,response); + end else begin + $display("[%0d] : %0s : %0s : Port is disabled. 'write_burst' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; + end +endtask + +task automatic write_burst_concurrent(input [address_bus_width-1:0] addr,input [axi_len_width-1:0] len,input [axi_size_width-1:0] siz,input [axi_brst_type_width-1:0] burst,input [axi_lock_width-1:0] lck,input [axi_cache_width-1:0] cache,input [axi_prot_width-1:0] prot,input [(axi_mgp_data_width*axi_burst_len)-1:0] data,input integer datasize, output [axi_rsp_width-1:0] response); + if(enable_this_port)begin + if(lck !== AXI_NRML) + master.WRITE_BURST_CONCURRENT(EXCL_ID,addr,len,siz,burst,lck,cache,prot,data,datasize,response); + else + master.WRITE_BURST_CONCURRENT(get_id(1),addr,len,siz,burst,lck,cache,prot,data,datasize,response); + end else begin + $display("[%0d] : %0s : %0s : Port is disabled. 'write_burst_concurrent' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; + end +endtask + +/* local */ +function automatic[id_bus_width-1:0] get_id; +input dummy; +begin + case(use_id_no) + // l2m1 (CPU000) + 0 : get_id = 12'b11_000_000_00_00; + 1 : get_id = 12'b11_010_000_00_00; + 2 : get_id = 12'b11_011_000_00_00; + 3 : get_id = 12'b11_100_000_00_00; + 4 : get_id = 12'b11_101_000_00_00; + 5 : get_id = 12'b11_110_000_00_00; + 6 : get_id = 12'b11_111_000_00_00; + // l2m1 (CPU001) + 7 : get_id = 12'b11_000_001_00_00; + 8 : get_id = 12'b11_010_001_00_00; + 9 : get_id = 12'b11_011_001_00_00; + 10 : get_id = 12'b11_100_001_00_00; + 11 : get_id = 12'b11_101_001_00_00; + 12 : get_id = 12'b11_110_001_00_00; + 13 : get_id = 12'b11_111_001_00_00; + endcase + if(use_id_no == 13) + use_id_no = 0; + else + use_id_no = use_id_no+1; +end +endfunction + +/* Write data from file */ +task automatic write_from_file; +input [(max_chars*8)-1:0] file_name; +input [addr_width-1:0] start_addr; +input [int_width-1:0] wr_size; +output [axi_rsp_width-1:0] response; +reg [axi_rsp_width-1:0] wresp,rwrsp; +reg [addr_width-1:0] addr; +reg [(axi_burst_len*data_bus_width)-1 : 0] wr_data; +integer bytes; +integer trnsfr_bytes; +integer wr_fd; +integer succ; +integer trnsfr_lngth; +reg concurrent; + +reg [id_bus_width-1:0] wr_id; +reg [axi_size_width-1:0] siz; +reg [axi_brst_type_width-1:0] burst; +reg [axi_lock_width-1:0] lck; +reg [axi_cache_width-1:0] cache; +reg [axi_prot_width-1:0] prot; +begin +if(!enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. 'write_from_file' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; +end else begin + siz = 2; + burst = 1; + lck = 0; + cache = 0; + prot = 0; + + addr = start_addr; + bytes = wr_size; + wresp = 0; + concurrent = $random; + if(bytes > (axi_burst_len * data_bus_width/8)) + trnsfr_bytes = (axi_burst_len * data_bus_width/8); + else + trnsfr_bytes = bytes; + + if(bytes > (axi_burst_len * data_bus_width/8)) + trnsfr_lngth = axi_burst_len-1; + else if(bytes%(data_bus_width/8) == 0) + trnsfr_lngth = bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = bytes/(data_bus_width/8); + + wr_id = get_id(1); + wr_fd = $fopen(file_name,"r"); + + while (bytes > 0) begin + repeat(axi_burst_len) begin /// get the data for 1 AXI burst transaction + wr_data = wr_data >> data_bus_width; + succ = $fscanf(wr_fd,"%h",wr_data[(axi_burst_len*data_bus_width)-1 :(axi_burst_len*data_bus_width)-data_bus_width ]); /// write as 4 bytes (data_bus_width) .. + end + if(concurrent) + master.WRITE_BURST_CONCURRENT(wr_id, addr, trnsfr_lngth, siz, burst, lck, cache, prot, wr_data, trnsfr_bytes, rwrsp); + else + master.WRITE_BURST(wr_id, addr, trnsfr_lngth, siz, burst, lck, cache, prot, wr_data, trnsfr_bytes, rwrsp); + bytes = bytes - trnsfr_bytes; + addr = addr + trnsfr_bytes; + if(bytes >= (axi_burst_len * data_bus_width/8) ) + trnsfr_bytes = (axi_burst_len * data_bus_width/8); // + else + trnsfr_bytes = bytes; + + if(bytes > (axi_burst_len * data_bus_width/8)) + trnsfr_lngth = axi_burst_len-1; + else if(bytes%(data_bus_width/8) == 0) + trnsfr_lngth = bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = bytes/(data_bus_width/8); + + wresp = wresp | rwrsp; + end /// while + response = wresp; +end +end +endtask + +/* Read data to file */ +task automatic read_to_file; +input [(max_chars*8)-1:0] file_name; +input [addr_width-1:0] start_addr; +input [int_width-1:0] rd_size; +output [axi_rsp_width-1:0] response; +reg [axi_rsp_width-1:0] rresp, rrrsp; +reg [addr_width-1:0] addr; +integer bytes; +integer trnsfr_lngth; +reg [(axi_burst_len*data_bus_width)-1 :0] rd_data; +integer rd_fd; +reg [id_bus_width-1:0] rd_id; + +reg [axi_size_width-1:0] siz; +reg [axi_brst_type_width-1:0] burst; +reg [axi_lock_width-1:0] lck; +reg [axi_cache_width-1:0] cache; +reg [axi_prot_width-1:0] prot; +begin +if(!enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. 'read_to_file' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; +end else begin + siz = 2; + burst = 1; + lck = 0; + cache = 0; + prot = 0; + + addr = start_addr; + rresp = 0; + bytes = rd_size; + + rd_id = get_id(1'b1); + + if(bytes > (axi_burst_len * data_bus_width/8)) + trnsfr_lngth = axi_burst_len-1; + else if(bytes%(data_bus_width/8) == 0) + trnsfr_lngth = bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = bytes/(data_bus_width/8); + + rd_fd = $fopen(file_name,"w"); + + while (bytes > 0) begin + master.READ_BURST(rd_id, addr, trnsfr_lngth, siz, burst, lck, cache, prot, rd_data, rrrsp); + repeat(trnsfr_lngth+1) begin + $fdisplayh(rd_fd,rd_data[data_bus_width-1:0]); + rd_data = rd_data >> data_bus_width; + end + + addr = addr + (trnsfr_lngth+1)*4; + + if(bytes >= (axi_burst_len * data_bus_width/8) ) + bytes = bytes - (axi_burst_len * data_bus_width/8); // + else + bytes = 0; + + if(bytes > (axi_burst_len * data_bus_width/8)) + trnsfr_lngth = axi_burst_len-1; + else if(bytes%(data_bus_width/8) == 0) + trnsfr_lngth = bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = bytes/(data_bus_width/8); + + rresp = rresp | rrrsp; + end /// while + response = rresp; +end +end +endtask + +/* Write data (used for transfer size <= 128 Bytes */ +task automatic write_data; +input [addr_width-1:0] start_addr; +input [max_transfer_bytes_width:0] wr_size; +input [(max_transfer_bytes*8)-1:0] w_data; +output [axi_rsp_width-1:0] response; +reg [axi_rsp_width-1:0] wresp,rwrsp; +reg [addr_width-1:0] addr; +reg [7:0] bytes,tmp_bytes; +integer trnsfr_bytes; +reg [(max_transfer_bytes*8)-1:0] wr_data; +integer trnsfr_lngth; +reg concurrent; + +reg [id_bus_width-1:0] wr_id; +reg [axi_size_width-1:0] siz; +reg [axi_brst_type_width-1:0] burst; +reg [axi_lock_width-1:0] lck; +reg [axi_cache_width-1:0] cache; +reg [axi_prot_width-1:0] prot; + +integer pad_bytes; +begin +if(!enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. 'write_data' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; +end else begin + addr = start_addr; + bytes = wr_size; + wresp = 0; + wr_data = w_data; + concurrent = $random; + siz = 2; + burst = 1; + lck = 0; + cache = 0; + prot = 0; + pad_bytes = start_addr[clogb2(data_bus_width/8)-1:0]; + wr_id = get_id(1); + if(bytes+pad_bytes > (data_bus_width/8*axi_burst_len)) begin /// for unaligned address + trnsfr_bytes = (data_bus_width*axi_burst_len)/8 - pad_bytes;//start_addr[1:0]; + trnsfr_lngth = axi_burst_len-1; + end else begin + trnsfr_bytes = bytes; + tmp_bytes = bytes + pad_bytes;//start_addr[1:0]; + if(tmp_bytes%(data_bus_width/8) == 0) + trnsfr_lngth = tmp_bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = tmp_bytes/(data_bus_width/8); + end + + while (bytes > 0) begin + if(concurrent) + master.WRITE_BURST_CONCURRENT(wr_id, addr, trnsfr_lngth, siz, burst, lck, cache, prot, wr_data[(axi_burst_len*data_bus_width)-1:0], trnsfr_bytes, rwrsp); + else + master.WRITE_BURST(wr_id, addr, trnsfr_lngth, siz, burst, lck, cache, prot, wr_data[(axi_burst_len*data_bus_width)-1:0], trnsfr_bytes, rwrsp); + wr_data = wr_data >> (trnsfr_bytes*8); + bytes = bytes - trnsfr_bytes; + addr = addr + trnsfr_bytes; + if(bytes > (axi_burst_len * data_bus_width/8)) begin + trnsfr_bytes = (axi_burst_len * data_bus_width/8) - pad_bytes;//start_addr[1:0]; + trnsfr_lngth = axi_burst_len-1; + end else begin + trnsfr_bytes = bytes; + tmp_bytes = bytes + pad_bytes;//start_addr[1:0]; + if(tmp_bytes%(data_bus_width/8) == 0) + trnsfr_lngth = tmp_bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = tmp_bytes/(data_bus_width/8); + end + wresp = wresp | rwrsp; + end /// while + response = wresp; +end +end +endtask + +/* Read data (used for transfer size <= 128 Bytes */ +task automatic read_data; +input [addr_width-1:0] start_addr; +input [max_transfer_bytes_width:0] rd_size; +output [(max_transfer_bytes*8)-1:0] r_data; +output [axi_rsp_width-1:0] response; +reg [axi_rsp_width-1:0] rresp,rdrsp; +reg [addr_width-1:0] addr; +reg [max_transfer_bytes_width:0] bytes,tmp_bytes; +integer trnsfr_bytes; +reg [(max_transfer_bytes*8)-1 : 0] rd_data; +reg [(axi_burst_len*data_bus_width)-1:0] rcv_rd_data; +integer total_rcvd_bytes; +integer trnsfr_lngth; +integer i; +reg [id_bus_width-1:0] rd_id; + +reg [axi_size_width-1:0] siz; +reg [axi_brst_type_width-1:0] burst; +reg [axi_lock_width-1:0] lck; +reg [axi_cache_width-1:0] cache; +reg [axi_prot_width-1:0] prot; + +integer pad_bytes; + +begin +if(!enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. 'read_data' will not be executed...",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; +end else begin + addr = start_addr; + bytes = rd_size; + rresp = 0; + total_rcvd_bytes = 0; + rd_data = 0; + rd_id = get_id(1'b1); + + siz = 2; + burst = 1; + lck = 0; + cache = 0; + prot = 0; + pad_bytes = start_addr[clogb2(data_bus_width/8)-1:0]; + + if(bytes+ pad_bytes > (axi_burst_len * data_bus_width/8)) begin /// for unaligned address + trnsfr_bytes = (axi_burst_len * data_bus_width/8) - pad_bytes;//start_addr[1:0]; + trnsfr_lngth = axi_burst_len-1; + end else begin + trnsfr_bytes = bytes; + tmp_bytes = bytes + pad_bytes;//start_addr[1:0]; + if(tmp_bytes%(data_bus_width/8) == 0) + trnsfr_lngth = tmp_bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = tmp_bytes/(data_bus_width/8); + end + while (bytes > 0) begin + master.READ_BURST(rd_id,addr, trnsfr_lngth, siz, burst, lck, cache, prot, rcv_rd_data, rdrsp); + for(i = 0; i < trnsfr_bytes; i = i+1) begin + rd_data = rd_data >> 8; + rd_data[(max_transfer_bytes*8)-1 : (max_transfer_bytes*8)-8] = rcv_rd_data[7:0]; + rcv_rd_data = rcv_rd_data >> 8; + total_rcvd_bytes = total_rcvd_bytes+1; + end + bytes = bytes - trnsfr_bytes; + addr = addr + trnsfr_bytes; + if(bytes > (axi_burst_len * data_bus_width/8)) begin + trnsfr_bytes = (axi_burst_len * data_bus_width/8) - pad_bytes;//start_addr[1:0]; + trnsfr_lngth = 15; + end else begin + trnsfr_bytes = bytes; + tmp_bytes = bytes + pad_bytes;//start_addr[1:0]; + if(tmp_bytes%(data_bus_width/8) == 0) + trnsfr_lngth = tmp_bytes/(data_bus_width/8) - 1; + else + trnsfr_lngth = tmp_bytes/(data_bus_width/8); + end + rresp = rresp | rdrsp; + end /// while + rd_data = rd_data >> (max_transfer_bytes - total_rcvd_bytes)*8; + r_data = rd_data; + response = rresp; +end +end +endtask + + +/* Wait Register Update in PL */ +/* Issue a series of 1 burst length reads until the expected data pattern is received */ + +task automatic wait_reg_update; +input [addr_width-1:0] addri; +input [data_width-1:0] datai; +input [data_width-1:0] maski; +input [int_width-1:0] time_interval; +input [int_width-1:0] time_out; +output [data_width-1:0] data_o; +output upd_done; + +reg [addr_width-1:0] addr; +reg [data_width-1:0] data_i; +reg [data_width-1:0] mask_i; +integer time_int; +integer timeout; + +reg [axi_rsp_width-1:0] rdrsp; +reg [id_bus_width-1:0] rd_id; +reg [axi_size_width-1:0] siz; +reg [axi_brst_type_width-1:0] burst; +reg [axi_lock_width-1:0] lck; +reg [axi_cache_width-1:0] cache; +reg [axi_prot_width-1:0] prot; +reg [data_width-1:0] rcv_data; +integer trnsfr_lngth; +reg rd_loop; +reg timed_out; +integer i; +integer cycle_cnt; + +begin +addr = addri; +data_i = datai; +mask_i = maski; +time_int = time_interval; +timeout = time_out; +timed_out = 0; +cycle_cnt = 0; + +if(!enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. 'wait_reg_update' will not be executed...",$time, DISP_ERR, master_name); + upd_done = 0; + if(STOP_ON_ERROR) $stop; +end else begin + rd_id = get_id(1'b1); + siz = 2; + burst = 1; + lck = 0; + cache = 0; + prot = 0; + trnsfr_lngth = 0; + rd_loop = 1; + fork + begin + while(!timed_out & rd_loop) begin + cycle_cnt = cycle_cnt + 1; + if(cycle_cnt >= timeout) timed_out = 1; + @(posedge M_ACLK); + end + end + begin + while (rd_loop) begin + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Reading Register mapped at Address(0x%0h) ",$time, master_name, DISP_INFO, addr); + master.READ_BURST(rd_id,addr, trnsfr_lngth, siz, burst, lck, cache, prot, rcv_data, rdrsp); + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Reading Register returned (0x%0h) ",$time, master_name, DISP_INFO, rcv_data); + if(((rcv_data & ~mask_i) === (data_i & ~mask_i)) | timed_out) + rd_loop = 0; + else + repeat(time_int) @(posedge M_ACLK); + end /// while + end + join + data_o = rcv_data & ~mask_i; + if(timed_out) begin + $display("[%0d] : %0s : %0s : 'wait_reg_update' timed out ... Register is not updated ",$time, DISP_ERR, master_name); + if(STOP_ON_ERROR) $stop; + end else + upd_done = 1; +end +end +endtask + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_slave.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_slave.v new file mode 100644 index 0000000..17f1744 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_axi_slave.v @@ -0,0 +1,935 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_axi_slave.v + * + * Date : 2012-11 + * + * Description : Model that acts as PS AXI Slave port interface. + * It uses AXI3 Slave BFM + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_axi_slave ( + S_RESETN, + + S_ARREADY, + S_AWREADY, + S_BVALID, + S_RLAST, + S_RVALID, + S_WREADY, + S_BRESP, + S_RRESP, + S_RDATA, + S_BID, + S_RID, + S_ACLK, + S_ARVALID, + S_AWVALID, + S_BREADY, + S_RREADY, + S_WLAST, + S_WVALID, + S_ARBURST, + S_ARLOCK, + S_ARSIZE, + S_AWBURST, + S_AWLOCK, + S_AWSIZE, + S_ARPROT, + S_AWPROT, + S_ARADDR, + S_AWADDR, + S_WDATA, + S_ARCACHE, + S_ARLEN, + S_AWCACHE, + S_AWLEN, + S_WSTRB, + S_ARID, + S_AWID, + S_WID, + + S_AWQOS, + S_ARQOS, + + SW_CLK, + WR_DATA_ACK_OCM, + WR_DATA_ACK_DDR, + WR_ADDR, + WR_DATA, + WR_BYTES, + WR_DATA_VALID_OCM, + WR_DATA_VALID_DDR, + WR_QOS, + + RD_QOS, + RD_REQ_DDR, + RD_REQ_OCM, + RD_REQ_REG, + RD_ADDR, + RD_DATA_OCM, + RD_DATA_DDR, + RD_DATA_REG, + RD_BYTES, + RD_DATA_VALID_OCM, + RD_DATA_VALID_DDR, + RD_DATA_VALID_REG + +); + parameter enable_this_port = 0; + parameter slave_name = "Slave"; + parameter data_bus_width = 32; + parameter address_bus_width = 32; + parameter id_bus_width = 6; + parameter slave_base_address = 0; + parameter slave_high_address = 4; + parameter max_outstanding_transactions = 8; + parameter exclusive_access_supported = 0; + parameter max_wr_outstanding_transactions = 8; + parameter max_rd_outstanding_transactions = 8; + + `include "processing_system7_bfm_v2_0_local_params.v" + + /* Local parameters only for this module */ + /* Internal counters that are used as Read/Write pointers to the fifo's that store all the transaction info on all channles. + This parameter is used to define the width of these pointers --> depending on Maximum outstanding transactions supported. + 1-bit extra width than the no.of.bits needed to represent the outstanding transactions + Extra bit helps in generating the empty and full flags + */ + parameter int_wr_cntr_width = clogb2(max_wr_outstanding_transactions+1); + parameter int_rd_cntr_width = clogb2(max_rd_outstanding_transactions+1); + + /* RESP data */ + parameter rsp_fifo_bits = axi_rsp_width+id_bus_width; + parameter rsp_lsb = 0; + parameter rsp_msb = axi_rsp_width-1; + parameter rsp_id_lsb = rsp_msb + 1; + parameter rsp_id_msb = rsp_id_lsb + id_bus_width-1; + + input S_RESETN; + + output S_ARREADY; + output S_AWREADY; + output S_BVALID; + output S_RLAST; + output S_RVALID; + output S_WREADY; + output [axi_rsp_width-1:0] S_BRESP; + output [axi_rsp_width-1:0] S_RRESP; + output [data_bus_width-1:0] S_RDATA; + output [id_bus_width-1:0] S_BID; + output [id_bus_width-1:0] S_RID; + input S_ACLK; + input S_ARVALID; + input S_AWVALID; + input S_BREADY; + input S_RREADY; + input S_WLAST; + input S_WVALID; + input [axi_brst_type_width-1:0] S_ARBURST; + input [axi_lock_width-1:0] S_ARLOCK; + input [axi_size_width-1:0] S_ARSIZE; + input [axi_brst_type_width-1:0] S_AWBURST; + input [axi_lock_width-1:0] S_AWLOCK; + input [axi_size_width-1:0] S_AWSIZE; + input [axi_prot_width-1:0] S_ARPROT; + input [axi_prot_width-1:0] S_AWPROT; + input [address_bus_width-1:0] S_ARADDR; + input [address_bus_width-1:0] S_AWADDR; + input [data_bus_width-1:0] S_WDATA; + input [axi_cache_width-1:0] S_ARCACHE; + input [axi_cache_width-1:0] S_ARLEN; + + input [axi_qos_width-1:0] S_ARQOS; + + input [axi_cache_width-1:0] S_AWCACHE; + input [axi_len_width-1:0] S_AWLEN; + + input [axi_qos_width-1:0] S_AWQOS; + input [(data_bus_width/8)-1:0] S_WSTRB; + input [id_bus_width-1:0] S_ARID; + input [id_bus_width-1:0] S_AWID; + input [id_bus_width-1:0] S_WID; + + input SW_CLK; + input WR_DATA_ACK_DDR, WR_DATA_ACK_OCM; + output reg WR_DATA_VALID_DDR, WR_DATA_VALID_OCM; + output reg [max_burst_bits-1:0] WR_DATA; + output reg [addr_width-1:0] WR_ADDR; + output reg [max_burst_bytes_width:0] WR_BYTES; + output reg RD_REQ_OCM, RD_REQ_DDR, RD_REQ_REG; + output reg [addr_width-1:0] RD_ADDR; + input [max_burst_bits-1:0] RD_DATA_DDR,RD_DATA_OCM, RD_DATA_REG; + output reg[max_burst_bytes_width:0] RD_BYTES; + input RD_DATA_VALID_OCM,RD_DATA_VALID_DDR, RD_DATA_VALID_REG; + output reg [axi_qos_width-1:0] WR_QOS, RD_QOS; + wire net_ARVALID; + wire net_AWVALID; + wire net_WVALID; + + real s_aclk_period; + + cdn_axi3_slave_bfm #(slave_name, + data_bus_width, + address_bus_width, + id_bus_width, + slave_base_address, + (slave_high_address- slave_base_address), + max_outstanding_transactions, + 0, ///MEMORY_MODEL_MODE, + exclusive_access_supported) + slave (.ACLK (S_ACLK), + .ARESETn (S_RESETN), /// confirm this + // Write Address Channel + .AWID (S_AWID), + .AWADDR (S_AWADDR), + .AWLEN (S_AWLEN), + .AWSIZE (S_AWSIZE), + .AWBURST (S_AWBURST), + .AWLOCK (S_AWLOCK), + .AWCACHE (S_AWCACHE), + .AWPROT (S_AWPROT), + .AWVALID (net_AWVALID), + .AWREADY (S_AWREADY), + // Write Data Channel Signals. + .WID (S_WID), + .WDATA (S_WDATA), + .WSTRB (S_WSTRB), + .WLAST (S_WLAST), + .WVALID (net_WVALID), + .WREADY (S_WREADY), + // Write Response Channel Signals. + .BID (S_BID), + .BRESP (S_BRESP), + .BVALID (S_BVALID), + .BREADY (S_BREADY), + // Read Address Channel Signals. + .ARID (S_ARID), + .ARADDR (S_ARADDR), + .ARLEN (S_ARLEN), + .ARSIZE (S_ARSIZE), + .ARBURST (S_ARBURST), + .ARLOCK (S_ARLOCK), + .ARCACHE (S_ARCACHE), + .ARPROT (S_ARPROT), + .ARVALID (net_ARVALID), + .ARREADY (S_ARREADY), + // Read Data Channel Signals. + .RID (S_RID), + .RDATA (S_RDATA), + .RRESP (S_RRESP), + .RLAST (S_RLAST), + .RVALID (S_RVALID), + .RREADY (S_RREADY)); + + /* Latency type and Debug/Error Control */ + reg[1:0] latency_type = RANDOM_CASE; + reg DEBUG_INFO = 1; + reg STOP_ON_ERROR = 1'b1; + + /* WR_FIFO stores 32-bit address, valid data and valid bytes for each AXI Write burst transaction */ + reg [wr_fifo_data_bits-1:0] wr_fifo [0:max_wr_outstanding_transactions-1]; + reg [int_wr_cntr_width-1:0] wr_fifo_wr_ptr = 0, wr_fifo_rd_ptr = 0; + wire wr_fifo_empty; + + /* Store the awvalid receive time --- necessary for calculating the latency in sending the bresp*/ + reg [7:0] aw_time_cnt = 0, bresp_time_cnt = 0; + real awvalid_receive_time[0:max_wr_outstanding_transactions]; // store the time when a new awvalid is received + reg awvalid_flag[0:max_wr_outstanding_transactions]; // indicates awvalid is received + + /* Address Write Channel handshake*/ + reg[int_wr_cntr_width-1:0] aw_cnt = 0;// count of awvalid + + /* various FIFOs for storing the ADDR channel info */ + reg [axi_size_width-1:0] awsize [0:max_wr_outstanding_transactions-1]; + reg [axi_prot_width-1:0] awprot [0:max_wr_outstanding_transactions-1]; + reg [axi_lock_width-1:0] awlock [0:max_wr_outstanding_transactions-1]; + reg [axi_cache_width-1:0] awcache [0:max_wr_outstanding_transactions-1]; + reg [axi_brst_type_width-1:0] awbrst [0:max_wr_outstanding_transactions-1]; + reg [axi_len_width-1:0] awlen [0:max_wr_outstanding_transactions-1]; + reg aw_flag [0:max_wr_outstanding_transactions-1]; + reg [addr_width-1:0] awaddr [0:max_wr_outstanding_transactions-1]; + reg [id_bus_width-1:0] awid [0:max_wr_outstanding_transactions-1]; + reg [axi_qos_width-1:0] awqos [0:max_wr_outstanding_transactions-1]; + wire aw_fifo_full; // indicates awvalid_fifo is full (max outstanding transactions reached) + + /* internal fifos to store burst write data, ID & strobes*/ + reg [(data_bus_width*axi_burst_len)-1:0] burst_data [0:max_wr_outstanding_transactions-1]; + reg [max_burst_bytes_width:0] burst_valid_bytes [0:max_wr_outstanding_transactions-1]; /// total valid bytes received in a complete burst transfer + reg wlast_flag [0:max_wr_outstanding_transactions-1]; // flag to indicate WLAST received + wire wd_fifo_full; + + /* Write Data Channel and Write Response handshake signals*/ + reg [int_wr_cntr_width-1:0] wd_cnt = 0; + reg [(data_bus_width*axi_burst_len)-1:0] aligned_wr_data; + reg [addr_width-1:0] aligned_wr_addr; + reg [max_burst_bytes_width:0] valid_data_bytes; + reg [int_wr_cntr_width-1:0] wr_bresp_cnt = 0; + reg [axi_rsp_width-1:0] bresp; + reg [rsp_fifo_bits-1:0] fifo_bresp [0:max_wr_outstanding_transactions-1]; // store the ID and its corresponding response + reg enable_write_bresp; + reg [int_wr_cntr_width-1:0] rd_bresp_cnt = 0; + integer wr_latency_count; + reg wr_delayed; + wire bresp_fifo_empty; + + /* states for managing read/write to WR_FIFO */ + parameter SEND_DATA = 0, WAIT_ACK = 1; + reg state; + + /* Qos*/ + reg [axi_qos_width-1:0] ar_qos, aw_qos; + + initial begin + if(DEBUG_INFO) begin + if(enable_this_port) + $display("[%0d] : %0s : %0s : Port is ENABLED.",$time, DISP_INFO, slave_name); + else + $display("[%0d] : %0s : %0s : Port is DISABLED.",$time, DISP_INFO, slave_name); + end + end + + initial slave.set_disable_reset_value_checks(1); + initial begin + repeat(2) @(posedge S_ACLK); + if(!enable_this_port) begin + slave.set_channel_level_info(0); + slave.set_function_level_info(0); + end + slave.RESPONSE_TIMEOUT = 0; + end + /*--------------------------------------------------------------------------------*/ + + /* Set Latency type to be used */ + task set_latency_type; + input[1:0] lat; + begin + if(enable_this_port) + latency_type = lat; + else begin + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Port is disabled. 'Latency Profile' will not be set...",$time, DISP_WARN, slave_name); + end + end + endtask + /*--------------------------------------------------------------------------------*/ + + /* Set ARQoS to be used */ + task set_arqos; + input[axi_qos_width-1:0] qos; + begin + if(enable_this_port) + ar_qos = qos; + else begin + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Port is disabled. 'ARQOS' will not be set...",$time, DISP_WARN, slave_name); + end + + end + endtask + /*--------------------------------------------------------------------------------*/ + + /* Set AWQoS to be used */ + task set_awqos; + input[axi_qos_width-1:0] qos; + begin + if(enable_this_port) + aw_qos = qos; + else begin + if(DEBUG_INFO) + $display("[%0d] : %0s : %0s : Port is disabled. 'AWQOS' will not be set...",$time, DISP_WARN, slave_name); + end + end + endtask + /*--------------------------------------------------------------------------------*/ + /* get the wr latency number */ + function [31:0] get_wr_lat_number; + input dummy; + reg[1:0] temp; + begin + case(latency_type) + BEST_CASE : if(slave_name == axi_acp_name) get_wr_lat_number = acp_wr_min; else get_wr_lat_number = gp_wr_min; + AVG_CASE : if(slave_name == axi_acp_name) get_wr_lat_number = acp_wr_avg; else get_wr_lat_number = gp_wr_avg; + WORST_CASE : if(slave_name == axi_acp_name) get_wr_lat_number = acp_wr_max; else get_wr_lat_number = gp_wr_max; + default : begin // RANDOM_CASE + temp = $random; + case(temp) + 2'b00 : if(slave_name == axi_acp_name) get_wr_lat_number = ($random()%10+ acp_wr_min); else get_wr_lat_number = ($random()%10+ gp_wr_min); + 2'b01 : if(slave_name == axi_acp_name) get_wr_lat_number = ($random()%40+ acp_wr_avg); else get_wr_lat_number = ($random()%40+ gp_wr_avg); + default : if(slave_name == axi_acp_name) get_wr_lat_number = ($random()%60+ acp_wr_max); else get_wr_lat_number = ($random()%60+ gp_wr_max); + endcase + end + endcase + end + endfunction + /*--------------------------------------------------------------------------------*/ + + /* get the rd latency number */ + function [31:0] get_rd_lat_number; + input dummy; + reg[1:0] temp; + begin + case(latency_type) + BEST_CASE : if(slave_name == axi_acp_name) get_rd_lat_number = acp_rd_min; else get_rd_lat_number = gp_rd_min; + AVG_CASE : if(slave_name == axi_acp_name) get_rd_lat_number = acp_rd_avg; else get_rd_lat_number = gp_rd_avg; + WORST_CASE : if(slave_name == axi_acp_name) get_rd_lat_number = acp_rd_max; else get_rd_lat_number = gp_rd_max; + default : begin // RANDOM_CASE + temp = $random; + case(temp) + 2'b00 : if(slave_name == axi_acp_name) get_rd_lat_number = ($random()%10+ acp_rd_min); else get_rd_lat_number = ($random()%10+ gp_rd_min); + 2'b01 : if(slave_name == axi_acp_name) get_rd_lat_number = ($random()%40+ acp_rd_avg); else get_rd_lat_number = ($random()%40+ gp_rd_avg); + default : if(slave_name == axi_acp_name) get_rd_lat_number = ($random()%60+ acp_rd_max); else get_rd_lat_number = ($random()%60+ gp_rd_max); + endcase + end + endcase + end + endfunction + /*--------------------------------------------------------------------------------*/ + + /* Store the Clock cycle time period */ + always@(S_RESETN) + begin + if(S_RESETN) begin + @(posedge S_ACLK); + s_aclk_period = $time; + @(posedge S_ACLK); + s_aclk_period = $time - s_aclk_period; + end + end + /*--------------------------------------------------------------------------------*/ + + /* Check for any WRITE/READs when this port is disabled */ + always@(S_AWVALID or S_WVALID or S_ARVALID) + begin + if((S_AWVALID | S_WVALID | S_ARVALID) && !enable_this_port) begin + $display("[%0d] : %0s : %0s : Port is disabled. AXI transaction is initiated on this port ...\nSimulation will halt ..",$time, DISP_ERR, slave_name); + $stop; + end + end + + /*--------------------------------------------------------------------------------*/ + + + assign net_ARVALID = enable_this_port ? S_ARVALID : 1'b0; + assign net_AWVALID = enable_this_port ? S_AWVALID : 1'b0; + assign net_WVALID = enable_this_port ? S_WVALID : 1'b0; + + assign wr_fifo_empty = (wr_fifo_wr_ptr === wr_fifo_rd_ptr)?1'b1: 1'b0; + assign aw_fifo_full = ((aw_cnt[int_wr_cntr_width-1] !== rd_bresp_cnt[int_wr_cntr_width-1]) && (aw_cnt[int_wr_cntr_width-2:0] === rd_bresp_cnt[int_wr_cntr_width-2:0]))?1'b1 :1'b0; /// complete this + assign wd_fifo_full = ((wd_cnt[int_wr_cntr_width-1] !== rd_bresp_cnt[int_wr_cntr_width-1]) && (wd_cnt[int_wr_cntr_width-2:0] === rd_bresp_cnt[int_wr_cntr_width-2:0]))?1'b1 :1'b0; /// complete this + assign bresp_fifo_empty = (wr_bresp_cnt === rd_bresp_cnt)?1'b1:1'b0; + + + /* Store the awvalid receive time --- necessary for calculating the bresp latency */ + always@(negedge S_RESETN or S_AWID or S_AWADDR or S_AWVALID ) + begin + if(!S_RESETN) + aw_time_cnt = 0; + else begin + if(S_AWVALID) begin + awvalid_receive_time[aw_time_cnt] = $time; + awvalid_flag[aw_time_cnt] = 1'b1; + aw_time_cnt = aw_time_cnt + 1; + if(aw_time_cnt === max_wr_outstanding_transactions) aw_time_cnt = 0; + end + end // else + end /// always + /*--------------------------------------------------------------------------------*/ + always@(posedge S_ACLK) + begin + if(net_AWVALID && S_AWREADY) begin + if(S_AWQOS === 0) awqos[aw_cnt[int_wr_cntr_width-2:0]] = aw_qos; + else awqos[aw_cnt[int_wr_cntr_width-2:0]] = S_AWQOS; + end + end + /*--------------------------------------------------------------------------------*/ + + always@(aw_fifo_full) + begin + if(aw_fifo_full && DEBUG_INFO) + $display("[%0d] : %0s : %0s : Reached the maximum outstanding Write transactions limit (%0d). Blocking all future Write transactions until at least 1 of the outstanding Write transaction has completed.",$time, DISP_INFO, slave_name,max_wr_outstanding_transactions); + end + /*--------------------------------------------------------------------------------*/ + + /* Address Write Channel handshake*/ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + aw_cnt = 0; + end else begin + if(!aw_fifo_full) begin + slave.RECEIVE_WRITE_ADDRESS(0, + id_invalid, + awaddr[aw_cnt[int_wr_cntr_width-2:0]], + awlen[aw_cnt[int_wr_cntr_width-2:0]], + awsize[aw_cnt[int_wr_cntr_width-2:0]], + awbrst[aw_cnt[int_wr_cntr_width-2:0]], + awlock[aw_cnt[int_wr_cntr_width-2:0]], + awcache[aw_cnt[int_wr_cntr_width-2:0]], + awprot[aw_cnt[int_wr_cntr_width-2:0]], + awid[aw_cnt[int_wr_cntr_width-2:0]]); /// sampled valid ID. + aw_flag[aw_cnt[int_wr_cntr_width-2:0]] = 1; + aw_cnt = aw_cnt + 1; + if(aw_cnt[int_wr_cntr_width-2:0] === (max_wr_outstanding_transactions-1)) begin + aw_cnt[int_wr_cntr_width-1] = ~aw_cnt[int_wr_cntr_width-1]; + aw_cnt[int_wr_cntr_width-2:0] = 0; + end + end // if (!aw_fifo_full) + end /// if else + end /// always + /*--------------------------------------------------------------------------------*/ + + /* Write Data Channel Handshake */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + wd_cnt = 0; + end else begin + if(!wd_fifo_full && S_WVALID) begin + slave.RECEIVE_WRITE_BURST_NO_CHECKS(S_WID, + burst_data[wd_cnt[int_wr_cntr_width-2:0]], + burst_valid_bytes[wd_cnt[int_wr_cntr_width-2:0]]); + wlast_flag[wd_cnt[int_wr_cntr_width-2:0]] = 1'b1; + wd_cnt = wd_cnt + 1; + if(wd_cnt[int_wr_cntr_width-2:0] === (max_wr_outstanding_transactions-1)) begin + wd_cnt[int_wr_cntr_width-1] = ~wd_cnt[int_wr_cntr_width-1]; + wd_cnt[int_wr_cntr_width-2:0] = 0; + end + end /// if + end /// else + end /// always + /*--------------------------------------------------------------------------------*/ + + /* Align the wrap data for write transaction */ + task automatic get_wrap_aligned_wr_data; + output [(data_bus_width*axi_burst_len)-1:0] aligned_data; + output [addr_width-1:0] start_addr; /// aligned start address + input [addr_width-1:0] addr; + input [(data_bus_width*axi_burst_len)-1:0] b_data; + input [max_burst_bytes_width:0] v_bytes; + reg [(data_bus_width*axi_burst_len)-1:0] temp_data, wrp_data; + integer wrp_bytes; + integer i; + begin + start_addr = (addr/v_bytes) * v_bytes; + wrp_bytes = addr - start_addr; + wrp_data = b_data; + temp_data = 0; + wrp_data = wrp_data << ((data_bus_width*axi_burst_len) - (v_bytes*8)); + while(wrp_bytes > 0) begin /// get the data that is wrapped + temp_data = temp_data << 8; + temp_data[7:0] = wrp_data[(data_bus_width*axi_burst_len)-1 : (data_bus_width*axi_burst_len)-8]; + wrp_data = wrp_data << 8; + wrp_bytes = wrp_bytes - 1; + end + wrp_bytes = addr - start_addr; + wrp_data = b_data << (wrp_bytes*8); + + aligned_data = (temp_data | wrp_data); + end + endtask + /*--------------------------------------------------------------------------------*/ + + /* Calculate the Response for each read/write transaction */ + function [axi_rsp_width-1:0] calculate_resp; + input rd_wr; // indicates Read(1) or Write(0) transaction + input [addr_width-1:0] awaddr; + input [axi_prot_width-1:0] awprot; + reg [axi_rsp_width-1:0] rsp; + begin + rsp = AXI_OK; + /* Address Decode */ + if(decode_address(awaddr) === INVALID_MEM_TYPE) begin + rsp = AXI_SLV_ERR; //slave error + $display("[%0d] : %0s : %0s : AXI Access to Invalid location(0x%0h) ",$time, DISP_ERR, slave_name, awaddr); + end + if(!rd_wr && decode_address(awaddr) === REG_MEM) begin + rsp = AXI_SLV_ERR; //slave error + $display("[%0d] : %0s : %0s : AXI Write to Register Map(0x%0h) is not supported ",$time, DISP_ERR, slave_name, awaddr); + end + if(secure_access_enabled && awprot[1]) + rsp = AXI_DEC_ERR; // decode error + calculate_resp = rsp; + end + endfunction + /*--------------------------------------------------------------------------------*/ + + /* Store the Write response for each write transaction */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + wr_bresp_cnt = 0; + wr_fifo_wr_ptr = 0; + end else begin + enable_write_bresp = aw_flag[wr_bresp_cnt[int_wr_cntr_width-2:0]] && wlast_flag[wr_bresp_cnt[int_wr_cntr_width-2:0]]; + /* calculate bresp only when AWVALID && WLAST is received */ + if(enable_write_bresp) begin + aw_flag[wr_bresp_cnt[int_wr_cntr_width-2:0]] = 0; + wlast_flag[wr_bresp_cnt[int_wr_cntr_width-2:0]] = 0; + + bresp = calculate_resp(1'b0, awaddr[wr_bresp_cnt[int_wr_cntr_width-2:0]],awprot[wr_bresp_cnt[int_wr_cntr_width-2:0]]); + fifo_bresp[wr_bresp_cnt[int_wr_cntr_width-2:0]] = {awid[wr_bresp_cnt[int_wr_cntr_width-2:0]],bresp}; + /* Fill WR data FIFO */ + if(bresp === AXI_OK) begin + if(awbrst[wr_bresp_cnt[int_wr_cntr_width-2:0]] === AXI_WRAP) begin /// wrap type? then align the data + get_wrap_aligned_wr_data(aligned_wr_data,aligned_wr_addr, awaddr[wr_bresp_cnt[int_wr_cntr_width-2:0]],burst_data[wr_bresp_cnt[int_wr_cntr_width-2:0]],burst_valid_bytes[wr_bresp_cnt[int_wr_cntr_width-2:0]]); /// gives wrapped start address + end else begin + aligned_wr_data = burst_data[wr_bresp_cnt[int_wr_cntr_width-2:0]]; + aligned_wr_addr = awaddr[wr_bresp_cnt[int_wr_cntr_width-2:0]] ; + end + valid_data_bytes = burst_valid_bytes[wr_bresp_cnt[int_wr_cntr_width-2:0]]; + end else + valid_data_bytes = 0; + + wr_fifo[wr_fifo_wr_ptr[int_wr_cntr_width-2:0]] = {awqos[wr_bresp_cnt[int_wr_cntr_width-2:0]], aligned_wr_data, aligned_wr_addr, valid_data_bytes}; + wr_fifo_wr_ptr = wr_fifo_wr_ptr + 1; + wr_bresp_cnt = wr_bresp_cnt+1; + if(wr_bresp_cnt[int_wr_cntr_width-2:0] === (max_wr_outstanding_transactions-1)) begin + wr_bresp_cnt[int_wr_cntr_width-1] = ~ wr_bresp_cnt[int_wr_cntr_width-1]; + wr_bresp_cnt[int_wr_cntr_width-2:0] = 0; + end + end + end // else + end // always + /*--------------------------------------------------------------------------------*/ + + /* Send Write Response Channel handshake */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + rd_bresp_cnt = 0; + wr_latency_count = get_wr_lat_number(1); + wr_delayed = 0; + bresp_time_cnt = 0; + end else begin + wr_delayed = 1'b0; + if(awvalid_flag[bresp_time_cnt] && (($time - awvalid_receive_time[bresp_time_cnt])/s_aclk_period >= wr_latency_count)) + wr_delayed = 1; + if(!bresp_fifo_empty && wr_delayed) begin + slave.SEND_WRITE_RESPONSE(fifo_bresp[rd_bresp_cnt[int_wr_cntr_width-2:0]][rsp_id_msb : rsp_id_lsb], // ID + fifo_bresp[rd_bresp_cnt[int_wr_cntr_width-2:0]][rsp_msb : rsp_lsb] // Response + ); + wr_delayed = 0; + awvalid_flag[bresp_time_cnt] = 1'b0; + bresp_time_cnt = bresp_time_cnt+1; + rd_bresp_cnt = rd_bresp_cnt + 1; + if(rd_bresp_cnt[int_wr_cntr_width-2:0] === (max_wr_outstanding_transactions-1)) begin + rd_bresp_cnt[int_wr_cntr_width-1] = ~ rd_bresp_cnt[int_wr_cntr_width-1]; + rd_bresp_cnt[int_wr_cntr_width-2:0] = 0; + end + if(bresp_time_cnt === max_wr_outstanding_transactions) begin + bresp_time_cnt = 0; + end + wr_latency_count = get_wr_lat_number(1); + end + end // else + end//always + /*--------------------------------------------------------------------------------*/ + + /* Reading from the wr_fifo */ + always@(negedge S_RESETN or posedge SW_CLK) begin + if(!S_RESETN) begin + WR_DATA_VALID_DDR = 1'b0; + WR_DATA_VALID_OCM = 1'b0; + wr_fifo_rd_ptr = 0; + state = SEND_DATA; + WR_QOS = 0; + end else begin + case(state) + SEND_DATA :begin + state = SEND_DATA; + WR_DATA_VALID_OCM = 0; + WR_DATA_VALID_DDR = 0; + if(!wr_fifo_empty) begin + WR_DATA = wr_fifo[wr_fifo_rd_ptr[int_wr_cntr_width-2:0]][wr_data_msb : wr_data_lsb]; + WR_ADDR = wr_fifo[wr_fifo_rd_ptr[int_wr_cntr_width-2:0]][wr_addr_msb : wr_addr_lsb]; + WR_BYTES = wr_fifo[wr_fifo_rd_ptr[int_wr_cntr_width-2:0]][wr_bytes_msb : wr_bytes_lsb]; + WR_QOS = wr_fifo[wr_fifo_rd_ptr[int_wr_cntr_width-2:0]][wr_qos_msb : wr_qos_lsb]; + state = WAIT_ACK; + case (decode_address(wr_fifo[wr_fifo_rd_ptr[int_wr_cntr_width-2:0]][wr_addr_msb : wr_addr_lsb])) + OCM_MEM : WR_DATA_VALID_OCM = 1; + DDR_MEM : WR_DATA_VALID_DDR = 1; + default : state = SEND_DATA; + endcase + wr_fifo_rd_ptr = wr_fifo_rd_ptr+1; + end + end + WAIT_ACK :begin + state = WAIT_ACK; + if(WR_DATA_ACK_OCM | WR_DATA_ACK_DDR) begin + WR_DATA_VALID_OCM = 1'b0; + WR_DATA_VALID_DDR = 1'b0; + state = SEND_DATA; + end + end + endcase + end + end + /*--------------------------------------------------------------------------------*/ +/*-------------------------------- WRITE HANDSHAKE END ----------------------------------------*/ + +/*-------------------------------- READ HANDSHAKE ---------------------------------------------*/ + + /* READ CHANNELS */ + /* Store the arvalid receive time --- necessary for calculating latency in sending the rresp latency */ + reg [7:0] ar_time_cnt = 0,rresp_time_cnt = 0; + real arvalid_receive_time[0:max_rd_outstanding_transactions]; // store the time when a new arvalid is received + reg arvalid_flag[0:max_rd_outstanding_transactions]; // store the time when a new arvalid is received + reg [int_rd_cntr_width-1:0] ar_cnt = 0; // counter for arvalid info + + /* various FIFOs for storing the ADDR channel info */ + reg [axi_size_width-1:0] arsize [0:max_rd_outstanding_transactions-1]; + reg [axi_prot_width-1:0] arprot [0:max_rd_outstanding_transactions-1]; + reg [axi_brst_type_width-1:0] arbrst [0:max_rd_outstanding_transactions-1]; + reg [axi_len_width-1:0] arlen [0:max_rd_outstanding_transactions-1]; + reg [axi_cache_width-1:0] arcache [0:max_rd_outstanding_transactions-1]; + reg [axi_lock_width-1:0] arlock [0:max_rd_outstanding_transactions-1]; + reg ar_flag [0:max_rd_outstanding_transactions-1]; + reg [addr_width-1:0] araddr [0:max_rd_outstanding_transactions-1]; + reg [id_bus_width-1:0] arid [0:max_rd_outstanding_transactions-1]; + reg [axi_qos_width-1:0] arqos [0:max_rd_outstanding_transactions-1]; + wire ar_fifo_full; // indicates arvalid_fifo is full (max outstanding transactions reached) + + reg [int_rd_cntr_width-1:0] rd_cnt = 0; + reg [int_rd_cntr_width-1:0] wr_rresp_cnt = 0; + reg [axi_rsp_width-1:0] rresp; + reg [rsp_fifo_bits-1:0] fifo_rresp [0:max_rd_outstanding_transactions-1]; // store the ID and its corresponding response + + /* Send Read Response & Data Channel handshake */ + integer rd_latency_count; + reg rd_delayed; + + reg [max_burst_bits-1:0] read_fifo [0:max_rd_outstanding_transactions-1]; /// Store only AXI Burst Data .. + reg [int_rd_cntr_width-1:0] rd_fifo_wr_ptr = 0, rd_fifo_rd_ptr = 0; + wire read_fifo_full; + + assign read_fifo_full = (rd_fifo_wr_ptr[int_rd_cntr_width-1] !== rd_fifo_rd_ptr[int_rd_cntr_width-1] && rd_fifo_wr_ptr[int_rd_cntr_width-2:0] === rd_fifo_rd_ptr[int_rd_cntr_width-2:0])?1'b1: 1'b0; + assign read_fifo_empty = (rd_fifo_wr_ptr === rd_fifo_rd_ptr)?1'b1: 1'b0; + assign ar_fifo_full = ((ar_cnt[int_rd_cntr_width-1] !== rd_cnt[int_rd_cntr_width-1]) && (ar_cnt[int_rd_cntr_width-2:0] === rd_cnt[int_rd_cntr_width-2:0]))?1'b1 :1'b0; + + /* Store the arvalid receive time --- necessary for calculating the bresp latency */ + always@(negedge S_RESETN or S_ARID or S_ARADDR or S_ARVALID ) + begin + if(!S_RESETN) + ar_time_cnt = 0; + else begin + if(S_ARVALID) begin + arvalid_receive_time[ar_time_cnt] = $time; + arvalid_flag[ar_time_cnt] = 1'b1; + ar_time_cnt = ar_time_cnt + 1; + if(ar_time_cnt === max_rd_outstanding_transactions) + ar_time_cnt = 0; + end + end // else + end /// always + /*--------------------------------------------------------------------------------*/ + always@(posedge S_ACLK) + begin + if(net_ARVALID && S_ARREADY) begin + if(S_ARQOS === 0) arqos[aw_cnt[int_rd_cntr_width-2:0]] = ar_qos; + else arqos[aw_cnt[int_rd_cntr_width-2:0]] = S_ARQOS; + end + end + /*--------------------------------------------------------------------------------*/ + + always@(ar_fifo_full) + begin + if(ar_fifo_full && DEBUG_INFO) + $display("[%0d] : %0s : %0s : Reached the maximum outstanding Read transactions limit (%0d). Blocking all future Read transactions until at least 1 of the outstanding Read transaction has completed.",$time, DISP_INFO, slave_name,max_rd_outstanding_transactions); + end + /*--------------------------------------------------------------------------------*/ + + /* Address Read Channel handshake*/ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN) begin + ar_cnt = 0; + end else begin + if(!ar_fifo_full) begin + slave.RECEIVE_READ_ADDRESS(0, + id_invalid, + araddr[ar_cnt[int_rd_cntr_width-2:0]], + arlen[ar_cnt[int_rd_cntr_width-2:0]], + arsize[ar_cnt[int_rd_cntr_width-2:0]], + arbrst[ar_cnt[int_rd_cntr_width-2:0]], + arlock[ar_cnt[int_rd_cntr_width-2:0]], + arcache[ar_cnt[int_rd_cntr_width-2:0]], + arprot[ar_cnt[int_rd_cntr_width-2:0]], + arid[ar_cnt[int_rd_cntr_width-2:0]]); /// sampled valid ID. + ar_flag[ar_cnt[int_rd_cntr_width-2:0]] = 1'b1; + ar_cnt = ar_cnt+1; + if(ar_cnt[int_rd_cntr_width-2:0] === max_rd_outstanding_transactions-1) begin + ar_cnt[int_rd_cntr_width-1] = ~ ar_cnt[int_rd_cntr_width-1]; + ar_cnt[int_rd_cntr_width-2:0] = 0; + end + end /// if(!ar_fifo_full) + end /// if else + end /// always*/ + /*--------------------------------------------------------------------------------*/ + + /* Align Wrap data for read transaction*/ + task automatic get_wrap_aligned_rd_data; + output [(data_bus_width*axi_burst_len)-1:0] aligned_data; + input [addr_width-1:0] addr; + input [(data_bus_width*axi_burst_len)-1:0] b_data; + input [max_burst_bytes_width:0] v_bytes; + reg [addr_width-1:0] start_addr; + reg [(data_bus_width*axi_burst_len)-1:0] temp_data, wrp_data; + integer wrp_bytes; + integer i; + begin + start_addr = (addr/v_bytes) * v_bytes; + wrp_bytes = addr - start_addr; + wrp_data = b_data; + temp_data = 0; + while(wrp_bytes > 0) begin /// get the data that is wrapped + temp_data = temp_data >> 8; + temp_data[(data_bus_width*axi_burst_len)-1 : (data_bus_width*axi_burst_len)-8] = wrp_data[7:0]; + wrp_data = wrp_data >> 8; + wrp_bytes = wrp_bytes - 1; + end + temp_data = temp_data >> ((data_bus_width*axi_burst_len) - (v_bytes*8)); + wrp_bytes = addr - start_addr; + wrp_data = b_data >> (wrp_bytes*8); + + aligned_data = (temp_data | wrp_data); + end + endtask + /*--------------------------------------------------------------------------------*/ + + parameter RD_DATA_REQ = 1'b0, WAIT_RD_VALID = 1'b1; + reg [addr_width-1:0] temp_read_address; + reg [max_burst_bytes_width:0] temp_rd_valid_bytes; + reg rd_fifo_state; + reg invalid_rd_req; + /* get the data from memory && also calculate the rresp*/ + always@(negedge S_RESETN or posedge SW_CLK) + begin + if(!S_RESETN)begin + rd_fifo_wr_ptr = 0; + wr_rresp_cnt =0; + rd_fifo_state = RD_DATA_REQ; + temp_rd_valid_bytes = 0; + temp_read_address = 0; + RD_REQ_DDR = 0; + RD_REQ_OCM = 0; + RD_REQ_REG = 0; + RD_QOS = 0; + invalid_rd_req = 0; + end else begin + case(rd_fifo_state) + RD_DATA_REQ : begin + rd_fifo_state = RD_DATA_REQ; + RD_REQ_DDR = 0; + RD_REQ_OCM = 0; + RD_REQ_REG = 0; + RD_QOS = 0; + if(ar_flag[wr_rresp_cnt[int_rd_cntr_width-2:0]] && !read_fifo_full) begin + ar_flag[wr_rresp_cnt[int_rd_cntr_width-2:0]] = 0; + rresp = calculate_resp(1'b1, araddr[wr_rresp_cnt[int_rd_cntr_width-2:0]],arprot[wr_rresp_cnt[int_rd_cntr_width-2:0]]); + fifo_rresp[wr_rresp_cnt[int_rd_cntr_width-2:0]] = {arid[wr_rresp_cnt[int_rd_cntr_width-2:0]],rresp}; + temp_rd_valid_bytes = (arlen[wr_rresp_cnt[int_rd_cntr_width-2:0]]+1)*(2**arsize[wr_rresp_cnt[int_rd_cntr_width-2:0]]);//data_bus_width/8; + + if(arbrst[wr_rresp_cnt[int_rd_cntr_width-2:0]] === AXI_WRAP) /// wrap begin + temp_read_address = (araddr[wr_rresp_cnt[int_rd_cntr_width-2:0]]/temp_rd_valid_bytes) * temp_rd_valid_bytes; + else + temp_read_address = araddr[wr_rresp_cnt[int_rd_cntr_width-2:0]]; + if(rresp === AXI_OK) begin + case(decode_address(temp_read_address))//decode_address(araddr[wr_rresp_cnt[int_rd_cntr_width-2:0]]); + OCM_MEM : RD_REQ_OCM = 1; + DDR_MEM : RD_REQ_DDR = 1; + REG_MEM : RD_REQ_REG = 1; + default : invalid_rd_req = 1; + endcase + end else + invalid_rd_req = 1; + + RD_QOS = arqos[wr_rresp_cnt[int_rd_cntr_width-2:0]]; + RD_ADDR = temp_read_address; ///araddr[wr_rresp_cnt[int_rd_cntr_width-2:0]]; + RD_BYTES = temp_rd_valid_bytes; + rd_fifo_state = WAIT_RD_VALID; + wr_rresp_cnt = wr_rresp_cnt + 1; + if(wr_rresp_cnt[int_rd_cntr_width-2:0] === max_rd_outstanding_transactions-1) begin + wr_rresp_cnt[int_rd_cntr_width-1] = ~ wr_rresp_cnt[int_rd_cntr_width-1]; + wr_rresp_cnt[int_rd_cntr_width-2:0] = 0; + end + end + end + WAIT_RD_VALID : begin + rd_fifo_state = WAIT_RD_VALID; + if(RD_DATA_VALID_OCM | RD_DATA_VALID_DDR | RD_DATA_VALID_REG | invalid_rd_req) begin ///temp_dec == 2'b11) begin + if(RD_DATA_VALID_DDR) + read_fifo[rd_fifo_wr_ptr[int_rd_cntr_width-2:0]] = RD_DATA_DDR; + else if(RD_DATA_VALID_OCM) + read_fifo[rd_fifo_wr_ptr[int_rd_cntr_width-2:0]] = RD_DATA_OCM; + else if(RD_DATA_VALID_REG) + read_fifo[rd_fifo_wr_ptr[int_rd_cntr_width-2:0]] = RD_DATA_REG; + else + read_fifo[rd_fifo_wr_ptr[int_rd_cntr_width-2:0]] = 0; + rd_fifo_wr_ptr = rd_fifo_wr_ptr + 1; + RD_REQ_DDR = 0; + RD_REQ_OCM = 0; + RD_REQ_REG = 0; + RD_QOS = 0; + invalid_rd_req = 0; + rd_fifo_state = RD_DATA_REQ; + end + end + endcase + end /// else + end /// always + + /*--------------------------------------------------------------------------------*/ + reg[max_burst_bytes_width:0] rd_v_b; + reg [(data_bus_width*axi_burst_len)-1:0] temp_read_data; + reg [(data_bus_width*axi_burst_len)-1:0] temp_wrap_data; + reg[(axi_rsp_width*axi_burst_len)-1:0] temp_read_rsp; + + /* Read Data Channel handshake */ + always@(negedge S_RESETN or posedge S_ACLK) + begin + if(!S_RESETN)begin + rd_fifo_rd_ptr = 0; + rd_cnt = 0; + rd_latency_count = get_rd_lat_number(1); + rd_delayed = 0; + rresp_time_cnt = 0; + rd_v_b = 0; + end else begin + if(arvalid_flag[rresp_time_cnt] && ((($time - arvalid_receive_time[rresp_time_cnt])/s_aclk_period) >= rd_latency_count)) + rd_delayed = 1; + if(!read_fifo_empty && rd_delayed)begin + rd_delayed = 0; + arvalid_flag[rresp_time_cnt] = 1'b0; + rd_v_b = ((arlen[rd_cnt[int_rd_cntr_width-2:0]]+1)*(2**arsize[rd_cnt[int_rd_cntr_width-2:0]])); + temp_read_data = read_fifo[rd_fifo_rd_ptr[int_rd_cntr_width-2:0]]; + rd_fifo_rd_ptr = rd_fifo_rd_ptr+1; + + if(arbrst[rd_cnt[int_rd_cntr_width-2:0]]=== AXI_WRAP) begin + get_wrap_aligned_rd_data(temp_wrap_data, araddr[rd_cnt[int_rd_cntr_width-2:0]], temp_read_data, rd_v_b); + temp_read_data = temp_wrap_data; + end + temp_read_rsp = 0; + repeat(axi_burst_len) begin + temp_read_rsp = temp_read_rsp >> axi_rsp_width; + temp_read_rsp[(axi_rsp_width*axi_burst_len)-1:(axi_rsp_width*axi_burst_len)-axi_rsp_width] = fifo_rresp[rd_cnt[int_rd_cntr_width-2:0]][rsp_msb : rsp_lsb]; + end + slave.SEND_READ_BURST_RESP_CTRL(arid[rd_cnt[int_rd_cntr_width-2:0]], + araddr[rd_cnt[int_rd_cntr_width-2:0]], + arlen[rd_cnt[int_rd_cntr_width-2:0]], + arsize[rd_cnt[int_rd_cntr_width-2:0]], + arbrst[rd_cnt[int_rd_cntr_width-2:0]], + temp_read_data, + temp_read_rsp); + rd_cnt = rd_cnt + 1; + rresp_time_cnt = rresp_time_cnt+1; + if(rresp_time_cnt === max_rd_outstanding_transactions) rresp_time_cnt = 0; + if(rd_cnt[int_rd_cntr_width-2:0] === (max_rd_outstanding_transactions-1)) begin + rd_cnt[int_rd_cntr_width-1] = ~ rd_cnt[int_rd_cntr_width-1]; + rd_cnt[int_rd_cntr_width-2:0] = 0; + end + rd_latency_count = get_rd_lat_number(1); + end + end /// else + end /// always +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ddrc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ddrc.v new file mode 100644 index 0000000..e244c9d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ddrc.v @@ -0,0 +1,268 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_ddrc.v + * + * Date : 2012-11 + * + * Description : Module that acts as controller for sparse memory (DDR). + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_ddrc( + rstn, + sw_clk, + +/* Goes to port 0 of DDR */ + ddr_wr_ack_port0, + ddr_wr_dv_port0, + ddr_rd_req_port0, + ddr_rd_dv_port0, + ddr_wr_addr_port0, + ddr_wr_data_port0, + ddr_wr_bytes_port0, + ddr_rd_addr_port0, + ddr_rd_data_port0, + ddr_rd_bytes_port0, + ddr_wr_qos_port0, + ddr_rd_qos_port0, + + +/* Goes to port 1 of DDR */ + ddr_wr_ack_port1, + ddr_wr_dv_port1, + ddr_rd_req_port1, + ddr_rd_dv_port1, + ddr_wr_addr_port1, + ddr_wr_data_port1, + ddr_wr_bytes_port1, + ddr_rd_addr_port1, + ddr_rd_data_port1, + ddr_rd_bytes_port1, + ddr_wr_qos_port1, + ddr_rd_qos_port1, + +/* Goes to port2 of DDR */ + ddr_wr_ack_port2, + ddr_wr_dv_port2, + ddr_rd_req_port2, + ddr_rd_dv_port2, + ddr_wr_addr_port2, + ddr_wr_data_port2, + ddr_wr_bytes_port2, + ddr_rd_addr_port2, + ddr_rd_data_port2, + ddr_rd_bytes_port2, + ddr_wr_qos_port2, + ddr_rd_qos_port2, + +/* Goes to port3 of DDR */ + ddr_wr_ack_port3, + ddr_wr_dv_port3, + ddr_rd_req_port3, + ddr_rd_dv_port3, + ddr_wr_addr_port3, + ddr_wr_data_port3, + ddr_wr_bytes_port3, + ddr_rd_addr_port3, + ddr_rd_data_port3, + ddr_rd_bytes_port3, + ddr_wr_qos_port3, + ddr_rd_qos_port3 + +); + +`include "processing_system7_bfm_v2_0_local_params.v" + +input rstn; +input sw_clk; + +output ddr_wr_ack_port0; +input ddr_wr_dv_port0; +input ddr_rd_req_port0; +output ddr_rd_dv_port0; +input[addr_width-1:0] ddr_wr_addr_port0; +input[max_burst_bits-1:0] ddr_wr_data_port0; +input[max_burst_bytes_width:0] ddr_wr_bytes_port0; +input[addr_width-1:0] ddr_rd_addr_port0; +output[max_burst_bits-1:0] ddr_rd_data_port0; +input[max_burst_bytes_width:0] ddr_rd_bytes_port0; +input [axi_qos_width-1:0] ddr_wr_qos_port0; +input [axi_qos_width-1:0] ddr_rd_qos_port0; + +output ddr_wr_ack_port1; +input ddr_wr_dv_port1; +input ddr_rd_req_port1; +output ddr_rd_dv_port1; +input[addr_width-1:0] ddr_wr_addr_port1; +input[max_burst_bits-1:0] ddr_wr_data_port1; +input[max_burst_bytes_width:0] ddr_wr_bytes_port1; +input[addr_width-1:0] ddr_rd_addr_port1; +output[max_burst_bits-1:0] ddr_rd_data_port1; +input[max_burst_bytes_width:0] ddr_rd_bytes_port1; +input[axi_qos_width-1:0] ddr_wr_qos_port1; +input[axi_qos_width-1:0] ddr_rd_qos_port1; + +output ddr_wr_ack_port2; +input ddr_wr_dv_port2; +input ddr_rd_req_port2; +output ddr_rd_dv_port2; +input[addr_width-1:0] ddr_wr_addr_port2; +input[max_burst_bits-1:0] ddr_wr_data_port2; +input[max_burst_bytes_width:0] ddr_wr_bytes_port2; +input[addr_width-1:0] ddr_rd_addr_port2; +output[max_burst_bits-1:0] ddr_rd_data_port2; +input[max_burst_bytes_width:0] ddr_rd_bytes_port2; +input[axi_qos_width-1:0] ddr_wr_qos_port2; +input[axi_qos_width-1:0] ddr_rd_qos_port2; + +output ddr_wr_ack_port3; +input ddr_wr_dv_port3; +input ddr_rd_req_port3; +output ddr_rd_dv_port3; +input[addr_width-1:0] ddr_wr_addr_port3; +input[max_burst_bits-1:0] ddr_wr_data_port3; +input[max_burst_bytes_width:0] ddr_wr_bytes_port3; +input[addr_width-1:0] ddr_rd_addr_port3; +output[max_burst_bits-1:0] ddr_rd_data_port3; +input[max_burst_bytes_width:0] ddr_rd_bytes_port3; +input[axi_qos_width-1:0] ddr_wr_qos_port3; +input[axi_qos_width-1:0] ddr_rd_qos_port3; + +wire [axi_qos_width-1:0] wr_qos; +wire wr_req; +wire [max_burst_bits-1:0] wr_data; +wire [addr_width-1:0] wr_addr; +wire [max_burst_bytes_width:0] wr_bytes; +reg wr_ack; + +wire [axi_qos_width-1:0] rd_qos; +reg [max_burst_bits-1:0] rd_data; +wire [addr_width-1:0] rd_addr; +wire [max_burst_bytes_width:0] rd_bytes; +reg rd_dv; +wire rd_req; + +processing_system7_bfm_v2_0_arb_wr_4 ddr_write_ports ( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(ddr_wr_qos_port0), + .qos2(ddr_wr_qos_port1), + .qos3(ddr_wr_qos_port2), + .qos4(ddr_wr_qos_port3), + + .prt_dv1(ddr_wr_dv_port0), + .prt_dv2(ddr_wr_dv_port1), + .prt_dv3(ddr_wr_dv_port2), + .prt_dv4(ddr_wr_dv_port3), + + .prt_data1(ddr_wr_data_port0), + .prt_data2(ddr_wr_data_port1), + .prt_data3(ddr_wr_data_port2), + .prt_data4(ddr_wr_data_port3), + + .prt_addr1(ddr_wr_addr_port0), + .prt_addr2(ddr_wr_addr_port1), + .prt_addr3(ddr_wr_addr_port2), + .prt_addr4(ddr_wr_addr_port3), + + .prt_bytes1(ddr_wr_bytes_port0), + .prt_bytes2(ddr_wr_bytes_port1), + .prt_bytes3(ddr_wr_bytes_port2), + .prt_bytes4(ddr_wr_bytes_port3), + + .prt_ack1(ddr_wr_ack_port0), + .prt_ack2(ddr_wr_ack_port1), + .prt_ack3(ddr_wr_ack_port2), + .prt_ack4(ddr_wr_ack_port3), + + .prt_qos(wr_qos), + .prt_req(wr_req), + .prt_data(wr_data), + .prt_addr(wr_addr), + .prt_bytes(wr_bytes), + .prt_ack(wr_ack) + +); + +processing_system7_bfm_v2_0_arb_rd_4 ddr_read_ports ( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(ddr_rd_qos_port0), + .qos2(ddr_rd_qos_port1), + .qos3(ddr_rd_qos_port2), + .qos4(ddr_rd_qos_port3), + + .prt_req1(ddr_rd_req_port0), + .prt_req2(ddr_rd_req_port1), + .prt_req3(ddr_rd_req_port2), + .prt_req4(ddr_rd_req_port3), + + .prt_data1(ddr_rd_data_port0), + .prt_data2(ddr_rd_data_port1), + .prt_data3(ddr_rd_data_port2), + .prt_data4(ddr_rd_data_port3), + + .prt_addr1(ddr_rd_addr_port0), + .prt_addr2(ddr_rd_addr_port1), + .prt_addr3(ddr_rd_addr_port2), + .prt_addr4(ddr_rd_addr_port3), + + .prt_bytes1(ddr_rd_bytes_port0), + .prt_bytes2(ddr_rd_bytes_port1), + .prt_bytes3(ddr_rd_bytes_port2), + .prt_bytes4(ddr_rd_bytes_port3), + + .prt_dv1(ddr_rd_dv_port0), + .prt_dv2(ddr_rd_dv_port1), + .prt_dv3(ddr_rd_dv_port2), + .prt_dv4(ddr_rd_dv_port3), + + .prt_qos(rd_qos), + .prt_req(rd_req), + .prt_data(rd_data), + .prt_addr(rd_addr), + .prt_bytes(rd_bytes), + .prt_dv(rd_dv) + +); + +processing_system7_bfm_v2_0_sparse_mem ddr(); + +reg [1:0] state; +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + wr_ack <= 0; + rd_dv <= 0; + state <= 2'd0; +end else begin + case(state) + 0:begin + state <= 0; + wr_ack <= 0; + rd_dv <= 0; + if(wr_req) begin + ddr.write_mem(wr_data , wr_addr, wr_bytes); + wr_ack <= 1; + state <= 1; + end + if(rd_req) begin + ddr.read_mem(rd_data,rd_addr, rd_bytes); + rd_dv <= 1; + state <= 1; + end + + end + 1:begin + wr_ack <= 0; + rd_dv <= 0; + state <= 0; + end + + endcase +end /// if +end// always + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_fmsw_gp.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_fmsw_gp.v new file mode 100644 index 0000000..00de7ba --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_fmsw_gp.v @@ -0,0 +1,300 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_fmsw_gp.v + * + * Date : 2012-11 + * + * Description : Mimics FMSW switch. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_fmsw_gp( + sw_clk, + rstn, + + w_qos_gp0, + r_qos_gp0, + wr_ack_ocm_gp0, + wr_ack_ddr_gp0, + wr_data_gp0, + wr_addr_gp0, + wr_bytes_gp0, + wr_dv_ocm_gp0, + wr_dv_ddr_gp0, + rd_req_ocm_gp0, + rd_req_ddr_gp0, + rd_req_reg_gp0, + rd_addr_gp0, + rd_bytes_gp0, + rd_data_ocm_gp0, + rd_data_ddr_gp0, + rd_data_reg_gp0, + rd_dv_ocm_gp0, + rd_dv_ddr_gp0, + rd_dv_reg_gp0, + + w_qos_gp1, + r_qos_gp1, + wr_ack_ocm_gp1, + wr_ack_ddr_gp1, + wr_data_gp1, + wr_addr_gp1, + wr_bytes_gp1, + wr_dv_ocm_gp1, + wr_dv_ddr_gp1, + rd_req_ocm_gp1, + rd_req_ddr_gp1, + rd_req_reg_gp1, + rd_addr_gp1, + rd_bytes_gp1, + rd_data_ocm_gp1, + rd_data_ddr_gp1, + rd_data_reg_gp1, + rd_dv_ocm_gp1, + rd_dv_ddr_gp1, + rd_dv_reg_gp1, + + ocm_wr_ack, + ocm_wr_dv, + ocm_rd_req, + ocm_rd_dv, + ddr_wr_ack, + ddr_wr_dv, + ddr_rd_req, + ddr_rd_dv, + + reg_rd_req, + reg_rd_dv, + + ocm_wr_qos, + ddr_wr_qos, + ocm_rd_qos, + ddr_rd_qos, + reg_rd_qos, + + ocm_wr_addr, + ocm_wr_data, + ocm_wr_bytes, + ocm_rd_addr, + ocm_rd_data, + ocm_rd_bytes, + + ddr_wr_addr, + ddr_wr_data, + ddr_wr_bytes, + ddr_rd_addr, + ddr_rd_data, + ddr_rd_bytes, + + reg_rd_addr, + reg_rd_data, + reg_rd_bytes + +); + +`include "processing_system7_bfm_v2_0_local_params.v" + +input sw_clk; +input rstn; + +input [axi_qos_width-1:0]w_qos_gp0; +input [axi_qos_width-1:0]r_qos_gp0; +input [axi_qos_width-1:0]w_qos_gp1; +input [axi_qos_width-1:0]r_qos_gp1; + +output [axi_qos_width-1:0]ocm_wr_qos; +output [axi_qos_width-1:0]ocm_rd_qos; +output [axi_qos_width-1:0]ddr_wr_qos; +output [axi_qos_width-1:0]ddr_rd_qos; +output [axi_qos_width-1:0]reg_rd_qos; + +output wr_ack_ocm_gp0; +output wr_ack_ddr_gp0; +input [max_burst_bits-1:0] wr_data_gp0; +input [addr_width-1:0] wr_addr_gp0; +input [max_burst_bytes_width:0] wr_bytes_gp0; +output wr_dv_ocm_gp0; +output wr_dv_ddr_gp0; + +input rd_req_ocm_gp0; +input rd_req_ddr_gp0; +input rd_req_reg_gp0; +input [addr_width-1:0] rd_addr_gp0; +input [max_burst_bytes_width:0] rd_bytes_gp0; +output [max_burst_bits-1:0] rd_data_ocm_gp0; +output [max_burst_bits-1:0] rd_data_ddr_gp0; +output [max_burst_bits-1:0] rd_data_reg_gp0; +output rd_dv_ocm_gp0; +output rd_dv_ddr_gp0; +output rd_dv_reg_gp0; + +output wr_ack_ocm_gp1; +output wr_ack_ddr_gp1; +input [max_burst_bits-1:0] wr_data_gp1; +input [addr_width-1:0] wr_addr_gp1; +input [max_burst_bytes_width:0] wr_bytes_gp1; +output wr_dv_ocm_gp1; +output wr_dv_ddr_gp1; + +input rd_req_ocm_gp1; +input rd_req_ddr_gp1; +input rd_req_reg_gp1; +input [addr_width-1:0] rd_addr_gp1; +input [max_burst_bytes_width:0] rd_bytes_gp1; +output [max_burst_bits-1:0] rd_data_ocm_gp1; +output [max_burst_bits-1:0] rd_data_ddr_gp1; +output [max_burst_bits-1:0] rd_data_reg_gp1; +output rd_dv_ocm_gp1; +output rd_dv_ddr_gp1; +output rd_dv_reg_gp1; + + +input ocm_wr_ack; +output ocm_wr_dv; +output [addr_width-1:0]ocm_wr_addr; +output [max_burst_bits-1:0]ocm_wr_data; +output [max_burst_bytes_width:0]ocm_wr_bytes; + +input ocm_rd_dv; +input [max_burst_bits-1:0] ocm_rd_data; +output ocm_rd_req; +output [addr_width-1:0] ocm_rd_addr; +output [max_burst_bytes_width:0] ocm_rd_bytes; + +input ddr_wr_ack; +output ddr_wr_dv; +output [addr_width-1:0]ddr_wr_addr; +output [max_burst_bits-1:0]ddr_wr_data; +output [max_burst_bytes_width:0]ddr_wr_bytes; + +input ddr_rd_dv; +input [max_burst_bits-1:0] ddr_rd_data; +output ddr_rd_req; +output [addr_width-1:0] ddr_rd_addr; +output [max_burst_bytes_width:0] ddr_rd_bytes; + +input reg_rd_dv; +input [max_burst_bits-1:0] reg_rd_data; +output reg_rd_req; +output [addr_width-1:0] reg_rd_addr; +output [max_burst_bytes_width:0] reg_rd_bytes; + + + +processing_system7_bfm_v2_0_arb_wr ocm_gp_wr( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(w_qos_gp0), + .qos2(w_qos_gp1), + .prt_dv1(wr_dv_ocm_gp0), + .prt_dv2(wr_dv_ocm_gp1), + .prt_data1(wr_data_gp0), + .prt_data2(wr_data_gp1), + .prt_addr1(wr_addr_gp0), + .prt_addr2(wr_addr_gp1), + .prt_bytes1(wr_bytes_gp0), + .prt_bytes2(wr_bytes_gp1), + .prt_ack1(wr_ack_ocm_gp0), + .prt_ack2(wr_ack_ocm_gp1), + .prt_req(ocm_wr_dv), + .prt_qos(ocm_wr_qos), + .prt_data(ocm_wr_data), + .prt_addr(ocm_wr_addr), + .prt_bytes(ocm_wr_bytes), + .prt_ack(ocm_wr_ack) +); + +processing_system7_bfm_v2_0_arb_wr ddr_gp_wr( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(w_qos_gp0), + .qos2(w_qos_gp1), + .prt_dv1(wr_dv_ddr_gp0), + .prt_dv2(wr_dv_ddr_gp1), + .prt_data1(wr_data_gp0), + .prt_data2(wr_data_gp1), + .prt_addr1(wr_addr_gp0), + .prt_addr2(wr_addr_gp1), + .prt_bytes1(wr_bytes_gp0), + .prt_bytes2(wr_bytes_gp1), + .prt_ack1(wr_ack_ddr_gp0), + .prt_ack2(wr_ack_ddr_gp1), + .prt_req(ddr_wr_dv), + .prt_qos(ddr_wr_qos), + .prt_data(ddr_wr_data), + .prt_addr(ddr_wr_addr), + .prt_bytes(ddr_wr_bytes), + .prt_ack(ddr_wr_ack) +); + +processing_system7_bfm_v2_0_arb_rd ocm_gp_rd( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(r_qos_gp0), + .qos2(r_qos_gp1), + .prt_req1(rd_req_ocm_gp0), + .prt_req2(rd_req_ocm_gp1), + .prt_data1(rd_data_ocm_gp0), + .prt_data2(rd_data_ocm_gp1), + .prt_addr1(rd_addr_gp0), + .prt_addr2(rd_addr_gp1), + .prt_bytes1(rd_bytes_gp0), + .prt_bytes2(rd_bytes_gp1), + .prt_dv1(rd_dv_ocm_gp0), + .prt_dv2(rd_dv_ocm_gp1), + .prt_req(ocm_rd_req), + .prt_qos(ocm_rd_qos), + .prt_data(ocm_rd_data), + .prt_addr(ocm_rd_addr), + .prt_bytes(ocm_rd_bytes), + .prt_dv(ocm_rd_dv) +); + +processing_system7_bfm_v2_0_arb_rd ddr_gp_rd( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(r_qos_gp0), + .qos2(r_qos_gp1), + .prt_req1(rd_req_ddr_gp0), + .prt_req2(rd_req_ddr_gp1), + .prt_data1(rd_data_ddr_gp0), + .prt_data2(rd_data_ddr_gp1), + .prt_addr1(rd_addr_gp0), + .prt_addr2(rd_addr_gp1), + .prt_bytes1(rd_bytes_gp0), + .prt_bytes2(rd_bytes_gp1), + .prt_dv1(rd_dv_ddr_gp0), + .prt_dv2(rd_dv_ddr_gp1), + .prt_req(ddr_rd_req), + .prt_qos(ddr_rd_qos), + .prt_data(ddr_rd_data), + .prt_addr(ddr_rd_addr), + .prt_bytes(ddr_rd_bytes), + .prt_dv(ddr_rd_dv) +); + +processing_system7_bfm_v2_0_arb_rd reg_gp_rd( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(r_qos_gp0), + .qos2(r_qos_gp1), + .prt_req1(rd_req_reg_gp0), + .prt_req2(rd_req_reg_gp1), + .prt_data1(rd_data_reg_gp0), + .prt_data2(rd_data_reg_gp1), + .prt_addr1(rd_addr_gp0), + .prt_addr2(rd_addr_gp1), + .prt_bytes1(rd_bytes_gp0), + .prt_bytes2(rd_bytes_gp1), + .prt_dv1(rd_dv_reg_gp0), + .prt_dv2(rd_dv_reg_gp1), + .prt_req(reg_rd_req), + .prt_qos(reg_rd_qos), + .prt_data(reg_rd_data), + .prt_addr(reg_rd_addr), + .prt_bytes(reg_rd_bytes), + .prt_dv(reg_rd_dv) +); + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_clock.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_clock.v new file mode 100644 index 0000000..4c94a39 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_clock.v @@ -0,0 +1,58 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_gen_clock.v + * + * Date : 2012-11 + * + * Description : Module that generates FCLK clocks and internal clock for Zynq BFM. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_gen_clock( + ps_clk, + sw_clk, + + fclk_clk3, + fclk_clk2, + fclk_clk1, + fclk_clk0 +); + +input ps_clk; +output sw_clk; + +output fclk_clk3; +output fclk_clk2; +output fclk_clk1; +output fclk_clk0; + +parameter freq_clk3 = 50; +parameter freq_clk2 = 50; +parameter freq_clk1 = 50; +parameter freq_clk0 = 50; + +reg clk0 = 1'b0; +reg clk1 = 1'b0; +reg clk2 = 1'b0; +reg clk3 = 1'b0; +reg sw_clk = 1'b0; + +assign fclk_clk0 = clk0; +assign fclk_clk1 = clk1; +assign fclk_clk2 = clk2; +assign fclk_clk3 = clk3; + +real clk3_p = (1000.00/freq_clk3)/2; +real clk2_p = (1000.00/freq_clk2)/2; +real clk1_p = (1000.00/freq_clk1)/2; +real clk0_p = (1000.00/freq_clk0)/2; + +always #(clk3_p) clk3 = !clk3; +always #(clk2_p) clk2 = !clk2; +always #(clk1_p) clk1 = !clk1; +always #(clk0_p) clk0 = !clk0; + +always #(0.5) sw_clk = !sw_clk; + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_reset.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_reset.v new file mode 100644 index 0000000..ea880db --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_gen_reset.v @@ -0,0 +1,225 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_gen_reset.v + * + * Date : 2012-11 + * + * Description : Module that generates FPGA_RESETs and synchronizes RESETs to the + * respective clocks. + *****************************************************************************/ + `timescale 1ns/1ps +module processing_system7_bfm_v2_0_gen_reset( + por_rst_n, + sys_rst_n, + rst_out_n, + + m_axi_gp0_clk, + m_axi_gp1_clk, + s_axi_gp0_clk, + s_axi_gp1_clk, + s_axi_hp0_clk, + s_axi_hp1_clk, + s_axi_hp2_clk, + s_axi_hp3_clk, + s_axi_acp_clk, + + m_axi_gp0_rstn, + m_axi_gp1_rstn, + s_axi_gp0_rstn, + s_axi_gp1_rstn, + s_axi_hp0_rstn, + s_axi_hp1_rstn, + s_axi_hp2_rstn, + s_axi_hp3_rstn, + s_axi_acp_rstn, + + fclk_reset3_n, + fclk_reset2_n, + fclk_reset1_n, + fclk_reset0_n, + + fpga_acp_reset_n, + fpga_gp_m0_reset_n, + fpga_gp_m1_reset_n, + fpga_gp_s0_reset_n, + fpga_gp_s1_reset_n, + fpga_hp_s0_reset_n, + fpga_hp_s1_reset_n, + fpga_hp_s2_reset_n, + fpga_hp_s3_reset_n + +); + +input por_rst_n; +input sys_rst_n; +input m_axi_gp0_clk; +input m_axi_gp1_clk; +input s_axi_gp0_clk; +input s_axi_gp1_clk; +input s_axi_hp0_clk; +input s_axi_hp1_clk; +input s_axi_hp2_clk; +input s_axi_hp3_clk; +input s_axi_acp_clk; + +output reg m_axi_gp0_rstn; +output reg m_axi_gp1_rstn; +output reg s_axi_gp0_rstn; +output reg s_axi_gp1_rstn; +output reg s_axi_hp0_rstn; +output reg s_axi_hp1_rstn; +output reg s_axi_hp2_rstn; +output reg s_axi_hp3_rstn; +output reg s_axi_acp_rstn; + +output rst_out_n; +output fclk_reset3_n; +output fclk_reset2_n; +output fclk_reset1_n; +output fclk_reset0_n; + +output fpga_acp_reset_n; +output fpga_gp_m0_reset_n; +output fpga_gp_m1_reset_n; +output fpga_gp_s0_reset_n; +output fpga_gp_s1_reset_n; +output fpga_hp_s0_reset_n; +output fpga_hp_s1_reset_n; +output fpga_hp_s2_reset_n; +output fpga_hp_s3_reset_n; + +reg [31:0] fabric_rst_n; + +reg r_m_axi_gp0_rstn; +reg r_m_axi_gp1_rstn; +reg r_s_axi_gp0_rstn; +reg r_s_axi_gp1_rstn; +reg r_s_axi_hp0_rstn; +reg r_s_axi_hp1_rstn; +reg r_s_axi_hp2_rstn; +reg r_s_axi_hp3_rstn; +reg r_s_axi_acp_rstn; + +assign rst_out_n = por_rst_n & sys_rst_n; + +assign fclk_reset0_n = !fabric_rst_n[0]; +assign fclk_reset1_n = !fabric_rst_n[1]; +assign fclk_reset2_n = !fabric_rst_n[2]; +assign fclk_reset3_n = !fabric_rst_n[3]; + +assign fpga_acp_reset_n = !fabric_rst_n[24]; + +assign fpga_hp_s3_reset_n = !fabric_rst_n[23]; +assign fpga_hp_s2_reset_n = !fabric_rst_n[22]; +assign fpga_hp_s1_reset_n = !fabric_rst_n[21]; +assign fpga_hp_s0_reset_n = !fabric_rst_n[20]; + +assign fpga_gp_s1_reset_n = !fabric_rst_n[17]; +assign fpga_gp_s0_reset_n = !fabric_rst_n[16]; +assign fpga_gp_m1_reset_n = !fabric_rst_n[13]; +assign fpga_gp_m0_reset_n = !fabric_rst_n[12]; + +task fpga_soft_reset; +input[31:0] reset_ctrl; + begin + fabric_rst_n[0] = reset_ctrl[0]; + fabric_rst_n[1] = reset_ctrl[1]; + fabric_rst_n[2] = reset_ctrl[2]; + fabric_rst_n[3] = reset_ctrl[3]; + + fabric_rst_n[12] = reset_ctrl[12]; + fabric_rst_n[13] = reset_ctrl[13]; + fabric_rst_n[16] = reset_ctrl[16]; + fabric_rst_n[17] = reset_ctrl[17]; + + fabric_rst_n[20] = reset_ctrl[20]; + fabric_rst_n[21] = reset_ctrl[21]; + fabric_rst_n[22] = reset_ctrl[22]; + fabric_rst_n[23] = reset_ctrl[23]; + + fabric_rst_n[24] = reset_ctrl[24]; + end +endtask + +always@(negedge por_rst_n or negedge sys_rst_n) fabric_rst_n = 32'h01f3_300f; + +always@(posedge m_axi_gp0_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + m_axi_gp0_rstn = 1'b0; + else + m_axi_gp0_rstn = 1'b1; + end + +always@(posedge m_axi_gp1_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + m_axi_gp1_rstn = 1'b0; + else + m_axi_gp1_rstn = 1'b1; + end + +always@(posedge s_axi_gp0_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_gp0_rstn = 1'b0; + else + s_axi_gp0_rstn = 1'b1; + end + +always@(posedge s_axi_gp1_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_gp1_rstn = 1'b0; + else + s_axi_gp1_rstn = 1'b1; + end + +always@(posedge s_axi_hp0_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_hp0_rstn = 1'b0; + else + s_axi_hp0_rstn = 1'b1; + end + +always@(posedge s_axi_hp1_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_hp1_rstn = 1'b0; + else + s_axi_hp1_rstn = 1'b1; + end + +always@(posedge s_axi_hp2_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_hp2_rstn = 1'b0; + else + s_axi_hp2_rstn = 1'b1; + end + +always@(posedge s_axi_hp3_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_hp3_rstn = 1'b0; + else + s_axi_hp3_rstn = 1'b1; + end + +always@(posedge s_axi_acp_clk or negedge (por_rst_n & sys_rst_n)) + begin + if (!(por_rst_n & sys_rst_n)) + s_axi_acp_rstn = 1'b0; + else + s_axi_acp_rstn = 1'b1; + end + + +always@(*) begin + if ((por_rst_n!= 1'b0) && (por_rst_n!= 1'b1) && (sys_rst_n != 1'b0) && (sys_rst_n != 1'b1)) begin + $display(" Error:processing_system7_bfm_v2_0_gen_reset. PS_PORB and PS_SRSTB must be driven to known state"); + $finish(); + end +end + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_interconnect_model.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_interconnect_model.v new file mode 100644 index 0000000..fc04be8 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_interconnect_model.v @@ -0,0 +1,662 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_interconnect_model.v + * + * Date : 2012-11 + * + * Description : Mimics Top_interconnect Switch. + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_interconnect_model ( + rstn, + sw_clk, + + w_qos_gp0, + w_qos_gp1, + w_qos_hp0, + w_qos_hp1, + w_qos_hp2, + w_qos_hp3, + + r_qos_gp0, + r_qos_gp1, + r_qos_hp0, + r_qos_hp1, + r_qos_hp2, + r_qos_hp3, + + wr_ack_ddr_gp0, + wr_ack_ocm_gp0, + wr_data_gp0, + wr_addr_gp0, + wr_bytes_gp0, + wr_dv_ddr_gp0, + wr_dv_ocm_gp0, + + rd_req_ddr_gp0, + rd_req_ocm_gp0, + rd_req_reg_gp0, + rd_addr_gp0, + rd_bytes_gp0, + rd_data_ddr_gp0, + rd_data_ocm_gp0, + rd_data_reg_gp0, + rd_dv_ddr_gp0, + rd_dv_ocm_gp0, + rd_dv_reg_gp0, + + wr_ack_ddr_gp1, + wr_ack_ocm_gp1, + wr_data_gp1, + wr_addr_gp1, + wr_bytes_gp1, + wr_dv_ddr_gp1, + wr_dv_ocm_gp1, + rd_req_ddr_gp1, + rd_req_ocm_gp1, + rd_req_reg_gp1, + rd_addr_gp1, + rd_bytes_gp1, + rd_data_ddr_gp1, + rd_data_ocm_gp1, + rd_data_reg_gp1, + rd_dv_ddr_gp1, + rd_dv_ocm_gp1, + rd_dv_reg_gp1, + + wr_ack_ddr_hp0, + wr_ack_ocm_hp0, + wr_data_hp0, + wr_addr_hp0, + wr_bytes_hp0, + wr_dv_ddr_hp0, + wr_dv_ocm_hp0, + rd_req_ddr_hp0, + rd_req_ocm_hp0, + rd_addr_hp0, + rd_bytes_hp0, + rd_data_ddr_hp0, + rd_data_ocm_hp0, + rd_dv_ddr_hp0, + rd_dv_ocm_hp0, + + wr_ack_ddr_hp1, + wr_ack_ocm_hp1, + wr_data_hp1, + wr_addr_hp1, + wr_bytes_hp1, + wr_dv_ddr_hp1, + wr_dv_ocm_hp1, + rd_req_ddr_hp1, + rd_req_ocm_hp1, + rd_addr_hp1, + rd_bytes_hp1, + rd_data_ddr_hp1, + rd_data_ocm_hp1, + rd_dv_ddr_hp1, + rd_dv_ocm_hp1, + + wr_ack_ddr_hp2, + wr_ack_ocm_hp2, + wr_data_hp2, + wr_addr_hp2, + wr_bytes_hp2, + wr_dv_ddr_hp2, + wr_dv_ocm_hp2, + rd_req_ddr_hp2, + rd_req_ocm_hp2, + rd_addr_hp2, + rd_bytes_hp2, + rd_data_ddr_hp2, + rd_data_ocm_hp2, + rd_dv_ddr_hp2, + rd_dv_ocm_hp2, + + wr_ack_ddr_hp3, + wr_ack_ocm_hp3, + wr_data_hp3, + wr_addr_hp3, + wr_bytes_hp3, + wr_dv_ddr_hp3, + wr_dv_ocm_hp3, + rd_req_ddr_hp3, + rd_req_ocm_hp3, + rd_addr_hp3, + rd_bytes_hp3, + rd_data_ddr_hp3, + rd_data_ocm_hp3, + rd_dv_ddr_hp3, + rd_dv_ocm_hp3, + +/* Goes to port 1 of DDR */ + ddr_wr_ack_port1, + ddr_wr_dv_port1, + ddr_rd_req_port1, + ddr_rd_dv_port1, + ddr_wr_addr_port1, + ddr_wr_data_port1, + ddr_wr_bytes_port1, + ddr_rd_addr_port1, + ddr_rd_data_port1, + ddr_rd_bytes_port1, + ddr_wr_qos_port1, + ddr_rd_qos_port1, + +/* Goes to port2 of DDR */ + ddr_wr_ack_port2, + ddr_wr_dv_port2, + ddr_rd_req_port2, + ddr_rd_dv_port2, + ddr_wr_addr_port2, + ddr_wr_data_port2, + ddr_wr_bytes_port2, + ddr_rd_addr_port2, + ddr_rd_data_port2, + ddr_rd_bytes_port2, + ddr_wr_qos_port2, + ddr_rd_qos_port2, + +/* Goes to port3 of DDR */ + ddr_wr_ack_port3, + ddr_wr_dv_port3, + ddr_rd_req_port3, + ddr_rd_dv_port3, + ddr_wr_addr_port3, + ddr_wr_data_port3, + ddr_wr_bytes_port3, + ddr_rd_addr_port3, + ddr_rd_data_port3, + ddr_rd_bytes_port3, + ddr_wr_qos_port3, + ddr_rd_qos_port3, + +/* Goes to port1 of OCM */ + ocm_wr_qos_port1, + ocm_rd_qos_port1, + ocm_wr_dv_port1, + ocm_wr_data_port1, + ocm_wr_addr_port1, + ocm_wr_bytes_port1, + ocm_wr_ack_port1, + ocm_rd_req_port1, + ocm_rd_data_port1, + ocm_rd_addr_port1, + ocm_rd_bytes_port1, + ocm_rd_dv_port1, + +/* Goes to port1 for RegMap */ + reg_rd_qos_port1, + reg_rd_req_port1, + reg_rd_data_port1, + reg_rd_addr_port1, + reg_rd_bytes_port1, + reg_rd_dv_port1 + +); +`include "processing_system7_bfm_v2_0_local_params.v" + +input rstn; +input sw_clk; + +input [axi_qos_width-1:0] w_qos_gp0; +input [axi_qos_width-1:0] w_qos_gp1; +input [axi_qos_width-1:0] w_qos_hp0; +input [axi_qos_width-1:0] w_qos_hp1; +input [axi_qos_width-1:0] w_qos_hp2; +input [axi_qos_width-1:0] w_qos_hp3; + +input [axi_qos_width-1:0] r_qos_gp0; +input [axi_qos_width-1:0] r_qos_gp1; +input [axi_qos_width-1:0] r_qos_hp0; +input [axi_qos_width-1:0] r_qos_hp1; +input [axi_qos_width-1:0] r_qos_hp2; +input [axi_qos_width-1:0] r_qos_hp3; + +output [axi_qos_width-1:0] ocm_wr_qos_port1; +output [axi_qos_width-1:0] ocm_rd_qos_port1; + +output wr_ack_ddr_gp0; +output wr_ack_ocm_gp0; +input[max_burst_bits-1:0] wr_data_gp0; +input[addr_width-1:0] wr_addr_gp0; +input[max_burst_bytes_width:0] wr_bytes_gp0; +input wr_dv_ddr_gp0; +input wr_dv_ocm_gp0; +input rd_req_ddr_gp0; +input rd_req_ocm_gp0; +input rd_req_reg_gp0; +input[addr_width-1:0] rd_addr_gp0; +input[max_burst_bytes_width:0] rd_bytes_gp0; +output[max_burst_bits-1:0] rd_data_ddr_gp0; +output[max_burst_bits-1:0] rd_data_ocm_gp0; +output[max_burst_bits-1:0] rd_data_reg_gp0; +output rd_dv_ddr_gp0; +output rd_dv_ocm_gp0; +output rd_dv_reg_gp0; + +output wr_ack_ddr_gp1; +output wr_ack_ocm_gp1; +input[max_burst_bits-1:0] wr_data_gp1; +input[addr_width-1:0] wr_addr_gp1; +input[max_burst_bytes_width:0] wr_bytes_gp1; +input wr_dv_ddr_gp1; +input wr_dv_ocm_gp1; +input rd_req_ddr_gp1; +input rd_req_ocm_gp1; +input rd_req_reg_gp1; +input[addr_width-1:0] rd_addr_gp1; +input[max_burst_bytes_width:0] rd_bytes_gp1; +output[max_burst_bits-1:0] rd_data_ddr_gp1; +output[max_burst_bits-1:0] rd_data_ocm_gp1; +output[max_burst_bits-1:0] rd_data_reg_gp1; +output rd_dv_ddr_gp1; +output rd_dv_ocm_gp1; +output rd_dv_reg_gp1; + +output wr_ack_ddr_hp0; +output wr_ack_ocm_hp0; +input[max_burst_bits-1:0] wr_data_hp0; +input[addr_width-1:0] wr_addr_hp0; +input[max_burst_bytes_width:0] wr_bytes_hp0; +input wr_dv_ddr_hp0; +input wr_dv_ocm_hp0; +input rd_req_ddr_hp0; +input rd_req_ocm_hp0; +input[addr_width-1:0] rd_addr_hp0; +input[max_burst_bytes_width:0] rd_bytes_hp0; +output[max_burst_bits-1:0] rd_data_ddr_hp0; +output[max_burst_bits-1:0] rd_data_ocm_hp0; +output rd_dv_ddr_hp0; +output rd_dv_ocm_hp0; + +output wr_ack_ddr_hp1; +output wr_ack_ocm_hp1; +input[max_burst_bits-1:0] wr_data_hp1; +input[addr_width-1:0] wr_addr_hp1; +input[max_burst_bytes_width:0] wr_bytes_hp1; +input wr_dv_ddr_hp1; +input wr_dv_ocm_hp1; +input rd_req_ddr_hp1; +input rd_req_ocm_hp1; +input[addr_width-1:0] rd_addr_hp1; +input[max_burst_bytes_width:0] rd_bytes_hp1; +output[max_burst_bits-1:0] rd_data_ddr_hp1; +output[max_burst_bits-1:0] rd_data_ocm_hp1; +output rd_dv_ddr_hp1; +output rd_dv_ocm_hp1; + +output wr_ack_ddr_hp2; +output wr_ack_ocm_hp2; +input[max_burst_bits-1:0] wr_data_hp2; +input[addr_width-1:0] wr_addr_hp2; +input[max_burst_bytes_width:0] wr_bytes_hp2; +input wr_dv_ddr_hp2; +input wr_dv_ocm_hp2; +input rd_req_ddr_hp2; +input rd_req_ocm_hp2; +input[addr_width-1:0] rd_addr_hp2; +input[max_burst_bytes_width:0] rd_bytes_hp2; +output[max_burst_bits-1:0] rd_data_ddr_hp2; +output[max_burst_bits-1:0] rd_data_ocm_hp2; +output rd_dv_ddr_hp2; +output rd_dv_ocm_hp2; + +output wr_ack_ddr_hp3; +output wr_ack_ocm_hp3; +input[max_burst_bits-1:0] wr_data_hp3; +input[addr_width-1:0] wr_addr_hp3; +input[max_burst_bytes_width:0] wr_bytes_hp3; +input wr_dv_ddr_hp3; +input wr_dv_ocm_hp3; +input rd_req_ddr_hp3; +input rd_req_ocm_hp3; +input[addr_width-1:0] rd_addr_hp3; +input[max_burst_bytes_width:0] rd_bytes_hp3; +output[max_burst_bits-1:0] rd_data_ddr_hp3; +output[max_burst_bits-1:0] rd_data_ocm_hp3; +output rd_dv_ddr_hp3; +output rd_dv_ocm_hp3; + +/* Goes to port 1 of DDR */ +input ddr_wr_ack_port1; +output ddr_wr_dv_port1; +output ddr_rd_req_port1; +input ddr_rd_dv_port1; +output[addr_width-1:0] ddr_wr_addr_port1; +output[max_burst_bits-1:0] ddr_wr_data_port1; +output[max_burst_bytes_width:0] ddr_wr_bytes_port1; +output[addr_width-1:0] ddr_rd_addr_port1; +input[max_burst_bits-1:0] ddr_rd_data_port1; +output[max_burst_bytes_width:0] ddr_rd_bytes_port1; +output [axi_qos_width-1:0] ddr_wr_qos_port1; +output [axi_qos_width-1:0] ddr_rd_qos_port1; + +/* Goes to port2 of DDR */ +input ddr_wr_ack_port2; +output ddr_wr_dv_port2; +output ddr_rd_req_port2; +input ddr_rd_dv_port2; +output[addr_width-1:0] ddr_wr_addr_port2; +output[max_burst_bits-1:0] ddr_wr_data_port2; +output[max_burst_bytes_width:0] ddr_wr_bytes_port2; +output[addr_width-1:0] ddr_rd_addr_port2; +input[max_burst_bits-1:0] ddr_rd_data_port2; +output[max_burst_bytes_width:0] ddr_rd_bytes_port2; +output [axi_qos_width-1:0] ddr_wr_qos_port2; +output [axi_qos_width-1:0] ddr_rd_qos_port2; + +/* Goes to port3 of DDR */ +input ddr_wr_ack_port3; +output ddr_wr_dv_port3; +output ddr_rd_req_port3; +input ddr_rd_dv_port3; +output[addr_width-1:0] ddr_wr_addr_port3; +output[max_burst_bits-1:0] ddr_wr_data_port3; +output[max_burst_bytes_width:0] ddr_wr_bytes_port3; +output[addr_width-1:0] ddr_rd_addr_port3; +input[max_burst_bits-1:0] ddr_rd_data_port3; +output[max_burst_bytes_width:0] ddr_rd_bytes_port3; +output [axi_qos_width-1:0] ddr_wr_qos_port3; +output [axi_qos_width-1:0] ddr_rd_qos_port3; + +/* Goes to port1 of OCM */ +input ocm_wr_ack_port1; +output ocm_wr_dv_port1; +output ocm_rd_req_port1; +input ocm_rd_dv_port1; +output[max_burst_bits-1:0] ocm_wr_data_port1; +output[addr_width-1:0] ocm_wr_addr_port1; +output[max_burst_bytes_width:0] ocm_wr_bytes_port1; +input[max_burst_bits-1:0] ocm_rd_data_port1; +output[addr_width-1:0] ocm_rd_addr_port1; +output[max_burst_bytes_width:0] ocm_rd_bytes_port1; + +/* Goes to port1 of REG */ +output [axi_qos_width-1:0] reg_rd_qos_port1; +output reg_rd_req_port1; +input reg_rd_dv_port1; +input[max_burst_bits-1:0] reg_rd_data_port1; +output[addr_width-1:0] reg_rd_addr_port1; +output[max_burst_bytes_width:0] reg_rd_bytes_port1; + +wire ocm_wr_dv_osw0; +wire ocm_wr_dv_osw1; +wire[max_burst_bits-1:0] ocm_wr_data_osw0; +wire[max_burst_bits-1:0] ocm_wr_data_osw1; +wire[addr_width-1:0] ocm_wr_addr_osw0; +wire[addr_width-1:0] ocm_wr_addr_osw1; +wire[max_burst_bytes_width:0] ocm_wr_bytes_osw0; +wire[max_burst_bytes_width:0] ocm_wr_bytes_osw1; +wire ocm_wr_ack_osw0; +wire ocm_wr_ack_osw1; +wire ocm_rd_req_osw0; +wire ocm_rd_req_osw1; +wire[max_burst_bits-1:0] ocm_rd_data_osw0; +wire[max_burst_bits-1:0] ocm_rd_data_osw1; +wire[addr_width-1:0] ocm_rd_addr_osw0; +wire[addr_width-1:0] ocm_rd_addr_osw1; +wire[max_burst_bytes_width:0] ocm_rd_bytes_osw0; +wire[max_burst_bytes_width:0] ocm_rd_bytes_osw1; +wire ocm_rd_dv_osw0; +wire ocm_rd_dv_osw1; + +wire [axi_qos_width-1:0] ocm_wr_qos_osw0; +wire [axi_qos_width-1:0] ocm_wr_qos_osw1; +wire [axi_qos_width-1:0] ocm_rd_qos_osw0; +wire [axi_qos_width-1:0] ocm_rd_qos_osw1; + + +processing_system7_bfm_v2_0_fmsw_gp fmsw ( + .sw_clk(sw_clk), + .rstn(rstn), + + .w_qos_gp0(w_qos_gp0), + .r_qos_gp0(r_qos_gp0), + .wr_ack_ocm_gp0(wr_ack_ocm_gp0), + .wr_ack_ddr_gp0(wr_ack_ddr_gp0), + .wr_data_gp0(wr_data_gp0), + .wr_addr_gp0(wr_addr_gp0), + .wr_bytes_gp0(wr_bytes_gp0), + .wr_dv_ocm_gp0(wr_dv_ocm_gp0), + .wr_dv_ddr_gp0(wr_dv_ddr_gp0), + .rd_req_ocm_gp0(rd_req_ocm_gp0), + .rd_req_ddr_gp0(rd_req_ddr_gp0), + .rd_req_reg_gp0(rd_req_reg_gp0), + .rd_addr_gp0(rd_addr_gp0), + .rd_bytes_gp0(rd_bytes_gp0), + .rd_data_ddr_gp0(rd_data_ddr_gp0), + .rd_data_ocm_gp0(rd_data_ocm_gp0), + .rd_data_reg_gp0(rd_data_reg_gp0), + .rd_dv_ocm_gp0(rd_dv_ocm_gp0), + .rd_dv_ddr_gp0(rd_dv_ddr_gp0), + .rd_dv_reg_gp0(rd_dv_reg_gp0), + + .w_qos_gp1(w_qos_gp1), + .r_qos_gp1(r_qos_gp1), + .wr_ack_ocm_gp1(wr_ack_ocm_gp1), + .wr_ack_ddr_gp1(wr_ack_ddr_gp1), + .wr_data_gp1(wr_data_gp1), + .wr_addr_gp1(wr_addr_gp1), + .wr_bytes_gp1(wr_bytes_gp1), + .wr_dv_ocm_gp1(wr_dv_ocm_gp1), + .wr_dv_ddr_gp1(wr_dv_ddr_gp1), + .rd_req_ocm_gp1(rd_req_ocm_gp1), + .rd_req_ddr_gp1(rd_req_ddr_gp1), + .rd_req_reg_gp1(rd_req_reg_gp1), + .rd_addr_gp1(rd_addr_gp1), + .rd_bytes_gp1(rd_bytes_gp1), + .rd_data_ddr_gp1(rd_data_ddr_gp1), + .rd_data_ocm_gp1(rd_data_ocm_gp1), + .rd_data_reg_gp1(rd_data_reg_gp1), + .rd_dv_ocm_gp1(rd_dv_ocm_gp1), + .rd_dv_ddr_gp1(rd_dv_ddr_gp1), + .rd_dv_reg_gp1(rd_dv_reg_gp1), + + .ocm_wr_ack (ocm_wr_ack_osw0), + .ocm_wr_dv (ocm_wr_dv_osw0), + .ocm_rd_req (ocm_rd_req_osw0), + .ocm_rd_dv (ocm_rd_dv_osw0), + .ocm_wr_addr(ocm_wr_addr_osw0), + .ocm_wr_data(ocm_wr_data_osw0), + .ocm_wr_bytes(ocm_wr_bytes_osw0), + .ocm_rd_addr(ocm_rd_addr_osw0), + .ocm_rd_data(ocm_rd_data_osw0), + .ocm_rd_bytes(ocm_rd_bytes_osw0), + + .ocm_wr_qos(ocm_wr_qos_osw0), + .ocm_rd_qos(ocm_rd_qos_osw0), + + .ddr_wr_qos(ddr_wr_qos_port1), + .ddr_rd_qos(ddr_rd_qos_port1), + + .reg_rd_qos(reg_rd_qos_port1), + + .ddr_wr_ack(ddr_wr_ack_port1), + .ddr_wr_dv(ddr_wr_dv_port1), + .ddr_rd_req(ddr_rd_req_port1), + .ddr_rd_dv(ddr_rd_dv_port1), + .ddr_wr_addr(ddr_wr_addr_port1), + .ddr_wr_data(ddr_wr_data_port1), + .ddr_wr_bytes(ddr_wr_bytes_port1), + .ddr_rd_addr(ddr_rd_addr_port1), + .ddr_rd_data(ddr_rd_data_port1), + .ddr_rd_bytes(ddr_rd_bytes_port1), + + .reg_rd_req(reg_rd_req_port1), + .reg_rd_dv(reg_rd_dv_port1), + .reg_rd_addr(reg_rd_addr_port1), + .reg_rd_data(reg_rd_data_port1), + .reg_rd_bytes(reg_rd_bytes_port1) +); + + +processing_system7_bfm_v2_0_ssw_hp ssw( + .sw_clk(sw_clk), + .rstn(rstn), + .w_qos_hp0(w_qos_hp0), + .r_qos_hp0(r_qos_hp0), + .w_qos_hp1(w_qos_hp1), + .r_qos_hp1(r_qos_hp1), + .w_qos_hp2(w_qos_hp2), + .r_qos_hp2(r_qos_hp2), + .w_qos_hp3(w_qos_hp3), + .r_qos_hp3(r_qos_hp3), + + .wr_ack_ddr_hp0(wr_ack_ddr_hp0), + .wr_data_hp0(wr_data_hp0), + .wr_addr_hp0(wr_addr_hp0), + .wr_bytes_hp0(wr_bytes_hp0), + .wr_dv_ddr_hp0(wr_dv_ddr_hp0), + .rd_req_ddr_hp0(rd_req_ddr_hp0), + .rd_addr_hp0(rd_addr_hp0), + .rd_bytes_hp0(rd_bytes_hp0), + .rd_data_ddr_hp0(rd_data_ddr_hp0), + .rd_data_ocm_hp0(rd_data_ocm_hp0), + .rd_dv_ddr_hp0(rd_dv_ddr_hp0), + + .wr_ack_ocm_hp0(wr_ack_ocm_hp0), + .wr_dv_ocm_hp0(wr_dv_ocm_hp0), + .rd_req_ocm_hp0(rd_req_ocm_hp0), + .rd_dv_ocm_hp0(rd_dv_ocm_hp0), + + .wr_ack_ddr_hp1(wr_ack_ddr_hp1), + .wr_data_hp1(wr_data_hp1), + .wr_addr_hp1(wr_addr_hp1), + .wr_bytes_hp1(wr_bytes_hp1), + .wr_dv_ddr_hp1(wr_dv_ddr_hp1), + .rd_req_ddr_hp1(rd_req_ddr_hp1), + .rd_addr_hp1(rd_addr_hp1), + .rd_bytes_hp1(rd_bytes_hp1), + .rd_data_ddr_hp1(rd_data_ddr_hp1), + .rd_data_ocm_hp1(rd_data_ocm_hp1), + .rd_dv_ddr_hp1(rd_dv_ddr_hp1), + + .wr_ack_ocm_hp1(wr_ack_ocm_hp1), + .wr_dv_ocm_hp1(wr_dv_ocm_hp1), + .rd_req_ocm_hp1(rd_req_ocm_hp1), + .rd_dv_ocm_hp1(rd_dv_ocm_hp1), + + .wr_ack_ddr_hp2(wr_ack_ddr_hp2), + .wr_data_hp2(wr_data_hp2), + .wr_addr_hp2(wr_addr_hp2), + .wr_bytes_hp2(wr_bytes_hp2), + .wr_dv_ddr_hp2(wr_dv_ddr_hp2), + .rd_req_ddr_hp2(rd_req_ddr_hp2), + .rd_addr_hp2(rd_addr_hp2), + .rd_bytes_hp2(rd_bytes_hp2), + .rd_data_ddr_hp2(rd_data_ddr_hp2), + .rd_data_ocm_hp2(rd_data_ocm_hp2), + .rd_dv_ddr_hp2(rd_dv_ddr_hp2), + + .wr_ack_ocm_hp2(wr_ack_ocm_hp2), + .wr_dv_ocm_hp2(wr_dv_ocm_hp2), + .rd_req_ocm_hp2(rd_req_ocm_hp2), + .rd_dv_ocm_hp2(rd_dv_ocm_hp2), + + .wr_ack_ddr_hp3(wr_ack_ddr_hp3), + .wr_data_hp3(wr_data_hp3), + .wr_addr_hp3(wr_addr_hp3), + .wr_bytes_hp3(wr_bytes_hp3), + .wr_dv_ddr_hp3(wr_dv_ddr_hp3), + .rd_req_ddr_hp3(rd_req_ddr_hp3), + .rd_addr_hp3(rd_addr_hp3), + .rd_bytes_hp3(rd_bytes_hp3), + .rd_data_ddr_hp3(rd_data_ddr_hp3), + .rd_data_ocm_hp3(rd_data_ocm_hp3), + .rd_dv_ddr_hp3(rd_dv_ddr_hp3), + + .wr_ack_ocm_hp3(wr_ack_ocm_hp3), + .wr_dv_ocm_hp3(wr_dv_ocm_hp3), + .rd_req_ocm_hp3(rd_req_ocm_hp3), + .rd_dv_ocm_hp3(rd_dv_ocm_hp3), + + .ddr_wr_ack0(ddr_wr_ack_port2), + .ddr_wr_dv0(ddr_wr_dv_port2), + .ddr_rd_req0(ddr_rd_req_port2), + .ddr_rd_dv0(ddr_rd_dv_port2), + .ddr_wr_addr0(ddr_wr_addr_port2), + .ddr_wr_data0(ddr_wr_data_port2), + .ddr_wr_bytes0(ddr_wr_bytes_port2), + .ddr_rd_addr0(ddr_rd_addr_port2), + .ddr_rd_data0(ddr_rd_data_port2), + .ddr_rd_bytes0(ddr_rd_bytes_port2), + .ddr_wr_qos0(ddr_wr_qos_port2), + .ddr_rd_qos0(ddr_rd_qos_port2), + + .ddr_wr_ack1(ddr_wr_ack_port3), + .ddr_wr_dv1(ddr_wr_dv_port3), + .ddr_rd_req1(ddr_rd_req_port3), + .ddr_rd_dv1(ddr_rd_dv_port3), + .ddr_wr_addr1(ddr_wr_addr_port3), + .ddr_wr_data1(ddr_wr_data_port3), + .ddr_wr_bytes1(ddr_wr_bytes_port3), + .ddr_rd_addr1(ddr_rd_addr_port3), + .ddr_rd_data1(ddr_rd_data_port3), + .ddr_rd_bytes1(ddr_rd_bytes_port3), + .ddr_wr_qos1(ddr_wr_qos_port3), + .ddr_rd_qos1(ddr_rd_qos_port3), + + .ocm_wr_qos(ocm_wr_qos_osw1), + .ocm_rd_qos(ocm_rd_qos_osw1), + + .ocm_wr_ack (ocm_wr_ack_osw1), + .ocm_wr_dv (ocm_wr_dv_osw1), + .ocm_rd_req (ocm_rd_req_osw1), + .ocm_rd_dv (ocm_rd_dv_osw1), + .ocm_wr_addr(ocm_wr_addr_osw1), + .ocm_wr_data(ocm_wr_data_osw1), + .ocm_wr_bytes(ocm_wr_bytes_osw1), + .ocm_rd_addr(ocm_rd_addr_osw1), + .ocm_rd_data(ocm_rd_data_osw1), + .ocm_rd_bytes(ocm_rd_bytes_osw1) + +); + +processing_system7_bfm_v2_0_arb_wr osw_wr ( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(ocm_wr_qos_osw0), /// chk + .qos2(ocm_wr_qos_osw1), /// chk + .prt_dv1(ocm_wr_dv_osw0), + .prt_dv2(ocm_wr_dv_osw1), + .prt_data1(ocm_wr_data_osw0), + .prt_data2(ocm_wr_data_osw1), + .prt_addr1(ocm_wr_addr_osw0), + .prt_addr2(ocm_wr_addr_osw1), + .prt_bytes1(ocm_wr_bytes_osw0), + .prt_bytes2(ocm_wr_bytes_osw1), + .prt_ack1(ocm_wr_ack_osw0), + .prt_ack2(ocm_wr_ack_osw1), + .prt_req(ocm_wr_dv_port1), + .prt_qos(ocm_wr_qos_port1), + .prt_data(ocm_wr_data_port1), + .prt_addr(ocm_wr_addr_port1), + .prt_bytes(ocm_wr_bytes_port1), + .prt_ack(ocm_wr_ack_port1) +); + +processing_system7_bfm_v2_0_arb_rd osw_rd( + .rstn(rstn), + .sw_clk(sw_clk), + .qos1(ocm_rd_qos_osw0), // chk + .qos2(ocm_rd_qos_osw1), // chk + .prt_req1(ocm_rd_req_osw0), + .prt_req2(ocm_rd_req_osw1), + .prt_data1(ocm_rd_data_osw0), + .prt_data2(ocm_rd_data_osw1), + .prt_addr1(ocm_rd_addr_osw0), + .prt_addr2(ocm_rd_addr_osw1), + .prt_bytes1(ocm_rd_bytes_osw0), + .prt_bytes2(ocm_rd_bytes_osw1), + .prt_dv1(ocm_rd_dv_osw0), + .prt_dv2(ocm_rd_dv_osw1), + .prt_req(ocm_rd_req_port1), + .prt_qos(ocm_rd_qos_port1), + .prt_data(ocm_rd_data_port1), + .prt_addr(ocm_rd_addr_port1), + .prt_bytes(ocm_rd_bytes_port1), + .prt_dv(ocm_rd_dv_port1) +); + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_rd_mem.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_rd_mem.v new file mode 100644 index 0000000..b6631de --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_rd_mem.v @@ -0,0 +1,99 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_intr_rd_mem.v + * + * Date : 2012-11 + * + * Description : Mimics interconnect for Reads between AFI and DDRC/OCM + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_intr_rd_mem( +sw_clk, +rstn, + +full, +empty, + +req, +invalid_rd_req, +rd_info, + +RD_DATA_OCM, +RD_DATA_DDR, +RD_DATA_VALID_OCM, +RD_DATA_VALID_DDR + +); +`include "processing_system7_bfm_v2_0_local_params.v" + +input sw_clk, rstn; +output full, empty; + +input RD_DATA_VALID_DDR, RD_DATA_VALID_OCM; +input [max_burst_bits-1:0] RD_DATA_DDR, RD_DATA_OCM; +input req, invalid_rd_req; +input [rd_info_bits-1:0] rd_info; + +reg [intr_cnt_width-1:0] wr_ptr = 0, rd_ptr = 0; +reg [rd_afi_fifo_bits-1:0] rd_fifo [0:intr_max_outstanding-1]; // Data, addr, size, burst, len, RID, RRESP, valid bytes +wire full, empty; + + +assign empty = (wr_ptr === rd_ptr)?1'b1: 1'b0; +assign full = ((wr_ptr[intr_cnt_width-1]!== rd_ptr[intr_cnt_width-1]) && (wr_ptr[intr_cnt_width-2:0] === rd_ptr[intr_cnt_width-2:0]))?1'b1 :1'b0; + +/* read from the fifo */ +task read_mem; +output [rd_afi_fifo_bits-1:0] data; +begin + data = rd_fifo[rd_ptr[intr_cnt_width-1:0]]; + if(rd_ptr[intr_cnt_width-2:0] === intr_max_outstanding-1) + rd_ptr[intr_cnt_width-2:0] = 0; + else + rd_ptr = rd_ptr + 1; +end +endtask + +reg state; +reg invalid_rd; +/* write in the fifo */ +always@(negedge rstn or posedge sw_clk) +begin +if(!rstn) begin + wr_ptr = 0; + rd_ptr = 0; + state = 0; + invalid_rd = 0; +end else begin + case (state) + 0 : begin + state = 0; + invalid_rd = 0; + if(req)begin + state = 1; + invalid_rd = invalid_rd_req; + end + end + 1 : begin + state = 1; + if(RD_DATA_VALID_OCM | RD_DATA_VALID_DDR | invalid_rd) begin + if(RD_DATA_VALID_DDR) + rd_fifo[wr_ptr[intr_cnt_width-2:0]] = {RD_DATA_DDR,rd_info}; + else if(RD_DATA_VALID_OCM) + rd_fifo[wr_ptr[intr_cnt_width-2:0]] = {RD_DATA_OCM,rd_info}; + else + rd_fifo[wr_ptr[intr_cnt_width-2:0]] = rd_info; + if(wr_ptr[intr_cnt_width-2:0] === intr_max_outstanding-1) + wr_ptr[intr_cnt_width-2:0] = 0; + else + wr_ptr = wr_ptr + 1; + state = 0; + invalid_rd = 0; + end + end + endcase +end +end + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_wr_mem.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_wr_mem.v new file mode 100644 index 0000000..1961a29 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_intr_wr_mem.v @@ -0,0 +1,105 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_intr_wr_mem.v + * + * Date : 2012-11 + * + * Description : Mimics interconnect for Writes between AFI and DDRC/OCM + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_intr_wr_mem( +sw_clk, +rstn, + +full, + +WR_DATA_ACK_OCM, +WR_DATA_ACK_DDR, +WR_ADDR, +WR_DATA, +WR_BYTES, +WR_QOS, +WR_DATA_VALID_OCM, +WR_DATA_VALID_DDR +); + +`include "processing_system7_bfm_v2_0_local_params.v" +/* local parameters for interconnect wr fifo model */ + +input sw_clk, rstn; +output full; + +input WR_DATA_ACK_DDR, WR_DATA_ACK_OCM; +output reg WR_DATA_VALID_DDR, WR_DATA_VALID_OCM; +output reg [max_burst_bits-1:0] WR_DATA; +output reg [addr_width-1:0] WR_ADDR; +output reg [max_burst_bytes_width:0] WR_BYTES; +output reg [axi_qos_width-1:0] WR_QOS; +reg [intr_cnt_width-1:0] wr_ptr = 0, rd_ptr = 0; +reg [wr_fifo_data_bits-1:0] wr_fifo [0:intr_max_outstanding-1]; +wire empty; + +assign empty = (wr_ptr === rd_ptr)?1'b1: 1'b0; +assign full = ((wr_ptr[intr_cnt_width-1]!== rd_ptr[intr_cnt_width-1]) && (wr_ptr[intr_cnt_width-2:0] === rd_ptr[intr_cnt_width-2:0]))?1'b1 :1'b0; + +parameter SEND_DATA = 0, WAIT_ACK = 1; +reg state; + +task automatic write_mem; +input [wr_fifo_data_bits-1:0] data; +begin + wr_fifo[wr_ptr[intr_cnt_width-2:0]] = data; + if(wr_ptr[intr_cnt_width-2:0] === intr_max_outstanding-1) + wr_ptr[intr_cnt_width-2:0] = 0; + else + wr_ptr = wr_ptr + 1; +end +endtask + +always@(negedge rstn or posedge sw_clk) +begin +if(!rstn) begin + wr_ptr = 0; + rd_ptr = 0; + WR_DATA_VALID_DDR = 1'b0; + WR_DATA_VALID_OCM = 1'b0; + WR_QOS = 0; + state = SEND_DATA; +end else begin + case(state) + SEND_DATA :begin + state = SEND_DATA; + WR_DATA_VALID_OCM = 1'b0; + WR_DATA_VALID_DDR = 1'b0; + if(!empty) begin + WR_DATA = wr_fifo[rd_ptr[intr_cnt_width-2:0]][wr_data_msb : wr_data_lsb]; + WR_ADDR = wr_fifo[rd_ptr[intr_cnt_width-2:0]][wr_addr_msb : wr_addr_lsb]; + WR_BYTES = wr_fifo[rd_ptr[intr_cnt_width-2:0]][wr_bytes_msb : wr_bytes_lsb]; + WR_QOS = wr_fifo[rd_ptr[intr_cnt_width-2:0]][wr_qos_msb : wr_qos_lsb]; + state = WAIT_ACK; + case(decode_address(wr_fifo[rd_ptr[intr_cnt_width-2:0]][wr_addr_msb : wr_addr_lsb])) + OCM_MEM : WR_DATA_VALID_OCM = 1; + DDR_MEM : WR_DATA_VALID_DDR = 1; + default : state = SEND_DATA; + endcase + if(rd_ptr[intr_cnt_width-2:0] === intr_max_outstanding-1) begin + rd_ptr[intr_cnt_width-2:0] = 0; + end else begin + rd_ptr = rd_ptr+1; + end + end + end + WAIT_ACK :begin + state = WAIT_ACK; + if(WR_DATA_ACK_OCM | WR_DATA_ACK_DDR) begin + WR_DATA_VALID_OCM = 1'b0; + WR_DATA_VALID_DDR = 1'b0; + state = SEND_DATA; + end + end + endcase +end +end + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_local_params.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_local_params.v new file mode 100644 index 0000000..9336633 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_local_params.v @@ -0,0 +1,239 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_local_params.v + * + * Date : 2012-11 + * + * Description : Parameters used in Zynq BFM + * + *****************************************************************************/ + +/* local */ +parameter m_axi_gp0_baseaddr = 32'h4000_0000; +parameter m_axi_gp1_baseaddr = 32'h8000_0000; +parameter m_axi_gp0_highaddr = 32'h7FFF_FFFF; +parameter m_axi_gp1_highaddr = 32'hBFFF_FFFF; + +parameter addr_width = 32; // maximum address width +parameter data_width = 32; // maximum data width. +parameter max_chars = 128; // max characters for file name +parameter mem_width = data_width/8; /// memory width in bytes +parameter shft_addr_bits = clogb2(mem_width); /// Address to be right shifted +parameter int_width = 32; //integre width + +/* for internal read/write APIs used for data transfers */ +parameter max_burst_len = 16; /// maximum brst length on axi +parameter max_data_width = 64; // maximum data width for internal AXI bursts +parameter max_burst_bits = (max_data_width * max_burst_len); // maximum data width for internal AXI bursts +parameter max_burst_bytes = (max_burst_bits)/8; // maximum data bytes in each transfer +parameter max_burst_bytes_width = clogb2(max_burst_bytes); // maximum data width for internal AXI bursts + +parameter max_registers = 32; +parameter max_regs_width = clogb2(max_registers); + +parameter REG_MEM = 2'b00, DDR_MEM = 2'b01, OCM_MEM = 2'b10, INVALID_MEM_TYPE = 2'b11; + +/* Interrupt bits supported */ +parameter irq_width = 16; + +/* GP Master0 & Master1 address decode */ +parameter GP_M0 = 2'b01; +parameter GP_M1 = 2'b10; + +parameter ALL_RANDOM= 2'b00; +parameter ALL_ZEROS = 2'b01; +parameter ALL_ONES = 2'b10; + +parameter ddr_start_addr = 32'h0008_0000; +parameter ddr_end_addr = 32'h3FFF_FFFF; + +parameter ocm_start_addr = 32'h0000_0000; +parameter ocm_end_addr = 32'h0003_FFFF; +parameter high_ocm_start_addr = 32'hFFFC_0000; +parameter high_ocm_end_addr = 32'hFFFF_FFFF; +parameter ocm_low_addr = 32'hFFFF_0000; + +parameter reg_start_addr = 32'hE000_0000; +parameter reg_end_addr = 32'hF8F0_2F80; + + +/* for Master port APIs and AXI protocol related signal widths*/ +parameter axi_burst_len = 16; +parameter axi_len_width = clogb2(axi_burst_len); +parameter axi_size_width = 3; +parameter axi_brst_type_width = 2; +parameter axi_lock_width = 2; +parameter axi_cache_width = 4; +parameter axi_prot_width = 3; +parameter axi_rsp_width = 2; +parameter axi_mgp_data_width = 32; +parameter axi_mgp_id_width = 12; +parameter axi_mgp_outstanding = 8; +parameter axi_mgp_wr_id = 12'hC00; +parameter axi_mgp_rd_id = 12'hC0C; +parameter axi_mgp0_name = "M_AXI_GP0"; +parameter axi_mgp1_name = "M_AXI_GP1"; +parameter axi_qos_width = 4; +parameter max_transfer_bytes = 128; // For Master APIs. +parameter max_transfer_bytes_width = clogb2(max_transfer_bytes); // For Master APIs. + + +/* for GP slave ports*/ +parameter axi_sgp_data_width = 32; +parameter axi_sgp_id_width = 6; +parameter axi_sgp_rd_outstanding = 8; +parameter axi_sgp_wr_outstanding = 8; +parameter axi_sgp_outstanding = axi_sgp_rd_outstanding + axi_sgp_wr_outstanding; +parameter axi_sgp0_name = "S_AXI_GP0"; +parameter axi_sgp1_name = "S_AXI_GP1"; + +/* for ACP slave ports*/ +parameter axi_acp_data_width = 64; +parameter axi_acp_id_width = 3; +parameter axi_acp_rd_outstanding = 7; +parameter axi_acp_wr_outstanding = 3; +parameter axi_acp_outstanding = axi_acp_rd_outstanding + axi_acp_wr_outstanding; +parameter axi_acp_name = "S_AXI_ACP"; + +/* for HP slave ports*/ +parameter axi_hp_id_width = 6; +parameter axi_hp_outstanding = 256; /// dynamic based on RCOUNT, WCOUNT .. +parameter axi_hp0_name = "S_AXI_HP0"; +parameter axi_hp1_name = "S_AXI_HP1"; +parameter axi_hp2_name = "S_AXI_HP2"; +parameter axi_hp3_name = "S_AXI_HP3"; + + +parameter axi_slv_excl_support = 0; // For Slave ports EXCL access is not supported +parameter axi_mst_excl_support = 1; // For Master ports EXCL access is supported + +/* AXI transfer types */ +parameter AXI_FIXED = 2'b00; +parameter AXI_INCR = 2'b01; +parameter AXI_WRAP = 2'b10; + +/* Exclusive Access */ +parameter AXI_NRML = 2'b00; +parameter AXI_EXCL = 2'b01; +parameter AXI_LOCK = 2'b10; + +/* AXI Response types */ +parameter AXI_OK = 2'b00; +parameter AXI_EXCL_OK = 2'b01; +parameter AXI_SLV_ERR = 2'b10; +parameter AXI_DEC_ERR = 2'b11; + +function automatic integer clogb2; + input [31:0] value; + begin + value = value - 1; + for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin + value = value >> 1; + end + end +endfunction + +/* needed only for AFI modules and axi_slave modules for internal WRITE FIFOs and RESP FIFOs and interconnect fifo models */ + /* WR FIFO data */ + parameter wr_fifo_data_bits = axi_qos_width + addr_width + max_burst_bits + (max_burst_bytes_width+1); + parameter wr_bytes_lsb = 0; + parameter wr_bytes_msb = max_burst_bytes_width; + parameter wr_addr_lsb = wr_bytes_msb + 1; + parameter wr_addr_msb = wr_addr_lsb + addr_width-1; + parameter wr_data_lsb = wr_addr_msb + 1; + parameter wr_data_msb = wr_data_lsb + max_burst_bits-1; + parameter wr_qos_lsb = wr_data_msb + 1; + parameter wr_qos_msb = wr_qos_lsb + axi_qos_width-1; + + /* WR AFI FIFO data */ + /* ID - 1071:1066 + Resp - 1065:1064 + data - 1063:40 + address - 39:8 + valid_bytes - 7:0 + */ + parameter wr_afi_fifo_data_bits = axi_qos_width + axi_len_width + axi_hp_id_width + axi_rsp_width + max_burst_bits + addr_width + (max_burst_bytes_width+1); + parameter wr_afi_bytes_lsb = 0; + parameter wr_afi_bytes_msb = max_burst_bytes_width; + parameter wr_afi_addr_lsb = wr_afi_bytes_msb + 1; + parameter wr_afi_addr_msb = wr_afi_addr_lsb + addr_width-1; + parameter wr_afi_data_lsb = wr_afi_addr_msb + 1; + parameter wr_afi_data_msb = wr_afi_data_lsb + max_burst_bits-1; + parameter wr_afi_rsp_lsb = wr_afi_data_msb + 1; + parameter wr_afi_rsp_msb = wr_afi_rsp_lsb + axi_rsp_width-1; + parameter wr_afi_id_lsb = wr_afi_rsp_msb + 1; + parameter wr_afi_id_msb = wr_afi_id_lsb + axi_hp_id_width-1; + parameter wr_afi_ln_lsb = wr_afi_id_msb + 1; + parameter wr_afi_ln_msb = wr_afi_ln_lsb + axi_len_width-1; + parameter wr_afi_qos_lsb = wr_afi_ln_msb + 1; + parameter wr_afi_qos_msb = wr_afi_qos_lsb + axi_qos_width-1; + + + parameter afi_fifo_size = 1024; /// AFI FIFO is stored as 1024-bytes + parameter afi_fifo_databits = 64; /// AFI FIFO is stored as 64-bits i.e 8 bytes per location (8 bytes(64-bits) * 128 locations = 1024 bytes) + parameter afi_fifo_locations= afi_fifo_size/(afi_fifo_databits/8); /// AFI FIFO is stored as 128-locations with 8 bytes per location + +/* for interconnect fifo models */ + parameter intr_max_outstanding = 8; + parameter intr_cnt_width = clogb2(intr_max_outstanding)+1; + parameter rd_info_bits = addr_width + axi_size_width + axi_brst_type_width + axi_len_width + axi_hp_id_width + axi_rsp_width + (max_burst_bytes_width+1); + parameter rd_afi_fifo_bits = max_burst_bits + rd_info_bits ; + + //Read Burst Data, addr, size, burst, len, RID, RRESP, valid bytes + parameter rd_afi_bytes_lsb = 0; + parameter rd_afi_bytes_msb = max_burst_bytes_width; + parameter rd_afi_rsp_lsb = rd_afi_bytes_msb + 1; + parameter rd_afi_rsp_msb = rd_afi_rsp_lsb + axi_rsp_width-1; + parameter rd_afi_id_lsb = rd_afi_rsp_msb + 1; + parameter rd_afi_id_msb = rd_afi_id_lsb + axi_hp_id_width-1; + parameter rd_afi_ln_lsb = rd_afi_id_msb + 1; + parameter rd_afi_ln_msb = rd_afi_ln_lsb + axi_len_width-1; + parameter rd_afi_brst_lsb = rd_afi_ln_msb + 1; + parameter rd_afi_brst_msb = rd_afi_brst_lsb + axi_brst_type_width-1; + parameter rd_afi_siz_lsb = rd_afi_brst_msb + 1; + parameter rd_afi_siz_msb = rd_afi_siz_lsb + axi_size_width-1; + parameter rd_afi_addr_lsb = rd_afi_siz_msb + 1; + parameter rd_afi_addr_msb = rd_afi_addr_lsb + addr_width-1; + parameter rd_afi_data_lsb = rd_afi_addr_msb + 1; + parameter rd_afi_data_msb = rd_afi_data_lsb + max_burst_bits-1; + + +/* Latency types */ + parameter BEST_CASE = 0; + parameter AVG_CASE = 1; + parameter WORST_CASE = 2; + parameter RANDOM_CASE = 3; + +/* Latency Parameters ACP */ + parameter acp_wr_min = 21; + parameter acp_wr_avg = 16; + parameter acp_wr_max = 27; + parameter acp_rd_min = 34; + parameter acp_rd_avg = 125; + parameter acp_rd_max = 130; + +/* Latency Parameters GP */ + parameter gp_wr_min = 21; + parameter gp_wr_avg = 16; + parameter gp_wr_max = 46; + parameter gp_rd_min = 38; + parameter gp_rd_avg = 125; + parameter gp_rd_max = 130; + +/* Latency Parameters HP */ + parameter afi_wr_min = 37; + parameter afi_wr_avg = 41; + parameter afi_wr_max = 42; + parameter afi_rd_min = 41; + parameter afi_rd_avg = 221; + parameter afi_rd_max = 229; + +/* ID VALID and INVALID */ + parameter secure_access_enabled = 0; + parameter id_invalid = 0; + parameter id_valid = 1; + +/* Display */ + parameter DISP_INFO = "*ZYNQ_BFM_INFO"; + parameter DISP_WARN = "*ZYNQ_BFM_WARNING"; + parameter DISP_ERR = "*ZYNQ_BFM_ERROR"; + parameter DISP_INT_INFO = "ZYNQ_BFM_INT_INFO"; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocm_mem.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocm_mem.v new file mode 100644 index 0000000..88de3c4 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocm_mem.v @@ -0,0 +1,223 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_ocm_mem.v + * + * Date : 2012-11 + * + * Description : Mimics OCM model + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_ocm_mem(); +`include "processing_system7_bfm_v2_0_local_params.v" + +parameter mem_size = 32'h4_0000; /// 256 KB +parameter mem_addr_width = clogb2(mem_size/mem_width); + +reg [data_width-1:0] ocm_memory [0:(mem_size/mem_width)-1]; /// 256 KB memory + +/* preload memory from file */ +task automatic pre_load_mem_from_file; +input [(max_chars*8)-1:0] file_name; +input [addr_width-1:0] start_addr; +input [int_width-1:0] no_of_bytes; + $readmemh(file_name,ocm_memory,start_addr>>shft_addr_bits); +endtask + +/* preload memory with some random data */ +task automatic pre_load_mem; +input [1:0] data_type; +input [addr_width-1:0] start_addr; +input [int_width-1:0] no_of_bytes; +integer i; +reg [mem_addr_width-1:0] addr; +begin +addr = start_addr >> shft_addr_bits; + +for (i = 0; i < no_of_bytes; i = i + mem_width) begin + case(data_type) + ALL_RANDOM : ocm_memory[addr] = $random; + ALL_ZEROS : ocm_memory[addr] = 32'h0000_0000; + ALL_ONES : ocm_memory[addr] = 32'hFFFF_FFFF; + default : ocm_memory[addr] = $random; + endcase + addr = addr+1; +end +end +endtask + +/* Write memory */ +task write_mem; +input [max_burst_bits-1 :0] data; +input [addr_width-1:0] start_addr; +input [max_burst_bytes_width:0] no_of_bytes; +reg [mem_addr_width-1:0] addr; +reg [max_burst_bits-1 :0] wr_temp_data; +reg [data_width-1:0] pre_pad_data,post_pad_data,temp_data; +integer bytes_left; +integer pre_pad_bytes; +integer post_pad_bytes; +begin +addr = start_addr >> shft_addr_bits; +wr_temp_data = data; + +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : Writing OCM Memory starting address (0x%0h) with %0d bytes.\n Data (0x%0h)",$time, DISP_INT_INFO, start_addr, no_of_bytes, data); +`endif + +temp_data = wr_temp_data[data_width-1:0]; +bytes_left = no_of_bytes; +/* when the no. of bytes to be updated is less than mem_width */ +if(bytes_left < mem_width) begin + /* first data word in the burst , if unaligned address, the adjust the wr_data accordingly for first write*/ + if(start_addr[shft_addr_bits-1:0] > 0) begin + temp_data = ocm_memory[addr]; + pre_pad_bytes = mem_width - start_addr[shft_addr_bits-1:0]; + repeat(pre_pad_bytes) temp_data = temp_data << 8; + repeat(pre_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = wr_temp_data[7:0]; + wr_temp_data = wr_temp_data >> 8; + end + bytes_left = bytes_left + pre_pad_bytes; + end + /* This is needed for post padding the data ...*/ + post_pad_bytes = mem_width - bytes_left; + post_pad_data = ocm_memory[addr]; + repeat(post_pad_bytes) temp_data = temp_data << 8; + repeat(bytes_left) post_pad_data = post_pad_data >> 8; + repeat(post_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = post_pad_data[7:0]; + post_pad_data = post_pad_data >> 8; + end + ocm_memory[addr] = temp_data; +end else begin + /* first data word in the burst , if unaligned address, the adjust the wr_data accordingly for first write*/ + if(start_addr[shft_addr_bits-1:0] > 0) begin + temp_data = ocm_memory[addr]; + pre_pad_bytes = mem_width - start_addr[shft_addr_bits-1:0]; + repeat(pre_pad_bytes) temp_data = temp_data << 8; + repeat(pre_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = wr_temp_data[7:0]; + wr_temp_data = wr_temp_data >> 8; + bytes_left = bytes_left -1; + end + end else begin + wr_temp_data = wr_temp_data >> data_width; + bytes_left = bytes_left - mem_width; + end + /* first data word end */ + ocm_memory[addr] = temp_data; + addr = addr + 1; + while(bytes_left > (mem_width-1) ) begin /// for unaliged address necessary to check for mem_wd-1 , accordingly we have to pad post bytes. + ocm_memory[addr] = wr_temp_data[data_width-1:0]; + addr = addr+1; + wr_temp_data = wr_temp_data >> data_width; + bytes_left = bytes_left - mem_width; + end + + post_pad_data = ocm_memory[addr]; + post_pad_bytes = mem_width - bytes_left; + /* This is needed for last transfer in unaliged burst */ + if(bytes_left > 0) begin + temp_data = wr_temp_data[data_width-1:0]; + repeat(post_pad_bytes) temp_data = temp_data << 8; + repeat(bytes_left) post_pad_data = post_pad_data >> 8; + repeat(post_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = post_pad_data[7:0]; + post_pad_data = post_pad_data >> 8; + end + ocm_memory[addr] = temp_data; + end +end +`ifdef XLNX_INT_DBG $display("[%0d] : %0s : DONE -> Writing OCM Memory starting address (0x%0h)",$time, DISP_INT_INFO, start_addr ); +`endif +end +endtask + +/* read_memory */ +task read_mem; +output[max_burst_bits-1 :0] data; +input [addr_width-1:0] start_addr; +input [max_burst_bytes_width:0] no_of_bytes; +integer i; +reg [mem_addr_width-1:0] addr; +reg [data_width-1:0] temp_rd_data; +reg [max_burst_bits-1:0] temp_data; +integer pre_bytes; +integer bytes_left; +begin +addr = start_addr >> shft_addr_bits; +pre_bytes = start_addr[shft_addr_bits-1:0]; +bytes_left = no_of_bytes; + +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : Reading OCM Memory starting address (0x%0h) -> %0d bytes",$time, DISP_INT_INFO, start_addr,no_of_bytes ); +`endif + +/* Get first data ... if unaligned address */ +temp_data[max_burst_bits-1 : max_burst_bits-data_width] = ocm_memory[addr]; + +if(no_of_bytes < mem_width ) begin + temp_data = temp_data >> (pre_bytes * 8); + repeat(max_burst_bytes - mem_width) + temp_data = temp_data >> 8; + +end else begin + bytes_left = bytes_left - (mem_width - pre_bytes); + addr = addr+1; + /* Got first data */ + while (bytes_left > (mem_width-1) ) begin + temp_data = temp_data >> data_width; + temp_data[max_burst_bits-1 : max_burst_bits-data_width] = ocm_memory[addr]; + addr = addr+1; + bytes_left = bytes_left - mem_width; + end + + /* Get last valid data in the burst*/ + temp_rd_data = ocm_memory[addr]; + while(bytes_left > 0) begin + temp_data = temp_data >> 8; + temp_data[max_burst_bits-1 : max_burst_bits-8] = temp_rd_data[7:0]; + temp_rd_data = temp_rd_data >> 8; + bytes_left = bytes_left - 1; + end + /* align to the brst_byte length */ + repeat(max_burst_bytes - no_of_bytes) + temp_data = temp_data >> 8; +end +data = temp_data; +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : DONE -> Reading OCM Memory starting address (0x%0h), Data returned(0x%0h)",$time, DISP_INT_INFO, start_addr, data ); +`endif +end +endtask + +/* backdoor read to memory */ +task peek_mem_to_file; +input [(max_chars*8)-1:0] file_name; +input [addr_width-1:0] start_addr; +input [int_width-1:0] no_of_bytes; + +integer rd_fd; +integer bytes; +reg [addr_width-1:0] addr; +reg [data_width-1:0] rd_data; +begin +rd_fd = $fopen(file_name,"w"); +bytes = no_of_bytes; + +addr = start_addr >> shft_addr_bits; +while (bytes > 0) begin + rd_data = ocm_memory[addr]; + $fdisplayh(rd_fd,rd_data); + bytes = bytes - 4; + addr = addr + 1; +end +end +endtask + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocmc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocmc.v new file mode 100644 index 0000000..1104861 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ocmc.v @@ -0,0 +1,189 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_ocmc.v + * + * Date : 2012-11 + * + * Description : Controller for OCM model + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_ocmc( + rstn, + sw_clk, + +/* Goes to port 0 of OCM */ + ocm_wr_ack_port0, + ocm_wr_dv_port0, + ocm_rd_req_port0, + ocm_rd_dv_port0, + ocm_wr_addr_port0, + ocm_wr_data_port0, + ocm_wr_bytes_port0, + ocm_rd_addr_port0, + ocm_rd_data_port0, + ocm_rd_bytes_port0, + ocm_wr_qos_port0, + ocm_rd_qos_port0, + + +/* Goes to port 1 of OCM */ + ocm_wr_ack_port1, + ocm_wr_dv_port1, + ocm_rd_req_port1, + ocm_rd_dv_port1, + ocm_wr_addr_port1, + ocm_wr_data_port1, + ocm_wr_bytes_port1, + ocm_rd_addr_port1, + ocm_rd_data_port1, + ocm_rd_bytes_port1, + ocm_wr_qos_port1, + ocm_rd_qos_port1 + +); + +`include "processing_system7_bfm_v2_0_local_params.v" +input rstn; +input sw_clk; + +output ocm_wr_ack_port0; +input ocm_wr_dv_port0; +input ocm_rd_req_port0; +output ocm_rd_dv_port0; +input[addr_width-1:0] ocm_wr_addr_port0; +input[max_burst_bits-1:0] ocm_wr_data_port0; +input[max_burst_bytes_width:0] ocm_wr_bytes_port0; +input[addr_width-1:0] ocm_rd_addr_port0; +output[max_burst_bits-1:0] ocm_rd_data_port0; +input[max_burst_bytes_width:0] ocm_rd_bytes_port0; +input [axi_qos_width-1:0] ocm_wr_qos_port0; +input [axi_qos_width-1:0] ocm_rd_qos_port0; + +output ocm_wr_ack_port1; +input ocm_wr_dv_port1; +input ocm_rd_req_port1; +output ocm_rd_dv_port1; +input[addr_width-1:0] ocm_wr_addr_port1; +input[max_burst_bits-1:0] ocm_wr_data_port1; +input[max_burst_bytes_width:0] ocm_wr_bytes_port1; +input[addr_width-1:0] ocm_rd_addr_port1; +output[max_burst_bits-1:0] ocm_rd_data_port1; +input[max_burst_bytes_width:0] ocm_rd_bytes_port1; +input[axi_qos_width-1:0] ocm_wr_qos_port1; +input[axi_qos_width-1:0] ocm_rd_qos_port1; + +wire [axi_qos_width-1:0] wr_qos; +wire wr_req; +wire [max_burst_bits-1:0] wr_data; +wire [addr_width-1:0] wr_addr; +wire [max_burst_bytes_width:0] wr_bytes; +reg wr_ack; + +wire [axi_qos_width-1:0] rd_qos; +reg [max_burst_bits-1:0] rd_data; +wire [addr_width-1:0] rd_addr; +wire [max_burst_bytes_width:0] rd_bytes; +reg rd_dv; +wire rd_req; + +processing_system7_bfm_v2_0_arb_wr ocm_write_ports ( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(ocm_wr_qos_port0), + .qos2(ocm_wr_qos_port1), + + .prt_dv1(ocm_wr_dv_port0), + .prt_dv2(ocm_wr_dv_port1), + + .prt_data1(ocm_wr_data_port0), + .prt_data2(ocm_wr_data_port1), + + .prt_addr1(ocm_wr_addr_port0), + .prt_addr2(ocm_wr_addr_port1), + + .prt_bytes1(ocm_wr_bytes_port0), + .prt_bytes2(ocm_wr_bytes_port1), + + .prt_ack1(ocm_wr_ack_port0), + .prt_ack2(ocm_wr_ack_port1), + + .prt_qos(wr_qos), + .prt_req(wr_req), + .prt_data(wr_data), + .prt_addr(wr_addr), + .prt_bytes(wr_bytes), + .prt_ack(wr_ack) + +); + +processing_system7_bfm_v2_0_arb_rd ocm_read_ports ( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(ocm_rd_qos_port0), + .qos2(ocm_rd_qos_port1), + + .prt_req1(ocm_rd_req_port0), + .prt_req2(ocm_rd_req_port1), + + .prt_data1(ocm_rd_data_port0), + .prt_data2(ocm_rd_data_port1), + + .prt_addr1(ocm_rd_addr_port0), + .prt_addr2(ocm_rd_addr_port1), + + .prt_bytes1(ocm_rd_bytes_port0), + .prt_bytes2(ocm_rd_bytes_port1), + + .prt_dv1(ocm_rd_dv_port0), + .prt_dv2(ocm_rd_dv_port1), + + .prt_qos(rd_qos), + .prt_req(rd_req), + .prt_data(rd_data), + .prt_addr(rd_addr), + .prt_bytes(rd_bytes), + .prt_dv(rd_dv) + +); + +processing_system7_bfm_v2_0_ocm_mem ocm(); + +reg [1:0] state; +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + wr_ack <= 0; + rd_dv <= 0; + state <= 2'd0; +end else begin + case(state) + 0:begin + state <= 0; + wr_ack <= 0; + rd_dv <= 0; + if(wr_req) begin + ocm.write_mem(wr_data , wr_addr, wr_bytes); + wr_ack <= 1; + state <= 1; + end + if(rd_req) begin + ocm.read_mem(rd_data,rd_addr, rd_bytes); + rd_dv <= 1; + state <= 1; + end + + end + 1:begin + wr_ack <= 0; + rd_dv <= 0; + state <= 0; + end + + endcase +end /// if +end// always + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_processing_system7_bfm.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_processing_system7_bfm.v new file mode 100644 index 0000000..f447d3f --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_processing_system7_bfm.v @@ -0,0 +1,2010 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_processing_system7_bfm.v + * + * Date : 2012-11 + * + * Description : Processing_system7_bfm Top (zynq_bfm top) + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_processing_system7_bfm + ( + CAN0_PHY_TX, + CAN0_PHY_RX, + CAN1_PHY_TX, + CAN1_PHY_RX, + ENET0_GMII_TX_EN, + ENET0_GMII_TX_ER, + ENET0_MDIO_MDC, + ENET0_MDIO_O, + ENET0_MDIO_T, + ENET0_PTP_DELAY_REQ_RX, + ENET0_PTP_DELAY_REQ_TX, + ENET0_PTP_PDELAY_REQ_RX, + ENET0_PTP_PDELAY_REQ_TX, + ENET0_PTP_PDELAY_RESP_RX, + ENET0_PTP_PDELAY_RESP_TX, + ENET0_PTP_SYNC_FRAME_RX, + ENET0_PTP_SYNC_FRAME_TX, + ENET0_SOF_RX, + ENET0_SOF_TX, + ENET0_GMII_TXD, + ENET0_GMII_COL, + ENET0_GMII_CRS, + ENET0_EXT_INTIN, + ENET0_GMII_RX_CLK, + ENET0_GMII_RX_DV, + ENET0_GMII_RX_ER, + ENET0_GMII_TX_CLK, + ENET0_MDIO_I, + ENET0_GMII_RXD, + ENET1_GMII_TX_EN, + ENET1_GMII_TX_ER, + ENET1_MDIO_MDC, + ENET1_MDIO_O, + ENET1_MDIO_T, + ENET1_PTP_DELAY_REQ_RX, + ENET1_PTP_DELAY_REQ_TX, + ENET1_PTP_PDELAY_REQ_RX, + ENET1_PTP_PDELAY_REQ_TX, + ENET1_PTP_PDELAY_RESP_RX, + ENET1_PTP_PDELAY_RESP_TX, + ENET1_PTP_SYNC_FRAME_RX, + ENET1_PTP_SYNC_FRAME_TX, + ENET1_SOF_RX, + ENET1_SOF_TX, + ENET1_GMII_TXD, + ENET1_GMII_COL, + ENET1_GMII_CRS, + ENET1_EXT_INTIN, + ENET1_GMII_RX_CLK, + ENET1_GMII_RX_DV, + ENET1_GMII_RX_ER, + ENET1_GMII_TX_CLK, + ENET1_MDIO_I, + ENET1_GMII_RXD, + GPIO_I, + GPIO_O, + GPIO_T, + I2C0_SDA_I, + I2C0_SDA_O, + I2C0_SDA_T, + I2C0_SCL_I, + I2C0_SCL_O, + I2C0_SCL_T, + I2C1_SDA_I, + I2C1_SDA_O, + I2C1_SDA_T, + I2C1_SCL_I, + I2C1_SCL_O, + I2C1_SCL_T, + PJTAG_TCK, + PJTAG_TMS, + PJTAG_TD_I, + PJTAG_TD_T, + PJTAG_TD_O, + SDIO0_CLK, + SDIO0_CLK_FB, + SDIO0_CMD_O, + SDIO0_CMD_I, + SDIO0_CMD_T, + SDIO0_DATA_I, + SDIO0_DATA_O, + SDIO0_DATA_T, + SDIO0_LED, + SDIO0_CDN, + SDIO0_WP, + SDIO0_BUSPOW, + SDIO0_BUSVOLT, + SDIO1_CLK, + SDIO1_CLK_FB, + SDIO1_CMD_O, + SDIO1_CMD_I, + SDIO1_CMD_T, + SDIO1_DATA_I, + SDIO1_DATA_O, + SDIO1_DATA_T, + SDIO1_LED, + SDIO1_CDN, + SDIO1_WP, + SDIO1_BUSPOW, + SDIO1_BUSVOLT, + SPI0_SCLK_I, + SPI0_SCLK_O, + SPI0_SCLK_T, + SPI0_MOSI_I, + SPI0_MOSI_O, + SPI0_MOSI_T, + SPI0_MISO_I, + SPI0_MISO_O, + SPI0_MISO_T, + SPI0_SS_I, + SPI0_SS_O, + SPI0_SS1_O, + SPI0_SS2_O, + SPI0_SS_T, + SPI1_SCLK_I, + SPI1_SCLK_O, + SPI1_SCLK_T, + SPI1_MOSI_I, + SPI1_MOSI_O, + SPI1_MOSI_T, + SPI1_MISO_I, + SPI1_MISO_O, + SPI1_MISO_T, + SPI1_SS_I, + SPI1_SS_O, + SPI1_SS1_O, + SPI1_SS2_O, + SPI1_SS_T, + UART0_DTRN, + UART0_RTSN, + UART0_TX, + UART0_CTSN, + UART0_DCDN, + UART0_DSRN, + UART0_RIN, + UART0_RX, + UART1_DTRN, + UART1_RTSN, + UART1_TX, + UART1_CTSN, + UART1_DCDN, + UART1_DSRN, + UART1_RIN, + UART1_RX, + TTC0_WAVE0_OUT, + TTC0_WAVE1_OUT, + TTC0_WAVE2_OUT, + TTC0_CLK0_IN, + TTC0_CLK1_IN, + TTC0_CLK2_IN, + TTC1_WAVE0_OUT, + TTC1_WAVE1_OUT, + TTC1_WAVE2_OUT, + TTC1_CLK0_IN, + TTC1_CLK1_IN, + TTC1_CLK2_IN, + WDT_CLK_IN, + WDT_RST_OUT, + TRACE_CLK, + TRACE_CTL, + TRACE_DATA, + USB0_PORT_INDCTL, + USB1_PORT_INDCTL, + USB0_VBUS_PWRSELECT, + USB1_VBUS_PWRSELECT, + USB0_VBUS_PWRFAULT, + USB1_VBUS_PWRFAULT, + SRAM_INTIN, + M_AXI_GP0_ARVALID, + M_AXI_GP0_AWVALID, + M_AXI_GP0_BREADY, + M_AXI_GP0_RREADY, + M_AXI_GP0_WLAST, + M_AXI_GP0_WVALID, + M_AXI_GP0_ARID, + M_AXI_GP0_AWID, + M_AXI_GP0_WID, + M_AXI_GP0_ARBURST, + M_AXI_GP0_ARLOCK, + M_AXI_GP0_ARSIZE, + M_AXI_GP0_AWBURST, + M_AXI_GP0_AWLOCK, + M_AXI_GP0_AWSIZE, + M_AXI_GP0_ARPROT, + M_AXI_GP0_AWPROT, + M_AXI_GP0_ARADDR, + M_AXI_GP0_AWADDR, + M_AXI_GP0_WDATA, + M_AXI_GP0_ARCACHE, + M_AXI_GP0_ARLEN, + M_AXI_GP0_ARQOS, + M_AXI_GP0_AWCACHE, + M_AXI_GP0_AWLEN, + M_AXI_GP0_AWQOS, + M_AXI_GP0_WSTRB, + M_AXI_GP0_ACLK, + M_AXI_GP0_ARREADY, + M_AXI_GP0_AWREADY, + M_AXI_GP0_BVALID, + M_AXI_GP0_RLAST, + M_AXI_GP0_RVALID, + M_AXI_GP0_WREADY, + M_AXI_GP0_BID, + M_AXI_GP0_RID, + M_AXI_GP0_BRESP, + M_AXI_GP0_RRESP, + M_AXI_GP0_RDATA, + M_AXI_GP1_ARVALID, + M_AXI_GP1_AWVALID, + M_AXI_GP1_BREADY, + M_AXI_GP1_RREADY, + M_AXI_GP1_WLAST, + M_AXI_GP1_WVALID, + M_AXI_GP1_ARID, + M_AXI_GP1_AWID, + M_AXI_GP1_WID, + M_AXI_GP1_ARBURST, + M_AXI_GP1_ARLOCK, + M_AXI_GP1_ARSIZE, + M_AXI_GP1_AWBURST, + M_AXI_GP1_AWLOCK, + M_AXI_GP1_AWSIZE, + M_AXI_GP1_ARPROT, + M_AXI_GP1_AWPROT, + M_AXI_GP1_ARADDR, + M_AXI_GP1_AWADDR, + M_AXI_GP1_WDATA, + M_AXI_GP1_ARCACHE, + M_AXI_GP1_ARLEN, + M_AXI_GP1_ARQOS, + M_AXI_GP1_AWCACHE, + M_AXI_GP1_AWLEN, + M_AXI_GP1_AWQOS, + M_AXI_GP1_WSTRB, + M_AXI_GP1_ACLK, + M_AXI_GP1_ARREADY, + M_AXI_GP1_AWREADY, + M_AXI_GP1_BVALID, + M_AXI_GP1_RLAST, + M_AXI_GP1_RVALID, + M_AXI_GP1_WREADY, + M_AXI_GP1_BID, + M_AXI_GP1_RID, + M_AXI_GP1_BRESP, + M_AXI_GP1_RRESP, + M_AXI_GP1_RDATA, + S_AXI_GP0_ARREADY, + S_AXI_GP0_AWREADY, + S_AXI_GP0_BVALID, + S_AXI_GP0_RLAST, + S_AXI_GP0_RVALID, + S_AXI_GP0_WREADY, + S_AXI_GP0_BRESP, + S_AXI_GP0_RRESP, + S_AXI_GP0_RDATA, + S_AXI_GP0_BID, + S_AXI_GP0_RID, + S_AXI_GP0_ACLK, + S_AXI_GP0_ARVALID, + S_AXI_GP0_AWVALID, + S_AXI_GP0_BREADY, + S_AXI_GP0_RREADY, + S_AXI_GP0_WLAST, + S_AXI_GP0_WVALID, + S_AXI_GP0_ARBURST, + S_AXI_GP0_ARLOCK, + S_AXI_GP0_ARSIZE, + S_AXI_GP0_AWBURST, + S_AXI_GP0_AWLOCK, + S_AXI_GP0_AWSIZE, + S_AXI_GP0_ARPROT, + S_AXI_GP0_AWPROT, + S_AXI_GP0_ARADDR, + S_AXI_GP0_AWADDR, + S_AXI_GP0_WDATA, + S_AXI_GP0_ARCACHE, + S_AXI_GP0_ARLEN, + S_AXI_GP0_ARQOS, + S_AXI_GP0_AWCACHE, + S_AXI_GP0_AWLEN, + S_AXI_GP0_AWQOS, + S_AXI_GP0_WSTRB, + S_AXI_GP0_ARID, + S_AXI_GP0_AWID, + S_AXI_GP0_WID, + S_AXI_GP1_ARREADY, + S_AXI_GP1_AWREADY, + S_AXI_GP1_BVALID, + S_AXI_GP1_RLAST, + S_AXI_GP1_RVALID, + S_AXI_GP1_WREADY, + S_AXI_GP1_BRESP, + S_AXI_GP1_RRESP, + S_AXI_GP1_RDATA, + S_AXI_GP1_BID, + S_AXI_GP1_RID, + S_AXI_GP1_ACLK, + S_AXI_GP1_ARVALID, + S_AXI_GP1_AWVALID, + S_AXI_GP1_BREADY, + S_AXI_GP1_RREADY, + S_AXI_GP1_WLAST, + S_AXI_GP1_WVALID, + S_AXI_GP1_ARBURST, + S_AXI_GP1_ARLOCK, + S_AXI_GP1_ARSIZE, + S_AXI_GP1_AWBURST, + S_AXI_GP1_AWLOCK, + S_AXI_GP1_AWSIZE, + S_AXI_GP1_ARPROT, + S_AXI_GP1_AWPROT, + S_AXI_GP1_ARADDR, + S_AXI_GP1_AWADDR, + S_AXI_GP1_WDATA, + S_AXI_GP1_ARCACHE, + S_AXI_GP1_ARLEN, + S_AXI_GP1_ARQOS, + S_AXI_GP1_AWCACHE, + S_AXI_GP1_AWLEN, + S_AXI_GP1_AWQOS, + S_AXI_GP1_WSTRB, + S_AXI_GP1_ARID, + S_AXI_GP1_AWID, + S_AXI_GP1_WID, + S_AXI_ACP_AWREADY, + S_AXI_ACP_ARREADY, + S_AXI_ACP_BVALID, + S_AXI_ACP_RLAST, + S_AXI_ACP_RVALID, + S_AXI_ACP_WREADY, + S_AXI_ACP_BRESP, + S_AXI_ACP_RRESP, + S_AXI_ACP_BID, + S_AXI_ACP_RID, + S_AXI_ACP_RDATA, + S_AXI_ACP_ACLK, + S_AXI_ACP_ARVALID, + S_AXI_ACP_AWVALID, + S_AXI_ACP_BREADY, + S_AXI_ACP_RREADY, + S_AXI_ACP_WLAST, + S_AXI_ACP_WVALID, + S_AXI_ACP_ARID, + S_AXI_ACP_ARPROT, + S_AXI_ACP_AWID, + S_AXI_ACP_AWPROT, + S_AXI_ACP_WID, + S_AXI_ACP_ARADDR, + S_AXI_ACP_AWADDR, + S_AXI_ACP_ARCACHE, + S_AXI_ACP_ARLEN, + S_AXI_ACP_ARQOS, + S_AXI_ACP_AWCACHE, + S_AXI_ACP_AWLEN, + S_AXI_ACP_AWQOS, + S_AXI_ACP_ARBURST, + S_AXI_ACP_ARLOCK, + S_AXI_ACP_ARSIZE, + S_AXI_ACP_AWBURST, + S_AXI_ACP_AWLOCK, + S_AXI_ACP_AWSIZE, + S_AXI_ACP_ARUSER, + S_AXI_ACP_AWUSER, + S_AXI_ACP_WDATA, + S_AXI_ACP_WSTRB, + S_AXI_HP0_ARREADY, + S_AXI_HP0_AWREADY, + S_AXI_HP0_BVALID, + S_AXI_HP0_RLAST, + S_AXI_HP0_RVALID, + S_AXI_HP0_WREADY, + S_AXI_HP0_BRESP, + S_AXI_HP0_RRESP, + S_AXI_HP0_BID, + S_AXI_HP0_RID, + S_AXI_HP0_RDATA, + S_AXI_HP0_RCOUNT, + S_AXI_HP0_WCOUNT, + S_AXI_HP0_RACOUNT, + S_AXI_HP0_WACOUNT, + S_AXI_HP0_ACLK, + S_AXI_HP0_ARVALID, + S_AXI_HP0_AWVALID, + S_AXI_HP0_BREADY, + S_AXI_HP0_RDISSUECAP1_EN, + S_AXI_HP0_RREADY, + S_AXI_HP0_WLAST, + S_AXI_HP0_WRISSUECAP1_EN, + S_AXI_HP0_WVALID, + S_AXI_HP0_ARBURST, + S_AXI_HP0_ARLOCK, + S_AXI_HP0_ARSIZE, + S_AXI_HP0_AWBURST, + S_AXI_HP0_AWLOCK, + S_AXI_HP0_AWSIZE, + S_AXI_HP0_ARPROT, + S_AXI_HP0_AWPROT, + S_AXI_HP0_ARADDR, + S_AXI_HP0_AWADDR, + S_AXI_HP0_ARCACHE, + S_AXI_HP0_ARLEN, + S_AXI_HP0_ARQOS, + S_AXI_HP0_AWCACHE, + S_AXI_HP0_AWLEN, + S_AXI_HP0_AWQOS, + S_AXI_HP0_ARID, + S_AXI_HP0_AWID, + S_AXI_HP0_WID, + S_AXI_HP0_WDATA, + S_AXI_HP0_WSTRB, + S_AXI_HP1_ARREADY, + S_AXI_HP1_AWREADY, + S_AXI_HP1_BVALID, + S_AXI_HP1_RLAST, + S_AXI_HP1_RVALID, + S_AXI_HP1_WREADY, + S_AXI_HP1_BRESP, + S_AXI_HP1_RRESP, + S_AXI_HP1_BID, + S_AXI_HP1_RID, + S_AXI_HP1_RDATA, + S_AXI_HP1_RCOUNT, + S_AXI_HP1_WCOUNT, + S_AXI_HP1_RACOUNT, + S_AXI_HP1_WACOUNT, + S_AXI_HP1_ACLK, + S_AXI_HP1_ARVALID, + S_AXI_HP1_AWVALID, + S_AXI_HP1_BREADY, + S_AXI_HP1_RDISSUECAP1_EN, + S_AXI_HP1_RREADY, + S_AXI_HP1_WLAST, + S_AXI_HP1_WRISSUECAP1_EN, + S_AXI_HP1_WVALID, + S_AXI_HP1_ARBURST, + S_AXI_HP1_ARLOCK, + S_AXI_HP1_ARSIZE, + S_AXI_HP1_AWBURST, + S_AXI_HP1_AWLOCK, + S_AXI_HP1_AWSIZE, + S_AXI_HP1_ARPROT, + S_AXI_HP1_AWPROT, + S_AXI_HP1_ARADDR, + S_AXI_HP1_AWADDR, + S_AXI_HP1_ARCACHE, + S_AXI_HP1_ARLEN, + S_AXI_HP1_ARQOS, + S_AXI_HP1_AWCACHE, + S_AXI_HP1_AWLEN, + S_AXI_HP1_AWQOS, + S_AXI_HP1_ARID, + S_AXI_HP1_AWID, + S_AXI_HP1_WID, + S_AXI_HP1_WDATA, + S_AXI_HP1_WSTRB, + S_AXI_HP2_ARREADY, + S_AXI_HP2_AWREADY, + S_AXI_HP2_BVALID, + S_AXI_HP2_RLAST, + S_AXI_HP2_RVALID, + S_AXI_HP2_WREADY, + S_AXI_HP2_BRESP, + S_AXI_HP2_RRESP, + S_AXI_HP2_BID, + S_AXI_HP2_RID, + S_AXI_HP2_RDATA, + S_AXI_HP2_RCOUNT, + S_AXI_HP2_WCOUNT, + S_AXI_HP2_RACOUNT, + S_AXI_HP2_WACOUNT, + S_AXI_HP2_ACLK, + S_AXI_HP2_ARVALID, + S_AXI_HP2_AWVALID, + S_AXI_HP2_BREADY, + S_AXI_HP2_RDISSUECAP1_EN, + S_AXI_HP2_RREADY, + S_AXI_HP2_WLAST, + S_AXI_HP2_WRISSUECAP1_EN, + S_AXI_HP2_WVALID, + S_AXI_HP2_ARBURST, + S_AXI_HP2_ARLOCK, + S_AXI_HP2_ARSIZE, + S_AXI_HP2_AWBURST, + S_AXI_HP2_AWLOCK, + S_AXI_HP2_AWSIZE, + S_AXI_HP2_ARPROT, + S_AXI_HP2_AWPROT, + S_AXI_HP2_ARADDR, + S_AXI_HP2_AWADDR, + S_AXI_HP2_ARCACHE, + S_AXI_HP2_ARLEN, + S_AXI_HP2_ARQOS, + S_AXI_HP2_AWCACHE, + S_AXI_HP2_AWLEN, + S_AXI_HP2_AWQOS, + S_AXI_HP2_ARID, + S_AXI_HP2_AWID, + S_AXI_HP2_WID, + S_AXI_HP2_WDATA, + S_AXI_HP2_WSTRB, + S_AXI_HP3_ARREADY, + S_AXI_HP3_AWREADY, + S_AXI_HP3_BVALID, + S_AXI_HP3_RLAST, + S_AXI_HP3_RVALID, + S_AXI_HP3_WREADY, + S_AXI_HP3_BRESP, + S_AXI_HP3_RRESP, + S_AXI_HP3_BID, + S_AXI_HP3_RID, + S_AXI_HP3_RDATA, + S_AXI_HP3_RCOUNT, + S_AXI_HP3_WCOUNT, + S_AXI_HP3_RACOUNT, + S_AXI_HP3_WACOUNT, + S_AXI_HP3_ACLK, + S_AXI_HP3_ARVALID, + S_AXI_HP3_AWVALID, + S_AXI_HP3_BREADY, + S_AXI_HP3_RDISSUECAP1_EN, + S_AXI_HP3_RREADY, + S_AXI_HP3_WLAST, + S_AXI_HP3_WRISSUECAP1_EN, + S_AXI_HP3_WVALID, + S_AXI_HP3_ARBURST, + S_AXI_HP3_ARLOCK, + S_AXI_HP3_ARSIZE, + S_AXI_HP3_AWBURST, + S_AXI_HP3_AWLOCK, + S_AXI_HP3_AWSIZE, + S_AXI_HP3_ARPROT, + S_AXI_HP3_AWPROT, + S_AXI_HP3_ARADDR, + S_AXI_HP3_AWADDR, + S_AXI_HP3_ARCACHE, + S_AXI_HP3_ARLEN, + S_AXI_HP3_ARQOS, + S_AXI_HP3_AWCACHE, + S_AXI_HP3_AWLEN, + S_AXI_HP3_AWQOS, + S_AXI_HP3_ARID, + S_AXI_HP3_AWID, + S_AXI_HP3_WID, + S_AXI_HP3_WDATA, + S_AXI_HP3_WSTRB, + DMA0_DATYPE, + DMA0_DAVALID, + DMA0_DRREADY, + DMA0_ACLK, + DMA0_DAREADY, + DMA0_DRLAST, + DMA0_DRVALID, + DMA0_DRTYPE, + DMA1_DATYPE, + DMA1_DAVALID, + DMA1_DRREADY, + DMA1_ACLK, + DMA1_DAREADY, + DMA1_DRLAST, + DMA1_DRVALID, + DMA1_DRTYPE, + DMA2_DATYPE, + DMA2_DAVALID, + DMA2_DRREADY, + DMA2_ACLK, + DMA2_DAREADY, + DMA2_DRLAST, + DMA2_DRVALID, + DMA3_DRVALID, + DMA3_DATYPE, + DMA3_DAVALID, + DMA3_DRREADY, + DMA3_ACLK, + DMA3_DAREADY, + DMA3_DRLAST, + DMA2_DRTYPE, + DMA3_DRTYPE, + FTMD_TRACEIN_DATA, + FTMD_TRACEIN_VALID, + FTMD_TRACEIN_CLK, + FTMD_TRACEIN_ATID, + FTMT_F2P_TRIG, + FTMT_F2P_TRIGACK, + FTMT_F2P_DEBUG, + FTMT_P2F_TRIGACK, + FTMT_P2F_TRIG, + FTMT_P2F_DEBUG, + FCLK_CLK3, + FCLK_CLK2, + FCLK_CLK1, + FCLK_CLK0, + FCLK_CLKTRIG3_N, + FCLK_CLKTRIG2_N, + FCLK_CLKTRIG1_N, + FCLK_CLKTRIG0_N, + FCLK_RESET3_N, + FCLK_RESET2_N, + FCLK_RESET1_N, + FCLK_RESET0_N, + FPGA_IDLE_N, + DDR_ARB, + IRQ_F2P, + Core0_nFIQ, + Core0_nIRQ, + Core1_nFIQ, + Core1_nIRQ, + EVENT_EVENTO, + EVENT_STANDBYWFE, + EVENT_STANDBYWFI, + EVENT_EVENTI, + MIO, + DDR_Clk, + DDR_Clk_n, + DDR_CKE, + DDR_CS_n, + DDR_RAS_n, + DDR_CAS_n, + DDR_WEB, + DDR_BankAddr, + DDR_Addr, + DDR_ODT, + DDR_DRSTB, + DDR_DQ, + DDR_DM, + DDR_DQS, + DDR_DQS_n, + DDR_VRN, + DDR_VRP, + PS_SRSTB, + PS_CLK, + PS_PORB, + IRQ_P2F_DMAC_ABORT, + IRQ_P2F_DMAC0, + IRQ_P2F_DMAC1, + IRQ_P2F_DMAC2, + IRQ_P2F_DMAC3, + IRQ_P2F_DMAC4, + IRQ_P2F_DMAC5, + IRQ_P2F_DMAC6, + IRQ_P2F_DMAC7, + IRQ_P2F_SMC, + IRQ_P2F_QSPI, + IRQ_P2F_CTI, + IRQ_P2F_GPIO, + IRQ_P2F_USB0, + IRQ_P2F_ENET0, + IRQ_P2F_ENET_WAKE0, + IRQ_P2F_SDIO0, + IRQ_P2F_I2C0, + IRQ_P2F_SPI0, + IRQ_P2F_UART0, + IRQ_P2F_CAN0, + IRQ_P2F_USB1, + IRQ_P2F_ENET1, + IRQ_P2F_ENET_WAKE1, + IRQ_P2F_SDIO1, + IRQ_P2F_I2C1, + IRQ_P2F_SPI1, + IRQ_P2F_UART1, + IRQ_P2F_CAN1 + ); + + + /* parameters for gen_clk */ + parameter C_FCLK_CLK0_FREQ = 50; + parameter C_FCLK_CLK1_FREQ = 50; + parameter C_FCLK_CLK3_FREQ = 50; + parameter C_FCLK_CLK2_FREQ = 50; + + parameter C_HIGH_OCM_EN = 0; + + + /* parameters for HP ports */ + parameter C_USE_S_AXI_HP0 = 0; + parameter C_USE_S_AXI_HP1 = 0; + parameter C_USE_S_AXI_HP2 = 0; + parameter C_USE_S_AXI_HP3 = 0; + + parameter C_S_AXI_HP0_DATA_WIDTH = 32; + parameter C_S_AXI_HP1_DATA_WIDTH = 32; + parameter C_S_AXI_HP2_DATA_WIDTH = 32; + parameter C_S_AXI_HP3_DATA_WIDTH = 32; + + parameter C_M_AXI_GP0_THREAD_ID_WIDTH = 12; + parameter C_M_AXI_GP1_THREAD_ID_WIDTH = 12; + parameter C_M_AXI_GP0_ENABLE_STATIC_REMAP = 0; + parameter C_M_AXI_GP1_ENABLE_STATIC_REMAP = 0; + +/* Do we need these + parameter C_S_AXI_HP0_ENABLE_HIGHOCM = 0; + parameter C_S_AXI_HP1_ENABLE_HIGHOCM = 0; + parameter C_S_AXI_HP2_ENABLE_HIGHOCM = 0; + parameter C_S_AXI_HP3_ENABLE_HIGHOCM = 0; */ + + parameter C_S_AXI_HP0_BASEADDR = 32'h0000_0000; + parameter C_S_AXI_HP1_BASEADDR = 32'h0000_0000; + parameter C_S_AXI_HP2_BASEADDR = 32'h0000_0000; + parameter C_S_AXI_HP3_BASEADDR = 32'h0000_0000; + + parameter C_S_AXI_HP0_HIGHADDR = 32'hFFFF_FFFF; + parameter C_S_AXI_HP1_HIGHADDR = 32'hFFFF_FFFF; + parameter C_S_AXI_HP2_HIGHADDR = 32'hFFFF_FFFF; + parameter C_S_AXI_HP3_HIGHADDR = 32'hFFFF_FFFF; + + /* parameters for GP and ACP ports */ + parameter C_USE_M_AXI_GP0 = 0; + parameter C_USE_M_AXI_GP1 = 0; + parameter C_USE_S_AXI_GP0 = 1; + parameter C_USE_S_AXI_GP1 = 1; + + /* Do we need this? + parameter C_M_AXI_GP0_ENABLE_HIGHOCM = 0; + parameter C_M_AXI_GP1_ENABLE_HIGHOCM = 0; + parameter C_S_AXI_GP0_ENABLE_HIGHOCM = 0; + parameter C_S_AXI_GP1_ENABLE_HIGHOCM = 0; + + parameter C_S_AXI_ACP_ENABLE_HIGHOCM = 0;*/ + + parameter C_S_AXI_GP0_BASEADDR = 32'h0000_0000; + parameter C_S_AXI_GP1_BASEADDR = 32'h0000_0000; + + parameter C_S_AXI_GP0_HIGHADDR = 32'hFFFF_FFFF; + parameter C_S_AXI_GP1_HIGHADDR = 32'hFFFF_FFFF; + + parameter C_USE_S_AXI_ACP = 1; + parameter C_S_AXI_ACP_BASEADDR = 32'h0000_0000; + parameter C_S_AXI_ACP_HIGHADDR = 32'hFFFF_FFFF; + + `include "processing_system7_bfm_v2_0_local_params.v" + + output CAN0_PHY_TX; + input CAN0_PHY_RX; + output CAN1_PHY_TX; + input CAN1_PHY_RX; + output ENET0_GMII_TX_EN; + output ENET0_GMII_TX_ER; + output ENET0_MDIO_MDC; + output ENET0_MDIO_O; + output ENET0_MDIO_T; + output ENET0_PTP_DELAY_REQ_RX; + output ENET0_PTP_DELAY_REQ_TX; + output ENET0_PTP_PDELAY_REQ_RX; + output ENET0_PTP_PDELAY_REQ_TX; + output ENET0_PTP_PDELAY_RESP_RX; + output ENET0_PTP_PDELAY_RESP_TX; + output ENET0_PTP_SYNC_FRAME_RX; + output ENET0_PTP_SYNC_FRAME_TX; + output ENET0_SOF_RX; + output ENET0_SOF_TX; + output [7:0] ENET0_GMII_TXD; + input ENET0_GMII_COL; + input ENET0_GMII_CRS; + input ENET0_EXT_INTIN; + input ENET0_GMII_RX_CLK; + input ENET0_GMII_RX_DV; + input ENET0_GMII_RX_ER; + input ENET0_GMII_TX_CLK; + input ENET0_MDIO_I; + input [7:0] ENET0_GMII_RXD; + output ENET1_GMII_TX_EN; + output ENET1_GMII_TX_ER; + output ENET1_MDIO_MDC; + output ENET1_MDIO_O; + output ENET1_MDIO_T; + output ENET1_PTP_DELAY_REQ_RX; + output ENET1_PTP_DELAY_REQ_TX; + output ENET1_PTP_PDELAY_REQ_RX; + output ENET1_PTP_PDELAY_REQ_TX; + output ENET1_PTP_PDELAY_RESP_RX; + output ENET1_PTP_PDELAY_RESP_TX; + output ENET1_PTP_SYNC_FRAME_RX; + output ENET1_PTP_SYNC_FRAME_TX; + output ENET1_SOF_RX; + output ENET1_SOF_TX; + output [7:0] ENET1_GMII_TXD; + input ENET1_GMII_COL; + input ENET1_GMII_CRS; + input ENET1_EXT_INTIN; + input ENET1_GMII_RX_CLK; + input ENET1_GMII_RX_DV; + input ENET1_GMII_RX_ER; + input ENET1_GMII_TX_CLK; + input ENET1_MDIO_I; + input [7:0] ENET1_GMII_RXD; + input [63:0] GPIO_I; + output [63:0] GPIO_O; + output [63:0] GPIO_T; + input I2C0_SDA_I; + output I2C0_SDA_O; + output I2C0_SDA_T; + input I2C0_SCL_I; + output I2C0_SCL_O; + output I2C0_SCL_T; + input I2C1_SDA_I; + output I2C1_SDA_O; + output I2C1_SDA_T; + input I2C1_SCL_I; + output I2C1_SCL_O; + output I2C1_SCL_T; + input PJTAG_TCK; + input PJTAG_TMS; + input PJTAG_TD_I; + output PJTAG_TD_T; + output PJTAG_TD_O; + output SDIO0_CLK; + input SDIO0_CLK_FB; + output SDIO0_CMD_O; + input SDIO0_CMD_I; + output SDIO0_CMD_T; + input [3:0] SDIO0_DATA_I; + output [3:0] SDIO0_DATA_O; + output [3:0] SDIO0_DATA_T; + output SDIO0_LED; + input SDIO0_CDN; + input SDIO0_WP; + output SDIO0_BUSPOW; + output [2:0] SDIO0_BUSVOLT; + output SDIO1_CLK; + input SDIO1_CLK_FB; + output SDIO1_CMD_O; + input SDIO1_CMD_I; + output SDIO1_CMD_T; + input [3:0] SDIO1_DATA_I; + output [3:0] SDIO1_DATA_O; + output [3:0] SDIO1_DATA_T; + output SDIO1_LED; + input SDIO1_CDN; + input SDIO1_WP; + output SDIO1_BUSPOW; + output [2:0] SDIO1_BUSVOLT; + input SPI0_SCLK_I; + output SPI0_SCLK_O; + output SPI0_SCLK_T; + input SPI0_MOSI_I; + output SPI0_MOSI_O; + output SPI0_MOSI_T; + input SPI0_MISO_I; + output SPI0_MISO_O; + output SPI0_MISO_T; + input SPI0_SS_I; + output SPI0_SS_O; + output SPI0_SS1_O; + output SPI0_SS2_O; + output SPI0_SS_T; + input SPI1_SCLK_I; + output SPI1_SCLK_O; + output SPI1_SCLK_T; + input SPI1_MOSI_I; + output SPI1_MOSI_O; + output SPI1_MOSI_T; + input SPI1_MISO_I; + output SPI1_MISO_O; + output SPI1_MISO_T; + input SPI1_SS_I; + output SPI1_SS_O; + output SPI1_SS1_O; + output SPI1_SS2_O; + output SPI1_SS_T; + output UART0_DTRN; + output UART0_RTSN; + output UART0_TX; + input UART0_CTSN; + input UART0_DCDN; + input UART0_DSRN; + input UART0_RIN; + input UART0_RX; + output UART1_DTRN; + output UART1_RTSN; + output UART1_TX; + input UART1_CTSN; + input UART1_DCDN; + input UART1_DSRN; + input UART1_RIN; + input UART1_RX; + output TTC0_WAVE0_OUT; + output TTC0_WAVE1_OUT; + output TTC0_WAVE2_OUT; + input TTC0_CLK0_IN; + input TTC0_CLK1_IN; + input TTC0_CLK2_IN; + output TTC1_WAVE0_OUT; + output TTC1_WAVE1_OUT; + output TTC1_WAVE2_OUT; + input TTC1_CLK0_IN; + input TTC1_CLK1_IN; + input TTC1_CLK2_IN; + input WDT_CLK_IN; + output WDT_RST_OUT; + input TRACE_CLK; + output TRACE_CTL; + output [31:0] TRACE_DATA; + output [1:0] USB0_PORT_INDCTL; + output [1:0] USB1_PORT_INDCTL; + output USB0_VBUS_PWRSELECT; + output USB1_VBUS_PWRSELECT; + input USB0_VBUS_PWRFAULT; + input USB1_VBUS_PWRFAULT; + input SRAM_INTIN; + output M_AXI_GP0_ARVALID; + output M_AXI_GP0_AWVALID; + output M_AXI_GP0_BREADY; + output M_AXI_GP0_RREADY; + output M_AXI_GP0_WLAST; + output M_AXI_GP0_WVALID; + output [C_M_AXI_GP0_THREAD_ID_WIDTH-1:0] M_AXI_GP0_ARID; + output [C_M_AXI_GP0_THREAD_ID_WIDTH-1:0] M_AXI_GP0_AWID; + output [C_M_AXI_GP0_THREAD_ID_WIDTH-1:0] M_AXI_GP0_WID; + output [1:0] M_AXI_GP0_ARBURST; + output [1:0] M_AXI_GP0_ARLOCK; + output [2:0] M_AXI_GP0_ARSIZE; + output [1:0] M_AXI_GP0_AWBURST; + output [1:0] M_AXI_GP0_AWLOCK; + output [2:0] M_AXI_GP0_AWSIZE; + output [2:0] M_AXI_GP0_ARPROT; + output [2:0] M_AXI_GP0_AWPROT; + output [31:0] M_AXI_GP0_ARADDR; + output [31:0] M_AXI_GP0_AWADDR; + output [31:0] M_AXI_GP0_WDATA; + output [3:0] M_AXI_GP0_ARCACHE; + output [3:0] M_AXI_GP0_ARLEN; + output [3:0] M_AXI_GP0_ARQOS; + output [3:0] M_AXI_GP0_AWCACHE; + output [3:0] M_AXI_GP0_AWLEN; + output [3:0] M_AXI_GP0_AWQOS; + output [3:0] M_AXI_GP0_WSTRB; + input M_AXI_GP0_ACLK; + input M_AXI_GP0_ARREADY; + input M_AXI_GP0_AWREADY; + input M_AXI_GP0_BVALID; + input M_AXI_GP0_RLAST; + input M_AXI_GP0_RVALID; + input M_AXI_GP0_WREADY; + input [C_M_AXI_GP0_THREAD_ID_WIDTH-1:0] M_AXI_GP0_BID; + input [C_M_AXI_GP0_THREAD_ID_WIDTH-1:0] M_AXI_GP0_RID; + input [1:0] M_AXI_GP0_BRESP; + input [1:0] M_AXI_GP0_RRESP; + input [31:0] M_AXI_GP0_RDATA; + output M_AXI_GP1_ARVALID; + output M_AXI_GP1_AWVALID; + output M_AXI_GP1_BREADY; + output M_AXI_GP1_RREADY; + output M_AXI_GP1_WLAST; + output M_AXI_GP1_WVALID; + output [C_M_AXI_GP1_THREAD_ID_WIDTH-1:0] M_AXI_GP1_ARID; + output [C_M_AXI_GP1_THREAD_ID_WIDTH-1:0] M_AXI_GP1_AWID; + output [C_M_AXI_GP1_THREAD_ID_WIDTH-1:0] M_AXI_GP1_WID; + output [1:0] M_AXI_GP1_ARBURST; + output [1:0] M_AXI_GP1_ARLOCK; + output [2:0] M_AXI_GP1_ARSIZE; + output [1:0] M_AXI_GP1_AWBURST; + output [1:0] M_AXI_GP1_AWLOCK; + output [2:0] M_AXI_GP1_AWSIZE; + output [2:0] M_AXI_GP1_ARPROT; + output [2:0] M_AXI_GP1_AWPROT; + output [31:0] M_AXI_GP1_ARADDR; + output [31:0] M_AXI_GP1_AWADDR; + output [31:0] M_AXI_GP1_WDATA; + output [3:0] M_AXI_GP1_ARCACHE; + output [3:0] M_AXI_GP1_ARLEN; + output [3:0] M_AXI_GP1_ARQOS; + output [3:0] M_AXI_GP1_AWCACHE; + output [3:0] M_AXI_GP1_AWLEN; + output [3:0] M_AXI_GP1_AWQOS; + output [3:0] M_AXI_GP1_WSTRB; + input M_AXI_GP1_ACLK; + input M_AXI_GP1_ARREADY; + input M_AXI_GP1_AWREADY; + input M_AXI_GP1_BVALID; + input M_AXI_GP1_RLAST; + input M_AXI_GP1_RVALID; + input M_AXI_GP1_WREADY; + input [C_M_AXI_GP1_THREAD_ID_WIDTH-1:0] M_AXI_GP1_BID; + input [C_M_AXI_GP1_THREAD_ID_WIDTH-1:0] M_AXI_GP1_RID; + input [1:0] M_AXI_GP1_BRESP; + input [1:0] M_AXI_GP1_RRESP; + input [31:0] M_AXI_GP1_RDATA; + output S_AXI_GP0_ARREADY; + output S_AXI_GP0_AWREADY; + output S_AXI_GP0_BVALID; + output S_AXI_GP0_RLAST; + output S_AXI_GP0_RVALID; + output S_AXI_GP0_WREADY; + output [1:0] S_AXI_GP0_BRESP; + output [1:0] S_AXI_GP0_RRESP; + output [31:0] S_AXI_GP0_RDATA; + output [5:0] S_AXI_GP0_BID; + output [5:0] S_AXI_GP0_RID; + input S_AXI_GP0_ACLK; + input S_AXI_GP0_ARVALID; + input S_AXI_GP0_AWVALID; + input S_AXI_GP0_BREADY; + input S_AXI_GP0_RREADY; + input S_AXI_GP0_WLAST; + input S_AXI_GP0_WVALID; + input [1:0] S_AXI_GP0_ARBURST; + input [1:0] S_AXI_GP0_ARLOCK; + input [2:0] S_AXI_GP0_ARSIZE; + input [1:0] S_AXI_GP0_AWBURST; + input [1:0] S_AXI_GP0_AWLOCK; + input [2:0] S_AXI_GP0_AWSIZE; + input [2:0] S_AXI_GP0_ARPROT; + input [2:0] S_AXI_GP0_AWPROT; + input [31:0] S_AXI_GP0_ARADDR; + input [31:0] S_AXI_GP0_AWADDR; + input [31:0] S_AXI_GP0_WDATA; + input [3:0] S_AXI_GP0_ARCACHE; + input [3:0] S_AXI_GP0_ARLEN; + input [3:0] S_AXI_GP0_ARQOS; + input [3:0] S_AXI_GP0_AWCACHE; + input [3:0] S_AXI_GP0_AWLEN; + input [3:0] S_AXI_GP0_AWQOS; + input [3:0] S_AXI_GP0_WSTRB; + input [5:0] S_AXI_GP0_ARID; + input [5:0] S_AXI_GP0_AWID; + input [5:0] S_AXI_GP0_WID; + output S_AXI_GP1_ARREADY; + output S_AXI_GP1_AWREADY; + output S_AXI_GP1_BVALID; + output S_AXI_GP1_RLAST; + output S_AXI_GP1_RVALID; + output S_AXI_GP1_WREADY; + output [1:0] S_AXI_GP1_BRESP; + output [1:0] S_AXI_GP1_RRESP; + output [31:0] S_AXI_GP1_RDATA; + output [5:0] S_AXI_GP1_BID; + output [5:0] S_AXI_GP1_RID; + input S_AXI_GP1_ACLK; + input S_AXI_GP1_ARVALID; + input S_AXI_GP1_AWVALID; + input S_AXI_GP1_BREADY; + input S_AXI_GP1_RREADY; + input S_AXI_GP1_WLAST; + input S_AXI_GP1_WVALID; + input [1:0] S_AXI_GP1_ARBURST; + input [1:0] S_AXI_GP1_ARLOCK; + input [2:0] S_AXI_GP1_ARSIZE; + input [1:0] S_AXI_GP1_AWBURST; + input [1:0] S_AXI_GP1_AWLOCK; + input [2:0] S_AXI_GP1_AWSIZE; + input [2:0] S_AXI_GP1_ARPROT; + input [2:0] S_AXI_GP1_AWPROT; + input [31:0] S_AXI_GP1_ARADDR; + input [31:0] S_AXI_GP1_AWADDR; + input [31:0] S_AXI_GP1_WDATA; + input [3:0] S_AXI_GP1_ARCACHE; + input [3:0] S_AXI_GP1_ARLEN; + input [3:0] S_AXI_GP1_ARQOS; + input [3:0] S_AXI_GP1_AWCACHE; + input [3:0] S_AXI_GP1_AWLEN; + input [3:0] S_AXI_GP1_AWQOS; + input [3:0] S_AXI_GP1_WSTRB; + input [5:0] S_AXI_GP1_ARID; + input [5:0] S_AXI_GP1_AWID; + input [5:0] S_AXI_GP1_WID; + output S_AXI_ACP_AWREADY; + output S_AXI_ACP_ARREADY; + output S_AXI_ACP_BVALID; + output S_AXI_ACP_RLAST; + output S_AXI_ACP_RVALID; + output S_AXI_ACP_WREADY; + output [1:0] S_AXI_ACP_BRESP; + output [1:0] S_AXI_ACP_RRESP; + output [2:0] S_AXI_ACP_BID; + output [2:0] S_AXI_ACP_RID; + output [63:0] S_AXI_ACP_RDATA; + input S_AXI_ACP_ACLK; + input S_AXI_ACP_ARVALID; + input S_AXI_ACP_AWVALID; + input S_AXI_ACP_BREADY; + input S_AXI_ACP_RREADY; + input S_AXI_ACP_WLAST; + input S_AXI_ACP_WVALID; + input [2:0] S_AXI_ACP_ARID; + input [2:0] S_AXI_ACP_ARPROT; + input [2:0] S_AXI_ACP_AWID; + input [2:0] S_AXI_ACP_AWPROT; + input [2:0] S_AXI_ACP_WID; + input [31:0] S_AXI_ACP_ARADDR; + input [31:0] S_AXI_ACP_AWADDR; + input [3:0] S_AXI_ACP_ARCACHE; + input [3:0] S_AXI_ACP_ARLEN; + input [3:0] S_AXI_ACP_ARQOS; + input [3:0] S_AXI_ACP_AWCACHE; + input [3:0] S_AXI_ACP_AWLEN; + input [3:0] S_AXI_ACP_AWQOS; + input [1:0] S_AXI_ACP_ARBURST; + input [1:0] S_AXI_ACP_ARLOCK; + input [2:0] S_AXI_ACP_ARSIZE; + input [1:0] S_AXI_ACP_AWBURST; + input [1:0] S_AXI_ACP_AWLOCK; + input [2:0] S_AXI_ACP_AWSIZE; + input [4:0] S_AXI_ACP_ARUSER; + input [4:0] S_AXI_ACP_AWUSER; + input [63:0] S_AXI_ACP_WDATA; + input [7:0] S_AXI_ACP_WSTRB; + output S_AXI_HP0_ARREADY; + output S_AXI_HP0_AWREADY; + output S_AXI_HP0_BVALID; + output S_AXI_HP0_RLAST; + output S_AXI_HP0_RVALID; + output S_AXI_HP0_WREADY; + output [1:0] S_AXI_HP0_BRESP; + output [1:0] S_AXI_HP0_RRESP; + output [5:0] S_AXI_HP0_BID; + output [5:0] S_AXI_HP0_RID; + output [C_S_AXI_HP0_DATA_WIDTH-1:0] S_AXI_HP0_RDATA; + output [7:0] S_AXI_HP0_RCOUNT; + output [7:0] S_AXI_HP0_WCOUNT; + output [2:0] S_AXI_HP0_RACOUNT; + output [5:0] S_AXI_HP0_WACOUNT; + input S_AXI_HP0_ACLK; + input S_AXI_HP0_ARVALID; + input S_AXI_HP0_AWVALID; + input S_AXI_HP0_BREADY; + input S_AXI_HP0_RDISSUECAP1_EN; + input S_AXI_HP0_RREADY; + input S_AXI_HP0_WLAST; + input S_AXI_HP0_WRISSUECAP1_EN; + input S_AXI_HP0_WVALID; + input [1:0] S_AXI_HP0_ARBURST; + input [1:0] S_AXI_HP0_ARLOCK; + input [2:0] S_AXI_HP0_ARSIZE; + input [1:0] S_AXI_HP0_AWBURST; + input [1:0] S_AXI_HP0_AWLOCK; + input [2:0] S_AXI_HP0_AWSIZE; + input [2:0] S_AXI_HP0_ARPROT; + input [2:0] S_AXI_HP0_AWPROT; + input [31:0] S_AXI_HP0_ARADDR; + input [31:0] S_AXI_HP0_AWADDR; + input [3:0] S_AXI_HP0_ARCACHE; + input [3:0] S_AXI_HP0_ARLEN; + input [3:0] S_AXI_HP0_ARQOS; + input [3:0] S_AXI_HP0_AWCACHE; + input [3:0] S_AXI_HP0_AWLEN; + input [3:0] S_AXI_HP0_AWQOS; + input [5:0] S_AXI_HP0_ARID; + input [5:0] S_AXI_HP0_AWID; + input [5:0] S_AXI_HP0_WID; + input [C_S_AXI_HP0_DATA_WIDTH-1:0] S_AXI_HP0_WDATA; + input [C_S_AXI_HP0_DATA_WIDTH/8-1:0] S_AXI_HP0_WSTRB; + output S_AXI_HP1_ARREADY; + output S_AXI_HP1_AWREADY; + output S_AXI_HP1_BVALID; + output S_AXI_HP1_RLAST; + output S_AXI_HP1_RVALID; + output S_AXI_HP1_WREADY; + output [1:0] S_AXI_HP1_BRESP; + output [1:0] S_AXI_HP1_RRESP; + output [5:0] S_AXI_HP1_BID; + output [5:0] S_AXI_HP1_RID; + output [C_S_AXI_HP1_DATA_WIDTH-1:0] S_AXI_HP1_RDATA; + output [7:0] S_AXI_HP1_RCOUNT; + output [7:0] S_AXI_HP1_WCOUNT; + output [2:0] S_AXI_HP1_RACOUNT; + output [5:0] S_AXI_HP1_WACOUNT; + input S_AXI_HP1_ACLK; + input S_AXI_HP1_ARVALID; + input S_AXI_HP1_AWVALID; + input S_AXI_HP1_BREADY; + input S_AXI_HP1_RDISSUECAP1_EN; + input S_AXI_HP1_RREADY; + input S_AXI_HP1_WLAST; + input S_AXI_HP1_WRISSUECAP1_EN; + input S_AXI_HP1_WVALID; + input [1:0] S_AXI_HP1_ARBURST; + input [1:0] S_AXI_HP1_ARLOCK; + input [2:0] S_AXI_HP1_ARSIZE; + input [1:0] S_AXI_HP1_AWBURST; + input [1:0] S_AXI_HP1_AWLOCK; + input [2:0] S_AXI_HP1_AWSIZE; + input [2:0] S_AXI_HP1_ARPROT; + input [2:0] S_AXI_HP1_AWPROT; + input [31:0] S_AXI_HP1_ARADDR; + input [31:0] S_AXI_HP1_AWADDR; + input [3:0] S_AXI_HP1_ARCACHE; + input [3:0] S_AXI_HP1_ARLEN; + input [3:0] S_AXI_HP1_ARQOS; + input [3:0] S_AXI_HP1_AWCACHE; + input [3:0] S_AXI_HP1_AWLEN; + input [3:0] S_AXI_HP1_AWQOS; + input [5:0] S_AXI_HP1_ARID; + input [5:0] S_AXI_HP1_AWID; + input [5:0] S_AXI_HP1_WID; + input [C_S_AXI_HP1_DATA_WIDTH-1:0] S_AXI_HP1_WDATA; + input [C_S_AXI_HP1_DATA_WIDTH/8-1:0] S_AXI_HP1_WSTRB; + output S_AXI_HP2_ARREADY; + output S_AXI_HP2_AWREADY; + output S_AXI_HP2_BVALID; + output S_AXI_HP2_RLAST; + output S_AXI_HP2_RVALID; + output S_AXI_HP2_WREADY; + output [1:0] S_AXI_HP2_BRESP; + output [1:0] S_AXI_HP2_RRESP; + output [5:0] S_AXI_HP2_BID; + output [5:0] S_AXI_HP2_RID; + output [C_S_AXI_HP2_DATA_WIDTH-1:0] S_AXI_HP2_RDATA; + output [7:0] S_AXI_HP2_RCOUNT; + output [7:0] S_AXI_HP2_WCOUNT; + output [2:0] S_AXI_HP2_RACOUNT; + output [5:0] S_AXI_HP2_WACOUNT; + input S_AXI_HP2_ACLK; + input S_AXI_HP2_ARVALID; + input S_AXI_HP2_AWVALID; + input S_AXI_HP2_BREADY; + input S_AXI_HP2_RDISSUECAP1_EN; + input S_AXI_HP2_RREADY; + input S_AXI_HP2_WLAST; + input S_AXI_HP2_WRISSUECAP1_EN; + input S_AXI_HP2_WVALID; + input [1:0] S_AXI_HP2_ARBURST; + input [1:0] S_AXI_HP2_ARLOCK; + input [2:0] S_AXI_HP2_ARSIZE; + input [1:0] S_AXI_HP2_AWBURST; + input [1:0] S_AXI_HP2_AWLOCK; + input [2:0] S_AXI_HP2_AWSIZE; + input [2:0] S_AXI_HP2_ARPROT; + input [2:0] S_AXI_HP2_AWPROT; + input [31:0] S_AXI_HP2_ARADDR; + input [31:0] S_AXI_HP2_AWADDR; + input [3:0] S_AXI_HP2_ARCACHE; + input [3:0] S_AXI_HP2_ARLEN; + input [3:0] S_AXI_HP2_ARQOS; + input [3:0] S_AXI_HP2_AWCACHE; + input [3:0] S_AXI_HP2_AWLEN; + input [3:0] S_AXI_HP2_AWQOS; + input [5:0] S_AXI_HP2_ARID; + input [5:0] S_AXI_HP2_AWID; + input [5:0] S_AXI_HP2_WID; + input [C_S_AXI_HP2_DATA_WIDTH-1:0] S_AXI_HP2_WDATA; + input [C_S_AXI_HP2_DATA_WIDTH/8-1:0] S_AXI_HP2_WSTRB; + output S_AXI_HP3_ARREADY; + output S_AXI_HP3_AWREADY; + output S_AXI_HP3_BVALID; + output S_AXI_HP3_RLAST; + output S_AXI_HP3_RVALID; + output S_AXI_HP3_WREADY; + output [1:0] S_AXI_HP3_BRESP; + output [1:0] S_AXI_HP3_RRESP; + output [5:0] S_AXI_HP3_BID; + output [5:0] S_AXI_HP3_RID; + output [C_S_AXI_HP3_DATA_WIDTH-1:0] S_AXI_HP3_RDATA; + output [7:0] S_AXI_HP3_RCOUNT; + output [7:0] S_AXI_HP3_WCOUNT; + output [2:0] S_AXI_HP3_RACOUNT; + output [5:0] S_AXI_HP3_WACOUNT; + input S_AXI_HP3_ACLK; + input S_AXI_HP3_ARVALID; + input S_AXI_HP3_AWVALID; + input S_AXI_HP3_BREADY; + input S_AXI_HP3_RDISSUECAP1_EN; + input S_AXI_HP3_RREADY; + input S_AXI_HP3_WLAST; + input S_AXI_HP3_WRISSUECAP1_EN; + input S_AXI_HP3_WVALID; + input [1:0] S_AXI_HP3_ARBURST; + input [1:0] S_AXI_HP3_ARLOCK; + input [2:0] S_AXI_HP3_ARSIZE; + input [1:0] S_AXI_HP3_AWBURST; + input [1:0] S_AXI_HP3_AWLOCK; + input [2:0] S_AXI_HP3_AWSIZE; + input [2:0] S_AXI_HP3_ARPROT; + input [2:0] S_AXI_HP3_AWPROT; + input [31:0] S_AXI_HP3_ARADDR; + input [31:0] S_AXI_HP3_AWADDR; + input [3:0] S_AXI_HP3_ARCACHE; + input [3:0] S_AXI_HP3_ARLEN; + input [3:0] S_AXI_HP3_ARQOS; + input [3:0] S_AXI_HP3_AWCACHE; + input [3:0] S_AXI_HP3_AWLEN; + input [3:0] S_AXI_HP3_AWQOS; + input [5:0] S_AXI_HP3_ARID; + input [5:0] S_AXI_HP3_AWID; + input [5:0] S_AXI_HP3_WID; + input [C_S_AXI_HP3_DATA_WIDTH-1:0] S_AXI_HP3_WDATA; + input [C_S_AXI_HP3_DATA_WIDTH/8-1:0] S_AXI_HP3_WSTRB; + output [1:0] DMA0_DATYPE; + output DMA0_DAVALID; + output DMA0_DRREADY; + input DMA0_ACLK; + input DMA0_DAREADY; + input DMA0_DRLAST; + input DMA0_DRVALID; + input [1:0] DMA0_DRTYPE; + output [1:0] DMA1_DATYPE; + output DMA1_DAVALID; + output DMA1_DRREADY; + input DMA1_ACLK; + input DMA1_DAREADY; + input DMA1_DRLAST; + input DMA1_DRVALID; + input [1:0] DMA1_DRTYPE; + output [1:0] DMA2_DATYPE; + output DMA2_DAVALID; + output DMA2_DRREADY; + input DMA2_ACLK; + input DMA2_DAREADY; + input DMA2_DRLAST; + input DMA2_DRVALID; + input DMA3_DRVALID; + output [1:0] DMA3_DATYPE; + output DMA3_DAVALID; + output DMA3_DRREADY; + input DMA3_ACLK; + input DMA3_DAREADY; + input DMA3_DRLAST; + input [1:0] DMA2_DRTYPE; + input [1:0] DMA3_DRTYPE; + input [31:0] FTMD_TRACEIN_DATA; + input FTMD_TRACEIN_VALID; + input FTMD_TRACEIN_CLK; + input [3:0] FTMD_TRACEIN_ATID; + input [3:0] FTMT_F2P_TRIG; + output [3:0] FTMT_F2P_TRIGACK; + input [31:0] FTMT_F2P_DEBUG; + input [3:0] FTMT_P2F_TRIGACK; + output [3:0] FTMT_P2F_TRIG; + output [31:0] FTMT_P2F_DEBUG; + output FCLK_CLK3; + output FCLK_CLK2; + output FCLK_CLK1; + output FCLK_CLK0; + input FCLK_CLKTRIG3_N; + input FCLK_CLKTRIG2_N; + input FCLK_CLKTRIG1_N; + input FCLK_CLKTRIG0_N; + output FCLK_RESET3_N; + output FCLK_RESET2_N; + output FCLK_RESET1_N; + output FCLK_RESET0_N; + input FPGA_IDLE_N; + input [3:0] DDR_ARB; + input [irq_width-1:0] IRQ_F2P; + input Core0_nFIQ; + input Core0_nIRQ; + input Core1_nFIQ; + input Core1_nIRQ; + output EVENT_EVENTO; + output [1:0] EVENT_STANDBYWFE; + output [1:0] EVENT_STANDBYWFI; + input EVENT_EVENTI; + inout [53:0] MIO; + inout DDR_Clk; + inout DDR_Clk_n; + inout DDR_CKE; + inout DDR_CS_n; + inout DDR_RAS_n; + inout DDR_CAS_n; + output DDR_WEB; + inout [2:0] DDR_BankAddr; + inout [14:0] DDR_Addr; + inout DDR_ODT; + inout DDR_DRSTB; + inout [31:0] DDR_DQ; + inout [3:0] DDR_DM; + inout [3:0] DDR_DQS; + inout [3:0] DDR_DQS_n; + inout DDR_VRN; + inout DDR_VRP; +/* Reset Input & Clock Input */ + input PS_SRSTB; + input PS_CLK; + input PS_PORB; + output IRQ_P2F_DMAC_ABORT; + output IRQ_P2F_DMAC0; + output IRQ_P2F_DMAC1; + output IRQ_P2F_DMAC2; + output IRQ_P2F_DMAC3; + output IRQ_P2F_DMAC4; + output IRQ_P2F_DMAC5; + output IRQ_P2F_DMAC6; + output IRQ_P2F_DMAC7; + output IRQ_P2F_SMC; + output IRQ_P2F_QSPI; + output IRQ_P2F_CTI; + output IRQ_P2F_GPIO; + output IRQ_P2F_USB0; + output IRQ_P2F_ENET0; + output IRQ_P2F_ENET_WAKE0; + output IRQ_P2F_SDIO0; + output IRQ_P2F_I2C0; + output IRQ_P2F_SPI0; + output IRQ_P2F_UART0; + output IRQ_P2F_CAN0; + output IRQ_P2F_USB1; + output IRQ_P2F_ENET1; + output IRQ_P2F_ENET_WAKE1; + output IRQ_P2F_SDIO1; + output IRQ_P2F_I2C1; + output IRQ_P2F_SPI1; + output IRQ_P2F_UART1; + output IRQ_P2F_CAN1; + + + /* Internal wires/nets used for connectivity */ + wire net_rstn; + wire net_sw_clk; + wire net_ocm_clk; + wire net_arbiter_clk; + + wire net_axi_mgp0_rstn; + wire net_axi_mgp1_rstn; + wire net_axi_gp0_rstn; + wire net_axi_gp1_rstn; + wire net_axi_hp0_rstn; + wire net_axi_hp1_rstn; + wire net_axi_hp2_rstn; + wire net_axi_hp3_rstn; + wire net_axi_acp_rstn; + wire [4:0] net_axi_acp_awuser; + wire [4:0] net_axi_acp_aruser; + + + /* Dummy */ + assign net_axi_acp_awuser = S_AXI_ACP_AWUSER; + assign net_axi_acp_aruser = S_AXI_ACP_ARUSER; + + /* Global variables */ + reg DEBUG_INFO = 1; + reg STOP_ON_ERROR = 1; + + /* local variable acting as semaphore for wait_mem_update and wait_reg_update task */ + reg mem_update_key = 1; + reg reg_update_key_0 = 1; + reg reg_update_key_1 = 1; + + /* assignments and semantic checks for unused ports */ + `include "processing_system7_bfm_v2_0_unused_ports.v" + + /* include api definition */ + `include "processing_system7_bfm_v2_0_apis.v" + + /* Reset Generator */ + processing_system7_bfm_v2_0_gen_reset gen_rst(.por_rst_n(PS_PORB), + .sys_rst_n(PS_SRSTB), + .rst_out_n(net_rstn), + + .m_axi_gp0_clk(M_AXI_GP0_ACLK), + .m_axi_gp1_clk(M_AXI_GP1_ACLK), + .s_axi_gp0_clk(S_AXI_GP0_ACLK), + .s_axi_gp1_clk(S_AXI_GP1_ACLK), + .s_axi_hp0_clk(S_AXI_HP0_ACLK), + .s_axi_hp1_clk(S_AXI_HP1_ACLK), + .s_axi_hp2_clk(S_AXI_HP2_ACLK), + .s_axi_hp3_clk(S_AXI_HP3_ACLK), + .s_axi_acp_clk(S_AXI_ACP_ACLK), + + .m_axi_gp0_rstn(net_axi_mgp0_rstn), + .m_axi_gp1_rstn(net_axi_mgp1_rstn), + .s_axi_gp0_rstn(net_axi_gp0_rstn), + .s_axi_gp1_rstn(net_axi_gp1_rstn), + .s_axi_hp0_rstn(net_axi_hp0_rstn), + .s_axi_hp1_rstn(net_axi_hp1_rstn), + .s_axi_hp2_rstn(net_axi_hp2_rstn), + .s_axi_hp3_rstn(net_axi_hp3_rstn), + .s_axi_acp_rstn(net_axi_acp_rstn), + + .fclk_reset3_n(FCLK_RESET3_N), + .fclk_reset2_n(FCLK_RESET2_N), + .fclk_reset1_n(FCLK_RESET1_N), + .fclk_reset0_n(FCLK_RESET0_N), + + .fpga_acp_reset_n(), ////S_AXI_ACP_ARESETN), (These are removed from Zynq IP) + .fpga_gp_m0_reset_n(), ////M_AXI_GP0_ARESETN), + .fpga_gp_m1_reset_n(), ////M_AXI_GP1_ARESETN), + .fpga_gp_s0_reset_n(), ////S_AXI_GP0_ARESETN), + .fpga_gp_s1_reset_n(), ////S_AXI_GP1_ARESETN), + .fpga_hp_s0_reset_n(), ////S_AXI_HP0_ARESETN), + .fpga_hp_s1_reset_n(), ////S_AXI_HP1_ARESETN), + .fpga_hp_s2_reset_n(), ////S_AXI_HP2_ARESETN), + .fpga_hp_s3_reset_n() ////S_AXI_HP3_ARESETN) + ); + + /* Clock Generator */ + processing_system7_bfm_v2_0_gen_clock #(C_FCLK_CLK3_FREQ, C_FCLK_CLK2_FREQ, C_FCLK_CLK1_FREQ, C_FCLK_CLK0_FREQ) + gen_clk(.ps_clk(PS_CLK), + .sw_clk(net_sw_clk), + + .fclk_clk3(FCLK_CLK3), + .fclk_clk2(FCLK_CLK2), + .fclk_clk1(FCLK_CLK1), + .fclk_clk0(FCLK_CLK0) + ); + + wire net_wr_ack_ocm_gp0, net_wr_ack_ddr_gp0, net_wr_ack_ocm_gp1, net_wr_ack_ddr_gp1; + wire net_wr_dv_ocm_gp0, net_wr_dv_ddr_gp0, net_wr_dv_ocm_gp1, net_wr_dv_ddr_gp1; + wire [max_burst_bits-1:0] net_wr_data_gp0, net_wr_data_gp1; + wire [addr_width-1:0] net_wr_addr_gp0, net_wr_addr_gp1; + wire [max_burst_bytes_width:0] net_wr_bytes_gp0, net_wr_bytes_gp1; + wire [axi_qos_width-1:0] net_wr_qos_gp0, net_wr_qos_gp1; + + wire net_rd_req_ddr_gp0, net_rd_req_ddr_gp1; + wire net_rd_req_ocm_gp0, net_rd_req_ocm_gp1; + wire net_rd_req_reg_gp0, net_rd_req_reg_gp1; + wire [addr_width-1:0] net_rd_addr_gp0, net_rd_addr_gp1; + wire [max_burst_bytes_width:0] net_rd_bytes_gp0, net_rd_bytes_gp1; + wire [max_burst_bits-1:0] net_rd_data_ddr_gp0, net_rd_data_ddr_gp1; + wire [max_burst_bits-1:0] net_rd_data_ocm_gp0, net_rd_data_ocm_gp1; + wire [max_burst_bits-1:0] net_rd_data_reg_gp0, net_rd_data_reg_gp1; + wire net_rd_dv_ddr_gp0, net_rd_dv_ddr_gp1; + wire net_rd_dv_ocm_gp0, net_rd_dv_ocm_gp1; + wire net_rd_dv_reg_gp0, net_rd_dv_reg_gp1; + wire [axi_qos_width-1:0] net_rd_qos_gp0, net_rd_qos_gp1; + + wire net_wr_ack_ddr_hp0, net_wr_ack_ddr_hp1, net_wr_ack_ddr_hp2, net_wr_ack_ddr_hp3; + wire net_wr_ack_ocm_hp0, net_wr_ack_ocm_hp1, net_wr_ack_ocm_hp2, net_wr_ack_ocm_hp3; + wire net_wr_dv_ddr_hp0, net_wr_dv_ddr_hp1, net_wr_dv_ddr_hp2, net_wr_dv_ddr_hp3; + wire net_wr_dv_ocm_hp0, net_wr_dv_ocm_hp1, net_wr_dv_ocm_hp2, net_wr_dv_ocm_hp3; + wire [max_burst_bits-1:0] net_wr_data_hp0, net_wr_data_hp1, net_wr_data_hp2, net_wr_data_hp3; + wire [addr_width-1:0] net_wr_addr_hp0, net_wr_addr_hp1, net_wr_addr_hp2, net_wr_addr_hp3; + wire [max_burst_bytes_width:0] net_wr_bytes_hp0, net_wr_bytes_hp1, net_wr_bytes_hp2, net_wr_bytes_hp3; + wire [axi_qos_width-1:0] net_wr_qos_hp0, net_wr_qos_hp1, net_wr_qos_hp2, net_wr_qos_hp3; + + wire net_rd_req_ddr_hp0, net_rd_req_ddr_hp1, net_rd_req_ddr_hp2, net_rd_req_ddr_hp3; + wire net_rd_req_ocm_hp0, net_rd_req_ocm_hp1, net_rd_req_ocm_hp2, net_rd_req_ocm_hp3; + wire [addr_width-1:0] net_rd_addr_hp0, net_rd_addr_hp1, net_rd_addr_hp2, net_rd_addr_hp3; + wire [max_burst_bytes_width:0] net_rd_bytes_hp0, net_rd_bytes_hp1, net_rd_bytes_hp2, net_rd_bytes_hp3; + wire [max_burst_bits-1:0] net_rd_data_ddr_hp0, net_rd_data_ddr_hp1, net_rd_data_ddr_hp2, net_rd_data_ddr_hp3; + wire [max_burst_bits-1:0] net_rd_data_ocm_hp0, net_rd_data_ocm_hp1, net_rd_data_ocm_hp2, net_rd_data_ocm_hp3; + wire net_rd_dv_ddr_hp0, net_rd_dv_ddr_hp1, net_rd_dv_ddr_hp2, net_rd_dv_ddr_hp3; + wire net_rd_dv_ocm_hp0, net_rd_dv_ocm_hp1, net_rd_dv_ocm_hp2, net_rd_dv_ocm_hp3; + wire [axi_qos_width-1:0] net_rd_qos_hp0, net_rd_qos_hp1, net_rd_qos_hp2, net_rd_qos_hp3; + + wire net_wr_ack_ddr_acp,net_wr_ack_ocm_acp; + wire net_wr_dv_ddr_acp,net_wr_dv_ocm_acp; + wire [max_burst_bits-1:0] net_wr_data_acp; + wire [addr_width-1:0] net_wr_addr_acp; + wire [max_burst_bytes_width:0] net_wr_bytes_acp; + wire [axi_qos_width-1:0] net_wr_qos_acp; + + wire net_rd_req_ddr_acp, net_rd_req_ocm_acp; + wire [addr_width-1:0] net_rd_addr_acp; + wire [max_burst_bytes_width:0] net_rd_bytes_acp; + wire [max_burst_bits-1:0] net_rd_data_ddr_acp; + wire [max_burst_bits-1:0] net_rd_data_ocm_acp; + wire net_rd_dv_ddr_acp,net_rd_dv_ocm_acp; + wire [axi_qos_width-1:0] net_rd_qos_acp; + + wire ocm_wr_ack_port0; + wire ocm_wr_dv_port0; + wire ocm_rd_req_port0; + wire ocm_rd_dv_port0; + wire [addr_width-1:0] ocm_wr_addr_port0; + wire [max_burst_bits-1:0] ocm_wr_data_port0; + wire [max_burst_bytes_width:0] ocm_wr_bytes_port0; + wire [addr_width-1:0] ocm_rd_addr_port0; + wire [max_burst_bits-1:0] ocm_rd_data_port0; + wire [max_burst_bytes_width:0] ocm_rd_bytes_port0; + wire [axi_qos_width-1:0] ocm_wr_qos_port0; + wire [axi_qos_width-1:0] ocm_rd_qos_port0; + + wire ocm_wr_ack_port1; + wire ocm_wr_dv_port1; + wire ocm_rd_req_port1; + wire ocm_rd_dv_port1; + wire [addr_width-1:0] ocm_wr_addr_port1; + wire [max_burst_bits-1:0] ocm_wr_data_port1; + wire [max_burst_bytes_width:0] ocm_wr_bytes_port1; + wire [addr_width-1:0] ocm_rd_addr_port1; + wire [max_burst_bits-1:0] ocm_rd_data_port1; + wire [max_burst_bytes_width:0] ocm_rd_bytes_port1; + wire [axi_qos_width-1:0] ocm_wr_qos_port1; + wire [axi_qos_width-1:0] ocm_rd_qos_port1; + + wire ddr_wr_ack_port0; + wire ddr_wr_dv_port0; + wire ddr_rd_req_port0; + wire ddr_rd_dv_port0; + wire[addr_width-1:0] ddr_wr_addr_port0; + wire[max_burst_bits-1:0] ddr_wr_data_port0; + wire[max_burst_bytes_width:0] ddr_wr_bytes_port0; + wire[addr_width-1:0] ddr_rd_addr_port0; + wire[max_burst_bits-1:0] ddr_rd_data_port0; + wire[max_burst_bytes_width:0] ddr_rd_bytes_port0; + wire [axi_qos_width-1:0] ddr_wr_qos_port0; + wire [axi_qos_width-1:0] ddr_rd_qos_port0; + + wire ddr_wr_ack_port1; + wire ddr_wr_dv_port1; + wire ddr_rd_req_port1; + wire ddr_rd_dv_port1; + wire[addr_width-1:0] ddr_wr_addr_port1; + wire[max_burst_bits-1:0] ddr_wr_data_port1; + wire[max_burst_bytes_width:0] ddr_wr_bytes_port1; + wire[addr_width-1:0] ddr_rd_addr_port1; + wire[max_burst_bits-1:0] ddr_rd_data_port1; + wire[max_burst_bytes_width:0] ddr_rd_bytes_port1; + wire[axi_qos_width-1:0] ddr_wr_qos_port1; + wire[axi_qos_width-1:0] ddr_rd_qos_port1; + + wire ddr_wr_ack_port2; + wire ddr_wr_dv_port2; + wire ddr_rd_req_port2; + wire ddr_rd_dv_port2; + wire[addr_width-1:0] ddr_wr_addr_port2; + wire[max_burst_bits-1:0] ddr_wr_data_port2; + wire[max_burst_bytes_width:0] ddr_wr_bytes_port2; + wire[addr_width-1:0] ddr_rd_addr_port2; + wire[max_burst_bits-1:0] ddr_rd_data_port2; + wire[max_burst_bytes_width:0] ddr_rd_bytes_port2; + wire[axi_qos_width-1:0] ddr_wr_qos_port2; + wire[axi_qos_width-1:0] ddr_rd_qos_port2; + + wire ddr_wr_ack_port3; + wire ddr_wr_dv_port3; + wire ddr_rd_req_port3; + wire ddr_rd_dv_port3; + wire[addr_width-1:0] ddr_wr_addr_port3; + wire[max_burst_bits-1:0] ddr_wr_data_port3; + wire[max_burst_bytes_width:0] ddr_wr_bytes_port3; + wire[addr_width-1:0] ddr_rd_addr_port3; + wire[max_burst_bits-1:0] ddr_rd_data_port3; + wire[max_burst_bytes_width:0] ddr_rd_bytes_port3; + wire[axi_qos_width-1:0] ddr_wr_qos_port3; + wire[axi_qos_width-1:0] ddr_rd_qos_port3; + + wire reg_rd_req_port0; + wire reg_rd_dv_port0; + wire[addr_width-1:0] reg_rd_addr_port0; + wire[max_burst_bits-1:0] reg_rd_data_port0; + wire[max_burst_bytes_width:0] reg_rd_bytes_port0; + wire [axi_qos_width-1:0] reg_rd_qos_port0; + + wire reg_rd_req_port1; + wire reg_rd_dv_port1; + wire[addr_width-1:0] reg_rd_addr_port1; + wire[max_burst_bits-1:0] reg_rd_data_port1; + wire[max_burst_bytes_width:0] reg_rd_bytes_port1; + wire [axi_qos_width-1:0] reg_rd_qos_port1; + + wire [11:0] M_AXI_GP0_AWID_FULL; + wire [11:0] M_AXI_GP0_WID_FULL; + wire [11:0] M_AXI_GP0_ARID_FULL; + + wire [11:0] M_AXI_GP0_BID_FULL; + wire [11:0] M_AXI_GP0_RID_FULL; + + wire [11:0] M_AXI_GP1_AWID_FULL; + wire [11:0] M_AXI_GP1_WID_FULL; + wire [11:0] M_AXI_GP1_ARID_FULL; + + wire [11:0] M_AXI_GP1_BID_FULL; + wire [11:0] M_AXI_GP1_RID_FULL; + + + function [5:0] compress_id; + input [11:0] id; + begin + compress_id = id[5:0]; + end + endfunction + + function [11:0] uncompress_id; + input [5:0] id; + begin + uncompress_id = {6'b110000, id[5:0]}; + end + endfunction + + assign M_AXI_GP0_AWID = (C_M_AXI_GP0_ENABLE_STATIC_REMAP == 1) ? compress_id(M_AXI_GP0_AWID_FULL) : M_AXI_GP0_AWID_FULL; + assign M_AXI_GP0_WID = (C_M_AXI_GP0_ENABLE_STATIC_REMAP == 1) ? compress_id(M_AXI_GP0_WID_FULL) : M_AXI_GP0_WID_FULL; + assign M_AXI_GP0_ARID = (C_M_AXI_GP0_ENABLE_STATIC_REMAP == 1) ? compress_id(M_AXI_GP0_ARID_FULL) : M_AXI_GP0_ARID_FULL; + assign M_AXI_GP0_BID_FULL = (C_M_AXI_GP0_ENABLE_STATIC_REMAP == 1) ? uncompress_id(M_AXI_GP0_BID) : M_AXI_GP0_BID; + assign M_AXI_GP0_RID_FULL = (C_M_AXI_GP0_ENABLE_STATIC_REMAP == 1) ? uncompress_id(M_AXI_GP0_RID) : M_AXI_GP0_RID; + + + assign M_AXI_GP1_AWID = (C_M_AXI_GP1_ENABLE_STATIC_REMAP == 1) ? compress_id(M_AXI_GP1_AWID_FULL) : M_AXI_GP1_AWID_FULL; + assign M_AXI_GP1_WID = (C_M_AXI_GP1_ENABLE_STATIC_REMAP == 1) ? compress_id(M_AXI_GP1_WID_FULL) : M_AXI_GP1_WID_FULL; + assign M_AXI_GP1_ARID = (C_M_AXI_GP1_ENABLE_STATIC_REMAP == 1) ? compress_id(M_AXI_GP1_ARID_FULL) : M_AXI_GP1_ARID_FULL; + assign M_AXI_GP1_BID_FULL = (C_M_AXI_GP1_ENABLE_STATIC_REMAP == 1) ? uncompress_id(M_AXI_GP1_BID) : M_AXI_GP1_BID; + assign M_AXI_GP1_RID_FULL = (C_M_AXI_GP1_ENABLE_STATIC_REMAP == 1) ? uncompress_id(M_AXI_GP1_RID) : M_AXI_GP1_RID; + + + + + processing_system7_bfm_v2_0_interconnect_model icm ( + .rstn(net_rstn), + .sw_clk(net_sw_clk), + + .w_qos_gp0(net_wr_qos_gp0), + .w_qos_gp1(net_wr_qos_gp1), + .w_qos_hp0(net_wr_qos_hp0), + .w_qos_hp1(net_wr_qos_hp1), + .w_qos_hp2(net_wr_qos_hp2), + .w_qos_hp3(net_wr_qos_hp3), + + .r_qos_gp0(net_rd_qos_gp0), + .r_qos_gp1(net_rd_qos_gp1), + .r_qos_hp0(net_rd_qos_hp0), + .r_qos_hp1(net_rd_qos_hp1), + .r_qos_hp2(net_rd_qos_hp2), + .r_qos_hp3(net_rd_qos_hp3), + + /* GP Slave ports access */ + .wr_ack_ddr_gp0(net_wr_ack_ddr_gp0), + .wr_ack_ocm_gp0(net_wr_ack_ocm_gp0), + .wr_data_gp0(net_wr_data_gp0), + .wr_addr_gp0(net_wr_addr_gp0), + .wr_bytes_gp0(net_wr_bytes_gp0), + .wr_dv_ddr_gp0(net_wr_dv_ddr_gp0), + .wr_dv_ocm_gp0(net_wr_dv_ocm_gp0), + .rd_req_ddr_gp0(net_rd_req_ddr_gp0), + .rd_req_ocm_gp0(net_rd_req_ocm_gp0), + .rd_req_reg_gp0(net_rd_req_reg_gp0), + .rd_addr_gp0(net_rd_addr_gp0), + .rd_bytes_gp0(net_rd_bytes_gp0), + .rd_data_ddr_gp0(net_rd_data_ddr_gp0), + .rd_data_ocm_gp0(net_rd_data_ocm_gp0), + .rd_data_reg_gp0(net_rd_data_reg_gp0), + .rd_dv_ddr_gp0(net_rd_dv_ddr_gp0), + .rd_dv_ocm_gp0(net_rd_dv_ocm_gp0), + .rd_dv_reg_gp0(net_rd_dv_reg_gp0), + + .wr_ack_ddr_gp1(net_wr_ack_ddr_gp1), + .wr_ack_ocm_gp1(net_wr_ack_ocm_gp1), + .wr_data_gp1(net_wr_data_gp1), + .wr_addr_gp1(net_wr_addr_gp1), + .wr_bytes_gp1(net_wr_bytes_gp1), + .wr_dv_ddr_gp1(net_wr_dv_ddr_gp1), + .wr_dv_ocm_gp1(net_wr_dv_ocm_gp1), + .rd_req_ddr_gp1(net_rd_req_ddr_gp1), + .rd_req_ocm_gp1(net_rd_req_ocm_gp1), + .rd_req_reg_gp1(net_rd_req_reg_gp1), + .rd_addr_gp1(net_rd_addr_gp1), + .rd_bytes_gp1(net_rd_bytes_gp1), + .rd_data_ddr_gp1(net_rd_data_ddr_gp1), + .rd_data_ocm_gp1(net_rd_data_ocm_gp1), + .rd_data_reg_gp1(net_rd_data_reg_gp1), + .rd_dv_ddr_gp1(net_rd_dv_ddr_gp1), + .rd_dv_ocm_gp1(net_rd_dv_ocm_gp1), + .rd_dv_reg_gp1(net_rd_dv_reg_gp1), + + /* HP Slave ports access */ + .wr_ack_ddr_hp0(net_wr_ack_ddr_hp0), + .wr_ack_ocm_hp0(net_wr_ack_ocm_hp0), + .wr_data_hp0(net_wr_data_hp0), + .wr_addr_hp0(net_wr_addr_hp0), + .wr_bytes_hp0(net_wr_bytes_hp0), + .wr_dv_ddr_hp0(net_wr_dv_ddr_hp0), + .wr_dv_ocm_hp0(net_wr_dv_ocm_hp0), + .rd_req_ddr_hp0(net_rd_req_ddr_hp0), + .rd_req_ocm_hp0(net_rd_req_ocm_hp0), + .rd_addr_hp0(net_rd_addr_hp0), + .rd_bytes_hp0(net_rd_bytes_hp0), + .rd_data_ddr_hp0(net_rd_data_ddr_hp0), + .rd_data_ocm_hp0(net_rd_data_ocm_hp0), + .rd_dv_ddr_hp0(net_rd_dv_ddr_hp0), + .rd_dv_ocm_hp0(net_rd_dv_ocm_hp0), + + .wr_ack_ddr_hp1(net_wr_ack_ddr_hp1), + .wr_ack_ocm_hp1(net_wr_ack_ocm_hp1), + .wr_data_hp1(net_wr_data_hp1), + .wr_addr_hp1(net_wr_addr_hp1), + .wr_bytes_hp1(net_wr_bytes_hp1), + .wr_dv_ddr_hp1(net_wr_dv_ddr_hp1), + .wr_dv_ocm_hp1(net_wr_dv_ocm_hp1), + .rd_req_ddr_hp1(net_rd_req_ddr_hp1), + .rd_req_ocm_hp1(net_rd_req_ocm_hp1), + .rd_addr_hp1(net_rd_addr_hp1), + .rd_bytes_hp1(net_rd_bytes_hp1), + .rd_data_ddr_hp1(net_rd_data_ddr_hp1), + .rd_data_ocm_hp1(net_rd_data_ocm_hp1), + .rd_dv_ocm_hp1(net_rd_dv_ocm_hp1), + .rd_dv_ddr_hp1(net_rd_dv_ddr_hp1), + + .wr_ack_ddr_hp2(net_wr_ack_ddr_hp2), + .wr_ack_ocm_hp2(net_wr_ack_ocm_hp2), + .wr_data_hp2(net_wr_data_hp2), + .wr_addr_hp2(net_wr_addr_hp2), + .wr_bytes_hp2(net_wr_bytes_hp2), + .wr_dv_ocm_hp2(net_wr_dv_ocm_hp2), + .wr_dv_ddr_hp2(net_wr_dv_ddr_hp2), + .rd_req_ddr_hp2(net_rd_req_ddr_hp2), + .rd_req_ocm_hp2(net_rd_req_ocm_hp2), + .rd_addr_hp2(net_rd_addr_hp2), + .rd_bytes_hp2(net_rd_bytes_hp2), + .rd_data_ddr_hp2(net_rd_data_ddr_hp2), + .rd_data_ocm_hp2(net_rd_data_ocm_hp2), + .rd_dv_ddr_hp2(net_rd_dv_ddr_hp2), + .rd_dv_ocm_hp2(net_rd_dv_ocm_hp2), + + .wr_ack_ocm_hp3(net_wr_ack_ocm_hp3), + .wr_ack_ddr_hp3(net_wr_ack_ddr_hp3), + .wr_data_hp3(net_wr_data_hp3), + .wr_addr_hp3(net_wr_addr_hp3), + .wr_bytes_hp3(net_wr_bytes_hp3), + .wr_dv_ddr_hp3(net_wr_dv_ddr_hp3), + .wr_dv_ocm_hp3(net_wr_dv_ocm_hp3), + .rd_req_ddr_hp3(net_rd_req_ddr_hp3), + .rd_req_ocm_hp3(net_rd_req_ocm_hp3), + .rd_addr_hp3(net_rd_addr_hp3), + .rd_bytes_hp3(net_rd_bytes_hp3), + .rd_data_ddr_hp3(net_rd_data_ddr_hp3), + .rd_data_ocm_hp3(net_rd_data_ocm_hp3), + .rd_dv_ddr_hp3(net_rd_dv_ddr_hp3), + .rd_dv_ocm_hp3(net_rd_dv_ocm_hp3), + + /* Goes to port 1 of DDR */ + .ddr_wr_ack_port1(ddr_wr_ack_port1), + .ddr_wr_dv_port1(ddr_wr_dv_port1), + .ddr_rd_req_port1(ddr_rd_req_port1), + .ddr_rd_dv_port1 (ddr_rd_dv_port1), + .ddr_wr_addr_port1(ddr_wr_addr_port1), + .ddr_wr_data_port1(ddr_wr_data_port1), + .ddr_wr_bytes_port1(ddr_wr_bytes_port1), + .ddr_rd_addr_port1(ddr_rd_addr_port1), + .ddr_rd_data_port1(ddr_rd_data_port1), + .ddr_rd_bytes_port1(ddr_rd_bytes_port1), + .ddr_wr_qos_port1(ddr_wr_qos_port1), + .ddr_rd_qos_port1(ddr_rd_qos_port1), + + /* Goes to port2 of DDR */ + .ddr_wr_ack_port2 (ddr_wr_ack_port2), + .ddr_wr_dv_port2 (ddr_wr_dv_port2), + .ddr_rd_req_port2 (ddr_rd_req_port2), + .ddr_rd_dv_port2 (ddr_rd_dv_port2), + .ddr_wr_addr_port2(ddr_wr_addr_port2), + .ddr_wr_data_port2(ddr_wr_data_port2), + .ddr_wr_bytes_port2(ddr_wr_bytes_port2), + .ddr_rd_addr_port2(ddr_rd_addr_port2), + .ddr_rd_data_port2(ddr_rd_data_port2), + .ddr_rd_bytes_port2(ddr_rd_bytes_port2), + .ddr_wr_qos_port2 (ddr_wr_qos_port2), + .ddr_rd_qos_port2 (ddr_rd_qos_port2), + + /* Goes to port3 of DDR */ + .ddr_wr_ack_port3 (ddr_wr_ack_port3), + .ddr_wr_dv_port3 (ddr_wr_dv_port3), + .ddr_rd_req_port3 (ddr_rd_req_port3), + .ddr_rd_dv_port3 (ddr_rd_dv_port3), + .ddr_wr_addr_port3(ddr_wr_addr_port3), + .ddr_wr_data_port3(ddr_wr_data_port3), + .ddr_wr_bytes_port3(ddr_wr_bytes_port3), + .ddr_rd_addr_port3(ddr_rd_addr_port3), + .ddr_rd_data_port3(ddr_rd_data_port3), + .ddr_rd_bytes_port3(ddr_rd_bytes_port3), + .ddr_wr_qos_port3 (ddr_wr_qos_port3), + .ddr_rd_qos_port3 (ddr_rd_qos_port3), + + /* Goes to port 0 of OCM */ + .ocm_wr_ack_port1 (ocm_wr_ack_port1), + .ocm_wr_dv_port1 (ocm_wr_dv_port1), + .ocm_rd_req_port1 (ocm_rd_req_port1), + .ocm_rd_dv_port1 (ocm_rd_dv_port1), + .ocm_wr_addr_port1(ocm_wr_addr_port1), + .ocm_wr_data_port1(ocm_wr_data_port1), + .ocm_wr_bytes_port1(ocm_wr_bytes_port1), + .ocm_rd_addr_port1(ocm_rd_addr_port1), + .ocm_rd_data_port1(ocm_rd_data_port1), + .ocm_rd_bytes_port1(ocm_rd_bytes_port1), + .ocm_wr_qos_port1(ocm_wr_qos_port1), + .ocm_rd_qos_port1(ocm_rd_qos_port1), + + /* Goes to port 0 of REG */ + .reg_rd_qos_port1 (reg_rd_qos_port1) , + .reg_rd_req_port1 (reg_rd_req_port1), + .reg_rd_dv_port1 (reg_rd_dv_port1), + .reg_rd_addr_port1(reg_rd_addr_port1), + .reg_rd_data_port1(reg_rd_data_port1), + .reg_rd_bytes_port1(reg_rd_bytes_port1) + ); + + processing_system7_bfm_v2_0_ddrc ddrc ( + .rstn(net_rstn), + .sw_clk(net_sw_clk), + + /* Goes to port 0 of DDR */ + .ddr_wr_ack_port0 (ddr_wr_ack_port0), + .ddr_wr_dv_port0 (ddr_wr_dv_port0), + .ddr_rd_req_port0 (ddr_rd_req_port0), + .ddr_rd_dv_port0 (ddr_rd_dv_port0), + + .ddr_wr_addr_port0(net_wr_addr_acp), + .ddr_wr_data_port0(net_wr_data_acp), + .ddr_wr_bytes_port0(net_wr_bytes_acp), + + .ddr_rd_addr_port0(net_rd_addr_acp), + .ddr_rd_bytes_port0(net_rd_bytes_acp), + + .ddr_rd_data_port0(ddr_rd_data_port0), + + .ddr_wr_qos_port0 (net_wr_qos_acp), + .ddr_rd_qos_port0 (net_rd_qos_acp), + + + /* Goes to port 1 of DDR */ + .ddr_wr_ack_port1 (ddr_wr_ack_port1), + .ddr_wr_dv_port1 (ddr_wr_dv_port1), + .ddr_rd_req_port1 (ddr_rd_req_port1), + .ddr_rd_dv_port1 (ddr_rd_dv_port1), + .ddr_wr_addr_port1(ddr_wr_addr_port1), + .ddr_wr_data_port1(ddr_wr_data_port1), + .ddr_wr_bytes_port1(ddr_wr_bytes_port1), + .ddr_rd_addr_port1(ddr_rd_addr_port1), + .ddr_rd_data_port1(ddr_rd_data_port1), + .ddr_rd_bytes_port1(ddr_rd_bytes_port1), + .ddr_wr_qos_port1 (ddr_wr_qos_port1), + .ddr_rd_qos_port1 (ddr_rd_qos_port1), + + /* Goes to port2 of DDR */ + .ddr_wr_ack_port2 (ddr_wr_ack_port2), + .ddr_wr_dv_port2 (ddr_wr_dv_port2), + .ddr_rd_req_port2 (ddr_rd_req_port2), + .ddr_rd_dv_port2 (ddr_rd_dv_port2), + .ddr_wr_addr_port2(ddr_wr_addr_port2), + .ddr_wr_data_port2(ddr_wr_data_port2), + .ddr_wr_bytes_port2(ddr_wr_bytes_port2), + .ddr_rd_addr_port2(ddr_rd_addr_port2), + .ddr_rd_data_port2(ddr_rd_data_port2), + .ddr_rd_bytes_port2(ddr_rd_bytes_port2), + .ddr_wr_qos_port2 (ddr_wr_qos_port2), + .ddr_rd_qos_port2 (ddr_rd_qos_port2), + + /* Goes to port3 of DDR */ + .ddr_wr_ack_port3 (ddr_wr_ack_port3), + .ddr_wr_dv_port3 (ddr_wr_dv_port3), + .ddr_rd_req_port3 (ddr_rd_req_port3), + .ddr_rd_dv_port3 (ddr_rd_dv_port3), + .ddr_wr_addr_port3(ddr_wr_addr_port3), + .ddr_wr_data_port3(ddr_wr_data_port3), + .ddr_wr_bytes_port3(ddr_wr_bytes_port3), + .ddr_rd_addr_port3(ddr_rd_addr_port3), + .ddr_rd_data_port3(ddr_rd_data_port3), + .ddr_rd_bytes_port3(ddr_rd_bytes_port3), + .ddr_wr_qos_port3 (ddr_wr_qos_port3), + .ddr_rd_qos_port3 (ddr_rd_qos_port3) + + ); + + processing_system7_bfm_v2_0_ocmc ocmc ( + .rstn(net_rstn), + .sw_clk(net_sw_clk), + + /* Goes to port 0 of OCM */ + .ocm_wr_ack_port0 (ocm_wr_ack_port0), + .ocm_wr_dv_port0 (ocm_wr_dv_port0), + .ocm_rd_req_port0 (ocm_rd_req_port0), + .ocm_rd_dv_port0 (ocm_rd_dv_port0), + + .ocm_wr_addr_port0(net_wr_addr_acp), + .ocm_wr_data_port0(net_wr_data_acp), + .ocm_wr_bytes_port0(net_wr_bytes_acp), + + .ocm_rd_addr_port0(net_rd_addr_acp), + .ocm_rd_bytes_port0(net_rd_bytes_acp), + + .ocm_rd_data_port0(ocm_rd_data_port0), + + .ocm_wr_qos_port0 (net_wr_qos_acp), + .ocm_rd_qos_port0 (net_rd_qos_acp), + + /* Goes to port 1 of OCM */ + .ocm_wr_ack_port1 (ocm_wr_ack_port1), + .ocm_wr_dv_port1 (ocm_wr_dv_port1), + .ocm_rd_req_port1 (ocm_rd_req_port1), + .ocm_rd_dv_port1 (ocm_rd_dv_port1), + .ocm_wr_addr_port1(ocm_wr_addr_port1), + .ocm_wr_data_port1(ocm_wr_data_port1), + .ocm_wr_bytes_port1(ocm_wr_bytes_port1), + .ocm_rd_addr_port1(ocm_rd_addr_port1), + .ocm_rd_data_port1(ocm_rd_data_port1), + .ocm_rd_bytes_port1(ocm_rd_bytes_port1), + .ocm_wr_qos_port1(ocm_wr_qos_port1), + .ocm_rd_qos_port1(ocm_rd_qos_port1) + + ); + + processing_system7_bfm_v2_0_regc regc ( + .rstn(net_rstn), + .sw_clk(net_sw_clk), + + /* Goes to port 0 of REG */ + .reg_rd_req_port0 (reg_rd_req_port0), + .reg_rd_dv_port0 (reg_rd_dv_port0), + .reg_rd_addr_port0(net_rd_addr_acp), + .reg_rd_bytes_port0(net_rd_bytes_acp), + .reg_rd_data_port0(reg_rd_data_port0), + .reg_rd_qos_port0 (net_rd_qos_acp), + + /* Goes to port 1 of REG */ + .reg_rd_req_port1 (reg_rd_req_port1), + .reg_rd_dv_port1 (reg_rd_dv_port1), + .reg_rd_addr_port1(reg_rd_addr_port1), + .reg_rd_data_port1(reg_rd_data_port1), + .reg_rd_bytes_port1(reg_rd_bytes_port1), + .reg_rd_qos_port1(reg_rd_qos_port1) + + ); + + /* include axi_gp port instantiations */ + `include "processing_system7_bfm_v2_0_axi_gp.v" + + /* include axi_hp port instantiations */ + `include "processing_system7_bfm_v2_0_axi_hp.v" + + /* include axi_acp port instantiations */ + `include "processing_system7_bfm_v2_0_axi_acp.v" + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_init.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_init.v new file mode 100644 index 0000000..24aa8a7 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_init.v @@ -0,0 +1,2924 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_reg_init.v + * + * Date : 2012-11 + * + * Description : Initialize register default values. + * + *****************************************************************************/ + +// Register default value info for chip pele_ps +// This code was auto-generated by xregdb.py ver. 0.68, Thu Jul 12 10:32:25 2012 +// 54 modules, 2532 registers. + + +// ************************************************************ +// Module afi0 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( afi0__AFI_RDCHAN_CTRL, val_afi0__AFI_RDCHAN_CTRL); +set_reset_data( afi0__AFI_RDCHAN_ISSUINGCAP, val_afi0__AFI_RDCHAN_ISSUINGCAP); +set_reset_data( afi0__AFI_RDQOS, val_afi0__AFI_RDQOS); +set_reset_data( afi0__AFI_RDDATAFIFO_LEVEL, val_afi0__AFI_RDDATAFIFO_LEVEL); +set_reset_data( afi0__AFI_RDDEBUG, val_afi0__AFI_RDDEBUG); +set_reset_data( afi0__AFI_WRCHAN_CTRL, val_afi0__AFI_WRCHAN_CTRL); +set_reset_data( afi0__AFI_WRCHAN_ISSUINGCAP, val_afi0__AFI_WRCHAN_ISSUINGCAP); +set_reset_data( afi0__AFI_WRQOS, val_afi0__AFI_WRQOS); +set_reset_data( afi0__AFI_WRDATAFIFO_LEVEL, val_afi0__AFI_WRDATAFIFO_LEVEL); +set_reset_data( afi0__AFI_WRDEBUG, val_afi0__AFI_WRDEBUG); + +// ************************************************************ +// Module afi1 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( afi1__AFI_RDCHAN_CTRL, val_afi1__AFI_RDCHAN_CTRL); +set_reset_data( afi1__AFI_RDCHAN_ISSUINGCAP, val_afi1__AFI_RDCHAN_ISSUINGCAP); +set_reset_data( afi1__AFI_RDQOS, val_afi1__AFI_RDQOS); +set_reset_data( afi1__AFI_RDDATAFIFO_LEVEL, val_afi1__AFI_RDDATAFIFO_LEVEL); +set_reset_data( afi1__AFI_RDDEBUG, val_afi1__AFI_RDDEBUG); +set_reset_data( afi1__AFI_WRCHAN_CTRL, val_afi1__AFI_WRCHAN_CTRL); +set_reset_data( afi1__AFI_WRCHAN_ISSUINGCAP, val_afi1__AFI_WRCHAN_ISSUINGCAP); +set_reset_data( afi1__AFI_WRQOS, val_afi1__AFI_WRQOS); +set_reset_data( afi1__AFI_WRDATAFIFO_LEVEL, val_afi1__AFI_WRDATAFIFO_LEVEL); +set_reset_data( afi1__AFI_WRDEBUG, val_afi1__AFI_WRDEBUG); + +// ************************************************************ +// Module afi2 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( afi2__AFI_RDCHAN_CTRL, val_afi2__AFI_RDCHAN_CTRL); +set_reset_data( afi2__AFI_RDCHAN_ISSUINGCAP, val_afi2__AFI_RDCHAN_ISSUINGCAP); +set_reset_data( afi2__AFI_RDQOS, val_afi2__AFI_RDQOS); +set_reset_data( afi2__AFI_RDDATAFIFO_LEVEL, val_afi2__AFI_RDDATAFIFO_LEVEL); +set_reset_data( afi2__AFI_RDDEBUG, val_afi2__AFI_RDDEBUG); +set_reset_data( afi2__AFI_WRCHAN_CTRL, val_afi2__AFI_WRCHAN_CTRL); +set_reset_data( afi2__AFI_WRCHAN_ISSUINGCAP, val_afi2__AFI_WRCHAN_ISSUINGCAP); +set_reset_data( afi2__AFI_WRQOS, val_afi2__AFI_WRQOS); +set_reset_data( afi2__AFI_WRDATAFIFO_LEVEL, val_afi2__AFI_WRDATAFIFO_LEVEL); +set_reset_data( afi2__AFI_WRDEBUG, val_afi2__AFI_WRDEBUG); + +// ************************************************************ +// Module afi3 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( afi3__AFI_RDCHAN_CTRL, val_afi3__AFI_RDCHAN_CTRL); +set_reset_data( afi3__AFI_RDCHAN_ISSUINGCAP, val_afi3__AFI_RDCHAN_ISSUINGCAP); +set_reset_data( afi3__AFI_RDQOS, val_afi3__AFI_RDQOS); +set_reset_data( afi3__AFI_RDDATAFIFO_LEVEL, val_afi3__AFI_RDDATAFIFO_LEVEL); +set_reset_data( afi3__AFI_RDDEBUG, val_afi3__AFI_RDDEBUG); +set_reset_data( afi3__AFI_WRCHAN_CTRL, val_afi3__AFI_WRCHAN_CTRL); +set_reset_data( afi3__AFI_WRCHAN_ISSUINGCAP, val_afi3__AFI_WRCHAN_ISSUINGCAP); +set_reset_data( afi3__AFI_WRQOS, val_afi3__AFI_WRQOS); +set_reset_data( afi3__AFI_WRDATAFIFO_LEVEL, val_afi3__AFI_WRDATAFIFO_LEVEL); +set_reset_data( afi3__AFI_WRDEBUG, val_afi3__AFI_WRDEBUG); + +// ************************************************************ +// Module can0 can +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( can0__SRR, val_can0__SRR); +set_reset_data( can0__MSR, val_can0__MSR); +set_reset_data( can0__BRPR, val_can0__BRPR); +set_reset_data( can0__BTR, val_can0__BTR); +set_reset_data( can0__ECR, val_can0__ECR); +set_reset_data( can0__ESR, val_can0__ESR); +set_reset_data( can0__SR, val_can0__SR); +set_reset_data( can0__ISR, val_can0__ISR); +set_reset_data( can0__IER, val_can0__IER); +set_reset_data( can0__ICR, val_can0__ICR); +set_reset_data( can0__TCR, val_can0__TCR); +set_reset_data( can0__WIR, val_can0__WIR); +set_reset_data( can0__TXFIFO_ID, val_can0__TXFIFO_ID); +set_reset_data( can0__TXFIFO_DLC, val_can0__TXFIFO_DLC); +set_reset_data( can0__TXFIFO_DATA1, val_can0__TXFIFO_DATA1); +set_reset_data( can0__TXFIFO_DATA2, val_can0__TXFIFO_DATA2); +set_reset_data( can0__TXHPB_ID, val_can0__TXHPB_ID); +set_reset_data( can0__TXHPB_DLC, val_can0__TXHPB_DLC); +set_reset_data( can0__TXHPB_DATA1, val_can0__TXHPB_DATA1); +set_reset_data( can0__TXHPB_DATA2, val_can0__TXHPB_DATA2); +set_reset_data( can0__RXFIFO_ID, val_can0__RXFIFO_ID); +set_reset_data( can0__RXFIFO_DLC, val_can0__RXFIFO_DLC); +set_reset_data( can0__RXFIFO_DATA1, val_can0__RXFIFO_DATA1); +set_reset_data( can0__RXFIFO_DATA2, val_can0__RXFIFO_DATA2); +set_reset_data( can0__AFR, val_can0__AFR); +set_reset_data( can0__AFMR1, val_can0__AFMR1); +set_reset_data( can0__AFIR1, val_can0__AFIR1); +set_reset_data( can0__AFMR2, val_can0__AFMR2); +set_reset_data( can0__AFIR2, val_can0__AFIR2); +set_reset_data( can0__AFMR3, val_can0__AFMR3); +set_reset_data( can0__AFIR3, val_can0__AFIR3); +set_reset_data( can0__AFMR4, val_can0__AFMR4); +set_reset_data( can0__AFIR4, val_can0__AFIR4); + +// ************************************************************ +// Module can1 can +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( can1__SRR, val_can1__SRR); +set_reset_data( can1__MSR, val_can1__MSR); +set_reset_data( can1__BRPR, val_can1__BRPR); +set_reset_data( can1__BTR, val_can1__BTR); +set_reset_data( can1__ECR, val_can1__ECR); +set_reset_data( can1__ESR, val_can1__ESR); +set_reset_data( can1__SR, val_can1__SR); +set_reset_data( can1__ISR, val_can1__ISR); +set_reset_data( can1__IER, val_can1__IER); +set_reset_data( can1__ICR, val_can1__ICR); +set_reset_data( can1__TCR, val_can1__TCR); +set_reset_data( can1__WIR, val_can1__WIR); +set_reset_data( can1__TXFIFO_ID, val_can1__TXFIFO_ID); +set_reset_data( can1__TXFIFO_DLC, val_can1__TXFIFO_DLC); +set_reset_data( can1__TXFIFO_DATA1, val_can1__TXFIFO_DATA1); +set_reset_data( can1__TXFIFO_DATA2, val_can1__TXFIFO_DATA2); +set_reset_data( can1__TXHPB_ID, val_can1__TXHPB_ID); +set_reset_data( can1__TXHPB_DLC, val_can1__TXHPB_DLC); +set_reset_data( can1__TXHPB_DATA1, val_can1__TXHPB_DATA1); +set_reset_data( can1__TXHPB_DATA2, val_can1__TXHPB_DATA2); +set_reset_data( can1__RXFIFO_ID, val_can1__RXFIFO_ID); +set_reset_data( can1__RXFIFO_DLC, val_can1__RXFIFO_DLC); +set_reset_data( can1__RXFIFO_DATA1, val_can1__RXFIFO_DATA1); +set_reset_data( can1__RXFIFO_DATA2, val_can1__RXFIFO_DATA2); +set_reset_data( can1__AFR, val_can1__AFR); +set_reset_data( can1__AFMR1, val_can1__AFMR1); +set_reset_data( can1__AFIR1, val_can1__AFIR1); +set_reset_data( can1__AFMR2, val_can1__AFMR2); +set_reset_data( can1__AFIR2, val_can1__AFIR2); +set_reset_data( can1__AFMR3, val_can1__AFMR3); +set_reset_data( can1__AFIR3, val_can1__AFIR3); +set_reset_data( can1__AFMR4, val_can1__AFMR4); +set_reset_data( can1__AFIR4, val_can1__AFIR4); + +// ************************************************************ +// Module ddrc ddrc +// doc version: 1.25 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( ddrc__ddrc_ctrl, val_ddrc__ddrc_ctrl); +set_reset_data( ddrc__Two_rank_cfg, val_ddrc__Two_rank_cfg); +set_reset_data( ddrc__HPR_reg, val_ddrc__HPR_reg); +set_reset_data( ddrc__LPR_reg, val_ddrc__LPR_reg); +set_reset_data( ddrc__WR_reg, val_ddrc__WR_reg); +set_reset_data( ddrc__DRAM_param_reg0, val_ddrc__DRAM_param_reg0); +set_reset_data( ddrc__DRAM_param_reg1, val_ddrc__DRAM_param_reg1); +set_reset_data( ddrc__DRAM_param_reg2, val_ddrc__DRAM_param_reg2); +set_reset_data( ddrc__DRAM_param_reg3, val_ddrc__DRAM_param_reg3); +set_reset_data( ddrc__DRAM_param_reg4, val_ddrc__DRAM_param_reg4); +set_reset_data( ddrc__DRAM_init_param, val_ddrc__DRAM_init_param); +set_reset_data( ddrc__DRAM_EMR_reg, val_ddrc__DRAM_EMR_reg); +set_reset_data( ddrc__DRAM_EMR_MR_reg, val_ddrc__DRAM_EMR_MR_reg); +set_reset_data( ddrc__DRAM_burst8_rdwr, val_ddrc__DRAM_burst8_rdwr); +set_reset_data( ddrc__DRAM_disable_DQ, val_ddrc__DRAM_disable_DQ); +set_reset_data( ddrc__DRAM_addr_map_bank, val_ddrc__DRAM_addr_map_bank); +set_reset_data( ddrc__DRAM_addr_map_col, val_ddrc__DRAM_addr_map_col); +set_reset_data( ddrc__DRAM_addr_map_row, val_ddrc__DRAM_addr_map_row); +set_reset_data( ddrc__DRAM_ODT_reg, val_ddrc__DRAM_ODT_reg); +set_reset_data( ddrc__phy_dbg_reg, val_ddrc__phy_dbg_reg); +set_reset_data( ddrc__phy_cmd_timeout_rddata_cpt, val_ddrc__phy_cmd_timeout_rddata_cpt); +set_reset_data( ddrc__mode_sts_reg, val_ddrc__mode_sts_reg); +set_reset_data( ddrc__DLL_calib, val_ddrc__DLL_calib); +set_reset_data( ddrc__ODT_delay_hold, val_ddrc__ODT_delay_hold); +set_reset_data( ddrc__ctrl_reg1, val_ddrc__ctrl_reg1); +set_reset_data( ddrc__ctrl_reg2, val_ddrc__ctrl_reg2); +set_reset_data( ddrc__ctrl_reg3, val_ddrc__ctrl_reg3); +set_reset_data( ddrc__ctrl_reg4, val_ddrc__ctrl_reg4); +set_reset_data( ddrc__ctrl_reg5, val_ddrc__ctrl_reg5); +set_reset_data( ddrc__ctrl_reg6, val_ddrc__ctrl_reg6); +set_reset_data( ddrc__CHE_REFRESH_TIMER01, val_ddrc__CHE_REFRESH_TIMER01); +set_reset_data( ddrc__CHE_T_ZQ, val_ddrc__CHE_T_ZQ); +set_reset_data( ddrc__CHE_T_ZQ_Short_Interval_Reg, val_ddrc__CHE_T_ZQ_Short_Interval_Reg); +set_reset_data( ddrc__deep_pwrdwn_reg, val_ddrc__deep_pwrdwn_reg); +set_reset_data( ddrc__reg_2c, val_ddrc__reg_2c); +set_reset_data( ddrc__reg_2d, val_ddrc__reg_2d); +set_reset_data( ddrc__dfi_timing, val_ddrc__dfi_timing); +set_reset_data( ddrc__refresh_timer_2, val_ddrc__refresh_timer_2); +set_reset_data( ddrc__nc_timing, val_ddrc__nc_timing); +set_reset_data( ddrc__CHE_ECC_CONTROL_REG_OFFSET, val_ddrc__CHE_ECC_CONTROL_REG_OFFSET); +set_reset_data( ddrc__CHE_CORR_ECC_LOG_REG_OFFSET, val_ddrc__CHE_CORR_ECC_LOG_REG_OFFSET); +set_reset_data( ddrc__CHE_CORR_ECC_ADDR_REG_OFFSET, val_ddrc__CHE_CORR_ECC_ADDR_REG_OFFSET); +set_reset_data( ddrc__CHE_CORR_ECC_DATA_31_0_REG_OFFSET, val_ddrc__CHE_CORR_ECC_DATA_31_0_REG_OFFSET); +set_reset_data( ddrc__CHE_CORR_ECC_DATA_63_32_REG_OFFSET, val_ddrc__CHE_CORR_ECC_DATA_63_32_REG_OFFSET); +set_reset_data( ddrc__CHE_CORR_ECC_DATA_71_64_REG_OFFSET, val_ddrc__CHE_CORR_ECC_DATA_71_64_REG_OFFSET); +set_reset_data( ddrc__CHE_UNCORR_ECC_LOG_REG_OFFSET, val_ddrc__CHE_UNCORR_ECC_LOG_REG_OFFSET); +set_reset_data( ddrc__CHE_UNCORR_ECC_ADDR_REG_OFFSET, val_ddrc__CHE_UNCORR_ECC_ADDR_REG_OFFSET); +set_reset_data( ddrc__CHE_UNCORR_ECC_DATA_31_0_REG_OFFSET, val_ddrc__CHE_UNCORR_ECC_DATA_31_0_REG_OFFSET); +set_reset_data( ddrc__CHE_UNCORR_ECC_DATA_63_32_REG_OFFSET, val_ddrc__CHE_UNCORR_ECC_DATA_63_32_REG_OFFSET); +set_reset_data( ddrc__CHE_UNCORR_ECC_DATA_71_64_REG_OFFSET, val_ddrc__CHE_UNCORR_ECC_DATA_71_64_REG_OFFSET); +set_reset_data( ddrc__CHE_ECC_STATS_REG_OFFSET, val_ddrc__CHE_ECC_STATS_REG_OFFSET); +set_reset_data( ddrc__ECC_scrub, val_ddrc__ECC_scrub); +set_reset_data( ddrc__CHE_ECC_CORR_BIT_MASK_31_0_REG_OFFSET, val_ddrc__CHE_ECC_CORR_BIT_MASK_31_0_REG_OFFSET); +set_reset_data( ddrc__CHE_ECC_CORR_BIT_MASK_63_32_REG_OFFSET, val_ddrc__CHE_ECC_CORR_BIT_MASK_63_32_REG_OFFSET); +set_reset_data( ddrc__phy_rcvr_enable, val_ddrc__phy_rcvr_enable); +set_reset_data( ddrc__PHY_Config0, val_ddrc__PHY_Config0); +set_reset_data( ddrc__PHY_Config1, val_ddrc__PHY_Config1); +set_reset_data( ddrc__PHY_Config2, val_ddrc__PHY_Config2); +set_reset_data( ddrc__PHY_Config3, val_ddrc__PHY_Config3); +set_reset_data( ddrc__phy_init_ratio0, val_ddrc__phy_init_ratio0); +set_reset_data( ddrc__phy_init_ratio1, val_ddrc__phy_init_ratio1); +set_reset_data( ddrc__phy_init_ratio2, val_ddrc__phy_init_ratio2); +set_reset_data( ddrc__phy_init_ratio3, val_ddrc__phy_init_ratio3); +set_reset_data( ddrc__phy_rd_dqs_cfg0, val_ddrc__phy_rd_dqs_cfg0); +set_reset_data( ddrc__phy_rd_dqs_cfg1, val_ddrc__phy_rd_dqs_cfg1); +set_reset_data( ddrc__phy_rd_dqs_cfg2, val_ddrc__phy_rd_dqs_cfg2); +set_reset_data( ddrc__phy_rd_dqs_cfg3, val_ddrc__phy_rd_dqs_cfg3); +set_reset_data( ddrc__phy_wr_dqs_cfg0, val_ddrc__phy_wr_dqs_cfg0); +set_reset_data( ddrc__phy_wr_dqs_cfg1, val_ddrc__phy_wr_dqs_cfg1); +set_reset_data( ddrc__phy_wr_dqs_cfg2, val_ddrc__phy_wr_dqs_cfg2); +set_reset_data( ddrc__phy_wr_dqs_cfg3, val_ddrc__phy_wr_dqs_cfg3); +set_reset_data( ddrc__phy_we_cfg0, val_ddrc__phy_we_cfg0); +set_reset_data( ddrc__phy_we_cfg1, val_ddrc__phy_we_cfg1); +set_reset_data( ddrc__phy_we_cfg2, val_ddrc__phy_we_cfg2); +set_reset_data( ddrc__phy_we_cfg3, val_ddrc__phy_we_cfg3); +set_reset_data( ddrc__wr_data_slv0, val_ddrc__wr_data_slv0); +set_reset_data( ddrc__wr_data_slv1, val_ddrc__wr_data_slv1); +set_reset_data( ddrc__wr_data_slv2, val_ddrc__wr_data_slv2); +set_reset_data( ddrc__wr_data_slv3, val_ddrc__wr_data_slv3); +set_reset_data( ddrc__reg_64, val_ddrc__reg_64); +set_reset_data( ddrc__reg_65, val_ddrc__reg_65); +set_reset_data( ddrc__reg69_6a0, val_ddrc__reg69_6a0); +set_reset_data( ddrc__reg69_6a1, val_ddrc__reg69_6a1); +set_reset_data( ddrc__reg6c_6d2, val_ddrc__reg6c_6d2); +set_reset_data( ddrc__reg6c_6d3, val_ddrc__reg6c_6d3); +set_reset_data( ddrc__reg6e_710, val_ddrc__reg6e_710); +set_reset_data( ddrc__reg6e_711, val_ddrc__reg6e_711); +set_reset_data( ddrc__reg6e_712, val_ddrc__reg6e_712); +set_reset_data( ddrc__reg6e_713, val_ddrc__reg6e_713); +set_reset_data( ddrc__phy_dll_sts0, val_ddrc__phy_dll_sts0); +set_reset_data( ddrc__phy_dll_sts1, val_ddrc__phy_dll_sts1); +set_reset_data( ddrc__phy_dll_sts2, val_ddrc__phy_dll_sts2); +set_reset_data( ddrc__phy_dll_sts3, val_ddrc__phy_dll_sts3); +set_reset_data( ddrc__dll_lock_sts, val_ddrc__dll_lock_sts); +set_reset_data( ddrc__phy_ctrl_sts, val_ddrc__phy_ctrl_sts); +set_reset_data( ddrc__phy_ctrl_sts_reg2, val_ddrc__phy_ctrl_sts_reg2); +set_reset_data( ddrc__axi_id, val_ddrc__axi_id); +set_reset_data( ddrc__page_mask, val_ddrc__page_mask); +set_reset_data( ddrc__axi_priority_wr_port0, val_ddrc__axi_priority_wr_port0); +set_reset_data( ddrc__axi_priority_wr_port1, val_ddrc__axi_priority_wr_port1); +set_reset_data( ddrc__axi_priority_wr_port2, val_ddrc__axi_priority_wr_port2); +set_reset_data( ddrc__axi_priority_wr_port3, val_ddrc__axi_priority_wr_port3); +set_reset_data( ddrc__axi_priority_rd_port0, val_ddrc__axi_priority_rd_port0); +set_reset_data( ddrc__axi_priority_rd_port1, val_ddrc__axi_priority_rd_port1); +set_reset_data( ddrc__axi_priority_rd_port2, val_ddrc__axi_priority_rd_port2); +set_reset_data( ddrc__axi_priority_rd_port3, val_ddrc__axi_priority_rd_port3); +set_reset_data( ddrc__AHB_priority_cfg0, val_ddrc__AHB_priority_cfg0); +set_reset_data( ddrc__AHB_priority_cfg1, val_ddrc__AHB_priority_cfg1); +set_reset_data( ddrc__AHB_priority_cfg2, val_ddrc__AHB_priority_cfg2); +set_reset_data( ddrc__AHB_priority_cfg3, val_ddrc__AHB_priority_cfg3); +set_reset_data( ddrc__perf_mon0, val_ddrc__perf_mon0); +set_reset_data( ddrc__perf_mon1, val_ddrc__perf_mon1); +set_reset_data( ddrc__perf_mon2, val_ddrc__perf_mon2); +set_reset_data( ddrc__perf_mon3, val_ddrc__perf_mon3); +set_reset_data( ddrc__perf_mon20, val_ddrc__perf_mon20); +set_reset_data( ddrc__perf_mon21, val_ddrc__perf_mon21); +set_reset_data( ddrc__perf_mon22, val_ddrc__perf_mon22); +set_reset_data( ddrc__perf_mon23, val_ddrc__perf_mon23); +set_reset_data( ddrc__perf_mon30, val_ddrc__perf_mon30); +set_reset_data( ddrc__perf_mon31, val_ddrc__perf_mon31); +set_reset_data( ddrc__perf_mon32, val_ddrc__perf_mon32); +set_reset_data( ddrc__perf_mon33, val_ddrc__perf_mon33); +set_reset_data( ddrc__trusted_mem_cfg, val_ddrc__trusted_mem_cfg); +set_reset_data( ddrc__excl_access_cfg0, val_ddrc__excl_access_cfg0); +set_reset_data( ddrc__excl_access_cfg1, val_ddrc__excl_access_cfg1); +set_reset_data( ddrc__excl_access_cfg2, val_ddrc__excl_access_cfg2); +set_reset_data( ddrc__excl_access_cfg3, val_ddrc__excl_access_cfg3); +set_reset_data( ddrc__mode_reg_read, val_ddrc__mode_reg_read); +set_reset_data( ddrc__lpddr_ctrl0, val_ddrc__lpddr_ctrl0); +set_reset_data( ddrc__lpddr_ctrl1, val_ddrc__lpddr_ctrl1); +set_reset_data( ddrc__lpddr_ctrl2, val_ddrc__lpddr_ctrl2); +set_reset_data( ddrc__lpddr_ctrl3, val_ddrc__lpddr_ctrl3); +set_reset_data( ddrc__phy_wr_lvl_fsm, val_ddrc__phy_wr_lvl_fsm); +set_reset_data( ddrc__phy_rd_lvl_fsm, val_ddrc__phy_rd_lvl_fsm); +set_reset_data( ddrc__phy_gate_lvl_fsm, val_ddrc__phy_gate_lvl_fsm); + +// ************************************************************ +// Module debug_axim axim +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_axim__GLOBAL_CTRL, val_debug_axim__GLOBAL_CTRL); +set_reset_data( debug_axim__GLOBAL_STATUS, val_debug_axim__GLOBAL_STATUS); +set_reset_data( debug_axim__FILTER_CTRL, val_debug_axim__FILTER_CTRL); +set_reset_data( debug_axim__TRIGGER_CTRL, val_debug_axim__TRIGGER_CTRL); +set_reset_data( debug_axim__TRIGGER_STATUS, val_debug_axim__TRIGGER_STATUS); +set_reset_data( debug_axim__PACKET_CTRL, val_debug_axim__PACKET_CTRL); +set_reset_data( debug_axim__TOUT_CTRL, val_debug_axim__TOUT_CTRL); +set_reset_data( debug_axim__TOUT_THRESH, val_debug_axim__TOUT_THRESH); +set_reset_data( debug_axim__FIFO_CURRENT, val_debug_axim__FIFO_CURRENT); +set_reset_data( debug_axim__FIFO_HYSTER, val_debug_axim__FIFO_HYSTER); +set_reset_data( debug_axim__SYNC_CURRENT, val_debug_axim__SYNC_CURRENT); +set_reset_data( debug_axim__SYNC_RELOAD, val_debug_axim__SYNC_RELOAD); +set_reset_data( debug_axim__TSTMP_CURRENT, val_debug_axim__TSTMP_CURRENT); +set_reset_data( debug_axim__ADDR0_MASK, val_debug_axim__ADDR0_MASK); +set_reset_data( debug_axim__ADDR0_LOWER, val_debug_axim__ADDR0_LOWER); +set_reset_data( debug_axim__ADDR0_UPPER, val_debug_axim__ADDR0_UPPER); +set_reset_data( debug_axim__ADDR0_MISC, val_debug_axim__ADDR0_MISC); +set_reset_data( debug_axim__ADDR1_MASK, val_debug_axim__ADDR1_MASK); +set_reset_data( debug_axim__ADDR1_LOWER, val_debug_axim__ADDR1_LOWER); +set_reset_data( debug_axim__ADDR1_UPPER, val_debug_axim__ADDR1_UPPER); +set_reset_data( debug_axim__ADDR1_MISC, val_debug_axim__ADDR1_MISC); +set_reset_data( debug_axim__ADDR2_MASK, val_debug_axim__ADDR2_MASK); +set_reset_data( debug_axim__ADDR2_LOWER, val_debug_axim__ADDR2_LOWER); +set_reset_data( debug_axim__ADDR2_UPPER, val_debug_axim__ADDR2_UPPER); +set_reset_data( debug_axim__ADDR2_MISC, val_debug_axim__ADDR2_MISC); +set_reset_data( debug_axim__ADDR3_MASK, val_debug_axim__ADDR3_MASK); +set_reset_data( debug_axim__ADDR3_LOWER, val_debug_axim__ADDR3_LOWER); +set_reset_data( debug_axim__ADDR3_UPPER, val_debug_axim__ADDR3_UPPER); +set_reset_data( debug_axim__ADDR3_MISC, val_debug_axim__ADDR3_MISC); +set_reset_data( debug_axim__ID0_MASK, val_debug_axim__ID0_MASK); +set_reset_data( debug_axim__ID0_LOWER, val_debug_axim__ID0_LOWER); +set_reset_data( debug_axim__ID0_UPPER, val_debug_axim__ID0_UPPER); +set_reset_data( debug_axim__ID0_MISC, val_debug_axim__ID0_MISC); +set_reset_data( debug_axim__ID1_MASK, val_debug_axim__ID1_MASK); +set_reset_data( debug_axim__ID1_LOWER, val_debug_axim__ID1_LOWER); +set_reset_data( debug_axim__ID1_UPPER, val_debug_axim__ID1_UPPER); +set_reset_data( debug_axim__ID1_MISC, val_debug_axim__ID1_MISC); +set_reset_data( debug_axim__ID2_MASK, val_debug_axim__ID2_MASK); +set_reset_data( debug_axim__ID2_LOWER, val_debug_axim__ID2_LOWER); +set_reset_data( debug_axim__ID2_UPPER, val_debug_axim__ID2_UPPER); +set_reset_data( debug_axim__ID2_MISC, val_debug_axim__ID2_MISC); +set_reset_data( debug_axim__ID3_MASK, val_debug_axim__ID3_MASK); +set_reset_data( debug_axim__ID3_LOWER, val_debug_axim__ID3_LOWER); +set_reset_data( debug_axim__ID3_UPPER, val_debug_axim__ID3_UPPER); +set_reset_data( debug_axim__ID3_MISC, val_debug_axim__ID3_MISC); +set_reset_data( debug_axim__AXI_SEL, val_debug_axim__AXI_SEL); +set_reset_data( debug_axim__IT_TRIGOUT, val_debug_axim__IT_TRIGOUT); +set_reset_data( debug_axim__IT_TRIGOUTACK, val_debug_axim__IT_TRIGOUTACK); +set_reset_data( debug_axim__IT_TRIGIN, val_debug_axim__IT_TRIGIN); +set_reset_data( debug_axim__IT_TRIGINACK, val_debug_axim__IT_TRIGINACK); +set_reset_data( debug_axim__IT_ATBDATA, val_debug_axim__IT_ATBDATA); +set_reset_data( debug_axim__IT_ATBSTATUS, val_debug_axim__IT_ATBSTATUS); +set_reset_data( debug_axim__IT_ATBCTRL1, val_debug_axim__IT_ATBCTRL1); +set_reset_data( debug_axim__IT_ATBCTRL0, val_debug_axim__IT_ATBCTRL0); +set_reset_data( debug_axim__IT_CTRL, val_debug_axim__IT_CTRL); +set_reset_data( debug_axim__CLAIM_SET, val_debug_axim__CLAIM_SET); +set_reset_data( debug_axim__CLAIM_CLEAR, val_debug_axim__CLAIM_CLEAR); +set_reset_data( debug_axim__LOCK_ACCESS, val_debug_axim__LOCK_ACCESS); +set_reset_data( debug_axim__LOCK_STATUS, val_debug_axim__LOCK_STATUS); +set_reset_data( debug_axim__AUTH_STATUS, val_debug_axim__AUTH_STATUS); +set_reset_data( debug_axim__DEV_ID, val_debug_axim__DEV_ID); +set_reset_data( debug_axim__DEV_TYPE, val_debug_axim__DEV_TYPE); +set_reset_data( debug_axim__PERIPHID4, val_debug_axim__PERIPHID4); +set_reset_data( debug_axim__PERIPHID5, val_debug_axim__PERIPHID5); +set_reset_data( debug_axim__PERIPHID6, val_debug_axim__PERIPHID6); +set_reset_data( debug_axim__PERIPHID7, val_debug_axim__PERIPHID7); +set_reset_data( debug_axim__PERIPHID0, val_debug_axim__PERIPHID0); +set_reset_data( debug_axim__PERIPHID1, val_debug_axim__PERIPHID1); +set_reset_data( debug_axim__PERIPHID2, val_debug_axim__PERIPHID2); +set_reset_data( debug_axim__PERIPHID3, val_debug_axim__PERIPHID3); +set_reset_data( debug_axim__COMPID0, val_debug_axim__COMPID0); +set_reset_data( debug_axim__COMPID1, val_debug_axim__COMPID1); +set_reset_data( debug_axim__COMPID2, val_debug_axim__COMPID2); +set_reset_data( debug_axim__COMPID3, val_debug_axim__COMPID3); + +// ************************************************************ +// Module debug_cpu_cti0 cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cpu_cti0__CTICONTROL, val_debug_cpu_cti0__CTICONTROL); +set_reset_data( debug_cpu_cti0__CTIINTACK, val_debug_cpu_cti0__CTIINTACK); +set_reset_data( debug_cpu_cti0__CTIAPPSET, val_debug_cpu_cti0__CTIAPPSET); +set_reset_data( debug_cpu_cti0__CTIAPPCLEAR, val_debug_cpu_cti0__CTIAPPCLEAR); +set_reset_data( debug_cpu_cti0__CTIAPPPULSE, val_debug_cpu_cti0__CTIAPPPULSE); +set_reset_data( debug_cpu_cti0__CTIINEN0, val_debug_cpu_cti0__CTIINEN0); +set_reset_data( debug_cpu_cti0__CTIINEN1, val_debug_cpu_cti0__CTIINEN1); +set_reset_data( debug_cpu_cti0__CTIINEN2, val_debug_cpu_cti0__CTIINEN2); +set_reset_data( debug_cpu_cti0__CTIINEN3, val_debug_cpu_cti0__CTIINEN3); +set_reset_data( debug_cpu_cti0__CTIINEN4, val_debug_cpu_cti0__CTIINEN4); +set_reset_data( debug_cpu_cti0__CTIINEN5, val_debug_cpu_cti0__CTIINEN5); +set_reset_data( debug_cpu_cti0__CTIINEN6, val_debug_cpu_cti0__CTIINEN6); +set_reset_data( debug_cpu_cti0__CTIINEN7, val_debug_cpu_cti0__CTIINEN7); +set_reset_data( debug_cpu_cti0__CTIOUTEN0, val_debug_cpu_cti0__CTIOUTEN0); +set_reset_data( debug_cpu_cti0__CTIOUTEN1, val_debug_cpu_cti0__CTIOUTEN1); +set_reset_data( debug_cpu_cti0__CTIOUTEN2, val_debug_cpu_cti0__CTIOUTEN2); +set_reset_data( debug_cpu_cti0__CTIOUTEN3, val_debug_cpu_cti0__CTIOUTEN3); +set_reset_data( debug_cpu_cti0__CTIOUTEN4, val_debug_cpu_cti0__CTIOUTEN4); +set_reset_data( debug_cpu_cti0__CTIOUTEN5, val_debug_cpu_cti0__CTIOUTEN5); +set_reset_data( debug_cpu_cti0__CTIOUTEN6, val_debug_cpu_cti0__CTIOUTEN6); +set_reset_data( debug_cpu_cti0__CTIOUTEN7, val_debug_cpu_cti0__CTIOUTEN7); +set_reset_data( debug_cpu_cti0__CTITRIGINSTATUS, val_debug_cpu_cti0__CTITRIGINSTATUS); +set_reset_data( debug_cpu_cti0__CTITRIGOUTSTATUS, val_debug_cpu_cti0__CTITRIGOUTSTATUS); +set_reset_data( debug_cpu_cti0__CTICHINSTATUS, val_debug_cpu_cti0__CTICHINSTATUS); +set_reset_data( debug_cpu_cti0__CTICHOUTSTATUS, val_debug_cpu_cti0__CTICHOUTSTATUS); +set_reset_data( debug_cpu_cti0__CTIGATE, val_debug_cpu_cti0__CTIGATE); +set_reset_data( debug_cpu_cti0__ASICCTL, val_debug_cpu_cti0__ASICCTL); +set_reset_data( debug_cpu_cti0__ITCHINACK, val_debug_cpu_cti0__ITCHINACK); +set_reset_data( debug_cpu_cti0__ITTRIGINACK, val_debug_cpu_cti0__ITTRIGINACK); +set_reset_data( debug_cpu_cti0__ITCHOUT, val_debug_cpu_cti0__ITCHOUT); +set_reset_data( debug_cpu_cti0__ITTRIGOUT, val_debug_cpu_cti0__ITTRIGOUT); +set_reset_data( debug_cpu_cti0__ITCHOUTACK, val_debug_cpu_cti0__ITCHOUTACK); +set_reset_data( debug_cpu_cti0__ITTRIGOUTACK, val_debug_cpu_cti0__ITTRIGOUTACK); +set_reset_data( debug_cpu_cti0__ITCHIN, val_debug_cpu_cti0__ITCHIN); +set_reset_data( debug_cpu_cti0__ITTRIGIN, val_debug_cpu_cti0__ITTRIGIN); +set_reset_data( debug_cpu_cti0__ITCTRL, val_debug_cpu_cti0__ITCTRL); +set_reset_data( debug_cpu_cti0__CTSR, val_debug_cpu_cti0__CTSR); +set_reset_data( debug_cpu_cti0__CTCR, val_debug_cpu_cti0__CTCR); +set_reset_data( debug_cpu_cti0__LAR, val_debug_cpu_cti0__LAR); +set_reset_data( debug_cpu_cti0__LSR, val_debug_cpu_cti0__LSR); +set_reset_data( debug_cpu_cti0__ASR, val_debug_cpu_cti0__ASR); +set_reset_data( debug_cpu_cti0__DEVID, val_debug_cpu_cti0__DEVID); +set_reset_data( debug_cpu_cti0__DTIR, val_debug_cpu_cti0__DTIR); +set_reset_data( debug_cpu_cti0__PERIPHID4, val_debug_cpu_cti0__PERIPHID4); +set_reset_data( debug_cpu_cti0__PERIPHID5, val_debug_cpu_cti0__PERIPHID5); +set_reset_data( debug_cpu_cti0__PERIPHID6, val_debug_cpu_cti0__PERIPHID6); +set_reset_data( debug_cpu_cti0__PERIPHID7, val_debug_cpu_cti0__PERIPHID7); +set_reset_data( debug_cpu_cti0__PERIPHID0, val_debug_cpu_cti0__PERIPHID0); +set_reset_data( debug_cpu_cti0__PERIPHID1, val_debug_cpu_cti0__PERIPHID1); +set_reset_data( debug_cpu_cti0__PERIPHID2, val_debug_cpu_cti0__PERIPHID2); +set_reset_data( debug_cpu_cti0__PERIPHID3, val_debug_cpu_cti0__PERIPHID3); +set_reset_data( debug_cpu_cti0__COMPID0, val_debug_cpu_cti0__COMPID0); +set_reset_data( debug_cpu_cti0__COMPID1, val_debug_cpu_cti0__COMPID1); +set_reset_data( debug_cpu_cti0__COMPID2, val_debug_cpu_cti0__COMPID2); +set_reset_data( debug_cpu_cti0__COMPID3, val_debug_cpu_cti0__COMPID3); + +// ************************************************************ +// Module debug_cpu_cti1 cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cpu_cti1__CTICONTROL, val_debug_cpu_cti1__CTICONTROL); +set_reset_data( debug_cpu_cti1__CTIINTACK, val_debug_cpu_cti1__CTIINTACK); +set_reset_data( debug_cpu_cti1__CTIAPPSET, val_debug_cpu_cti1__CTIAPPSET); +set_reset_data( debug_cpu_cti1__CTIAPPCLEAR, val_debug_cpu_cti1__CTIAPPCLEAR); +set_reset_data( debug_cpu_cti1__CTIAPPPULSE, val_debug_cpu_cti1__CTIAPPPULSE); +set_reset_data( debug_cpu_cti1__CTIINEN0, val_debug_cpu_cti1__CTIINEN0); +set_reset_data( debug_cpu_cti1__CTIINEN1, val_debug_cpu_cti1__CTIINEN1); +set_reset_data( debug_cpu_cti1__CTIINEN2, val_debug_cpu_cti1__CTIINEN2); +set_reset_data( debug_cpu_cti1__CTIINEN3, val_debug_cpu_cti1__CTIINEN3); +set_reset_data( debug_cpu_cti1__CTIINEN4, val_debug_cpu_cti1__CTIINEN4); +set_reset_data( debug_cpu_cti1__CTIINEN5, val_debug_cpu_cti1__CTIINEN5); +set_reset_data( debug_cpu_cti1__CTIINEN6, val_debug_cpu_cti1__CTIINEN6); +set_reset_data( debug_cpu_cti1__CTIINEN7, val_debug_cpu_cti1__CTIINEN7); +set_reset_data( debug_cpu_cti1__CTIOUTEN0, val_debug_cpu_cti1__CTIOUTEN0); +set_reset_data( debug_cpu_cti1__CTIOUTEN1, val_debug_cpu_cti1__CTIOUTEN1); +set_reset_data( debug_cpu_cti1__CTIOUTEN2, val_debug_cpu_cti1__CTIOUTEN2); +set_reset_data( debug_cpu_cti1__CTIOUTEN3, val_debug_cpu_cti1__CTIOUTEN3); +set_reset_data( debug_cpu_cti1__CTIOUTEN4, val_debug_cpu_cti1__CTIOUTEN4); +set_reset_data( debug_cpu_cti1__CTIOUTEN5, val_debug_cpu_cti1__CTIOUTEN5); +set_reset_data( debug_cpu_cti1__CTIOUTEN6, val_debug_cpu_cti1__CTIOUTEN6); +set_reset_data( debug_cpu_cti1__CTIOUTEN7, val_debug_cpu_cti1__CTIOUTEN7); +set_reset_data( debug_cpu_cti1__CTITRIGINSTATUS, val_debug_cpu_cti1__CTITRIGINSTATUS); +set_reset_data( debug_cpu_cti1__CTITRIGOUTSTATUS, val_debug_cpu_cti1__CTITRIGOUTSTATUS); +set_reset_data( debug_cpu_cti1__CTICHINSTATUS, val_debug_cpu_cti1__CTICHINSTATUS); +set_reset_data( debug_cpu_cti1__CTICHOUTSTATUS, val_debug_cpu_cti1__CTICHOUTSTATUS); +set_reset_data( debug_cpu_cti1__CTIGATE, val_debug_cpu_cti1__CTIGATE); +set_reset_data( debug_cpu_cti1__ASICCTL, val_debug_cpu_cti1__ASICCTL); +set_reset_data( debug_cpu_cti1__ITCHINACK, val_debug_cpu_cti1__ITCHINACK); +set_reset_data( debug_cpu_cti1__ITTRIGINACK, val_debug_cpu_cti1__ITTRIGINACK); +set_reset_data( debug_cpu_cti1__ITCHOUT, val_debug_cpu_cti1__ITCHOUT); +set_reset_data( debug_cpu_cti1__ITTRIGOUT, val_debug_cpu_cti1__ITTRIGOUT); +set_reset_data( debug_cpu_cti1__ITCHOUTACK, val_debug_cpu_cti1__ITCHOUTACK); +set_reset_data( debug_cpu_cti1__ITTRIGOUTACK, val_debug_cpu_cti1__ITTRIGOUTACK); +set_reset_data( debug_cpu_cti1__ITCHIN, val_debug_cpu_cti1__ITCHIN); +set_reset_data( debug_cpu_cti1__ITTRIGIN, val_debug_cpu_cti1__ITTRIGIN); +set_reset_data( debug_cpu_cti1__ITCTRL, val_debug_cpu_cti1__ITCTRL); +set_reset_data( debug_cpu_cti1__CTSR, val_debug_cpu_cti1__CTSR); +set_reset_data( debug_cpu_cti1__CTCR, val_debug_cpu_cti1__CTCR); +set_reset_data( debug_cpu_cti1__LAR, val_debug_cpu_cti1__LAR); +set_reset_data( debug_cpu_cti1__LSR, val_debug_cpu_cti1__LSR); +set_reset_data( debug_cpu_cti1__ASR, val_debug_cpu_cti1__ASR); +set_reset_data( debug_cpu_cti1__DEVID, val_debug_cpu_cti1__DEVID); +set_reset_data( debug_cpu_cti1__DTIR, val_debug_cpu_cti1__DTIR); +set_reset_data( debug_cpu_cti1__PERIPHID4, val_debug_cpu_cti1__PERIPHID4); +set_reset_data( debug_cpu_cti1__PERIPHID5, val_debug_cpu_cti1__PERIPHID5); +set_reset_data( debug_cpu_cti1__PERIPHID6, val_debug_cpu_cti1__PERIPHID6); +set_reset_data( debug_cpu_cti1__PERIPHID7, val_debug_cpu_cti1__PERIPHID7); +set_reset_data( debug_cpu_cti1__PERIPHID0, val_debug_cpu_cti1__PERIPHID0); +set_reset_data( debug_cpu_cti1__PERIPHID1, val_debug_cpu_cti1__PERIPHID1); +set_reset_data( debug_cpu_cti1__PERIPHID2, val_debug_cpu_cti1__PERIPHID2); +set_reset_data( debug_cpu_cti1__PERIPHID3, val_debug_cpu_cti1__PERIPHID3); +set_reset_data( debug_cpu_cti1__COMPID0, val_debug_cpu_cti1__COMPID0); +set_reset_data( debug_cpu_cti1__COMPID1, val_debug_cpu_cti1__COMPID1); +set_reset_data( debug_cpu_cti1__COMPID2, val_debug_cpu_cti1__COMPID2); +set_reset_data( debug_cpu_cti1__COMPID3, val_debug_cpu_cti1__COMPID3); + +// ************************************************************ +// Module debug_cpu_pmu0 cortexa9_pmu +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cpu_pmu0__PMXEVCNTR0, val_debug_cpu_pmu0__PMXEVCNTR0); +set_reset_data( debug_cpu_pmu0__PMXEVCNTR1, val_debug_cpu_pmu0__PMXEVCNTR1); +set_reset_data( debug_cpu_pmu0__PMXEVCNTR2, val_debug_cpu_pmu0__PMXEVCNTR2); +set_reset_data( debug_cpu_pmu0__PMXEVCNTR3, val_debug_cpu_pmu0__PMXEVCNTR3); +set_reset_data( debug_cpu_pmu0__PMXEVCNTR4, val_debug_cpu_pmu0__PMXEVCNTR4); +set_reset_data( debug_cpu_pmu0__PMXEVCNTR5, val_debug_cpu_pmu0__PMXEVCNTR5); +set_reset_data( debug_cpu_pmu0__PMCCNTR, val_debug_cpu_pmu0__PMCCNTR); +set_reset_data( debug_cpu_pmu0__PMXEVTYPER0, val_debug_cpu_pmu0__PMXEVTYPER0); +set_reset_data( debug_cpu_pmu0__PMXEVTYPER1, val_debug_cpu_pmu0__PMXEVTYPER1); +set_reset_data( debug_cpu_pmu0__PMXEVTYPER2, val_debug_cpu_pmu0__PMXEVTYPER2); +set_reset_data( debug_cpu_pmu0__PMXEVTYPER3, val_debug_cpu_pmu0__PMXEVTYPER3); +set_reset_data( debug_cpu_pmu0__PMXEVTYPER4, val_debug_cpu_pmu0__PMXEVTYPER4); +set_reset_data( debug_cpu_pmu0__PMXEVTYPER5, val_debug_cpu_pmu0__PMXEVTYPER5); +set_reset_data( debug_cpu_pmu0__PMCNTENSET, val_debug_cpu_pmu0__PMCNTENSET); +set_reset_data( debug_cpu_pmu0__PMCNTENCLR, val_debug_cpu_pmu0__PMCNTENCLR); +set_reset_data( debug_cpu_pmu0__PMINTENSET, val_debug_cpu_pmu0__PMINTENSET); +set_reset_data( debug_cpu_pmu0__PMINTENCLR, val_debug_cpu_pmu0__PMINTENCLR); +set_reset_data( debug_cpu_pmu0__PMOVSR, val_debug_cpu_pmu0__PMOVSR); +set_reset_data( debug_cpu_pmu0__PMSWINC, val_debug_cpu_pmu0__PMSWINC); +set_reset_data( debug_cpu_pmu0__PMCR, val_debug_cpu_pmu0__PMCR); +set_reset_data( debug_cpu_pmu0__PMUSERENR, val_debug_cpu_pmu0__PMUSERENR); + +// ************************************************************ +// Module debug_cpu_pmu1 cortexa9_pmu +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cpu_pmu1__PMXEVCNTR0, val_debug_cpu_pmu1__PMXEVCNTR0); +set_reset_data( debug_cpu_pmu1__PMXEVCNTR1, val_debug_cpu_pmu1__PMXEVCNTR1); +set_reset_data( debug_cpu_pmu1__PMXEVCNTR2, val_debug_cpu_pmu1__PMXEVCNTR2); +set_reset_data( debug_cpu_pmu1__PMXEVCNTR3, val_debug_cpu_pmu1__PMXEVCNTR3); +set_reset_data( debug_cpu_pmu1__PMXEVCNTR4, val_debug_cpu_pmu1__PMXEVCNTR4); +set_reset_data( debug_cpu_pmu1__PMXEVCNTR5, val_debug_cpu_pmu1__PMXEVCNTR5); +set_reset_data( debug_cpu_pmu1__PMCCNTR, val_debug_cpu_pmu1__PMCCNTR); +set_reset_data( debug_cpu_pmu1__PMXEVTYPER0, val_debug_cpu_pmu1__PMXEVTYPER0); +set_reset_data( debug_cpu_pmu1__PMXEVTYPER1, val_debug_cpu_pmu1__PMXEVTYPER1); +set_reset_data( debug_cpu_pmu1__PMXEVTYPER2, val_debug_cpu_pmu1__PMXEVTYPER2); +set_reset_data( debug_cpu_pmu1__PMXEVTYPER3, val_debug_cpu_pmu1__PMXEVTYPER3); +set_reset_data( debug_cpu_pmu1__PMXEVTYPER4, val_debug_cpu_pmu1__PMXEVTYPER4); +set_reset_data( debug_cpu_pmu1__PMXEVTYPER5, val_debug_cpu_pmu1__PMXEVTYPER5); +set_reset_data( debug_cpu_pmu1__PMCNTENSET, val_debug_cpu_pmu1__PMCNTENSET); +set_reset_data( debug_cpu_pmu1__PMCNTENCLR, val_debug_cpu_pmu1__PMCNTENCLR); +set_reset_data( debug_cpu_pmu1__PMINTENSET, val_debug_cpu_pmu1__PMINTENSET); +set_reset_data( debug_cpu_pmu1__PMINTENCLR, val_debug_cpu_pmu1__PMINTENCLR); +set_reset_data( debug_cpu_pmu1__PMOVSR, val_debug_cpu_pmu1__PMOVSR); +set_reset_data( debug_cpu_pmu1__PMSWINC, val_debug_cpu_pmu1__PMSWINC); +set_reset_data( debug_cpu_pmu1__PMCR, val_debug_cpu_pmu1__PMCR); +set_reset_data( debug_cpu_pmu1__PMUSERENR, val_debug_cpu_pmu1__PMUSERENR); + +// ************************************************************ +// Module debug_cpu_ptm0 ptm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cpu_ptm0__ETMCR, val_debug_cpu_ptm0__ETMCR); +set_reset_data( debug_cpu_ptm0__ETMCCR, val_debug_cpu_ptm0__ETMCCR); +set_reset_data( debug_cpu_ptm0__ETMTRIGGER, val_debug_cpu_ptm0__ETMTRIGGER); +set_reset_data( debug_cpu_ptm0__ETMSR, val_debug_cpu_ptm0__ETMSR); +set_reset_data( debug_cpu_ptm0__ETMSCR, val_debug_cpu_ptm0__ETMSCR); +set_reset_data( debug_cpu_ptm0__ETMTSSCR, val_debug_cpu_ptm0__ETMTSSCR); +set_reset_data( debug_cpu_ptm0__ETMTECR1, val_debug_cpu_ptm0__ETMTECR1); +set_reset_data( debug_cpu_ptm0__ETMACVR1, val_debug_cpu_ptm0__ETMACVR1); +set_reset_data( debug_cpu_ptm0__ETMACVR2, val_debug_cpu_ptm0__ETMACVR2); +set_reset_data( debug_cpu_ptm0__ETMACVR3, val_debug_cpu_ptm0__ETMACVR3); +set_reset_data( debug_cpu_ptm0__ETMACVR4, val_debug_cpu_ptm0__ETMACVR4); +set_reset_data( debug_cpu_ptm0__ETMACVR5, val_debug_cpu_ptm0__ETMACVR5); +set_reset_data( debug_cpu_ptm0__ETMACVR6, val_debug_cpu_ptm0__ETMACVR6); +set_reset_data( debug_cpu_ptm0__ETMACVR7, val_debug_cpu_ptm0__ETMACVR7); +set_reset_data( debug_cpu_ptm0__ETMACVR8, val_debug_cpu_ptm0__ETMACVR8); +set_reset_data( debug_cpu_ptm0__ETMACTR1, val_debug_cpu_ptm0__ETMACTR1); +set_reset_data( debug_cpu_ptm0__ETMACTR2, val_debug_cpu_ptm0__ETMACTR2); +set_reset_data( debug_cpu_ptm0__ETMACTR3, val_debug_cpu_ptm0__ETMACTR3); +set_reset_data( debug_cpu_ptm0__ETMACTR4, val_debug_cpu_ptm0__ETMACTR4); +set_reset_data( debug_cpu_ptm0__ETMACTR5, val_debug_cpu_ptm0__ETMACTR5); +set_reset_data( debug_cpu_ptm0__ETMACTR6, val_debug_cpu_ptm0__ETMACTR6); +set_reset_data( debug_cpu_ptm0__ETMACTR7, val_debug_cpu_ptm0__ETMACTR7); +set_reset_data( debug_cpu_ptm0__ETMACTR8, val_debug_cpu_ptm0__ETMACTR8); +set_reset_data( debug_cpu_ptm0__ETMCNTRLDVR1, val_debug_cpu_ptm0__ETMCNTRLDVR1); +set_reset_data( debug_cpu_ptm0__ETMCNTRLDVR2, val_debug_cpu_ptm0__ETMCNTRLDVR2); +set_reset_data( debug_cpu_ptm0__ETMCNTENR1, val_debug_cpu_ptm0__ETMCNTENR1); +set_reset_data( debug_cpu_ptm0__ETMCNTENR2, val_debug_cpu_ptm0__ETMCNTENR2); +set_reset_data( debug_cpu_ptm0__ETMCNTRLDEVR1, val_debug_cpu_ptm0__ETMCNTRLDEVR1); +set_reset_data( debug_cpu_ptm0__ETMCNTRLDEVR2, val_debug_cpu_ptm0__ETMCNTRLDEVR2); +set_reset_data( debug_cpu_ptm0__ETMCNTVR1, val_debug_cpu_ptm0__ETMCNTVR1); +set_reset_data( debug_cpu_ptm0__ETMCNTVR2, val_debug_cpu_ptm0__ETMCNTVR2); +set_reset_data( debug_cpu_ptm0__ETMSQ12EVR, val_debug_cpu_ptm0__ETMSQ12EVR); +set_reset_data( debug_cpu_ptm0__ETMSQ21EVR, val_debug_cpu_ptm0__ETMSQ21EVR); +set_reset_data( debug_cpu_ptm0__ETMSQ23EVR, val_debug_cpu_ptm0__ETMSQ23EVR); +set_reset_data( debug_cpu_ptm0__ETMSQ31EVR, val_debug_cpu_ptm0__ETMSQ31EVR); +set_reset_data( debug_cpu_ptm0__ETMSQ32EVR, val_debug_cpu_ptm0__ETMSQ32EVR); +set_reset_data( debug_cpu_ptm0__ETMSQ13EVR, val_debug_cpu_ptm0__ETMSQ13EVR); +set_reset_data( debug_cpu_ptm0__ETMSQR, val_debug_cpu_ptm0__ETMSQR); +set_reset_data( debug_cpu_ptm0__ETMEXTOUTEVR1, val_debug_cpu_ptm0__ETMEXTOUTEVR1); +set_reset_data( debug_cpu_ptm0__ETMEXTOUTEVR2, val_debug_cpu_ptm0__ETMEXTOUTEVR2); +set_reset_data( debug_cpu_ptm0__ETMCIDCVR1, val_debug_cpu_ptm0__ETMCIDCVR1); +set_reset_data( debug_cpu_ptm0__ETMCIDCMR, val_debug_cpu_ptm0__ETMCIDCMR); +set_reset_data( debug_cpu_ptm0__ETMSYNCFR, val_debug_cpu_ptm0__ETMSYNCFR); +set_reset_data( debug_cpu_ptm0__ETMIDR, val_debug_cpu_ptm0__ETMIDR); +set_reset_data( debug_cpu_ptm0__ETMCCER, val_debug_cpu_ptm0__ETMCCER); +set_reset_data( debug_cpu_ptm0__ETMEXTINSELR, val_debug_cpu_ptm0__ETMEXTINSELR); +set_reset_data( debug_cpu_ptm0__ETMAUXCR, val_debug_cpu_ptm0__ETMAUXCR); +set_reset_data( debug_cpu_ptm0__ETMTRACEIDR, val_debug_cpu_ptm0__ETMTRACEIDR); +set_reset_data( debug_cpu_ptm0__OSLSR, val_debug_cpu_ptm0__OSLSR); +set_reset_data( debug_cpu_ptm0__ETMPDSR, val_debug_cpu_ptm0__ETMPDSR); +set_reset_data( debug_cpu_ptm0__ITMISCOUT, val_debug_cpu_ptm0__ITMISCOUT); +set_reset_data( debug_cpu_ptm0__ITMISCIN, val_debug_cpu_ptm0__ITMISCIN); +set_reset_data( debug_cpu_ptm0__ITTRIGGER, val_debug_cpu_ptm0__ITTRIGGER); +set_reset_data( debug_cpu_ptm0__ITATBDATA0, val_debug_cpu_ptm0__ITATBDATA0); +set_reset_data( debug_cpu_ptm0__ITATBCTR2, val_debug_cpu_ptm0__ITATBCTR2); +set_reset_data( debug_cpu_ptm0__ITATBID, val_debug_cpu_ptm0__ITATBID); +set_reset_data( debug_cpu_ptm0__ITATBCTR0, val_debug_cpu_ptm0__ITATBCTR0); +set_reset_data( debug_cpu_ptm0__ETMITCTRL, val_debug_cpu_ptm0__ETMITCTRL); +set_reset_data( debug_cpu_ptm0__CTSR, val_debug_cpu_ptm0__CTSR); +set_reset_data( debug_cpu_ptm0__CTCR, val_debug_cpu_ptm0__CTCR); +set_reset_data( debug_cpu_ptm0__LAR, val_debug_cpu_ptm0__LAR); +set_reset_data( debug_cpu_ptm0__LSR, val_debug_cpu_ptm0__LSR); +set_reset_data( debug_cpu_ptm0__ASR, val_debug_cpu_ptm0__ASR); +set_reset_data( debug_cpu_ptm0__DEVID, val_debug_cpu_ptm0__DEVID); +set_reset_data( debug_cpu_ptm0__DTIR, val_debug_cpu_ptm0__DTIR); +set_reset_data( debug_cpu_ptm0__PERIPHID4, val_debug_cpu_ptm0__PERIPHID4); +set_reset_data( debug_cpu_ptm0__PERIPHID5, val_debug_cpu_ptm0__PERIPHID5); +set_reset_data( debug_cpu_ptm0__PERIPHID6, val_debug_cpu_ptm0__PERIPHID6); +set_reset_data( debug_cpu_ptm0__PERIPHID7, val_debug_cpu_ptm0__PERIPHID7); +set_reset_data( debug_cpu_ptm0__PERIPHID0, val_debug_cpu_ptm0__PERIPHID0); +set_reset_data( debug_cpu_ptm0__PERIPHID1, val_debug_cpu_ptm0__PERIPHID1); +set_reset_data( debug_cpu_ptm0__PERIPHID2, val_debug_cpu_ptm0__PERIPHID2); +set_reset_data( debug_cpu_ptm0__PERIPHID3, val_debug_cpu_ptm0__PERIPHID3); +set_reset_data( debug_cpu_ptm0__COMPID0, val_debug_cpu_ptm0__COMPID0); +set_reset_data( debug_cpu_ptm0__COMPID1, val_debug_cpu_ptm0__COMPID1); +set_reset_data( debug_cpu_ptm0__COMPID2, val_debug_cpu_ptm0__COMPID2); +set_reset_data( debug_cpu_ptm0__COMPID3, val_debug_cpu_ptm0__COMPID3); + +// ************************************************************ +// Module debug_cpu_ptm1 ptm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cpu_ptm1__ETMCR, val_debug_cpu_ptm1__ETMCR); +set_reset_data( debug_cpu_ptm1__ETMCCR, val_debug_cpu_ptm1__ETMCCR); +set_reset_data( debug_cpu_ptm1__ETMTRIGGER, val_debug_cpu_ptm1__ETMTRIGGER); +set_reset_data( debug_cpu_ptm1__ETMSR, val_debug_cpu_ptm1__ETMSR); +set_reset_data( debug_cpu_ptm1__ETMSCR, val_debug_cpu_ptm1__ETMSCR); +set_reset_data( debug_cpu_ptm1__ETMTSSCR, val_debug_cpu_ptm1__ETMTSSCR); +set_reset_data( debug_cpu_ptm1__ETMTECR1, val_debug_cpu_ptm1__ETMTECR1); +set_reset_data( debug_cpu_ptm1__ETMACVR1, val_debug_cpu_ptm1__ETMACVR1); +set_reset_data( debug_cpu_ptm1__ETMACVR2, val_debug_cpu_ptm1__ETMACVR2); +set_reset_data( debug_cpu_ptm1__ETMACVR3, val_debug_cpu_ptm1__ETMACVR3); +set_reset_data( debug_cpu_ptm1__ETMACVR4, val_debug_cpu_ptm1__ETMACVR4); +set_reset_data( debug_cpu_ptm1__ETMACVR5, val_debug_cpu_ptm1__ETMACVR5); +set_reset_data( debug_cpu_ptm1__ETMACVR6, val_debug_cpu_ptm1__ETMACVR6); +set_reset_data( debug_cpu_ptm1__ETMACVR7, val_debug_cpu_ptm1__ETMACVR7); +set_reset_data( debug_cpu_ptm1__ETMACVR8, val_debug_cpu_ptm1__ETMACVR8); +set_reset_data( debug_cpu_ptm1__ETMACTR1, val_debug_cpu_ptm1__ETMACTR1); +set_reset_data( debug_cpu_ptm1__ETMACTR2, val_debug_cpu_ptm1__ETMACTR2); +set_reset_data( debug_cpu_ptm1__ETMACTR3, val_debug_cpu_ptm1__ETMACTR3); +set_reset_data( debug_cpu_ptm1__ETMACTR4, val_debug_cpu_ptm1__ETMACTR4); +set_reset_data( debug_cpu_ptm1__ETMACTR5, val_debug_cpu_ptm1__ETMACTR5); +set_reset_data( debug_cpu_ptm1__ETMACTR6, val_debug_cpu_ptm1__ETMACTR6); +set_reset_data( debug_cpu_ptm1__ETMACTR7, val_debug_cpu_ptm1__ETMACTR7); +set_reset_data( debug_cpu_ptm1__ETMACTR8, val_debug_cpu_ptm1__ETMACTR8); +set_reset_data( debug_cpu_ptm1__ETMCNTRLDVR1, val_debug_cpu_ptm1__ETMCNTRLDVR1); +set_reset_data( debug_cpu_ptm1__ETMCNTRLDVR2, val_debug_cpu_ptm1__ETMCNTRLDVR2); +set_reset_data( debug_cpu_ptm1__ETMCNTENR1, val_debug_cpu_ptm1__ETMCNTENR1); +set_reset_data( debug_cpu_ptm1__ETMCNTENR2, val_debug_cpu_ptm1__ETMCNTENR2); +set_reset_data( debug_cpu_ptm1__ETMCNTRLDEVR1, val_debug_cpu_ptm1__ETMCNTRLDEVR1); +set_reset_data( debug_cpu_ptm1__ETMCNTRLDEVR2, val_debug_cpu_ptm1__ETMCNTRLDEVR2); +set_reset_data( debug_cpu_ptm1__ETMCNTVR1, val_debug_cpu_ptm1__ETMCNTVR1); +set_reset_data( debug_cpu_ptm1__ETMCNTVR2, val_debug_cpu_ptm1__ETMCNTVR2); +set_reset_data( debug_cpu_ptm1__ETMSQ12EVR, val_debug_cpu_ptm1__ETMSQ12EVR); +set_reset_data( debug_cpu_ptm1__ETMSQ21EVR, val_debug_cpu_ptm1__ETMSQ21EVR); +set_reset_data( debug_cpu_ptm1__ETMSQ23EVR, val_debug_cpu_ptm1__ETMSQ23EVR); +set_reset_data( debug_cpu_ptm1__ETMSQ31EVR, val_debug_cpu_ptm1__ETMSQ31EVR); +set_reset_data( debug_cpu_ptm1__ETMSQ32EVR, val_debug_cpu_ptm1__ETMSQ32EVR); +set_reset_data( debug_cpu_ptm1__ETMSQ13EVR, val_debug_cpu_ptm1__ETMSQ13EVR); +set_reset_data( debug_cpu_ptm1__ETMSQR, val_debug_cpu_ptm1__ETMSQR); +set_reset_data( debug_cpu_ptm1__ETMEXTOUTEVR1, val_debug_cpu_ptm1__ETMEXTOUTEVR1); +set_reset_data( debug_cpu_ptm1__ETMEXTOUTEVR2, val_debug_cpu_ptm1__ETMEXTOUTEVR2); +set_reset_data( debug_cpu_ptm1__ETMCIDCVR1, val_debug_cpu_ptm1__ETMCIDCVR1); +set_reset_data( debug_cpu_ptm1__ETMCIDCMR, val_debug_cpu_ptm1__ETMCIDCMR); +set_reset_data( debug_cpu_ptm1__ETMSYNCFR, val_debug_cpu_ptm1__ETMSYNCFR); +set_reset_data( debug_cpu_ptm1__ETMIDR, val_debug_cpu_ptm1__ETMIDR); +set_reset_data( debug_cpu_ptm1__ETMCCER, val_debug_cpu_ptm1__ETMCCER); +set_reset_data( debug_cpu_ptm1__ETMEXTINSELR, val_debug_cpu_ptm1__ETMEXTINSELR); +set_reset_data( debug_cpu_ptm1__ETMAUXCR, val_debug_cpu_ptm1__ETMAUXCR); +set_reset_data( debug_cpu_ptm1__ETMTRACEIDR, val_debug_cpu_ptm1__ETMTRACEIDR); +set_reset_data( debug_cpu_ptm1__OSLSR, val_debug_cpu_ptm1__OSLSR); +set_reset_data( debug_cpu_ptm1__ETMPDSR, val_debug_cpu_ptm1__ETMPDSR); +set_reset_data( debug_cpu_ptm1__ITMISCOUT, val_debug_cpu_ptm1__ITMISCOUT); +set_reset_data( debug_cpu_ptm1__ITMISCIN, val_debug_cpu_ptm1__ITMISCIN); +set_reset_data( debug_cpu_ptm1__ITTRIGGER, val_debug_cpu_ptm1__ITTRIGGER); +set_reset_data( debug_cpu_ptm1__ITATBDATA0, val_debug_cpu_ptm1__ITATBDATA0); +set_reset_data( debug_cpu_ptm1__ITATBCTR2, val_debug_cpu_ptm1__ITATBCTR2); +set_reset_data( debug_cpu_ptm1__ITATBID, val_debug_cpu_ptm1__ITATBID); +set_reset_data( debug_cpu_ptm1__ITATBCTR0, val_debug_cpu_ptm1__ITATBCTR0); +set_reset_data( debug_cpu_ptm1__ETMITCTRL, val_debug_cpu_ptm1__ETMITCTRL); +set_reset_data( debug_cpu_ptm1__CTSR, val_debug_cpu_ptm1__CTSR); +set_reset_data( debug_cpu_ptm1__CTCR, val_debug_cpu_ptm1__CTCR); +set_reset_data( debug_cpu_ptm1__LAR, val_debug_cpu_ptm1__LAR); +set_reset_data( debug_cpu_ptm1__LSR, val_debug_cpu_ptm1__LSR); +set_reset_data( debug_cpu_ptm1__ASR, val_debug_cpu_ptm1__ASR); +set_reset_data( debug_cpu_ptm1__DEVID, val_debug_cpu_ptm1__DEVID); +set_reset_data( debug_cpu_ptm1__DTIR, val_debug_cpu_ptm1__DTIR); +set_reset_data( debug_cpu_ptm1__PERIPHID4, val_debug_cpu_ptm1__PERIPHID4); +set_reset_data( debug_cpu_ptm1__PERIPHID5, val_debug_cpu_ptm1__PERIPHID5); +set_reset_data( debug_cpu_ptm1__PERIPHID6, val_debug_cpu_ptm1__PERIPHID6); +set_reset_data( debug_cpu_ptm1__PERIPHID7, val_debug_cpu_ptm1__PERIPHID7); +set_reset_data( debug_cpu_ptm1__PERIPHID0, val_debug_cpu_ptm1__PERIPHID0); +set_reset_data( debug_cpu_ptm1__PERIPHID1, val_debug_cpu_ptm1__PERIPHID1); +set_reset_data( debug_cpu_ptm1__PERIPHID2, val_debug_cpu_ptm1__PERIPHID2); +set_reset_data( debug_cpu_ptm1__PERIPHID3, val_debug_cpu_ptm1__PERIPHID3); +set_reset_data( debug_cpu_ptm1__COMPID0, val_debug_cpu_ptm1__COMPID0); +set_reset_data( debug_cpu_ptm1__COMPID1, val_debug_cpu_ptm1__COMPID1); +set_reset_data( debug_cpu_ptm1__COMPID2, val_debug_cpu_ptm1__COMPID2); +set_reset_data( debug_cpu_ptm1__COMPID3, val_debug_cpu_ptm1__COMPID3); + +// ************************************************************ +// Module debug_cti_axim cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cti_axim__CTICONTROL, val_debug_cti_axim__CTICONTROL); +set_reset_data( debug_cti_axim__CTIINTACK, val_debug_cti_axim__CTIINTACK); +set_reset_data( debug_cti_axim__CTIAPPSET, val_debug_cti_axim__CTIAPPSET); +set_reset_data( debug_cti_axim__CTIAPPCLEAR, val_debug_cti_axim__CTIAPPCLEAR); +set_reset_data( debug_cti_axim__CTIAPPPULSE, val_debug_cti_axim__CTIAPPPULSE); +set_reset_data( debug_cti_axim__CTIINEN0, val_debug_cti_axim__CTIINEN0); +set_reset_data( debug_cti_axim__CTIINEN1, val_debug_cti_axim__CTIINEN1); +set_reset_data( debug_cti_axim__CTIINEN2, val_debug_cti_axim__CTIINEN2); +set_reset_data( debug_cti_axim__CTIINEN3, val_debug_cti_axim__CTIINEN3); +set_reset_data( debug_cti_axim__CTIINEN4, val_debug_cti_axim__CTIINEN4); +set_reset_data( debug_cti_axim__CTIINEN5, val_debug_cti_axim__CTIINEN5); +set_reset_data( debug_cti_axim__CTIINEN6, val_debug_cti_axim__CTIINEN6); +set_reset_data( debug_cti_axim__CTIINEN7, val_debug_cti_axim__CTIINEN7); +set_reset_data( debug_cti_axim__CTIOUTEN0, val_debug_cti_axim__CTIOUTEN0); +set_reset_data( debug_cti_axim__CTIOUTEN1, val_debug_cti_axim__CTIOUTEN1); +set_reset_data( debug_cti_axim__CTIOUTEN2, val_debug_cti_axim__CTIOUTEN2); +set_reset_data( debug_cti_axim__CTIOUTEN3, val_debug_cti_axim__CTIOUTEN3); +set_reset_data( debug_cti_axim__CTIOUTEN4, val_debug_cti_axim__CTIOUTEN4); +set_reset_data( debug_cti_axim__CTIOUTEN5, val_debug_cti_axim__CTIOUTEN5); +set_reset_data( debug_cti_axim__CTIOUTEN6, val_debug_cti_axim__CTIOUTEN6); +set_reset_data( debug_cti_axim__CTIOUTEN7, val_debug_cti_axim__CTIOUTEN7); +set_reset_data( debug_cti_axim__CTITRIGINSTATUS, val_debug_cti_axim__CTITRIGINSTATUS); +set_reset_data( debug_cti_axim__CTITRIGOUTSTATUS, val_debug_cti_axim__CTITRIGOUTSTATUS); +set_reset_data( debug_cti_axim__CTICHINSTATUS, val_debug_cti_axim__CTICHINSTATUS); +set_reset_data( debug_cti_axim__CTICHOUTSTATUS, val_debug_cti_axim__CTICHOUTSTATUS); +set_reset_data( debug_cti_axim__CTIGATE, val_debug_cti_axim__CTIGATE); +set_reset_data( debug_cti_axim__ASICCTL, val_debug_cti_axim__ASICCTL); +set_reset_data( debug_cti_axim__ITCHINACK, val_debug_cti_axim__ITCHINACK); +set_reset_data( debug_cti_axim__ITTRIGINACK, val_debug_cti_axim__ITTRIGINACK); +set_reset_data( debug_cti_axim__ITCHOUT, val_debug_cti_axim__ITCHOUT); +set_reset_data( debug_cti_axim__ITTRIGOUT, val_debug_cti_axim__ITTRIGOUT); +set_reset_data( debug_cti_axim__ITCHOUTACK, val_debug_cti_axim__ITCHOUTACK); +set_reset_data( debug_cti_axim__ITTRIGOUTACK, val_debug_cti_axim__ITTRIGOUTACK); +set_reset_data( debug_cti_axim__ITCHIN, val_debug_cti_axim__ITCHIN); +set_reset_data( debug_cti_axim__ITTRIGIN, val_debug_cti_axim__ITTRIGIN); +set_reset_data( debug_cti_axim__ITCTRL, val_debug_cti_axim__ITCTRL); +set_reset_data( debug_cti_axim__CTSR, val_debug_cti_axim__CTSR); +set_reset_data( debug_cti_axim__CTCR, val_debug_cti_axim__CTCR); +set_reset_data( debug_cti_axim__LAR, val_debug_cti_axim__LAR); +set_reset_data( debug_cti_axim__LSR, val_debug_cti_axim__LSR); +set_reset_data( debug_cti_axim__ASR, val_debug_cti_axim__ASR); +set_reset_data( debug_cti_axim__DEVID, val_debug_cti_axim__DEVID); +set_reset_data( debug_cti_axim__DTIR, val_debug_cti_axim__DTIR); +set_reset_data( debug_cti_axim__PERIPHID4, val_debug_cti_axim__PERIPHID4); +set_reset_data( debug_cti_axim__PERIPHID5, val_debug_cti_axim__PERIPHID5); +set_reset_data( debug_cti_axim__PERIPHID6, val_debug_cti_axim__PERIPHID6); +set_reset_data( debug_cti_axim__PERIPHID7, val_debug_cti_axim__PERIPHID7); +set_reset_data( debug_cti_axim__PERIPHID0, val_debug_cti_axim__PERIPHID0); +set_reset_data( debug_cti_axim__PERIPHID1, val_debug_cti_axim__PERIPHID1); +set_reset_data( debug_cti_axim__PERIPHID2, val_debug_cti_axim__PERIPHID2); +set_reset_data( debug_cti_axim__PERIPHID3, val_debug_cti_axim__PERIPHID3); +set_reset_data( debug_cti_axim__COMPID0, val_debug_cti_axim__COMPID0); +set_reset_data( debug_cti_axim__COMPID1, val_debug_cti_axim__COMPID1); +set_reset_data( debug_cti_axim__COMPID2, val_debug_cti_axim__COMPID2); +set_reset_data( debug_cti_axim__COMPID3, val_debug_cti_axim__COMPID3); + +// ************************************************************ +// Module debug_cti_etb_tpiu cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cti_etb_tpiu__CTICONTROL, val_debug_cti_etb_tpiu__CTICONTROL); +set_reset_data( debug_cti_etb_tpiu__CTIINTACK, val_debug_cti_etb_tpiu__CTIINTACK); +set_reset_data( debug_cti_etb_tpiu__CTIAPPSET, val_debug_cti_etb_tpiu__CTIAPPSET); +set_reset_data( debug_cti_etb_tpiu__CTIAPPCLEAR, val_debug_cti_etb_tpiu__CTIAPPCLEAR); +set_reset_data( debug_cti_etb_tpiu__CTIAPPPULSE, val_debug_cti_etb_tpiu__CTIAPPPULSE); +set_reset_data( debug_cti_etb_tpiu__CTIINEN0, val_debug_cti_etb_tpiu__CTIINEN0); +set_reset_data( debug_cti_etb_tpiu__CTIINEN1, val_debug_cti_etb_tpiu__CTIINEN1); +set_reset_data( debug_cti_etb_tpiu__CTIINEN2, val_debug_cti_etb_tpiu__CTIINEN2); +set_reset_data( debug_cti_etb_tpiu__CTIINEN3, val_debug_cti_etb_tpiu__CTIINEN3); +set_reset_data( debug_cti_etb_tpiu__CTIINEN4, val_debug_cti_etb_tpiu__CTIINEN4); +set_reset_data( debug_cti_etb_tpiu__CTIINEN5, val_debug_cti_etb_tpiu__CTIINEN5); +set_reset_data( debug_cti_etb_tpiu__CTIINEN6, val_debug_cti_etb_tpiu__CTIINEN6); +set_reset_data( debug_cti_etb_tpiu__CTIINEN7, val_debug_cti_etb_tpiu__CTIINEN7); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN0, val_debug_cti_etb_tpiu__CTIOUTEN0); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN1, val_debug_cti_etb_tpiu__CTIOUTEN1); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN2, val_debug_cti_etb_tpiu__CTIOUTEN2); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN3, val_debug_cti_etb_tpiu__CTIOUTEN3); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN4, val_debug_cti_etb_tpiu__CTIOUTEN4); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN5, val_debug_cti_etb_tpiu__CTIOUTEN5); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN6, val_debug_cti_etb_tpiu__CTIOUTEN6); +set_reset_data( debug_cti_etb_tpiu__CTIOUTEN7, val_debug_cti_etb_tpiu__CTIOUTEN7); +set_reset_data( debug_cti_etb_tpiu__CTITRIGINSTATUS, val_debug_cti_etb_tpiu__CTITRIGINSTATUS); +set_reset_data( debug_cti_etb_tpiu__CTITRIGOUTSTATUS, val_debug_cti_etb_tpiu__CTITRIGOUTSTATUS); +set_reset_data( debug_cti_etb_tpiu__CTICHINSTATUS, val_debug_cti_etb_tpiu__CTICHINSTATUS); +set_reset_data( debug_cti_etb_tpiu__CTICHOUTSTATUS, val_debug_cti_etb_tpiu__CTICHOUTSTATUS); +set_reset_data( debug_cti_etb_tpiu__CTIGATE, val_debug_cti_etb_tpiu__CTIGATE); +set_reset_data( debug_cti_etb_tpiu__ASICCTL, val_debug_cti_etb_tpiu__ASICCTL); +set_reset_data( debug_cti_etb_tpiu__ITCHINACK, val_debug_cti_etb_tpiu__ITCHINACK); +set_reset_data( debug_cti_etb_tpiu__ITTRIGINACK, val_debug_cti_etb_tpiu__ITTRIGINACK); +set_reset_data( debug_cti_etb_tpiu__ITCHOUT, val_debug_cti_etb_tpiu__ITCHOUT); +set_reset_data( debug_cti_etb_tpiu__ITTRIGOUT, val_debug_cti_etb_tpiu__ITTRIGOUT); +set_reset_data( debug_cti_etb_tpiu__ITCHOUTACK, val_debug_cti_etb_tpiu__ITCHOUTACK); +set_reset_data( debug_cti_etb_tpiu__ITTRIGOUTACK, val_debug_cti_etb_tpiu__ITTRIGOUTACK); +set_reset_data( debug_cti_etb_tpiu__ITCHIN, val_debug_cti_etb_tpiu__ITCHIN); +set_reset_data( debug_cti_etb_tpiu__ITTRIGIN, val_debug_cti_etb_tpiu__ITTRIGIN); +set_reset_data( debug_cti_etb_tpiu__ITCTRL, val_debug_cti_etb_tpiu__ITCTRL); +set_reset_data( debug_cti_etb_tpiu__CTSR, val_debug_cti_etb_tpiu__CTSR); +set_reset_data( debug_cti_etb_tpiu__CTCR, val_debug_cti_etb_tpiu__CTCR); +set_reset_data( debug_cti_etb_tpiu__LAR, val_debug_cti_etb_tpiu__LAR); +set_reset_data( debug_cti_etb_tpiu__LSR, val_debug_cti_etb_tpiu__LSR); +set_reset_data( debug_cti_etb_tpiu__ASR, val_debug_cti_etb_tpiu__ASR); +set_reset_data( debug_cti_etb_tpiu__DEVID, val_debug_cti_etb_tpiu__DEVID); +set_reset_data( debug_cti_etb_tpiu__DTIR, val_debug_cti_etb_tpiu__DTIR); +set_reset_data( debug_cti_etb_tpiu__PERIPHID4, val_debug_cti_etb_tpiu__PERIPHID4); +set_reset_data( debug_cti_etb_tpiu__PERIPHID5, val_debug_cti_etb_tpiu__PERIPHID5); +set_reset_data( debug_cti_etb_tpiu__PERIPHID6, val_debug_cti_etb_tpiu__PERIPHID6); +set_reset_data( debug_cti_etb_tpiu__PERIPHID7, val_debug_cti_etb_tpiu__PERIPHID7); +set_reset_data( debug_cti_etb_tpiu__PERIPHID0, val_debug_cti_etb_tpiu__PERIPHID0); +set_reset_data( debug_cti_etb_tpiu__PERIPHID1, val_debug_cti_etb_tpiu__PERIPHID1); +set_reset_data( debug_cti_etb_tpiu__PERIPHID2, val_debug_cti_etb_tpiu__PERIPHID2); +set_reset_data( debug_cti_etb_tpiu__PERIPHID3, val_debug_cti_etb_tpiu__PERIPHID3); +set_reset_data( debug_cti_etb_tpiu__COMPID0, val_debug_cti_etb_tpiu__COMPID0); +set_reset_data( debug_cti_etb_tpiu__COMPID1, val_debug_cti_etb_tpiu__COMPID1); +set_reset_data( debug_cti_etb_tpiu__COMPID2, val_debug_cti_etb_tpiu__COMPID2); +set_reset_data( debug_cti_etb_tpiu__COMPID3, val_debug_cti_etb_tpiu__COMPID3); + +// ************************************************************ +// Module debug_cti_ftm cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_cti_ftm__CTICONTROL, val_debug_cti_ftm__CTICONTROL); +set_reset_data( debug_cti_ftm__CTIINTACK, val_debug_cti_ftm__CTIINTACK); +set_reset_data( debug_cti_ftm__CTIAPPSET, val_debug_cti_ftm__CTIAPPSET); +set_reset_data( debug_cti_ftm__CTIAPPCLEAR, val_debug_cti_ftm__CTIAPPCLEAR); +set_reset_data( debug_cti_ftm__CTIAPPPULSE, val_debug_cti_ftm__CTIAPPPULSE); +set_reset_data( debug_cti_ftm__CTIINEN0, val_debug_cti_ftm__CTIINEN0); +set_reset_data( debug_cti_ftm__CTIINEN1, val_debug_cti_ftm__CTIINEN1); +set_reset_data( debug_cti_ftm__CTIINEN2, val_debug_cti_ftm__CTIINEN2); +set_reset_data( debug_cti_ftm__CTIINEN3, val_debug_cti_ftm__CTIINEN3); +set_reset_data( debug_cti_ftm__CTIINEN4, val_debug_cti_ftm__CTIINEN4); +set_reset_data( debug_cti_ftm__CTIINEN5, val_debug_cti_ftm__CTIINEN5); +set_reset_data( debug_cti_ftm__CTIINEN6, val_debug_cti_ftm__CTIINEN6); +set_reset_data( debug_cti_ftm__CTIINEN7, val_debug_cti_ftm__CTIINEN7); +set_reset_data( debug_cti_ftm__CTIOUTEN0, val_debug_cti_ftm__CTIOUTEN0); +set_reset_data( debug_cti_ftm__CTIOUTEN1, val_debug_cti_ftm__CTIOUTEN1); +set_reset_data( debug_cti_ftm__CTIOUTEN2, val_debug_cti_ftm__CTIOUTEN2); +set_reset_data( debug_cti_ftm__CTIOUTEN3, val_debug_cti_ftm__CTIOUTEN3); +set_reset_data( debug_cti_ftm__CTIOUTEN4, val_debug_cti_ftm__CTIOUTEN4); +set_reset_data( debug_cti_ftm__CTIOUTEN5, val_debug_cti_ftm__CTIOUTEN5); +set_reset_data( debug_cti_ftm__CTIOUTEN6, val_debug_cti_ftm__CTIOUTEN6); +set_reset_data( debug_cti_ftm__CTIOUTEN7, val_debug_cti_ftm__CTIOUTEN7); +set_reset_data( debug_cti_ftm__CTITRIGINSTATUS, val_debug_cti_ftm__CTITRIGINSTATUS); +set_reset_data( debug_cti_ftm__CTITRIGOUTSTATUS, val_debug_cti_ftm__CTITRIGOUTSTATUS); +set_reset_data( debug_cti_ftm__CTICHINSTATUS, val_debug_cti_ftm__CTICHINSTATUS); +set_reset_data( debug_cti_ftm__CTICHOUTSTATUS, val_debug_cti_ftm__CTICHOUTSTATUS); +set_reset_data( debug_cti_ftm__CTIGATE, val_debug_cti_ftm__CTIGATE); +set_reset_data( debug_cti_ftm__ASICCTL, val_debug_cti_ftm__ASICCTL); +set_reset_data( debug_cti_ftm__ITCHINACK, val_debug_cti_ftm__ITCHINACK); +set_reset_data( debug_cti_ftm__ITTRIGINACK, val_debug_cti_ftm__ITTRIGINACK); +set_reset_data( debug_cti_ftm__ITCHOUT, val_debug_cti_ftm__ITCHOUT); +set_reset_data( debug_cti_ftm__ITTRIGOUT, val_debug_cti_ftm__ITTRIGOUT); +set_reset_data( debug_cti_ftm__ITCHOUTACK, val_debug_cti_ftm__ITCHOUTACK); +set_reset_data( debug_cti_ftm__ITTRIGOUTACK, val_debug_cti_ftm__ITTRIGOUTACK); +set_reset_data( debug_cti_ftm__ITCHIN, val_debug_cti_ftm__ITCHIN); +set_reset_data( debug_cti_ftm__ITTRIGIN, val_debug_cti_ftm__ITTRIGIN); +set_reset_data( debug_cti_ftm__ITCTRL, val_debug_cti_ftm__ITCTRL); +set_reset_data( debug_cti_ftm__CTSR, val_debug_cti_ftm__CTSR); +set_reset_data( debug_cti_ftm__CTCR, val_debug_cti_ftm__CTCR); +set_reset_data( debug_cti_ftm__LAR, val_debug_cti_ftm__LAR); +set_reset_data( debug_cti_ftm__LSR, val_debug_cti_ftm__LSR); +set_reset_data( debug_cti_ftm__ASR, val_debug_cti_ftm__ASR); +set_reset_data( debug_cti_ftm__DEVID, val_debug_cti_ftm__DEVID); +set_reset_data( debug_cti_ftm__DTIR, val_debug_cti_ftm__DTIR); +set_reset_data( debug_cti_ftm__PERIPHID4, val_debug_cti_ftm__PERIPHID4); +set_reset_data( debug_cti_ftm__PERIPHID5, val_debug_cti_ftm__PERIPHID5); +set_reset_data( debug_cti_ftm__PERIPHID6, val_debug_cti_ftm__PERIPHID6); +set_reset_data( debug_cti_ftm__PERIPHID7, val_debug_cti_ftm__PERIPHID7); +set_reset_data( debug_cti_ftm__PERIPHID0, val_debug_cti_ftm__PERIPHID0); +set_reset_data( debug_cti_ftm__PERIPHID1, val_debug_cti_ftm__PERIPHID1); +set_reset_data( debug_cti_ftm__PERIPHID2, val_debug_cti_ftm__PERIPHID2); +set_reset_data( debug_cti_ftm__PERIPHID3, val_debug_cti_ftm__PERIPHID3); +set_reset_data( debug_cti_ftm__COMPID0, val_debug_cti_ftm__COMPID0); +set_reset_data( debug_cti_ftm__COMPID1, val_debug_cti_ftm__COMPID1); +set_reset_data( debug_cti_ftm__COMPID2, val_debug_cti_ftm__COMPID2); +set_reset_data( debug_cti_ftm__COMPID3, val_debug_cti_ftm__COMPID3); + +// ************************************************************ +// Module debug_dap_rom dap +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_dap_rom__ROMENTRY00, val_debug_dap_rom__ROMENTRY00); +set_reset_data( debug_dap_rom__ROMENTRY01, val_debug_dap_rom__ROMENTRY01); +set_reset_data( debug_dap_rom__ROMENTRY02, val_debug_dap_rom__ROMENTRY02); +set_reset_data( debug_dap_rom__ROMENTRY03, val_debug_dap_rom__ROMENTRY03); +set_reset_data( debug_dap_rom__ROMENTRY04, val_debug_dap_rom__ROMENTRY04); +set_reset_data( debug_dap_rom__ROMENTRY05, val_debug_dap_rom__ROMENTRY05); +set_reset_data( debug_dap_rom__ROMENTRY06, val_debug_dap_rom__ROMENTRY06); +set_reset_data( debug_dap_rom__ROMENTRY07, val_debug_dap_rom__ROMENTRY07); +set_reset_data( debug_dap_rom__ROMENTRY08, val_debug_dap_rom__ROMENTRY08); +set_reset_data( debug_dap_rom__ROMENTRY09, val_debug_dap_rom__ROMENTRY09); +set_reset_data( debug_dap_rom__ROMENTRY10, val_debug_dap_rom__ROMENTRY10); +set_reset_data( debug_dap_rom__ROMENTRY11, val_debug_dap_rom__ROMENTRY11); +set_reset_data( debug_dap_rom__ROMENTRY12, val_debug_dap_rom__ROMENTRY12); +set_reset_data( debug_dap_rom__ROMENTRY13, val_debug_dap_rom__ROMENTRY13); +set_reset_data( debug_dap_rom__ROMENTRY14, val_debug_dap_rom__ROMENTRY14); +set_reset_data( debug_dap_rom__ROMENTRY15, val_debug_dap_rom__ROMENTRY15); +set_reset_data( debug_dap_rom__PERIPHID4, val_debug_dap_rom__PERIPHID4); +set_reset_data( debug_dap_rom__PERIPHID5, val_debug_dap_rom__PERIPHID5); +set_reset_data( debug_dap_rom__PERIPHID6, val_debug_dap_rom__PERIPHID6); +set_reset_data( debug_dap_rom__PERIPHID7, val_debug_dap_rom__PERIPHID7); +set_reset_data( debug_dap_rom__PERIPHID0, val_debug_dap_rom__PERIPHID0); +set_reset_data( debug_dap_rom__PERIPHID1, val_debug_dap_rom__PERIPHID1); +set_reset_data( debug_dap_rom__PERIPHID2, val_debug_dap_rom__PERIPHID2); +set_reset_data( debug_dap_rom__PERIPHID3, val_debug_dap_rom__PERIPHID3); +set_reset_data( debug_dap_rom__COMPID0, val_debug_dap_rom__COMPID0); +set_reset_data( debug_dap_rom__COMPID1, val_debug_dap_rom__COMPID1); +set_reset_data( debug_dap_rom__COMPID2, val_debug_dap_rom__COMPID2); +set_reset_data( debug_dap_rom__COMPID3, val_debug_dap_rom__COMPID3); + +// ************************************************************ +// Module debug_etb etb +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_etb__RDP, val_debug_etb__RDP); +set_reset_data( debug_etb__STS, val_debug_etb__STS); +set_reset_data( debug_etb__RRD, val_debug_etb__RRD); +set_reset_data( debug_etb__RRP, val_debug_etb__RRP); +set_reset_data( debug_etb__RWP, val_debug_etb__RWP); +set_reset_data( debug_etb__TRG, val_debug_etb__TRG); +set_reset_data( debug_etb__CTL, val_debug_etb__CTL); +set_reset_data( debug_etb__RWD, val_debug_etb__RWD); +set_reset_data( debug_etb__FFSR, val_debug_etb__FFSR); +set_reset_data( debug_etb__FFCR, val_debug_etb__FFCR); +set_reset_data( debug_etb__ITMISCOP0, val_debug_etb__ITMISCOP0); +set_reset_data( debug_etb__ITTRFLINACK, val_debug_etb__ITTRFLINACK); +set_reset_data( debug_etb__ITTRFLIN, val_debug_etb__ITTRFLIN); +set_reset_data( debug_etb__ITATBDATA0, val_debug_etb__ITATBDATA0); +set_reset_data( debug_etb__ITATBCTR2, val_debug_etb__ITATBCTR2); +set_reset_data( debug_etb__ITATBCTR1, val_debug_etb__ITATBCTR1); +set_reset_data( debug_etb__ITATBCTR0, val_debug_etb__ITATBCTR0); +set_reset_data( debug_etb__IMCR, val_debug_etb__IMCR); +set_reset_data( debug_etb__CTSR, val_debug_etb__CTSR); +set_reset_data( debug_etb__CTCR, val_debug_etb__CTCR); +set_reset_data( debug_etb__LAR, val_debug_etb__LAR); +set_reset_data( debug_etb__LSR, val_debug_etb__LSR); +set_reset_data( debug_etb__ASR, val_debug_etb__ASR); +set_reset_data( debug_etb__DEVID, val_debug_etb__DEVID); +set_reset_data( debug_etb__DTIR, val_debug_etb__DTIR); +set_reset_data( debug_etb__PERIPHID4, val_debug_etb__PERIPHID4); +set_reset_data( debug_etb__PERIPHID5, val_debug_etb__PERIPHID5); +set_reset_data( debug_etb__PERIPHID6, val_debug_etb__PERIPHID6); +set_reset_data( debug_etb__PERIPHID7, val_debug_etb__PERIPHID7); +set_reset_data( debug_etb__PERIPHID0, val_debug_etb__PERIPHID0); +set_reset_data( debug_etb__PERIPHID1, val_debug_etb__PERIPHID1); +set_reset_data( debug_etb__PERIPHID2, val_debug_etb__PERIPHID2); +set_reset_data( debug_etb__PERIPHID3, val_debug_etb__PERIPHID3); +set_reset_data( debug_etb__COMPID0, val_debug_etb__COMPID0); +set_reset_data( debug_etb__COMPID1, val_debug_etb__COMPID1); +set_reset_data( debug_etb__COMPID2, val_debug_etb__COMPID2); +set_reset_data( debug_etb__COMPID3, val_debug_etb__COMPID3); + +// ************************************************************ +// Module debug_ftm ftm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_ftm__FTMGLBCTRL, val_debug_ftm__FTMGLBCTRL); +set_reset_data( debug_ftm__FTMSTATUS, val_debug_ftm__FTMSTATUS); +set_reset_data( debug_ftm__FTMCONTROL, val_debug_ftm__FTMCONTROL); +set_reset_data( debug_ftm__FTMP2FDBG0, val_debug_ftm__FTMP2FDBG0); +set_reset_data( debug_ftm__FTMP2FDBG1, val_debug_ftm__FTMP2FDBG1); +set_reset_data( debug_ftm__FTMP2FDBG2, val_debug_ftm__FTMP2FDBG2); +set_reset_data( debug_ftm__FTMP2FDBG3, val_debug_ftm__FTMP2FDBG3); +set_reset_data( debug_ftm__FTMF2PDBG0, val_debug_ftm__FTMF2PDBG0); +set_reset_data( debug_ftm__FTMF2PDBG1, val_debug_ftm__FTMF2PDBG1); +set_reset_data( debug_ftm__FTMF2PDBG2, val_debug_ftm__FTMF2PDBG2); +set_reset_data( debug_ftm__FTMF2PDBG3, val_debug_ftm__FTMF2PDBG3); +set_reset_data( debug_ftm__CYCOUNTPRE, val_debug_ftm__CYCOUNTPRE); +set_reset_data( debug_ftm__FTMSYNCRELOAD, val_debug_ftm__FTMSYNCRELOAD); +set_reset_data( debug_ftm__FTMSYNCCOUT, val_debug_ftm__FTMSYNCCOUT); +set_reset_data( debug_ftm__FTMATID, val_debug_ftm__FTMATID); +set_reset_data( debug_ftm__FTMITTRIGOUTACK, val_debug_ftm__FTMITTRIGOUTACK); +set_reset_data( debug_ftm__FTMITTRIGGER, val_debug_ftm__FTMITTRIGGER); +set_reset_data( debug_ftm__FTMITTRACEDIS, val_debug_ftm__FTMITTRACEDIS); +set_reset_data( debug_ftm__FTMITCYCCOUNT, val_debug_ftm__FTMITCYCCOUNT); +set_reset_data( debug_ftm__FTMITATBDATA0, val_debug_ftm__FTMITATBDATA0); +set_reset_data( debug_ftm__FTMITATBCTR2, val_debug_ftm__FTMITATBCTR2); +set_reset_data( debug_ftm__FTMITATBCTR1, val_debug_ftm__FTMITATBCTR1); +set_reset_data( debug_ftm__FTMITATBCTR0, val_debug_ftm__FTMITATBCTR0); +set_reset_data( debug_ftm__FTMITCR, val_debug_ftm__FTMITCR); +set_reset_data( debug_ftm__CLAIMTAGSET, val_debug_ftm__CLAIMTAGSET); +set_reset_data( debug_ftm__CLAIMTAGCLR, val_debug_ftm__CLAIMTAGCLR); +set_reset_data( debug_ftm__LOCK_ACCESS, val_debug_ftm__LOCK_ACCESS); +set_reset_data( debug_ftm__LOCK_STATUS, val_debug_ftm__LOCK_STATUS); +set_reset_data( debug_ftm__FTMAUTHSTATUS, val_debug_ftm__FTMAUTHSTATUS); +set_reset_data( debug_ftm__FTMDEVID, val_debug_ftm__FTMDEVID); +set_reset_data( debug_ftm__FTMDEV_TYPE, val_debug_ftm__FTMDEV_TYPE); +set_reset_data( debug_ftm__FTMPERIPHID4, val_debug_ftm__FTMPERIPHID4); +set_reset_data( debug_ftm__FTMPERIPHID5, val_debug_ftm__FTMPERIPHID5); +set_reset_data( debug_ftm__FTMPERIPHID6, val_debug_ftm__FTMPERIPHID6); +set_reset_data( debug_ftm__FTMPERIPHID7, val_debug_ftm__FTMPERIPHID7); +set_reset_data( debug_ftm__FTMPERIPHID0, val_debug_ftm__FTMPERIPHID0); +set_reset_data( debug_ftm__FTMPERIPHID1, val_debug_ftm__FTMPERIPHID1); +set_reset_data( debug_ftm__FTMPERIPHID2, val_debug_ftm__FTMPERIPHID2); +set_reset_data( debug_ftm__FTMPERIPHID3, val_debug_ftm__FTMPERIPHID3); +set_reset_data( debug_ftm__FTMCOMPONID0, val_debug_ftm__FTMCOMPONID0); +set_reset_data( debug_ftm__FTMCOMPONID1, val_debug_ftm__FTMCOMPONID1); +set_reset_data( debug_ftm__FTMCOMPONID2, val_debug_ftm__FTMCOMPONID2); +set_reset_data( debug_ftm__FTMCOMPONID3, val_debug_ftm__FTMCOMPONID3); + +// ************************************************************ +// Module debug_funnel funnel +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_funnel__Control, val_debug_funnel__Control); +set_reset_data( debug_funnel__PriControl, val_debug_funnel__PriControl); +set_reset_data( debug_funnel__ITATBDATA0, val_debug_funnel__ITATBDATA0); +set_reset_data( debug_funnel__ITATBCTR2, val_debug_funnel__ITATBCTR2); +set_reset_data( debug_funnel__ITATBCTR1, val_debug_funnel__ITATBCTR1); +set_reset_data( debug_funnel__ITATBCTR0, val_debug_funnel__ITATBCTR0); +set_reset_data( debug_funnel__IMCR, val_debug_funnel__IMCR); +set_reset_data( debug_funnel__CTSR, val_debug_funnel__CTSR); +set_reset_data( debug_funnel__CTCR, val_debug_funnel__CTCR); +set_reset_data( debug_funnel__LAR, val_debug_funnel__LAR); +set_reset_data( debug_funnel__LSR, val_debug_funnel__LSR); +set_reset_data( debug_funnel__ASR, val_debug_funnel__ASR); +set_reset_data( debug_funnel__DEVID, val_debug_funnel__DEVID); +set_reset_data( debug_funnel__DTIR, val_debug_funnel__DTIR); +set_reset_data( debug_funnel__PERIPHID4, val_debug_funnel__PERIPHID4); +set_reset_data( debug_funnel__PERIPHID5, val_debug_funnel__PERIPHID5); +set_reset_data( debug_funnel__PERIPHID6, val_debug_funnel__PERIPHID6); +set_reset_data( debug_funnel__PERIPHID7, val_debug_funnel__PERIPHID7); +set_reset_data( debug_funnel__PERIPHID0, val_debug_funnel__PERIPHID0); +set_reset_data( debug_funnel__PERIPHID1, val_debug_funnel__PERIPHID1); +set_reset_data( debug_funnel__PERIPHID2, val_debug_funnel__PERIPHID2); +set_reset_data( debug_funnel__PERIPHID3, val_debug_funnel__PERIPHID3); +set_reset_data( debug_funnel__COMPID0, val_debug_funnel__COMPID0); +set_reset_data( debug_funnel__COMPID1, val_debug_funnel__COMPID1); +set_reset_data( debug_funnel__COMPID2, val_debug_funnel__COMPID2); +set_reset_data( debug_funnel__COMPID3, val_debug_funnel__COMPID3); + +// ************************************************************ +// Module debug_itm itm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_itm__StimPort00, val_debug_itm__StimPort00); +set_reset_data( debug_itm__StimPort01, val_debug_itm__StimPort01); +set_reset_data( debug_itm__StimPort02, val_debug_itm__StimPort02); +set_reset_data( debug_itm__StimPort03, val_debug_itm__StimPort03); +set_reset_data( debug_itm__StimPort04, val_debug_itm__StimPort04); +set_reset_data( debug_itm__StimPort05, val_debug_itm__StimPort05); +set_reset_data( debug_itm__StimPort06, val_debug_itm__StimPort06); +set_reset_data( debug_itm__StimPort07, val_debug_itm__StimPort07); +set_reset_data( debug_itm__StimPort08, val_debug_itm__StimPort08); +set_reset_data( debug_itm__StimPort09, val_debug_itm__StimPort09); +set_reset_data( debug_itm__StimPort10, val_debug_itm__StimPort10); +set_reset_data( debug_itm__StimPort11, val_debug_itm__StimPort11); +set_reset_data( debug_itm__StimPort12, val_debug_itm__StimPort12); +set_reset_data( debug_itm__StimPort13, val_debug_itm__StimPort13); +set_reset_data( debug_itm__StimPort14, val_debug_itm__StimPort14); +set_reset_data( debug_itm__StimPort15, val_debug_itm__StimPort15); +set_reset_data( debug_itm__StimPort16, val_debug_itm__StimPort16); +set_reset_data( debug_itm__StimPort17, val_debug_itm__StimPort17); +set_reset_data( debug_itm__StimPort18, val_debug_itm__StimPort18); +set_reset_data( debug_itm__StimPort19, val_debug_itm__StimPort19); +set_reset_data( debug_itm__StimPort20, val_debug_itm__StimPort20); +set_reset_data( debug_itm__StimPort21, val_debug_itm__StimPort21); +set_reset_data( debug_itm__StimPort22, val_debug_itm__StimPort22); +set_reset_data( debug_itm__StimPort23, val_debug_itm__StimPort23); +set_reset_data( debug_itm__StimPort24, val_debug_itm__StimPort24); +set_reset_data( debug_itm__StimPort25, val_debug_itm__StimPort25); +set_reset_data( debug_itm__StimPort26, val_debug_itm__StimPort26); +set_reset_data( debug_itm__StimPort27, val_debug_itm__StimPort27); +set_reset_data( debug_itm__StimPort28, val_debug_itm__StimPort28); +set_reset_data( debug_itm__StimPort29, val_debug_itm__StimPort29); +set_reset_data( debug_itm__StimPort30, val_debug_itm__StimPort30); +set_reset_data( debug_itm__StimPort31, val_debug_itm__StimPort31); +set_reset_data( debug_itm__TER, val_debug_itm__TER); +set_reset_data( debug_itm__TTR, val_debug_itm__TTR); +set_reset_data( debug_itm__CR, val_debug_itm__CR); +set_reset_data( debug_itm__SCR, val_debug_itm__SCR); +set_reset_data( debug_itm__ITTRIGOUTACK, val_debug_itm__ITTRIGOUTACK); +set_reset_data( debug_itm__ITTRIGOUT, val_debug_itm__ITTRIGOUT); +set_reset_data( debug_itm__ITATBDATA0, val_debug_itm__ITATBDATA0); +set_reset_data( debug_itm__ITATBCTR2, val_debug_itm__ITATBCTR2); +set_reset_data( debug_itm__ITATABCTR1, val_debug_itm__ITATABCTR1); +set_reset_data( debug_itm__ITATBCTR0, val_debug_itm__ITATBCTR0); +set_reset_data( debug_itm__IMCR, val_debug_itm__IMCR); +set_reset_data( debug_itm__CTSR, val_debug_itm__CTSR); +set_reset_data( debug_itm__CTCR, val_debug_itm__CTCR); +set_reset_data( debug_itm__LAR, val_debug_itm__LAR); +set_reset_data( debug_itm__LSR, val_debug_itm__LSR); +set_reset_data( debug_itm__ASR, val_debug_itm__ASR); +set_reset_data( debug_itm__DEVID, val_debug_itm__DEVID); +set_reset_data( debug_itm__DTIR, val_debug_itm__DTIR); +set_reset_data( debug_itm__PERIPHID4, val_debug_itm__PERIPHID4); +set_reset_data( debug_itm__PERIPHID5, val_debug_itm__PERIPHID5); +set_reset_data( debug_itm__PERIPHID6, val_debug_itm__PERIPHID6); +set_reset_data( debug_itm__PERIPHID7, val_debug_itm__PERIPHID7); +set_reset_data( debug_itm__PERIPHID0, val_debug_itm__PERIPHID0); +set_reset_data( debug_itm__PERIPHID1, val_debug_itm__PERIPHID1); +set_reset_data( debug_itm__PERIPHID2, val_debug_itm__PERIPHID2); +set_reset_data( debug_itm__PERIPHID3, val_debug_itm__PERIPHID3); +set_reset_data( debug_itm__COMPID0, val_debug_itm__COMPID0); +set_reset_data( debug_itm__COMPID1, val_debug_itm__COMPID1); +set_reset_data( debug_itm__COMPID2, val_debug_itm__COMPID2); +set_reset_data( debug_itm__COMPID3, val_debug_itm__COMPID3); + +// ************************************************************ +// Module debug_tpiu tpiu +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( debug_tpiu__SuppSize, val_debug_tpiu__SuppSize); +set_reset_data( debug_tpiu__CurrentSize, val_debug_tpiu__CurrentSize); +set_reset_data( debug_tpiu__SuppTrigMode, val_debug_tpiu__SuppTrigMode); +set_reset_data( debug_tpiu__TrigCount, val_debug_tpiu__TrigCount); +set_reset_data( debug_tpiu__TrigMult, val_debug_tpiu__TrigMult); +set_reset_data( debug_tpiu__SuppTest, val_debug_tpiu__SuppTest); +set_reset_data( debug_tpiu__CurrentTest, val_debug_tpiu__CurrentTest); +set_reset_data( debug_tpiu__TestRepeatCount, val_debug_tpiu__TestRepeatCount); +set_reset_data( debug_tpiu__FFSR, val_debug_tpiu__FFSR); +set_reset_data( debug_tpiu__FFCR, val_debug_tpiu__FFCR); +set_reset_data( debug_tpiu__FormatSyncCount, val_debug_tpiu__FormatSyncCount); +set_reset_data( debug_tpiu__EXTCTLIn, val_debug_tpiu__EXTCTLIn); +set_reset_data( debug_tpiu__EXTCTLOut, val_debug_tpiu__EXTCTLOut); +set_reset_data( debug_tpiu__ITTRFLINACK, val_debug_tpiu__ITTRFLINACK); +set_reset_data( debug_tpiu__ITTRFLIN, val_debug_tpiu__ITTRFLIN); +set_reset_data( debug_tpiu__ITATBDATA0, val_debug_tpiu__ITATBDATA0); +set_reset_data( debug_tpiu__ITATBCTR2, val_debug_tpiu__ITATBCTR2); +set_reset_data( debug_tpiu__ITATBCTR1, val_debug_tpiu__ITATBCTR1); +set_reset_data( debug_tpiu__ITATBCTR0, val_debug_tpiu__ITATBCTR0); +set_reset_data( debug_tpiu__IMCR, val_debug_tpiu__IMCR); +set_reset_data( debug_tpiu__CTSR, val_debug_tpiu__CTSR); +set_reset_data( debug_tpiu__CTCR, val_debug_tpiu__CTCR); +set_reset_data( debug_tpiu__LAR, val_debug_tpiu__LAR); +set_reset_data( debug_tpiu__LSR, val_debug_tpiu__LSR); +set_reset_data( debug_tpiu__ASR, val_debug_tpiu__ASR); +set_reset_data( debug_tpiu__DEVID, val_debug_tpiu__DEVID); +set_reset_data( debug_tpiu__DTIR, val_debug_tpiu__DTIR); +set_reset_data( debug_tpiu__PERIPHID4, val_debug_tpiu__PERIPHID4); +set_reset_data( debug_tpiu__PERIPHID5, val_debug_tpiu__PERIPHID5); +set_reset_data( debug_tpiu__PERIPHID6, val_debug_tpiu__PERIPHID6); +set_reset_data( debug_tpiu__PERIPHID7, val_debug_tpiu__PERIPHID7); +set_reset_data( debug_tpiu__PERIPHID0, val_debug_tpiu__PERIPHID0); +set_reset_data( debug_tpiu__PERIPHID1, val_debug_tpiu__PERIPHID1); +set_reset_data( debug_tpiu__PERIPHID2, val_debug_tpiu__PERIPHID2); +set_reset_data( debug_tpiu__PERIPHID3, val_debug_tpiu__PERIPHID3); +set_reset_data( debug_tpiu__COMPID0, val_debug_tpiu__COMPID0); +set_reset_data( debug_tpiu__COMPID1, val_debug_tpiu__COMPID1); +set_reset_data( debug_tpiu__COMPID2, val_debug_tpiu__COMPID2); +set_reset_data( debug_tpiu__COMPID3, val_debug_tpiu__COMPID3); + +// ************************************************************ +// Module devcfg devcfg +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( devcfg__CTRL, val_devcfg__CTRL); +set_reset_data( devcfg__LOCK, val_devcfg__LOCK); +set_reset_data( devcfg__CFG, val_devcfg__CFG); +set_reset_data( devcfg__INT_STS, val_devcfg__INT_STS); +set_reset_data( devcfg__INT_MASK, val_devcfg__INT_MASK); +set_reset_data( devcfg__STATUS, val_devcfg__STATUS); +set_reset_data( devcfg__DMA_SRC_ADDR, val_devcfg__DMA_SRC_ADDR); +set_reset_data( devcfg__DMA_DST_ADDR, val_devcfg__DMA_DST_ADDR); +set_reset_data( devcfg__DMA_SRC_LEN, val_devcfg__DMA_SRC_LEN); +set_reset_data( devcfg__DMA_DEST_LEN, val_devcfg__DMA_DEST_LEN); +set_reset_data( devcfg__ROM_SHADOW, val_devcfg__ROM_SHADOW); +set_reset_data( devcfg__MULTIBOOT_ADDR, val_devcfg__MULTIBOOT_ADDR); +set_reset_data( devcfg__SW_ID, val_devcfg__SW_ID); +set_reset_data( devcfg__UNLOCK, val_devcfg__UNLOCK); +set_reset_data( devcfg__MCTRL, val_devcfg__MCTRL); +set_reset_data( devcfg__XADCIF_CFG, val_devcfg__XADCIF_CFG); +set_reset_data( devcfg__XADCIF_INT_STS, val_devcfg__XADCIF_INT_STS); +set_reset_data( devcfg__XADCIF_INT_MASK, val_devcfg__XADCIF_INT_MASK); +set_reset_data( devcfg__XADCIF_MSTS, val_devcfg__XADCIF_MSTS); +set_reset_data( devcfg__XADCIF_CMDFIFO, val_devcfg__XADCIF_CMDFIFO); +set_reset_data( devcfg__XADCIF_RDFIFO, val_devcfg__XADCIF_RDFIFO); +set_reset_data( devcfg__XADCIF_MCTL, val_devcfg__XADCIF_MCTL); + +// ************************************************************ +// Module dmac0_ns dmac +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( dmac0_ns__DSR, val_dmac0_ns__DSR); +set_reset_data( dmac0_ns__DPC, val_dmac0_ns__DPC); +set_reset_data( dmac0_ns__INTEN, val_dmac0_ns__INTEN); +set_reset_data( dmac0_ns__INT_EVENT_RIS, val_dmac0_ns__INT_EVENT_RIS); +set_reset_data( dmac0_ns__INTMIS, val_dmac0_ns__INTMIS); +set_reset_data( dmac0_ns__INTCLR, val_dmac0_ns__INTCLR); +set_reset_data( dmac0_ns__FSRD, val_dmac0_ns__FSRD); +set_reset_data( dmac0_ns__FSRC, val_dmac0_ns__FSRC); +set_reset_data( dmac0_ns__FTRD, val_dmac0_ns__FTRD); +set_reset_data( dmac0_ns__FTR0, val_dmac0_ns__FTR0); +set_reset_data( dmac0_ns__FTR1, val_dmac0_ns__FTR1); +set_reset_data( dmac0_ns__FTR2, val_dmac0_ns__FTR2); +set_reset_data( dmac0_ns__FTR3, val_dmac0_ns__FTR3); +set_reset_data( dmac0_ns__FTR4, val_dmac0_ns__FTR4); +set_reset_data( dmac0_ns__FTR5, val_dmac0_ns__FTR5); +set_reset_data( dmac0_ns__FTR6, val_dmac0_ns__FTR6); +set_reset_data( dmac0_ns__FTR7, val_dmac0_ns__FTR7); +set_reset_data( dmac0_ns__CSR0, val_dmac0_ns__CSR0); +set_reset_data( dmac0_ns__CPC0, val_dmac0_ns__CPC0); +set_reset_data( dmac0_ns__CSR1, val_dmac0_ns__CSR1); +set_reset_data( dmac0_ns__CPC1, val_dmac0_ns__CPC1); +set_reset_data( dmac0_ns__CSR2, val_dmac0_ns__CSR2); +set_reset_data( dmac0_ns__CPC2, val_dmac0_ns__CPC2); +set_reset_data( dmac0_ns__CSR3, val_dmac0_ns__CSR3); +set_reset_data( dmac0_ns__CPC3, val_dmac0_ns__CPC3); +set_reset_data( dmac0_ns__CSR4, val_dmac0_ns__CSR4); +set_reset_data( dmac0_ns__CPC4, val_dmac0_ns__CPC4); +set_reset_data( dmac0_ns__CSR5, val_dmac0_ns__CSR5); +set_reset_data( dmac0_ns__CPC5, val_dmac0_ns__CPC5); +set_reset_data( dmac0_ns__CSR6, val_dmac0_ns__CSR6); +set_reset_data( dmac0_ns__CPC6, val_dmac0_ns__CPC6); +set_reset_data( dmac0_ns__CSR7, val_dmac0_ns__CSR7); +set_reset_data( dmac0_ns__CPC7, val_dmac0_ns__CPC7); +set_reset_data( dmac0_ns__SAR0, val_dmac0_ns__SAR0); +set_reset_data( dmac0_ns__DAR0, val_dmac0_ns__DAR0); +set_reset_data( dmac0_ns__CCR0, val_dmac0_ns__CCR0); +set_reset_data( dmac0_ns__LC0_0, val_dmac0_ns__LC0_0); +set_reset_data( dmac0_ns__LC1_0, val_dmac0_ns__LC1_0); +set_reset_data( dmac0_ns__SAR1, val_dmac0_ns__SAR1); +set_reset_data( dmac0_ns__DAR1, val_dmac0_ns__DAR1); +set_reset_data( dmac0_ns__CCR1, val_dmac0_ns__CCR1); +set_reset_data( dmac0_ns__LC0_1, val_dmac0_ns__LC0_1); +set_reset_data( dmac0_ns__LC1_1, val_dmac0_ns__LC1_1); +set_reset_data( dmac0_ns__SAR2, val_dmac0_ns__SAR2); +set_reset_data( dmac0_ns__DAR2, val_dmac0_ns__DAR2); +set_reset_data( dmac0_ns__CCR2, val_dmac0_ns__CCR2); +set_reset_data( dmac0_ns__LC0_2, val_dmac0_ns__LC0_2); +set_reset_data( dmac0_ns__LC1_2, val_dmac0_ns__LC1_2); +set_reset_data( dmac0_ns__SAR3, val_dmac0_ns__SAR3); +set_reset_data( dmac0_ns__DAR3, val_dmac0_ns__DAR3); +set_reset_data( dmac0_ns__CCR3, val_dmac0_ns__CCR3); +set_reset_data( dmac0_ns__LC0_3, val_dmac0_ns__LC0_3); +set_reset_data( dmac0_ns__LC1_3, val_dmac0_ns__LC1_3); +set_reset_data( dmac0_ns__SAR4, val_dmac0_ns__SAR4); +set_reset_data( dmac0_ns__DAR4, val_dmac0_ns__DAR4); +set_reset_data( dmac0_ns__CCR4, val_dmac0_ns__CCR4); +set_reset_data( dmac0_ns__LC0_4, val_dmac0_ns__LC0_4); +set_reset_data( dmac0_ns__LC1_4, val_dmac0_ns__LC1_4); +set_reset_data( dmac0_ns__SAR5, val_dmac0_ns__SAR5); +set_reset_data( dmac0_ns__DAR5, val_dmac0_ns__DAR5); +set_reset_data( dmac0_ns__CCR5, val_dmac0_ns__CCR5); +set_reset_data( dmac0_ns__LC0_5, val_dmac0_ns__LC0_5); +set_reset_data( dmac0_ns__LC1_5, val_dmac0_ns__LC1_5); +set_reset_data( dmac0_ns__SAR6, val_dmac0_ns__SAR6); +set_reset_data( dmac0_ns__DAR6, val_dmac0_ns__DAR6); +set_reset_data( dmac0_ns__CCR6, val_dmac0_ns__CCR6); +set_reset_data( dmac0_ns__LC0_6, val_dmac0_ns__LC0_6); +set_reset_data( dmac0_ns__LC1_6, val_dmac0_ns__LC1_6); +set_reset_data( dmac0_ns__SAR7, val_dmac0_ns__SAR7); +set_reset_data( dmac0_ns__DAR7, val_dmac0_ns__DAR7); +set_reset_data( dmac0_ns__CCR7, val_dmac0_ns__CCR7); +set_reset_data( dmac0_ns__LC0_7, val_dmac0_ns__LC0_7); +set_reset_data( dmac0_ns__LC1_7, val_dmac0_ns__LC1_7); +set_reset_data( dmac0_ns__DBGSTATUS, val_dmac0_ns__DBGSTATUS); +set_reset_data( dmac0_ns__DBGCMD, val_dmac0_ns__DBGCMD); +set_reset_data( dmac0_ns__DBGINST0, val_dmac0_ns__DBGINST0); +set_reset_data( dmac0_ns__DBGINST1, val_dmac0_ns__DBGINST1); +set_reset_data( dmac0_ns__CR0, val_dmac0_ns__CR0); +set_reset_data( dmac0_ns__CR1, val_dmac0_ns__CR1); +set_reset_data( dmac0_ns__CR2, val_dmac0_ns__CR2); +set_reset_data( dmac0_ns__CR3, val_dmac0_ns__CR3); +set_reset_data( dmac0_ns__CR4, val_dmac0_ns__CR4); +set_reset_data( dmac0_ns__CRD, val_dmac0_ns__CRD); +set_reset_data( dmac0_ns__WD, val_dmac0_ns__WD); +set_reset_data( dmac0_ns__periph_id_0, val_dmac0_ns__periph_id_0); +set_reset_data( dmac0_ns__periph_id_1, val_dmac0_ns__periph_id_1); +set_reset_data( dmac0_ns__periph_id_2, val_dmac0_ns__periph_id_2); +set_reset_data( dmac0_ns__periph_id_3, val_dmac0_ns__periph_id_3); +set_reset_data( dmac0_ns__pcell_id_0, val_dmac0_ns__pcell_id_0); +set_reset_data( dmac0_ns__pcell_id_1, val_dmac0_ns__pcell_id_1); +set_reset_data( dmac0_ns__pcell_id_2, val_dmac0_ns__pcell_id_2); +set_reset_data( dmac0_ns__pcell_id_3, val_dmac0_ns__pcell_id_3); + +// ************************************************************ +// Module dmac0_s dmac +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( dmac0_s__DSR, val_dmac0_s__DSR); +set_reset_data( dmac0_s__DPC, val_dmac0_s__DPC); +set_reset_data( dmac0_s__INTEN, val_dmac0_s__INTEN); +set_reset_data( dmac0_s__INT_EVENT_RIS, val_dmac0_s__INT_EVENT_RIS); +set_reset_data( dmac0_s__INTMIS, val_dmac0_s__INTMIS); +set_reset_data( dmac0_s__INTCLR, val_dmac0_s__INTCLR); +set_reset_data( dmac0_s__FSRD, val_dmac0_s__FSRD); +set_reset_data( dmac0_s__FSRC, val_dmac0_s__FSRC); +set_reset_data( dmac0_s__FTRD, val_dmac0_s__FTRD); +set_reset_data( dmac0_s__FTR0, val_dmac0_s__FTR0); +set_reset_data( dmac0_s__FTR1, val_dmac0_s__FTR1); +set_reset_data( dmac0_s__FTR2, val_dmac0_s__FTR2); +set_reset_data( dmac0_s__FTR3, val_dmac0_s__FTR3); +set_reset_data( dmac0_s__FTR4, val_dmac0_s__FTR4); +set_reset_data( dmac0_s__FTR5, val_dmac0_s__FTR5); +set_reset_data( dmac0_s__FTR6, val_dmac0_s__FTR6); +set_reset_data( dmac0_s__FTR7, val_dmac0_s__FTR7); +set_reset_data( dmac0_s__CSR0, val_dmac0_s__CSR0); +set_reset_data( dmac0_s__CPC0, val_dmac0_s__CPC0); +set_reset_data( dmac0_s__CSR1, val_dmac0_s__CSR1); +set_reset_data( dmac0_s__CPC1, val_dmac0_s__CPC1); +set_reset_data( dmac0_s__CSR2, val_dmac0_s__CSR2); +set_reset_data( dmac0_s__CPC2, val_dmac0_s__CPC2); +set_reset_data( dmac0_s__CSR3, val_dmac0_s__CSR3); +set_reset_data( dmac0_s__CPC3, val_dmac0_s__CPC3); +set_reset_data( dmac0_s__CSR4, val_dmac0_s__CSR4); +set_reset_data( dmac0_s__CPC4, val_dmac0_s__CPC4); +set_reset_data( dmac0_s__CSR5, val_dmac0_s__CSR5); +set_reset_data( dmac0_s__CPC5, val_dmac0_s__CPC5); +set_reset_data( dmac0_s__CSR6, val_dmac0_s__CSR6); +set_reset_data( dmac0_s__CPC6, val_dmac0_s__CPC6); +set_reset_data( dmac0_s__CSR7, val_dmac0_s__CSR7); +set_reset_data( dmac0_s__CPC7, val_dmac0_s__CPC7); +set_reset_data( dmac0_s__SAR0, val_dmac0_s__SAR0); +set_reset_data( dmac0_s__DAR0, val_dmac0_s__DAR0); +set_reset_data( dmac0_s__CCR0, val_dmac0_s__CCR0); +set_reset_data( dmac0_s__LC0_0, val_dmac0_s__LC0_0); +set_reset_data( dmac0_s__LC1_0, val_dmac0_s__LC1_0); +set_reset_data( dmac0_s__SAR1, val_dmac0_s__SAR1); +set_reset_data( dmac0_s__DAR1, val_dmac0_s__DAR1); +set_reset_data( dmac0_s__CCR1, val_dmac0_s__CCR1); +set_reset_data( dmac0_s__LC0_1, val_dmac0_s__LC0_1); +set_reset_data( dmac0_s__LC1_1, val_dmac0_s__LC1_1); +set_reset_data( dmac0_s__SAR2, val_dmac0_s__SAR2); +set_reset_data( dmac0_s__DAR2, val_dmac0_s__DAR2); +set_reset_data( dmac0_s__CCR2, val_dmac0_s__CCR2); +set_reset_data( dmac0_s__LC0_2, val_dmac0_s__LC0_2); +set_reset_data( dmac0_s__LC1_2, val_dmac0_s__LC1_2); +set_reset_data( dmac0_s__SAR3, val_dmac0_s__SAR3); +set_reset_data( dmac0_s__DAR3, val_dmac0_s__DAR3); +set_reset_data( dmac0_s__CCR3, val_dmac0_s__CCR3); +set_reset_data( dmac0_s__LC0_3, val_dmac0_s__LC0_3); +set_reset_data( dmac0_s__LC1_3, val_dmac0_s__LC1_3); +set_reset_data( dmac0_s__SAR4, val_dmac0_s__SAR4); +set_reset_data( dmac0_s__DAR4, val_dmac0_s__DAR4); +set_reset_data( dmac0_s__CCR4, val_dmac0_s__CCR4); +set_reset_data( dmac0_s__LC0_4, val_dmac0_s__LC0_4); +set_reset_data( dmac0_s__LC1_4, val_dmac0_s__LC1_4); +set_reset_data( dmac0_s__SAR5, val_dmac0_s__SAR5); +set_reset_data( dmac0_s__DAR5, val_dmac0_s__DAR5); +set_reset_data( dmac0_s__CCR5, val_dmac0_s__CCR5); +set_reset_data( dmac0_s__LC0_5, val_dmac0_s__LC0_5); +set_reset_data( dmac0_s__LC1_5, val_dmac0_s__LC1_5); +set_reset_data( dmac0_s__SAR6, val_dmac0_s__SAR6); +set_reset_data( dmac0_s__DAR6, val_dmac0_s__DAR6); +set_reset_data( dmac0_s__CCR6, val_dmac0_s__CCR6); +set_reset_data( dmac0_s__LC0_6, val_dmac0_s__LC0_6); +set_reset_data( dmac0_s__LC1_6, val_dmac0_s__LC1_6); +set_reset_data( dmac0_s__SAR7, val_dmac0_s__SAR7); +set_reset_data( dmac0_s__DAR7, val_dmac0_s__DAR7); +set_reset_data( dmac0_s__CCR7, val_dmac0_s__CCR7); +set_reset_data( dmac0_s__LC0_7, val_dmac0_s__LC0_7); +set_reset_data( dmac0_s__LC1_7, val_dmac0_s__LC1_7); +set_reset_data( dmac0_s__DBGSTATUS, val_dmac0_s__DBGSTATUS); +set_reset_data( dmac0_s__DBGCMD, val_dmac0_s__DBGCMD); +set_reset_data( dmac0_s__DBGINST0, val_dmac0_s__DBGINST0); +set_reset_data( dmac0_s__DBGINST1, val_dmac0_s__DBGINST1); +set_reset_data( dmac0_s__CR0, val_dmac0_s__CR0); +set_reset_data( dmac0_s__CR1, val_dmac0_s__CR1); +set_reset_data( dmac0_s__CR2, val_dmac0_s__CR2); +set_reset_data( dmac0_s__CR3, val_dmac0_s__CR3); +set_reset_data( dmac0_s__CR4, val_dmac0_s__CR4); +set_reset_data( dmac0_s__CRD, val_dmac0_s__CRD); +set_reset_data( dmac0_s__WD, val_dmac0_s__WD); +set_reset_data( dmac0_s__periph_id_0, val_dmac0_s__periph_id_0); +set_reset_data( dmac0_s__periph_id_1, val_dmac0_s__periph_id_1); +set_reset_data( dmac0_s__periph_id_2, val_dmac0_s__periph_id_2); +set_reset_data( dmac0_s__periph_id_3, val_dmac0_s__periph_id_3); +set_reset_data( dmac0_s__pcell_id_0, val_dmac0_s__pcell_id_0); +set_reset_data( dmac0_s__pcell_id_1, val_dmac0_s__pcell_id_1); +set_reset_data( dmac0_s__pcell_id_2, val_dmac0_s__pcell_id_2); +set_reset_data( dmac0_s__pcell_id_3, val_dmac0_s__pcell_id_3); + +// ************************************************************ +// Module efuse_ctrl efuse_ctrl +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( efuse_ctrl__WR_LOCK, val_efuse_ctrl__WR_LOCK); +set_reset_data( efuse_ctrl__WR_UNLOCK, val_efuse_ctrl__WR_UNLOCK); +set_reset_data( efuse_ctrl__WR_LOCKSTA, val_efuse_ctrl__WR_LOCKSTA); +set_reset_data( efuse_ctrl__CFG, val_efuse_ctrl__CFG); +set_reset_data( efuse_ctrl__STATUS, val_efuse_ctrl__STATUS); +set_reset_data( efuse_ctrl__CONTROL, val_efuse_ctrl__CONTROL); +set_reset_data( efuse_ctrl__PGM_STBW, val_efuse_ctrl__PGM_STBW); +set_reset_data( efuse_ctrl__RD_STBW, val_efuse_ctrl__RD_STBW); + +// ************************************************************ +// Module gem0 GEM +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gem0__net_ctrl, val_gem0__net_ctrl); +set_reset_data( gem0__net_cfg, val_gem0__net_cfg); +set_reset_data( gem0__net_status, val_gem0__net_status); +set_reset_data( gem0__user_io, val_gem0__user_io); +set_reset_data( gem0__dma_cfg, val_gem0__dma_cfg); +set_reset_data( gem0__tx_status, val_gem0__tx_status); +set_reset_data( gem0__rx_qbar, val_gem0__rx_qbar); +set_reset_data( gem0__tx_qbar, val_gem0__tx_qbar); +set_reset_data( gem0__rx_status, val_gem0__rx_status); +set_reset_data( gem0__intr_status, val_gem0__intr_status); +set_reset_data( gem0__intr_en, val_gem0__intr_en); +set_reset_data( gem0__intr_dis, val_gem0__intr_dis); +set_reset_data( gem0__intr_mask, val_gem0__intr_mask); +set_reset_data( gem0__phy_maint, val_gem0__phy_maint); +set_reset_data( gem0__rx_pauseq, val_gem0__rx_pauseq); +set_reset_data( gem0__tx_pauseq, val_gem0__tx_pauseq); +set_reset_data( gem0__tx_partial_st_fwd, val_gem0__tx_partial_st_fwd); +set_reset_data( gem0__rx_partial_st_fwd, val_gem0__rx_partial_st_fwd); +set_reset_data( gem0__hash_bot, val_gem0__hash_bot); +set_reset_data( gem0__hash_top, val_gem0__hash_top); +set_reset_data( gem0__spec_addr1_bot, val_gem0__spec_addr1_bot); +set_reset_data( gem0__spec_addr1_top, val_gem0__spec_addr1_top); +set_reset_data( gem0__spec_addr2_bot, val_gem0__spec_addr2_bot); +set_reset_data( gem0__spec_addr2_top, val_gem0__spec_addr2_top); +set_reset_data( gem0__spec_addr3_bot, val_gem0__spec_addr3_bot); +set_reset_data( gem0__spec_addr3_top, val_gem0__spec_addr3_top); +set_reset_data( gem0__spec_addr4_bot, val_gem0__spec_addr4_bot); +set_reset_data( gem0__spec_addr4_top, val_gem0__spec_addr4_top); +set_reset_data( gem0__type_id_match1, val_gem0__type_id_match1); +set_reset_data( gem0__type_id_match2, val_gem0__type_id_match2); +set_reset_data( gem0__type_id_match3, val_gem0__type_id_match3); +set_reset_data( gem0__type_id_match4, val_gem0__type_id_match4); +set_reset_data( gem0__wake_on_lan, val_gem0__wake_on_lan); +set_reset_data( gem0__ipg_stretch, val_gem0__ipg_stretch); +set_reset_data( gem0__stacked_vlan, val_gem0__stacked_vlan); +set_reset_data( gem0__tx_pfc_pause, val_gem0__tx_pfc_pause); +set_reset_data( gem0__spec_addr1_mask_bot, val_gem0__spec_addr1_mask_bot); +set_reset_data( gem0__spec_addr1_mask_top, val_gem0__spec_addr1_mask_top); +set_reset_data( gem0__module_id, val_gem0__module_id); +set_reset_data( gem0__octets_tx_bot, val_gem0__octets_tx_bot); +set_reset_data( gem0__octets_tx_top, val_gem0__octets_tx_top); +set_reset_data( gem0__frames_tx, val_gem0__frames_tx); +set_reset_data( gem0__broadcast_frames_tx, val_gem0__broadcast_frames_tx); +set_reset_data( gem0__multi_frames_tx, val_gem0__multi_frames_tx); +set_reset_data( gem0__pause_frames_tx, val_gem0__pause_frames_tx); +set_reset_data( gem0__frames_64b_tx, val_gem0__frames_64b_tx); +set_reset_data( gem0__frames_65to127b_tx, val_gem0__frames_65to127b_tx); +set_reset_data( gem0__frames_128to255b_tx, val_gem0__frames_128to255b_tx); +set_reset_data( gem0__frames_256to511b_tx, val_gem0__frames_256to511b_tx); +set_reset_data( gem0__frames_512to1023b_tx, val_gem0__frames_512to1023b_tx); +set_reset_data( gem0__frames_1024to1518b_tx, val_gem0__frames_1024to1518b_tx); +set_reset_data( gem0__frames_gt1518b_tx, val_gem0__frames_gt1518b_tx); +set_reset_data( gem0__tx_under_runs, val_gem0__tx_under_runs); +set_reset_data( gem0__single_collisn_frames, val_gem0__single_collisn_frames); +set_reset_data( gem0__multi_collisn_frames, val_gem0__multi_collisn_frames); +set_reset_data( gem0__excessive_collisns, val_gem0__excessive_collisns); +set_reset_data( gem0__late_collisns, val_gem0__late_collisns); +set_reset_data( gem0__deferred_tx_frames, val_gem0__deferred_tx_frames); +set_reset_data( gem0__carrier_sense_errs, val_gem0__carrier_sense_errs); +set_reset_data( gem0__octets_rx_bot, val_gem0__octets_rx_bot); +set_reset_data( gem0__octets_rx_top, val_gem0__octets_rx_top); +set_reset_data( gem0__frames_rx, val_gem0__frames_rx); +set_reset_data( gem0__bdcast_fames_rx, val_gem0__bdcast_fames_rx); +set_reset_data( gem0__multi_frames_rx, val_gem0__multi_frames_rx); +set_reset_data( gem0__pause_rx, val_gem0__pause_rx); +set_reset_data( gem0__frames_64b_rx, val_gem0__frames_64b_rx); +set_reset_data( gem0__frames_65to127b_rx, val_gem0__frames_65to127b_rx); +set_reset_data( gem0__frames_128to255b_rx, val_gem0__frames_128to255b_rx); +set_reset_data( gem0__frames_256to511b_rx, val_gem0__frames_256to511b_rx); +set_reset_data( gem0__frames_512to1023b_rx, val_gem0__frames_512to1023b_rx); +set_reset_data( gem0__frames_1024to1518b_rx, val_gem0__frames_1024to1518b_rx); +set_reset_data( gem0__frames_gt1518b_rx, val_gem0__frames_gt1518b_rx); +set_reset_data( gem0__undersz_rx, val_gem0__undersz_rx); +set_reset_data( gem0__oversz_rx, val_gem0__oversz_rx); +set_reset_data( gem0__jab_rx, val_gem0__jab_rx); +set_reset_data( gem0__fcs_errors, val_gem0__fcs_errors); +set_reset_data( gem0__length_field_errors, val_gem0__length_field_errors); +set_reset_data( gem0__rx_symbol_errors, val_gem0__rx_symbol_errors); +set_reset_data( gem0__align_errors, val_gem0__align_errors); +set_reset_data( gem0__rx_resource_errors, val_gem0__rx_resource_errors); +set_reset_data( gem0__rx_overrun_errors, val_gem0__rx_overrun_errors); +set_reset_data( gem0__ip_hdr_csum_errors, val_gem0__ip_hdr_csum_errors); +set_reset_data( gem0__tcp_csum_errors, val_gem0__tcp_csum_errors); +set_reset_data( gem0__udp_csum_errors, val_gem0__udp_csum_errors); +set_reset_data( gem0__timer_strobe_s, val_gem0__timer_strobe_s); +set_reset_data( gem0__timer_strobe_ns, val_gem0__timer_strobe_ns); +set_reset_data( gem0__timer_s, val_gem0__timer_s); +set_reset_data( gem0__timer_ns, val_gem0__timer_ns); +set_reset_data( gem0__timer_adjust, val_gem0__timer_adjust); +set_reset_data( gem0__timer_incr, val_gem0__timer_incr); +set_reset_data( gem0__ptp_tx_s, val_gem0__ptp_tx_s); +set_reset_data( gem0__ptp_tx_ns, val_gem0__ptp_tx_ns); +set_reset_data( gem0__ptp_rx_s, val_gem0__ptp_rx_s); +set_reset_data( gem0__ptp_rx_ns, val_gem0__ptp_rx_ns); +set_reset_data( gem0__ptp_peer_tx_s, val_gem0__ptp_peer_tx_s); +set_reset_data( gem0__ptp_peer_tx_ns, val_gem0__ptp_peer_tx_ns); +set_reset_data( gem0__ptp_peer_rx_s, val_gem0__ptp_peer_rx_s); +set_reset_data( gem0__ptp_peer_rx_ns, val_gem0__ptp_peer_rx_ns); +set_reset_data( gem0__pcs_ctrl, val_gem0__pcs_ctrl); +set_reset_data( gem0__pcs_status, val_gem0__pcs_status); +set_reset_data( gem0__pcs_upper_phy_id, val_gem0__pcs_upper_phy_id); +set_reset_data( gem0__pcs_lower_phy_id, val_gem0__pcs_lower_phy_id); +set_reset_data( gem0__pcs_autoneg_ad, val_gem0__pcs_autoneg_ad); +set_reset_data( gem0__pcs_autoneg_ability, val_gem0__pcs_autoneg_ability); +set_reset_data( gem0__pcs_autonec_exp, val_gem0__pcs_autonec_exp); +set_reset_data( gem0__pcs_autoneg_next_pg, val_gem0__pcs_autoneg_next_pg); +set_reset_data( gem0__pcs_autoneg_pnext_pg, val_gem0__pcs_autoneg_pnext_pg); +set_reset_data( gem0__pcs_extended_status, val_gem0__pcs_extended_status); +set_reset_data( gem0__design_cfg1, val_gem0__design_cfg1); +set_reset_data( gem0__design_cfg2, val_gem0__design_cfg2); +set_reset_data( gem0__design_cfg3, val_gem0__design_cfg3); +set_reset_data( gem0__design_cfg4, val_gem0__design_cfg4); +set_reset_data( gem0__design_cfg5, val_gem0__design_cfg5); +set_reset_data( gem0__design_cfg6, val_gem0__design_cfg6); +set_reset_data( gem0__design_cfg7, val_gem0__design_cfg7); +set_reset_data( gem0__isr_pq1, val_gem0__isr_pq1); +set_reset_data( gem0__isr_pq2, val_gem0__isr_pq2); +set_reset_data( gem0__isr_pq3, val_gem0__isr_pq3); +set_reset_data( gem0__isr_pq4, val_gem0__isr_pq4); +set_reset_data( gem0__isr_pq5, val_gem0__isr_pq5); +set_reset_data( gem0__isr_pq6, val_gem0__isr_pq6); +set_reset_data( gem0__isr_pq7, val_gem0__isr_pq7); +set_reset_data( gem0__tx_qbar_q1, val_gem0__tx_qbar_q1); +set_reset_data( gem0__tx_qbar_q2, val_gem0__tx_qbar_q2); +set_reset_data( gem0__tx_qbar_q3, val_gem0__tx_qbar_q3); +set_reset_data( gem0__tx_qbar_q4, val_gem0__tx_qbar_q4); +set_reset_data( gem0__tx_qbar_q5, val_gem0__tx_qbar_q5); +set_reset_data( gem0__tx_qbar_q6, val_gem0__tx_qbar_q6); +set_reset_data( gem0__tx_qbar_q7, val_gem0__tx_qbar_q7); +set_reset_data( gem0__rx_qbar_q1, val_gem0__rx_qbar_q1); +set_reset_data( gem0__rx_qbar_q2, val_gem0__rx_qbar_q2); +set_reset_data( gem0__rx_qbar_q3, val_gem0__rx_qbar_q3); +set_reset_data( gem0__rx_qbar_q4, val_gem0__rx_qbar_q4); +set_reset_data( gem0__rx_qbar_q5, val_gem0__rx_qbar_q5); +set_reset_data( gem0__rx_qbar_q6, val_gem0__rx_qbar_q6); +set_reset_data( gem0__rx_qbar_q7, val_gem0__rx_qbar_q7); +set_reset_data( gem0__rx_bufsz_q1, val_gem0__rx_bufsz_q1); +set_reset_data( gem0__rx_bufsz_q2, val_gem0__rx_bufsz_q2); +set_reset_data( gem0__rx_bufsz_q3, val_gem0__rx_bufsz_q3); +set_reset_data( gem0__rx_bufsz_q4, val_gem0__rx_bufsz_q4); +set_reset_data( gem0__rx_bufsz_q5, val_gem0__rx_bufsz_q5); +set_reset_data( gem0__rx_bufsz_q6, val_gem0__rx_bufsz_q6); +set_reset_data( gem0__rx_bufsz_q7, val_gem0__rx_bufsz_q7); +set_reset_data( gem0__screen_t1_r0, val_gem0__screen_t1_r0); +set_reset_data( gem0__screen_t1_r1, val_gem0__screen_t1_r1); +set_reset_data( gem0__screen_t1_r2, val_gem0__screen_t1_r2); +set_reset_data( gem0__screen_t1_r3, val_gem0__screen_t1_r3); +set_reset_data( gem0__screen_t1_r4, val_gem0__screen_t1_r4); +set_reset_data( gem0__screen_t1_r5, val_gem0__screen_t1_r5); +set_reset_data( gem0__screen_t1_r6, val_gem0__screen_t1_r6); +set_reset_data( gem0__screen_t1_r7, val_gem0__screen_t1_r7); +set_reset_data( gem0__screen_t1_r8, val_gem0__screen_t1_r8); +set_reset_data( gem0__screen_t1_r9, val_gem0__screen_t1_r9); +set_reset_data( gem0__screen_t1_r10, val_gem0__screen_t1_r10); +set_reset_data( gem0__screen_t1_r11, val_gem0__screen_t1_r11); +set_reset_data( gem0__screen_t1_r12, val_gem0__screen_t1_r12); +set_reset_data( gem0__screen_t1_r13, val_gem0__screen_t1_r13); +set_reset_data( gem0__screen_t1_r14, val_gem0__screen_t1_r14); +set_reset_data( gem0__screen_t1_r15, val_gem0__screen_t1_r15); +set_reset_data( gem0__screen_t2_r0, val_gem0__screen_t2_r0); +set_reset_data( gem0__screen_t2_r1, val_gem0__screen_t2_r1); +set_reset_data( gem0__screen_t2_r2, val_gem0__screen_t2_r2); +set_reset_data( gem0__screen_t2_r3, val_gem0__screen_t2_r3); +set_reset_data( gem0__screen_t2_r4, val_gem0__screen_t2_r4); +set_reset_data( gem0__screen_t2_r5, val_gem0__screen_t2_r5); +set_reset_data( gem0__screen_t2_r6, val_gem0__screen_t2_r6); +set_reset_data( gem0__screen_t2_r7, val_gem0__screen_t2_r7); +set_reset_data( gem0__screen_t2_r8, val_gem0__screen_t2_r8); +set_reset_data( gem0__screen_t2_r9, val_gem0__screen_t2_r9); +set_reset_data( gem0__screen_t2_r10, val_gem0__screen_t2_r10); +set_reset_data( gem0__screen_t2_r11, val_gem0__screen_t2_r11); +set_reset_data( gem0__screen_t2_r12, val_gem0__screen_t2_r12); +set_reset_data( gem0__screen_t2_r13, val_gem0__screen_t2_r13); +set_reset_data( gem0__screen_t2_r14, val_gem0__screen_t2_r14); +set_reset_data( gem0__screen_t2_r15, val_gem0__screen_t2_r15); +set_reset_data( gem0__intr_en_pq1, val_gem0__intr_en_pq1); +set_reset_data( gem0__intr_en_pq2, val_gem0__intr_en_pq2); +set_reset_data( gem0__intr_en_pq3, val_gem0__intr_en_pq3); +set_reset_data( gem0__intr_en_pq4, val_gem0__intr_en_pq4); +set_reset_data( gem0__intr_en_pq5, val_gem0__intr_en_pq5); +set_reset_data( gem0__intr_en_pq6, val_gem0__intr_en_pq6); +set_reset_data( gem0__intr_en_pq7, val_gem0__intr_en_pq7); +set_reset_data( gem0__intr_dis_pq1, val_gem0__intr_dis_pq1); +set_reset_data( gem0__intr_dis_pq2, val_gem0__intr_dis_pq2); +set_reset_data( gem0__intr_dis_pq3, val_gem0__intr_dis_pq3); +set_reset_data( gem0__intr_dis_pq4, val_gem0__intr_dis_pq4); +set_reset_data( gem0__intr_dis_pq5, val_gem0__intr_dis_pq5); +set_reset_data( gem0__intr_dis_pq6, val_gem0__intr_dis_pq6); +set_reset_data( gem0__intr_dis_pq7, val_gem0__intr_dis_pq7); +set_reset_data( gem0__intr_mask_pq1, val_gem0__intr_mask_pq1); +set_reset_data( gem0__intr_mask_pq2, val_gem0__intr_mask_pq2); +set_reset_data( gem0__intr_mask_pq3, val_gem0__intr_mask_pq3); +set_reset_data( gem0__intr_mask_pq4, val_gem0__intr_mask_pq4); +set_reset_data( gem0__intr_mask_pq5, val_gem0__intr_mask_pq5); +set_reset_data( gem0__intr_mask_pq6, val_gem0__intr_mask_pq6); +set_reset_data( gem0__intr_mask_pq7, val_gem0__intr_mask_pq7); + +// ************************************************************ +// Module gem1 GEM +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gem1__net_ctrl, val_gem1__net_ctrl); +set_reset_data( gem1__net_cfg, val_gem1__net_cfg); +set_reset_data( gem1__net_status, val_gem1__net_status); +set_reset_data( gem1__user_io, val_gem1__user_io); +set_reset_data( gem1__dma_cfg, val_gem1__dma_cfg); +set_reset_data( gem1__tx_status, val_gem1__tx_status); +set_reset_data( gem1__rx_qbar, val_gem1__rx_qbar); +set_reset_data( gem1__tx_qbar, val_gem1__tx_qbar); +set_reset_data( gem1__rx_status, val_gem1__rx_status); +set_reset_data( gem1__intr_status, val_gem1__intr_status); +set_reset_data( gem1__intr_en, val_gem1__intr_en); +set_reset_data( gem1__intr_dis, val_gem1__intr_dis); +set_reset_data( gem1__intr_mask, val_gem1__intr_mask); +set_reset_data( gem1__phy_maint, val_gem1__phy_maint); +set_reset_data( gem1__rx_pauseq, val_gem1__rx_pauseq); +set_reset_data( gem1__tx_pauseq, val_gem1__tx_pauseq); +set_reset_data( gem1__tx_partial_st_fwd, val_gem1__tx_partial_st_fwd); +set_reset_data( gem1__rx_partial_st_fwd, val_gem1__rx_partial_st_fwd); +set_reset_data( gem1__hash_bot, val_gem1__hash_bot); +set_reset_data( gem1__hash_top, val_gem1__hash_top); +set_reset_data( gem1__spec_addr1_bot, val_gem1__spec_addr1_bot); +set_reset_data( gem1__spec_addr1_top, val_gem1__spec_addr1_top); +set_reset_data( gem1__spec_addr2_bot, val_gem1__spec_addr2_bot); +set_reset_data( gem1__spec_addr2_top, val_gem1__spec_addr2_top); +set_reset_data( gem1__spec_addr3_bot, val_gem1__spec_addr3_bot); +set_reset_data( gem1__spec_addr3_top, val_gem1__spec_addr3_top); +set_reset_data( gem1__spec_addr4_bot, val_gem1__spec_addr4_bot); +set_reset_data( gem1__spec_addr4_top, val_gem1__spec_addr4_top); +set_reset_data( gem1__type_id_match1, val_gem1__type_id_match1); +set_reset_data( gem1__type_id_match2, val_gem1__type_id_match2); +set_reset_data( gem1__type_id_match3, val_gem1__type_id_match3); +set_reset_data( gem1__type_id_match4, val_gem1__type_id_match4); +set_reset_data( gem1__wake_on_lan, val_gem1__wake_on_lan); +set_reset_data( gem1__ipg_stretch, val_gem1__ipg_stretch); +set_reset_data( gem1__stacked_vlan, val_gem1__stacked_vlan); +set_reset_data( gem1__tx_pfc_pause, val_gem1__tx_pfc_pause); +set_reset_data( gem1__spec_addr1_mask_bot, val_gem1__spec_addr1_mask_bot); +set_reset_data( gem1__spec_addr1_mask_top, val_gem1__spec_addr1_mask_top); +set_reset_data( gem1__module_id, val_gem1__module_id); +set_reset_data( gem1__octets_tx_bot, val_gem1__octets_tx_bot); +set_reset_data( gem1__octets_tx_top, val_gem1__octets_tx_top); +set_reset_data( gem1__frames_tx, val_gem1__frames_tx); +set_reset_data( gem1__broadcast_frames_tx, val_gem1__broadcast_frames_tx); +set_reset_data( gem1__multi_frames_tx, val_gem1__multi_frames_tx); +set_reset_data( gem1__pause_frames_tx, val_gem1__pause_frames_tx); +set_reset_data( gem1__frames_64b_tx, val_gem1__frames_64b_tx); +set_reset_data( gem1__frames_65to127b_tx, val_gem1__frames_65to127b_tx); +set_reset_data( gem1__frames_128to255b_tx, val_gem1__frames_128to255b_tx); +set_reset_data( gem1__frames_256to511b_tx, val_gem1__frames_256to511b_tx); +set_reset_data( gem1__frames_512to1023b_tx, val_gem1__frames_512to1023b_tx); +set_reset_data( gem1__frames_1024to1518b_tx, val_gem1__frames_1024to1518b_tx); +set_reset_data( gem1__frames_gt1518b_tx, val_gem1__frames_gt1518b_tx); +set_reset_data( gem1__tx_under_runs, val_gem1__tx_under_runs); +set_reset_data( gem1__single_collisn_frames, val_gem1__single_collisn_frames); +set_reset_data( gem1__multi_collisn_frames, val_gem1__multi_collisn_frames); +set_reset_data( gem1__excessive_collisns, val_gem1__excessive_collisns); +set_reset_data( gem1__late_collisns, val_gem1__late_collisns); +set_reset_data( gem1__deferred_tx_frames, val_gem1__deferred_tx_frames); +set_reset_data( gem1__carrier_sense_errs, val_gem1__carrier_sense_errs); +set_reset_data( gem1__octets_rx_bot, val_gem1__octets_rx_bot); +set_reset_data( gem1__octets_rx_top, val_gem1__octets_rx_top); +set_reset_data( gem1__frames_rx, val_gem1__frames_rx); +set_reset_data( gem1__bdcast_fames_rx, val_gem1__bdcast_fames_rx); +set_reset_data( gem1__multi_frames_rx, val_gem1__multi_frames_rx); +set_reset_data( gem1__pause_rx, val_gem1__pause_rx); +set_reset_data( gem1__frames_64b_rx, val_gem1__frames_64b_rx); +set_reset_data( gem1__frames_65to127b_rx, val_gem1__frames_65to127b_rx); +set_reset_data( gem1__frames_128to255b_rx, val_gem1__frames_128to255b_rx); +set_reset_data( gem1__frames_256to511b_rx, val_gem1__frames_256to511b_rx); +set_reset_data( gem1__frames_512to1023b_rx, val_gem1__frames_512to1023b_rx); +set_reset_data( gem1__frames_1024to1518b_rx, val_gem1__frames_1024to1518b_rx); +set_reset_data( gem1__frames_gt1518b_rx, val_gem1__frames_gt1518b_rx); +set_reset_data( gem1__undersz_rx, val_gem1__undersz_rx); +set_reset_data( gem1__oversz_rx, val_gem1__oversz_rx); +set_reset_data( gem1__jab_rx, val_gem1__jab_rx); +set_reset_data( gem1__fcs_errors, val_gem1__fcs_errors); +set_reset_data( gem1__length_field_errors, val_gem1__length_field_errors); +set_reset_data( gem1__rx_symbol_errors, val_gem1__rx_symbol_errors); +set_reset_data( gem1__align_errors, val_gem1__align_errors); +set_reset_data( gem1__rx_resource_errors, val_gem1__rx_resource_errors); +set_reset_data( gem1__rx_overrun_errors, val_gem1__rx_overrun_errors); +set_reset_data( gem1__ip_hdr_csum_errors, val_gem1__ip_hdr_csum_errors); +set_reset_data( gem1__tcp_csum_errors, val_gem1__tcp_csum_errors); +set_reset_data( gem1__udp_csum_errors, val_gem1__udp_csum_errors); +set_reset_data( gem1__timer_strobe_s, val_gem1__timer_strobe_s); +set_reset_data( gem1__timer_strobe_ns, val_gem1__timer_strobe_ns); +set_reset_data( gem1__timer_s, val_gem1__timer_s); +set_reset_data( gem1__timer_ns, val_gem1__timer_ns); +set_reset_data( gem1__timer_adjust, val_gem1__timer_adjust); +set_reset_data( gem1__timer_incr, val_gem1__timer_incr); +set_reset_data( gem1__ptp_tx_s, val_gem1__ptp_tx_s); +set_reset_data( gem1__ptp_tx_ns, val_gem1__ptp_tx_ns); +set_reset_data( gem1__ptp_rx_s, val_gem1__ptp_rx_s); +set_reset_data( gem1__ptp_rx_ns, val_gem1__ptp_rx_ns); +set_reset_data( gem1__ptp_peer_tx_s, val_gem1__ptp_peer_tx_s); +set_reset_data( gem1__ptp_peer_tx_ns, val_gem1__ptp_peer_tx_ns); +set_reset_data( gem1__ptp_peer_rx_s, val_gem1__ptp_peer_rx_s); +set_reset_data( gem1__ptp_peer_rx_ns, val_gem1__ptp_peer_rx_ns); +set_reset_data( gem1__pcs_ctrl, val_gem1__pcs_ctrl); +set_reset_data( gem1__pcs_status, val_gem1__pcs_status); +set_reset_data( gem1__pcs_upper_phy_id, val_gem1__pcs_upper_phy_id); +set_reset_data( gem1__pcs_lower_phy_id, val_gem1__pcs_lower_phy_id); +set_reset_data( gem1__pcs_autoneg_ad, val_gem1__pcs_autoneg_ad); +set_reset_data( gem1__pcs_autoneg_ability, val_gem1__pcs_autoneg_ability); +set_reset_data( gem1__pcs_autonec_exp, val_gem1__pcs_autonec_exp); +set_reset_data( gem1__pcs_autoneg_next_pg, val_gem1__pcs_autoneg_next_pg); +set_reset_data( gem1__pcs_autoneg_pnext_pg, val_gem1__pcs_autoneg_pnext_pg); +set_reset_data( gem1__pcs_extended_status, val_gem1__pcs_extended_status); +set_reset_data( gem1__design_cfg1, val_gem1__design_cfg1); +set_reset_data( gem1__design_cfg2, val_gem1__design_cfg2); +set_reset_data( gem1__design_cfg3, val_gem1__design_cfg3); +set_reset_data( gem1__design_cfg4, val_gem1__design_cfg4); +set_reset_data( gem1__design_cfg5, val_gem1__design_cfg5); +set_reset_data( gem1__design_cfg6, val_gem1__design_cfg6); +set_reset_data( gem1__design_cfg7, val_gem1__design_cfg7); +set_reset_data( gem1__isr_pq1, val_gem1__isr_pq1); +set_reset_data( gem1__isr_pq2, val_gem1__isr_pq2); +set_reset_data( gem1__isr_pq3, val_gem1__isr_pq3); +set_reset_data( gem1__isr_pq4, val_gem1__isr_pq4); +set_reset_data( gem1__isr_pq5, val_gem1__isr_pq5); +set_reset_data( gem1__isr_pq6, val_gem1__isr_pq6); +set_reset_data( gem1__isr_pq7, val_gem1__isr_pq7); +set_reset_data( gem1__tx_qbar_q1, val_gem1__tx_qbar_q1); +set_reset_data( gem1__tx_qbar_q2, val_gem1__tx_qbar_q2); +set_reset_data( gem1__tx_qbar_q3, val_gem1__tx_qbar_q3); +set_reset_data( gem1__tx_qbar_q4, val_gem1__tx_qbar_q4); +set_reset_data( gem1__tx_qbar_q5, val_gem1__tx_qbar_q5); +set_reset_data( gem1__tx_qbar_q6, val_gem1__tx_qbar_q6); +set_reset_data( gem1__tx_qbar_q7, val_gem1__tx_qbar_q7); +set_reset_data( gem1__rx_qbar_q1, val_gem1__rx_qbar_q1); +set_reset_data( gem1__rx_qbar_q2, val_gem1__rx_qbar_q2); +set_reset_data( gem1__rx_qbar_q3, val_gem1__rx_qbar_q3); +set_reset_data( gem1__rx_qbar_q4, val_gem1__rx_qbar_q4); +set_reset_data( gem1__rx_qbar_q5, val_gem1__rx_qbar_q5); +set_reset_data( gem1__rx_qbar_q6, val_gem1__rx_qbar_q6); +set_reset_data( gem1__rx_qbar_q7, val_gem1__rx_qbar_q7); +set_reset_data( gem1__rx_bufsz_q1, val_gem1__rx_bufsz_q1); +set_reset_data( gem1__rx_bufsz_q2, val_gem1__rx_bufsz_q2); +set_reset_data( gem1__rx_bufsz_q3, val_gem1__rx_bufsz_q3); +set_reset_data( gem1__rx_bufsz_q4, val_gem1__rx_bufsz_q4); +set_reset_data( gem1__rx_bufsz_q5, val_gem1__rx_bufsz_q5); +set_reset_data( gem1__rx_bufsz_q6, val_gem1__rx_bufsz_q6); +set_reset_data( gem1__rx_bufsz_q7, val_gem1__rx_bufsz_q7); +set_reset_data( gem1__screen_t1_r0, val_gem1__screen_t1_r0); +set_reset_data( gem1__screen_t1_r1, val_gem1__screen_t1_r1); +set_reset_data( gem1__screen_t1_r2, val_gem1__screen_t1_r2); +set_reset_data( gem1__screen_t1_r3, val_gem1__screen_t1_r3); +set_reset_data( gem1__screen_t1_r4, val_gem1__screen_t1_r4); +set_reset_data( gem1__screen_t1_r5, val_gem1__screen_t1_r5); +set_reset_data( gem1__screen_t1_r6, val_gem1__screen_t1_r6); +set_reset_data( gem1__screen_t1_r7, val_gem1__screen_t1_r7); +set_reset_data( gem1__screen_t1_r8, val_gem1__screen_t1_r8); +set_reset_data( gem1__screen_t1_r9, val_gem1__screen_t1_r9); +set_reset_data( gem1__screen_t1_r10, val_gem1__screen_t1_r10); +set_reset_data( gem1__screen_t1_r11, val_gem1__screen_t1_r11); +set_reset_data( gem1__screen_t1_r12, val_gem1__screen_t1_r12); +set_reset_data( gem1__screen_t1_r13, val_gem1__screen_t1_r13); +set_reset_data( gem1__screen_t1_r14, val_gem1__screen_t1_r14); +set_reset_data( gem1__screen_t1_r15, val_gem1__screen_t1_r15); +set_reset_data( gem1__screen_t2_r0, val_gem1__screen_t2_r0); +set_reset_data( gem1__screen_t2_r1, val_gem1__screen_t2_r1); +set_reset_data( gem1__screen_t2_r2, val_gem1__screen_t2_r2); +set_reset_data( gem1__screen_t2_r3, val_gem1__screen_t2_r3); +set_reset_data( gem1__screen_t2_r4, val_gem1__screen_t2_r4); +set_reset_data( gem1__screen_t2_r5, val_gem1__screen_t2_r5); +set_reset_data( gem1__screen_t2_r6, val_gem1__screen_t2_r6); +set_reset_data( gem1__screen_t2_r7, val_gem1__screen_t2_r7); +set_reset_data( gem1__screen_t2_r8, val_gem1__screen_t2_r8); +set_reset_data( gem1__screen_t2_r9, val_gem1__screen_t2_r9); +set_reset_data( gem1__screen_t2_r10, val_gem1__screen_t2_r10); +set_reset_data( gem1__screen_t2_r11, val_gem1__screen_t2_r11); +set_reset_data( gem1__screen_t2_r12, val_gem1__screen_t2_r12); +set_reset_data( gem1__screen_t2_r13, val_gem1__screen_t2_r13); +set_reset_data( gem1__screen_t2_r14, val_gem1__screen_t2_r14); +set_reset_data( gem1__screen_t2_r15, val_gem1__screen_t2_r15); +set_reset_data( gem1__intr_en_pq1, val_gem1__intr_en_pq1); +set_reset_data( gem1__intr_en_pq2, val_gem1__intr_en_pq2); +set_reset_data( gem1__intr_en_pq3, val_gem1__intr_en_pq3); +set_reset_data( gem1__intr_en_pq4, val_gem1__intr_en_pq4); +set_reset_data( gem1__intr_en_pq5, val_gem1__intr_en_pq5); +set_reset_data( gem1__intr_en_pq6, val_gem1__intr_en_pq6); +set_reset_data( gem1__intr_en_pq7, val_gem1__intr_en_pq7); +set_reset_data( gem1__intr_dis_pq1, val_gem1__intr_dis_pq1); +set_reset_data( gem1__intr_dis_pq2, val_gem1__intr_dis_pq2); +set_reset_data( gem1__intr_dis_pq3, val_gem1__intr_dis_pq3); +set_reset_data( gem1__intr_dis_pq4, val_gem1__intr_dis_pq4); +set_reset_data( gem1__intr_dis_pq5, val_gem1__intr_dis_pq5); +set_reset_data( gem1__intr_dis_pq6, val_gem1__intr_dis_pq6); +set_reset_data( gem1__intr_dis_pq7, val_gem1__intr_dis_pq7); +set_reset_data( gem1__intr_mask_pq1, val_gem1__intr_mask_pq1); +set_reset_data( gem1__intr_mask_pq2, val_gem1__intr_mask_pq2); +set_reset_data( gem1__intr_mask_pq3, val_gem1__intr_mask_pq3); +set_reset_data( gem1__intr_mask_pq4, val_gem1__intr_mask_pq4); +set_reset_data( gem1__intr_mask_pq5, val_gem1__intr_mask_pq5); +set_reset_data( gem1__intr_mask_pq6, val_gem1__intr_mask_pq6); +set_reset_data( gem1__intr_mask_pq7, val_gem1__intr_mask_pq7); + +// ************************************************************ +// Module gpio gpio +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gpio__MASK_DATA_0_LSW, val_gpio__MASK_DATA_0_LSW); +set_reset_data( gpio__MASK_DATA_0_MSW, val_gpio__MASK_DATA_0_MSW); +set_reset_data( gpio__MASK_DATA_1_LSW, val_gpio__MASK_DATA_1_LSW); +set_reset_data( gpio__MASK_DATA_1_MSW, val_gpio__MASK_DATA_1_MSW); +set_reset_data( gpio__MASK_DATA_2_LSW, val_gpio__MASK_DATA_2_LSW); +set_reset_data( gpio__MASK_DATA_2_MSW, val_gpio__MASK_DATA_2_MSW); +set_reset_data( gpio__MASK_DATA_3_LSW, val_gpio__MASK_DATA_3_LSW); +set_reset_data( gpio__MASK_DATA_3_MSW, val_gpio__MASK_DATA_3_MSW); +set_reset_data( gpio__DATA_0, val_gpio__DATA_0); +set_reset_data( gpio__DATA_1, val_gpio__DATA_1); +set_reset_data( gpio__DATA_2, val_gpio__DATA_2); +set_reset_data( gpio__DATA_3, val_gpio__DATA_3); +set_reset_data( gpio__DATA_0_RO, val_gpio__DATA_0_RO); +set_reset_data( gpio__DATA_1_RO, val_gpio__DATA_1_RO); +set_reset_data( gpio__DATA_2_RO, val_gpio__DATA_2_RO); +set_reset_data( gpio__DATA_3_RO, val_gpio__DATA_3_RO); +set_reset_data( gpio__BYPM_0, val_gpio__BYPM_0); +set_reset_data( gpio__DIRM_0, val_gpio__DIRM_0); +set_reset_data( gpio__OEN_0, val_gpio__OEN_0); +set_reset_data( gpio__INT_MASK_0, val_gpio__INT_MASK_0); +set_reset_data( gpio__INT_EN_0, val_gpio__INT_EN_0); +set_reset_data( gpio__INT_DIS_0, val_gpio__INT_DIS_0); +set_reset_data( gpio__INT_STAT_0, val_gpio__INT_STAT_0); +set_reset_data( gpio__INT_TYPE_0, val_gpio__INT_TYPE_0); +set_reset_data( gpio__INT_POLARITY_0, val_gpio__INT_POLARITY_0); +set_reset_data( gpio__INT_ANY_0, val_gpio__INT_ANY_0); +set_reset_data( gpio__BYPM_1, val_gpio__BYPM_1); +set_reset_data( gpio__DIRM_1, val_gpio__DIRM_1); +set_reset_data( gpio__OEN_1, val_gpio__OEN_1); +set_reset_data( gpio__INT_MASK_1, val_gpio__INT_MASK_1); +set_reset_data( gpio__INT_EN_1, val_gpio__INT_EN_1); +set_reset_data( gpio__INT_DIS_1, val_gpio__INT_DIS_1); +set_reset_data( gpio__INT_STAT_1, val_gpio__INT_STAT_1); +set_reset_data( gpio__INT_TYPE_1, val_gpio__INT_TYPE_1); +set_reset_data( gpio__INT_POLARITY_1, val_gpio__INT_POLARITY_1); +set_reset_data( gpio__INT_ANY_1, val_gpio__INT_ANY_1); +set_reset_data( gpio__BYPM_2, val_gpio__BYPM_2); +set_reset_data( gpio__DIRM_2, val_gpio__DIRM_2); +set_reset_data( gpio__OEN_2, val_gpio__OEN_2); +set_reset_data( gpio__INT_MASK_2, val_gpio__INT_MASK_2); +set_reset_data( gpio__INT_EN_2, val_gpio__INT_EN_2); +set_reset_data( gpio__INT_DIS_2, val_gpio__INT_DIS_2); +set_reset_data( gpio__INT_STAT_2, val_gpio__INT_STAT_2); +set_reset_data( gpio__INT_TYPE_2, val_gpio__INT_TYPE_2); +set_reset_data( gpio__INT_POLARITY_2, val_gpio__INT_POLARITY_2); +set_reset_data( gpio__INT_ANY_2, val_gpio__INT_ANY_2); +set_reset_data( gpio__BYPM_3, val_gpio__BYPM_3); +set_reset_data( gpio__DIRM_3, val_gpio__DIRM_3); +set_reset_data( gpio__OEN_3, val_gpio__OEN_3); +set_reset_data( gpio__INT_MASK_3, val_gpio__INT_MASK_3); +set_reset_data( gpio__INT_EN_3, val_gpio__INT_EN_3); +set_reset_data( gpio__INT_DIS_3, val_gpio__INT_DIS_3); +set_reset_data( gpio__INT_STAT_3, val_gpio__INT_STAT_3); +set_reset_data( gpio__INT_TYPE_3, val_gpio__INT_TYPE_3); +set_reset_data( gpio__INT_POLARITY_3, val_gpio__INT_POLARITY_3); +set_reset_data( gpio__INT_ANY_3, val_gpio__INT_ANY_3); + +// ************************************************************ +// Module gpv_iou_switch gpv_iou_switch +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gpv_iou_switch__Remap, val_gpv_iou_switch__Remap); +set_reset_data( gpv_iou_switch__security2_sdio0, val_gpv_iou_switch__security2_sdio0); +set_reset_data( gpv_iou_switch__security3_sdio1, val_gpv_iou_switch__security3_sdio1); +set_reset_data( gpv_iou_switch__security4_qspi, val_gpv_iou_switch__security4_qspi); +set_reset_data( gpv_iou_switch__security5_miou, val_gpv_iou_switch__security5_miou); +set_reset_data( gpv_iou_switch__security6_apb_slaves, val_gpv_iou_switch__security6_apb_slaves); +set_reset_data( gpv_iou_switch__security7_smc, val_gpv_iou_switch__security7_smc); +set_reset_data( gpv_iou_switch__peripheral_id4, val_gpv_iou_switch__peripheral_id4); +set_reset_data( gpv_iou_switch__peripheral_id5, val_gpv_iou_switch__peripheral_id5); +set_reset_data( gpv_iou_switch__peripheral_id6, val_gpv_iou_switch__peripheral_id6); +set_reset_data( gpv_iou_switch__peripheral_id7, val_gpv_iou_switch__peripheral_id7); +set_reset_data( gpv_iou_switch__peripheral_id0, val_gpv_iou_switch__peripheral_id0); +set_reset_data( gpv_iou_switch__peripheral_id1, val_gpv_iou_switch__peripheral_id1); +set_reset_data( gpv_iou_switch__peripheral_id2, val_gpv_iou_switch__peripheral_id2); +set_reset_data( gpv_iou_switch__peripheral_id3, val_gpv_iou_switch__peripheral_id3); +set_reset_data( gpv_iou_switch__component_id0, val_gpv_iou_switch__component_id0); +set_reset_data( gpv_iou_switch__component_id1, val_gpv_iou_switch__component_id1); +set_reset_data( gpv_iou_switch__component_id2, val_gpv_iou_switch__component_id2); +set_reset_data( gpv_iou_switch__component_id3, val_gpv_iou_switch__component_id3); +set_reset_data( gpv_iou_switch__fn_mod_bm_iss_sdio0, val_gpv_iou_switch__fn_mod_bm_iss_sdio0); +set_reset_data( gpv_iou_switch__ahb_cntl_sdio0, val_gpv_iou_switch__ahb_cntl_sdio0); +set_reset_data( gpv_iou_switch__fn_mod_bm_iss_sdio1, val_gpv_iou_switch__fn_mod_bm_iss_sdio1); +set_reset_data( gpv_iou_switch__ahb_cntl_sdio1, val_gpv_iou_switch__ahb_cntl_sdio1); +set_reset_data( gpv_iou_switch__fn_mod_bm_iss_qspi, val_gpv_iou_switch__fn_mod_bm_iss_qspi); +set_reset_data( gpv_iou_switch__fn_mod_bm_iss_miou, val_gpv_iou_switch__fn_mod_bm_iss_miou); +set_reset_data( gpv_iou_switch__fn_mod_bm_iss_smc, val_gpv_iou_switch__fn_mod_bm_iss_smc); +set_reset_data( gpv_iou_switch__fn_mod_ahb_gem0, val_gpv_iou_switch__fn_mod_ahb_gem0); +set_reset_data( gpv_iou_switch__read_qos_gem0, val_gpv_iou_switch__read_qos_gem0); +set_reset_data( gpv_iou_switch__write_qos_gem0, val_gpv_iou_switch__write_qos_gem0); +set_reset_data( gpv_iou_switch__fn_mod_iss_gem0, val_gpv_iou_switch__fn_mod_iss_gem0); +set_reset_data( gpv_iou_switch__fn_mod_ahb_gem1, val_gpv_iou_switch__fn_mod_ahb_gem1); +set_reset_data( gpv_iou_switch__read_qos_gem1, val_gpv_iou_switch__read_qos_gem1); +set_reset_data( gpv_iou_switch__write_qos_gem1, val_gpv_iou_switch__write_qos_gem1); +set_reset_data( gpv_iou_switch__fn_mod_iss_gem1, val_gpv_iou_switch__fn_mod_iss_gem1); +set_reset_data( gpv_iou_switch__fn_mod_ahb_usb0, val_gpv_iou_switch__fn_mod_ahb_usb0); +set_reset_data( gpv_iou_switch__read_qos_usb0, val_gpv_iou_switch__read_qos_usb0); +set_reset_data( gpv_iou_switch__write_qos_usb0, val_gpv_iou_switch__write_qos_usb0); +set_reset_data( gpv_iou_switch__fn_mod_iss_usb0, val_gpv_iou_switch__fn_mod_iss_usb0); +set_reset_data( gpv_iou_switch__fn_mod_ahb_usb1, val_gpv_iou_switch__fn_mod_ahb_usb1); +set_reset_data( gpv_iou_switch__read_qos_usb1, val_gpv_iou_switch__read_qos_usb1); +set_reset_data( gpv_iou_switch__write_qos_usb1, val_gpv_iou_switch__write_qos_usb1); +set_reset_data( gpv_iou_switch__fn_mod_iss_usb1, val_gpv_iou_switch__fn_mod_iss_usb1); +set_reset_data( gpv_iou_switch__fn_mod_ahb_sdio0, val_gpv_iou_switch__fn_mod_ahb_sdio0); +set_reset_data( gpv_iou_switch__read_qos_sdio0, val_gpv_iou_switch__read_qos_sdio0); +set_reset_data( gpv_iou_switch__write_qos_sdio0, val_gpv_iou_switch__write_qos_sdio0); +set_reset_data( gpv_iou_switch__fn_mod_iss_sdio0, val_gpv_iou_switch__fn_mod_iss_sdio0); +set_reset_data( gpv_iou_switch__fn_mod_ahb_sdio1, val_gpv_iou_switch__fn_mod_ahb_sdio1); +set_reset_data( gpv_iou_switch__read_qos_sdio1, val_gpv_iou_switch__read_qos_sdio1); +set_reset_data( gpv_iou_switch__write_qos_sdio1, val_gpv_iou_switch__write_qos_sdio1); +set_reset_data( gpv_iou_switch__fn_mod_iss_sdio1, val_gpv_iou_switch__fn_mod_iss_sdio1); +set_reset_data( gpv_iou_switch__fn_mod_iss_siou, val_gpv_iou_switch__fn_mod_iss_siou); + +// ************************************************************ +// Module gpv_qos301_cpu qos301 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gpv_qos301_cpu__qos_cntl, val_gpv_qos301_cpu__qos_cntl); +set_reset_data( gpv_qos301_cpu__max_ot, val_gpv_qos301_cpu__max_ot); +set_reset_data( gpv_qos301_cpu__max_comb_ot, val_gpv_qos301_cpu__max_comb_ot); +set_reset_data( gpv_qos301_cpu__aw_p, val_gpv_qos301_cpu__aw_p); +set_reset_data( gpv_qos301_cpu__aw_b, val_gpv_qos301_cpu__aw_b); +set_reset_data( gpv_qos301_cpu__aw_r, val_gpv_qos301_cpu__aw_r); +set_reset_data( gpv_qos301_cpu__ar_p, val_gpv_qos301_cpu__ar_p); +set_reset_data( gpv_qos301_cpu__ar_b, val_gpv_qos301_cpu__ar_b); +set_reset_data( gpv_qos301_cpu__ar_r, val_gpv_qos301_cpu__ar_r); + +// ************************************************************ +// Module gpv_qos301_dmac qos301 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gpv_qos301_dmac__qos_cntl, val_gpv_qos301_dmac__qos_cntl); +set_reset_data( gpv_qos301_dmac__max_ot, val_gpv_qos301_dmac__max_ot); +set_reset_data( gpv_qos301_dmac__max_comb_ot, val_gpv_qos301_dmac__max_comb_ot); +set_reset_data( gpv_qos301_dmac__aw_p, val_gpv_qos301_dmac__aw_p); +set_reset_data( gpv_qos301_dmac__aw_b, val_gpv_qos301_dmac__aw_b); +set_reset_data( gpv_qos301_dmac__aw_r, val_gpv_qos301_dmac__aw_r); +set_reset_data( gpv_qos301_dmac__ar_p, val_gpv_qos301_dmac__ar_p); +set_reset_data( gpv_qos301_dmac__ar_b, val_gpv_qos301_dmac__ar_b); +set_reset_data( gpv_qos301_dmac__ar_r, val_gpv_qos301_dmac__ar_r); + +// ************************************************************ +// Module gpv_qos301_iou qos301 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gpv_qos301_iou__qos_cntl, val_gpv_qos301_iou__qos_cntl); +set_reset_data( gpv_qos301_iou__max_ot, val_gpv_qos301_iou__max_ot); +set_reset_data( gpv_qos301_iou__max_comb_ot, val_gpv_qos301_iou__max_comb_ot); +set_reset_data( gpv_qos301_iou__aw_p, val_gpv_qos301_iou__aw_p); +set_reset_data( gpv_qos301_iou__aw_b, val_gpv_qos301_iou__aw_b); +set_reset_data( gpv_qos301_iou__aw_r, val_gpv_qos301_iou__aw_r); +set_reset_data( gpv_qos301_iou__ar_p, val_gpv_qos301_iou__ar_p); +set_reset_data( gpv_qos301_iou__ar_b, val_gpv_qos301_iou__ar_b); +set_reset_data( gpv_qos301_iou__ar_r, val_gpv_qos301_iou__ar_r); + +// ************************************************************ +// Module gpv_trustzone nic301_addr_region_ctrl_registers +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( gpv_trustzone__Remap, val_gpv_trustzone__Remap); +set_reset_data( gpv_trustzone__security_fssw_s0, val_gpv_trustzone__security_fssw_s0); +set_reset_data( gpv_trustzone__security_fssw_s1, val_gpv_trustzone__security_fssw_s1); +set_reset_data( gpv_trustzone__security_apb, val_gpv_trustzone__security_apb); + +// ************************************************************ +// Module i2c0 IIC +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( i2c0__Control_reg0, val_i2c0__Control_reg0); +set_reset_data( i2c0__Status_reg0, val_i2c0__Status_reg0); +set_reset_data( i2c0__I2C_address_reg0, val_i2c0__I2C_address_reg0); +set_reset_data( i2c0__I2C_data_reg0, val_i2c0__I2C_data_reg0); +set_reset_data( i2c0__Interrupt_status_reg0, val_i2c0__Interrupt_status_reg0); +set_reset_data( i2c0__Transfer_size_reg0, val_i2c0__Transfer_size_reg0); +set_reset_data( i2c0__Slave_mon_pause_reg0, val_i2c0__Slave_mon_pause_reg0); +set_reset_data( i2c0__Time_out_reg0, val_i2c0__Time_out_reg0); +set_reset_data( i2c0__Intrpt_mask_reg0, val_i2c0__Intrpt_mask_reg0); +set_reset_data( i2c0__Intrpt_enable_reg0, val_i2c0__Intrpt_enable_reg0); +set_reset_data( i2c0__Intrpt_disable_reg0, val_i2c0__Intrpt_disable_reg0); + +// ************************************************************ +// Module i2c1 IIC +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( i2c1__Control_reg0, val_i2c1__Control_reg0); +set_reset_data( i2c1__Status_reg0, val_i2c1__Status_reg0); +set_reset_data( i2c1__I2C_address_reg0, val_i2c1__I2C_address_reg0); +set_reset_data( i2c1__I2C_data_reg0, val_i2c1__I2C_data_reg0); +set_reset_data( i2c1__Interrupt_status_reg0, val_i2c1__Interrupt_status_reg0); +set_reset_data( i2c1__Transfer_size_reg0, val_i2c1__Transfer_size_reg0); +set_reset_data( i2c1__Slave_mon_pause_reg0, val_i2c1__Slave_mon_pause_reg0); +set_reset_data( i2c1__Time_out_reg0, val_i2c1__Time_out_reg0); +set_reset_data( i2c1__Intrpt_mask_reg0, val_i2c1__Intrpt_mask_reg0); +set_reset_data( i2c1__Intrpt_enable_reg0, val_i2c1__Intrpt_enable_reg0); +set_reset_data( i2c1__Intrpt_disable_reg0, val_i2c1__Intrpt_disable_reg0); + +// ************************************************************ +// Module l2cache L2Cpl310 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( l2cache__reg0_cache_id, val_l2cache__reg0_cache_id); +set_reset_data( l2cache__reg0_cache_type, val_l2cache__reg0_cache_type); +set_reset_data( l2cache__reg1_control, val_l2cache__reg1_control); +set_reset_data( l2cache__reg1_aux_control, val_l2cache__reg1_aux_control); +set_reset_data( l2cache__reg1_tag_ram_control, val_l2cache__reg1_tag_ram_control); +set_reset_data( l2cache__reg1_data_ram_control, val_l2cache__reg1_data_ram_control); +set_reset_data( l2cache__reg2_ev_counter_ctrl, val_l2cache__reg2_ev_counter_ctrl); +set_reset_data( l2cache__reg2_ev_counter1_cfg, val_l2cache__reg2_ev_counter1_cfg); +set_reset_data( l2cache__reg2_ev_counter0_cfg, val_l2cache__reg2_ev_counter0_cfg); +set_reset_data( l2cache__reg2_ev_counter1, val_l2cache__reg2_ev_counter1); +set_reset_data( l2cache__reg2_ev_counter0, val_l2cache__reg2_ev_counter0); +set_reset_data( l2cache__reg2_int_mask, val_l2cache__reg2_int_mask); +set_reset_data( l2cache__reg2_int_mask_status, val_l2cache__reg2_int_mask_status); +set_reset_data( l2cache__reg2_int_raw_status, val_l2cache__reg2_int_raw_status); +set_reset_data( l2cache__reg2_int_clear, val_l2cache__reg2_int_clear); +set_reset_data( l2cache__reg7_cache_sync, val_l2cache__reg7_cache_sync); +set_reset_data( l2cache__reg7_inv_pa, val_l2cache__reg7_inv_pa); +set_reset_data( l2cache__reg7_inv_way, val_l2cache__reg7_inv_way); +set_reset_data( l2cache__reg7_clean_pa, val_l2cache__reg7_clean_pa); +set_reset_data( l2cache__reg7_clean_index, val_l2cache__reg7_clean_index); +set_reset_data( l2cache__reg7_clean_way, val_l2cache__reg7_clean_way); +set_reset_data( l2cache__reg7_clean_inv_pa, val_l2cache__reg7_clean_inv_pa); +set_reset_data( l2cache__reg7_clean_inv_index, val_l2cache__reg7_clean_inv_index); +set_reset_data( l2cache__reg7_clean_inv_way, val_l2cache__reg7_clean_inv_way); +set_reset_data( l2cache__reg9_d_lockdown0, val_l2cache__reg9_d_lockdown0); +set_reset_data( l2cache__reg9_i_lockdown0, val_l2cache__reg9_i_lockdown0); +set_reset_data( l2cache__reg9_d_lockdown1, val_l2cache__reg9_d_lockdown1); +set_reset_data( l2cache__reg9_i_lockdown1, val_l2cache__reg9_i_lockdown1); +set_reset_data( l2cache__reg9_d_lockdown2, val_l2cache__reg9_d_lockdown2); +set_reset_data( l2cache__reg9_i_lockdown2, val_l2cache__reg9_i_lockdown2); +set_reset_data( l2cache__reg9_d_lockdown3, val_l2cache__reg9_d_lockdown3); +set_reset_data( l2cache__reg9_i_lockdown3, val_l2cache__reg9_i_lockdown3); +set_reset_data( l2cache__reg9_d_lockdown4, val_l2cache__reg9_d_lockdown4); +set_reset_data( l2cache__reg9_i_lockdown4, val_l2cache__reg9_i_lockdown4); +set_reset_data( l2cache__reg9_d_lockdown5, val_l2cache__reg9_d_lockdown5); +set_reset_data( l2cache__reg9_i_lockdown5, val_l2cache__reg9_i_lockdown5); +set_reset_data( l2cache__reg9_d_lockdown6, val_l2cache__reg9_d_lockdown6); +set_reset_data( l2cache__reg9_i_lockdown6, val_l2cache__reg9_i_lockdown6); +set_reset_data( l2cache__reg9_d_lockdown7, val_l2cache__reg9_d_lockdown7); +set_reset_data( l2cache__reg9_i_lockdown7, val_l2cache__reg9_i_lockdown7); +set_reset_data( l2cache__reg9_lock_line_en, val_l2cache__reg9_lock_line_en); +set_reset_data( l2cache__reg9_unlock_way, val_l2cache__reg9_unlock_way); +set_reset_data( l2cache__reg12_addr_filtering_start, val_l2cache__reg12_addr_filtering_start); +set_reset_data( l2cache__reg12_addr_filtering_end, val_l2cache__reg12_addr_filtering_end); +set_reset_data( l2cache__reg15_debug_ctrl, val_l2cache__reg15_debug_ctrl); +set_reset_data( l2cache__reg15_prefetch_ctrl, val_l2cache__reg15_prefetch_ctrl); +set_reset_data( l2cache__reg15_power_ctrl, val_l2cache__reg15_power_ctrl); + +// ************************************************************ +// Module mpcore mpcore +// doc version: 1.3 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( mpcore__SCU_CONTROL_REGISTER, val_mpcore__SCU_CONTROL_REGISTER); +set_reset_data( mpcore__SCU_CONFIGURATION_REGISTER, val_mpcore__SCU_CONFIGURATION_REGISTER); +set_reset_data( mpcore__SCU_CPU_Power_Status_Register, val_mpcore__SCU_CPU_Power_Status_Register); +set_reset_data( mpcore__SCU_Invalidate_All_Registers_in_Secure_State, val_mpcore__SCU_Invalidate_All_Registers_in_Secure_State); +set_reset_data( mpcore__Filtering_Start_Address_Register, val_mpcore__Filtering_Start_Address_Register); +set_reset_data( mpcore__Filtering_End_Address_Register, val_mpcore__Filtering_End_Address_Register); +set_reset_data( mpcore__SCU_Access_Control_Register_SAC, val_mpcore__SCU_Access_Control_Register_SAC); +set_reset_data( mpcore__SCU_Non_secure_Access_Control_Register, val_mpcore__SCU_Non_secure_Access_Control_Register); +set_reset_data( mpcore__ICCICR, val_mpcore__ICCICR); +set_reset_data( mpcore__ICCPMR, val_mpcore__ICCPMR); +set_reset_data( mpcore__ICCBPR, val_mpcore__ICCBPR); +set_reset_data( mpcore__ICCIAR, val_mpcore__ICCIAR); +set_reset_data( mpcore__ICCEOIR, val_mpcore__ICCEOIR); +set_reset_data( mpcore__ICCRPR, val_mpcore__ICCRPR); +set_reset_data( mpcore__ICCHPIR, val_mpcore__ICCHPIR); +set_reset_data( mpcore__ICCABPR, val_mpcore__ICCABPR); +set_reset_data( mpcore__ICCIDR, val_mpcore__ICCIDR); +set_reset_data( mpcore__Global_Timer_Counter_Register0, val_mpcore__Global_Timer_Counter_Register0); +set_reset_data( mpcore__Global_Timer_Counter_Register1, val_mpcore__Global_Timer_Counter_Register1); +set_reset_data( mpcore__Global_Timer_Control_Register, val_mpcore__Global_Timer_Control_Register); +set_reset_data( mpcore__Global_Timer_Interrupt_Status_Register, val_mpcore__Global_Timer_Interrupt_Status_Register); +set_reset_data( mpcore__Comparator_Value_Register0, val_mpcore__Comparator_Value_Register0); +set_reset_data( mpcore__Comparator_Value_Register1, val_mpcore__Comparator_Value_Register1); +set_reset_data( mpcore__Auto_increment_Register, val_mpcore__Auto_increment_Register); +set_reset_data( mpcore__Private_Timer_Load_Register, val_mpcore__Private_Timer_Load_Register); +set_reset_data( mpcore__Private_Timer_Counter_Register, val_mpcore__Private_Timer_Counter_Register); +set_reset_data( mpcore__Private_Timer_Control_Register, val_mpcore__Private_Timer_Control_Register); +set_reset_data( mpcore__Private_Timer_Interrupt_Status_Register, val_mpcore__Private_Timer_Interrupt_Status_Register); +set_reset_data( mpcore__Watchdog_Load_Register, val_mpcore__Watchdog_Load_Register); +set_reset_data( mpcore__Watchdog_Counter_Register, val_mpcore__Watchdog_Counter_Register); +set_reset_data( mpcore__Watchdog_Control_Register, val_mpcore__Watchdog_Control_Register); +set_reset_data( mpcore__Watchdog_Interrupt_Status_Register, val_mpcore__Watchdog_Interrupt_Status_Register); +set_reset_data( mpcore__Watchdog_Reset_Status_Register, val_mpcore__Watchdog_Reset_Status_Register); +set_reset_data( mpcore__Watchdog_Disable_Register, val_mpcore__Watchdog_Disable_Register); +set_reset_data( mpcore__ICDDCR, val_mpcore__ICDDCR); +set_reset_data( mpcore__ICDICTR, val_mpcore__ICDICTR); +set_reset_data( mpcore__ICDIIDR, val_mpcore__ICDIIDR); +set_reset_data( mpcore__ICDISR0, val_mpcore__ICDISR0); +set_reset_data( mpcore__ICDISR1, val_mpcore__ICDISR1); +set_reset_data( mpcore__ICDISR2, val_mpcore__ICDISR2); +set_reset_data( mpcore__ICDISER0, val_mpcore__ICDISER0); +set_reset_data( mpcore__ICDISER1, val_mpcore__ICDISER1); +set_reset_data( mpcore__ICDISER2, val_mpcore__ICDISER2); +set_reset_data( mpcore__ICDICER0, val_mpcore__ICDICER0); +set_reset_data( mpcore__ICDICER1, val_mpcore__ICDICER1); +set_reset_data( mpcore__ICDICER2, val_mpcore__ICDICER2); +set_reset_data( mpcore__ICDISPR0, val_mpcore__ICDISPR0); +set_reset_data( mpcore__ICDISPR1, val_mpcore__ICDISPR1); +set_reset_data( mpcore__ICDISPR2, val_mpcore__ICDISPR2); +set_reset_data( mpcore__ICDICPR0, val_mpcore__ICDICPR0); +set_reset_data( mpcore__ICDICPR1, val_mpcore__ICDICPR1); +set_reset_data( mpcore__ICDICPR2, val_mpcore__ICDICPR2); +set_reset_data( mpcore__ICDABR0, val_mpcore__ICDABR0); +set_reset_data( mpcore__ICDABR1, val_mpcore__ICDABR1); +set_reset_data( mpcore__ICDABR2, val_mpcore__ICDABR2); +set_reset_data( mpcore__ICDIPR0, val_mpcore__ICDIPR0); +set_reset_data( mpcore__ICDIPR1, val_mpcore__ICDIPR1); +set_reset_data( mpcore__ICDIPR2, val_mpcore__ICDIPR2); +set_reset_data( mpcore__ICDIPR3, val_mpcore__ICDIPR3); +set_reset_data( mpcore__ICDIPR4, val_mpcore__ICDIPR4); +set_reset_data( mpcore__ICDIPR5, val_mpcore__ICDIPR5); +set_reset_data( mpcore__ICDIPR6, val_mpcore__ICDIPR6); +set_reset_data( mpcore__ICDIPR7, val_mpcore__ICDIPR7); +set_reset_data( mpcore__ICDIPR8, val_mpcore__ICDIPR8); +set_reset_data( mpcore__ICDIPR9, val_mpcore__ICDIPR9); +set_reset_data( mpcore__ICDIPR10, val_mpcore__ICDIPR10); +set_reset_data( mpcore__ICDIPR11, val_mpcore__ICDIPR11); +set_reset_data( mpcore__ICDIPR12, val_mpcore__ICDIPR12); +set_reset_data( mpcore__ICDIPR13, val_mpcore__ICDIPR13); +set_reset_data( mpcore__ICDIPR14, val_mpcore__ICDIPR14); +set_reset_data( mpcore__ICDIPR15, val_mpcore__ICDIPR15); +set_reset_data( mpcore__ICDIPR16, val_mpcore__ICDIPR16); +set_reset_data( mpcore__ICDIPR17, val_mpcore__ICDIPR17); +set_reset_data( mpcore__ICDIPR18, val_mpcore__ICDIPR18); +set_reset_data( mpcore__ICDIPR19, val_mpcore__ICDIPR19); +set_reset_data( mpcore__ICDIPR20, val_mpcore__ICDIPR20); +set_reset_data( mpcore__ICDIPR21, val_mpcore__ICDIPR21); +set_reset_data( mpcore__ICDIPR22, val_mpcore__ICDIPR22); +set_reset_data( mpcore__ICDIPR23, val_mpcore__ICDIPR23); +set_reset_data( mpcore__ICDIPTR0, val_mpcore__ICDIPTR0); +set_reset_data( mpcore__ICDIPTR1, val_mpcore__ICDIPTR1); +set_reset_data( mpcore__ICDIPTR2, val_mpcore__ICDIPTR2); +set_reset_data( mpcore__ICDIPTR3, val_mpcore__ICDIPTR3); +set_reset_data( mpcore__ICDIPTR4, val_mpcore__ICDIPTR4); +set_reset_data( mpcore__ICDIPTR5, val_mpcore__ICDIPTR5); +set_reset_data( mpcore__ICDIPTR6, val_mpcore__ICDIPTR6); +set_reset_data( mpcore__ICDIPTR7, val_mpcore__ICDIPTR7); +set_reset_data( mpcore__ICDIPTR8, val_mpcore__ICDIPTR8); +set_reset_data( mpcore__ICDIPTR9, val_mpcore__ICDIPTR9); +set_reset_data( mpcore__ICDIPTR10, val_mpcore__ICDIPTR10); +set_reset_data( mpcore__ICDIPTR11, val_mpcore__ICDIPTR11); +set_reset_data( mpcore__ICDIPTR12, val_mpcore__ICDIPTR12); +set_reset_data( mpcore__ICDIPTR13, val_mpcore__ICDIPTR13); +set_reset_data( mpcore__ICDIPTR14, val_mpcore__ICDIPTR14); +set_reset_data( mpcore__ICDIPTR15, val_mpcore__ICDIPTR15); +set_reset_data( mpcore__ICDIPTR16, val_mpcore__ICDIPTR16); +set_reset_data( mpcore__ICDIPTR17, val_mpcore__ICDIPTR17); +set_reset_data( mpcore__ICDIPTR18, val_mpcore__ICDIPTR18); +set_reset_data( mpcore__ICDIPTR19, val_mpcore__ICDIPTR19); +set_reset_data( mpcore__ICDIPTR20, val_mpcore__ICDIPTR20); +set_reset_data( mpcore__ICDIPTR21, val_mpcore__ICDIPTR21); +set_reset_data( mpcore__ICDIPTR22, val_mpcore__ICDIPTR22); +set_reset_data( mpcore__ICDIPTR23, val_mpcore__ICDIPTR23); +set_reset_data( mpcore__ICDICFR0, val_mpcore__ICDICFR0); +set_reset_data( mpcore__ICDICFR1, val_mpcore__ICDICFR1); +set_reset_data( mpcore__ICDICFR2, val_mpcore__ICDICFR2); +set_reset_data( mpcore__ICDICFR3, val_mpcore__ICDICFR3); +set_reset_data( mpcore__ICDICFR4, val_mpcore__ICDICFR4); +set_reset_data( mpcore__ICDICFR5, val_mpcore__ICDICFR5); +set_reset_data( mpcore__ppi_status, val_mpcore__ppi_status); +set_reset_data( mpcore__spi_status_0, val_mpcore__spi_status_0); +set_reset_data( mpcore__spi_status_1, val_mpcore__spi_status_1); +set_reset_data( mpcore__ICDSGIR, val_mpcore__ICDSGIR); +set_reset_data( mpcore__ICPIDR4, val_mpcore__ICPIDR4); +set_reset_data( mpcore__ICPIDR5, val_mpcore__ICPIDR5); +set_reset_data( mpcore__ICPIDR6, val_mpcore__ICPIDR6); +set_reset_data( mpcore__ICPIDR7, val_mpcore__ICPIDR7); +set_reset_data( mpcore__ICPIDR0, val_mpcore__ICPIDR0); +set_reset_data( mpcore__ICPIDR1, val_mpcore__ICPIDR1); +set_reset_data( mpcore__ICPIDR2, val_mpcore__ICPIDR2); +set_reset_data( mpcore__ICPIDR3, val_mpcore__ICPIDR3); +set_reset_data( mpcore__ICCIDR0, val_mpcore__ICCIDR0); +set_reset_data( mpcore__ICCIDR1, val_mpcore__ICCIDR1); +set_reset_data( mpcore__ICCIDR2, val_mpcore__ICCIDR2); +set_reset_data( mpcore__ICCIDR3, val_mpcore__ICCIDR3); + +// ************************************************************ +// Module ocm ocm +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( ocm__OCM_PARITY_CTRL, val_ocm__OCM_PARITY_CTRL); +set_reset_data( ocm__OCM_PARITY_ERRADDRESS, val_ocm__OCM_PARITY_ERRADDRESS); +set_reset_data( ocm__OCM_IRQ_STS, val_ocm__OCM_IRQ_STS); +set_reset_data( ocm__OCM_CONTROL, val_ocm__OCM_CONTROL); + +// ************************************************************ +// Module qspi qspi +// doc version: 0.8, based on 11/01/10 Linear Quad-SPI Controller +/// Design Specification document +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( qspi__Config_reg, val_qspi__Config_reg); +set_reset_data( qspi__Intr_status_REG, val_qspi__Intr_status_REG); +set_reset_data( qspi__Intrpt_en_REG, val_qspi__Intrpt_en_REG); +set_reset_data( qspi__Intrpt_dis_REG, val_qspi__Intrpt_dis_REG); +set_reset_data( qspi__Intrpt_mask_REG, val_qspi__Intrpt_mask_REG); +set_reset_data( qspi__En_REG, val_qspi__En_REG); +set_reset_data( qspi__Delay_REG, val_qspi__Delay_REG); +set_reset_data( qspi__TXD0, val_qspi__TXD0); +set_reset_data( qspi__Rx_data_REG, val_qspi__Rx_data_REG); +set_reset_data( qspi__Slave_Idle_count_REG, val_qspi__Slave_Idle_count_REG); +set_reset_data( qspi__TX_thres_REG, val_qspi__TX_thres_REG); +set_reset_data( qspi__RX_thres_REG, val_qspi__RX_thres_REG); +set_reset_data( qspi__GPIO, val_qspi__GPIO); +set_reset_data( qspi__LPBK_DLY_ADJ, val_qspi__LPBK_DLY_ADJ); +set_reset_data( qspi__TXD1, val_qspi__TXD1); +set_reset_data( qspi__TXD2, val_qspi__TXD2); +set_reset_data( qspi__TXD3, val_qspi__TXD3); +set_reset_data( qspi__LQSPI_CFG, val_qspi__LQSPI_CFG); +set_reset_data( qspi__LQSPI_STS, val_qspi__LQSPI_STS); +set_reset_data( qspi__MOD_ID, val_qspi__MOD_ID); + +// ************************************************************ +// Module sd0 sdio +// doc version: 4.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( sd0__SDMA_system_address_register, val_sd0__SDMA_system_address_register); +set_reset_data( sd0__Block_Size_Block_Count, val_sd0__Block_Size_Block_Count); +set_reset_data( sd0__Argument, val_sd0__Argument); +set_reset_data( sd0__Transfer_Mode_Command, val_sd0__Transfer_Mode_Command); +set_reset_data( sd0__Response0, val_sd0__Response0); +set_reset_data( sd0__Response1, val_sd0__Response1); +set_reset_data( sd0__Response2, val_sd0__Response2); +set_reset_data( sd0__Response3, val_sd0__Response3); +set_reset_data( sd0__Buffer_Data_Port, val_sd0__Buffer_Data_Port); +set_reset_data( sd0__Present_State, val_sd0__Present_State); +set_reset_data( sd0__Host_control_Power_control_Block_Gap_Control_Wakeup_control, val_sd0__Host_control_Power_control_Block_Gap_Control_Wakeup_control); +set_reset_data( sd0__Clock_Control_Timeout_control_Software_reset, val_sd0__Clock_Control_Timeout_control_Software_reset); +set_reset_data( sd0__Normal_interrupt_status_Error_interrupt_status, val_sd0__Normal_interrupt_status_Error_interrupt_status); +set_reset_data( sd0__Normal_interrupt_status_enable_Error_interrupt_status_enable, val_sd0__Normal_interrupt_status_enable_Error_interrupt_status_enable); +set_reset_data( sd0__Normal_interrupt_signal_enable_Error_interrupt_signal_enable, val_sd0__Normal_interrupt_signal_enable_Error_interrupt_signal_enable); +set_reset_data( sd0__Auto_CMD12_error_status, val_sd0__Auto_CMD12_error_status); +set_reset_data( sd0__Capabilities, val_sd0__Capabilities); +set_reset_data( sd0__Maximum_current_capabilities, val_sd0__Maximum_current_capabilities); +set_reset_data( sd0__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status, val_sd0__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status); +set_reset_data( sd0__ADMA_error_status, val_sd0__ADMA_error_status); +set_reset_data( sd0__ADMA_system_address, val_sd0__ADMA_system_address); +set_reset_data( sd0__Boot_Timeout_control, val_sd0__Boot_Timeout_control); +set_reset_data( sd0__Debug_Selection, val_sd0__Debug_Selection); +set_reset_data( sd0__SPI_interrupt_support, val_sd0__SPI_interrupt_support); +set_reset_data( sd0__Slot_interrupt_status_Host_controller_version, val_sd0__Slot_interrupt_status_Host_controller_version); + +// ************************************************************ +// Module sd1 sdio +// doc version: 4.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( sd1__SDMA_system_address_register, val_sd1__SDMA_system_address_register); +set_reset_data( sd1__Block_Size_Block_Count, val_sd1__Block_Size_Block_Count); +set_reset_data( sd1__Argument, val_sd1__Argument); +set_reset_data( sd1__Transfer_Mode_Command, val_sd1__Transfer_Mode_Command); +set_reset_data( sd1__Response0, val_sd1__Response0); +set_reset_data( sd1__Response1, val_sd1__Response1); +set_reset_data( sd1__Response2, val_sd1__Response2); +set_reset_data( sd1__Response3, val_sd1__Response3); +set_reset_data( sd1__Buffer_Data_Port, val_sd1__Buffer_Data_Port); +set_reset_data( sd1__Present_State, val_sd1__Present_State); +set_reset_data( sd1__Host_control_Power_control_Block_Gap_Control_Wakeup_control, val_sd1__Host_control_Power_control_Block_Gap_Control_Wakeup_control); +set_reset_data( sd1__Clock_Control_Timeout_control_Software_reset, val_sd1__Clock_Control_Timeout_control_Software_reset); +set_reset_data( sd1__Normal_interrupt_status_Error_interrupt_status, val_sd1__Normal_interrupt_status_Error_interrupt_status); +set_reset_data( sd1__Normal_interrupt_status_enable_Error_interrupt_status_enable, val_sd1__Normal_interrupt_status_enable_Error_interrupt_status_enable); +set_reset_data( sd1__Normal_interrupt_signal_enable_Error_interrupt_signal_enable, val_sd1__Normal_interrupt_signal_enable_Error_interrupt_signal_enable); +set_reset_data( sd1__Auto_CMD12_error_status, val_sd1__Auto_CMD12_error_status); +set_reset_data( sd1__Capabilities, val_sd1__Capabilities); +set_reset_data( sd1__Maximum_current_capabilities, val_sd1__Maximum_current_capabilities); +set_reset_data( sd1__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status, val_sd1__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status); +set_reset_data( sd1__ADMA_error_status, val_sd1__ADMA_error_status); +set_reset_data( sd1__ADMA_system_address, val_sd1__ADMA_system_address); +set_reset_data( sd1__Boot_Timeout_control, val_sd1__Boot_Timeout_control); +set_reset_data( sd1__Debug_Selection, val_sd1__Debug_Selection); +set_reset_data( sd1__SPI_interrupt_support, val_sd1__SPI_interrupt_support); +set_reset_data( sd1__Slot_interrupt_status_Host_controller_version, val_sd1__Slot_interrupt_status_Host_controller_version); + +// ************************************************************ +// Module slcr slcr +// doc version: 1.3, based on 11/18/2010 SLCR_spec.doc +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( slcr__SCL, val_slcr__SCL); +set_reset_data( slcr__SLCR_LOCK, val_slcr__SLCR_LOCK); +set_reset_data( slcr__SLCR_UNLOCK, val_slcr__SLCR_UNLOCK); +set_reset_data( slcr__SLCR_LOCKSTA, val_slcr__SLCR_LOCKSTA); +set_reset_data( slcr__ARM_PLL_CTRL, val_slcr__ARM_PLL_CTRL); +set_reset_data( slcr__DDR_PLL_CTRL, val_slcr__DDR_PLL_CTRL); +set_reset_data( slcr__IO_PLL_CTRL, val_slcr__IO_PLL_CTRL); +set_reset_data( slcr__PLL_STATUS, val_slcr__PLL_STATUS); +set_reset_data( slcr__ARM_PLL_CFG, val_slcr__ARM_PLL_CFG); +set_reset_data( slcr__DDR_PLL_CFG, val_slcr__DDR_PLL_CFG); +set_reset_data( slcr__IO_PLL_CFG, val_slcr__IO_PLL_CFG); +set_reset_data( slcr__PLL_BG_CTRL, val_slcr__PLL_BG_CTRL); +set_reset_data( slcr__ARM_CLK_CTRL, val_slcr__ARM_CLK_CTRL); +set_reset_data( slcr__DDR_CLK_CTRL, val_slcr__DDR_CLK_CTRL); +set_reset_data( slcr__DCI_CLK_CTRL, val_slcr__DCI_CLK_CTRL); +set_reset_data( slcr__APER_CLK_CTRL, val_slcr__APER_CLK_CTRL); +set_reset_data( slcr__USB0_CLK_CTRL, val_slcr__USB0_CLK_CTRL); +set_reset_data( slcr__USB1_CLK_CTRL, val_slcr__USB1_CLK_CTRL); +set_reset_data( slcr__GEM0_RCLK_CTRL, val_slcr__GEM0_RCLK_CTRL); +set_reset_data( slcr__GEM1_RCLK_CTRL, val_slcr__GEM1_RCLK_CTRL); +set_reset_data( slcr__GEM0_CLK_CTRL, val_slcr__GEM0_CLK_CTRL); +set_reset_data( slcr__GEM1_CLK_CTRL, val_slcr__GEM1_CLK_CTRL); +set_reset_data( slcr__SMC_CLK_CTRL, val_slcr__SMC_CLK_CTRL); +set_reset_data( slcr__LQSPI_CLK_CTRL, val_slcr__LQSPI_CLK_CTRL); +set_reset_data( slcr__SDIO_CLK_CTRL, val_slcr__SDIO_CLK_CTRL); +set_reset_data( slcr__UART_CLK_CTRL, val_slcr__UART_CLK_CTRL); +set_reset_data( slcr__SPI_CLK_CTRL, val_slcr__SPI_CLK_CTRL); +set_reset_data( slcr__CAN_CLK_CTRL, val_slcr__CAN_CLK_CTRL); +set_reset_data( slcr__CAN_MIOCLK_CTRL, val_slcr__CAN_MIOCLK_CTRL); +set_reset_data( slcr__DBG_CLK_CTRL, val_slcr__DBG_CLK_CTRL); +set_reset_data( slcr__PCAP_CLK_CTRL, val_slcr__PCAP_CLK_CTRL); +set_reset_data( slcr__TOPSW_CLK_CTRL, val_slcr__TOPSW_CLK_CTRL); +set_reset_data( slcr__FPGA0_CLK_CTRL, val_slcr__FPGA0_CLK_CTRL); +set_reset_data( slcr__FPGA0_THR_CTRL, val_slcr__FPGA0_THR_CTRL); +set_reset_data( slcr__FPGA0_THR_CNT, val_slcr__FPGA0_THR_CNT); +set_reset_data( slcr__FPGA0_THR_STA, val_slcr__FPGA0_THR_STA); +set_reset_data( slcr__FPGA1_CLK_CTRL, val_slcr__FPGA1_CLK_CTRL); +set_reset_data( slcr__FPGA1_THR_CTRL, val_slcr__FPGA1_THR_CTRL); +set_reset_data( slcr__FPGA1_THR_CNT, val_slcr__FPGA1_THR_CNT); +set_reset_data( slcr__FPGA1_THR_STA, val_slcr__FPGA1_THR_STA); +set_reset_data( slcr__FPGA2_CLK_CTRL, val_slcr__FPGA2_CLK_CTRL); +set_reset_data( slcr__FPGA2_THR_CTRL, val_slcr__FPGA2_THR_CTRL); +set_reset_data( slcr__FPGA2_THR_CNT, val_slcr__FPGA2_THR_CNT); +set_reset_data( slcr__FPGA2_THR_STA, val_slcr__FPGA2_THR_STA); +set_reset_data( slcr__FPGA3_CLK_CTRL, val_slcr__FPGA3_CLK_CTRL); +set_reset_data( slcr__FPGA3_THR_CTRL, val_slcr__FPGA3_THR_CTRL); +set_reset_data( slcr__FPGA3_THR_CNT, val_slcr__FPGA3_THR_CNT); +set_reset_data( slcr__FPGA3_THR_STA, val_slcr__FPGA3_THR_STA); +set_reset_data( slcr__SRST_UART_CTRL, val_slcr__SRST_UART_CTRL); +set_reset_data( slcr__BANDGAP_TRIM, val_slcr__BANDGAP_TRIM); +set_reset_data( slcr__CC_TEST, val_slcr__CC_TEST); +set_reset_data( slcr__PLL_PREDIVISOR, val_slcr__PLL_PREDIVISOR); +set_reset_data( slcr__CLK_621_TRUE, val_slcr__CLK_621_TRUE); +set_reset_data( slcr__PICTURE_DBG, val_slcr__PICTURE_DBG); +set_reset_data( slcr__PICTURE_DBG_UCNT, val_slcr__PICTURE_DBG_UCNT); +set_reset_data( slcr__PICTURE_DBG_LCNT, val_slcr__PICTURE_DBG_LCNT); +set_reset_data( slcr__PSS_RST_CTRL, val_slcr__PSS_RST_CTRL); +set_reset_data( slcr__DDR_RST_CTRL, val_slcr__DDR_RST_CTRL); +set_reset_data( slcr__TOPSW_RST_CTRL, val_slcr__TOPSW_RST_CTRL); +set_reset_data( slcr__DMAC_RST_CTRL, val_slcr__DMAC_RST_CTRL); +set_reset_data( slcr__USB_RST_CTRL, val_slcr__USB_RST_CTRL); +set_reset_data( slcr__GEM_RST_CTRL, val_slcr__GEM_RST_CTRL); +set_reset_data( slcr__SDIO_RST_CTRL, val_slcr__SDIO_RST_CTRL); +set_reset_data( slcr__SPI_RST_CTRL, val_slcr__SPI_RST_CTRL); +set_reset_data( slcr__CAN_RST_CTRL, val_slcr__CAN_RST_CTRL); +set_reset_data( slcr__I2C_RST_CTRL, val_slcr__I2C_RST_CTRL); +set_reset_data( slcr__UART_RST_CTRL, val_slcr__UART_RST_CTRL); +set_reset_data( slcr__GPIO_RST_CTRL, val_slcr__GPIO_RST_CTRL); +set_reset_data( slcr__LQSPI_RST_CTRL, val_slcr__LQSPI_RST_CTRL); +set_reset_data( slcr__SMC_RST_CTRL, val_slcr__SMC_RST_CTRL); +set_reset_data( slcr__OCM_RST_CTRL, val_slcr__OCM_RST_CTRL); +set_reset_data( slcr__DEVCI_RST_CTRL, val_slcr__DEVCI_RST_CTRL); +set_reset_data( slcr__FPGA_RST_CTRL, val_slcr__FPGA_RST_CTRL); +set_reset_data( slcr__A9_CPU_RST_CTRL, val_slcr__A9_CPU_RST_CTRL); +set_reset_data( slcr__RS_AWDT_CTRL, val_slcr__RS_AWDT_CTRL); +set_reset_data( slcr__RST_REASON, val_slcr__RST_REASON); +set_reset_data( slcr__RST_REASON_CLR, val_slcr__RST_REASON_CLR); +set_reset_data( slcr__REBOOT_STATUS, val_slcr__REBOOT_STATUS); +set_reset_data( slcr__BOOT_MODE, val_slcr__BOOT_MODE); +set_reset_data( slcr__APU_CTRL, val_slcr__APU_CTRL); +set_reset_data( slcr__WDT_CLK_SEL, val_slcr__WDT_CLK_SEL); +set_reset_data( slcr__TZ_OCM_RAM0, val_slcr__TZ_OCM_RAM0); +set_reset_data( slcr__TZ_OCM_RAM1, val_slcr__TZ_OCM_RAM1); +set_reset_data( slcr__TZ_OCM_ROM, val_slcr__TZ_OCM_ROM); +set_reset_data( slcr__TZ_DDR_RAM, val_slcr__TZ_DDR_RAM); +set_reset_data( slcr__TZ_DMA_NS, val_slcr__TZ_DMA_NS); +set_reset_data( slcr__TZ_DMA_IRQ_NS, val_slcr__TZ_DMA_IRQ_NS); +set_reset_data( slcr__TZ_DMA_PERIPH_NS, val_slcr__TZ_DMA_PERIPH_NS); +set_reset_data( slcr__TZ_GEM, val_slcr__TZ_GEM); +set_reset_data( slcr__TZ_SDIO, val_slcr__TZ_SDIO); +set_reset_data( slcr__TZ_USB, val_slcr__TZ_USB); +set_reset_data( slcr__TZ_FPGA_M, val_slcr__TZ_FPGA_M); +set_reset_data( slcr__TZ_FPGA_AFI, val_slcr__TZ_FPGA_AFI); +set_reset_data( slcr__DBG_CTRL, val_slcr__DBG_CTRL); +set_reset_data( slcr__PSS_IDCODE, val_slcr__PSS_IDCODE); +set_reset_data( slcr__DDR_URGENT, val_slcr__DDR_URGENT); +set_reset_data( slcr__DDR_CAL_START, val_slcr__DDR_CAL_START); +set_reset_data( slcr__DDR_REF_START, val_slcr__DDR_REF_START); +set_reset_data( slcr__DDR_CMD_STA, val_slcr__DDR_CMD_STA); +set_reset_data( slcr__DDR_URGENT_SEL, val_slcr__DDR_URGENT_SEL); +set_reset_data( slcr__DDR_DFI_STATUS, val_slcr__DDR_DFI_STATUS); +set_reset_data( slcr__MIO_PIN_00, val_slcr__MIO_PIN_00); +set_reset_data( slcr__MIO_PIN_01, val_slcr__MIO_PIN_01); +set_reset_data( slcr__MIO_PIN_02, val_slcr__MIO_PIN_02); +set_reset_data( slcr__MIO_PIN_03, val_slcr__MIO_PIN_03); +set_reset_data( slcr__MIO_PIN_04, val_slcr__MIO_PIN_04); +set_reset_data( slcr__MIO_PIN_05, val_slcr__MIO_PIN_05); +set_reset_data( slcr__MIO_PIN_06, val_slcr__MIO_PIN_06); +set_reset_data( slcr__MIO_PIN_07, val_slcr__MIO_PIN_07); +set_reset_data( slcr__MIO_PIN_08, val_slcr__MIO_PIN_08); +set_reset_data( slcr__MIO_PIN_09, val_slcr__MIO_PIN_09); +set_reset_data( slcr__MIO_PIN_10, val_slcr__MIO_PIN_10); +set_reset_data( slcr__MIO_PIN_11, val_slcr__MIO_PIN_11); +set_reset_data( slcr__MIO_PIN_12, val_slcr__MIO_PIN_12); +set_reset_data( slcr__MIO_PIN_13, val_slcr__MIO_PIN_13); +set_reset_data( slcr__MIO_PIN_14, val_slcr__MIO_PIN_14); +set_reset_data( slcr__MIO_PIN_15, val_slcr__MIO_PIN_15); +set_reset_data( slcr__MIO_PIN_16, val_slcr__MIO_PIN_16); +set_reset_data( slcr__MIO_PIN_17, val_slcr__MIO_PIN_17); +set_reset_data( slcr__MIO_PIN_18, val_slcr__MIO_PIN_18); +set_reset_data( slcr__MIO_PIN_19, val_slcr__MIO_PIN_19); +set_reset_data( slcr__MIO_PIN_20, val_slcr__MIO_PIN_20); +set_reset_data( slcr__MIO_PIN_21, val_slcr__MIO_PIN_21); +set_reset_data( slcr__MIO_PIN_22, val_slcr__MIO_PIN_22); +set_reset_data( slcr__MIO_PIN_23, val_slcr__MIO_PIN_23); +set_reset_data( slcr__MIO_PIN_24, val_slcr__MIO_PIN_24); +set_reset_data( slcr__MIO_PIN_25, val_slcr__MIO_PIN_25); +set_reset_data( slcr__MIO_PIN_26, val_slcr__MIO_PIN_26); +set_reset_data( slcr__MIO_PIN_27, val_slcr__MIO_PIN_27); +set_reset_data( slcr__MIO_PIN_28, val_slcr__MIO_PIN_28); +set_reset_data( slcr__MIO_PIN_29, val_slcr__MIO_PIN_29); +set_reset_data( slcr__MIO_PIN_30, val_slcr__MIO_PIN_30); +set_reset_data( slcr__MIO_PIN_31, val_slcr__MIO_PIN_31); +set_reset_data( slcr__MIO_PIN_32, val_slcr__MIO_PIN_32); +set_reset_data( slcr__MIO_PIN_33, val_slcr__MIO_PIN_33); +set_reset_data( slcr__MIO_PIN_34, val_slcr__MIO_PIN_34); +set_reset_data( slcr__MIO_PIN_35, val_slcr__MIO_PIN_35); +set_reset_data( slcr__MIO_PIN_36, val_slcr__MIO_PIN_36); +set_reset_data( slcr__MIO_PIN_37, val_slcr__MIO_PIN_37); +set_reset_data( slcr__MIO_PIN_38, val_slcr__MIO_PIN_38); +set_reset_data( slcr__MIO_PIN_39, val_slcr__MIO_PIN_39); +set_reset_data( slcr__MIO_PIN_40, val_slcr__MIO_PIN_40); +set_reset_data( slcr__MIO_PIN_41, val_slcr__MIO_PIN_41); +set_reset_data( slcr__MIO_PIN_42, val_slcr__MIO_PIN_42); +set_reset_data( slcr__MIO_PIN_43, val_slcr__MIO_PIN_43); +set_reset_data( slcr__MIO_PIN_44, val_slcr__MIO_PIN_44); +set_reset_data( slcr__MIO_PIN_45, val_slcr__MIO_PIN_45); +set_reset_data( slcr__MIO_PIN_46, val_slcr__MIO_PIN_46); +set_reset_data( slcr__MIO_PIN_47, val_slcr__MIO_PIN_47); +set_reset_data( slcr__MIO_PIN_48, val_slcr__MIO_PIN_48); +set_reset_data( slcr__MIO_PIN_49, val_slcr__MIO_PIN_49); +set_reset_data( slcr__MIO_PIN_50, val_slcr__MIO_PIN_50); +set_reset_data( slcr__MIO_PIN_51, val_slcr__MIO_PIN_51); +set_reset_data( slcr__MIO_PIN_52, val_slcr__MIO_PIN_52); +set_reset_data( slcr__MIO_PIN_53, val_slcr__MIO_PIN_53); +set_reset_data( slcr__MIO_FMIO_GEM_SEL, val_slcr__MIO_FMIO_GEM_SEL); +set_reset_data( slcr__MIO_LOOPBACK, val_slcr__MIO_LOOPBACK); +set_reset_data( slcr__MIO_MST_TRI0, val_slcr__MIO_MST_TRI0); +set_reset_data( slcr__MIO_MST_TRI1, val_slcr__MIO_MST_TRI1); +set_reset_data( slcr__SD0_WP_CD_SEL, val_slcr__SD0_WP_CD_SEL); +set_reset_data( slcr__SD1_WP_CD_SEL, val_slcr__SD1_WP_CD_SEL); +set_reset_data( slcr__LVL_SHFTR_EN, val_slcr__LVL_SHFTR_EN); +set_reset_data( slcr__OCM_CFG, val_slcr__OCM_CFG); +set_reset_data( slcr__CPU0_RAM0, val_slcr__CPU0_RAM0); +set_reset_data( slcr__CPU0_RAM1, val_slcr__CPU0_RAM1); +set_reset_data( slcr__CPU0_RAM2, val_slcr__CPU0_RAM2); +set_reset_data( slcr__CPU1_RAM0, val_slcr__CPU1_RAM0); +set_reset_data( slcr__CPU1_RAM1, val_slcr__CPU1_RAM1); +set_reset_data( slcr__CPU1_RAM2, val_slcr__CPU1_RAM2); +set_reset_data( slcr__SCU_RAM, val_slcr__SCU_RAM); +set_reset_data( slcr__L2C_RAM, val_slcr__L2C_RAM); +set_reset_data( slcr__IOU_RAM_GEM01, val_slcr__IOU_RAM_GEM01); +set_reset_data( slcr__IOU_RAM_USB01, val_slcr__IOU_RAM_USB01); +set_reset_data( slcr__IOU_RAM_SDIO0, val_slcr__IOU_RAM_SDIO0); +set_reset_data( slcr__IOU_RAM_SDIO1, val_slcr__IOU_RAM_SDIO1); +set_reset_data( slcr__IOU_RAM_CAN0, val_slcr__IOU_RAM_CAN0); +set_reset_data( slcr__IOU_RAM_CAN1, val_slcr__IOU_RAM_CAN1); +set_reset_data( slcr__IOU_RAM_LQSPI, val_slcr__IOU_RAM_LQSPI); +set_reset_data( slcr__DMAC_RAM, val_slcr__DMAC_RAM); +set_reset_data( slcr__AFI0_RAM0, val_slcr__AFI0_RAM0); +set_reset_data( slcr__AFI0_RAM1, val_slcr__AFI0_RAM1); +set_reset_data( slcr__AFI0_RAM2, val_slcr__AFI0_RAM2); +set_reset_data( slcr__AFI1_RAM0, val_slcr__AFI1_RAM0); +set_reset_data( slcr__AFI1_RAM1, val_slcr__AFI1_RAM1); +set_reset_data( slcr__AFI1_RAM2, val_slcr__AFI1_RAM2); +set_reset_data( slcr__AFI2_RAM0, val_slcr__AFI2_RAM0); +set_reset_data( slcr__AFI2_RAM1, val_slcr__AFI2_RAM1); +set_reset_data( slcr__AFI2_RAM2, val_slcr__AFI2_RAM2); +set_reset_data( slcr__AFI3_RAM0, val_slcr__AFI3_RAM0); +set_reset_data( slcr__AFI3_RAM1, val_slcr__AFI3_RAM1); +set_reset_data( slcr__AFI3_RAM2, val_slcr__AFI3_RAM2); +set_reset_data( slcr__OCM_RAM, val_slcr__OCM_RAM); +set_reset_data( slcr__OCM_ROM0, val_slcr__OCM_ROM0); +set_reset_data( slcr__OCM_ROM1, val_slcr__OCM_ROM1); +set_reset_data( slcr__DEVCI_RAM, val_slcr__DEVCI_RAM); +set_reset_data( slcr__CSG_RAM, val_slcr__CSG_RAM); +set_reset_data( slcr__GPIOB_CTRL, val_slcr__GPIOB_CTRL); +set_reset_data( slcr__GPIOB_CFG_CMOS18, val_slcr__GPIOB_CFG_CMOS18); +set_reset_data( slcr__GPIOB_CFG_CMOS25, val_slcr__GPIOB_CFG_CMOS25); +set_reset_data( slcr__GPIOB_CFG_CMOS33, val_slcr__GPIOB_CFG_CMOS33); +set_reset_data( slcr__GPIOB_CFG_LVTTL, val_slcr__GPIOB_CFG_LVTTL); +set_reset_data( slcr__GPIOB_CFG_HSTL, val_slcr__GPIOB_CFG_HSTL); +set_reset_data( slcr__GPIOB_DRVR_BIAS_CTRL, val_slcr__GPIOB_DRVR_BIAS_CTRL); +set_reset_data( slcr__DDRIOB_ADDR0, val_slcr__DDRIOB_ADDR0); +set_reset_data( slcr__DDRIOB_ADDR1, val_slcr__DDRIOB_ADDR1); +set_reset_data( slcr__DDRIOB_DATA0, val_slcr__DDRIOB_DATA0); +set_reset_data( slcr__DDRIOB_DATA1, val_slcr__DDRIOB_DATA1); +set_reset_data( slcr__DDRIOB_DIFF0, val_slcr__DDRIOB_DIFF0); +set_reset_data( slcr__DDRIOB_DIFF1, val_slcr__DDRIOB_DIFF1); +set_reset_data( slcr__DDRIOB_CLOCK, val_slcr__DDRIOB_CLOCK); +set_reset_data( slcr__DDRIOB_DRIVE_SLEW_ADDR, val_slcr__DDRIOB_DRIVE_SLEW_ADDR); +set_reset_data( slcr__DDRIOB_DRIVE_SLEW_DATA, val_slcr__DDRIOB_DRIVE_SLEW_DATA); +set_reset_data( slcr__DDRIOB_DRIVE_SLEW_DIFF, val_slcr__DDRIOB_DRIVE_SLEW_DIFF); +set_reset_data( slcr__DDRIOB_DRIVE_SLEW_CLOCK, val_slcr__DDRIOB_DRIVE_SLEW_CLOCK); +set_reset_data( slcr__DDRIOB_DDR_CTRL, val_slcr__DDRIOB_DDR_CTRL); +set_reset_data( slcr__DDRIOB_DCI_CTRL, val_slcr__DDRIOB_DCI_CTRL); +set_reset_data( slcr__DDRIOB_DCI_STATUS, val_slcr__DDRIOB_DCI_STATUS); + +// ************************************************************ +// Module smcc pl353 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( smcc__memc_status, val_smcc__memc_status); +set_reset_data( smcc__memif_cfg, val_smcc__memif_cfg); +set_reset_data( smcc__memc_cfg_set, val_smcc__memc_cfg_set); +set_reset_data( smcc__memc_cfg_clr, val_smcc__memc_cfg_clr); +set_reset_data( smcc__direct_cmd, val_smcc__direct_cmd); +set_reset_data( smcc__set_cycles, val_smcc__set_cycles); +set_reset_data( smcc__set_opmode, val_smcc__set_opmode); +set_reset_data( smcc__refresh_period_0, val_smcc__refresh_period_0); +set_reset_data( smcc__refresh_period_1, val_smcc__refresh_period_1); +set_reset_data( smcc__sram_cycles0_0, val_smcc__sram_cycles0_0); +set_reset_data( smcc__opmode0_0, val_smcc__opmode0_0); +set_reset_data( smcc__sram_cycles0_1, val_smcc__sram_cycles0_1); +set_reset_data( smcc__opmode0_1, val_smcc__opmode0_1); +set_reset_data( smcc__nand_cycles1_0, val_smcc__nand_cycles1_0); +set_reset_data( smcc__opmode1_0, val_smcc__opmode1_0); +set_reset_data( smcc__user_status, val_smcc__user_status); +set_reset_data( smcc__user_config, val_smcc__user_config); +set_reset_data( smcc__ecc_status_0, val_smcc__ecc_status_0); +set_reset_data( smcc__ecc_memcfg_0, val_smcc__ecc_memcfg_0); +set_reset_data( smcc__ecc_memcommand1_0, val_smcc__ecc_memcommand1_0); +set_reset_data( smcc__ecc_memcommand2_0, val_smcc__ecc_memcommand2_0); +set_reset_data( smcc__ecc_addr0_0, val_smcc__ecc_addr0_0); +set_reset_data( smcc__ecc_addr1_0, val_smcc__ecc_addr1_0); +set_reset_data( smcc__ecc_value0_0, val_smcc__ecc_value0_0); +set_reset_data( smcc__ecc_value1_0, val_smcc__ecc_value1_0); +set_reset_data( smcc__ecc_value2_0, val_smcc__ecc_value2_0); +set_reset_data( smcc__ecc_value3_0, val_smcc__ecc_value3_0); +set_reset_data( smcc__ecc_status_1, val_smcc__ecc_status_1); +set_reset_data( smcc__ecc_memcfg_1, val_smcc__ecc_memcfg_1); +set_reset_data( smcc__ecc_memcommand1_1, val_smcc__ecc_memcommand1_1); +set_reset_data( smcc__ecc_memcommand2_1, val_smcc__ecc_memcommand2_1); +set_reset_data( smcc__ecc_addr0_1, val_smcc__ecc_addr0_1); +set_reset_data( smcc__ecc_addr1_1, val_smcc__ecc_addr1_1); +set_reset_data( smcc__ecc_value0_1, val_smcc__ecc_value0_1); +set_reset_data( smcc__ecc_value1_1, val_smcc__ecc_value1_1); +set_reset_data( smcc__ecc_value2_1, val_smcc__ecc_value2_1); +set_reset_data( smcc__ecc_value3_1, val_smcc__ecc_value3_1); +set_reset_data( smcc__integration_test, val_smcc__integration_test); +set_reset_data( smcc__periph_id_0, val_smcc__periph_id_0); +set_reset_data( smcc__periph_id_1, val_smcc__periph_id_1); +set_reset_data( smcc__periph_id_2, val_smcc__periph_id_2); +set_reset_data( smcc__periph_id_3, val_smcc__periph_id_3); +set_reset_data( smcc__pcell_id_0, val_smcc__pcell_id_0); +set_reset_data( smcc__pcell_id_1, val_smcc__pcell_id_1); +set_reset_data( smcc__pcell_id_2, val_smcc__pcell_id_2); +set_reset_data( smcc__pcell_id_3, val_smcc__pcell_id_3); + +// ************************************************************ +// Module spi0 SPI +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( spi0__Config_reg0, val_spi0__Config_reg0); +set_reset_data( spi0__Intr_status_reg0, val_spi0__Intr_status_reg0); +set_reset_data( spi0__Intrpt_en_reg0, val_spi0__Intrpt_en_reg0); +set_reset_data( spi0__Intrpt_dis_reg0, val_spi0__Intrpt_dis_reg0); +set_reset_data( spi0__Intrpt_mask_reg0, val_spi0__Intrpt_mask_reg0); +set_reset_data( spi0__En_reg0, val_spi0__En_reg0); +set_reset_data( spi0__Delay_reg0, val_spi0__Delay_reg0); +set_reset_data( spi0__Tx_data_reg0, val_spi0__Tx_data_reg0); +set_reset_data( spi0__Rx_data_reg0, val_spi0__Rx_data_reg0); +set_reset_data( spi0__Slave_Idle_count_reg0, val_spi0__Slave_Idle_count_reg0); +set_reset_data( spi0__TX_thres_reg0, val_spi0__TX_thres_reg0); +set_reset_data( spi0__RX_thres_reg0, val_spi0__RX_thres_reg0); +set_reset_data( spi0__Mod_id_reg0, val_spi0__Mod_id_reg0); + +// ************************************************************ +// Module spi1 SPI +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( spi1__Config_reg0, val_spi1__Config_reg0); +set_reset_data( spi1__Intr_status_reg0, val_spi1__Intr_status_reg0); +set_reset_data( spi1__Intrpt_en_reg0, val_spi1__Intrpt_en_reg0); +set_reset_data( spi1__Intrpt_dis_reg0, val_spi1__Intrpt_dis_reg0); +set_reset_data( spi1__Intrpt_mask_reg0, val_spi1__Intrpt_mask_reg0); +set_reset_data( spi1__En_reg0, val_spi1__En_reg0); +set_reset_data( spi1__Delay_reg0, val_spi1__Delay_reg0); +set_reset_data( spi1__Tx_data_reg0, val_spi1__Tx_data_reg0); +set_reset_data( spi1__Rx_data_reg0, val_spi1__Rx_data_reg0); +set_reset_data( spi1__Slave_Idle_count_reg0, val_spi1__Slave_Idle_count_reg0); +set_reset_data( spi1__TX_thres_reg0, val_spi1__TX_thres_reg0); +set_reset_data( spi1__RX_thres_reg0, val_spi1__RX_thres_reg0); +set_reset_data( spi1__Mod_id_reg0, val_spi1__Mod_id_reg0); + +// ************************************************************ +// Module swdt swdt +// doc version: 2.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( swdt__MODE, val_swdt__MODE); +set_reset_data( swdt__CONTROL, val_swdt__CONTROL); +set_reset_data( swdt__RESTART, val_swdt__RESTART); +set_reset_data( swdt__STATUS, val_swdt__STATUS); + +// ************************************************************ +// Module ttc0 ttc +// doc version: 2.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( ttc0__Clock_Control_1, val_ttc0__Clock_Control_1); +set_reset_data( ttc0__Clock_Control_2, val_ttc0__Clock_Control_2); +set_reset_data( ttc0__Clock_Control_3, val_ttc0__Clock_Control_3); +set_reset_data( ttc0__Counter_Control_1, val_ttc0__Counter_Control_1); +set_reset_data( ttc0__Counter_Control_2, val_ttc0__Counter_Control_2); +set_reset_data( ttc0__Counter_Control_3, val_ttc0__Counter_Control_3); +set_reset_data( ttc0__Counter_Value_1, val_ttc0__Counter_Value_1); +set_reset_data( ttc0__Counter_Value_2, val_ttc0__Counter_Value_2); +set_reset_data( ttc0__Counter_Value_3, val_ttc0__Counter_Value_3); +set_reset_data( ttc0__Interval_Counter_1, val_ttc0__Interval_Counter_1); +set_reset_data( ttc0__Interval_Counter_2, val_ttc0__Interval_Counter_2); +set_reset_data( ttc0__Interval_Counter_3, val_ttc0__Interval_Counter_3); +set_reset_data( ttc0__Match_1_Counter_1, val_ttc0__Match_1_Counter_1); +set_reset_data( ttc0__Match_1_Counter_2, val_ttc0__Match_1_Counter_2); +set_reset_data( ttc0__Match_1_Counter_3, val_ttc0__Match_1_Counter_3); +set_reset_data( ttc0__Match_2_Counter_1, val_ttc0__Match_2_Counter_1); +set_reset_data( ttc0__Match_2_Counter_2, val_ttc0__Match_2_Counter_2); +set_reset_data( ttc0__Match_2_Counter_3, val_ttc0__Match_2_Counter_3); +set_reset_data( ttc0__Match_3_Counter_1, val_ttc0__Match_3_Counter_1); +set_reset_data( ttc0__Match_3_Counter_2, val_ttc0__Match_3_Counter_2); +set_reset_data( ttc0__Match_3_Counter_3, val_ttc0__Match_3_Counter_3); +set_reset_data( ttc0__Interrupt_Register_1, val_ttc0__Interrupt_Register_1); +set_reset_data( ttc0__Interrupt_Register_2, val_ttc0__Interrupt_Register_2); +set_reset_data( ttc0__Interrupt_Register_3, val_ttc0__Interrupt_Register_3); +set_reset_data( ttc0__Interrupt_Enable_1, val_ttc0__Interrupt_Enable_1); +set_reset_data( ttc0__Interrupt_Enable_2, val_ttc0__Interrupt_Enable_2); +set_reset_data( ttc0__Interrupt_Enable_3, val_ttc0__Interrupt_Enable_3); +set_reset_data( ttc0__Event_Control_Timer_1, val_ttc0__Event_Control_Timer_1); +set_reset_data( ttc0__Event_Control_Timer_2, val_ttc0__Event_Control_Timer_2); +set_reset_data( ttc0__Event_Control_Timer_3, val_ttc0__Event_Control_Timer_3); +set_reset_data( ttc0__Event_Register_1, val_ttc0__Event_Register_1); +set_reset_data( ttc0__Event_Register_2, val_ttc0__Event_Register_2); +set_reset_data( ttc0__Event_Register_3, val_ttc0__Event_Register_3); + +// ************************************************************ +// Module ttc1 ttc +// doc version: 2.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( ttc1__Clock_Control_1, val_ttc1__Clock_Control_1); +set_reset_data( ttc1__Clock_Control_2, val_ttc1__Clock_Control_2); +set_reset_data( ttc1__Clock_Control_3, val_ttc1__Clock_Control_3); +set_reset_data( ttc1__Counter_Control_1, val_ttc1__Counter_Control_1); +set_reset_data( ttc1__Counter_Control_2, val_ttc1__Counter_Control_2); +set_reset_data( ttc1__Counter_Control_3, val_ttc1__Counter_Control_3); +set_reset_data( ttc1__Counter_Value_1, val_ttc1__Counter_Value_1); +set_reset_data( ttc1__Counter_Value_2, val_ttc1__Counter_Value_2); +set_reset_data( ttc1__Counter_Value_3, val_ttc1__Counter_Value_3); +set_reset_data( ttc1__Interval_Counter_1, val_ttc1__Interval_Counter_1); +set_reset_data( ttc1__Interval_Counter_2, val_ttc1__Interval_Counter_2); +set_reset_data( ttc1__Interval_Counter_3, val_ttc1__Interval_Counter_3); +set_reset_data( ttc1__Match_1_Counter_1, val_ttc1__Match_1_Counter_1); +set_reset_data( ttc1__Match_1_Counter_2, val_ttc1__Match_1_Counter_2); +set_reset_data( ttc1__Match_1_Counter_3, val_ttc1__Match_1_Counter_3); +set_reset_data( ttc1__Match_2_Counter_1, val_ttc1__Match_2_Counter_1); +set_reset_data( ttc1__Match_2_Counter_2, val_ttc1__Match_2_Counter_2); +set_reset_data( ttc1__Match_2_Counter_3, val_ttc1__Match_2_Counter_3); +set_reset_data( ttc1__Match_3_Counter_1, val_ttc1__Match_3_Counter_1); +set_reset_data( ttc1__Match_3_Counter_2, val_ttc1__Match_3_Counter_2); +set_reset_data( ttc1__Match_3_Counter_3, val_ttc1__Match_3_Counter_3); +set_reset_data( ttc1__Interrupt_Register_1, val_ttc1__Interrupt_Register_1); +set_reset_data( ttc1__Interrupt_Register_2, val_ttc1__Interrupt_Register_2); +set_reset_data( ttc1__Interrupt_Register_3, val_ttc1__Interrupt_Register_3); +set_reset_data( ttc1__Interrupt_Enable_1, val_ttc1__Interrupt_Enable_1); +set_reset_data( ttc1__Interrupt_Enable_2, val_ttc1__Interrupt_Enable_2); +set_reset_data( ttc1__Interrupt_Enable_3, val_ttc1__Interrupt_Enable_3); +set_reset_data( ttc1__Event_Control_Timer_1, val_ttc1__Event_Control_Timer_1); +set_reset_data( ttc1__Event_Control_Timer_2, val_ttc1__Event_Control_Timer_2); +set_reset_data( ttc1__Event_Control_Timer_3, val_ttc1__Event_Control_Timer_3); +set_reset_data( ttc1__Event_Register_1, val_ttc1__Event_Register_1); +set_reset_data( ttc1__Event_Register_2, val_ttc1__Event_Register_2); +set_reset_data( ttc1__Event_Register_3, val_ttc1__Event_Register_3); + +// ************************************************************ +// Module uart0 UART +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( uart0__Control_reg0, val_uart0__Control_reg0); +set_reset_data( uart0__mode_reg0, val_uart0__mode_reg0); +set_reset_data( uart0__Intrpt_en_reg0, val_uart0__Intrpt_en_reg0); +set_reset_data( uart0__Intrpt_dis_reg0, val_uart0__Intrpt_dis_reg0); +set_reset_data( uart0__Intrpt_mask_reg0, val_uart0__Intrpt_mask_reg0); +set_reset_data( uart0__Chnl_int_sts_reg0, val_uart0__Chnl_int_sts_reg0); +set_reset_data( uart0__Baud_rate_gen_reg0, val_uart0__Baud_rate_gen_reg0); +set_reset_data( uart0__Rcvr_timeout_reg0, val_uart0__Rcvr_timeout_reg0); +set_reset_data( uart0__Rcvr_FIFO_trigger_level0, val_uart0__Rcvr_FIFO_trigger_level0); +set_reset_data( uart0__Modem_ctrl_reg0, val_uart0__Modem_ctrl_reg0); +set_reset_data( uart0__Modem_sts_reg0, val_uart0__Modem_sts_reg0); +set_reset_data( uart0__Channel_sts_reg0, val_uart0__Channel_sts_reg0); +set_reset_data( uart0__TX_RX_FIFO0, val_uart0__TX_RX_FIFO0); +set_reset_data( uart0__Baud_rate_divider_reg0, val_uart0__Baud_rate_divider_reg0); +set_reset_data( uart0__Flow_delay_reg0, val_uart0__Flow_delay_reg0); +set_reset_data( uart0__IR_min_rcv_pulse_wdth0, val_uart0__IR_min_rcv_pulse_wdth0); +set_reset_data( uart0__IR_transmitted_pulse_wdth0, val_uart0__IR_transmitted_pulse_wdth0); +set_reset_data( uart0__Tx_FIFO_trigger_level0, val_uart0__Tx_FIFO_trigger_level0); + +// ************************************************************ +// Module uart1 UART +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( uart1__Control_reg0, val_uart1__Control_reg0); +set_reset_data( uart1__mode_reg0, val_uart1__mode_reg0); +set_reset_data( uart1__Intrpt_en_reg0, val_uart1__Intrpt_en_reg0); +set_reset_data( uart1__Intrpt_dis_reg0, val_uart1__Intrpt_dis_reg0); +set_reset_data( uart1__Intrpt_mask_reg0, val_uart1__Intrpt_mask_reg0); +set_reset_data( uart1__Chnl_int_sts_reg0, val_uart1__Chnl_int_sts_reg0); +set_reset_data( uart1__Baud_rate_gen_reg0, val_uart1__Baud_rate_gen_reg0); +set_reset_data( uart1__Rcvr_timeout_reg0, val_uart1__Rcvr_timeout_reg0); +set_reset_data( uart1__Rcvr_FIFO_trigger_level0, val_uart1__Rcvr_FIFO_trigger_level0); +set_reset_data( uart1__Modem_ctrl_reg0, val_uart1__Modem_ctrl_reg0); +set_reset_data( uart1__Modem_sts_reg0, val_uart1__Modem_sts_reg0); +set_reset_data( uart1__Channel_sts_reg0, val_uart1__Channel_sts_reg0); +set_reset_data( uart1__TX_RX_FIFO0, val_uart1__TX_RX_FIFO0); +set_reset_data( uart1__Baud_rate_divider_reg0, val_uart1__Baud_rate_divider_reg0); +set_reset_data( uart1__Flow_delay_reg0, val_uart1__Flow_delay_reg0); +set_reset_data( uart1__IR_min_rcv_pulse_wdth0, val_uart1__IR_min_rcv_pulse_wdth0); +set_reset_data( uart1__IR_transmitted_pulse_wdth0, val_uart1__IR_transmitted_pulse_wdth0); +set_reset_data( uart1__Tx_FIFO_trigger_level0, val_uart1__Tx_FIFO_trigger_level0); + +// ************************************************************ +// Module usb0 usb +// doc version: 1.3 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( usb0__ID, val_usb0__ID); +set_reset_data( usb0__HWGENERAL, val_usb0__HWGENERAL); +set_reset_data( usb0__HWHOST, val_usb0__HWHOST); +set_reset_data( usb0__HWDEVICE, val_usb0__HWDEVICE); +set_reset_data( usb0__HWTXBUF, val_usb0__HWTXBUF); +set_reset_data( usb0__HWRXBUF, val_usb0__HWRXBUF); +set_reset_data( usb0__GPTIMER0LD, val_usb0__GPTIMER0LD); +set_reset_data( usb0__GPTIMER0CTRL, val_usb0__GPTIMER0CTRL); +set_reset_data( usb0__GPTIMER1LD, val_usb0__GPTIMER1LD); +set_reset_data( usb0__GPTIMER1CTRL, val_usb0__GPTIMER1CTRL); +set_reset_data( usb0__SBUSCFG, val_usb0__SBUSCFG); +set_reset_data( usb0__CAPLENGTH_HCIVERSION, val_usb0__CAPLENGTH_HCIVERSION); +set_reset_data( usb0__HCSPARAMS, val_usb0__HCSPARAMS); +set_reset_data( usb0__HCCPARAMS, val_usb0__HCCPARAMS); +set_reset_data( usb0__DCIVERSION, val_usb0__DCIVERSION); +set_reset_data( usb0__DCCPARAMS, val_usb0__DCCPARAMS); +set_reset_data( usb0__USBCMD, val_usb0__USBCMD); +set_reset_data( usb0__USBSTS, val_usb0__USBSTS); +set_reset_data( usb0__USBINTR, val_usb0__USBINTR); +set_reset_data( usb0__FRINDEX, val_usb0__FRINDEX); +set_reset_data( usb0__PERIODICLISTBASE_DEVICEADDR, val_usb0__PERIODICLISTBASE_DEVICEADDR); +set_reset_data( usb0__ASYNCLISTADDR_ENDPOINTLISTADDR, val_usb0__ASYNCLISTADDR_ENDPOINTLISTADDR); +set_reset_data( usb0__TTCTRL, val_usb0__TTCTRL); +set_reset_data( usb0__BURSTSIZE, val_usb0__BURSTSIZE); +set_reset_data( usb0__TXFILLTUNING, val_usb0__TXFILLTUNING); +set_reset_data( usb0__TXTTFILLTUNING, val_usb0__TXTTFILLTUNING); +set_reset_data( usb0__IC_USB, val_usb0__IC_USB); +set_reset_data( usb0__ULPI_VIEWPORT, val_usb0__ULPI_VIEWPORT); +set_reset_data( usb0__ENDPTNAK, val_usb0__ENDPTNAK); +set_reset_data( usb0__ENDPTNAKEN, val_usb0__ENDPTNAKEN); +set_reset_data( usb0__CONFIGFLAG, val_usb0__CONFIGFLAG); +set_reset_data( usb0__PORTSC1, val_usb0__PORTSC1); +set_reset_data( usb0__OTGSC, val_usb0__OTGSC); +set_reset_data( usb0__USBMODE, val_usb0__USBMODE); +set_reset_data( usb0__ENDPTSETUPSTAT, val_usb0__ENDPTSETUPSTAT); +set_reset_data( usb0__ENDPTPRIME, val_usb0__ENDPTPRIME); +set_reset_data( usb0__ENDPTFLUSH, val_usb0__ENDPTFLUSH); +set_reset_data( usb0__ENDPTSTAT, val_usb0__ENDPTSTAT); +set_reset_data( usb0__ENDPTCOMPLETE, val_usb0__ENDPTCOMPLETE); +set_reset_data( usb0__ENDPTCTRL0, val_usb0__ENDPTCTRL0); +set_reset_data( usb0__ENDPTCTRL1, val_usb0__ENDPTCTRL1); +set_reset_data( usb0__ENDPTCTRL2, val_usb0__ENDPTCTRL2); +set_reset_data( usb0__ENDPTCTRL3, val_usb0__ENDPTCTRL3); +set_reset_data( usb0__ENDPTCTRL4, val_usb0__ENDPTCTRL4); +set_reset_data( usb0__ENDPTCTRL5, val_usb0__ENDPTCTRL5); +set_reset_data( usb0__ENDPTCTRL6, val_usb0__ENDPTCTRL6); +set_reset_data( usb0__ENDPTCTRL7, val_usb0__ENDPTCTRL7); +set_reset_data( usb0__ENDPTCTRL8, val_usb0__ENDPTCTRL8); +set_reset_data( usb0__ENDPTCTRL9, val_usb0__ENDPTCTRL9); +set_reset_data( usb0__ENDPTCTRL10, val_usb0__ENDPTCTRL10); +set_reset_data( usb0__ENDPTCTRL11, val_usb0__ENDPTCTRL11); +set_reset_data( usb0__ENDPTCTRL12, val_usb0__ENDPTCTRL12); + +// ************************************************************ +// Module usb1 usb +// doc version: 1.3 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +set_reset_data( usb1__ID, val_usb1__ID); +set_reset_data( usb1__HWGENERAL, val_usb1__HWGENERAL); +set_reset_data( usb1__HWHOST, val_usb1__HWHOST); +set_reset_data( usb1__HWDEVICE, val_usb1__HWDEVICE); +set_reset_data( usb1__HWTXBUF, val_usb1__HWTXBUF); +set_reset_data( usb1__HWRXBUF, val_usb1__HWRXBUF); +set_reset_data( usb1__GPTIMER0LD, val_usb1__GPTIMER0LD); +set_reset_data( usb1__GPTIMER0CTRL, val_usb1__GPTIMER0CTRL); +set_reset_data( usb1__GPTIMER1LD, val_usb1__GPTIMER1LD); +set_reset_data( usb1__GPTIMER1CTRL, val_usb1__GPTIMER1CTRL); +set_reset_data( usb1__SBUSCFG, val_usb1__SBUSCFG); +set_reset_data( usb1__CAPLENGTH_HCIVERSION, val_usb1__CAPLENGTH_HCIVERSION); +set_reset_data( usb1__HCSPARAMS, val_usb1__HCSPARAMS); +set_reset_data( usb1__HCCPARAMS, val_usb1__HCCPARAMS); +set_reset_data( usb1__DCIVERSION, val_usb1__DCIVERSION); +set_reset_data( usb1__DCCPARAMS, val_usb1__DCCPARAMS); +set_reset_data( usb1__USBCMD, val_usb1__USBCMD); +set_reset_data( usb1__USBSTS, val_usb1__USBSTS); +set_reset_data( usb1__USBINTR, val_usb1__USBINTR); +set_reset_data( usb1__FRINDEX, val_usb1__FRINDEX); +set_reset_data( usb1__PERIODICLISTBASE_DEVICEADDR, val_usb1__PERIODICLISTBASE_DEVICEADDR); +set_reset_data( usb1__ASYNCLISTADDR_ENDPOINTLISTADDR, val_usb1__ASYNCLISTADDR_ENDPOINTLISTADDR); +set_reset_data( usb1__TTCTRL, val_usb1__TTCTRL); +set_reset_data( usb1__BURSTSIZE, val_usb1__BURSTSIZE); +set_reset_data( usb1__TXFILLTUNING, val_usb1__TXFILLTUNING); +set_reset_data( usb1__TXTTFILLTUNING, val_usb1__TXTTFILLTUNING); +set_reset_data( usb1__IC_USB, val_usb1__IC_USB); +set_reset_data( usb1__ULPI_VIEWPORT, val_usb1__ULPI_VIEWPORT); +set_reset_data( usb1__ENDPTNAK, val_usb1__ENDPTNAK); +set_reset_data( usb1__ENDPTNAKEN, val_usb1__ENDPTNAKEN); +set_reset_data( usb1__CONFIGFLAG, val_usb1__CONFIGFLAG); +set_reset_data( usb1__PORTSC1, val_usb1__PORTSC1); +set_reset_data( usb1__OTGSC, val_usb1__OTGSC); +set_reset_data( usb1__USBMODE, val_usb1__USBMODE); +set_reset_data( usb1__ENDPTSETUPSTAT, val_usb1__ENDPTSETUPSTAT); +set_reset_data( usb1__ENDPTPRIME, val_usb1__ENDPTPRIME); +set_reset_data( usb1__ENDPTFLUSH, val_usb1__ENDPTFLUSH); +set_reset_data( usb1__ENDPTSTAT, val_usb1__ENDPTSTAT); +set_reset_data( usb1__ENDPTCOMPLETE, val_usb1__ENDPTCOMPLETE); +set_reset_data( usb1__ENDPTCTRL0, val_usb1__ENDPTCTRL0); +set_reset_data( usb1__ENDPTCTRL1, val_usb1__ENDPTCTRL1); +set_reset_data( usb1__ENDPTCTRL2, val_usb1__ENDPTCTRL2); +set_reset_data( usb1__ENDPTCTRL3, val_usb1__ENDPTCTRL3); +set_reset_data( usb1__ENDPTCTRL4, val_usb1__ENDPTCTRL4); +set_reset_data( usb1__ENDPTCTRL5, val_usb1__ENDPTCTRL5); +set_reset_data( usb1__ENDPTCTRL6, val_usb1__ENDPTCTRL6); +set_reset_data( usb1__ENDPTCTRL7, val_usb1__ENDPTCTRL7); +set_reset_data( usb1__ENDPTCTRL8, val_usb1__ENDPTCTRL8); +set_reset_data( usb1__ENDPTCTRL9, val_usb1__ENDPTCTRL9); +set_reset_data( usb1__ENDPTCTRL10, val_usb1__ENDPTCTRL10); +set_reset_data( usb1__ENDPTCTRL11, val_usb1__ENDPTCTRL11); +set_reset_data( usb1__ENDPTCTRL12, val_usb1__ENDPTCTRL12); diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_map.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_map.v new file mode 100644 index 0000000..2837683 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_map.v @@ -0,0 +1,156 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_reg_map.v + * + * Date : 2012-11 + * + * Description : Controller for Register Map Memory + * + *****************************************************************************/ +/*** WA for CR # 695818 ***/ +`ifdef XILINX_SIMULATOR + `define XSIM_ISIM +`endif +`ifdef XILINX_ISIM + `define XSIM_ISIM +`endif + + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_reg_map(); + +`include "processing_system7_bfm_v2_0_local_params.v" + +/* Register definitions */ +`include "processing_system7_bfm_v2_0_reg_params.v" + +parameter mem_size = 32'h2000_0000; ///as the memory is implemented 4 byte wide +parameter xsim_mem_size = 32'h1000_0000; ///as the memory is implemented 4 byte wide 256 MB + +`ifdef XSIM_ISIM + reg [data_width-1:0] reg_mem0 [0:(xsim_mem_size/mem_width)-1]; // 256MB mem + reg [data_width-1:0] reg_mem1 [0:(xsim_mem_size/mem_width)-1]; // 256MB mem + parameter addr_offset_bits = 26; +`else + reg /*sparse*/ [data_width-1:0] reg_mem [0:(mem_size/mem_width)-1]; // 512 MB needed for reg space + parameter addr_offset_bits = 27; +`endif + +/* preload reset_values from file */ +task automatic pre_load_rst_values; +input dummy; +begin + `include "processing_system7_bfm_v2_0_reg_init.v" /* This file has list of set_reset_data() calls to set the reset value for each register*/ +end +endtask + +/* writes the reset data into the reg memory */ +task automatic set_reset_data; +input [addr_width-1:0] address; +input [data_width-1:0] data; +reg [addr_width-1:0] addr; +begin +addr = address >> 2; +`ifdef XSIM_ISIM + case(addr[addr_width-1:addr_offset_bits]) + 14 : reg_mem0[addr[addr_offset_bits-1:0]] = data; + 15 : reg_mem1[addr[addr_offset_bits-1:0]] = data; + endcase +`else + reg_mem[addr[addr_offset_bits-1:0]] = data; +`endif +end +endtask + +/* writes the data into the reg memory */ +task automatic set_data; +input [addr_width-1:0] addr; +input [data_width-1:0] data; +begin +`ifdef XSIM_ISIM + case(addr[addr_width-1:addr_offset_bits]) + 6'h0E : reg_mem0[addr[addr_offset_bits-1:0]] = data; + 6'h0F : reg_mem1[addr[addr_offset_bits-1:0]] = data; + endcase +`else + reg_mem[addr[addr_offset_bits-1:0]] = data; +`endif +end +endtask + +/* get the read data from reg mem */ +task automatic get_data; +input [addr_width-1:0] addr; +output [data_width-1:0] data; +begin +`ifdef XSIM_ISIM + case(addr[addr_width-1:addr_offset_bits]) + 6'h0E : data = reg_mem0[addr[addr_offset_bits-1:0]]; + 6'h0F : data = reg_mem1[addr[addr_offset_bits-1:0]]; + endcase +`else + data = reg_mem[addr[addr_offset_bits-1:0]]; +`endif +end +endtask + +/* read chunk of registers */ +task read_reg_mem; +output[max_burst_bits-1 :0] data; +input [addr_width-1:0] start_addr; +input [max_burst_bytes_width:0] no_of_bytes; +integer i; +reg [addr_width-1:0] addr; +reg [data_width-1:0] temp_rd_data; +reg [max_burst_bits-1:0] temp_data; +integer bytes_left; +begin +addr = start_addr >> shft_addr_bits; +bytes_left = no_of_bytes; + +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : Reading Register Map starting address (0x%0h) -> %0d bytes",$time, DISP_INT_INFO, start_addr,no_of_bytes ); +`endif + +/* Get first data ... if unaligned address */ +get_data(addr,temp_data[max_burst_bits-1 : max_burst_bits- data_width]); + +if(no_of_bytes < mem_width ) begin + repeat(max_burst_bytes - mem_width) + temp_data = temp_data >> 8; + +end else begin + bytes_left = bytes_left - mem_width; + addr = addr+1; + /* Got first data */ + while (bytes_left > (mem_width-1) ) begin + temp_data = temp_data >> data_width; + get_data(addr,temp_data[max_burst_bits-1 : max_burst_bits-data_width]); + addr = addr+1; + bytes_left = bytes_left - mem_width; + end + + /* Get last valid data in the burst*/ + get_data(addr,temp_rd_data); + while(bytes_left > 0) begin + temp_data = temp_data >> 8; + temp_data[max_burst_bits-1 : max_burst_bits-8] = temp_rd_data[7:0]; + temp_rd_data = temp_rd_data >> 8; + bytes_left = bytes_left - 1; + end + /* align to the brst_byte length */ + repeat(max_burst_bytes - no_of_bytes) + temp_data = temp_data >> 8; +end +data = temp_data; +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : DONE -> Reading Register Map starting address (0x%0h), Data returned(0x%0h)",$time, DISP_INT_INFO, start_addr, data ); +`endif +end +endtask + +initial +begin + pre_load_rst_values(1); +end + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_params.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_params.v new file mode 100644 index 0000000..e06e336 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_reg_params.v @@ -0,0 +1,10519 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_reg_params.v + * + * Date : 2012-11 + * + * Description : Parameters for Register Address and Default values. + * + *****************************************************************************/ + +// Register default value info for chip pele_ps +// This code was auto-generated by xregdb.py ver. 0.68, Thu Jul 12 10:32:25 2012 +// 54 modules, 2532 registers. + + +// ************************************************************ +// Module afi0 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter afi0__AFI_RDCHAN_CTRL = 32'hF8008000; +parameter val_afi0__AFI_RDCHAN_CTRL = 32'h00000000; +parameter mask_afi0__AFI_RDCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi0__AFI_RDCHAN_ISSUINGCAP = 32'hF8008004; +parameter val_afi0__AFI_RDCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi0__AFI_RDCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi0__AFI_RDQOS = 32'hF8008008; +parameter val_afi0__AFI_RDQOS = 32'h00000000; +parameter mask_afi0__AFI_RDQOS = 32'hFFFFFFFF; + +parameter afi0__AFI_RDDATAFIFO_LEVEL = 32'hF800800C; +parameter val_afi0__AFI_RDDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi0__AFI_RDDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi0__AFI_RDDEBUG = 32'hF8008010; +parameter val_afi0__AFI_RDDEBUG = 32'h00000000; +parameter mask_afi0__AFI_RDDEBUG = 32'hFFFFFFFF; + +parameter afi0__AFI_WRCHAN_CTRL = 32'hF8008014; +parameter val_afi0__AFI_WRCHAN_CTRL = 32'h00000F00; +parameter mask_afi0__AFI_WRCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi0__AFI_WRCHAN_ISSUINGCAP = 32'hF8008018; +parameter val_afi0__AFI_WRCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi0__AFI_WRCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi0__AFI_WRQOS = 32'hF800801C; +parameter val_afi0__AFI_WRQOS = 32'h00000000; +parameter mask_afi0__AFI_WRQOS = 32'hFFFFFFFF; + +parameter afi0__AFI_WRDATAFIFO_LEVEL = 32'hF8008020; +parameter val_afi0__AFI_WRDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi0__AFI_WRDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi0__AFI_WRDEBUG = 32'hF8008024; +parameter val_afi0__AFI_WRDEBUG = 32'h00000000; +parameter mask_afi0__AFI_WRDEBUG = 32'hFFFFFFFF; + + +// ************************************************************ +// Module afi1 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter afi1__AFI_RDCHAN_CTRL = 32'hF8009000; +parameter val_afi1__AFI_RDCHAN_CTRL = 32'h00000000; +parameter mask_afi1__AFI_RDCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi1__AFI_RDCHAN_ISSUINGCAP = 32'hF8009004; +parameter val_afi1__AFI_RDCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi1__AFI_RDCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi1__AFI_RDQOS = 32'hF8009008; +parameter val_afi1__AFI_RDQOS = 32'h00000000; +parameter mask_afi1__AFI_RDQOS = 32'hFFFFFFFF; + +parameter afi1__AFI_RDDATAFIFO_LEVEL = 32'hF800900C; +parameter val_afi1__AFI_RDDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi1__AFI_RDDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi1__AFI_RDDEBUG = 32'hF8009010; +parameter val_afi1__AFI_RDDEBUG = 32'h00000000; +parameter mask_afi1__AFI_RDDEBUG = 32'hFFFFFFFF; + +parameter afi1__AFI_WRCHAN_CTRL = 32'hF8009014; +parameter val_afi1__AFI_WRCHAN_CTRL = 32'h00000F00; +parameter mask_afi1__AFI_WRCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi1__AFI_WRCHAN_ISSUINGCAP = 32'hF8009018; +parameter val_afi1__AFI_WRCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi1__AFI_WRCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi1__AFI_WRQOS = 32'hF800901C; +parameter val_afi1__AFI_WRQOS = 32'h00000000; +parameter mask_afi1__AFI_WRQOS = 32'hFFFFFFFF; + +parameter afi1__AFI_WRDATAFIFO_LEVEL = 32'hF8009020; +parameter val_afi1__AFI_WRDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi1__AFI_WRDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi1__AFI_WRDEBUG = 32'hF8009024; +parameter val_afi1__AFI_WRDEBUG = 32'h00000000; +parameter mask_afi1__AFI_WRDEBUG = 32'hFFFFFFFF; + + +// ************************************************************ +// Module afi2 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter afi2__AFI_RDCHAN_CTRL = 32'hF800A000; +parameter val_afi2__AFI_RDCHAN_CTRL = 32'h00000000; +parameter mask_afi2__AFI_RDCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi2__AFI_RDCHAN_ISSUINGCAP = 32'hF800A004; +parameter val_afi2__AFI_RDCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi2__AFI_RDCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi2__AFI_RDQOS = 32'hF800A008; +parameter val_afi2__AFI_RDQOS = 32'h00000000; +parameter mask_afi2__AFI_RDQOS = 32'hFFFFFFFF; + +parameter afi2__AFI_RDDATAFIFO_LEVEL = 32'hF800A00C; +parameter val_afi2__AFI_RDDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi2__AFI_RDDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi2__AFI_RDDEBUG = 32'hF800A010; +parameter val_afi2__AFI_RDDEBUG = 32'h00000000; +parameter mask_afi2__AFI_RDDEBUG = 32'hFFFFFFFF; + +parameter afi2__AFI_WRCHAN_CTRL = 32'hF800A014; +parameter val_afi2__AFI_WRCHAN_CTRL = 32'h00000F00; +parameter mask_afi2__AFI_WRCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi2__AFI_WRCHAN_ISSUINGCAP = 32'hF800A018; +parameter val_afi2__AFI_WRCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi2__AFI_WRCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi2__AFI_WRQOS = 32'hF800A01C; +parameter val_afi2__AFI_WRQOS = 32'h00000000; +parameter mask_afi2__AFI_WRQOS = 32'hFFFFFFFF; + +parameter afi2__AFI_WRDATAFIFO_LEVEL = 32'hF800A020; +parameter val_afi2__AFI_WRDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi2__AFI_WRDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi2__AFI_WRDEBUG = 32'hF800A024; +parameter val_afi2__AFI_WRDEBUG = 32'h00000000; +parameter mask_afi2__AFI_WRDEBUG = 32'hFFFFFFFF; + + +// ************************************************************ +// Module afi3 AFI +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter afi3__AFI_RDCHAN_CTRL = 32'hF800B000; +parameter val_afi3__AFI_RDCHAN_CTRL = 32'h00000000; +parameter mask_afi3__AFI_RDCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi3__AFI_RDCHAN_ISSUINGCAP = 32'hF800B004; +parameter val_afi3__AFI_RDCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi3__AFI_RDCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi3__AFI_RDQOS = 32'hF800B008; +parameter val_afi3__AFI_RDQOS = 32'h00000000; +parameter mask_afi3__AFI_RDQOS = 32'hFFFFFFFF; + +parameter afi3__AFI_RDDATAFIFO_LEVEL = 32'hF800B00C; +parameter val_afi3__AFI_RDDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi3__AFI_RDDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi3__AFI_RDDEBUG = 32'hF800B010; +parameter val_afi3__AFI_RDDEBUG = 32'h00000000; +parameter mask_afi3__AFI_RDDEBUG = 32'hFFFFFFFF; + +parameter afi3__AFI_WRCHAN_CTRL = 32'hF800B014; +parameter val_afi3__AFI_WRCHAN_CTRL = 32'h00000F00; +parameter mask_afi3__AFI_WRCHAN_CTRL = 32'hFFFFFFFF; + +parameter afi3__AFI_WRCHAN_ISSUINGCAP = 32'hF800B018; +parameter val_afi3__AFI_WRCHAN_ISSUINGCAP = 32'h00000007; +parameter mask_afi3__AFI_WRCHAN_ISSUINGCAP = 32'hFFFFFFFF; + +parameter afi3__AFI_WRQOS = 32'hF800B01C; +parameter val_afi3__AFI_WRQOS = 32'h00000000; +parameter mask_afi3__AFI_WRQOS = 32'hFFFFFFFF; + +parameter afi3__AFI_WRDATAFIFO_LEVEL = 32'hF800B020; +parameter val_afi3__AFI_WRDATAFIFO_LEVEL = 32'h00000000; +parameter mask_afi3__AFI_WRDATAFIFO_LEVEL = 32'hFFFFFFFF; + +parameter afi3__AFI_WRDEBUG = 32'hF800B024; +parameter val_afi3__AFI_WRDEBUG = 32'h00000000; +parameter mask_afi3__AFI_WRDEBUG = 32'hFFFFFFFF; + + +// ************************************************************ +// Module can0 can +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter can0__SRR = 32'hE0008000; +parameter val_can0__SRR = 32'h00000000; +parameter mask_can0__SRR = 32'hFFFFFFFF; + +parameter can0__MSR = 32'hE0008004; +parameter val_can0__MSR = 32'h00000000; +parameter mask_can0__MSR = 32'hFFFFFFFF; + +parameter can0__BRPR = 32'hE0008008; +parameter val_can0__BRPR = 32'h00000000; +parameter mask_can0__BRPR = 32'hFFFFFFFF; + +parameter can0__BTR = 32'hE000800C; +parameter val_can0__BTR = 32'h00000000; +parameter mask_can0__BTR = 32'hFFFFFFFF; + +parameter can0__ECR = 32'hE0008010; +parameter val_can0__ECR = 32'h00000000; +parameter mask_can0__ECR = 32'hFFFFFFFF; + +parameter can0__ESR = 32'hE0008014; +parameter val_can0__ESR = 32'h00000000; +parameter mask_can0__ESR = 32'hFFFFFFFF; + +parameter can0__SR = 32'hE0008018; +parameter val_can0__SR = 32'h00000001; +parameter mask_can0__SR = 32'hFFFFFFFF; + +parameter can0__ISR = 32'hE000801C; +parameter val_can0__ISR = 32'h00006000; +parameter mask_can0__ISR = 32'hFFFFFFFF; + +parameter can0__IER = 32'hE0008020; +parameter val_can0__IER = 32'h00000000; +parameter mask_can0__IER = 32'hFFFFFFFF; + +parameter can0__ICR = 32'hE0008024; +parameter val_can0__ICR = 32'h00000000; +parameter mask_can0__ICR = 32'hFFFFFFFF; + +parameter can0__TCR = 32'hE0008028; +parameter val_can0__TCR = 32'h00000000; +parameter mask_can0__TCR = 32'hFFFFFFFF; + +parameter can0__WIR = 32'hE000802C; +parameter val_can0__WIR = 32'h00003F3F; +parameter mask_can0__WIR = 32'hFFFFFFFF; + +parameter can0__TXFIFO_ID = 32'hE0008030; +parameter val_can0__TXFIFO_ID = 32'h00000000; +parameter mask_can0__TXFIFO_ID = 32'hFFFFFFFF; + +parameter can0__TXFIFO_DLC = 32'hE0008034; +parameter val_can0__TXFIFO_DLC = 32'h00000000; +parameter mask_can0__TXFIFO_DLC = 32'hFFFFFFFF; + +parameter can0__TXFIFO_DATA1 = 32'hE0008038; +parameter val_can0__TXFIFO_DATA1 = 32'h00000000; +parameter mask_can0__TXFIFO_DATA1 = 32'hFFFFFFFF; + +parameter can0__TXFIFO_DATA2 = 32'hE000803C; +parameter val_can0__TXFIFO_DATA2 = 32'h00000000; +parameter mask_can0__TXFIFO_DATA2 = 32'hFFFFFFFF; + +parameter can0__TXHPB_ID = 32'hE0008040; +parameter val_can0__TXHPB_ID = 32'h00000000; +parameter mask_can0__TXHPB_ID = 32'hFFFFFFFF; + +parameter can0__TXHPB_DLC = 32'hE0008044; +parameter val_can0__TXHPB_DLC = 32'h00000000; +parameter mask_can0__TXHPB_DLC = 32'hFFFFFFFF; + +parameter can0__TXHPB_DATA1 = 32'hE0008048; +parameter val_can0__TXHPB_DATA1 = 32'h00000000; +parameter mask_can0__TXHPB_DATA1 = 32'hFFFFFFFF; + +parameter can0__TXHPB_DATA2 = 32'hE000804C; +parameter val_can0__TXHPB_DATA2 = 32'h00000000; +parameter mask_can0__TXHPB_DATA2 = 32'hFFFFFFFF; + +parameter can0__RXFIFO_ID = 32'hE0008050; +parameter val_can0__RXFIFO_ID = 32'h00000000; +parameter mask_can0__RXFIFO_ID = 32'h00000000; + +parameter can0__RXFIFO_DLC = 32'hE0008054; +parameter val_can0__RXFIFO_DLC = 32'h00000000; +parameter mask_can0__RXFIFO_DLC = 32'h00000000; + +parameter can0__RXFIFO_DATA1 = 32'hE0008058; +parameter val_can0__RXFIFO_DATA1 = 32'h00000000; +parameter mask_can0__RXFIFO_DATA1 = 32'h00000000; + +parameter can0__RXFIFO_DATA2 = 32'hE000805C; +parameter val_can0__RXFIFO_DATA2 = 32'h00000000; +parameter mask_can0__RXFIFO_DATA2 = 32'h00000000; + +parameter can0__AFR = 32'hE0008060; +parameter val_can0__AFR = 32'h00000000; +parameter mask_can0__AFR = 32'hFFFFFFFF; + +parameter can0__AFMR1 = 32'hE0008064; +parameter val_can0__AFMR1 = 32'h00000000; +parameter mask_can0__AFMR1 = 32'h00000000; + +parameter can0__AFIR1 = 32'hE0008068; +parameter val_can0__AFIR1 = 32'h00000000; +parameter mask_can0__AFIR1 = 32'h00000000; + +parameter can0__AFMR2 = 32'hE000806C; +parameter val_can0__AFMR2 = 32'h00000000; +parameter mask_can0__AFMR2 = 32'h00000000; + +parameter can0__AFIR2 = 32'hE0008070; +parameter val_can0__AFIR2 = 32'h00000000; +parameter mask_can0__AFIR2 = 32'h00000000; + +parameter can0__AFMR3 = 32'hE0008074; +parameter val_can0__AFMR3 = 32'h00000000; +parameter mask_can0__AFMR3 = 32'h00000000; + +parameter can0__AFIR3 = 32'hE0008078; +parameter val_can0__AFIR3 = 32'h00000000; +parameter mask_can0__AFIR3 = 32'h00000000; + +parameter can0__AFMR4 = 32'hE000807C; +parameter val_can0__AFMR4 = 32'h00000000; +parameter mask_can0__AFMR4 = 32'h00000000; + +parameter can0__AFIR4 = 32'hE0008080; +parameter val_can0__AFIR4 = 32'h00000000; +parameter mask_can0__AFIR4 = 32'h00000000; + + +// ************************************************************ +// Module can1 can +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter can1__SRR = 32'hE0009000; +parameter val_can1__SRR = 32'h00000000; +parameter mask_can1__SRR = 32'hFFFFFFFF; + +parameter can1__MSR = 32'hE0009004; +parameter val_can1__MSR = 32'h00000000; +parameter mask_can1__MSR = 32'hFFFFFFFF; + +parameter can1__BRPR = 32'hE0009008; +parameter val_can1__BRPR = 32'h00000000; +parameter mask_can1__BRPR = 32'hFFFFFFFF; + +parameter can1__BTR = 32'hE000900C; +parameter val_can1__BTR = 32'h00000000; +parameter mask_can1__BTR = 32'hFFFFFFFF; + +parameter can1__ECR = 32'hE0009010; +parameter val_can1__ECR = 32'h00000000; +parameter mask_can1__ECR = 32'hFFFFFFFF; + +parameter can1__ESR = 32'hE0009014; +parameter val_can1__ESR = 32'h00000000; +parameter mask_can1__ESR = 32'hFFFFFFFF; + +parameter can1__SR = 32'hE0009018; +parameter val_can1__SR = 32'h00000001; +parameter mask_can1__SR = 32'hFFFFFFFF; + +parameter can1__ISR = 32'hE000901C; +parameter val_can1__ISR = 32'h00006000; +parameter mask_can1__ISR = 32'hFFFFFFFF; + +parameter can1__IER = 32'hE0009020; +parameter val_can1__IER = 32'h00000000; +parameter mask_can1__IER = 32'hFFFFFFFF; + +parameter can1__ICR = 32'hE0009024; +parameter val_can1__ICR = 32'h00000000; +parameter mask_can1__ICR = 32'hFFFFFFFF; + +parameter can1__TCR = 32'hE0009028; +parameter val_can1__TCR = 32'h00000000; +parameter mask_can1__TCR = 32'hFFFFFFFF; + +parameter can1__WIR = 32'hE000902C; +parameter val_can1__WIR = 32'h00003F3F; +parameter mask_can1__WIR = 32'hFFFFFFFF; + +parameter can1__TXFIFO_ID = 32'hE0009030; +parameter val_can1__TXFIFO_ID = 32'h00000000; +parameter mask_can1__TXFIFO_ID = 32'hFFFFFFFF; + +parameter can1__TXFIFO_DLC = 32'hE0009034; +parameter val_can1__TXFIFO_DLC = 32'h00000000; +parameter mask_can1__TXFIFO_DLC = 32'hFFFFFFFF; + +parameter can1__TXFIFO_DATA1 = 32'hE0009038; +parameter val_can1__TXFIFO_DATA1 = 32'h00000000; +parameter mask_can1__TXFIFO_DATA1 = 32'hFFFFFFFF; + +parameter can1__TXFIFO_DATA2 = 32'hE000903C; +parameter val_can1__TXFIFO_DATA2 = 32'h00000000; +parameter mask_can1__TXFIFO_DATA2 = 32'hFFFFFFFF; + +parameter can1__TXHPB_ID = 32'hE0009040; +parameter val_can1__TXHPB_ID = 32'h00000000; +parameter mask_can1__TXHPB_ID = 32'hFFFFFFFF; + +parameter can1__TXHPB_DLC = 32'hE0009044; +parameter val_can1__TXHPB_DLC = 32'h00000000; +parameter mask_can1__TXHPB_DLC = 32'hFFFFFFFF; + +parameter can1__TXHPB_DATA1 = 32'hE0009048; +parameter val_can1__TXHPB_DATA1 = 32'h00000000; +parameter mask_can1__TXHPB_DATA1 = 32'hFFFFFFFF; + +parameter can1__TXHPB_DATA2 = 32'hE000904C; +parameter val_can1__TXHPB_DATA2 = 32'h00000000; +parameter mask_can1__TXHPB_DATA2 = 32'hFFFFFFFF; + +parameter can1__RXFIFO_ID = 32'hE0009050; +parameter val_can1__RXFIFO_ID = 32'h00000000; +parameter mask_can1__RXFIFO_ID = 32'h00000000; + +parameter can1__RXFIFO_DLC = 32'hE0009054; +parameter val_can1__RXFIFO_DLC = 32'h00000000; +parameter mask_can1__RXFIFO_DLC = 32'h00000000; + +parameter can1__RXFIFO_DATA1 = 32'hE0009058; +parameter val_can1__RXFIFO_DATA1 = 32'h00000000; +parameter mask_can1__RXFIFO_DATA1 = 32'h00000000; + +parameter can1__RXFIFO_DATA2 = 32'hE000905C; +parameter val_can1__RXFIFO_DATA2 = 32'h00000000; +parameter mask_can1__RXFIFO_DATA2 = 32'h00000000; + +parameter can1__AFR = 32'hE0009060; +parameter val_can1__AFR = 32'h00000000; +parameter mask_can1__AFR = 32'hFFFFFFFF; + +parameter can1__AFMR1 = 32'hE0009064; +parameter val_can1__AFMR1 = 32'h00000000; +parameter mask_can1__AFMR1 = 32'h00000000; + +parameter can1__AFIR1 = 32'hE0009068; +parameter val_can1__AFIR1 = 32'h00000000; +parameter mask_can1__AFIR1 = 32'h00000000; + +parameter can1__AFMR2 = 32'hE000906C; +parameter val_can1__AFMR2 = 32'h00000000; +parameter mask_can1__AFMR2 = 32'h00000000; + +parameter can1__AFIR2 = 32'hE0009070; +parameter val_can1__AFIR2 = 32'h00000000; +parameter mask_can1__AFIR2 = 32'h00000000; + +parameter can1__AFMR3 = 32'hE0009074; +parameter val_can1__AFMR3 = 32'h00000000; +parameter mask_can1__AFMR3 = 32'h00000000; + +parameter can1__AFIR3 = 32'hE0009078; +parameter val_can1__AFIR3 = 32'h00000000; +parameter mask_can1__AFIR3 = 32'h00000000; + +parameter can1__AFMR4 = 32'hE000907C; +parameter val_can1__AFMR4 = 32'h00000000; +parameter mask_can1__AFMR4 = 32'h00000000; + +parameter can1__AFIR4 = 32'hE0009080; +parameter val_can1__AFIR4 = 32'h00000000; +parameter mask_can1__AFIR4 = 32'h00000000; + + +// ************************************************************ +// Module ddrc ddrc +// doc version: 1.25 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter ddrc__ddrc_ctrl = 32'hF8006000; +parameter val_ddrc__ddrc_ctrl = 32'h00000200; +parameter mask_ddrc__ddrc_ctrl = 32'hFFFFFFFF; + +parameter ddrc__Two_rank_cfg = 32'hF8006004; +parameter val_ddrc__Two_rank_cfg = 32'h000C1076; +parameter mask_ddrc__Two_rank_cfg = 32'h1FFFFFFF; + +parameter ddrc__HPR_reg = 32'hF8006008; +parameter val_ddrc__HPR_reg = 32'h03C0780F; +parameter mask_ddrc__HPR_reg = 32'h03FFFFFF; + +parameter ddrc__LPR_reg = 32'hF800600C; +parameter val_ddrc__LPR_reg = 32'h03C0780F; +parameter mask_ddrc__LPR_reg = 32'h03FFFFFF; + +parameter ddrc__WR_reg = 32'hF8006010; +parameter val_ddrc__WR_reg = 32'h0007F80F; +parameter mask_ddrc__WR_reg = 32'h03FFFFFF; + +parameter ddrc__DRAM_param_reg0 = 32'hF8006014; +parameter val_ddrc__DRAM_param_reg0 = 32'h00041016; +parameter mask_ddrc__DRAM_param_reg0 = 32'h001FFFFF; + +parameter ddrc__DRAM_param_reg1 = 32'hF8006018; +parameter val_ddrc__DRAM_param_reg1 = 32'h351B48D9; +parameter mask_ddrc__DRAM_param_reg1 = 32'hF7FFFFFF; + +parameter ddrc__DRAM_param_reg2 = 32'hF800601C; +parameter val_ddrc__DRAM_param_reg2 = 32'h83015904; +parameter mask_ddrc__DRAM_param_reg2 = 32'hFFFFFFFF; + +parameter ddrc__DRAM_param_reg3 = 32'hF8006020; +parameter val_ddrc__DRAM_param_reg3 = 32'h250882D0; +parameter mask_ddrc__DRAM_param_reg3 = 32'hFFFFFFFF; + +parameter ddrc__DRAM_param_reg4 = 32'hF8006024; +parameter val_ddrc__DRAM_param_reg4 = 32'h0000003C; +parameter mask_ddrc__DRAM_param_reg4 = 32'h0FFFFFFF; + +parameter ddrc__DRAM_init_param = 32'hF8006028; +parameter val_ddrc__DRAM_init_param = 32'h00002007; +parameter mask_ddrc__DRAM_init_param = 32'h00003FFF; + +parameter ddrc__DRAM_EMR_reg = 32'hF800602C; +parameter val_ddrc__DRAM_EMR_reg = 32'h00000008; +parameter mask_ddrc__DRAM_EMR_reg = 32'hFFFFFFFF; + +parameter ddrc__DRAM_EMR_MR_reg = 32'hF8006030; +parameter val_ddrc__DRAM_EMR_MR_reg = 32'h00000940; +parameter mask_ddrc__DRAM_EMR_MR_reg = 32'hFFFFFFFF; + +parameter ddrc__DRAM_burst8_rdwr = 32'hF8006034; +parameter val_ddrc__DRAM_burst8_rdwr = 32'h00020034; +parameter mask_ddrc__DRAM_burst8_rdwr = 32'h1FFFFFFF; + +parameter ddrc__DRAM_disable_DQ = 32'hF8006038; +parameter val_ddrc__DRAM_disable_DQ = 32'h00000000; +parameter mask_ddrc__DRAM_disable_DQ = 32'h00001FFF; + +parameter ddrc__DRAM_addr_map_bank = 32'hF800603C; +parameter val_ddrc__DRAM_addr_map_bank = 32'h00000F77; +parameter mask_ddrc__DRAM_addr_map_bank = 32'h000FFFFF; + +parameter ddrc__DRAM_addr_map_col = 32'hF8006040; +parameter val_ddrc__DRAM_addr_map_col = 32'hFFF00000; +parameter mask_ddrc__DRAM_addr_map_col = 32'hFFFFFFFF; + +parameter ddrc__DRAM_addr_map_row = 32'hF8006044; +parameter val_ddrc__DRAM_addr_map_row = 32'h0FF55555; +parameter mask_ddrc__DRAM_addr_map_row = 32'h0FFFFFFF; + +parameter ddrc__DRAM_ODT_reg = 32'hF8006048; +parameter val_ddrc__DRAM_ODT_reg = 32'h00000249; +parameter mask_ddrc__DRAM_ODT_reg = 32'h3FFFFFFF; + +parameter ddrc__phy_dbg_reg = 32'hF800604C; +parameter val_ddrc__phy_dbg_reg = 32'h00000000; +parameter mask_ddrc__phy_dbg_reg = 32'h000FFFFF; + +parameter ddrc__phy_cmd_timeout_rddata_cpt = 32'hF8006050; +parameter val_ddrc__phy_cmd_timeout_rddata_cpt = 32'h00010200; +parameter mask_ddrc__phy_cmd_timeout_rddata_cpt = 32'hFFFFFFFF; + +parameter ddrc__mode_sts_reg = 32'hF8006054; +parameter val_ddrc__mode_sts_reg = 32'h00000000; +parameter mask_ddrc__mode_sts_reg = 32'h001FFFFF; + +parameter ddrc__DLL_calib = 32'hF8006058; +parameter val_ddrc__DLL_calib = 32'h00000101; +parameter mask_ddrc__DLL_calib = 32'h0001FFFF; + +parameter ddrc__ODT_delay_hold = 32'hF800605C; +parameter val_ddrc__ODT_delay_hold = 32'h00000023; +parameter mask_ddrc__ODT_delay_hold = 32'h0000FFFF; + +parameter ddrc__ctrl_reg1 = 32'hF8006060; +parameter val_ddrc__ctrl_reg1 = 32'h0000003E; +parameter mask_ddrc__ctrl_reg1 = 32'h00001FFF; + +parameter ddrc__ctrl_reg2 = 32'hF8006064; +parameter val_ddrc__ctrl_reg2 = 32'h00020000; +parameter mask_ddrc__ctrl_reg2 = 32'h0003FFFF; + +parameter ddrc__ctrl_reg3 = 32'hF8006068; +parameter val_ddrc__ctrl_reg3 = 32'h00284027; +parameter mask_ddrc__ctrl_reg3 = 32'h03FFFFFF; + +parameter ddrc__ctrl_reg4 = 32'hF800606C; +parameter val_ddrc__ctrl_reg4 = 32'h00001610; +parameter mask_ddrc__ctrl_reg4 = 32'h0000FFFF; + +parameter ddrc__ctrl_reg5 = 32'hF8006078; +parameter val_ddrc__ctrl_reg5 = 32'h00455111; +parameter mask_ddrc__ctrl_reg5 = 32'hFFFFFFFF; + +parameter ddrc__ctrl_reg6 = 32'hF800607C; +parameter val_ddrc__ctrl_reg6 = 32'h00032222; +parameter mask_ddrc__ctrl_reg6 = 32'hFFFFFFFF; + +parameter ddrc__CHE_REFRESH_TIMER01 = 32'hF80060A0; +parameter val_ddrc__CHE_REFRESH_TIMER01 = 32'h00008000; +parameter mask_ddrc__CHE_REFRESH_TIMER01 = 32'h00FFFFFF; + +parameter ddrc__CHE_T_ZQ = 32'hF80060A4; +parameter val_ddrc__CHE_T_ZQ = 32'h10300802; +parameter mask_ddrc__CHE_T_ZQ = 32'hFFFFFFFF; + +parameter ddrc__CHE_T_ZQ_Short_Interval_Reg = 32'hF80060A8; +parameter val_ddrc__CHE_T_ZQ_Short_Interval_Reg = 32'h0020003A; +parameter mask_ddrc__CHE_T_ZQ_Short_Interval_Reg = 32'h0FFFFFFF; + +parameter ddrc__deep_pwrdwn_reg = 32'hF80060AC; +parameter val_ddrc__deep_pwrdwn_reg = 32'h00000000; +parameter mask_ddrc__deep_pwrdwn_reg = 32'h000001FF; + +parameter ddrc__reg_2c = 32'hF80060B0; +parameter val_ddrc__reg_2c = 32'h00000000; +parameter mask_ddrc__reg_2c = 32'h1FFFFFFF; + +parameter ddrc__reg_2d = 32'hF80060B4; +parameter val_ddrc__reg_2d = 32'h00000200; +parameter mask_ddrc__reg_2d = 32'h000007FF; + +parameter ddrc__dfi_timing = 32'hF80060B8; +parameter val_ddrc__dfi_timing = 32'h00200067; +parameter mask_ddrc__dfi_timing = 32'h01FFFFFF; + +parameter ddrc__refresh_timer_2 = 32'hF80060BC; +parameter val_ddrc__refresh_timer_2 = 32'h00000000; +parameter mask_ddrc__refresh_timer_2 = 32'h00FFFFFF; + +parameter ddrc__nc_timing = 32'hF80060C0; +parameter val_ddrc__nc_timing = 32'h00000000; +parameter mask_ddrc__nc_timing = 32'h003FFFFF; + +parameter ddrc__CHE_ECC_CONTROL_REG_OFFSET = 32'hF80060C4; +parameter val_ddrc__CHE_ECC_CONTROL_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_ECC_CONTROL_REG_OFFSET = 32'h00000003; + +parameter ddrc__CHE_CORR_ECC_LOG_REG_OFFSET = 32'hF80060C8; +parameter val_ddrc__CHE_CORR_ECC_LOG_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_CORR_ECC_LOG_REG_OFFSET = 32'h000000FF; + +parameter ddrc__CHE_CORR_ECC_ADDR_REG_OFFSET = 32'hF80060CC; +parameter val_ddrc__CHE_CORR_ECC_ADDR_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_CORR_ECC_ADDR_REG_OFFSET = 32'h7FFFFFFF; + +parameter ddrc__CHE_CORR_ECC_DATA_31_0_REG_OFFSET = 32'hF80060D0; +parameter val_ddrc__CHE_CORR_ECC_DATA_31_0_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_CORR_ECC_DATA_31_0_REG_OFFSET = 32'hFFFFFFFF; + +parameter ddrc__CHE_CORR_ECC_DATA_63_32_REG_OFFSET = 32'hF80060D4; +parameter val_ddrc__CHE_CORR_ECC_DATA_63_32_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_CORR_ECC_DATA_63_32_REG_OFFSET = 32'hFFFFFFFF; + +parameter ddrc__CHE_CORR_ECC_DATA_71_64_REG_OFFSET = 32'hF80060D8; +parameter val_ddrc__CHE_CORR_ECC_DATA_71_64_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_CORR_ECC_DATA_71_64_REG_OFFSET = 32'h000000FF; + +parameter ddrc__CHE_UNCORR_ECC_LOG_REG_OFFSET = 32'hF80060DC; +parameter val_ddrc__CHE_UNCORR_ECC_LOG_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_UNCORR_ECC_LOG_REG_OFFSET = 32'h00000001; + +parameter ddrc__CHE_UNCORR_ECC_ADDR_REG_OFFSET = 32'hF80060E0; +parameter val_ddrc__CHE_UNCORR_ECC_ADDR_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_UNCORR_ECC_ADDR_REG_OFFSET = 32'h7FFFFFFF; + +parameter ddrc__CHE_UNCORR_ECC_DATA_31_0_REG_OFFSET = 32'hF80060E4; +parameter val_ddrc__CHE_UNCORR_ECC_DATA_31_0_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_UNCORR_ECC_DATA_31_0_REG_OFFSET = 32'hFFFFFFFF; + +parameter ddrc__CHE_UNCORR_ECC_DATA_63_32_REG_OFFSET = 32'hF80060E8; +parameter val_ddrc__CHE_UNCORR_ECC_DATA_63_32_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_UNCORR_ECC_DATA_63_32_REG_OFFSET = 32'hFFFFFFFF; + +parameter ddrc__CHE_UNCORR_ECC_DATA_71_64_REG_OFFSET = 32'hF80060EC; +parameter val_ddrc__CHE_UNCORR_ECC_DATA_71_64_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_UNCORR_ECC_DATA_71_64_REG_OFFSET = 32'h000000FF; + +parameter ddrc__CHE_ECC_STATS_REG_OFFSET = 32'hF80060F0; +parameter val_ddrc__CHE_ECC_STATS_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_ECC_STATS_REG_OFFSET = 32'h0000FFFF; + +parameter ddrc__ECC_scrub = 32'hF80060F4; +parameter val_ddrc__ECC_scrub = 32'h00000008; +parameter mask_ddrc__ECC_scrub = 32'h0000000F; + +parameter ddrc__CHE_ECC_CORR_BIT_MASK_31_0_REG_OFFSET = 32'hF80060F8; +parameter val_ddrc__CHE_ECC_CORR_BIT_MASK_31_0_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_ECC_CORR_BIT_MASK_31_0_REG_OFFSET = 32'hFFFFFFFF; + +parameter ddrc__CHE_ECC_CORR_BIT_MASK_63_32_REG_OFFSET = 32'hF80060FC; +parameter val_ddrc__CHE_ECC_CORR_BIT_MASK_63_32_REG_OFFSET = 32'h00000000; +parameter mask_ddrc__CHE_ECC_CORR_BIT_MASK_63_32_REG_OFFSET = 32'hFFFFFFFF; + +parameter ddrc__phy_rcvr_enable = 32'hF8006114; +parameter val_ddrc__phy_rcvr_enable = 32'h00000000; +parameter mask_ddrc__phy_rcvr_enable = 32'h000000FF; + +parameter ddrc__PHY_Config0 = 32'hF8006118; +parameter val_ddrc__PHY_Config0 = 32'h40000001; +parameter mask_ddrc__PHY_Config0 = 32'h7FFFFFFF; + +parameter ddrc__PHY_Config1 = 32'hF800611C; +parameter val_ddrc__PHY_Config1 = 32'h40000001; +parameter mask_ddrc__PHY_Config1 = 32'h7FFFFFFF; + +parameter ddrc__PHY_Config2 = 32'hF8006120; +parameter val_ddrc__PHY_Config2 = 32'h40000001; +parameter mask_ddrc__PHY_Config2 = 32'h7FFFFFFF; + +parameter ddrc__PHY_Config3 = 32'hF8006124; +parameter val_ddrc__PHY_Config3 = 32'h40000001; +parameter mask_ddrc__PHY_Config3 = 32'h7FFFFFFF; + +parameter ddrc__phy_init_ratio0 = 32'hF800612C; +parameter val_ddrc__phy_init_ratio0 = 32'h00000000; +parameter mask_ddrc__phy_init_ratio0 = 32'h000FFFFF; + +parameter ddrc__phy_init_ratio1 = 32'hF8006130; +parameter val_ddrc__phy_init_ratio1 = 32'h00000000; +parameter mask_ddrc__phy_init_ratio1 = 32'h000FFFFF; + +parameter ddrc__phy_init_ratio2 = 32'hF8006134; +parameter val_ddrc__phy_init_ratio2 = 32'h00000000; +parameter mask_ddrc__phy_init_ratio2 = 32'h000FFFFF; + +parameter ddrc__phy_init_ratio3 = 32'hF8006138; +parameter val_ddrc__phy_init_ratio3 = 32'h00000000; +parameter mask_ddrc__phy_init_ratio3 = 32'h000FFFFF; + +parameter ddrc__phy_rd_dqs_cfg0 = 32'hF8006140; +parameter val_ddrc__phy_rd_dqs_cfg0 = 32'h00000040; +parameter mask_ddrc__phy_rd_dqs_cfg0 = 32'h000FFFFF; + +parameter ddrc__phy_rd_dqs_cfg1 = 32'hF8006144; +parameter val_ddrc__phy_rd_dqs_cfg1 = 32'h00000040; +parameter mask_ddrc__phy_rd_dqs_cfg1 = 32'h000FFFFF; + +parameter ddrc__phy_rd_dqs_cfg2 = 32'hF8006148; +parameter val_ddrc__phy_rd_dqs_cfg2 = 32'h00000040; +parameter mask_ddrc__phy_rd_dqs_cfg2 = 32'h000FFFFF; + +parameter ddrc__phy_rd_dqs_cfg3 = 32'hF800614C; +parameter val_ddrc__phy_rd_dqs_cfg3 = 32'h00000040; +parameter mask_ddrc__phy_rd_dqs_cfg3 = 32'h000FFFFF; + +parameter ddrc__phy_wr_dqs_cfg0 = 32'hF8006154; +parameter val_ddrc__phy_wr_dqs_cfg0 = 32'h00000000; +parameter mask_ddrc__phy_wr_dqs_cfg0 = 32'h000FFFFF; + +parameter ddrc__phy_wr_dqs_cfg1 = 32'hF8006158; +parameter val_ddrc__phy_wr_dqs_cfg1 = 32'h00000000; +parameter mask_ddrc__phy_wr_dqs_cfg1 = 32'h000FFFFF; + +parameter ddrc__phy_wr_dqs_cfg2 = 32'hF800615C; +parameter val_ddrc__phy_wr_dqs_cfg2 = 32'h00000000; +parameter mask_ddrc__phy_wr_dqs_cfg2 = 32'h000FFFFF; + +parameter ddrc__phy_wr_dqs_cfg3 = 32'hF8006160; +parameter val_ddrc__phy_wr_dqs_cfg3 = 32'h00000000; +parameter mask_ddrc__phy_wr_dqs_cfg3 = 32'h000FFFFF; + +parameter ddrc__phy_we_cfg0 = 32'hF8006168; +parameter val_ddrc__phy_we_cfg0 = 32'h00000040; +parameter mask_ddrc__phy_we_cfg0 = 32'h001FFFFF; + +parameter ddrc__phy_we_cfg1 = 32'hF800616C; +parameter val_ddrc__phy_we_cfg1 = 32'h00000040; +parameter mask_ddrc__phy_we_cfg1 = 32'h001FFFFF; + +parameter ddrc__phy_we_cfg2 = 32'hF8006170; +parameter val_ddrc__phy_we_cfg2 = 32'h00000040; +parameter mask_ddrc__phy_we_cfg2 = 32'h001FFFFF; + +parameter ddrc__phy_we_cfg3 = 32'hF8006174; +parameter val_ddrc__phy_we_cfg3 = 32'h00000040; +parameter mask_ddrc__phy_we_cfg3 = 32'h001FFFFF; + +parameter ddrc__wr_data_slv0 = 32'hF800617C; +parameter val_ddrc__wr_data_slv0 = 32'h00000080; +parameter mask_ddrc__wr_data_slv0 = 32'h000FFFFF; + +parameter ddrc__wr_data_slv1 = 32'hF8006180; +parameter val_ddrc__wr_data_slv1 = 32'h00000080; +parameter mask_ddrc__wr_data_slv1 = 32'h000FFFFF; + +parameter ddrc__wr_data_slv2 = 32'hF8006184; +parameter val_ddrc__wr_data_slv2 = 32'h00000080; +parameter mask_ddrc__wr_data_slv2 = 32'h000FFFFF; + +parameter ddrc__wr_data_slv3 = 32'hF8006188; +parameter val_ddrc__wr_data_slv3 = 32'h00000080; +parameter mask_ddrc__wr_data_slv3 = 32'h000FFFFF; + +parameter ddrc__reg_64 = 32'hF8006190; +parameter val_ddrc__reg_64 = 32'h10020000; +parameter mask_ddrc__reg_64 = 32'hFFFFFFFF; + +parameter ddrc__reg_65 = 32'hF8006194; +parameter val_ddrc__reg_65 = 32'h00000000; +parameter mask_ddrc__reg_65 = 32'h000FFFFF; + +parameter ddrc__reg69_6a0 = 32'hF80061A4; +parameter val_ddrc__reg69_6a0 = 32'h000F0000; +parameter mask_ddrc__reg69_6a0 = 32'h1FFFFFFF; + +parameter ddrc__reg69_6a1 = 32'hF80061A8; +parameter val_ddrc__reg69_6a1 = 32'h000F0000; +parameter mask_ddrc__reg69_6a1 = 32'h1FFFFFFF; + +parameter ddrc__reg6c_6d2 = 32'hF80061B0; +parameter val_ddrc__reg6c_6d2 = 32'h000F0000; +parameter mask_ddrc__reg6c_6d2 = 32'h1FFFFFFF; + +parameter ddrc__reg6c_6d3 = 32'hF80061B4; +parameter val_ddrc__reg6c_6d3 = 32'h000F0000; +parameter mask_ddrc__reg6c_6d3 = 32'h1FFFFFFF; + +parameter ddrc__reg6e_710 = 32'hF80061B8; +parameter val_ddrc__reg6e_710 = 32'h00000000; +parameter mask_ddrc__reg6e_710 = 32'h00000000; + +parameter ddrc__reg6e_711 = 32'hF80061BC; +parameter val_ddrc__reg6e_711 = 32'h00000000; +parameter mask_ddrc__reg6e_711 = 32'h00000000; + +parameter ddrc__reg6e_712 = 32'hF80061C0; +parameter val_ddrc__reg6e_712 = 32'h00000000; +parameter mask_ddrc__reg6e_712 = 32'h00000000; + +parameter ddrc__reg6e_713 = 32'hF80061C4; +parameter val_ddrc__reg6e_713 = 32'h00000000; +parameter mask_ddrc__reg6e_713 = 32'h00000000; + +parameter ddrc__phy_dll_sts0 = 32'hF80061CC; +parameter val_ddrc__phy_dll_sts0 = 32'h00000000; +parameter mask_ddrc__phy_dll_sts0 = 32'h07FFFFFF; + +parameter ddrc__phy_dll_sts1 = 32'hF80061D0; +parameter val_ddrc__phy_dll_sts1 = 32'h00000000; +parameter mask_ddrc__phy_dll_sts1 = 32'h07FFFFFF; + +parameter ddrc__phy_dll_sts2 = 32'hF80061D4; +parameter val_ddrc__phy_dll_sts2 = 32'h00000000; +parameter mask_ddrc__phy_dll_sts2 = 32'h07FFFFFF; + +parameter ddrc__phy_dll_sts3 = 32'hF80061D8; +parameter val_ddrc__phy_dll_sts3 = 32'h00000000; +parameter mask_ddrc__phy_dll_sts3 = 32'h07FFFFFF; + +parameter ddrc__dll_lock_sts = 32'hF80061E0; +parameter val_ddrc__dll_lock_sts = 32'h00000000; +parameter mask_ddrc__dll_lock_sts = 32'h00FFFFFF; + +parameter ddrc__phy_ctrl_sts = 32'hF80061E4; +parameter val_ddrc__phy_ctrl_sts = 32'h00000000; +parameter mask_ddrc__phy_ctrl_sts = 32'h3FF80000; + +parameter ddrc__phy_ctrl_sts_reg2 = 32'hF80061E8; +parameter val_ddrc__phy_ctrl_sts_reg2 = 32'h00000000; +parameter mask_ddrc__phy_ctrl_sts_reg2 = 32'h07FFFFFF; + +parameter ddrc__axi_id = 32'hF8006200; +parameter val_ddrc__axi_id = 32'h00153042; +parameter mask_ddrc__axi_id = 32'h03FFFFFF; + +parameter ddrc__page_mask = 32'hF8006204; +parameter val_ddrc__page_mask = 32'h00000000; +parameter mask_ddrc__page_mask = 32'hFFFFFFFF; + +parameter ddrc__axi_priority_wr_port0 = 32'hF8006208; +parameter val_ddrc__axi_priority_wr_port0 = 32'h000803FF; +parameter mask_ddrc__axi_priority_wr_port0 = 32'h000FFFFF; + +parameter ddrc__axi_priority_wr_port1 = 32'hF800620C; +parameter val_ddrc__axi_priority_wr_port1 = 32'h000803FF; +parameter mask_ddrc__axi_priority_wr_port1 = 32'h000FFFFF; + +parameter ddrc__axi_priority_wr_port2 = 32'hF8006210; +parameter val_ddrc__axi_priority_wr_port2 = 32'h000803FF; +parameter mask_ddrc__axi_priority_wr_port2 = 32'h000FFFFF; + +parameter ddrc__axi_priority_wr_port3 = 32'hF8006214; +parameter val_ddrc__axi_priority_wr_port3 = 32'h000803FF; +parameter mask_ddrc__axi_priority_wr_port3 = 32'h000FFFFF; + +parameter ddrc__axi_priority_rd_port0 = 32'hF8006218; +parameter val_ddrc__axi_priority_rd_port0 = 32'h000003FF; +parameter mask_ddrc__axi_priority_rd_port0 = 32'h000FFFFF; + +parameter ddrc__axi_priority_rd_port1 = 32'hF800621C; +parameter val_ddrc__axi_priority_rd_port1 = 32'h000003FF; +parameter mask_ddrc__axi_priority_rd_port1 = 32'h000FFFFF; + +parameter ddrc__axi_priority_rd_port2 = 32'hF8006220; +parameter val_ddrc__axi_priority_rd_port2 = 32'h000003FF; +parameter mask_ddrc__axi_priority_rd_port2 = 32'h000FFFFF; + +parameter ddrc__axi_priority_rd_port3 = 32'hF8006224; +parameter val_ddrc__axi_priority_rd_port3 = 32'h000003FF; +parameter mask_ddrc__axi_priority_rd_port3 = 32'h000FFFFF; + +parameter ddrc__AHB_priority_cfg0 = 32'hF8006248; +parameter val_ddrc__AHB_priority_cfg0 = 32'h000003FF; +parameter mask_ddrc__AHB_priority_cfg0 = 32'h000FFFFF; + +parameter ddrc__AHB_priority_cfg1 = 32'hF800624C; +parameter val_ddrc__AHB_priority_cfg1 = 32'h000003FF; +parameter mask_ddrc__AHB_priority_cfg1 = 32'h000FFFFF; + +parameter ddrc__AHB_priority_cfg2 = 32'hF8006250; +parameter val_ddrc__AHB_priority_cfg2 = 32'h000003FF; +parameter mask_ddrc__AHB_priority_cfg2 = 32'h000FFFFF; + +parameter ddrc__AHB_priority_cfg3 = 32'hF8006254; +parameter val_ddrc__AHB_priority_cfg3 = 32'h000003FF; +parameter mask_ddrc__AHB_priority_cfg3 = 32'h000FFFFF; + +parameter ddrc__perf_mon0 = 32'hF8006260; +parameter val_ddrc__perf_mon0 = 32'h00000000; +parameter mask_ddrc__perf_mon0 = 32'h7FFFFFFF; + +parameter ddrc__perf_mon1 = 32'hF8006264; +parameter val_ddrc__perf_mon1 = 32'h00000000; +parameter mask_ddrc__perf_mon1 = 32'h7FFFFFFF; + +parameter ddrc__perf_mon2 = 32'hF8006268; +parameter val_ddrc__perf_mon2 = 32'h00000000; +parameter mask_ddrc__perf_mon2 = 32'h7FFFFFFF; + +parameter ddrc__perf_mon3 = 32'hF800626C; +parameter val_ddrc__perf_mon3 = 32'h00000000; +parameter mask_ddrc__perf_mon3 = 32'h7FFFFFFF; + +parameter ddrc__perf_mon20 = 32'hF8006270; +parameter val_ddrc__perf_mon20 = 32'h00000000; +parameter mask_ddrc__perf_mon20 = 32'hFFFFFFFF; + +parameter ddrc__perf_mon21 = 32'hF8006274; +parameter val_ddrc__perf_mon21 = 32'h00000000; +parameter mask_ddrc__perf_mon21 = 32'hFFFFFFFF; + +parameter ddrc__perf_mon22 = 32'hF8006278; +parameter val_ddrc__perf_mon22 = 32'h00000000; +parameter mask_ddrc__perf_mon22 = 32'hFFFFFFFF; + +parameter ddrc__perf_mon23 = 32'hF800627C; +parameter val_ddrc__perf_mon23 = 32'h00000000; +parameter mask_ddrc__perf_mon23 = 32'hFFFFFFFF; + +parameter ddrc__perf_mon30 = 32'hF8006280; +parameter val_ddrc__perf_mon30 = 32'h00000000; +parameter mask_ddrc__perf_mon30 = 32'h0000FFFF; + +parameter ddrc__perf_mon31 = 32'hF8006284; +parameter val_ddrc__perf_mon31 = 32'h00000000; +parameter mask_ddrc__perf_mon31 = 32'h0000FFFF; + +parameter ddrc__perf_mon32 = 32'hF8006288; +parameter val_ddrc__perf_mon32 = 32'h00000000; +parameter mask_ddrc__perf_mon32 = 32'h0000FFFF; + +parameter ddrc__perf_mon33 = 32'hF800628C; +parameter val_ddrc__perf_mon33 = 32'h00000000; +parameter mask_ddrc__perf_mon33 = 32'h0000FFFF; + +parameter ddrc__trusted_mem_cfg = 32'hF8006290; +parameter val_ddrc__trusted_mem_cfg = 32'h00000000; +parameter mask_ddrc__trusted_mem_cfg = 32'h0000FFFF; + +parameter ddrc__excl_access_cfg0 = 32'hF8006294; +parameter val_ddrc__excl_access_cfg0 = 32'h00000000; +parameter mask_ddrc__excl_access_cfg0 = 32'h0003FFFF; + +parameter ddrc__excl_access_cfg1 = 32'hF8006298; +parameter val_ddrc__excl_access_cfg1 = 32'h00000000; +parameter mask_ddrc__excl_access_cfg1 = 32'h0003FFFF; + +parameter ddrc__excl_access_cfg2 = 32'hF800629C; +parameter val_ddrc__excl_access_cfg2 = 32'h00000000; +parameter mask_ddrc__excl_access_cfg2 = 32'h0003FFFF; + +parameter ddrc__excl_access_cfg3 = 32'hF80062A0; +parameter val_ddrc__excl_access_cfg3 = 32'h00000000; +parameter mask_ddrc__excl_access_cfg3 = 32'h0003FFFF; + +parameter ddrc__mode_reg_read = 32'hF80062A4; +parameter val_ddrc__mode_reg_read = 32'h00000000; +parameter mask_ddrc__mode_reg_read = 32'hFFFFFFFF; + +parameter ddrc__lpddr_ctrl0 = 32'hF80062A8; +parameter val_ddrc__lpddr_ctrl0 = 32'h00000000; +parameter mask_ddrc__lpddr_ctrl0 = 32'h00000FFF; + +parameter ddrc__lpddr_ctrl1 = 32'hF80062AC; +parameter val_ddrc__lpddr_ctrl1 = 32'h00000000; +parameter mask_ddrc__lpddr_ctrl1 = 32'hFFFFFFFF; + +parameter ddrc__lpddr_ctrl2 = 32'hF80062B0; +parameter val_ddrc__lpddr_ctrl2 = 32'h003C0015; +parameter mask_ddrc__lpddr_ctrl2 = 32'h003FFFFF; + +parameter ddrc__lpddr_ctrl3 = 32'hF80062B4; +parameter val_ddrc__lpddr_ctrl3 = 32'h00000601; +parameter mask_ddrc__lpddr_ctrl3 = 32'h0003FFFF; + +parameter ddrc__phy_wr_lvl_fsm = 32'hF80062B8; +parameter val_ddrc__phy_wr_lvl_fsm = 32'h00004444; +parameter mask_ddrc__phy_wr_lvl_fsm = 32'h00007FFF; + +parameter ddrc__phy_rd_lvl_fsm = 32'hF80062BC; +parameter val_ddrc__phy_rd_lvl_fsm = 32'h00008888; +parameter mask_ddrc__phy_rd_lvl_fsm = 32'h0000FFFF; + +parameter ddrc__phy_gate_lvl_fsm = 32'hF80062C0; +parameter val_ddrc__phy_gate_lvl_fsm = 32'h00004444; +parameter mask_ddrc__phy_gate_lvl_fsm = 32'h00007FFF; + + +// ************************************************************ +// Module debug_axim axim +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_axim__GLOBAL_CTRL = 32'hF880C000; +parameter val_debug_axim__GLOBAL_CTRL = 32'h00000002; +parameter mask_debug_axim__GLOBAL_CTRL = 32'h00000003; + +parameter debug_axim__GLOBAL_STATUS = 32'hF880C004; +parameter val_debug_axim__GLOBAL_STATUS = 32'h00001000; +parameter mask_debug_axim__GLOBAL_STATUS = 32'h00001FC3; + +parameter debug_axim__FILTER_CTRL = 32'hF880C010; +parameter val_debug_axim__FILTER_CTRL = 32'h00000000; +parameter mask_debug_axim__FILTER_CTRL = 32'h0000007F; + +parameter debug_axim__TRIGGER_CTRL = 32'hF880C020; +parameter val_debug_axim__TRIGGER_CTRL = 32'h00000000; +parameter mask_debug_axim__TRIGGER_CTRL = 32'h0000FFFF; + +parameter debug_axim__TRIGGER_STATUS = 32'hF880C024; +parameter val_debug_axim__TRIGGER_STATUS = 32'h00000000; +parameter mask_debug_axim__TRIGGER_STATUS = 32'h00000003; + +parameter debug_axim__PACKET_CTRL = 32'hF880C030; +parameter val_debug_axim__PACKET_CTRL = 32'h00070000; +parameter mask_debug_axim__PACKET_CTRL = 32'h0007FFFF; + +parameter debug_axim__TOUT_CTRL = 32'hF880C040; +parameter val_debug_axim__TOUT_CTRL = 32'h00000000; +parameter mask_debug_axim__TOUT_CTRL = 32'h0000007F; + +parameter debug_axim__TOUT_THRESH = 32'hF880C044; +parameter val_debug_axim__TOUT_THRESH = 32'h00008000; +parameter mask_debug_axim__TOUT_THRESH = 32'hFFFFFFFF; + +parameter debug_axim__FIFO_CURRENT = 32'hF880C050; +parameter val_debug_axim__FIFO_CURRENT = 32'h80000000; +parameter mask_debug_axim__FIFO_CURRENT = 32'hFFFFFFFF; + +parameter debug_axim__FIFO_HYSTER = 32'hF880C054; +parameter val_debug_axim__FIFO_HYSTER = 32'h00000100; +parameter mask_debug_axim__FIFO_HYSTER = 32'h000003FF; + +parameter debug_axim__SYNC_CURRENT = 32'hF880C060; +parameter val_debug_axim__SYNC_CURRENT = 32'h00000000; +parameter mask_debug_axim__SYNC_CURRENT = 32'h00000FFF; + +parameter debug_axim__SYNC_RELOAD = 32'hF880C064; +parameter val_debug_axim__SYNC_RELOAD = 32'h00000800; +parameter mask_debug_axim__SYNC_RELOAD = 32'h00000FFF; + +parameter debug_axim__TSTMP_CURRENT = 32'hF880C070; +parameter val_debug_axim__TSTMP_CURRENT = 32'h00000000; +parameter mask_debug_axim__TSTMP_CURRENT = 32'h00000000; + +parameter debug_axim__ADDR0_MASK = 32'hF880C200; +parameter val_debug_axim__ADDR0_MASK = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR0_MASK = 32'h7FFFFFFF; + +parameter debug_axim__ADDR0_LOWER = 32'hF880C204; +parameter val_debug_axim__ADDR0_LOWER = 32'h00000000; +parameter mask_debug_axim__ADDR0_LOWER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR0_UPPER = 32'hF880C208; +parameter val_debug_axim__ADDR0_UPPER = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR0_UPPER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR0_MISC = 32'hF880C20C; +parameter val_debug_axim__ADDR0_MISC = 32'h00000000; +parameter mask_debug_axim__ADDR0_MISC = 32'h00007FFF; + +parameter debug_axim__ADDR1_MASK = 32'hF880C210; +parameter val_debug_axim__ADDR1_MASK = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR1_MASK = 32'h7FFFFFFF; + +parameter debug_axim__ADDR1_LOWER = 32'hF880C214; +parameter val_debug_axim__ADDR1_LOWER = 32'h00000000; +parameter mask_debug_axim__ADDR1_LOWER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR1_UPPER = 32'hF880C218; +parameter val_debug_axim__ADDR1_UPPER = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR1_UPPER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR1_MISC = 32'hF880C21C; +parameter val_debug_axim__ADDR1_MISC = 32'h00000000; +parameter mask_debug_axim__ADDR1_MISC = 32'h00007FFF; + +parameter debug_axim__ADDR2_MASK = 32'hF880C220; +parameter val_debug_axim__ADDR2_MASK = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR2_MASK = 32'h7FFFFFFF; + +parameter debug_axim__ADDR2_LOWER = 32'hF880C224; +parameter val_debug_axim__ADDR2_LOWER = 32'h00000000; +parameter mask_debug_axim__ADDR2_LOWER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR2_UPPER = 32'hF880C228; +parameter val_debug_axim__ADDR2_UPPER = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR2_UPPER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR2_MISC = 32'hF880C22C; +parameter val_debug_axim__ADDR2_MISC = 32'h00000000; +parameter mask_debug_axim__ADDR2_MISC = 32'h00007FFF; + +parameter debug_axim__ADDR3_MASK = 32'hF880C230; +parameter val_debug_axim__ADDR3_MASK = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR3_MASK = 32'h7FFFFFFF; + +parameter debug_axim__ADDR3_LOWER = 32'hF880C234; +parameter val_debug_axim__ADDR3_LOWER = 32'h00000000; +parameter mask_debug_axim__ADDR3_LOWER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR3_UPPER = 32'hF880C238; +parameter val_debug_axim__ADDR3_UPPER = 32'h7FFFFFFC; +parameter mask_debug_axim__ADDR3_UPPER = 32'h7FFFFFFF; + +parameter debug_axim__ADDR3_MISC = 32'hF880C23C; +parameter val_debug_axim__ADDR3_MISC = 32'h00000000; +parameter mask_debug_axim__ADDR3_MISC = 32'h00007FFF; + +parameter debug_axim__ID0_MASK = 32'hF880C300; +parameter val_debug_axim__ID0_MASK = 32'h000003FF; +parameter mask_debug_axim__ID0_MASK = 32'h000003FF; + +parameter debug_axim__ID0_LOWER = 32'hF880C304; +parameter val_debug_axim__ID0_LOWER = 32'h00000000; +parameter mask_debug_axim__ID0_LOWER = 32'h000003FF; + +parameter debug_axim__ID0_UPPER = 32'hF880C308; +parameter val_debug_axim__ID0_UPPER = 32'h000003FF; +parameter mask_debug_axim__ID0_UPPER = 32'h000003FF; + +parameter debug_axim__ID0_MISC = 32'hF880C30C; +parameter val_debug_axim__ID0_MISC = 32'h00000000; +parameter mask_debug_axim__ID0_MISC = 32'h00003FFF; + +parameter debug_axim__ID1_MASK = 32'hF880C310; +parameter val_debug_axim__ID1_MASK = 32'h000003FF; +parameter mask_debug_axim__ID1_MASK = 32'h000003FF; + +parameter debug_axim__ID1_LOWER = 32'hF880C314; +parameter val_debug_axim__ID1_LOWER = 32'h00000000; +parameter mask_debug_axim__ID1_LOWER = 32'h000003FF; + +parameter debug_axim__ID1_UPPER = 32'hF880C318; +parameter val_debug_axim__ID1_UPPER = 32'h000003FF; +parameter mask_debug_axim__ID1_UPPER = 32'h000003FF; + +parameter debug_axim__ID1_MISC = 32'hF880C31C; +parameter val_debug_axim__ID1_MISC = 32'h00000000; +parameter mask_debug_axim__ID1_MISC = 32'h00003FFF; + +parameter debug_axim__ID2_MASK = 32'hF880C320; +parameter val_debug_axim__ID2_MASK = 32'h000003FF; +parameter mask_debug_axim__ID2_MASK = 32'h000003FF; + +parameter debug_axim__ID2_LOWER = 32'hF880C324; +parameter val_debug_axim__ID2_LOWER = 32'h00000000; +parameter mask_debug_axim__ID2_LOWER = 32'h000003FF; + +parameter debug_axim__ID2_UPPER = 32'hF880C328; +parameter val_debug_axim__ID2_UPPER = 32'h000003FF; +parameter mask_debug_axim__ID2_UPPER = 32'h000003FF; + +parameter debug_axim__ID2_MISC = 32'hF880C32C; +parameter val_debug_axim__ID2_MISC = 32'h00000000; +parameter mask_debug_axim__ID2_MISC = 32'h00003FFF; + +parameter debug_axim__ID3_MASK = 32'hF880C330; +parameter val_debug_axim__ID3_MASK = 32'h000003FF; +parameter mask_debug_axim__ID3_MASK = 32'h000003FF; + +parameter debug_axim__ID3_LOWER = 32'hF880C334; +parameter val_debug_axim__ID3_LOWER = 32'h00000000; +parameter mask_debug_axim__ID3_LOWER = 32'h000003FF; + +parameter debug_axim__ID3_UPPER = 32'hF880C338; +parameter val_debug_axim__ID3_UPPER = 32'h000003FF; +parameter mask_debug_axim__ID3_UPPER = 32'h000003FF; + +parameter debug_axim__ID3_MISC = 32'hF880C33C; +parameter val_debug_axim__ID3_MISC = 32'h00000000; +parameter mask_debug_axim__ID3_MISC = 32'h00003FFF; + +parameter debug_axim__AXI_SEL = 32'hF880C800; +parameter val_debug_axim__AXI_SEL = 32'h00000000; +parameter mask_debug_axim__AXI_SEL = 32'h00000007; + +parameter debug_axim__IT_TRIGOUT = 32'hF880CED0; +parameter val_debug_axim__IT_TRIGOUT = 32'h00000000; +parameter mask_debug_axim__IT_TRIGOUT = 32'h00000001; + +parameter debug_axim__IT_TRIGOUTACK = 32'hF880CED4; +parameter val_debug_axim__IT_TRIGOUTACK = 32'h00000000; +parameter mask_debug_axim__IT_TRIGOUTACK = 32'h00000000; + +parameter debug_axim__IT_TRIGIN = 32'hF880CED8; +parameter val_debug_axim__IT_TRIGIN = 32'h00000000; +parameter mask_debug_axim__IT_TRIGIN = 32'h00000000; + +parameter debug_axim__IT_TRIGINACK = 32'hF880CEDC; +parameter val_debug_axim__IT_TRIGINACK = 32'h00000000; +parameter mask_debug_axim__IT_TRIGINACK = 32'h00000001; + +parameter debug_axim__IT_ATBDATA = 32'hF880CEEC; +parameter val_debug_axim__IT_ATBDATA = 32'h00000000; +parameter mask_debug_axim__IT_ATBDATA = 32'h0000001F; + +parameter debug_axim__IT_ATBSTATUS = 32'hF880CEF0; +parameter val_debug_axim__IT_ATBSTATUS = 32'h00000000; +parameter mask_debug_axim__IT_ATBSTATUS = 32'h00000000; + +parameter debug_axim__IT_ATBCTRL1 = 32'hF880CEF4; +parameter val_debug_axim__IT_ATBCTRL1 = 32'h00000000; +parameter mask_debug_axim__IT_ATBCTRL1 = 32'h0000007F; + +parameter debug_axim__IT_ATBCTRL0 = 32'hF880CEF8; +parameter val_debug_axim__IT_ATBCTRL0 = 32'h00000000; +parameter mask_debug_axim__IT_ATBCTRL0 = 32'h000003FF; + +parameter debug_axim__IT_CTRL = 32'hF880CF00; +parameter val_debug_axim__IT_CTRL = 32'h00000000; +parameter mask_debug_axim__IT_CTRL = 32'h00000001; + +parameter debug_axim__CLAIM_SET = 32'hF880CFA0; +parameter val_debug_axim__CLAIM_SET = 32'h00000001; +parameter mask_debug_axim__CLAIM_SET = 32'h0000000F; + +parameter debug_axim__CLAIM_CLEAR = 32'hF880CFA4; +parameter val_debug_axim__CLAIM_CLEAR = 32'h00000000; +parameter mask_debug_axim__CLAIM_CLEAR = 32'h0000000F; + +parameter debug_axim__LOCK_ACCESS = 32'hF880CFB0; +parameter val_debug_axim__LOCK_ACCESS = 32'h00000000; +parameter mask_debug_axim__LOCK_ACCESS = 32'hFFFFFFFF; + +parameter debug_axim__LOCK_STATUS = 32'hF880CFB4; +parameter val_debug_axim__LOCK_STATUS = 32'h00000003; +parameter mask_debug_axim__LOCK_STATUS = 32'h00000007; + +parameter debug_axim__AUTH_STATUS = 32'hF880CFB8; +parameter val_debug_axim__AUTH_STATUS = 32'h00000000; +parameter mask_debug_axim__AUTH_STATUS = 32'h00000033; + +parameter debug_axim__DEV_ID = 32'hF880CFC8; +parameter val_debug_axim__DEV_ID = 32'h00000000; +parameter mask_debug_axim__DEV_ID = 32'hFFFFFFFF; + +parameter debug_axim__DEV_TYPE = 32'hF880CFCC; +parameter val_debug_axim__DEV_TYPE = 32'h00000043; +parameter mask_debug_axim__DEV_TYPE = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID4 = 32'hF880CFD0; +parameter val_debug_axim__PERIPHID4 = 32'h00000003; +parameter mask_debug_axim__PERIPHID4 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID5 = 32'hF880CFD4; +parameter val_debug_axim__PERIPHID5 = 32'h00000000; +parameter mask_debug_axim__PERIPHID5 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID6 = 32'hF880CFD8; +parameter val_debug_axim__PERIPHID6 = 32'h00000000; +parameter mask_debug_axim__PERIPHID6 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID7 = 32'hF880CFDC; +parameter val_debug_axim__PERIPHID7 = 32'h00000000; +parameter mask_debug_axim__PERIPHID7 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID0 = 32'hF880CFE0; +parameter val_debug_axim__PERIPHID0 = 32'h000000B2; +parameter mask_debug_axim__PERIPHID0 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID1 = 32'hF880CFE4; +parameter val_debug_axim__PERIPHID1 = 32'h00000093; +parameter mask_debug_axim__PERIPHID1 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID2 = 32'hF880CFE8; +parameter val_debug_axim__PERIPHID2 = 32'h00000008; +parameter mask_debug_axim__PERIPHID2 = 32'hFFFFFFFF; + +parameter debug_axim__PERIPHID3 = 32'hF880CFEC; +parameter val_debug_axim__PERIPHID3 = 32'h00000002; +parameter mask_debug_axim__PERIPHID3 = 32'hFFFFFFFF; + +parameter debug_axim__COMPID0 = 32'hF880CFF0; +parameter val_debug_axim__COMPID0 = 32'h0000000D; +parameter mask_debug_axim__COMPID0 = 32'hFFFFFFFF; + +parameter debug_axim__COMPID1 = 32'hF880CFF4; +parameter val_debug_axim__COMPID1 = 32'h00000090; +parameter mask_debug_axim__COMPID1 = 32'hFFFFFFFF; + +parameter debug_axim__COMPID2 = 32'hF880CFF8; +parameter val_debug_axim__COMPID2 = 32'h00000005; +parameter mask_debug_axim__COMPID2 = 32'hFFFFFFFF; + +parameter debug_axim__COMPID3 = 32'hF880CFFC; +parameter val_debug_axim__COMPID3 = 32'h000000B1; +parameter mask_debug_axim__COMPID3 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module debug_cpu_cti0 cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cpu_cti0__CTICONTROL = 32'hF8898000; +parameter val_debug_cpu_cti0__CTICONTROL = 32'h00000000; +parameter mask_debug_cpu_cti0__CTICONTROL = 32'h00000001; + +parameter debug_cpu_cti0__CTIINTACK = 32'hF8898010; +parameter val_debug_cpu_cti0__CTIINTACK = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINTACK = 32'h000000FF; + +parameter debug_cpu_cti0__CTIAPPSET = 32'hF8898014; +parameter val_debug_cpu_cti0__CTIAPPSET = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIAPPSET = 32'h0000000F; + +parameter debug_cpu_cti0__CTIAPPCLEAR = 32'hF8898018; +parameter val_debug_cpu_cti0__CTIAPPCLEAR = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIAPPCLEAR = 32'h0000000F; + +parameter debug_cpu_cti0__CTIAPPPULSE = 32'hF889801C; +parameter val_debug_cpu_cti0__CTIAPPPULSE = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIAPPPULSE = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN0 = 32'hF8898020; +parameter val_debug_cpu_cti0__CTIINEN0 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN0 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN1 = 32'hF8898024; +parameter val_debug_cpu_cti0__CTIINEN1 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN1 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN2 = 32'hF8898028; +parameter val_debug_cpu_cti0__CTIINEN2 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN2 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN3 = 32'hF889802C; +parameter val_debug_cpu_cti0__CTIINEN3 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN3 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN4 = 32'hF8898030; +parameter val_debug_cpu_cti0__CTIINEN4 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN4 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN5 = 32'hF8898034; +parameter val_debug_cpu_cti0__CTIINEN5 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN5 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN6 = 32'hF8898038; +parameter val_debug_cpu_cti0__CTIINEN6 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN6 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIINEN7 = 32'hF889803C; +parameter val_debug_cpu_cti0__CTIINEN7 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIINEN7 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN0 = 32'hF88980A0; +parameter val_debug_cpu_cti0__CTIOUTEN0 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN0 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN1 = 32'hF88980A4; +parameter val_debug_cpu_cti0__CTIOUTEN1 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN1 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN2 = 32'hF88980A8; +parameter val_debug_cpu_cti0__CTIOUTEN2 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN2 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN3 = 32'hF88980AC; +parameter val_debug_cpu_cti0__CTIOUTEN3 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN3 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN4 = 32'hF88980B0; +parameter val_debug_cpu_cti0__CTIOUTEN4 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN4 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN5 = 32'hF88980B4; +parameter val_debug_cpu_cti0__CTIOUTEN5 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN5 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN6 = 32'hF88980B8; +parameter val_debug_cpu_cti0__CTIOUTEN6 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN6 = 32'h0000000F; + +parameter debug_cpu_cti0__CTIOUTEN7 = 32'hF88980BC; +parameter val_debug_cpu_cti0__CTIOUTEN7 = 32'h00000000; +parameter mask_debug_cpu_cti0__CTIOUTEN7 = 32'h0000000F; + +parameter debug_cpu_cti0__CTITRIGINSTATUS = 32'hF8898130; +parameter val_debug_cpu_cti0__CTITRIGINSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti0__CTITRIGINSTATUS = 32'h00000000; + +parameter debug_cpu_cti0__CTITRIGOUTSTATUS = 32'hF8898134; +parameter val_debug_cpu_cti0__CTITRIGOUTSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti0__CTITRIGOUTSTATUS = 32'h000000FF; + +parameter debug_cpu_cti0__CTICHINSTATUS = 32'hF8898138; +parameter val_debug_cpu_cti0__CTICHINSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti0__CTICHINSTATUS = 32'h00000000; + +parameter debug_cpu_cti0__CTICHOUTSTATUS = 32'hF889813C; +parameter val_debug_cpu_cti0__CTICHOUTSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti0__CTICHOUTSTATUS = 32'h0000000F; + +parameter debug_cpu_cti0__CTIGATE = 32'hF8898140; +parameter val_debug_cpu_cti0__CTIGATE = 32'h0000000F; +parameter mask_debug_cpu_cti0__CTIGATE = 32'h0000000F; + +parameter debug_cpu_cti0__ASICCTL = 32'hF8898144; +parameter val_debug_cpu_cti0__ASICCTL = 32'h00000000; +parameter mask_debug_cpu_cti0__ASICCTL = 32'h000000FF; + +parameter debug_cpu_cti0__ITCHINACK = 32'hF8898EDC; +parameter val_debug_cpu_cti0__ITCHINACK = 32'h00000000; +parameter mask_debug_cpu_cti0__ITCHINACK = 32'h0000000F; + +parameter debug_cpu_cti0__ITTRIGINACK = 32'hF8898EE0; +parameter val_debug_cpu_cti0__ITTRIGINACK = 32'h00000000; +parameter mask_debug_cpu_cti0__ITTRIGINACK = 32'h000000FF; + +parameter debug_cpu_cti0__ITCHOUT = 32'hF8898EE4; +parameter val_debug_cpu_cti0__ITCHOUT = 32'h00000000; +parameter mask_debug_cpu_cti0__ITCHOUT = 32'h0000000F; + +parameter debug_cpu_cti0__ITTRIGOUT = 32'hF8898EE8; +parameter val_debug_cpu_cti0__ITTRIGOUT = 32'h00000000; +parameter mask_debug_cpu_cti0__ITTRIGOUT = 32'h000000FF; + +parameter debug_cpu_cti0__ITCHOUTACK = 32'hF8898EEC; +parameter val_debug_cpu_cti0__ITCHOUTACK = 32'h00000000; +parameter mask_debug_cpu_cti0__ITCHOUTACK = 32'h0000000F; + +parameter debug_cpu_cti0__ITTRIGOUTACK = 32'hF8898EF0; +parameter val_debug_cpu_cti0__ITTRIGOUTACK = 32'h00000000; +parameter mask_debug_cpu_cti0__ITTRIGOUTACK = 32'h000000FF; + +parameter debug_cpu_cti0__ITCHIN = 32'hF8898EF4; +parameter val_debug_cpu_cti0__ITCHIN = 32'h00000000; +parameter mask_debug_cpu_cti0__ITCHIN = 32'h0000000F; + +parameter debug_cpu_cti0__ITTRIGIN = 32'hF8898EF8; +parameter val_debug_cpu_cti0__ITTRIGIN = 32'h00000000; +parameter mask_debug_cpu_cti0__ITTRIGIN = 32'h000000FF; + +parameter debug_cpu_cti0__ITCTRL = 32'hF8898F00; +parameter val_debug_cpu_cti0__ITCTRL = 32'h00000000; +parameter mask_debug_cpu_cti0__ITCTRL = 32'h00000001; + +parameter debug_cpu_cti0__CTSR = 32'hF8898FA0; +parameter val_debug_cpu_cti0__CTSR = 32'h0000000F; +parameter mask_debug_cpu_cti0__CTSR = 32'h0000000F; + +parameter debug_cpu_cti0__CTCR = 32'hF8898FA4; +parameter val_debug_cpu_cti0__CTCR = 32'h00000000; +parameter mask_debug_cpu_cti0__CTCR = 32'h0000000F; + +parameter debug_cpu_cti0__LAR = 32'hF8898FB0; +parameter val_debug_cpu_cti0__LAR = 32'h00000000; +parameter mask_debug_cpu_cti0__LAR = 32'hFFFFFFFF; + +parameter debug_cpu_cti0__LSR = 32'hF8898FB4; +parameter val_debug_cpu_cti0__LSR = 32'h00000003; +parameter mask_debug_cpu_cti0__LSR = 32'h00000007; + +parameter debug_cpu_cti0__ASR = 32'hF8898FB8; +parameter val_debug_cpu_cti0__ASR = 32'h00000005; +parameter mask_debug_cpu_cti0__ASR = 32'h00000005; + +parameter debug_cpu_cti0__DEVID = 32'hF8898FC8; +parameter val_debug_cpu_cti0__DEVID = 32'h00040800; +parameter mask_debug_cpu_cti0__DEVID = 32'h000FFFFF; + +parameter debug_cpu_cti0__DTIR = 32'hF8898FCC; +parameter val_debug_cpu_cti0__DTIR = 32'h00000014; +parameter mask_debug_cpu_cti0__DTIR = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID4 = 32'hF8898FD0; +parameter val_debug_cpu_cti0__PERIPHID4 = 32'h00000004; +parameter mask_debug_cpu_cti0__PERIPHID4 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID5 = 32'hF8898FD4; +parameter val_debug_cpu_cti0__PERIPHID5 = 32'h00000000; +parameter mask_debug_cpu_cti0__PERIPHID5 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID6 = 32'hF8898FD8; +parameter val_debug_cpu_cti0__PERIPHID6 = 32'h00000000; +parameter mask_debug_cpu_cti0__PERIPHID6 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID7 = 32'hF8898FDC; +parameter val_debug_cpu_cti0__PERIPHID7 = 32'h00000000; +parameter mask_debug_cpu_cti0__PERIPHID7 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID0 = 32'hF8898FE0; +parameter val_debug_cpu_cti0__PERIPHID0 = 32'h00000006; +parameter mask_debug_cpu_cti0__PERIPHID0 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID1 = 32'hF8898FE4; +parameter val_debug_cpu_cti0__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cpu_cti0__PERIPHID1 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID2 = 32'hF8898FE8; +parameter val_debug_cpu_cti0__PERIPHID2 = 32'h0000002B; +parameter mask_debug_cpu_cti0__PERIPHID2 = 32'h000000FF; + +parameter debug_cpu_cti0__PERIPHID3 = 32'hF8898FEC; +parameter val_debug_cpu_cti0__PERIPHID3 = 32'h00000000; +parameter mask_debug_cpu_cti0__PERIPHID3 = 32'h000000FF; + +parameter debug_cpu_cti0__COMPID0 = 32'hF8898FF0; +parameter val_debug_cpu_cti0__COMPID0 = 32'h0000000D; +parameter mask_debug_cpu_cti0__COMPID0 = 32'h000000FF; + +parameter debug_cpu_cti0__COMPID1 = 32'hF8898FF4; +parameter val_debug_cpu_cti0__COMPID1 = 32'h00000090; +parameter mask_debug_cpu_cti0__COMPID1 = 32'h000000FF; + +parameter debug_cpu_cti0__COMPID2 = 32'hF8898FF8; +parameter val_debug_cpu_cti0__COMPID2 = 32'h00000005; +parameter mask_debug_cpu_cti0__COMPID2 = 32'h000000FF; + +parameter debug_cpu_cti0__COMPID3 = 32'hF8898FFC; +parameter val_debug_cpu_cti0__COMPID3 = 32'h000000B1; +parameter mask_debug_cpu_cti0__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_cpu_cti1 cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cpu_cti1__CTICONTROL = 32'hF8899000; +parameter val_debug_cpu_cti1__CTICONTROL = 32'h00000000; +parameter mask_debug_cpu_cti1__CTICONTROL = 32'h00000001; + +parameter debug_cpu_cti1__CTIINTACK = 32'hF8899010; +parameter val_debug_cpu_cti1__CTIINTACK = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINTACK = 32'h000000FF; + +parameter debug_cpu_cti1__CTIAPPSET = 32'hF8899014; +parameter val_debug_cpu_cti1__CTIAPPSET = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIAPPSET = 32'h0000000F; + +parameter debug_cpu_cti1__CTIAPPCLEAR = 32'hF8899018; +parameter val_debug_cpu_cti1__CTIAPPCLEAR = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIAPPCLEAR = 32'h0000000F; + +parameter debug_cpu_cti1__CTIAPPPULSE = 32'hF889901C; +parameter val_debug_cpu_cti1__CTIAPPPULSE = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIAPPPULSE = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN0 = 32'hF8899020; +parameter val_debug_cpu_cti1__CTIINEN0 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN0 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN1 = 32'hF8899024; +parameter val_debug_cpu_cti1__CTIINEN1 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN1 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN2 = 32'hF8899028; +parameter val_debug_cpu_cti1__CTIINEN2 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN2 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN3 = 32'hF889902C; +parameter val_debug_cpu_cti1__CTIINEN3 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN3 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN4 = 32'hF8899030; +parameter val_debug_cpu_cti1__CTIINEN4 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN4 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN5 = 32'hF8899034; +parameter val_debug_cpu_cti1__CTIINEN5 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN5 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN6 = 32'hF8899038; +parameter val_debug_cpu_cti1__CTIINEN6 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN6 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIINEN7 = 32'hF889903C; +parameter val_debug_cpu_cti1__CTIINEN7 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIINEN7 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN0 = 32'hF88990A0; +parameter val_debug_cpu_cti1__CTIOUTEN0 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN0 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN1 = 32'hF88990A4; +parameter val_debug_cpu_cti1__CTIOUTEN1 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN1 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN2 = 32'hF88990A8; +parameter val_debug_cpu_cti1__CTIOUTEN2 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN2 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN3 = 32'hF88990AC; +parameter val_debug_cpu_cti1__CTIOUTEN3 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN3 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN4 = 32'hF88990B0; +parameter val_debug_cpu_cti1__CTIOUTEN4 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN4 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN5 = 32'hF88990B4; +parameter val_debug_cpu_cti1__CTIOUTEN5 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN5 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN6 = 32'hF88990B8; +parameter val_debug_cpu_cti1__CTIOUTEN6 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN6 = 32'h0000000F; + +parameter debug_cpu_cti1__CTIOUTEN7 = 32'hF88990BC; +parameter val_debug_cpu_cti1__CTIOUTEN7 = 32'h00000000; +parameter mask_debug_cpu_cti1__CTIOUTEN7 = 32'h0000000F; + +parameter debug_cpu_cti1__CTITRIGINSTATUS = 32'hF8899130; +parameter val_debug_cpu_cti1__CTITRIGINSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti1__CTITRIGINSTATUS = 32'h00000000; + +parameter debug_cpu_cti1__CTITRIGOUTSTATUS = 32'hF8899134; +parameter val_debug_cpu_cti1__CTITRIGOUTSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti1__CTITRIGOUTSTATUS = 32'h000000FF; + +parameter debug_cpu_cti1__CTICHINSTATUS = 32'hF8899138; +parameter val_debug_cpu_cti1__CTICHINSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti1__CTICHINSTATUS = 32'h00000000; + +parameter debug_cpu_cti1__CTICHOUTSTATUS = 32'hF889913C; +parameter val_debug_cpu_cti1__CTICHOUTSTATUS = 32'h00000000; +parameter mask_debug_cpu_cti1__CTICHOUTSTATUS = 32'h0000000F; + +parameter debug_cpu_cti1__CTIGATE = 32'hF8899140; +parameter val_debug_cpu_cti1__CTIGATE = 32'h0000000F; +parameter mask_debug_cpu_cti1__CTIGATE = 32'h0000000F; + +parameter debug_cpu_cti1__ASICCTL = 32'hF8899144; +parameter val_debug_cpu_cti1__ASICCTL = 32'h00000000; +parameter mask_debug_cpu_cti1__ASICCTL = 32'h000000FF; + +parameter debug_cpu_cti1__ITCHINACK = 32'hF8899EDC; +parameter val_debug_cpu_cti1__ITCHINACK = 32'h00000000; +parameter mask_debug_cpu_cti1__ITCHINACK = 32'h0000000F; + +parameter debug_cpu_cti1__ITTRIGINACK = 32'hF8899EE0; +parameter val_debug_cpu_cti1__ITTRIGINACK = 32'h00000000; +parameter mask_debug_cpu_cti1__ITTRIGINACK = 32'h000000FF; + +parameter debug_cpu_cti1__ITCHOUT = 32'hF8899EE4; +parameter val_debug_cpu_cti1__ITCHOUT = 32'h00000000; +parameter mask_debug_cpu_cti1__ITCHOUT = 32'h0000000F; + +parameter debug_cpu_cti1__ITTRIGOUT = 32'hF8899EE8; +parameter val_debug_cpu_cti1__ITTRIGOUT = 32'h00000000; +parameter mask_debug_cpu_cti1__ITTRIGOUT = 32'h000000FF; + +parameter debug_cpu_cti1__ITCHOUTACK = 32'hF8899EEC; +parameter val_debug_cpu_cti1__ITCHOUTACK = 32'h00000000; +parameter mask_debug_cpu_cti1__ITCHOUTACK = 32'h0000000F; + +parameter debug_cpu_cti1__ITTRIGOUTACK = 32'hF8899EF0; +parameter val_debug_cpu_cti1__ITTRIGOUTACK = 32'h00000000; +parameter mask_debug_cpu_cti1__ITTRIGOUTACK = 32'h000000FF; + +parameter debug_cpu_cti1__ITCHIN = 32'hF8899EF4; +parameter val_debug_cpu_cti1__ITCHIN = 32'h00000000; +parameter mask_debug_cpu_cti1__ITCHIN = 32'h0000000F; + +parameter debug_cpu_cti1__ITTRIGIN = 32'hF8899EF8; +parameter val_debug_cpu_cti1__ITTRIGIN = 32'h00000000; +parameter mask_debug_cpu_cti1__ITTRIGIN = 32'h000000FF; + +parameter debug_cpu_cti1__ITCTRL = 32'hF8899F00; +parameter val_debug_cpu_cti1__ITCTRL = 32'h00000000; +parameter mask_debug_cpu_cti1__ITCTRL = 32'h00000001; + +parameter debug_cpu_cti1__CTSR = 32'hF8899FA0; +parameter val_debug_cpu_cti1__CTSR = 32'h0000000F; +parameter mask_debug_cpu_cti1__CTSR = 32'h0000000F; + +parameter debug_cpu_cti1__CTCR = 32'hF8899FA4; +parameter val_debug_cpu_cti1__CTCR = 32'h00000000; +parameter mask_debug_cpu_cti1__CTCR = 32'h0000000F; + +parameter debug_cpu_cti1__LAR = 32'hF8899FB0; +parameter val_debug_cpu_cti1__LAR = 32'h00000000; +parameter mask_debug_cpu_cti1__LAR = 32'hFFFFFFFF; + +parameter debug_cpu_cti1__LSR = 32'hF8899FB4; +parameter val_debug_cpu_cti1__LSR = 32'h00000003; +parameter mask_debug_cpu_cti1__LSR = 32'h00000007; + +parameter debug_cpu_cti1__ASR = 32'hF8899FB8; +parameter val_debug_cpu_cti1__ASR = 32'h00000005; +parameter mask_debug_cpu_cti1__ASR = 32'h00000005; + +parameter debug_cpu_cti1__DEVID = 32'hF8899FC8; +parameter val_debug_cpu_cti1__DEVID = 32'h00040800; +parameter mask_debug_cpu_cti1__DEVID = 32'h000FFFFF; + +parameter debug_cpu_cti1__DTIR = 32'hF8899FCC; +parameter val_debug_cpu_cti1__DTIR = 32'h00000014; +parameter mask_debug_cpu_cti1__DTIR = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID4 = 32'hF8899FD0; +parameter val_debug_cpu_cti1__PERIPHID4 = 32'h00000004; +parameter mask_debug_cpu_cti1__PERIPHID4 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID5 = 32'hF8899FD4; +parameter val_debug_cpu_cti1__PERIPHID5 = 32'h00000000; +parameter mask_debug_cpu_cti1__PERIPHID5 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID6 = 32'hF8899FD8; +parameter val_debug_cpu_cti1__PERIPHID6 = 32'h00000000; +parameter mask_debug_cpu_cti1__PERIPHID6 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID7 = 32'hF8899FDC; +parameter val_debug_cpu_cti1__PERIPHID7 = 32'h00000000; +parameter mask_debug_cpu_cti1__PERIPHID7 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID0 = 32'hF8899FE0; +parameter val_debug_cpu_cti1__PERIPHID0 = 32'h00000006; +parameter mask_debug_cpu_cti1__PERIPHID0 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID1 = 32'hF8899FE4; +parameter val_debug_cpu_cti1__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cpu_cti1__PERIPHID1 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID2 = 32'hF8899FE8; +parameter val_debug_cpu_cti1__PERIPHID2 = 32'h0000002B; +parameter mask_debug_cpu_cti1__PERIPHID2 = 32'h000000FF; + +parameter debug_cpu_cti1__PERIPHID3 = 32'hF8899FEC; +parameter val_debug_cpu_cti1__PERIPHID3 = 32'h00000000; +parameter mask_debug_cpu_cti1__PERIPHID3 = 32'h000000FF; + +parameter debug_cpu_cti1__COMPID0 = 32'hF8899FF0; +parameter val_debug_cpu_cti1__COMPID0 = 32'h0000000D; +parameter mask_debug_cpu_cti1__COMPID0 = 32'h000000FF; + +parameter debug_cpu_cti1__COMPID1 = 32'hF8899FF4; +parameter val_debug_cpu_cti1__COMPID1 = 32'h00000090; +parameter mask_debug_cpu_cti1__COMPID1 = 32'h000000FF; + +parameter debug_cpu_cti1__COMPID2 = 32'hF8899FF8; +parameter val_debug_cpu_cti1__COMPID2 = 32'h00000005; +parameter mask_debug_cpu_cti1__COMPID2 = 32'h000000FF; + +parameter debug_cpu_cti1__COMPID3 = 32'hF8899FFC; +parameter val_debug_cpu_cti1__COMPID3 = 32'h000000B1; +parameter mask_debug_cpu_cti1__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_cpu_pmu0 cortexa9_pmu +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cpu_pmu0__PMXEVCNTR0 = 32'hF8891000; +parameter val_debug_cpu_pmu0__PMXEVCNTR0 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVCNTR0 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVCNTR1 = 32'hF8891004; +parameter val_debug_cpu_pmu0__PMXEVCNTR1 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVCNTR1 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVCNTR2 = 32'hF8891008; +parameter val_debug_cpu_pmu0__PMXEVCNTR2 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVCNTR2 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVCNTR3 = 32'hF889100C; +parameter val_debug_cpu_pmu0__PMXEVCNTR3 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVCNTR3 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVCNTR4 = 32'hF8891010; +parameter val_debug_cpu_pmu0__PMXEVCNTR4 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVCNTR4 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVCNTR5 = 32'hF8891014; +parameter val_debug_cpu_pmu0__PMXEVCNTR5 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVCNTR5 = 32'h00000000; + +parameter debug_cpu_pmu0__PMCCNTR = 32'hF889107C; +parameter val_debug_cpu_pmu0__PMCCNTR = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMCCNTR = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVTYPER0 = 32'hF8891400; +parameter val_debug_cpu_pmu0__PMXEVTYPER0 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVTYPER0 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVTYPER1 = 32'hF8891404; +parameter val_debug_cpu_pmu0__PMXEVTYPER1 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVTYPER1 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVTYPER2 = 32'hF8891408; +parameter val_debug_cpu_pmu0__PMXEVTYPER2 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVTYPER2 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVTYPER3 = 32'hF889140C; +parameter val_debug_cpu_pmu0__PMXEVTYPER3 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVTYPER3 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVTYPER4 = 32'hF8891410; +parameter val_debug_cpu_pmu0__PMXEVTYPER4 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVTYPER4 = 32'h00000000; + +parameter debug_cpu_pmu0__PMXEVTYPER5 = 32'hF8891414; +parameter val_debug_cpu_pmu0__PMXEVTYPER5 = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMXEVTYPER5 = 32'h00000000; + +parameter debug_cpu_pmu0__PMCNTENSET = 32'hF8891C00; +parameter val_debug_cpu_pmu0__PMCNTENSET = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMCNTENSET = 32'hFFFFFFFF; + +parameter debug_cpu_pmu0__PMCNTENCLR = 32'hF8891C20; +parameter val_debug_cpu_pmu0__PMCNTENCLR = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMCNTENCLR = 32'hFFFFFFFF; + +parameter debug_cpu_pmu0__PMINTENSET = 32'hF8891C40; +parameter val_debug_cpu_pmu0__PMINTENSET = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMINTENSET = 32'hFFFFFFFF; + +parameter debug_cpu_pmu0__PMINTENCLR = 32'hF8891C60; +parameter val_debug_cpu_pmu0__PMINTENCLR = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMINTENCLR = 32'hFFFFFFFF; + +parameter debug_cpu_pmu0__PMOVSR = 32'hF8891C80; +parameter val_debug_cpu_pmu0__PMOVSR = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMOVSR = 32'h00000000; + +parameter debug_cpu_pmu0__PMSWINC = 32'hF8891CA0; +parameter val_debug_cpu_pmu0__PMSWINC = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMSWINC = 32'h00000000; + +parameter debug_cpu_pmu0__PMCR = 32'hF8891E04; +parameter val_debug_cpu_pmu0__PMCR = 32'h41093000; +parameter mask_debug_cpu_pmu0__PMCR = 32'hFFFFFFFF; + +parameter debug_cpu_pmu0__PMUSERENR = 32'hF8891E08; +parameter val_debug_cpu_pmu0__PMUSERENR = 32'h00000000; +parameter mask_debug_cpu_pmu0__PMUSERENR = 32'hFFFFFFFF; + + +// ************************************************************ +// Module debug_cpu_pmu1 cortexa9_pmu +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cpu_pmu1__PMXEVCNTR0 = 32'hF8893000; +parameter val_debug_cpu_pmu1__PMXEVCNTR0 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVCNTR0 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVCNTR1 = 32'hF8893004; +parameter val_debug_cpu_pmu1__PMXEVCNTR1 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVCNTR1 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVCNTR2 = 32'hF8893008; +parameter val_debug_cpu_pmu1__PMXEVCNTR2 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVCNTR2 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVCNTR3 = 32'hF889300C; +parameter val_debug_cpu_pmu1__PMXEVCNTR3 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVCNTR3 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVCNTR4 = 32'hF8893010; +parameter val_debug_cpu_pmu1__PMXEVCNTR4 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVCNTR4 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVCNTR5 = 32'hF8893014; +parameter val_debug_cpu_pmu1__PMXEVCNTR5 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVCNTR5 = 32'h00000000; + +parameter debug_cpu_pmu1__PMCCNTR = 32'hF889307C; +parameter val_debug_cpu_pmu1__PMCCNTR = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMCCNTR = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVTYPER0 = 32'hF8893400; +parameter val_debug_cpu_pmu1__PMXEVTYPER0 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVTYPER0 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVTYPER1 = 32'hF8893404; +parameter val_debug_cpu_pmu1__PMXEVTYPER1 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVTYPER1 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVTYPER2 = 32'hF8893408; +parameter val_debug_cpu_pmu1__PMXEVTYPER2 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVTYPER2 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVTYPER3 = 32'hF889340C; +parameter val_debug_cpu_pmu1__PMXEVTYPER3 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVTYPER3 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVTYPER4 = 32'hF8893410; +parameter val_debug_cpu_pmu1__PMXEVTYPER4 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVTYPER4 = 32'h00000000; + +parameter debug_cpu_pmu1__PMXEVTYPER5 = 32'hF8893414; +parameter val_debug_cpu_pmu1__PMXEVTYPER5 = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMXEVTYPER5 = 32'h00000000; + +parameter debug_cpu_pmu1__PMCNTENSET = 32'hF8893C00; +parameter val_debug_cpu_pmu1__PMCNTENSET = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMCNTENSET = 32'hFFFFFFFF; + +parameter debug_cpu_pmu1__PMCNTENCLR = 32'hF8893C20; +parameter val_debug_cpu_pmu1__PMCNTENCLR = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMCNTENCLR = 32'hFFFFFFFF; + +parameter debug_cpu_pmu1__PMINTENSET = 32'hF8893C40; +parameter val_debug_cpu_pmu1__PMINTENSET = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMINTENSET = 32'hFFFFFFFF; + +parameter debug_cpu_pmu1__PMINTENCLR = 32'hF8893C60; +parameter val_debug_cpu_pmu1__PMINTENCLR = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMINTENCLR = 32'hFFFFFFFF; + +parameter debug_cpu_pmu1__PMOVSR = 32'hF8893C80; +parameter val_debug_cpu_pmu1__PMOVSR = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMOVSR = 32'h00000000; + +parameter debug_cpu_pmu1__PMSWINC = 32'hF8893CA0; +parameter val_debug_cpu_pmu1__PMSWINC = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMSWINC = 32'h00000000; + +parameter debug_cpu_pmu1__PMCR = 32'hF8893E04; +parameter val_debug_cpu_pmu1__PMCR = 32'h41093000; +parameter mask_debug_cpu_pmu1__PMCR = 32'hFFFFFFFF; + +parameter debug_cpu_pmu1__PMUSERENR = 32'hF8893E08; +parameter val_debug_cpu_pmu1__PMUSERENR = 32'h00000000; +parameter mask_debug_cpu_pmu1__PMUSERENR = 32'hFFFFFFFF; + + +// ************************************************************ +// Module debug_cpu_ptm0 ptm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cpu_ptm0__ETMCR = 32'hF889C000; +parameter val_debug_cpu_ptm0__ETMCR = 32'h00000400; +parameter mask_debug_cpu_ptm0__ETMCR = 32'h3FFFFFFF; + +parameter debug_cpu_ptm0__ETMCCR = 32'hF889C004; +parameter val_debug_cpu_ptm0__ETMCCR = 32'h8D294004; +parameter mask_debug_cpu_ptm0__ETMCCR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMTRIGGER = 32'hF889C008; +parameter val_debug_cpu_ptm0__ETMTRIGGER = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMTRIGGER = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSR = 32'hF889C010; +parameter val_debug_cpu_ptm0__ETMSR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSR = 32'h0000000F; + +parameter debug_cpu_ptm0__ETMSCR = 32'hF889C014; +parameter val_debug_cpu_ptm0__ETMSCR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSCR = 32'h00007FFF; + +parameter debug_cpu_ptm0__ETMTSSCR = 32'hF889C018; +parameter val_debug_cpu_ptm0__ETMTSSCR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMTSSCR = 32'h00FFFFFF; + +parameter debug_cpu_ptm0__ETMTECR1 = 32'hF889C024; +parameter val_debug_cpu_ptm0__ETMTECR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMTECR1 = 32'h03FFFFFF; + +parameter debug_cpu_ptm0__ETMACVR1 = 32'hF889C040; +parameter val_debug_cpu_ptm0__ETMACVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR1 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR2 = 32'hF889C044; +parameter val_debug_cpu_ptm0__ETMACVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR2 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR3 = 32'hF889C048; +parameter val_debug_cpu_ptm0__ETMACVR3 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR3 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR4 = 32'hF889C04C; +parameter val_debug_cpu_ptm0__ETMACVR4 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR4 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR5 = 32'hF889C050; +parameter val_debug_cpu_ptm0__ETMACVR5 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR5 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR6 = 32'hF889C054; +parameter val_debug_cpu_ptm0__ETMACVR6 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR6 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR7 = 32'hF889C058; +parameter val_debug_cpu_ptm0__ETMACVR7 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR7 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACVR8 = 32'hF889C05C; +parameter val_debug_cpu_ptm0__ETMACVR8 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMACVR8 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMACTR1 = 32'hF889C080; +parameter val_debug_cpu_ptm0__ETMACTR1 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR1 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR2 = 32'hF889C084; +parameter val_debug_cpu_ptm0__ETMACTR2 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR2 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR3 = 32'hF889C088; +parameter val_debug_cpu_ptm0__ETMACTR3 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR3 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR4 = 32'hF889C08C; +parameter val_debug_cpu_ptm0__ETMACTR4 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR4 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR5 = 32'hF889C090; +parameter val_debug_cpu_ptm0__ETMACTR5 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR5 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR6 = 32'hF889C094; +parameter val_debug_cpu_ptm0__ETMACTR6 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR6 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR7 = 32'hF889C098; +parameter val_debug_cpu_ptm0__ETMACTR7 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR7 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMACTR8 = 32'hF889C09C; +parameter val_debug_cpu_ptm0__ETMACTR8 = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMACTR8 = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMCNTRLDVR1 = 32'hF889C140; +parameter val_debug_cpu_ptm0__ETMCNTRLDVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCNTRLDVR1 = 32'h0000FFFF; + +parameter debug_cpu_ptm0__ETMCNTRLDVR2 = 32'hF889C144; +parameter val_debug_cpu_ptm0__ETMCNTRLDVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCNTRLDVR2 = 32'h0000FFFF; + +parameter debug_cpu_ptm0__ETMCNTENR1 = 32'hF889C150; +parameter val_debug_cpu_ptm0__ETMCNTENR1 = 32'h00020000; +parameter mask_debug_cpu_ptm0__ETMCNTENR1 = 32'h0003FFFF; + +parameter debug_cpu_ptm0__ETMCNTENR2 = 32'hF889C154; +parameter val_debug_cpu_ptm0__ETMCNTENR2 = 32'h00020000; +parameter mask_debug_cpu_ptm0__ETMCNTENR2 = 32'h0003FFFF; + +parameter debug_cpu_ptm0__ETMCNTRLDEVR1 = 32'hF889C160; +parameter val_debug_cpu_ptm0__ETMCNTRLDEVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCNTRLDEVR1 = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMCNTRLDEVR2 = 32'hF889C164; +parameter val_debug_cpu_ptm0__ETMCNTRLDEVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCNTRLDEVR2 = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMCNTVR1 = 32'hF889C170; +parameter val_debug_cpu_ptm0__ETMCNTVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCNTVR1 = 32'h0000FFFF; + +parameter debug_cpu_ptm0__ETMCNTVR2 = 32'hF889C174; +parameter val_debug_cpu_ptm0__ETMCNTVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCNTVR2 = 32'h0000FFFF; + +parameter debug_cpu_ptm0__ETMSQ12EVR = 32'hF889C180; +parameter val_debug_cpu_ptm0__ETMSQ12EVR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQ12EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSQ21EVR = 32'hF889C184; +parameter val_debug_cpu_ptm0__ETMSQ21EVR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQ21EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSQ23EVR = 32'hF889C188; +parameter val_debug_cpu_ptm0__ETMSQ23EVR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQ23EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSQ31EVR = 32'hF889C18C; +parameter val_debug_cpu_ptm0__ETMSQ31EVR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQ31EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSQ32EVR = 32'hF889C190; +parameter val_debug_cpu_ptm0__ETMSQ32EVR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQ32EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSQ13EVR = 32'hF889C194; +parameter val_debug_cpu_ptm0__ETMSQ13EVR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQ13EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMSQR = 32'hF889C19C; +parameter val_debug_cpu_ptm0__ETMSQR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMSQR = 32'h00000003; + +parameter debug_cpu_ptm0__ETMEXTOUTEVR1 = 32'hF889C1A0; +parameter val_debug_cpu_ptm0__ETMEXTOUTEVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMEXTOUTEVR1 = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMEXTOUTEVR2 = 32'hF889C1A4; +parameter val_debug_cpu_ptm0__ETMEXTOUTEVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMEXTOUTEVR2 = 32'h0001FFFF; + +parameter debug_cpu_ptm0__ETMCIDCVR1 = 32'hF889C1B0; +parameter val_debug_cpu_ptm0__ETMCIDCVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCIDCVR1 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMCIDCMR = 32'hF889C1BC; +parameter val_debug_cpu_ptm0__ETMCIDCMR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMCIDCMR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMSYNCFR = 32'hF889C1E0; +parameter val_debug_cpu_ptm0__ETMSYNCFR = 32'h00000400; +parameter mask_debug_cpu_ptm0__ETMSYNCFR = 32'h00000FFF; + +parameter debug_cpu_ptm0__ETMIDR = 32'hF889C1E4; +parameter val_debug_cpu_ptm0__ETMIDR = 32'h411CF300; +parameter mask_debug_cpu_ptm0__ETMIDR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMCCER = 32'hF889C1E8; +parameter val_debug_cpu_ptm0__ETMCCER = 32'h00C019A2; +parameter mask_debug_cpu_ptm0__ETMCCER = 32'h03FFFFFF; + +parameter debug_cpu_ptm0__ETMEXTINSELR = 32'hF889C1EC; +parameter val_debug_cpu_ptm0__ETMEXTINSELR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMEXTINSELR = 32'h00003FFF; + +parameter debug_cpu_ptm0__ETMAUXCR = 32'hF889C1FC; +parameter val_debug_cpu_ptm0__ETMAUXCR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMAUXCR = 32'h0000000F; + +parameter debug_cpu_ptm0__ETMTRACEIDR = 32'hF889C200; +parameter val_debug_cpu_ptm0__ETMTRACEIDR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMTRACEIDR = 32'h0000007F; + +parameter debug_cpu_ptm0__OSLSR = 32'hF889C304; +parameter val_debug_cpu_ptm0__OSLSR = 32'h00000000; +parameter mask_debug_cpu_ptm0__OSLSR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ETMPDSR = 32'hF889C314; +parameter val_debug_cpu_ptm0__ETMPDSR = 32'h00000001; +parameter mask_debug_cpu_ptm0__ETMPDSR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__ITMISCOUT = 32'hF889CEDC; +parameter val_debug_cpu_ptm0__ITMISCOUT = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITMISCOUT = 32'h000003FF; + +parameter debug_cpu_ptm0__ITMISCIN = 32'hF889CEE0; +parameter val_debug_cpu_ptm0__ITMISCIN = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITMISCIN = 32'h00000020; + +parameter debug_cpu_ptm0__ITTRIGGER = 32'hF889CEE8; +parameter val_debug_cpu_ptm0__ITTRIGGER = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITTRIGGER = 32'h00000001; + +parameter debug_cpu_ptm0__ITATBDATA0 = 32'hF889CEEC; +parameter val_debug_cpu_ptm0__ITATBDATA0 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITATBDATA0 = 32'h0000001F; + +parameter debug_cpu_ptm0__ITATBCTR2 = 32'hF889CEF0; +parameter val_debug_cpu_ptm0__ITATBCTR2 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITATBCTR2 = 32'h00000000; + +parameter debug_cpu_ptm0__ITATBID = 32'hF889CEF4; +parameter val_debug_cpu_ptm0__ITATBID = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITATBID = 32'h0000007F; + +parameter debug_cpu_ptm0__ITATBCTR0 = 32'hF889CEF8; +parameter val_debug_cpu_ptm0__ITATBCTR0 = 32'h00000000; +parameter mask_debug_cpu_ptm0__ITATBCTR0 = 32'h000003FF; + +parameter debug_cpu_ptm0__ETMITCTRL = 32'hF889CF00; +parameter val_debug_cpu_ptm0__ETMITCTRL = 32'h00000000; +parameter mask_debug_cpu_ptm0__ETMITCTRL = 32'h00000001; + +parameter debug_cpu_ptm0__CTSR = 32'hF889CFA0; +parameter val_debug_cpu_ptm0__CTSR = 32'h000000FF; +parameter mask_debug_cpu_ptm0__CTSR = 32'h000000FF; + +parameter debug_cpu_ptm0__CTCR = 32'hF889CFA4; +parameter val_debug_cpu_ptm0__CTCR = 32'h00000000; +parameter mask_debug_cpu_ptm0__CTCR = 32'h000000FF; + +parameter debug_cpu_ptm0__LAR = 32'hF889CFB0; +parameter val_debug_cpu_ptm0__LAR = 32'h00000000; +parameter mask_debug_cpu_ptm0__LAR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__LSR = 32'hF889CFB4; +parameter val_debug_cpu_ptm0__LSR = 32'h00000003; +parameter mask_debug_cpu_ptm0__LSR = 32'h00000007; + +parameter debug_cpu_ptm0__ASR = 32'hF889CFB8; +parameter val_debug_cpu_ptm0__ASR = 32'h00000000; +parameter mask_debug_cpu_ptm0__ASR = 32'h000000F3; + +parameter debug_cpu_ptm0__DEVID = 32'hF889CFC8; +parameter val_debug_cpu_ptm0__DEVID = 32'h00000000; +parameter mask_debug_cpu_ptm0__DEVID = 32'hFFFFFFFF; + +parameter debug_cpu_ptm0__DTIR = 32'hF889CFCC; +parameter val_debug_cpu_ptm0__DTIR = 32'h00000013; +parameter mask_debug_cpu_ptm0__DTIR = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID4 = 32'hF889CFD0; +parameter val_debug_cpu_ptm0__PERIPHID4 = 32'h00000004; +parameter mask_debug_cpu_ptm0__PERIPHID4 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID5 = 32'hF889CFD4; +parameter val_debug_cpu_ptm0__PERIPHID5 = 32'h00000000; +parameter mask_debug_cpu_ptm0__PERIPHID5 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID6 = 32'hF889CFD8; +parameter val_debug_cpu_ptm0__PERIPHID6 = 32'h00000000; +parameter mask_debug_cpu_ptm0__PERIPHID6 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID7 = 32'hF889CFDC; +parameter val_debug_cpu_ptm0__PERIPHID7 = 32'h00000000; +parameter mask_debug_cpu_ptm0__PERIPHID7 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID0 = 32'hF889CFE0; +parameter val_debug_cpu_ptm0__PERIPHID0 = 32'h00000050; +parameter mask_debug_cpu_ptm0__PERIPHID0 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID1 = 32'hF889CFE4; +parameter val_debug_cpu_ptm0__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cpu_ptm0__PERIPHID1 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID2 = 32'hF889CFE8; +parameter val_debug_cpu_ptm0__PERIPHID2 = 32'h0000001B; +parameter mask_debug_cpu_ptm0__PERIPHID2 = 32'h000000FF; + +parameter debug_cpu_ptm0__PERIPHID3 = 32'hF889CFEC; +parameter val_debug_cpu_ptm0__PERIPHID3 = 32'h00000000; +parameter mask_debug_cpu_ptm0__PERIPHID3 = 32'h000000FF; + +parameter debug_cpu_ptm0__COMPID0 = 32'hF889CFF0; +parameter val_debug_cpu_ptm0__COMPID0 = 32'h0000000D; +parameter mask_debug_cpu_ptm0__COMPID0 = 32'h000000FF; + +parameter debug_cpu_ptm0__COMPID1 = 32'hF889CFF4; +parameter val_debug_cpu_ptm0__COMPID1 = 32'h00000090; +parameter mask_debug_cpu_ptm0__COMPID1 = 32'h000000FF; + +parameter debug_cpu_ptm0__COMPID2 = 32'hF889CFF8; +parameter val_debug_cpu_ptm0__COMPID2 = 32'h00000005; +parameter mask_debug_cpu_ptm0__COMPID2 = 32'h000000FF; + +parameter debug_cpu_ptm0__COMPID3 = 32'hF889CFFC; +parameter val_debug_cpu_ptm0__COMPID3 = 32'h000000B1; +parameter mask_debug_cpu_ptm0__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_cpu_ptm1 ptm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cpu_ptm1__ETMCR = 32'hF889D000; +parameter val_debug_cpu_ptm1__ETMCR = 32'h00000400; +parameter mask_debug_cpu_ptm1__ETMCR = 32'h3FFFFFFF; + +parameter debug_cpu_ptm1__ETMCCR = 32'hF889D004; +parameter val_debug_cpu_ptm1__ETMCCR = 32'h8D294004; +parameter mask_debug_cpu_ptm1__ETMCCR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMTRIGGER = 32'hF889D008; +parameter val_debug_cpu_ptm1__ETMTRIGGER = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMTRIGGER = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSR = 32'hF889D010; +parameter val_debug_cpu_ptm1__ETMSR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSR = 32'h0000000F; + +parameter debug_cpu_ptm1__ETMSCR = 32'hF889D014; +parameter val_debug_cpu_ptm1__ETMSCR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSCR = 32'h00007FFF; + +parameter debug_cpu_ptm1__ETMTSSCR = 32'hF889D018; +parameter val_debug_cpu_ptm1__ETMTSSCR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMTSSCR = 32'h00FFFFFF; + +parameter debug_cpu_ptm1__ETMTECR1 = 32'hF889D024; +parameter val_debug_cpu_ptm1__ETMTECR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMTECR1 = 32'h03FFFFFF; + +parameter debug_cpu_ptm1__ETMACVR1 = 32'hF889D040; +parameter val_debug_cpu_ptm1__ETMACVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR1 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR2 = 32'hF889D044; +parameter val_debug_cpu_ptm1__ETMACVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR2 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR3 = 32'hF889D048; +parameter val_debug_cpu_ptm1__ETMACVR3 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR3 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR4 = 32'hF889D04C; +parameter val_debug_cpu_ptm1__ETMACVR4 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR4 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR5 = 32'hF889D050; +parameter val_debug_cpu_ptm1__ETMACVR5 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR5 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR6 = 32'hF889D054; +parameter val_debug_cpu_ptm1__ETMACVR6 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR6 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR7 = 32'hF889D058; +parameter val_debug_cpu_ptm1__ETMACVR7 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR7 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACVR8 = 32'hF889D05C; +parameter val_debug_cpu_ptm1__ETMACVR8 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMACVR8 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMACTR1 = 32'hF889D080; +parameter val_debug_cpu_ptm1__ETMACTR1 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR1 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR2 = 32'hF889D084; +parameter val_debug_cpu_ptm1__ETMACTR2 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR2 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR3 = 32'hF889D088; +parameter val_debug_cpu_ptm1__ETMACTR3 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR3 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR4 = 32'hF889D08C; +parameter val_debug_cpu_ptm1__ETMACTR4 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR4 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR5 = 32'hF889D090; +parameter val_debug_cpu_ptm1__ETMACTR5 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR5 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR6 = 32'hF889D094; +parameter val_debug_cpu_ptm1__ETMACTR6 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR6 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR7 = 32'hF889D098; +parameter val_debug_cpu_ptm1__ETMACTR7 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR7 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMACTR8 = 32'hF889D09C; +parameter val_debug_cpu_ptm1__ETMACTR8 = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMACTR8 = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMCNTRLDVR1 = 32'hF889D140; +parameter val_debug_cpu_ptm1__ETMCNTRLDVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCNTRLDVR1 = 32'h0000FFFF; + +parameter debug_cpu_ptm1__ETMCNTRLDVR2 = 32'hF889D144; +parameter val_debug_cpu_ptm1__ETMCNTRLDVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCNTRLDVR2 = 32'h0000FFFF; + +parameter debug_cpu_ptm1__ETMCNTENR1 = 32'hF889D150; +parameter val_debug_cpu_ptm1__ETMCNTENR1 = 32'h00020000; +parameter mask_debug_cpu_ptm1__ETMCNTENR1 = 32'h0003FFFF; + +parameter debug_cpu_ptm1__ETMCNTENR2 = 32'hF889D154; +parameter val_debug_cpu_ptm1__ETMCNTENR2 = 32'h00020000; +parameter mask_debug_cpu_ptm1__ETMCNTENR2 = 32'h0003FFFF; + +parameter debug_cpu_ptm1__ETMCNTRLDEVR1 = 32'hF889D160; +parameter val_debug_cpu_ptm1__ETMCNTRLDEVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCNTRLDEVR1 = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMCNTRLDEVR2 = 32'hF889D164; +parameter val_debug_cpu_ptm1__ETMCNTRLDEVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCNTRLDEVR2 = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMCNTVR1 = 32'hF889D170; +parameter val_debug_cpu_ptm1__ETMCNTVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCNTVR1 = 32'h0000FFFF; + +parameter debug_cpu_ptm1__ETMCNTVR2 = 32'hF889D174; +parameter val_debug_cpu_ptm1__ETMCNTVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCNTVR2 = 32'h0000FFFF; + +parameter debug_cpu_ptm1__ETMSQ12EVR = 32'hF889D180; +parameter val_debug_cpu_ptm1__ETMSQ12EVR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQ12EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSQ21EVR = 32'hF889D184; +parameter val_debug_cpu_ptm1__ETMSQ21EVR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQ21EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSQ23EVR = 32'hF889D188; +parameter val_debug_cpu_ptm1__ETMSQ23EVR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQ23EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSQ31EVR = 32'hF889D18C; +parameter val_debug_cpu_ptm1__ETMSQ31EVR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQ31EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSQ32EVR = 32'hF889D190; +parameter val_debug_cpu_ptm1__ETMSQ32EVR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQ32EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSQ13EVR = 32'hF889D194; +parameter val_debug_cpu_ptm1__ETMSQ13EVR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQ13EVR = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMSQR = 32'hF889D19C; +parameter val_debug_cpu_ptm1__ETMSQR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMSQR = 32'h00000003; + +parameter debug_cpu_ptm1__ETMEXTOUTEVR1 = 32'hF889D1A0; +parameter val_debug_cpu_ptm1__ETMEXTOUTEVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMEXTOUTEVR1 = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMEXTOUTEVR2 = 32'hF889D1A4; +parameter val_debug_cpu_ptm1__ETMEXTOUTEVR2 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMEXTOUTEVR2 = 32'h0001FFFF; + +parameter debug_cpu_ptm1__ETMCIDCVR1 = 32'hF889D1B0; +parameter val_debug_cpu_ptm1__ETMCIDCVR1 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCIDCVR1 = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMCIDCMR = 32'hF889D1BC; +parameter val_debug_cpu_ptm1__ETMCIDCMR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMCIDCMR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMSYNCFR = 32'hF889D1E0; +parameter val_debug_cpu_ptm1__ETMSYNCFR = 32'h00000400; +parameter mask_debug_cpu_ptm1__ETMSYNCFR = 32'h00000FFF; + +parameter debug_cpu_ptm1__ETMIDR = 32'hF889D1E4; +parameter val_debug_cpu_ptm1__ETMIDR = 32'h411CF300; +parameter mask_debug_cpu_ptm1__ETMIDR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMCCER = 32'hF889D1E8; +parameter val_debug_cpu_ptm1__ETMCCER = 32'h00C019A2; +parameter mask_debug_cpu_ptm1__ETMCCER = 32'h03FFFFFF; + +parameter debug_cpu_ptm1__ETMEXTINSELR = 32'hF889D1EC; +parameter val_debug_cpu_ptm1__ETMEXTINSELR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMEXTINSELR = 32'h00003FFF; + +parameter debug_cpu_ptm1__ETMAUXCR = 32'hF889D1FC; +parameter val_debug_cpu_ptm1__ETMAUXCR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMAUXCR = 32'h0000000F; + +parameter debug_cpu_ptm1__ETMTRACEIDR = 32'hF889D200; +parameter val_debug_cpu_ptm1__ETMTRACEIDR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMTRACEIDR = 32'h0000007F; + +parameter debug_cpu_ptm1__OSLSR = 32'hF889D304; +parameter val_debug_cpu_ptm1__OSLSR = 32'h00000000; +parameter mask_debug_cpu_ptm1__OSLSR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ETMPDSR = 32'hF889D314; +parameter val_debug_cpu_ptm1__ETMPDSR = 32'h00000001; +parameter mask_debug_cpu_ptm1__ETMPDSR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__ITMISCOUT = 32'hF889DEDC; +parameter val_debug_cpu_ptm1__ITMISCOUT = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITMISCOUT = 32'h000003FF; + +parameter debug_cpu_ptm1__ITMISCIN = 32'hF889DEE0; +parameter val_debug_cpu_ptm1__ITMISCIN = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITMISCIN = 32'h00000020; + +parameter debug_cpu_ptm1__ITTRIGGER = 32'hF889DEE8; +parameter val_debug_cpu_ptm1__ITTRIGGER = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITTRIGGER = 32'h00000001; + +parameter debug_cpu_ptm1__ITATBDATA0 = 32'hF889DEEC; +parameter val_debug_cpu_ptm1__ITATBDATA0 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITATBDATA0 = 32'h0000001F; + +parameter debug_cpu_ptm1__ITATBCTR2 = 32'hF889DEF0; +parameter val_debug_cpu_ptm1__ITATBCTR2 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITATBCTR2 = 32'h00000000; + +parameter debug_cpu_ptm1__ITATBID = 32'hF889DEF4; +parameter val_debug_cpu_ptm1__ITATBID = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITATBID = 32'h0000007F; + +parameter debug_cpu_ptm1__ITATBCTR0 = 32'hF889DEF8; +parameter val_debug_cpu_ptm1__ITATBCTR0 = 32'h00000000; +parameter mask_debug_cpu_ptm1__ITATBCTR0 = 32'h000003FF; + +parameter debug_cpu_ptm1__ETMITCTRL = 32'hF889DF00; +parameter val_debug_cpu_ptm1__ETMITCTRL = 32'h00000000; +parameter mask_debug_cpu_ptm1__ETMITCTRL = 32'h00000001; + +parameter debug_cpu_ptm1__CTSR = 32'hF889DFA0; +parameter val_debug_cpu_ptm1__CTSR = 32'h000000FF; +parameter mask_debug_cpu_ptm1__CTSR = 32'h000000FF; + +parameter debug_cpu_ptm1__CTCR = 32'hF889DFA4; +parameter val_debug_cpu_ptm1__CTCR = 32'h00000000; +parameter mask_debug_cpu_ptm1__CTCR = 32'h000000FF; + +parameter debug_cpu_ptm1__LAR = 32'hF889DFB0; +parameter val_debug_cpu_ptm1__LAR = 32'h00000000; +parameter mask_debug_cpu_ptm1__LAR = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__LSR = 32'hF889DFB4; +parameter val_debug_cpu_ptm1__LSR = 32'h00000003; +parameter mask_debug_cpu_ptm1__LSR = 32'h00000007; + +parameter debug_cpu_ptm1__ASR = 32'hF889DFB8; +parameter val_debug_cpu_ptm1__ASR = 32'h00000000; +parameter mask_debug_cpu_ptm1__ASR = 32'h000000F3; + +parameter debug_cpu_ptm1__DEVID = 32'hF889DFC8; +parameter val_debug_cpu_ptm1__DEVID = 32'h00000000; +parameter mask_debug_cpu_ptm1__DEVID = 32'hFFFFFFFF; + +parameter debug_cpu_ptm1__DTIR = 32'hF889DFCC; +parameter val_debug_cpu_ptm1__DTIR = 32'h00000013; +parameter mask_debug_cpu_ptm1__DTIR = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID4 = 32'hF889DFD0; +parameter val_debug_cpu_ptm1__PERIPHID4 = 32'h00000004; +parameter mask_debug_cpu_ptm1__PERIPHID4 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID5 = 32'hF889DFD4; +parameter val_debug_cpu_ptm1__PERIPHID5 = 32'h00000000; +parameter mask_debug_cpu_ptm1__PERIPHID5 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID6 = 32'hF889DFD8; +parameter val_debug_cpu_ptm1__PERIPHID6 = 32'h00000000; +parameter mask_debug_cpu_ptm1__PERIPHID6 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID7 = 32'hF889DFDC; +parameter val_debug_cpu_ptm1__PERIPHID7 = 32'h00000000; +parameter mask_debug_cpu_ptm1__PERIPHID7 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID0 = 32'hF889DFE0; +parameter val_debug_cpu_ptm1__PERIPHID0 = 32'h00000050; +parameter mask_debug_cpu_ptm1__PERIPHID0 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID1 = 32'hF889DFE4; +parameter val_debug_cpu_ptm1__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cpu_ptm1__PERIPHID1 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID2 = 32'hF889DFE8; +parameter val_debug_cpu_ptm1__PERIPHID2 = 32'h0000001B; +parameter mask_debug_cpu_ptm1__PERIPHID2 = 32'h000000FF; + +parameter debug_cpu_ptm1__PERIPHID3 = 32'hF889DFEC; +parameter val_debug_cpu_ptm1__PERIPHID3 = 32'h00000000; +parameter mask_debug_cpu_ptm1__PERIPHID3 = 32'h000000FF; + +parameter debug_cpu_ptm1__COMPID0 = 32'hF889DFF0; +parameter val_debug_cpu_ptm1__COMPID0 = 32'h0000000D; +parameter mask_debug_cpu_ptm1__COMPID0 = 32'h000000FF; + +parameter debug_cpu_ptm1__COMPID1 = 32'hF889DFF4; +parameter val_debug_cpu_ptm1__COMPID1 = 32'h00000090; +parameter mask_debug_cpu_ptm1__COMPID1 = 32'h000000FF; + +parameter debug_cpu_ptm1__COMPID2 = 32'hF889DFF8; +parameter val_debug_cpu_ptm1__COMPID2 = 32'h00000005; +parameter mask_debug_cpu_ptm1__COMPID2 = 32'h000000FF; + +parameter debug_cpu_ptm1__COMPID3 = 32'hF889DFFC; +parameter val_debug_cpu_ptm1__COMPID3 = 32'h000000B1; +parameter mask_debug_cpu_ptm1__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_cti_axim cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cti_axim__CTICONTROL = 32'hF880A000; +parameter val_debug_cti_axim__CTICONTROL = 32'h00000000; +parameter mask_debug_cti_axim__CTICONTROL = 32'h00000001; + +parameter debug_cti_axim__CTIINTACK = 32'hF880A010; +parameter val_debug_cti_axim__CTIINTACK = 32'h00000000; +parameter mask_debug_cti_axim__CTIINTACK = 32'h000000FF; + +parameter debug_cti_axim__CTIAPPSET = 32'hF880A014; +parameter val_debug_cti_axim__CTIAPPSET = 32'h00000000; +parameter mask_debug_cti_axim__CTIAPPSET = 32'h0000000F; + +parameter debug_cti_axim__CTIAPPCLEAR = 32'hF880A018; +parameter val_debug_cti_axim__CTIAPPCLEAR = 32'h00000000; +parameter mask_debug_cti_axim__CTIAPPCLEAR = 32'h0000000F; + +parameter debug_cti_axim__CTIAPPPULSE = 32'hF880A01C; +parameter val_debug_cti_axim__CTIAPPPULSE = 32'h00000000; +parameter mask_debug_cti_axim__CTIAPPPULSE = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN0 = 32'hF880A020; +parameter val_debug_cti_axim__CTIINEN0 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN0 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN1 = 32'hF880A024; +parameter val_debug_cti_axim__CTIINEN1 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN1 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN2 = 32'hF880A028; +parameter val_debug_cti_axim__CTIINEN2 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN2 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN3 = 32'hF880A02C; +parameter val_debug_cti_axim__CTIINEN3 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN3 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN4 = 32'hF880A030; +parameter val_debug_cti_axim__CTIINEN4 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN4 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN5 = 32'hF880A034; +parameter val_debug_cti_axim__CTIINEN5 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN5 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN6 = 32'hF880A038; +parameter val_debug_cti_axim__CTIINEN6 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN6 = 32'h0000000F; + +parameter debug_cti_axim__CTIINEN7 = 32'hF880A03C; +parameter val_debug_cti_axim__CTIINEN7 = 32'h00000000; +parameter mask_debug_cti_axim__CTIINEN7 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN0 = 32'hF880A0A0; +parameter val_debug_cti_axim__CTIOUTEN0 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN0 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN1 = 32'hF880A0A4; +parameter val_debug_cti_axim__CTIOUTEN1 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN1 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN2 = 32'hF880A0A8; +parameter val_debug_cti_axim__CTIOUTEN2 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN2 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN3 = 32'hF880A0AC; +parameter val_debug_cti_axim__CTIOUTEN3 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN3 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN4 = 32'hF880A0B0; +parameter val_debug_cti_axim__CTIOUTEN4 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN4 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN5 = 32'hF880A0B4; +parameter val_debug_cti_axim__CTIOUTEN5 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN5 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN6 = 32'hF880A0B8; +parameter val_debug_cti_axim__CTIOUTEN6 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN6 = 32'h0000000F; + +parameter debug_cti_axim__CTIOUTEN7 = 32'hF880A0BC; +parameter val_debug_cti_axim__CTIOUTEN7 = 32'h00000000; +parameter mask_debug_cti_axim__CTIOUTEN7 = 32'h0000000F; + +parameter debug_cti_axim__CTITRIGINSTATUS = 32'hF880A130; +parameter val_debug_cti_axim__CTITRIGINSTATUS = 32'h00000000; +parameter mask_debug_cti_axim__CTITRIGINSTATUS = 32'h00000000; + +parameter debug_cti_axim__CTITRIGOUTSTATUS = 32'hF880A134; +parameter val_debug_cti_axim__CTITRIGOUTSTATUS = 32'h00000000; +parameter mask_debug_cti_axim__CTITRIGOUTSTATUS = 32'h000000FF; + +parameter debug_cti_axim__CTICHINSTATUS = 32'hF880A138; +parameter val_debug_cti_axim__CTICHINSTATUS = 32'h00000000; +parameter mask_debug_cti_axim__CTICHINSTATUS = 32'h00000000; + +parameter debug_cti_axim__CTICHOUTSTATUS = 32'hF880A13C; +parameter val_debug_cti_axim__CTICHOUTSTATUS = 32'h00000000; +parameter mask_debug_cti_axim__CTICHOUTSTATUS = 32'h0000000F; + +parameter debug_cti_axim__CTIGATE = 32'hF880A140; +parameter val_debug_cti_axim__CTIGATE = 32'h0000000F; +parameter mask_debug_cti_axim__CTIGATE = 32'h0000000F; + +parameter debug_cti_axim__ASICCTL = 32'hF880A144; +parameter val_debug_cti_axim__ASICCTL = 32'h00000000; +parameter mask_debug_cti_axim__ASICCTL = 32'h000000FF; + +parameter debug_cti_axim__ITCHINACK = 32'hF880AEDC; +parameter val_debug_cti_axim__ITCHINACK = 32'h00000000; +parameter mask_debug_cti_axim__ITCHINACK = 32'h0000000F; + +parameter debug_cti_axim__ITTRIGINACK = 32'hF880AEE0; +parameter val_debug_cti_axim__ITTRIGINACK = 32'h00000000; +parameter mask_debug_cti_axim__ITTRIGINACK = 32'h000000FF; + +parameter debug_cti_axim__ITCHOUT = 32'hF880AEE4; +parameter val_debug_cti_axim__ITCHOUT = 32'h00000000; +parameter mask_debug_cti_axim__ITCHOUT = 32'h0000000F; + +parameter debug_cti_axim__ITTRIGOUT = 32'hF880AEE8; +parameter val_debug_cti_axim__ITTRIGOUT = 32'h00000000; +parameter mask_debug_cti_axim__ITTRIGOUT = 32'h000000FF; + +parameter debug_cti_axim__ITCHOUTACK = 32'hF880AEEC; +parameter val_debug_cti_axim__ITCHOUTACK = 32'h00000000; +parameter mask_debug_cti_axim__ITCHOUTACK = 32'h0000000F; + +parameter debug_cti_axim__ITTRIGOUTACK = 32'hF880AEF0; +parameter val_debug_cti_axim__ITTRIGOUTACK = 32'h00000000; +parameter mask_debug_cti_axim__ITTRIGOUTACK = 32'h000000FF; + +parameter debug_cti_axim__ITCHIN = 32'hF880AEF4; +parameter val_debug_cti_axim__ITCHIN = 32'h00000000; +parameter mask_debug_cti_axim__ITCHIN = 32'h0000000F; + +parameter debug_cti_axim__ITTRIGIN = 32'hF880AEF8; +parameter val_debug_cti_axim__ITTRIGIN = 32'h00000000; +parameter mask_debug_cti_axim__ITTRIGIN = 32'h000000FF; + +parameter debug_cti_axim__ITCTRL = 32'hF880AF00; +parameter val_debug_cti_axim__ITCTRL = 32'h00000000; +parameter mask_debug_cti_axim__ITCTRL = 32'h00000001; + +parameter debug_cti_axim__CTSR = 32'hF880AFA0; +parameter val_debug_cti_axim__CTSR = 32'h0000000F; +parameter mask_debug_cti_axim__CTSR = 32'h0000000F; + +parameter debug_cti_axim__CTCR = 32'hF880AFA4; +parameter val_debug_cti_axim__CTCR = 32'h00000000; +parameter mask_debug_cti_axim__CTCR = 32'h0000000F; + +parameter debug_cti_axim__LAR = 32'hF880AFB0; +parameter val_debug_cti_axim__LAR = 32'h00000000; +parameter mask_debug_cti_axim__LAR = 32'hFFFFFFFF; + +parameter debug_cti_axim__LSR = 32'hF880AFB4; +parameter val_debug_cti_axim__LSR = 32'h00000003; +parameter mask_debug_cti_axim__LSR = 32'h00000007; + +parameter debug_cti_axim__ASR = 32'hF880AFB8; +parameter val_debug_cti_axim__ASR = 32'h00000005; +parameter mask_debug_cti_axim__ASR = 32'h00000005; + +parameter debug_cti_axim__DEVID = 32'hF880AFC8; +parameter val_debug_cti_axim__DEVID = 32'h00040800; +parameter mask_debug_cti_axim__DEVID = 32'h000FFFFF; + +parameter debug_cti_axim__DTIR = 32'hF880AFCC; +parameter val_debug_cti_axim__DTIR = 32'h00000014; +parameter mask_debug_cti_axim__DTIR = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID4 = 32'hF880AFD0; +parameter val_debug_cti_axim__PERIPHID4 = 32'h00000004; +parameter mask_debug_cti_axim__PERIPHID4 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID5 = 32'hF880AFD4; +parameter val_debug_cti_axim__PERIPHID5 = 32'h00000000; +parameter mask_debug_cti_axim__PERIPHID5 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID6 = 32'hF880AFD8; +parameter val_debug_cti_axim__PERIPHID6 = 32'h00000000; +parameter mask_debug_cti_axim__PERIPHID6 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID7 = 32'hF880AFDC; +parameter val_debug_cti_axim__PERIPHID7 = 32'h00000000; +parameter mask_debug_cti_axim__PERIPHID7 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID0 = 32'hF880AFE0; +parameter val_debug_cti_axim__PERIPHID0 = 32'h00000006; +parameter mask_debug_cti_axim__PERIPHID0 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID1 = 32'hF880AFE4; +parameter val_debug_cti_axim__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cti_axim__PERIPHID1 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID2 = 32'hF880AFE8; +parameter val_debug_cti_axim__PERIPHID2 = 32'h0000002B; +parameter mask_debug_cti_axim__PERIPHID2 = 32'h000000FF; + +parameter debug_cti_axim__PERIPHID3 = 32'hF880AFEC; +parameter val_debug_cti_axim__PERIPHID3 = 32'h00000000; +parameter mask_debug_cti_axim__PERIPHID3 = 32'h000000FF; + +parameter debug_cti_axim__COMPID0 = 32'hF880AFF0; +parameter val_debug_cti_axim__COMPID0 = 32'h0000000D; +parameter mask_debug_cti_axim__COMPID0 = 32'h000000FF; + +parameter debug_cti_axim__COMPID1 = 32'hF880AFF4; +parameter val_debug_cti_axim__COMPID1 = 32'h00000090; +parameter mask_debug_cti_axim__COMPID1 = 32'h000000FF; + +parameter debug_cti_axim__COMPID2 = 32'hF880AFF8; +parameter val_debug_cti_axim__COMPID2 = 32'h00000005; +parameter mask_debug_cti_axim__COMPID2 = 32'h000000FF; + +parameter debug_cti_axim__COMPID3 = 32'hF880AFFC; +parameter val_debug_cti_axim__COMPID3 = 32'h000000B1; +parameter mask_debug_cti_axim__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_cti_etb_tpiu cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cti_etb_tpiu__CTICONTROL = 32'hF8802000; +parameter val_debug_cti_etb_tpiu__CTICONTROL = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTICONTROL = 32'h00000001; + +parameter debug_cti_etb_tpiu__CTIINTACK = 32'hF8802010; +parameter val_debug_cti_etb_tpiu__CTIINTACK = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINTACK = 32'h000000FF; + +parameter debug_cti_etb_tpiu__CTIAPPSET = 32'hF8802014; +parameter val_debug_cti_etb_tpiu__CTIAPPSET = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIAPPSET = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIAPPCLEAR = 32'hF8802018; +parameter val_debug_cti_etb_tpiu__CTIAPPCLEAR = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIAPPCLEAR = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIAPPPULSE = 32'hF880201C; +parameter val_debug_cti_etb_tpiu__CTIAPPPULSE = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIAPPPULSE = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN0 = 32'hF8802020; +parameter val_debug_cti_etb_tpiu__CTIINEN0 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN0 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN1 = 32'hF8802024; +parameter val_debug_cti_etb_tpiu__CTIINEN1 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN1 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN2 = 32'hF8802028; +parameter val_debug_cti_etb_tpiu__CTIINEN2 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN2 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN3 = 32'hF880202C; +parameter val_debug_cti_etb_tpiu__CTIINEN3 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN3 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN4 = 32'hF8802030; +parameter val_debug_cti_etb_tpiu__CTIINEN4 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN4 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN5 = 32'hF8802034; +parameter val_debug_cti_etb_tpiu__CTIINEN5 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN5 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN6 = 32'hF8802038; +parameter val_debug_cti_etb_tpiu__CTIINEN6 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN6 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIINEN7 = 32'hF880203C; +parameter val_debug_cti_etb_tpiu__CTIINEN7 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIINEN7 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN0 = 32'hF88020A0; +parameter val_debug_cti_etb_tpiu__CTIOUTEN0 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN0 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN1 = 32'hF88020A4; +parameter val_debug_cti_etb_tpiu__CTIOUTEN1 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN1 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN2 = 32'hF88020A8; +parameter val_debug_cti_etb_tpiu__CTIOUTEN2 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN2 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN3 = 32'hF88020AC; +parameter val_debug_cti_etb_tpiu__CTIOUTEN3 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN3 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN4 = 32'hF88020B0; +parameter val_debug_cti_etb_tpiu__CTIOUTEN4 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN4 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN5 = 32'hF88020B4; +parameter val_debug_cti_etb_tpiu__CTIOUTEN5 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN5 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN6 = 32'hF88020B8; +parameter val_debug_cti_etb_tpiu__CTIOUTEN6 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN6 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIOUTEN7 = 32'hF88020BC; +parameter val_debug_cti_etb_tpiu__CTIOUTEN7 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTIOUTEN7 = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTITRIGINSTATUS = 32'hF8802130; +parameter val_debug_cti_etb_tpiu__CTITRIGINSTATUS = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTITRIGINSTATUS = 32'h00000000; + +parameter debug_cti_etb_tpiu__CTITRIGOUTSTATUS = 32'hF8802134; +parameter val_debug_cti_etb_tpiu__CTITRIGOUTSTATUS = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTITRIGOUTSTATUS = 32'h000000FF; + +parameter debug_cti_etb_tpiu__CTICHINSTATUS = 32'hF8802138; +parameter val_debug_cti_etb_tpiu__CTICHINSTATUS = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTICHINSTATUS = 32'h00000000; + +parameter debug_cti_etb_tpiu__CTICHOUTSTATUS = 32'hF880213C; +parameter val_debug_cti_etb_tpiu__CTICHOUTSTATUS = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTICHOUTSTATUS = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTIGATE = 32'hF8802140; +parameter val_debug_cti_etb_tpiu__CTIGATE = 32'h0000000F; +parameter mask_debug_cti_etb_tpiu__CTIGATE = 32'h0000000F; + +parameter debug_cti_etb_tpiu__ASICCTL = 32'hF8802144; +parameter val_debug_cti_etb_tpiu__ASICCTL = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ASICCTL = 32'h000000FF; + +parameter debug_cti_etb_tpiu__ITCHINACK = 32'hF8802EDC; +parameter val_debug_cti_etb_tpiu__ITCHINACK = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITCHINACK = 32'h0000000F; + +parameter debug_cti_etb_tpiu__ITTRIGINACK = 32'hF8802EE0; +parameter val_debug_cti_etb_tpiu__ITTRIGINACK = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITTRIGINACK = 32'h000000FF; + +parameter debug_cti_etb_tpiu__ITCHOUT = 32'hF8802EE4; +parameter val_debug_cti_etb_tpiu__ITCHOUT = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITCHOUT = 32'h0000000F; + +parameter debug_cti_etb_tpiu__ITTRIGOUT = 32'hF8802EE8; +parameter val_debug_cti_etb_tpiu__ITTRIGOUT = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITTRIGOUT = 32'h000000FF; + +parameter debug_cti_etb_tpiu__ITCHOUTACK = 32'hF8802EEC; +parameter val_debug_cti_etb_tpiu__ITCHOUTACK = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITCHOUTACK = 32'h0000000F; + +parameter debug_cti_etb_tpiu__ITTRIGOUTACK = 32'hF8802EF0; +parameter val_debug_cti_etb_tpiu__ITTRIGOUTACK = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITTRIGOUTACK = 32'h000000FF; + +parameter debug_cti_etb_tpiu__ITCHIN = 32'hF8802EF4; +parameter val_debug_cti_etb_tpiu__ITCHIN = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITCHIN = 32'h0000000F; + +parameter debug_cti_etb_tpiu__ITTRIGIN = 32'hF8802EF8; +parameter val_debug_cti_etb_tpiu__ITTRIGIN = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITTRIGIN = 32'h000000FF; + +parameter debug_cti_etb_tpiu__ITCTRL = 32'hF8802F00; +parameter val_debug_cti_etb_tpiu__ITCTRL = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__ITCTRL = 32'h00000001; + +parameter debug_cti_etb_tpiu__CTSR = 32'hF8802FA0; +parameter val_debug_cti_etb_tpiu__CTSR = 32'h0000000F; +parameter mask_debug_cti_etb_tpiu__CTSR = 32'h0000000F; + +parameter debug_cti_etb_tpiu__CTCR = 32'hF8802FA4; +parameter val_debug_cti_etb_tpiu__CTCR = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__CTCR = 32'h0000000F; + +parameter debug_cti_etb_tpiu__LAR = 32'hF8802FB0; +parameter val_debug_cti_etb_tpiu__LAR = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__LAR = 32'hFFFFFFFF; + +parameter debug_cti_etb_tpiu__LSR = 32'hF8802FB4; +parameter val_debug_cti_etb_tpiu__LSR = 32'h00000003; +parameter mask_debug_cti_etb_tpiu__LSR = 32'h00000007; + +parameter debug_cti_etb_tpiu__ASR = 32'hF8802FB8; +parameter val_debug_cti_etb_tpiu__ASR = 32'h00000005; +parameter mask_debug_cti_etb_tpiu__ASR = 32'h00000005; + +parameter debug_cti_etb_tpiu__DEVID = 32'hF8802FC8; +parameter val_debug_cti_etb_tpiu__DEVID = 32'h00040800; +parameter mask_debug_cti_etb_tpiu__DEVID = 32'h000FFFFF; + +parameter debug_cti_etb_tpiu__DTIR = 32'hF8802FCC; +parameter val_debug_cti_etb_tpiu__DTIR = 32'h00000014; +parameter mask_debug_cti_etb_tpiu__DTIR = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID4 = 32'hF8802FD0; +parameter val_debug_cti_etb_tpiu__PERIPHID4 = 32'h00000004; +parameter mask_debug_cti_etb_tpiu__PERIPHID4 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID5 = 32'hF8802FD4; +parameter val_debug_cti_etb_tpiu__PERIPHID5 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__PERIPHID5 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID6 = 32'hF8802FD8; +parameter val_debug_cti_etb_tpiu__PERIPHID6 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__PERIPHID6 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID7 = 32'hF8802FDC; +parameter val_debug_cti_etb_tpiu__PERIPHID7 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__PERIPHID7 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID0 = 32'hF8802FE0; +parameter val_debug_cti_etb_tpiu__PERIPHID0 = 32'h00000006; +parameter mask_debug_cti_etb_tpiu__PERIPHID0 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID1 = 32'hF8802FE4; +parameter val_debug_cti_etb_tpiu__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cti_etb_tpiu__PERIPHID1 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID2 = 32'hF8802FE8; +parameter val_debug_cti_etb_tpiu__PERIPHID2 = 32'h0000002B; +parameter mask_debug_cti_etb_tpiu__PERIPHID2 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__PERIPHID3 = 32'hF8802FEC; +parameter val_debug_cti_etb_tpiu__PERIPHID3 = 32'h00000000; +parameter mask_debug_cti_etb_tpiu__PERIPHID3 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__COMPID0 = 32'hF8802FF0; +parameter val_debug_cti_etb_tpiu__COMPID0 = 32'h0000000D; +parameter mask_debug_cti_etb_tpiu__COMPID0 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__COMPID1 = 32'hF8802FF4; +parameter val_debug_cti_etb_tpiu__COMPID1 = 32'h00000090; +parameter mask_debug_cti_etb_tpiu__COMPID1 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__COMPID2 = 32'hF8802FF8; +parameter val_debug_cti_etb_tpiu__COMPID2 = 32'h00000005; +parameter mask_debug_cti_etb_tpiu__COMPID2 = 32'h000000FF; + +parameter debug_cti_etb_tpiu__COMPID3 = 32'hF8802FFC; +parameter val_debug_cti_etb_tpiu__COMPID3 = 32'h000000B1; +parameter mask_debug_cti_etb_tpiu__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_cti_ftm cti +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_cti_ftm__CTICONTROL = 32'hF8809000; +parameter val_debug_cti_ftm__CTICONTROL = 32'h00000000; +parameter mask_debug_cti_ftm__CTICONTROL = 32'h00000001; + +parameter debug_cti_ftm__CTIINTACK = 32'hF8809010; +parameter val_debug_cti_ftm__CTIINTACK = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINTACK = 32'h000000FF; + +parameter debug_cti_ftm__CTIAPPSET = 32'hF8809014; +parameter val_debug_cti_ftm__CTIAPPSET = 32'h00000000; +parameter mask_debug_cti_ftm__CTIAPPSET = 32'h0000000F; + +parameter debug_cti_ftm__CTIAPPCLEAR = 32'hF8809018; +parameter val_debug_cti_ftm__CTIAPPCLEAR = 32'h00000000; +parameter mask_debug_cti_ftm__CTIAPPCLEAR = 32'h0000000F; + +parameter debug_cti_ftm__CTIAPPPULSE = 32'hF880901C; +parameter val_debug_cti_ftm__CTIAPPPULSE = 32'h00000000; +parameter mask_debug_cti_ftm__CTIAPPPULSE = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN0 = 32'hF8809020; +parameter val_debug_cti_ftm__CTIINEN0 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN0 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN1 = 32'hF8809024; +parameter val_debug_cti_ftm__CTIINEN1 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN1 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN2 = 32'hF8809028; +parameter val_debug_cti_ftm__CTIINEN2 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN2 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN3 = 32'hF880902C; +parameter val_debug_cti_ftm__CTIINEN3 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN3 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN4 = 32'hF8809030; +parameter val_debug_cti_ftm__CTIINEN4 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN4 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN5 = 32'hF8809034; +parameter val_debug_cti_ftm__CTIINEN5 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN5 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN6 = 32'hF8809038; +parameter val_debug_cti_ftm__CTIINEN6 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN6 = 32'h0000000F; + +parameter debug_cti_ftm__CTIINEN7 = 32'hF880903C; +parameter val_debug_cti_ftm__CTIINEN7 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIINEN7 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN0 = 32'hF88090A0; +parameter val_debug_cti_ftm__CTIOUTEN0 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN0 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN1 = 32'hF88090A4; +parameter val_debug_cti_ftm__CTIOUTEN1 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN1 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN2 = 32'hF88090A8; +parameter val_debug_cti_ftm__CTIOUTEN2 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN2 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN3 = 32'hF88090AC; +parameter val_debug_cti_ftm__CTIOUTEN3 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN3 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN4 = 32'hF88090B0; +parameter val_debug_cti_ftm__CTIOUTEN4 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN4 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN5 = 32'hF88090B4; +parameter val_debug_cti_ftm__CTIOUTEN5 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN5 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN6 = 32'hF88090B8; +parameter val_debug_cti_ftm__CTIOUTEN6 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN6 = 32'h0000000F; + +parameter debug_cti_ftm__CTIOUTEN7 = 32'hF88090BC; +parameter val_debug_cti_ftm__CTIOUTEN7 = 32'h00000000; +parameter mask_debug_cti_ftm__CTIOUTEN7 = 32'h0000000F; + +parameter debug_cti_ftm__CTITRIGINSTATUS = 32'hF8809130; +parameter val_debug_cti_ftm__CTITRIGINSTATUS = 32'h00000000; +parameter mask_debug_cti_ftm__CTITRIGINSTATUS = 32'h00000000; + +parameter debug_cti_ftm__CTITRIGOUTSTATUS = 32'hF8809134; +parameter val_debug_cti_ftm__CTITRIGOUTSTATUS = 32'h00000000; +parameter mask_debug_cti_ftm__CTITRIGOUTSTATUS = 32'h000000FF; + +parameter debug_cti_ftm__CTICHINSTATUS = 32'hF8809138; +parameter val_debug_cti_ftm__CTICHINSTATUS = 32'h00000000; +parameter mask_debug_cti_ftm__CTICHINSTATUS = 32'h00000000; + +parameter debug_cti_ftm__CTICHOUTSTATUS = 32'hF880913C; +parameter val_debug_cti_ftm__CTICHOUTSTATUS = 32'h00000000; +parameter mask_debug_cti_ftm__CTICHOUTSTATUS = 32'h0000000F; + +parameter debug_cti_ftm__CTIGATE = 32'hF8809140; +parameter val_debug_cti_ftm__CTIGATE = 32'h0000000F; +parameter mask_debug_cti_ftm__CTIGATE = 32'h0000000F; + +parameter debug_cti_ftm__ASICCTL = 32'hF8809144; +parameter val_debug_cti_ftm__ASICCTL = 32'h00000000; +parameter mask_debug_cti_ftm__ASICCTL = 32'h000000FF; + +parameter debug_cti_ftm__ITCHINACK = 32'hF8809EDC; +parameter val_debug_cti_ftm__ITCHINACK = 32'h00000000; +parameter mask_debug_cti_ftm__ITCHINACK = 32'h0000000F; + +parameter debug_cti_ftm__ITTRIGINACK = 32'hF8809EE0; +parameter val_debug_cti_ftm__ITTRIGINACK = 32'h00000000; +parameter mask_debug_cti_ftm__ITTRIGINACK = 32'h000000FF; + +parameter debug_cti_ftm__ITCHOUT = 32'hF8809EE4; +parameter val_debug_cti_ftm__ITCHOUT = 32'h00000000; +parameter mask_debug_cti_ftm__ITCHOUT = 32'h0000000F; + +parameter debug_cti_ftm__ITTRIGOUT = 32'hF8809EE8; +parameter val_debug_cti_ftm__ITTRIGOUT = 32'h00000000; +parameter mask_debug_cti_ftm__ITTRIGOUT = 32'h000000FF; + +parameter debug_cti_ftm__ITCHOUTACK = 32'hF8809EEC; +parameter val_debug_cti_ftm__ITCHOUTACK = 32'h00000000; +parameter mask_debug_cti_ftm__ITCHOUTACK = 32'h0000000F; + +parameter debug_cti_ftm__ITTRIGOUTACK = 32'hF8809EF0; +parameter val_debug_cti_ftm__ITTRIGOUTACK = 32'h00000000; +parameter mask_debug_cti_ftm__ITTRIGOUTACK = 32'h000000FF; + +parameter debug_cti_ftm__ITCHIN = 32'hF8809EF4; +parameter val_debug_cti_ftm__ITCHIN = 32'h00000000; +parameter mask_debug_cti_ftm__ITCHIN = 32'h0000000F; + +parameter debug_cti_ftm__ITTRIGIN = 32'hF8809EF8; +parameter val_debug_cti_ftm__ITTRIGIN = 32'h00000000; +parameter mask_debug_cti_ftm__ITTRIGIN = 32'h000000FF; + +parameter debug_cti_ftm__ITCTRL = 32'hF8809F00; +parameter val_debug_cti_ftm__ITCTRL = 32'h00000000; +parameter mask_debug_cti_ftm__ITCTRL = 32'h00000001; + +parameter debug_cti_ftm__CTSR = 32'hF8809FA0; +parameter val_debug_cti_ftm__CTSR = 32'h0000000F; +parameter mask_debug_cti_ftm__CTSR = 32'h0000000F; + +parameter debug_cti_ftm__CTCR = 32'hF8809FA4; +parameter val_debug_cti_ftm__CTCR = 32'h00000000; +parameter mask_debug_cti_ftm__CTCR = 32'h0000000F; + +parameter debug_cti_ftm__LAR = 32'hF8809FB0; +parameter val_debug_cti_ftm__LAR = 32'h00000000; +parameter mask_debug_cti_ftm__LAR = 32'hFFFFFFFF; + +parameter debug_cti_ftm__LSR = 32'hF8809FB4; +parameter val_debug_cti_ftm__LSR = 32'h00000003; +parameter mask_debug_cti_ftm__LSR = 32'h00000007; + +parameter debug_cti_ftm__ASR = 32'hF8809FB8; +parameter val_debug_cti_ftm__ASR = 32'h00000005; +parameter mask_debug_cti_ftm__ASR = 32'h00000005; + +parameter debug_cti_ftm__DEVID = 32'hF8809FC8; +parameter val_debug_cti_ftm__DEVID = 32'h00040800; +parameter mask_debug_cti_ftm__DEVID = 32'h000FFFFF; + +parameter debug_cti_ftm__DTIR = 32'hF8809FCC; +parameter val_debug_cti_ftm__DTIR = 32'h00000014; +parameter mask_debug_cti_ftm__DTIR = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID4 = 32'hF8809FD0; +parameter val_debug_cti_ftm__PERIPHID4 = 32'h00000004; +parameter mask_debug_cti_ftm__PERIPHID4 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID5 = 32'hF8809FD4; +parameter val_debug_cti_ftm__PERIPHID5 = 32'h00000000; +parameter mask_debug_cti_ftm__PERIPHID5 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID6 = 32'hF8809FD8; +parameter val_debug_cti_ftm__PERIPHID6 = 32'h00000000; +parameter mask_debug_cti_ftm__PERIPHID6 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID7 = 32'hF8809FDC; +parameter val_debug_cti_ftm__PERIPHID7 = 32'h00000000; +parameter mask_debug_cti_ftm__PERIPHID7 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID0 = 32'hF8809FE0; +parameter val_debug_cti_ftm__PERIPHID0 = 32'h00000006; +parameter mask_debug_cti_ftm__PERIPHID0 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID1 = 32'hF8809FE4; +parameter val_debug_cti_ftm__PERIPHID1 = 32'h000000B9; +parameter mask_debug_cti_ftm__PERIPHID1 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID2 = 32'hF8809FE8; +parameter val_debug_cti_ftm__PERIPHID2 = 32'h0000002B; +parameter mask_debug_cti_ftm__PERIPHID2 = 32'h000000FF; + +parameter debug_cti_ftm__PERIPHID3 = 32'hF8809FEC; +parameter val_debug_cti_ftm__PERIPHID3 = 32'h00000000; +parameter mask_debug_cti_ftm__PERIPHID3 = 32'h000000FF; + +parameter debug_cti_ftm__COMPID0 = 32'hF8809FF0; +parameter val_debug_cti_ftm__COMPID0 = 32'h0000000D; +parameter mask_debug_cti_ftm__COMPID0 = 32'h000000FF; + +parameter debug_cti_ftm__COMPID1 = 32'hF8809FF4; +parameter val_debug_cti_ftm__COMPID1 = 32'h00000090; +parameter mask_debug_cti_ftm__COMPID1 = 32'h000000FF; + +parameter debug_cti_ftm__COMPID2 = 32'hF8809FF8; +parameter val_debug_cti_ftm__COMPID2 = 32'h00000005; +parameter mask_debug_cti_ftm__COMPID2 = 32'h000000FF; + +parameter debug_cti_ftm__COMPID3 = 32'hF8809FFC; +parameter val_debug_cti_ftm__COMPID3 = 32'h000000B1; +parameter mask_debug_cti_ftm__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_dap_rom dap +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_dap_rom__ROMENTRY00 = 32'hF8800000; +parameter val_debug_dap_rom__ROMENTRY00 = 32'h00001003; +parameter mask_debug_dap_rom__ROMENTRY00 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY01 = 32'hF8800004; +parameter val_debug_dap_rom__ROMENTRY01 = 32'h00002003; +parameter mask_debug_dap_rom__ROMENTRY01 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY02 = 32'hF8800008; +parameter val_debug_dap_rom__ROMENTRY02 = 32'h00003003; +parameter mask_debug_dap_rom__ROMENTRY02 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY03 = 32'hF880000C; +parameter val_debug_dap_rom__ROMENTRY03 = 32'h00004003; +parameter mask_debug_dap_rom__ROMENTRY03 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY04 = 32'hF8800010; +parameter val_debug_dap_rom__ROMENTRY04 = 32'h00005003; +parameter mask_debug_dap_rom__ROMENTRY04 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY05 = 32'hF8800014; +parameter val_debug_dap_rom__ROMENTRY05 = 32'h00009003; +parameter mask_debug_dap_rom__ROMENTRY05 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY06 = 32'hF8800018; +parameter val_debug_dap_rom__ROMENTRY06 = 32'h0000A003; +parameter mask_debug_dap_rom__ROMENTRY06 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY07 = 32'hF880001C; +parameter val_debug_dap_rom__ROMENTRY07 = 32'h0000B003; +parameter mask_debug_dap_rom__ROMENTRY07 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY08 = 32'hF8800020; +parameter val_debug_dap_rom__ROMENTRY08 = 32'h0000C003; +parameter mask_debug_dap_rom__ROMENTRY08 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY09 = 32'hF8800024; +parameter val_debug_dap_rom__ROMENTRY09 = 32'h00080003; +parameter mask_debug_dap_rom__ROMENTRY09 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY10 = 32'hF8800028; +parameter val_debug_dap_rom__ROMENTRY10 = 32'h00000000; +parameter mask_debug_dap_rom__ROMENTRY10 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY11 = 32'hF880002C; +parameter val_debug_dap_rom__ROMENTRY11 = 32'h00000000; +parameter mask_debug_dap_rom__ROMENTRY11 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY12 = 32'hF8800030; +parameter val_debug_dap_rom__ROMENTRY12 = 32'h00000000; +parameter mask_debug_dap_rom__ROMENTRY12 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY13 = 32'hF8800034; +parameter val_debug_dap_rom__ROMENTRY13 = 32'h00000000; +parameter mask_debug_dap_rom__ROMENTRY13 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY14 = 32'hF8800038; +parameter val_debug_dap_rom__ROMENTRY14 = 32'h00000000; +parameter mask_debug_dap_rom__ROMENTRY14 = 32'hFFFFFFFF; + +parameter debug_dap_rom__ROMENTRY15 = 32'hF880003C; +parameter val_debug_dap_rom__ROMENTRY15 = 32'h00000000; +parameter mask_debug_dap_rom__ROMENTRY15 = 32'hFFFFFFFF; + +parameter debug_dap_rom__PERIPHID4 = 32'hF8800FD0; +parameter val_debug_dap_rom__PERIPHID4 = 32'h00000003; +parameter mask_debug_dap_rom__PERIPHID4 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID5 = 32'hF8800FD4; +parameter val_debug_dap_rom__PERIPHID5 = 32'h00000000; +parameter mask_debug_dap_rom__PERIPHID5 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID6 = 32'hF8800FD8; +parameter val_debug_dap_rom__PERIPHID6 = 32'h00000000; +parameter mask_debug_dap_rom__PERIPHID6 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID7 = 32'hF8800FDC; +parameter val_debug_dap_rom__PERIPHID7 = 32'h00000000; +parameter mask_debug_dap_rom__PERIPHID7 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID0 = 32'hF8800FE0; +parameter val_debug_dap_rom__PERIPHID0 = 32'h000000B2; +parameter mask_debug_dap_rom__PERIPHID0 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID1 = 32'hF8800FE4; +parameter val_debug_dap_rom__PERIPHID1 = 32'h00000093; +parameter mask_debug_dap_rom__PERIPHID1 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID2 = 32'hF8800FE8; +parameter val_debug_dap_rom__PERIPHID2 = 32'h00000008; +parameter mask_debug_dap_rom__PERIPHID2 = 32'h000000FF; + +parameter debug_dap_rom__PERIPHID3 = 32'hF8800FEC; +parameter val_debug_dap_rom__PERIPHID3 = 32'h00000000; +parameter mask_debug_dap_rom__PERIPHID3 = 32'h000000FF; + +parameter debug_dap_rom__COMPID0 = 32'hF8800FF0; +parameter val_debug_dap_rom__COMPID0 = 32'h0000000D; +parameter mask_debug_dap_rom__COMPID0 = 32'h000000FF; + +parameter debug_dap_rom__COMPID1 = 32'hF8800FF4; +parameter val_debug_dap_rom__COMPID1 = 32'h00000010; +parameter mask_debug_dap_rom__COMPID1 = 32'h000000FF; + +parameter debug_dap_rom__COMPID2 = 32'hF8800FF8; +parameter val_debug_dap_rom__COMPID2 = 32'h00000005; +parameter mask_debug_dap_rom__COMPID2 = 32'h000000FF; + +parameter debug_dap_rom__COMPID3 = 32'hF8800FFC; +parameter val_debug_dap_rom__COMPID3 = 32'h000000B1; +parameter mask_debug_dap_rom__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_etb etb +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_etb__RDP = 32'hF8801004; +parameter val_debug_etb__RDP = 32'h00000400; +parameter mask_debug_etb__RDP = 32'hFFFFFFFF; + +parameter debug_etb__STS = 32'hF880100C; +parameter val_debug_etb__STS = 32'h00000000; +parameter mask_debug_etb__STS = 32'h0000000F; + +parameter debug_etb__RRD = 32'hF8801010; +parameter val_debug_etb__RRD = 32'h00000000; +parameter mask_debug_etb__RRD = 32'hFFFFFFFF; + +parameter debug_etb__RRP = 32'hF8801014; +parameter val_debug_etb__RRP = 32'h00000000; +parameter mask_debug_etb__RRP = 32'h000003FF; + +parameter debug_etb__RWP = 32'hF8801018; +parameter val_debug_etb__RWP = 32'h00000000; +parameter mask_debug_etb__RWP = 32'h000003FF; + +parameter debug_etb__TRG = 32'hF880101C; +parameter val_debug_etb__TRG = 32'h00000000; +parameter mask_debug_etb__TRG = 32'h000003FF; + +parameter debug_etb__CTL = 32'hF8801020; +parameter val_debug_etb__CTL = 32'h00000000; +parameter mask_debug_etb__CTL = 32'h00000001; + +parameter debug_etb__RWD = 32'hF8801024; +parameter val_debug_etb__RWD = 32'h00000000; +parameter mask_debug_etb__RWD = 32'hFFFFFFFF; + +parameter debug_etb__FFSR = 32'hF8801300; +parameter val_debug_etb__FFSR = 32'h00000000; +parameter mask_debug_etb__FFSR = 32'h00000003; + +parameter debug_etb__FFCR = 32'hF8801304; +parameter val_debug_etb__FFCR = 32'h00000200; +parameter mask_debug_etb__FFCR = 32'h00003FFF; + +parameter debug_etb__ITMISCOP0 = 32'hF8801EE0; +parameter val_debug_etb__ITMISCOP0 = 32'h00000000; +parameter mask_debug_etb__ITMISCOP0 = 32'h00000003; + +parameter debug_etb__ITTRFLINACK = 32'hF8801EE4; +parameter val_debug_etb__ITTRFLINACK = 32'h00000000; +parameter mask_debug_etb__ITTRFLINACK = 32'h00000003; + +parameter debug_etb__ITTRFLIN = 32'hF8801EE8; +parameter val_debug_etb__ITTRFLIN = 32'h00000000; +parameter mask_debug_etb__ITTRFLIN = 32'h00000003; + +parameter debug_etb__ITATBDATA0 = 32'hF8801EEC; +parameter val_debug_etb__ITATBDATA0 = 32'h00000000; +parameter mask_debug_etb__ITATBDATA0 = 32'h0000001F; + +parameter debug_etb__ITATBCTR2 = 32'hF8801EF0; +parameter val_debug_etb__ITATBCTR2 = 32'h00000000; +parameter mask_debug_etb__ITATBCTR2 = 32'h00000003; + +parameter debug_etb__ITATBCTR1 = 32'hF8801EF4; +parameter val_debug_etb__ITATBCTR1 = 32'h00000000; +parameter mask_debug_etb__ITATBCTR1 = 32'h0000007F; + +parameter debug_etb__ITATBCTR0 = 32'hF8801EF8; +parameter val_debug_etb__ITATBCTR0 = 32'h00000000; +parameter mask_debug_etb__ITATBCTR0 = 32'h000003FF; + +parameter debug_etb__IMCR = 32'hF8801F00; +parameter val_debug_etb__IMCR = 32'h00000000; +parameter mask_debug_etb__IMCR = 32'h00000001; + +parameter debug_etb__CTSR = 32'hF8801FA0; +parameter val_debug_etb__CTSR = 32'h0000000F; +parameter mask_debug_etb__CTSR = 32'h0000000F; + +parameter debug_etb__CTCR = 32'hF8801FA4; +parameter val_debug_etb__CTCR = 32'h00000000; +parameter mask_debug_etb__CTCR = 32'h0000000F; + +parameter debug_etb__LAR = 32'hF8801FB0; +parameter val_debug_etb__LAR = 32'h00000000; +parameter mask_debug_etb__LAR = 32'hFFFFFFFF; + +parameter debug_etb__LSR = 32'hF8801FB4; +parameter val_debug_etb__LSR = 32'h00000003; +parameter mask_debug_etb__LSR = 32'h00000007; + +parameter debug_etb__ASR = 32'hF8801FB8; +parameter val_debug_etb__ASR = 32'h00000000; +parameter mask_debug_etb__ASR = 32'h000000FF; + +parameter debug_etb__DEVID = 32'hF8801FC8; +parameter val_debug_etb__DEVID = 32'h00000000; +parameter mask_debug_etb__DEVID = 32'h0000003F; + +parameter debug_etb__DTIR = 32'hF8801FCC; +parameter val_debug_etb__DTIR = 32'h00000021; +parameter mask_debug_etb__DTIR = 32'h000000FF; + +parameter debug_etb__PERIPHID4 = 32'hF8801FD0; +parameter val_debug_etb__PERIPHID4 = 32'h00000004; +parameter mask_debug_etb__PERIPHID4 = 32'h000000FF; + +parameter debug_etb__PERIPHID5 = 32'hF8801FD4; +parameter val_debug_etb__PERIPHID5 = 32'h00000000; +parameter mask_debug_etb__PERIPHID5 = 32'h000000FF; + +parameter debug_etb__PERIPHID6 = 32'hF8801FD8; +parameter val_debug_etb__PERIPHID6 = 32'h00000000; +parameter mask_debug_etb__PERIPHID6 = 32'h000000FF; + +parameter debug_etb__PERIPHID7 = 32'hF8801FDC; +parameter val_debug_etb__PERIPHID7 = 32'h00000000; +parameter mask_debug_etb__PERIPHID7 = 32'h000000FF; + +parameter debug_etb__PERIPHID0 = 32'hF8801FE0; +parameter val_debug_etb__PERIPHID0 = 32'h00000007; +parameter mask_debug_etb__PERIPHID0 = 32'h000000FF; + +parameter debug_etb__PERIPHID1 = 32'hF8801FE4; +parameter val_debug_etb__PERIPHID1 = 32'h000000B9; +parameter mask_debug_etb__PERIPHID1 = 32'h000000FF; + +parameter debug_etb__PERIPHID2 = 32'hF8801FE8; +parameter val_debug_etb__PERIPHID2 = 32'h0000002B; +parameter mask_debug_etb__PERIPHID2 = 32'h000000FF; + +parameter debug_etb__PERIPHID3 = 32'hF8801FEC; +parameter val_debug_etb__PERIPHID3 = 32'h00000000; +parameter mask_debug_etb__PERIPHID3 = 32'h000000FF; + +parameter debug_etb__COMPID0 = 32'hF8801FF0; +parameter val_debug_etb__COMPID0 = 32'h0000000D; +parameter mask_debug_etb__COMPID0 = 32'h000000FF; + +parameter debug_etb__COMPID1 = 32'hF8801FF4; +parameter val_debug_etb__COMPID1 = 32'h00000090; +parameter mask_debug_etb__COMPID1 = 32'h000000FF; + +parameter debug_etb__COMPID2 = 32'hF8801FF8; +parameter val_debug_etb__COMPID2 = 32'h00000005; +parameter mask_debug_etb__COMPID2 = 32'h000000FF; + +parameter debug_etb__COMPID3 = 32'hF8801FFC; +parameter val_debug_etb__COMPID3 = 32'h000000B1; +parameter mask_debug_etb__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_ftm ftm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_ftm__FTMGLBCTRL = 32'hF880B000; +parameter val_debug_ftm__FTMGLBCTRL = 32'h00000000; +parameter mask_debug_ftm__FTMGLBCTRL = 32'h00000001; + +parameter debug_ftm__FTMSTATUS = 32'hF880B004; +parameter val_debug_ftm__FTMSTATUS = 32'h00000082; +parameter mask_debug_ftm__FTMSTATUS = 32'h000000FF; + +parameter debug_ftm__FTMCONTROL = 32'hF880B008; +parameter val_debug_ftm__FTMCONTROL = 32'h00000000; +parameter mask_debug_ftm__FTMCONTROL = 32'h00000007; + +parameter debug_ftm__FTMP2FDBG0 = 32'hF880B00C; +parameter val_debug_ftm__FTMP2FDBG0 = 32'h00000000; +parameter mask_debug_ftm__FTMP2FDBG0 = 32'h000000FF; + +parameter debug_ftm__FTMP2FDBG1 = 32'hF880B010; +parameter val_debug_ftm__FTMP2FDBG1 = 32'h00000000; +parameter mask_debug_ftm__FTMP2FDBG1 = 32'h000000FF; + +parameter debug_ftm__FTMP2FDBG2 = 32'hF880B014; +parameter val_debug_ftm__FTMP2FDBG2 = 32'h00000000; +parameter mask_debug_ftm__FTMP2FDBG2 = 32'h000000FF; + +parameter debug_ftm__FTMP2FDBG3 = 32'hF880B018; +parameter val_debug_ftm__FTMP2FDBG3 = 32'h00000000; +parameter mask_debug_ftm__FTMP2FDBG3 = 32'h000000FF; + +parameter debug_ftm__FTMF2PDBG0 = 32'hF880B01C; +parameter val_debug_ftm__FTMF2PDBG0 = 32'h00000000; +parameter mask_debug_ftm__FTMF2PDBG0 = 32'h000000FF; + +parameter debug_ftm__FTMF2PDBG1 = 32'hF880B020; +parameter val_debug_ftm__FTMF2PDBG1 = 32'h00000000; +parameter mask_debug_ftm__FTMF2PDBG1 = 32'h000000FF; + +parameter debug_ftm__FTMF2PDBG2 = 32'hF880B024; +parameter val_debug_ftm__FTMF2PDBG2 = 32'h00000000; +parameter mask_debug_ftm__FTMF2PDBG2 = 32'h000000FF; + +parameter debug_ftm__FTMF2PDBG3 = 32'hF880B028; +parameter val_debug_ftm__FTMF2PDBG3 = 32'h00000000; +parameter mask_debug_ftm__FTMF2PDBG3 = 32'h000000FF; + +parameter debug_ftm__CYCOUNTPRE = 32'hF880B02C; +parameter val_debug_ftm__CYCOUNTPRE = 32'h00000000; +parameter mask_debug_ftm__CYCOUNTPRE = 32'h0000000F; + +parameter debug_ftm__FTMSYNCRELOAD = 32'hF880B030; +parameter val_debug_ftm__FTMSYNCRELOAD = 32'h00000000; +parameter mask_debug_ftm__FTMSYNCRELOAD = 32'h00000FFF; + +parameter debug_ftm__FTMSYNCCOUT = 32'hF880B034; +parameter val_debug_ftm__FTMSYNCCOUT = 32'h00000000; +parameter mask_debug_ftm__FTMSYNCCOUT = 32'h00000FFF; + +parameter debug_ftm__FTMATID = 32'hF880B400; +parameter val_debug_ftm__FTMATID = 32'h00000000; +parameter mask_debug_ftm__FTMATID = 32'h0000007F; + +parameter debug_ftm__FTMITTRIGOUTACK = 32'hF880BED0; +parameter val_debug_ftm__FTMITTRIGOUTACK = 32'h00000000; +parameter mask_debug_ftm__FTMITTRIGOUTACK = 32'h0000000F; + +parameter debug_ftm__FTMITTRIGGER = 32'hF880BED4; +parameter val_debug_ftm__FTMITTRIGGER = 32'h00000000; +parameter mask_debug_ftm__FTMITTRIGGER = 32'h0000000F; + +parameter debug_ftm__FTMITTRACEDIS = 32'hF880BED8; +parameter val_debug_ftm__FTMITTRACEDIS = 32'h00000000; +parameter mask_debug_ftm__FTMITTRACEDIS = 32'h00000001; + +parameter debug_ftm__FTMITCYCCOUNT = 32'hF880BEDC; +parameter val_debug_ftm__FTMITCYCCOUNT = 32'h00000001; +parameter mask_debug_ftm__FTMITCYCCOUNT = 32'hFFFFFFFF; + +parameter debug_ftm__FTMITATBDATA0 = 32'hF880BEEC; +parameter val_debug_ftm__FTMITATBDATA0 = 32'h00000000; +parameter mask_debug_ftm__FTMITATBDATA0 = 32'h0000001F; + +parameter debug_ftm__FTMITATBCTR2 = 32'hF880BEF0; +parameter val_debug_ftm__FTMITATBCTR2 = 32'h00000001; +parameter mask_debug_ftm__FTMITATBCTR2 = 32'h00000003; + +parameter debug_ftm__FTMITATBCTR1 = 32'hF880BEF4; +parameter val_debug_ftm__FTMITATBCTR1 = 32'h00000000; +parameter mask_debug_ftm__FTMITATBCTR1 = 32'h0000007F; + +parameter debug_ftm__FTMITATBCTR0 = 32'hF880BEF8; +parameter val_debug_ftm__FTMITATBCTR0 = 32'h00000000; +parameter mask_debug_ftm__FTMITATBCTR0 = 32'h000003FF; + +parameter debug_ftm__FTMITCR = 32'hF880BF00; +parameter val_debug_ftm__FTMITCR = 32'h00000000; +parameter mask_debug_ftm__FTMITCR = 32'h00000001; + +parameter debug_ftm__CLAIMTAGSET = 32'hF880BFA0; +parameter val_debug_ftm__CLAIMTAGSET = 32'h000000FF; +parameter mask_debug_ftm__CLAIMTAGSET = 32'h000000FF; + +parameter debug_ftm__CLAIMTAGCLR = 32'hF880BFA4; +parameter val_debug_ftm__CLAIMTAGCLR = 32'h000000FF; +parameter mask_debug_ftm__CLAIMTAGCLR = 32'h000000FF; + +parameter debug_ftm__LOCK_ACCESS = 32'hF880BFB0; +parameter val_debug_ftm__LOCK_ACCESS = 32'h00000000; +parameter mask_debug_ftm__LOCK_ACCESS = 32'hFFFFFFFF; + +parameter debug_ftm__LOCK_STATUS = 32'hF880BFB4; +parameter val_debug_ftm__LOCK_STATUS = 32'h00000003; +parameter mask_debug_ftm__LOCK_STATUS = 32'h00000007; + +parameter debug_ftm__FTMAUTHSTATUS = 32'hF880BFB8; +parameter val_debug_ftm__FTMAUTHSTATUS = 32'h00000088; +parameter mask_debug_ftm__FTMAUTHSTATUS = 32'h000000FF; + +parameter debug_ftm__FTMDEVID = 32'hF880BFC8; +parameter val_debug_ftm__FTMDEVID = 32'h00000000; +parameter mask_debug_ftm__FTMDEVID = 32'h00000001; + +parameter debug_ftm__FTMDEV_TYPE = 32'hF880BFCC; +parameter val_debug_ftm__FTMDEV_TYPE = 32'h00000033; +parameter mask_debug_ftm__FTMDEV_TYPE = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID4 = 32'hF880BFD0; +parameter val_debug_ftm__FTMPERIPHID4 = 32'h00000000; +parameter mask_debug_ftm__FTMPERIPHID4 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID5 = 32'hF880BFD4; +parameter val_debug_ftm__FTMPERIPHID5 = 32'h00000000; +parameter mask_debug_ftm__FTMPERIPHID5 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID6 = 32'hF880BFD8; +parameter val_debug_ftm__FTMPERIPHID6 = 32'h00000000; +parameter mask_debug_ftm__FTMPERIPHID6 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID7 = 32'hF880BFDC; +parameter val_debug_ftm__FTMPERIPHID7 = 32'h00000000; +parameter mask_debug_ftm__FTMPERIPHID7 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID0 = 32'hF880BFE0; +parameter val_debug_ftm__FTMPERIPHID0 = 32'h00000001; +parameter mask_debug_ftm__FTMPERIPHID0 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID1 = 32'hF880BFE4; +parameter val_debug_ftm__FTMPERIPHID1 = 32'h00000090; +parameter mask_debug_ftm__FTMPERIPHID1 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID2 = 32'hF880BFE8; +parameter val_debug_ftm__FTMPERIPHID2 = 32'h0000000C; +parameter mask_debug_ftm__FTMPERIPHID2 = 32'h000000FF; + +parameter debug_ftm__FTMPERIPHID3 = 32'hF880BFEC; +parameter val_debug_ftm__FTMPERIPHID3 = 32'h00000000; +parameter mask_debug_ftm__FTMPERIPHID3 = 32'h000000FF; + +parameter debug_ftm__FTMCOMPONID0 = 32'hF880BFF0; +parameter val_debug_ftm__FTMCOMPONID0 = 32'h0000000D; +parameter mask_debug_ftm__FTMCOMPONID0 = 32'h000000FF; + +parameter debug_ftm__FTMCOMPONID1 = 32'hF880BFF4; +parameter val_debug_ftm__FTMCOMPONID1 = 32'h00000090; +parameter mask_debug_ftm__FTMCOMPONID1 = 32'h000000FF; + +parameter debug_ftm__FTMCOMPONID2 = 32'hF880BFF8; +parameter val_debug_ftm__FTMCOMPONID2 = 32'h00000005; +parameter mask_debug_ftm__FTMCOMPONID2 = 32'h000000FF; + +parameter debug_ftm__FTMCOMPONID3 = 32'hF880BFFC; +parameter val_debug_ftm__FTMCOMPONID3 = 32'h000000B1; +parameter mask_debug_ftm__FTMCOMPONID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_funnel funnel +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_funnel__Control = 32'hF8804000; +parameter val_debug_funnel__Control = 32'h00000300; +parameter mask_debug_funnel__Control = 32'h00000FFF; + +parameter debug_funnel__PriControl = 32'hF8804004; +parameter val_debug_funnel__PriControl = 32'h00FAC688; +parameter mask_debug_funnel__PriControl = 32'h00FFFFFF; + +parameter debug_funnel__ITATBDATA0 = 32'hF8804EEC; +parameter val_debug_funnel__ITATBDATA0 = 32'h00000000; +parameter mask_debug_funnel__ITATBDATA0 = 32'h0000001F; + +parameter debug_funnel__ITATBCTR2 = 32'hF8804EF0; +parameter val_debug_funnel__ITATBCTR2 = 32'h00000000; +parameter mask_debug_funnel__ITATBCTR2 = 32'h00000003; + +parameter debug_funnel__ITATBCTR1 = 32'hF8804EF4; +parameter val_debug_funnel__ITATBCTR1 = 32'h00000000; +parameter mask_debug_funnel__ITATBCTR1 = 32'h0000007F; + +parameter debug_funnel__ITATBCTR0 = 32'hF8804EF8; +parameter val_debug_funnel__ITATBCTR0 = 32'h00000000; +parameter mask_debug_funnel__ITATBCTR0 = 32'h000003FF; + +parameter debug_funnel__IMCR = 32'hF8804F00; +parameter val_debug_funnel__IMCR = 32'h00000000; +parameter mask_debug_funnel__IMCR = 32'h00000001; + +parameter debug_funnel__CTSR = 32'hF8804FA0; +parameter val_debug_funnel__CTSR = 32'h0000000F; +parameter mask_debug_funnel__CTSR = 32'h0000000F; + +parameter debug_funnel__CTCR = 32'hF8804FA4; +parameter val_debug_funnel__CTCR = 32'h00000000; +parameter mask_debug_funnel__CTCR = 32'h0000000F; + +parameter debug_funnel__LAR = 32'hF8804FB0; +parameter val_debug_funnel__LAR = 32'h00000000; +parameter mask_debug_funnel__LAR = 32'hFFFFFFFF; + +parameter debug_funnel__LSR = 32'hF8804FB4; +parameter val_debug_funnel__LSR = 32'h00000003; +parameter mask_debug_funnel__LSR = 32'h00000007; + +parameter debug_funnel__ASR = 32'hF8804FB8; +parameter val_debug_funnel__ASR = 32'h00000000; +parameter mask_debug_funnel__ASR = 32'h000000FF; + +parameter debug_funnel__DEVID = 32'hF8804FC8; +parameter val_debug_funnel__DEVID = 32'h00000028; +parameter mask_debug_funnel__DEVID = 32'h000000FF; + +parameter debug_funnel__DTIR = 32'hF8804FCC; +parameter val_debug_funnel__DTIR = 32'h00000012; +parameter mask_debug_funnel__DTIR = 32'h000000FF; + +parameter debug_funnel__PERIPHID4 = 32'hF8804FD0; +parameter val_debug_funnel__PERIPHID4 = 32'h00000004; +parameter mask_debug_funnel__PERIPHID4 = 32'h000000FF; + +parameter debug_funnel__PERIPHID5 = 32'hF8804FD4; +parameter val_debug_funnel__PERIPHID5 = 32'h00000000; +parameter mask_debug_funnel__PERIPHID5 = 32'h000000FF; + +parameter debug_funnel__PERIPHID6 = 32'hF8804FD8; +parameter val_debug_funnel__PERIPHID6 = 32'h00000000; +parameter mask_debug_funnel__PERIPHID6 = 32'h000000FF; + +parameter debug_funnel__PERIPHID7 = 32'hF8804FDC; +parameter val_debug_funnel__PERIPHID7 = 32'h00000000; +parameter mask_debug_funnel__PERIPHID7 = 32'h000000FF; + +parameter debug_funnel__PERIPHID0 = 32'hF8804FE0; +parameter val_debug_funnel__PERIPHID0 = 32'h00000008; +parameter mask_debug_funnel__PERIPHID0 = 32'h000000FF; + +parameter debug_funnel__PERIPHID1 = 32'hF8804FE4; +parameter val_debug_funnel__PERIPHID1 = 32'h000000B9; +parameter mask_debug_funnel__PERIPHID1 = 32'h000000FF; + +parameter debug_funnel__PERIPHID2 = 32'hF8804FE8; +parameter val_debug_funnel__PERIPHID2 = 32'h0000001B; +parameter mask_debug_funnel__PERIPHID2 = 32'h000000FF; + +parameter debug_funnel__PERIPHID3 = 32'hF8804FEC; +parameter val_debug_funnel__PERIPHID3 = 32'h00000000; +parameter mask_debug_funnel__PERIPHID3 = 32'h000000FF; + +parameter debug_funnel__COMPID0 = 32'hF8804FF0; +parameter val_debug_funnel__COMPID0 = 32'h0000000D; +parameter mask_debug_funnel__COMPID0 = 32'h000000FF; + +parameter debug_funnel__COMPID1 = 32'hF8804FF4; +parameter val_debug_funnel__COMPID1 = 32'h00000090; +parameter mask_debug_funnel__COMPID1 = 32'h000000FF; + +parameter debug_funnel__COMPID2 = 32'hF8804FF8; +parameter val_debug_funnel__COMPID2 = 32'h00000005; +parameter mask_debug_funnel__COMPID2 = 32'h000000FF; + +parameter debug_funnel__COMPID3 = 32'hF8804FFC; +parameter val_debug_funnel__COMPID3 = 32'h000000B1; +parameter mask_debug_funnel__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_itm itm +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_itm__StimPort00 = 32'hF8805000; +parameter val_debug_itm__StimPort00 = 32'h00000000; +parameter mask_debug_itm__StimPort00 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort01 = 32'hF8805004; +parameter val_debug_itm__StimPort01 = 32'h00000000; +parameter mask_debug_itm__StimPort01 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort02 = 32'hF8805008; +parameter val_debug_itm__StimPort02 = 32'h00000000; +parameter mask_debug_itm__StimPort02 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort03 = 32'hF880500C; +parameter val_debug_itm__StimPort03 = 32'h00000000; +parameter mask_debug_itm__StimPort03 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort04 = 32'hF8805010; +parameter val_debug_itm__StimPort04 = 32'h00000000; +parameter mask_debug_itm__StimPort04 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort05 = 32'hF8805014; +parameter val_debug_itm__StimPort05 = 32'h00000000; +parameter mask_debug_itm__StimPort05 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort06 = 32'hF8805018; +parameter val_debug_itm__StimPort06 = 32'h00000000; +parameter mask_debug_itm__StimPort06 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort07 = 32'hF880501C; +parameter val_debug_itm__StimPort07 = 32'h00000000; +parameter mask_debug_itm__StimPort07 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort08 = 32'hF8805020; +parameter val_debug_itm__StimPort08 = 32'h00000000; +parameter mask_debug_itm__StimPort08 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort09 = 32'hF8805024; +parameter val_debug_itm__StimPort09 = 32'h00000000; +parameter mask_debug_itm__StimPort09 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort10 = 32'hF8805028; +parameter val_debug_itm__StimPort10 = 32'h00000000; +parameter mask_debug_itm__StimPort10 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort11 = 32'hF880502C; +parameter val_debug_itm__StimPort11 = 32'h00000000; +parameter mask_debug_itm__StimPort11 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort12 = 32'hF8805030; +parameter val_debug_itm__StimPort12 = 32'h00000000; +parameter mask_debug_itm__StimPort12 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort13 = 32'hF8805034; +parameter val_debug_itm__StimPort13 = 32'h00000000; +parameter mask_debug_itm__StimPort13 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort14 = 32'hF8805038; +parameter val_debug_itm__StimPort14 = 32'h00000000; +parameter mask_debug_itm__StimPort14 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort15 = 32'hF880503C; +parameter val_debug_itm__StimPort15 = 32'h00000000; +parameter mask_debug_itm__StimPort15 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort16 = 32'hF8805040; +parameter val_debug_itm__StimPort16 = 32'h00000000; +parameter mask_debug_itm__StimPort16 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort17 = 32'hF8805044; +parameter val_debug_itm__StimPort17 = 32'h00000000; +parameter mask_debug_itm__StimPort17 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort18 = 32'hF8805048; +parameter val_debug_itm__StimPort18 = 32'h00000000; +parameter mask_debug_itm__StimPort18 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort19 = 32'hF880504C; +parameter val_debug_itm__StimPort19 = 32'h00000000; +parameter mask_debug_itm__StimPort19 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort20 = 32'hF8805050; +parameter val_debug_itm__StimPort20 = 32'h00000000; +parameter mask_debug_itm__StimPort20 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort21 = 32'hF8805054; +parameter val_debug_itm__StimPort21 = 32'h00000000; +parameter mask_debug_itm__StimPort21 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort22 = 32'hF8805058; +parameter val_debug_itm__StimPort22 = 32'h00000000; +parameter mask_debug_itm__StimPort22 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort23 = 32'hF880505C; +parameter val_debug_itm__StimPort23 = 32'h00000000; +parameter mask_debug_itm__StimPort23 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort24 = 32'hF8805060; +parameter val_debug_itm__StimPort24 = 32'h00000000; +parameter mask_debug_itm__StimPort24 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort25 = 32'hF8805064; +parameter val_debug_itm__StimPort25 = 32'h00000000; +parameter mask_debug_itm__StimPort25 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort26 = 32'hF8805068; +parameter val_debug_itm__StimPort26 = 32'h00000000; +parameter mask_debug_itm__StimPort26 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort27 = 32'hF880506C; +parameter val_debug_itm__StimPort27 = 32'h00000000; +parameter mask_debug_itm__StimPort27 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort28 = 32'hF8805070; +parameter val_debug_itm__StimPort28 = 32'h00000000; +parameter mask_debug_itm__StimPort28 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort29 = 32'hF8805074; +parameter val_debug_itm__StimPort29 = 32'h00000000; +parameter mask_debug_itm__StimPort29 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort30 = 32'hF8805078; +parameter val_debug_itm__StimPort30 = 32'h00000000; +parameter mask_debug_itm__StimPort30 = 32'hFFFFFFFF; + +parameter debug_itm__StimPort31 = 32'hF880507C; +parameter val_debug_itm__StimPort31 = 32'h00000000; +parameter mask_debug_itm__StimPort31 = 32'hFFFFFFFF; + +parameter debug_itm__TER = 32'hF8805E00; +parameter val_debug_itm__TER = 32'h00000000; +parameter mask_debug_itm__TER = 32'hFFFFFFFF; + +parameter debug_itm__TTR = 32'hF8805E20; +parameter val_debug_itm__TTR = 32'h00000000; +parameter mask_debug_itm__TTR = 32'hFFFFFFFF; + +parameter debug_itm__CR = 32'hF8805E80; +parameter val_debug_itm__CR = 32'h00000004; +parameter mask_debug_itm__CR = 32'h00FFFFFF; + +parameter debug_itm__SCR = 32'hF8805E90; +parameter val_debug_itm__SCR = 32'h00000400; +parameter mask_debug_itm__SCR = 32'h00000FFF; + +parameter debug_itm__ITTRIGOUTACK = 32'hF8805EE4; +parameter val_debug_itm__ITTRIGOUTACK = 32'h00000000; +parameter mask_debug_itm__ITTRIGOUTACK = 32'h00000001; + +parameter debug_itm__ITTRIGOUT = 32'hF8805EE8; +parameter val_debug_itm__ITTRIGOUT = 32'h00000000; +parameter mask_debug_itm__ITTRIGOUT = 32'h00000001; + +parameter debug_itm__ITATBDATA0 = 32'hF8805EEC; +parameter val_debug_itm__ITATBDATA0 = 32'h00000000; +parameter mask_debug_itm__ITATBDATA0 = 32'h00000003; + +parameter debug_itm__ITATBCTR2 = 32'hF8805EF0; +parameter val_debug_itm__ITATBCTR2 = 32'h00000001; +parameter mask_debug_itm__ITATBCTR2 = 32'h00000001; + +parameter debug_itm__ITATABCTR1 = 32'hF8805EF4; +parameter val_debug_itm__ITATABCTR1 = 32'h00000000; +parameter mask_debug_itm__ITATABCTR1 = 32'h0000007F; + +parameter debug_itm__ITATBCTR0 = 32'hF8805EF8; +parameter val_debug_itm__ITATBCTR0 = 32'h00000000; +parameter mask_debug_itm__ITATBCTR0 = 32'h00000003; + +parameter debug_itm__IMCR = 32'hF8805F00; +parameter val_debug_itm__IMCR = 32'h00000000; +parameter mask_debug_itm__IMCR = 32'h00000001; + +parameter debug_itm__CTSR = 32'hF8805FA0; +parameter val_debug_itm__CTSR = 32'h000000FF; +parameter mask_debug_itm__CTSR = 32'h000000FF; + +parameter debug_itm__CTCR = 32'hF8805FA4; +parameter val_debug_itm__CTCR = 32'h00000000; +parameter mask_debug_itm__CTCR = 32'h000000FF; + +parameter debug_itm__LAR = 32'hF8805FB0; +parameter val_debug_itm__LAR = 32'h00000000; +parameter mask_debug_itm__LAR = 32'hFFFFFFFF; + +parameter debug_itm__LSR = 32'hF8805FB4; +parameter val_debug_itm__LSR = 32'h00000003; +parameter mask_debug_itm__LSR = 32'h00000007; + +parameter debug_itm__ASR = 32'hF8805FB8; +parameter val_debug_itm__ASR = 32'h00000088; +parameter mask_debug_itm__ASR = 32'h000000FF; + +parameter debug_itm__DEVID = 32'hF8805FC8; +parameter val_debug_itm__DEVID = 32'h00000020; +parameter mask_debug_itm__DEVID = 32'h00001FFF; + +parameter debug_itm__DTIR = 32'hF8805FCC; +parameter val_debug_itm__DTIR = 32'h00000043; +parameter mask_debug_itm__DTIR = 32'h000000FF; + +parameter debug_itm__PERIPHID4 = 32'hF8805FD0; +parameter val_debug_itm__PERIPHID4 = 32'h00000004; +parameter mask_debug_itm__PERIPHID4 = 32'h000000FF; + +parameter debug_itm__PERIPHID5 = 32'hF8805FD4; +parameter val_debug_itm__PERIPHID5 = 32'h00000000; +parameter mask_debug_itm__PERIPHID5 = 32'h000000FF; + +parameter debug_itm__PERIPHID6 = 32'hF8805FD8; +parameter val_debug_itm__PERIPHID6 = 32'h00000000; +parameter mask_debug_itm__PERIPHID6 = 32'h000000FF; + +parameter debug_itm__PERIPHID7 = 32'hF8805FDC; +parameter val_debug_itm__PERIPHID7 = 32'h00000000; +parameter mask_debug_itm__PERIPHID7 = 32'h000000FF; + +parameter debug_itm__PERIPHID0 = 32'hF8805FE0; +parameter val_debug_itm__PERIPHID0 = 32'h00000013; +parameter mask_debug_itm__PERIPHID0 = 32'h000000FF; + +parameter debug_itm__PERIPHID1 = 32'hF8805FE4; +parameter val_debug_itm__PERIPHID1 = 32'h000000B9; +parameter mask_debug_itm__PERIPHID1 = 32'h000000FF; + +parameter debug_itm__PERIPHID2 = 32'hF8805FE8; +parameter val_debug_itm__PERIPHID2 = 32'h0000002B; +parameter mask_debug_itm__PERIPHID2 = 32'h000000FF; + +parameter debug_itm__PERIPHID3 = 32'hF8805FEC; +parameter val_debug_itm__PERIPHID3 = 32'h00000000; +parameter mask_debug_itm__PERIPHID3 = 32'h000000FF; + +parameter debug_itm__COMPID0 = 32'hF8805FF0; +parameter val_debug_itm__COMPID0 = 32'h0000000D; +parameter mask_debug_itm__COMPID0 = 32'h000000FF; + +parameter debug_itm__COMPID1 = 32'hF8805FF4; +parameter val_debug_itm__COMPID1 = 32'h00000090; +parameter mask_debug_itm__COMPID1 = 32'h000000FF; + +parameter debug_itm__COMPID2 = 32'hF8805FF8; +parameter val_debug_itm__COMPID2 = 32'h00000005; +parameter mask_debug_itm__COMPID2 = 32'h000000FF; + +parameter debug_itm__COMPID3 = 32'hF8805FFC; +parameter val_debug_itm__COMPID3 = 32'h000000B1; +parameter mask_debug_itm__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module debug_tpiu tpiu +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter debug_tpiu__SuppSize = 32'hF8803000; +parameter val_debug_tpiu__SuppSize = 32'hFFFFFFFF; +parameter mask_debug_tpiu__SuppSize = 32'hFFFFFFFF; + +parameter debug_tpiu__CurrentSize = 32'hF8803004; +parameter val_debug_tpiu__CurrentSize = 32'h00000001; +parameter mask_debug_tpiu__CurrentSize = 32'hFFFFFFFF; + +parameter debug_tpiu__SuppTrigMode = 32'hF8803100; +parameter val_debug_tpiu__SuppTrigMode = 32'h0000011F; +parameter mask_debug_tpiu__SuppTrigMode = 32'h0003FFFF; + +parameter debug_tpiu__TrigCount = 32'hF8803104; +parameter val_debug_tpiu__TrigCount = 32'h00000000; +parameter mask_debug_tpiu__TrigCount = 32'h000000FF; + +parameter debug_tpiu__TrigMult = 32'hF8803108; +parameter val_debug_tpiu__TrigMult = 32'h00000000; +parameter mask_debug_tpiu__TrigMult = 32'h0000001F; + +parameter debug_tpiu__SuppTest = 32'hF8803200; +parameter val_debug_tpiu__SuppTest = 32'h0003000F; +parameter mask_debug_tpiu__SuppTest = 32'h0003FFFF; + +parameter debug_tpiu__CurrentTest = 32'hF8803204; +parameter val_debug_tpiu__CurrentTest = 32'h00000000; +parameter mask_debug_tpiu__CurrentTest = 32'h0003FFFF; + +parameter debug_tpiu__TestRepeatCount = 32'hF8803208; +parameter val_debug_tpiu__TestRepeatCount = 32'h00000000; +parameter mask_debug_tpiu__TestRepeatCount = 32'h000000FF; + +parameter debug_tpiu__FFSR = 32'hF8803300; +parameter val_debug_tpiu__FFSR = 32'h00000006; +parameter mask_debug_tpiu__FFSR = 32'h00000007; + +parameter debug_tpiu__FFCR = 32'hF8803304; +parameter val_debug_tpiu__FFCR = 32'h00000000; +parameter mask_debug_tpiu__FFCR = 32'h00003FFF; + +parameter debug_tpiu__FormatSyncCount = 32'hF8803308; +parameter val_debug_tpiu__FormatSyncCount = 32'h00000040; +parameter mask_debug_tpiu__FormatSyncCount = 32'h00000FFF; + +parameter debug_tpiu__EXTCTLIn = 32'hF8803400; +parameter val_debug_tpiu__EXTCTLIn = 32'h00000000; +parameter mask_debug_tpiu__EXTCTLIn = 32'h000000FF; + +parameter debug_tpiu__EXTCTLOut = 32'hF8803404; +parameter val_debug_tpiu__EXTCTLOut = 32'h00000000; +parameter mask_debug_tpiu__EXTCTLOut = 32'h000000FF; + +parameter debug_tpiu__ITTRFLINACK = 32'hF8803EE4; +parameter val_debug_tpiu__ITTRFLINACK = 32'h00000000; +parameter mask_debug_tpiu__ITTRFLINACK = 32'h00000003; + +parameter debug_tpiu__ITTRFLIN = 32'hF8803EE8; +parameter val_debug_tpiu__ITTRFLIN = 32'h00000000; +parameter mask_debug_tpiu__ITTRFLIN = 32'h00000000; + +parameter debug_tpiu__ITATBDATA0 = 32'hF8803EEC; +parameter val_debug_tpiu__ITATBDATA0 = 32'h00000000; +parameter mask_debug_tpiu__ITATBDATA0 = 32'h00000000; + +parameter debug_tpiu__ITATBCTR2 = 32'hF8803EF0; +parameter val_debug_tpiu__ITATBCTR2 = 32'h00000000; +parameter mask_debug_tpiu__ITATBCTR2 = 32'h00000003; + +parameter debug_tpiu__ITATBCTR1 = 32'hF8803EF4; +parameter val_debug_tpiu__ITATBCTR1 = 32'h00000000; +parameter mask_debug_tpiu__ITATBCTR1 = 32'h00000000; + +parameter debug_tpiu__ITATBCTR0 = 32'hF8803EF8; +parameter val_debug_tpiu__ITATBCTR0 = 32'h00000000; +parameter mask_debug_tpiu__ITATBCTR0 = 32'h00000000; + +parameter debug_tpiu__IMCR = 32'hF8803F00; +parameter val_debug_tpiu__IMCR = 32'h00000000; +parameter mask_debug_tpiu__IMCR = 32'h00000001; + +parameter debug_tpiu__CTSR = 32'hF8803FA0; +parameter val_debug_tpiu__CTSR = 32'h0000000F; +parameter mask_debug_tpiu__CTSR = 32'h0000000F; + +parameter debug_tpiu__CTCR = 32'hF8803FA4; +parameter val_debug_tpiu__CTCR = 32'h00000000; +parameter mask_debug_tpiu__CTCR = 32'h0000000F; + +parameter debug_tpiu__LAR = 32'hF8803FB0; +parameter val_debug_tpiu__LAR = 32'h00000000; +parameter mask_debug_tpiu__LAR = 32'hFFFFFFFF; + +parameter debug_tpiu__LSR = 32'hF8803FB4; +parameter val_debug_tpiu__LSR = 32'h00000003; +parameter mask_debug_tpiu__LSR = 32'h00000007; + +parameter debug_tpiu__ASR = 32'hF8803FB8; +parameter val_debug_tpiu__ASR = 32'h00000000; +parameter mask_debug_tpiu__ASR = 32'h000000FF; + +parameter debug_tpiu__DEVID = 32'hF8803FC8; +parameter val_debug_tpiu__DEVID = 32'h000000A0; +parameter mask_debug_tpiu__DEVID = 32'h00000FFF; + +parameter debug_tpiu__DTIR = 32'hF8803FCC; +parameter val_debug_tpiu__DTIR = 32'h00000011; +parameter mask_debug_tpiu__DTIR = 32'h000000FF; + +parameter debug_tpiu__PERIPHID4 = 32'hF8803FD0; +parameter val_debug_tpiu__PERIPHID4 = 32'h00000004; +parameter mask_debug_tpiu__PERIPHID4 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID5 = 32'hF8803FD4; +parameter val_debug_tpiu__PERIPHID5 = 32'h00000000; +parameter mask_debug_tpiu__PERIPHID5 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID6 = 32'hF8803FD8; +parameter val_debug_tpiu__PERIPHID6 = 32'h00000000; +parameter mask_debug_tpiu__PERIPHID6 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID7 = 32'hF8803FDC; +parameter val_debug_tpiu__PERIPHID7 = 32'h00000000; +parameter mask_debug_tpiu__PERIPHID7 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID0 = 32'hF8803FE0; +parameter val_debug_tpiu__PERIPHID0 = 32'h00000012; +parameter mask_debug_tpiu__PERIPHID0 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID1 = 32'hF8803FE4; +parameter val_debug_tpiu__PERIPHID1 = 32'h000000B9; +parameter mask_debug_tpiu__PERIPHID1 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID2 = 32'hF8803FE8; +parameter val_debug_tpiu__PERIPHID2 = 32'h0000004B; +parameter mask_debug_tpiu__PERIPHID2 = 32'h000000FF; + +parameter debug_tpiu__PERIPHID3 = 32'hF8803FEC; +parameter val_debug_tpiu__PERIPHID3 = 32'h00000000; +parameter mask_debug_tpiu__PERIPHID3 = 32'h000000FF; + +parameter debug_tpiu__COMPID0 = 32'hF8803FF0; +parameter val_debug_tpiu__COMPID0 = 32'h0000000D; +parameter mask_debug_tpiu__COMPID0 = 32'h000000FF; + +parameter debug_tpiu__COMPID1 = 32'hF8803FF4; +parameter val_debug_tpiu__COMPID1 = 32'h00000090; +parameter mask_debug_tpiu__COMPID1 = 32'h000000FF; + +parameter debug_tpiu__COMPID2 = 32'hF8803FF8; +parameter val_debug_tpiu__COMPID2 = 32'h00000005; +parameter mask_debug_tpiu__COMPID2 = 32'h000000FF; + +parameter debug_tpiu__COMPID3 = 32'hF8803FFC; +parameter val_debug_tpiu__COMPID3 = 32'h000000B1; +parameter mask_debug_tpiu__COMPID3 = 32'h000000FF; + + +// ************************************************************ +// Module devcfg devcfg +// doc version: 1.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter devcfg__CTRL = 32'hF8007000; +parameter val_devcfg__CTRL = 32'h0C000000; +parameter mask_devcfg__CTRL = 32'hFFFFFFFF; + +parameter devcfg__LOCK = 32'hF8007004; +parameter val_devcfg__LOCK = 32'h00000000; +parameter mask_devcfg__LOCK = 32'hFFFFFFFF; + +parameter devcfg__CFG = 32'hF8007008; +parameter val_devcfg__CFG = 32'h0000050B; +parameter mask_devcfg__CFG = 32'hFFFFFFFF; + +parameter devcfg__INT_STS = 32'hF800700C; +parameter val_devcfg__INT_STS = 32'h00000000; +parameter mask_devcfg__INT_STS = 32'hFFFFFFFF; + +parameter devcfg__INT_MASK = 32'hF8007010; +parameter val_devcfg__INT_MASK = 32'hFFFFFFFF; +parameter mask_devcfg__INT_MASK = 32'hFFFFFFFF; + +parameter devcfg__STATUS = 32'hF8007014; +parameter val_devcfg__STATUS = 32'h40000820; +parameter mask_devcfg__STATUS = 32'hFFFFFFFF; + +parameter devcfg__DMA_SRC_ADDR = 32'hF8007018; +parameter val_devcfg__DMA_SRC_ADDR = 32'h00000000; +parameter mask_devcfg__DMA_SRC_ADDR = 32'hFFFFFFFF; + +parameter devcfg__DMA_DST_ADDR = 32'hF800701C; +parameter val_devcfg__DMA_DST_ADDR = 32'h00000000; +parameter mask_devcfg__DMA_DST_ADDR = 32'hFFFFFFFF; + +parameter devcfg__DMA_SRC_LEN = 32'hF8007020; +parameter val_devcfg__DMA_SRC_LEN = 32'h00000000; +parameter mask_devcfg__DMA_SRC_LEN = 32'hFFFFFFFF; + +parameter devcfg__DMA_DEST_LEN = 32'hF8007024; +parameter val_devcfg__DMA_DEST_LEN = 32'h00000000; +parameter mask_devcfg__DMA_DEST_LEN = 32'hFFFFFFFF; + +parameter devcfg__ROM_SHADOW = 32'hF8007028; +parameter val_devcfg__ROM_SHADOW = 32'h00000000; +parameter mask_devcfg__ROM_SHADOW = 32'hFFFFFFFF; + +parameter devcfg__MULTIBOOT_ADDR = 32'hF800702C; +parameter val_devcfg__MULTIBOOT_ADDR = 32'h00000000; +parameter mask_devcfg__MULTIBOOT_ADDR = 32'hFFFFFFFF; + +parameter devcfg__SW_ID = 32'hF8007030; +parameter val_devcfg__SW_ID = 32'h00000000; +parameter mask_devcfg__SW_ID = 32'hFFFFFFFF; + +parameter devcfg__UNLOCK = 32'hF8007034; +parameter val_devcfg__UNLOCK = 32'h00000000; +parameter mask_devcfg__UNLOCK = 32'hFFFFFFFF; + +parameter devcfg__MCTRL = 32'hF8007080; +parameter val_devcfg__MCTRL = 32'h00800000; +parameter mask_devcfg__MCTRL = 32'h0FFFFFFF; + +parameter devcfg__XADCIF_CFG = 32'hF8007100; +parameter val_devcfg__XADCIF_CFG = 32'h00001114; +parameter mask_devcfg__XADCIF_CFG = 32'hFFFFFFFF; + +parameter devcfg__XADCIF_INT_STS = 32'hF8007104; +parameter val_devcfg__XADCIF_INT_STS = 32'h00000200; +parameter mask_devcfg__XADCIF_INT_STS = 32'hFFFFFFFF; + +parameter devcfg__XADCIF_INT_MASK = 32'hF8007108; +parameter val_devcfg__XADCIF_INT_MASK = 32'hFFFFFFFF; +parameter mask_devcfg__XADCIF_INT_MASK = 32'hFFFFFFFF; + +parameter devcfg__XADCIF_MSTS = 32'hF800710C; +parameter val_devcfg__XADCIF_MSTS = 32'h00000500; +parameter mask_devcfg__XADCIF_MSTS = 32'hFFFFFFFF; + +parameter devcfg__XADCIF_CMDFIFO = 32'hF8007110; +parameter val_devcfg__XADCIF_CMDFIFO = 32'h00000000; +parameter mask_devcfg__XADCIF_CMDFIFO = 32'hFFFFFFFF; + +parameter devcfg__XADCIF_RDFIFO = 32'hF8007114; +parameter val_devcfg__XADCIF_RDFIFO = 32'h00000000; +parameter mask_devcfg__XADCIF_RDFIFO = 32'hFFFFFFFF; + +parameter devcfg__XADCIF_MCTL = 32'hF8007118; +parameter val_devcfg__XADCIF_MCTL = 32'h00000010; +parameter mask_devcfg__XADCIF_MCTL = 32'hFFFFFFFF; + + +// ************************************************************ +// Module dmac0_ns dmac +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter dmac0_ns__DSR = 32'hF8004000; +parameter val_dmac0_ns__DSR = 32'h00000000; +parameter mask_dmac0_ns__DSR = 32'hFFFFFFFF; + +parameter dmac0_ns__DPC = 32'hF8004004; +parameter val_dmac0_ns__DPC = 32'h00000000; +parameter mask_dmac0_ns__DPC = 32'hFFFFFFFF; + +parameter dmac0_ns__INTEN = 32'hF8004020; +parameter val_dmac0_ns__INTEN = 32'h00000000; +parameter mask_dmac0_ns__INTEN = 32'hFFFFFFFF; + +parameter dmac0_ns__INT_EVENT_RIS = 32'hF8004024; +parameter val_dmac0_ns__INT_EVENT_RIS = 32'h00000000; +parameter mask_dmac0_ns__INT_EVENT_RIS = 32'hFFFFFFFF; + +parameter dmac0_ns__INTMIS = 32'hF8004028; +parameter val_dmac0_ns__INTMIS = 32'h00000000; +parameter mask_dmac0_ns__INTMIS = 32'hFFFFFFFF; + +parameter dmac0_ns__INTCLR = 32'hF800402C; +parameter val_dmac0_ns__INTCLR = 32'h00000000; +parameter mask_dmac0_ns__INTCLR = 32'hFFFFFFFF; + +parameter dmac0_ns__FSRD = 32'hF8004030; +parameter val_dmac0_ns__FSRD = 32'h00000000; +parameter mask_dmac0_ns__FSRD = 32'hFFFFFFFF; + +parameter dmac0_ns__FSRC = 32'hF8004034; +parameter val_dmac0_ns__FSRC = 32'h00000000; +parameter mask_dmac0_ns__FSRC = 32'hFFFFFFFF; + +parameter dmac0_ns__FTRD = 32'hF8004038; +parameter val_dmac0_ns__FTRD = 32'h00000000; +parameter mask_dmac0_ns__FTRD = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR0 = 32'hF8004040; +parameter val_dmac0_ns__FTR0 = 32'h00000000; +parameter mask_dmac0_ns__FTR0 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR1 = 32'hF8004044; +parameter val_dmac0_ns__FTR1 = 32'h00000000; +parameter mask_dmac0_ns__FTR1 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR2 = 32'hF8004048; +parameter val_dmac0_ns__FTR2 = 32'h00000000; +parameter mask_dmac0_ns__FTR2 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR3 = 32'hF800404C; +parameter val_dmac0_ns__FTR3 = 32'h00000000; +parameter mask_dmac0_ns__FTR3 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR4 = 32'hF8004050; +parameter val_dmac0_ns__FTR4 = 32'h00000000; +parameter mask_dmac0_ns__FTR4 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR5 = 32'hF8004054; +parameter val_dmac0_ns__FTR5 = 32'h00000000; +parameter mask_dmac0_ns__FTR5 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR6 = 32'hF8004058; +parameter val_dmac0_ns__FTR6 = 32'h00000000; +parameter mask_dmac0_ns__FTR6 = 32'hFFFFFFFF; + +parameter dmac0_ns__FTR7 = 32'hF800405C; +parameter val_dmac0_ns__FTR7 = 32'h00000000; +parameter mask_dmac0_ns__FTR7 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR0 = 32'hF8004100; +parameter val_dmac0_ns__CSR0 = 32'h00000000; +parameter mask_dmac0_ns__CSR0 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC0 = 32'hF8004104; +parameter val_dmac0_ns__CPC0 = 32'h00000000; +parameter mask_dmac0_ns__CPC0 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR1 = 32'hF8004108; +parameter val_dmac0_ns__CSR1 = 32'h00000000; +parameter mask_dmac0_ns__CSR1 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC1 = 32'hF800410C; +parameter val_dmac0_ns__CPC1 = 32'h00000000; +parameter mask_dmac0_ns__CPC1 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR2 = 32'hF8004110; +parameter val_dmac0_ns__CSR2 = 32'h00000000; +parameter mask_dmac0_ns__CSR2 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC2 = 32'hF8004114; +parameter val_dmac0_ns__CPC2 = 32'h00000000; +parameter mask_dmac0_ns__CPC2 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR3 = 32'hF8004118; +parameter val_dmac0_ns__CSR3 = 32'h00000000; +parameter mask_dmac0_ns__CSR3 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC3 = 32'hF800411C; +parameter val_dmac0_ns__CPC3 = 32'h00000000; +parameter mask_dmac0_ns__CPC3 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR4 = 32'hF8004120; +parameter val_dmac0_ns__CSR4 = 32'h00000000; +parameter mask_dmac0_ns__CSR4 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC4 = 32'hF8004124; +parameter val_dmac0_ns__CPC4 = 32'h00000000; +parameter mask_dmac0_ns__CPC4 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR5 = 32'hF8004128; +parameter val_dmac0_ns__CSR5 = 32'h00000000; +parameter mask_dmac0_ns__CSR5 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC5 = 32'hF800412C; +parameter val_dmac0_ns__CPC5 = 32'h00000000; +parameter mask_dmac0_ns__CPC5 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR6 = 32'hF8004130; +parameter val_dmac0_ns__CSR6 = 32'h00000000; +parameter mask_dmac0_ns__CSR6 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC6 = 32'hF8004134; +parameter val_dmac0_ns__CPC6 = 32'h00000000; +parameter mask_dmac0_ns__CPC6 = 32'hFFFFFFFF; + +parameter dmac0_ns__CSR7 = 32'hF8004138; +parameter val_dmac0_ns__CSR7 = 32'h00000000; +parameter mask_dmac0_ns__CSR7 = 32'hFFFFFFFF; + +parameter dmac0_ns__CPC7 = 32'hF800413C; +parameter val_dmac0_ns__CPC7 = 32'h00000000; +parameter mask_dmac0_ns__CPC7 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR0 = 32'hF8004400; +parameter val_dmac0_ns__SAR0 = 32'h00000000; +parameter mask_dmac0_ns__SAR0 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR0 = 32'hF8004404; +parameter val_dmac0_ns__DAR0 = 32'h00000000; +parameter mask_dmac0_ns__DAR0 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR0 = 32'hF8004408; +parameter val_dmac0_ns__CCR0 = 32'h00000000; +parameter mask_dmac0_ns__CCR0 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_0 = 32'hF800440C; +parameter val_dmac0_ns__LC0_0 = 32'h00000000; +parameter mask_dmac0_ns__LC0_0 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_0 = 32'hF8004410; +parameter val_dmac0_ns__LC1_0 = 32'h00000000; +parameter mask_dmac0_ns__LC1_0 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR1 = 32'hF8004420; +parameter val_dmac0_ns__SAR1 = 32'h00000000; +parameter mask_dmac0_ns__SAR1 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR1 = 32'hF8004424; +parameter val_dmac0_ns__DAR1 = 32'h00000000; +parameter mask_dmac0_ns__DAR1 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR1 = 32'hF8004428; +parameter val_dmac0_ns__CCR1 = 32'h00000000; +parameter mask_dmac0_ns__CCR1 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_1 = 32'hF800442C; +parameter val_dmac0_ns__LC0_1 = 32'h00000000; +parameter mask_dmac0_ns__LC0_1 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_1 = 32'hF8004430; +parameter val_dmac0_ns__LC1_1 = 32'h00000000; +parameter mask_dmac0_ns__LC1_1 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR2 = 32'hF8004440; +parameter val_dmac0_ns__SAR2 = 32'h00000000; +parameter mask_dmac0_ns__SAR2 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR2 = 32'hF8004444; +parameter val_dmac0_ns__DAR2 = 32'h00000000; +parameter mask_dmac0_ns__DAR2 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR2 = 32'hF8004448; +parameter val_dmac0_ns__CCR2 = 32'h00000000; +parameter mask_dmac0_ns__CCR2 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_2 = 32'hF800444C; +parameter val_dmac0_ns__LC0_2 = 32'h00000000; +parameter mask_dmac0_ns__LC0_2 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_2 = 32'hF8004450; +parameter val_dmac0_ns__LC1_2 = 32'h00000000; +parameter mask_dmac0_ns__LC1_2 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR3 = 32'hF8004460; +parameter val_dmac0_ns__SAR3 = 32'h00000000; +parameter mask_dmac0_ns__SAR3 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR3 = 32'hF8004464; +parameter val_dmac0_ns__DAR3 = 32'h00000000; +parameter mask_dmac0_ns__DAR3 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR3 = 32'hF8004468; +parameter val_dmac0_ns__CCR3 = 32'h00000000; +parameter mask_dmac0_ns__CCR3 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_3 = 32'hF800446C; +parameter val_dmac0_ns__LC0_3 = 32'h00000000; +parameter mask_dmac0_ns__LC0_3 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_3 = 32'hF8004470; +parameter val_dmac0_ns__LC1_3 = 32'h00000000; +parameter mask_dmac0_ns__LC1_3 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR4 = 32'hF8004480; +parameter val_dmac0_ns__SAR4 = 32'h00000000; +parameter mask_dmac0_ns__SAR4 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR4 = 32'hF8004484; +parameter val_dmac0_ns__DAR4 = 32'h00000000; +parameter mask_dmac0_ns__DAR4 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR4 = 32'hF8004488; +parameter val_dmac0_ns__CCR4 = 32'h00000000; +parameter mask_dmac0_ns__CCR4 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_4 = 32'hF800448C; +parameter val_dmac0_ns__LC0_4 = 32'h00000000; +parameter mask_dmac0_ns__LC0_4 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_4 = 32'hF8004490; +parameter val_dmac0_ns__LC1_4 = 32'h00000000; +parameter mask_dmac0_ns__LC1_4 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR5 = 32'hF80044A0; +parameter val_dmac0_ns__SAR5 = 32'h00000000; +parameter mask_dmac0_ns__SAR5 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR5 = 32'hF80044A4; +parameter val_dmac0_ns__DAR5 = 32'h00000000; +parameter mask_dmac0_ns__DAR5 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR5 = 32'hF80044A8; +parameter val_dmac0_ns__CCR5 = 32'h00000000; +parameter mask_dmac0_ns__CCR5 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_5 = 32'hF80044AC; +parameter val_dmac0_ns__LC0_5 = 32'h00000000; +parameter mask_dmac0_ns__LC0_5 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_5 = 32'hF80044B0; +parameter val_dmac0_ns__LC1_5 = 32'h00000000; +parameter mask_dmac0_ns__LC1_5 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR6 = 32'hF80044C0; +parameter val_dmac0_ns__SAR6 = 32'h00000000; +parameter mask_dmac0_ns__SAR6 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR6 = 32'hF80044C4; +parameter val_dmac0_ns__DAR6 = 32'h00000000; +parameter mask_dmac0_ns__DAR6 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR6 = 32'hF80044C8; +parameter val_dmac0_ns__CCR6 = 32'h00000000; +parameter mask_dmac0_ns__CCR6 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_6 = 32'hF80044CC; +parameter val_dmac0_ns__LC0_6 = 32'h00000000; +parameter mask_dmac0_ns__LC0_6 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_6 = 32'hF80044D0; +parameter val_dmac0_ns__LC1_6 = 32'h00000000; +parameter mask_dmac0_ns__LC1_6 = 32'hFFFFFFFF; + +parameter dmac0_ns__SAR7 = 32'hF80044E0; +parameter val_dmac0_ns__SAR7 = 32'h00000000; +parameter mask_dmac0_ns__SAR7 = 32'hFFFFFFFF; + +parameter dmac0_ns__DAR7 = 32'hF80044E4; +parameter val_dmac0_ns__DAR7 = 32'h00000000; +parameter mask_dmac0_ns__DAR7 = 32'hFFFFFFFF; + +parameter dmac0_ns__CCR7 = 32'hF80044E8; +parameter val_dmac0_ns__CCR7 = 32'h00000000; +parameter mask_dmac0_ns__CCR7 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC0_7 = 32'hF80044EC; +parameter val_dmac0_ns__LC0_7 = 32'h00000000; +parameter mask_dmac0_ns__LC0_7 = 32'hFFFFFFFF; + +parameter dmac0_ns__LC1_7 = 32'hF80044F0; +parameter val_dmac0_ns__LC1_7 = 32'h00000000; +parameter mask_dmac0_ns__LC1_7 = 32'hFFFFFFFF; + +parameter dmac0_ns__DBGSTATUS = 32'hF8004D00; +parameter val_dmac0_ns__DBGSTATUS = 32'h00000000; +parameter mask_dmac0_ns__DBGSTATUS = 32'hFFFFFFFF; + +parameter dmac0_ns__DBGCMD = 32'hF8004D04; +parameter val_dmac0_ns__DBGCMD = 32'h00000000; +parameter mask_dmac0_ns__DBGCMD = 32'hFFFFFFFF; + +parameter dmac0_ns__DBGINST0 = 32'hF8004D08; +parameter val_dmac0_ns__DBGINST0 = 32'h00000000; +parameter mask_dmac0_ns__DBGINST0 = 32'hFFFFFFFF; + +parameter dmac0_ns__DBGINST1 = 32'hF8004D0C; +parameter val_dmac0_ns__DBGINST1 = 32'h00000000; +parameter mask_dmac0_ns__DBGINST1 = 32'hFFFFFFFF; + +parameter dmac0_ns__CR0 = 32'hF8004E00; +parameter val_dmac0_ns__CR0 = 32'h00000000; +parameter mask_dmac0_ns__CR0 = 32'hFFFFFFFF; + +parameter dmac0_ns__CR1 = 32'hF8004E04; +parameter val_dmac0_ns__CR1 = 32'h00000000; +parameter mask_dmac0_ns__CR1 = 32'hFFFFFFFF; + +parameter dmac0_ns__CR2 = 32'hF8004E08; +parameter val_dmac0_ns__CR2 = 32'h00000000; +parameter mask_dmac0_ns__CR2 = 32'hFFFFFFFF; + +parameter dmac0_ns__CR3 = 32'hF8004E0C; +parameter val_dmac0_ns__CR3 = 32'h00000000; +parameter mask_dmac0_ns__CR3 = 32'hFFFFFFFF; + +parameter dmac0_ns__CR4 = 32'hF8004E10; +parameter val_dmac0_ns__CR4 = 32'h00000000; +parameter mask_dmac0_ns__CR4 = 32'hFFFFFFFF; + +parameter dmac0_ns__CRD = 32'hF8004E14; +parameter val_dmac0_ns__CRD = 32'h00000000; +parameter mask_dmac0_ns__CRD = 32'hFFFFFFFF; + +parameter dmac0_ns__WD = 32'hF8004E80; +parameter val_dmac0_ns__WD = 32'h00000000; +parameter mask_dmac0_ns__WD = 32'hFFFFFFFF; + +parameter dmac0_ns__periph_id_0 = 32'hF8004FE0; +parameter val_dmac0_ns__periph_id_0 = 32'h00000000; +parameter mask_dmac0_ns__periph_id_0 = 32'hFFFFFFFF; + +parameter dmac0_ns__periph_id_1 = 32'hF8004FE4; +parameter val_dmac0_ns__periph_id_1 = 32'h00000000; +parameter mask_dmac0_ns__periph_id_1 = 32'hFFFFFFFF; + +parameter dmac0_ns__periph_id_2 = 32'hF8004FE8; +parameter val_dmac0_ns__periph_id_2 = 32'h00000000; +parameter mask_dmac0_ns__periph_id_2 = 32'hFFFFFFFF; + +parameter dmac0_ns__periph_id_3 = 32'hF8004FEC; +parameter val_dmac0_ns__periph_id_3 = 32'h00000000; +parameter mask_dmac0_ns__periph_id_3 = 32'hFFFFFFFF; + +parameter dmac0_ns__pcell_id_0 = 32'hF8004FF0; +parameter val_dmac0_ns__pcell_id_0 = 32'h00000000; +parameter mask_dmac0_ns__pcell_id_0 = 32'hFFFFFFFF; + +parameter dmac0_ns__pcell_id_1 = 32'hF8004FF4; +parameter val_dmac0_ns__pcell_id_1 = 32'h00000000; +parameter mask_dmac0_ns__pcell_id_1 = 32'hFFFFFFFF; + +parameter dmac0_ns__pcell_id_2 = 32'hF8004FF8; +parameter val_dmac0_ns__pcell_id_2 = 32'h00000000; +parameter mask_dmac0_ns__pcell_id_2 = 32'hFFFFFFFF; + +parameter dmac0_ns__pcell_id_3 = 32'hF8004FFC; +parameter val_dmac0_ns__pcell_id_3 = 32'h00000000; +parameter mask_dmac0_ns__pcell_id_3 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module dmac0_s dmac +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter dmac0_s__DSR = 32'hF8003000; +parameter val_dmac0_s__DSR = 32'h00000000; +parameter mask_dmac0_s__DSR = 32'hFFFFFFFF; + +parameter dmac0_s__DPC = 32'hF8003004; +parameter val_dmac0_s__DPC = 32'h00000000; +parameter mask_dmac0_s__DPC = 32'hFFFFFFFF; + +parameter dmac0_s__INTEN = 32'hF8003020; +parameter val_dmac0_s__INTEN = 32'h00000000; +parameter mask_dmac0_s__INTEN = 32'hFFFFFFFF; + +parameter dmac0_s__INT_EVENT_RIS = 32'hF8003024; +parameter val_dmac0_s__INT_EVENT_RIS = 32'h00000000; +parameter mask_dmac0_s__INT_EVENT_RIS = 32'hFFFFFFFF; + +parameter dmac0_s__INTMIS = 32'hF8003028; +parameter val_dmac0_s__INTMIS = 32'h00000000; +parameter mask_dmac0_s__INTMIS = 32'hFFFFFFFF; + +parameter dmac0_s__INTCLR = 32'hF800302C; +parameter val_dmac0_s__INTCLR = 32'h00000000; +parameter mask_dmac0_s__INTCLR = 32'hFFFFFFFF; + +parameter dmac0_s__FSRD = 32'hF8003030; +parameter val_dmac0_s__FSRD = 32'h00000000; +parameter mask_dmac0_s__FSRD = 32'hFFFFFFFF; + +parameter dmac0_s__FSRC = 32'hF8003034; +parameter val_dmac0_s__FSRC = 32'h00000000; +parameter mask_dmac0_s__FSRC = 32'hFFFFFFFF; + +parameter dmac0_s__FTRD = 32'hF8003038; +parameter val_dmac0_s__FTRD = 32'h00000000; +parameter mask_dmac0_s__FTRD = 32'hFFFFFFFF; + +parameter dmac0_s__FTR0 = 32'hF8003040; +parameter val_dmac0_s__FTR0 = 32'h00000000; +parameter mask_dmac0_s__FTR0 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR1 = 32'hF8003044; +parameter val_dmac0_s__FTR1 = 32'h00000000; +parameter mask_dmac0_s__FTR1 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR2 = 32'hF8003048; +parameter val_dmac0_s__FTR2 = 32'h00000000; +parameter mask_dmac0_s__FTR2 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR3 = 32'hF800304C; +parameter val_dmac0_s__FTR3 = 32'h00000000; +parameter mask_dmac0_s__FTR3 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR4 = 32'hF8003050; +parameter val_dmac0_s__FTR4 = 32'h00000000; +parameter mask_dmac0_s__FTR4 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR5 = 32'hF8003054; +parameter val_dmac0_s__FTR5 = 32'h00000000; +parameter mask_dmac0_s__FTR5 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR6 = 32'hF8003058; +parameter val_dmac0_s__FTR6 = 32'h00000000; +parameter mask_dmac0_s__FTR6 = 32'hFFFFFFFF; + +parameter dmac0_s__FTR7 = 32'hF800305C; +parameter val_dmac0_s__FTR7 = 32'h00000000; +parameter mask_dmac0_s__FTR7 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR0 = 32'hF8003100; +parameter val_dmac0_s__CSR0 = 32'h00000000; +parameter mask_dmac0_s__CSR0 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC0 = 32'hF8003104; +parameter val_dmac0_s__CPC0 = 32'h00000000; +parameter mask_dmac0_s__CPC0 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR1 = 32'hF8003108; +parameter val_dmac0_s__CSR1 = 32'h00000000; +parameter mask_dmac0_s__CSR1 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC1 = 32'hF800310C; +parameter val_dmac0_s__CPC1 = 32'h00000000; +parameter mask_dmac0_s__CPC1 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR2 = 32'hF8003110; +parameter val_dmac0_s__CSR2 = 32'h00000000; +parameter mask_dmac0_s__CSR2 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC2 = 32'hF8003114; +parameter val_dmac0_s__CPC2 = 32'h00000000; +parameter mask_dmac0_s__CPC2 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR3 = 32'hF8003118; +parameter val_dmac0_s__CSR3 = 32'h00000000; +parameter mask_dmac0_s__CSR3 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC3 = 32'hF800311C; +parameter val_dmac0_s__CPC3 = 32'h00000000; +parameter mask_dmac0_s__CPC3 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR4 = 32'hF8003120; +parameter val_dmac0_s__CSR4 = 32'h00000000; +parameter mask_dmac0_s__CSR4 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC4 = 32'hF8003124; +parameter val_dmac0_s__CPC4 = 32'h00000000; +parameter mask_dmac0_s__CPC4 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR5 = 32'hF8003128; +parameter val_dmac0_s__CSR5 = 32'h00000000; +parameter mask_dmac0_s__CSR5 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC5 = 32'hF800312C; +parameter val_dmac0_s__CPC5 = 32'h00000000; +parameter mask_dmac0_s__CPC5 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR6 = 32'hF8003130; +parameter val_dmac0_s__CSR6 = 32'h00000000; +parameter mask_dmac0_s__CSR6 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC6 = 32'hF8003134; +parameter val_dmac0_s__CPC6 = 32'h00000000; +parameter mask_dmac0_s__CPC6 = 32'hFFFFFFFF; + +parameter dmac0_s__CSR7 = 32'hF8003138; +parameter val_dmac0_s__CSR7 = 32'h00000000; +parameter mask_dmac0_s__CSR7 = 32'hFFFFFFFF; + +parameter dmac0_s__CPC7 = 32'hF800313C; +parameter val_dmac0_s__CPC7 = 32'h00000000; +parameter mask_dmac0_s__CPC7 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR0 = 32'hF8003400; +parameter val_dmac0_s__SAR0 = 32'h00000000; +parameter mask_dmac0_s__SAR0 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR0 = 32'hF8003404; +parameter val_dmac0_s__DAR0 = 32'h00000000; +parameter mask_dmac0_s__DAR0 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR0 = 32'hF8003408; +parameter val_dmac0_s__CCR0 = 32'h00800200; +parameter mask_dmac0_s__CCR0 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_0 = 32'hF800340C; +parameter val_dmac0_s__LC0_0 = 32'h00000000; +parameter mask_dmac0_s__LC0_0 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_0 = 32'hF8003410; +parameter val_dmac0_s__LC1_0 = 32'h00000000; +parameter mask_dmac0_s__LC1_0 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR1 = 32'hF8003420; +parameter val_dmac0_s__SAR1 = 32'h00000000; +parameter mask_dmac0_s__SAR1 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR1 = 32'hF8003424; +parameter val_dmac0_s__DAR1 = 32'h00000000; +parameter mask_dmac0_s__DAR1 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR1 = 32'hF8003428; +parameter val_dmac0_s__CCR1 = 32'h00800200; +parameter mask_dmac0_s__CCR1 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_1 = 32'hF800342C; +parameter val_dmac0_s__LC0_1 = 32'h00000000; +parameter mask_dmac0_s__LC0_1 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_1 = 32'hF8003430; +parameter val_dmac0_s__LC1_1 = 32'h00000000; +parameter mask_dmac0_s__LC1_1 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR2 = 32'hF8003440; +parameter val_dmac0_s__SAR2 = 32'h00000000; +parameter mask_dmac0_s__SAR2 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR2 = 32'hF8003444; +parameter val_dmac0_s__DAR2 = 32'h00000000; +parameter mask_dmac0_s__DAR2 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR2 = 32'hF8003448; +parameter val_dmac0_s__CCR2 = 32'h00800200; +parameter mask_dmac0_s__CCR2 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_2 = 32'hF800344C; +parameter val_dmac0_s__LC0_2 = 32'h00000000; +parameter mask_dmac0_s__LC0_2 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_2 = 32'hF8003450; +parameter val_dmac0_s__LC1_2 = 32'h00000000; +parameter mask_dmac0_s__LC1_2 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR3 = 32'hF8003460; +parameter val_dmac0_s__SAR3 = 32'h00000000; +parameter mask_dmac0_s__SAR3 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR3 = 32'hF8003464; +parameter val_dmac0_s__DAR3 = 32'h00000000; +parameter mask_dmac0_s__DAR3 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR3 = 32'hF8003468; +parameter val_dmac0_s__CCR3 = 32'h00800200; +parameter mask_dmac0_s__CCR3 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_3 = 32'hF800346C; +parameter val_dmac0_s__LC0_3 = 32'h00000000; +parameter mask_dmac0_s__LC0_3 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_3 = 32'hF8003470; +parameter val_dmac0_s__LC1_3 = 32'h00000000; +parameter mask_dmac0_s__LC1_3 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR4 = 32'hF8003480; +parameter val_dmac0_s__SAR4 = 32'h00000000; +parameter mask_dmac0_s__SAR4 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR4 = 32'hF8003484; +parameter val_dmac0_s__DAR4 = 32'h00000000; +parameter mask_dmac0_s__DAR4 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR4 = 32'hF8003488; +parameter val_dmac0_s__CCR4 = 32'h00800200; +parameter mask_dmac0_s__CCR4 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_4 = 32'hF800348C; +parameter val_dmac0_s__LC0_4 = 32'h00000000; +parameter mask_dmac0_s__LC0_4 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_4 = 32'hF8003490; +parameter val_dmac0_s__LC1_4 = 32'h00000000; +parameter mask_dmac0_s__LC1_4 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR5 = 32'hF80034A0; +parameter val_dmac0_s__SAR5 = 32'h00000000; +parameter mask_dmac0_s__SAR5 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR5 = 32'hF80034A4; +parameter val_dmac0_s__DAR5 = 32'h00000000; +parameter mask_dmac0_s__DAR5 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR5 = 32'hF80034A8; +parameter val_dmac0_s__CCR5 = 32'h00800200; +parameter mask_dmac0_s__CCR5 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_5 = 32'hF80034AC; +parameter val_dmac0_s__LC0_5 = 32'h00000000; +parameter mask_dmac0_s__LC0_5 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_5 = 32'hF80034B0; +parameter val_dmac0_s__LC1_5 = 32'h00000000; +parameter mask_dmac0_s__LC1_5 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR6 = 32'hF80034C0; +parameter val_dmac0_s__SAR6 = 32'h00000000; +parameter mask_dmac0_s__SAR6 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR6 = 32'hF80034C4; +parameter val_dmac0_s__DAR6 = 32'h00000000; +parameter mask_dmac0_s__DAR6 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR6 = 32'hF80034C8; +parameter val_dmac0_s__CCR6 = 32'h00800200; +parameter mask_dmac0_s__CCR6 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_6 = 32'hF80034CC; +parameter val_dmac0_s__LC0_6 = 32'h00000000; +parameter mask_dmac0_s__LC0_6 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_6 = 32'hF80034D0; +parameter val_dmac0_s__LC1_6 = 32'h00000000; +parameter mask_dmac0_s__LC1_6 = 32'hFFFFFFFF; + +parameter dmac0_s__SAR7 = 32'hF80034E0; +parameter val_dmac0_s__SAR7 = 32'h00000000; +parameter mask_dmac0_s__SAR7 = 32'hFFFFFFFF; + +parameter dmac0_s__DAR7 = 32'hF80034E4; +parameter val_dmac0_s__DAR7 = 32'h00000000; +parameter mask_dmac0_s__DAR7 = 32'hFFFFFFFF; + +parameter dmac0_s__CCR7 = 32'hF80034E8; +parameter val_dmac0_s__CCR7 = 32'h00800200; +parameter mask_dmac0_s__CCR7 = 32'hFFFFFFFF; + +parameter dmac0_s__LC0_7 = 32'hF80034EC; +parameter val_dmac0_s__LC0_7 = 32'h00000000; +parameter mask_dmac0_s__LC0_7 = 32'hFFFFFFFF; + +parameter dmac0_s__LC1_7 = 32'hF80034F0; +parameter val_dmac0_s__LC1_7 = 32'h00000000; +parameter mask_dmac0_s__LC1_7 = 32'hFFFFFFFF; + +parameter dmac0_s__DBGSTATUS = 32'hF8003D00; +parameter val_dmac0_s__DBGSTATUS = 32'h00000000; +parameter mask_dmac0_s__DBGSTATUS = 32'hFFFFFFFF; + +parameter dmac0_s__DBGCMD = 32'hF8003D04; +parameter val_dmac0_s__DBGCMD = 32'h00000000; +parameter mask_dmac0_s__DBGCMD = 32'hFFFFFFFF; + +parameter dmac0_s__DBGINST0 = 32'hF8003D08; +parameter val_dmac0_s__DBGINST0 = 32'h00000000; +parameter mask_dmac0_s__DBGINST0 = 32'hFFFFFFFF; + +parameter dmac0_s__DBGINST1 = 32'hF8003D0C; +parameter val_dmac0_s__DBGINST1 = 32'h00000000; +parameter mask_dmac0_s__DBGINST1 = 32'hFFFFFFFF; + +parameter dmac0_s__CR0 = 32'hF8003E00; +parameter val_dmac0_s__CR0 = 32'h001E3071; +parameter mask_dmac0_s__CR0 = 32'hFFFFFFFF; + +parameter dmac0_s__CR1 = 32'hF8003E04; +parameter val_dmac0_s__CR1 = 32'h00000074; +parameter mask_dmac0_s__CR1 = 32'hFFFFFFFF; + +parameter dmac0_s__CR2 = 32'hF8003E08; +parameter val_dmac0_s__CR2 = 32'h00000000; +parameter mask_dmac0_s__CR2 = 32'hFFFFFFFF; + +parameter dmac0_s__CR3 = 32'hF8003E0C; +parameter val_dmac0_s__CR3 = 32'h00000000; +parameter mask_dmac0_s__CR3 = 32'hFFFFFFFF; + +parameter dmac0_s__CR4 = 32'hF8003E10; +parameter val_dmac0_s__CR4 = 32'h00000000; +parameter mask_dmac0_s__CR4 = 32'hFFFFFFFF; + +parameter dmac0_s__CRD = 32'hF8003E14; +parameter val_dmac0_s__CRD = 32'h07FF7F73; +parameter mask_dmac0_s__CRD = 32'hFFFFFFFF; + +parameter dmac0_s__WD = 32'hF8003E80; +parameter val_dmac0_s__WD = 32'h00000000; +parameter mask_dmac0_s__WD = 32'hFFFFFFFF; + +parameter dmac0_s__periph_id_0 = 32'hF8003FE0; +parameter val_dmac0_s__periph_id_0 = 32'h00000030; +parameter mask_dmac0_s__periph_id_0 = 32'hFFFFFFFF; + +parameter dmac0_s__periph_id_1 = 32'hF8003FE4; +parameter val_dmac0_s__periph_id_1 = 32'h00000013; +parameter mask_dmac0_s__periph_id_1 = 32'hFFFFFFFF; + +parameter dmac0_s__periph_id_2 = 32'hF8003FE8; +parameter val_dmac0_s__periph_id_2 = 32'h00000024; +parameter mask_dmac0_s__periph_id_2 = 32'hFFFFFFFF; + +parameter dmac0_s__periph_id_3 = 32'hF8003FEC; +parameter val_dmac0_s__periph_id_3 = 32'h00000000; +parameter mask_dmac0_s__periph_id_3 = 32'hFFFFFFFF; + +parameter dmac0_s__pcell_id_0 = 32'hF8003FF0; +parameter val_dmac0_s__pcell_id_0 = 32'h0000000D; +parameter mask_dmac0_s__pcell_id_0 = 32'hFFFFFFFF; + +parameter dmac0_s__pcell_id_1 = 32'hF8003FF4; +parameter val_dmac0_s__pcell_id_1 = 32'h000000F0; +parameter mask_dmac0_s__pcell_id_1 = 32'hFFFFFFFF; + +parameter dmac0_s__pcell_id_2 = 32'hF8003FF8; +parameter val_dmac0_s__pcell_id_2 = 32'h00000005; +parameter mask_dmac0_s__pcell_id_2 = 32'hFFFFFFFF; + +parameter dmac0_s__pcell_id_3 = 32'hF8003FFC; +parameter val_dmac0_s__pcell_id_3 = 32'h000000B1; +parameter mask_dmac0_s__pcell_id_3 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module efuse_ctrl efuse_ctrl +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter efuse_ctrl__WR_LOCK = 32'hF800D000; +parameter val_efuse_ctrl__WR_LOCK = 32'h00000000; +parameter mask_efuse_ctrl__WR_LOCK = 32'hFFFFFFFF; + +parameter efuse_ctrl__WR_UNLOCK = 32'hF800D004; +parameter val_efuse_ctrl__WR_UNLOCK = 32'h00000000; +parameter mask_efuse_ctrl__WR_UNLOCK = 32'hFFFFFFFF; + +parameter efuse_ctrl__WR_LOCKSTA = 32'hF800D008; +parameter val_efuse_ctrl__WR_LOCKSTA = 32'h00000001; +parameter mask_efuse_ctrl__WR_LOCKSTA = 32'hFFFFFFFF; + +parameter efuse_ctrl__CFG = 32'hF800D00C; +parameter val_efuse_ctrl__CFG = 32'h00010F00; +parameter mask_efuse_ctrl__CFG = 32'hFFFFFFFF; + +parameter efuse_ctrl__STATUS = 32'hF800D010; +parameter val_efuse_ctrl__STATUS = 32'h00100000; +parameter mask_efuse_ctrl__STATUS = 32'hFFFFFFFF; + +parameter efuse_ctrl__CONTROL = 32'hF800D014; +parameter val_efuse_ctrl__CONTROL = 32'h00000003; +parameter mask_efuse_ctrl__CONTROL = 32'hFFFFFFFF; + +parameter efuse_ctrl__PGM_STBW = 32'hF800D018; +parameter val_efuse_ctrl__PGM_STBW = 32'h000002D0; +parameter mask_efuse_ctrl__PGM_STBW = 32'hFFFFFFFF; + +parameter efuse_ctrl__RD_STBW = 32'hF800D01C; +parameter val_efuse_ctrl__RD_STBW = 32'h0000000B; +parameter mask_efuse_ctrl__RD_STBW = 32'hFFFFFFFF; + + +// ************************************************************ +// Module gem0 GEM +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gem0__net_ctrl = 32'hE000B000; +parameter val_gem0__net_ctrl = 32'h00000000; +parameter mask_gem0__net_ctrl = 32'hFFFFFFFF; + +parameter gem0__net_cfg = 32'hE000B004; +parameter val_gem0__net_cfg = 32'h00080000; +parameter mask_gem0__net_cfg = 32'hFFFFFFFF; + +parameter gem0__net_status = 32'hE000B008; +parameter val_gem0__net_status = 32'h00000004; +parameter mask_gem0__net_status = 32'hFFFFFFFD; + +parameter gem0__user_io = 32'hE000B00C; +parameter val_gem0__user_io = 32'h00000000; +parameter mask_gem0__user_io = 32'h0000FFFF; + +parameter gem0__dma_cfg = 32'hE000B010; +parameter val_gem0__dma_cfg = 32'h00020784; +parameter mask_gem0__dma_cfg = 32'hFFFFFFFF; + +parameter gem0__tx_status = 32'hE000B014; +parameter val_gem0__tx_status = 32'h00000000; +parameter mask_gem0__tx_status = 32'hFFFFFFFF; + +parameter gem0__rx_qbar = 32'hE000B018; +parameter val_gem0__rx_qbar = 32'h00000000; +parameter mask_gem0__rx_qbar = 32'hFFFFFFFF; + +parameter gem0__tx_qbar = 32'hE000B01C; +parameter val_gem0__tx_qbar = 32'h00000000; +parameter mask_gem0__tx_qbar = 32'hFFFFFFFF; + +parameter gem0__rx_status = 32'hE000B020; +parameter val_gem0__rx_status = 32'h00000000; +parameter mask_gem0__rx_status = 32'hFFFFFFFF; + +parameter gem0__intr_status = 32'hE000B024; +parameter val_gem0__intr_status = 32'h00000000; +parameter mask_gem0__intr_status = 32'hFFFFFFFF; + +parameter gem0__intr_en = 32'hE000B028; +parameter val_gem0__intr_en = 32'h00000000; +parameter mask_gem0__intr_en = 32'h00000000; + +parameter gem0__intr_dis = 32'hE000B02C; +parameter val_gem0__intr_dis = 32'h00000000; +parameter mask_gem0__intr_dis = 32'h00000000; + +parameter gem0__intr_mask = 32'hE000B030; +parameter val_gem0__intr_mask = 32'h0001FFFF; +parameter mask_gem0__intr_mask = 32'hFC01FFFF; + +parameter gem0__phy_maint = 32'hE000B034; +parameter val_gem0__phy_maint = 32'h00000000; +parameter mask_gem0__phy_maint = 32'hFFFFFFFF; + +parameter gem0__rx_pauseq = 32'hE000B038; +parameter val_gem0__rx_pauseq = 32'h00000000; +parameter mask_gem0__rx_pauseq = 32'hFFFFFFFF; + +parameter gem0__tx_pauseq = 32'hE000B03C; +parameter val_gem0__tx_pauseq = 32'h0000FFFF; +parameter mask_gem0__tx_pauseq = 32'hFFFFFFFF; + +parameter gem0__tx_partial_st_fwd = 32'hE000B040; +parameter val_gem0__tx_partial_st_fwd = 32'h000003FF; +parameter mask_gem0__tx_partial_st_fwd = 32'hFFFFFFFF; + +parameter gem0__rx_partial_st_fwd = 32'hE000B044; +parameter val_gem0__rx_partial_st_fwd = 32'h000003FF; +parameter mask_gem0__rx_partial_st_fwd = 32'hFFFFFFFF; + +parameter gem0__hash_bot = 32'hE000B080; +parameter val_gem0__hash_bot = 32'h00000000; +parameter mask_gem0__hash_bot = 32'hFFFFFFFF; + +parameter gem0__hash_top = 32'hE000B084; +parameter val_gem0__hash_top = 32'h00000000; +parameter mask_gem0__hash_top = 32'hFFFFFFFF; + +parameter gem0__spec_addr1_bot = 32'hE000B088; +parameter val_gem0__spec_addr1_bot = 32'h00000000; +parameter mask_gem0__spec_addr1_bot = 32'hFFFFFFFF; + +parameter gem0__spec_addr1_top = 32'hE000B08C; +parameter val_gem0__spec_addr1_top = 32'h00000000; +parameter mask_gem0__spec_addr1_top = 32'hFFFFFFFF; + +parameter gem0__spec_addr2_bot = 32'hE000B090; +parameter val_gem0__spec_addr2_bot = 32'h00000000; +parameter mask_gem0__spec_addr2_bot = 32'hFFFFFFFF; + +parameter gem0__spec_addr2_top = 32'hE000B094; +parameter val_gem0__spec_addr2_top = 32'h00000000; +parameter mask_gem0__spec_addr2_top = 32'hFFFFFFFF; + +parameter gem0__spec_addr3_bot = 32'hE000B098; +parameter val_gem0__spec_addr3_bot = 32'h00000000; +parameter mask_gem0__spec_addr3_bot = 32'hFFFFFFFF; + +parameter gem0__spec_addr3_top = 32'hE000B09C; +parameter val_gem0__spec_addr3_top = 32'h00000000; +parameter mask_gem0__spec_addr3_top = 32'hFFFFFFFF; + +parameter gem0__spec_addr4_bot = 32'hE000B0A0; +parameter val_gem0__spec_addr4_bot = 32'h00000000; +parameter mask_gem0__spec_addr4_bot = 32'hFFFFFFFF; + +parameter gem0__spec_addr4_top = 32'hE000B0A4; +parameter val_gem0__spec_addr4_top = 32'h00000000; +parameter mask_gem0__spec_addr4_top = 32'hFFFFFFFF; + +parameter gem0__type_id_match1 = 32'hE000B0A8; +parameter val_gem0__type_id_match1 = 32'h00000000; +parameter mask_gem0__type_id_match1 = 32'hFFFFFFFF; + +parameter gem0__type_id_match2 = 32'hE000B0AC; +parameter val_gem0__type_id_match2 = 32'h00000000; +parameter mask_gem0__type_id_match2 = 32'hFFFFFFFF; + +parameter gem0__type_id_match3 = 32'hE000B0B0; +parameter val_gem0__type_id_match3 = 32'h00000000; +parameter mask_gem0__type_id_match3 = 32'hFFFFFFFF; + +parameter gem0__type_id_match4 = 32'hE000B0B4; +parameter val_gem0__type_id_match4 = 32'h00000000; +parameter mask_gem0__type_id_match4 = 32'hFFFFFFFF; + +parameter gem0__wake_on_lan = 32'hE000B0B8; +parameter val_gem0__wake_on_lan = 32'h00000000; +parameter mask_gem0__wake_on_lan = 32'hFFFFFFFF; + +parameter gem0__ipg_stretch = 32'hE000B0BC; +parameter val_gem0__ipg_stretch = 32'h00000000; +parameter mask_gem0__ipg_stretch = 32'hFFFFFFFF; + +parameter gem0__stacked_vlan = 32'hE000B0C0; +parameter val_gem0__stacked_vlan = 32'h00000000; +parameter mask_gem0__stacked_vlan = 32'hFFFFFFFF; + +parameter gem0__tx_pfc_pause = 32'hE000B0C4; +parameter val_gem0__tx_pfc_pause = 32'h00000000; +parameter mask_gem0__tx_pfc_pause = 32'hFFFFFFFF; + +parameter gem0__spec_addr1_mask_bot = 32'hE000B0C8; +parameter val_gem0__spec_addr1_mask_bot = 32'h00000000; +parameter mask_gem0__spec_addr1_mask_bot = 32'hFFFFFFFF; + +parameter gem0__spec_addr1_mask_top = 32'hE000B0CC; +parameter val_gem0__spec_addr1_mask_top = 32'h00000000; +parameter mask_gem0__spec_addr1_mask_top = 32'hFFFFFFFF; + +parameter gem0__module_id = 32'hE000B0FC; +parameter val_gem0__module_id = 32'h00020118; +parameter mask_gem0__module_id = 32'hFFFFFFFF; + +parameter gem0__octets_tx_bot = 32'hE000B100; +parameter val_gem0__octets_tx_bot = 32'h00000000; +parameter mask_gem0__octets_tx_bot = 32'hFFFFFFFF; + +parameter gem0__octets_tx_top = 32'hE000B104; +parameter val_gem0__octets_tx_top = 32'h00000000; +parameter mask_gem0__octets_tx_top = 32'hFFFFFFFF; + +parameter gem0__frames_tx = 32'hE000B108; +parameter val_gem0__frames_tx = 32'h00000000; +parameter mask_gem0__frames_tx = 32'hFFFFFFFF; + +parameter gem0__broadcast_frames_tx = 32'hE000B10C; +parameter val_gem0__broadcast_frames_tx = 32'h00000000; +parameter mask_gem0__broadcast_frames_tx = 32'hFFFFFFFF; + +parameter gem0__multi_frames_tx = 32'hE000B110; +parameter val_gem0__multi_frames_tx = 32'h00000000; +parameter mask_gem0__multi_frames_tx = 32'hFFFFFFFF; + +parameter gem0__pause_frames_tx = 32'hE000B114; +parameter val_gem0__pause_frames_tx = 32'h00000000; +parameter mask_gem0__pause_frames_tx = 32'hFFFFFFFF; + +parameter gem0__frames_64b_tx = 32'hE000B118; +parameter val_gem0__frames_64b_tx = 32'h00000000; +parameter mask_gem0__frames_64b_tx = 32'hFFFFFFFF; + +parameter gem0__frames_65to127b_tx = 32'hE000B11C; +parameter val_gem0__frames_65to127b_tx = 32'h00000000; +parameter mask_gem0__frames_65to127b_tx = 32'hFFFFFFFF; + +parameter gem0__frames_128to255b_tx = 32'hE000B120; +parameter val_gem0__frames_128to255b_tx = 32'h00000000; +parameter mask_gem0__frames_128to255b_tx = 32'hFFFFFFFF; + +parameter gem0__frames_256to511b_tx = 32'hE000B124; +parameter val_gem0__frames_256to511b_tx = 32'h00000000; +parameter mask_gem0__frames_256to511b_tx = 32'hFFFFFFFF; + +parameter gem0__frames_512to1023b_tx = 32'hE000B128; +parameter val_gem0__frames_512to1023b_tx = 32'h00000000; +parameter mask_gem0__frames_512to1023b_tx = 32'hFFFFFFFF; + +parameter gem0__frames_1024to1518b_tx = 32'hE000B12C; +parameter val_gem0__frames_1024to1518b_tx = 32'h00000000; +parameter mask_gem0__frames_1024to1518b_tx = 32'hFFFFFFFF; + +parameter gem0__frames_gt1518b_tx = 32'hE000B130; +parameter val_gem0__frames_gt1518b_tx = 32'h00000000; +parameter mask_gem0__frames_gt1518b_tx = 32'hFFFFFFFF; + +parameter gem0__tx_under_runs = 32'hE000B134; +parameter val_gem0__tx_under_runs = 32'h00000000; +parameter mask_gem0__tx_under_runs = 32'hFFFFFFFF; + +parameter gem0__single_collisn_frames = 32'hE000B138; +parameter val_gem0__single_collisn_frames = 32'h00000000; +parameter mask_gem0__single_collisn_frames = 32'hFFFFFFFF; + +parameter gem0__multi_collisn_frames = 32'hE000B13C; +parameter val_gem0__multi_collisn_frames = 32'h00000000; +parameter mask_gem0__multi_collisn_frames = 32'hFFFFFFFF; + +parameter gem0__excessive_collisns = 32'hE000B140; +parameter val_gem0__excessive_collisns = 32'h00000000; +parameter mask_gem0__excessive_collisns = 32'hFFFFFFFF; + +parameter gem0__late_collisns = 32'hE000B144; +parameter val_gem0__late_collisns = 32'h00000000; +parameter mask_gem0__late_collisns = 32'hFFFFFFFF; + +parameter gem0__deferred_tx_frames = 32'hE000B148; +parameter val_gem0__deferred_tx_frames = 32'h00000000; +parameter mask_gem0__deferred_tx_frames = 32'hFFFFFFFF; + +parameter gem0__carrier_sense_errs = 32'hE000B14C; +parameter val_gem0__carrier_sense_errs = 32'h00000000; +parameter mask_gem0__carrier_sense_errs = 32'hFFFFFFFF; + +parameter gem0__octets_rx_bot = 32'hE000B150; +parameter val_gem0__octets_rx_bot = 32'h00000000; +parameter mask_gem0__octets_rx_bot = 32'hFFFFFFFF; + +parameter gem0__octets_rx_top = 32'hE000B154; +parameter val_gem0__octets_rx_top = 32'h00000000; +parameter mask_gem0__octets_rx_top = 32'hFFFFFFFF; + +parameter gem0__frames_rx = 32'hE000B158; +parameter val_gem0__frames_rx = 32'h00000000; +parameter mask_gem0__frames_rx = 32'hFFFFFFFF; + +parameter gem0__bdcast_fames_rx = 32'hE000B15C; +parameter val_gem0__bdcast_fames_rx = 32'h00000000; +parameter mask_gem0__bdcast_fames_rx = 32'hFFFFFFFF; + +parameter gem0__multi_frames_rx = 32'hE000B160; +parameter val_gem0__multi_frames_rx = 32'h00000000; +parameter mask_gem0__multi_frames_rx = 32'hFFFFFFFF; + +parameter gem0__pause_rx = 32'hE000B164; +parameter val_gem0__pause_rx = 32'h00000000; +parameter mask_gem0__pause_rx = 32'hFFFFFFFF; + +parameter gem0__frames_64b_rx = 32'hE000B168; +parameter val_gem0__frames_64b_rx = 32'h00000000; +parameter mask_gem0__frames_64b_rx = 32'hFFFFFFFF; + +parameter gem0__frames_65to127b_rx = 32'hE000B16C; +parameter val_gem0__frames_65to127b_rx = 32'h00000000; +parameter mask_gem0__frames_65to127b_rx = 32'hFFFFFFFF; + +parameter gem0__frames_128to255b_rx = 32'hE000B170; +parameter val_gem0__frames_128to255b_rx = 32'h00000000; +parameter mask_gem0__frames_128to255b_rx = 32'hFFFFFFFF; + +parameter gem0__frames_256to511b_rx = 32'hE000B174; +parameter val_gem0__frames_256to511b_rx = 32'h00000000; +parameter mask_gem0__frames_256to511b_rx = 32'hFFFFFFFF; + +parameter gem0__frames_512to1023b_rx = 32'hE000B178; +parameter val_gem0__frames_512to1023b_rx = 32'h00000000; +parameter mask_gem0__frames_512to1023b_rx = 32'hFFFFFFFF; + +parameter gem0__frames_1024to1518b_rx = 32'hE000B17C; +parameter val_gem0__frames_1024to1518b_rx = 32'h00000000; +parameter mask_gem0__frames_1024to1518b_rx = 32'hFFFFFFFF; + +parameter gem0__frames_gt1518b_rx = 32'hE000B180; +parameter val_gem0__frames_gt1518b_rx = 32'h00000000; +parameter mask_gem0__frames_gt1518b_rx = 32'hFFFFFFFF; + +parameter gem0__undersz_rx = 32'hE000B184; +parameter val_gem0__undersz_rx = 32'h00000000; +parameter mask_gem0__undersz_rx = 32'hFFFFFFFF; + +parameter gem0__oversz_rx = 32'hE000B188; +parameter val_gem0__oversz_rx = 32'h00000000; +parameter mask_gem0__oversz_rx = 32'hFFFFFFFF; + +parameter gem0__jab_rx = 32'hE000B18C; +parameter val_gem0__jab_rx = 32'h00000000; +parameter mask_gem0__jab_rx = 32'hFFFFFFFF; + +parameter gem0__fcs_errors = 32'hE000B190; +parameter val_gem0__fcs_errors = 32'h00000000; +parameter mask_gem0__fcs_errors = 32'hFFFFFFFF; + +parameter gem0__length_field_errors = 32'hE000B194; +parameter val_gem0__length_field_errors = 32'h00000000; +parameter mask_gem0__length_field_errors = 32'hFFFFFFFF; + +parameter gem0__rx_symbol_errors = 32'hE000B198; +parameter val_gem0__rx_symbol_errors = 32'h00000000; +parameter mask_gem0__rx_symbol_errors = 32'hFFFFFFFF; + +parameter gem0__align_errors = 32'hE000B19C; +parameter val_gem0__align_errors = 32'h00000000; +parameter mask_gem0__align_errors = 32'hFFFFFFFF; + +parameter gem0__rx_resource_errors = 32'hE000B1A0; +parameter val_gem0__rx_resource_errors = 32'h00000000; +parameter mask_gem0__rx_resource_errors = 32'hFFFFFFFF; + +parameter gem0__rx_overrun_errors = 32'hE000B1A4; +parameter val_gem0__rx_overrun_errors = 32'h00000000; +parameter mask_gem0__rx_overrun_errors = 32'hFFFFFFFF; + +parameter gem0__ip_hdr_csum_errors = 32'hE000B1A8; +parameter val_gem0__ip_hdr_csum_errors = 32'h00000000; +parameter mask_gem0__ip_hdr_csum_errors = 32'hFFFFFFFF; + +parameter gem0__tcp_csum_errors = 32'hE000B1AC; +parameter val_gem0__tcp_csum_errors = 32'h00000000; +parameter mask_gem0__tcp_csum_errors = 32'hFFFFFFFF; + +parameter gem0__udp_csum_errors = 32'hE000B1B0; +parameter val_gem0__udp_csum_errors = 32'h00000000; +parameter mask_gem0__udp_csum_errors = 32'hFFFFFFFF; + +parameter gem0__timer_strobe_s = 32'hE000B1C8; +parameter val_gem0__timer_strobe_s = 32'h00000000; +parameter mask_gem0__timer_strobe_s = 32'hFFFFFFFF; + +parameter gem0__timer_strobe_ns = 32'hE000B1CC; +parameter val_gem0__timer_strobe_ns = 32'h00000000; +parameter mask_gem0__timer_strobe_ns = 32'hFFFFFFFF; + +parameter gem0__timer_s = 32'hE000B1D0; +parameter val_gem0__timer_s = 32'h00000000; +parameter mask_gem0__timer_s = 32'hFFFFFFFF; + +parameter gem0__timer_ns = 32'hE000B1D4; +parameter val_gem0__timer_ns = 32'h00000000; +parameter mask_gem0__timer_ns = 32'hFFFFFFFF; + +parameter gem0__timer_adjust = 32'hE000B1D8; +parameter val_gem0__timer_adjust = 32'h00000000; +parameter mask_gem0__timer_adjust = 32'hFFFFFFFF; + +parameter gem0__timer_incr = 32'hE000B1DC; +parameter val_gem0__timer_incr = 32'h00000000; +parameter mask_gem0__timer_incr = 32'hFFFFFFFF; + +parameter gem0__ptp_tx_s = 32'hE000B1E0; +parameter val_gem0__ptp_tx_s = 32'h00000000; +parameter mask_gem0__ptp_tx_s = 32'hFFFFFFFF; + +parameter gem0__ptp_tx_ns = 32'hE000B1E4; +parameter val_gem0__ptp_tx_ns = 32'h00000000; +parameter mask_gem0__ptp_tx_ns = 32'hFFFFFFFF; + +parameter gem0__ptp_rx_s = 32'hE000B1E8; +parameter val_gem0__ptp_rx_s = 32'h00000000; +parameter mask_gem0__ptp_rx_s = 32'hFFFFFFFF; + +parameter gem0__ptp_rx_ns = 32'hE000B1EC; +parameter val_gem0__ptp_rx_ns = 32'h00000000; +parameter mask_gem0__ptp_rx_ns = 32'hFFFFFFFF; + +parameter gem0__ptp_peer_tx_s = 32'hE000B1F0; +parameter val_gem0__ptp_peer_tx_s = 32'h00000000; +parameter mask_gem0__ptp_peer_tx_s = 32'hFFFFFFFF; + +parameter gem0__ptp_peer_tx_ns = 32'hE000B1F4; +parameter val_gem0__ptp_peer_tx_ns = 32'h00000000; +parameter mask_gem0__ptp_peer_tx_ns = 32'hFFFFFFFF; + +parameter gem0__ptp_peer_rx_s = 32'hE000B1F8; +parameter val_gem0__ptp_peer_rx_s = 32'h00000000; +parameter mask_gem0__ptp_peer_rx_s = 32'hFFFFFFFF; + +parameter gem0__ptp_peer_rx_ns = 32'hE000B1FC; +parameter val_gem0__ptp_peer_rx_ns = 32'h00000000; +parameter mask_gem0__ptp_peer_rx_ns = 32'hFFFFFFFF; + +parameter gem0__pcs_ctrl = 32'hE000B200; +parameter val_gem0__pcs_ctrl = 32'h00000000; +parameter mask_gem0__pcs_ctrl = 32'h00000000; + +parameter gem0__pcs_status = 32'hE000B204; +parameter val_gem0__pcs_status = 32'h00000000; +parameter mask_gem0__pcs_status = 32'h00000000; + +parameter gem0__pcs_upper_phy_id = 32'hE000B208; +parameter val_gem0__pcs_upper_phy_id = 32'h00000000; +parameter mask_gem0__pcs_upper_phy_id = 32'h00000000; + +parameter gem0__pcs_lower_phy_id = 32'hE000B20C; +parameter val_gem0__pcs_lower_phy_id = 32'h00000000; +parameter mask_gem0__pcs_lower_phy_id = 32'h00000000; + +parameter gem0__pcs_autoneg_ad = 32'hE000B210; +parameter val_gem0__pcs_autoneg_ad = 32'h00000000; +parameter mask_gem0__pcs_autoneg_ad = 32'h00000000; + +parameter gem0__pcs_autoneg_ability = 32'hE000B214; +parameter val_gem0__pcs_autoneg_ability = 32'h00000000; +parameter mask_gem0__pcs_autoneg_ability = 32'h00000000; + +parameter gem0__pcs_autonec_exp = 32'hE000B218; +parameter val_gem0__pcs_autonec_exp = 32'h00000000; +parameter mask_gem0__pcs_autonec_exp = 32'h00000000; + +parameter gem0__pcs_autoneg_next_pg = 32'hE000B21C; +parameter val_gem0__pcs_autoneg_next_pg = 32'h00000000; +parameter mask_gem0__pcs_autoneg_next_pg = 32'h00000000; + +parameter gem0__pcs_autoneg_pnext_pg = 32'hE000B220; +parameter val_gem0__pcs_autoneg_pnext_pg = 32'h00000000; +parameter mask_gem0__pcs_autoneg_pnext_pg = 32'h00000000; + +parameter gem0__pcs_extended_status = 32'hE000B23C; +parameter val_gem0__pcs_extended_status = 32'h00000000; +parameter mask_gem0__pcs_extended_status = 32'h00000000; + +parameter gem0__design_cfg1 = 32'hE000B280; +parameter val_gem0__design_cfg1 = 32'h02000000; +parameter mask_gem0__design_cfg1 = 32'h0E000000; + +parameter gem0__design_cfg2 = 32'hE000B284; +parameter val_gem0__design_cfg2 = 32'h2A813FFF; +parameter mask_gem0__design_cfg2 = 32'h3FCFFFFF; + +parameter gem0__design_cfg3 = 32'hE000B288; +parameter val_gem0__design_cfg3 = 32'h00000000; +parameter mask_gem0__design_cfg3 = 32'hFFFFFFFF; + +parameter gem0__design_cfg4 = 32'hE000B28C; +parameter val_gem0__design_cfg4 = 32'h00000000; +parameter mask_gem0__design_cfg4 = 32'hFFFFFFFF; + +parameter gem0__design_cfg5 = 32'hE000B290; +parameter val_gem0__design_cfg5 = 32'h002F2045; +parameter mask_gem0__design_cfg5 = 32'h0FFFFCFF; + +parameter gem0__design_cfg6 = 32'hE000B294; +parameter val_gem0__design_cfg6 = 32'h00000000; +parameter mask_gem0__design_cfg6 = 32'h00000000; + +parameter gem0__design_cfg7 = 32'hE000B298; +parameter val_gem0__design_cfg7 = 32'h00000000; +parameter mask_gem0__design_cfg7 = 32'h00000000; + +parameter gem0__isr_pq1 = 32'hE000B400; +parameter val_gem0__isr_pq1 = 32'h00000000; +parameter mask_gem0__isr_pq1 = 32'h00000000; + +parameter gem0__isr_pq2 = 32'hE000B404; +parameter val_gem0__isr_pq2 = 32'h00000000; +parameter mask_gem0__isr_pq2 = 32'h00000000; + +parameter gem0__isr_pq3 = 32'hE000B408; +parameter val_gem0__isr_pq3 = 32'h00000000; +parameter mask_gem0__isr_pq3 = 32'h00000000; + +parameter gem0__isr_pq4 = 32'hE000B40C; +parameter val_gem0__isr_pq4 = 32'h00000000; +parameter mask_gem0__isr_pq4 = 32'h00000000; + +parameter gem0__isr_pq5 = 32'hE000B410; +parameter val_gem0__isr_pq5 = 32'h00000000; +parameter mask_gem0__isr_pq5 = 32'h00000000; + +parameter gem0__isr_pq6 = 32'hE000B414; +parameter val_gem0__isr_pq6 = 32'h00000000; +parameter mask_gem0__isr_pq6 = 32'h00000000; + +parameter gem0__isr_pq7 = 32'hE000B418; +parameter val_gem0__isr_pq7 = 32'h00000000; +parameter mask_gem0__isr_pq7 = 32'h00000000; + +parameter gem0__tx_qbar_q1 = 32'hE000B440; +parameter val_gem0__tx_qbar_q1 = 32'h00000000; +parameter mask_gem0__tx_qbar_q1 = 32'h00000000; + +parameter gem0__tx_qbar_q2 = 32'hE000B444; +parameter val_gem0__tx_qbar_q2 = 32'h00000000; +parameter mask_gem0__tx_qbar_q2 = 32'h00000000; + +parameter gem0__tx_qbar_q3 = 32'hE000B448; +parameter val_gem0__tx_qbar_q3 = 32'h00000000; +parameter mask_gem0__tx_qbar_q3 = 32'h00000000; + +parameter gem0__tx_qbar_q4 = 32'hE000B44C; +parameter val_gem0__tx_qbar_q4 = 32'h00000000; +parameter mask_gem0__tx_qbar_q4 = 32'h00000000; + +parameter gem0__tx_qbar_q5 = 32'hE000B450; +parameter val_gem0__tx_qbar_q5 = 32'h00000000; +parameter mask_gem0__tx_qbar_q5 = 32'h00000000; + +parameter gem0__tx_qbar_q6 = 32'hE000B454; +parameter val_gem0__tx_qbar_q6 = 32'h00000000; +parameter mask_gem0__tx_qbar_q6 = 32'h00000000; + +parameter gem0__tx_qbar_q7 = 32'hE000B458; +parameter val_gem0__tx_qbar_q7 = 32'h00000000; +parameter mask_gem0__tx_qbar_q7 = 32'h00000000; + +parameter gem0__rx_qbar_q1 = 32'hE000B480; +parameter val_gem0__rx_qbar_q1 = 32'h00000000; +parameter mask_gem0__rx_qbar_q1 = 32'h00000000; + +parameter gem0__rx_qbar_q2 = 32'hE000B484; +parameter val_gem0__rx_qbar_q2 = 32'h00000000; +parameter mask_gem0__rx_qbar_q2 = 32'h00000000; + +parameter gem0__rx_qbar_q3 = 32'hE000B488; +parameter val_gem0__rx_qbar_q3 = 32'h00000000; +parameter mask_gem0__rx_qbar_q3 = 32'h00000000; + +parameter gem0__rx_qbar_q4 = 32'hE000B48C; +parameter val_gem0__rx_qbar_q4 = 32'h00000000; +parameter mask_gem0__rx_qbar_q4 = 32'h00000000; + +parameter gem0__rx_qbar_q5 = 32'hE000B490; +parameter val_gem0__rx_qbar_q5 = 32'h00000000; +parameter mask_gem0__rx_qbar_q5 = 32'h00000000; + +parameter gem0__rx_qbar_q6 = 32'hE000B494; +parameter val_gem0__rx_qbar_q6 = 32'h00000000; +parameter mask_gem0__rx_qbar_q6 = 32'h00000000; + +parameter gem0__rx_qbar_q7 = 32'hE000B498; +parameter val_gem0__rx_qbar_q7 = 32'h00000000; +parameter mask_gem0__rx_qbar_q7 = 32'h00000000; + +parameter gem0__rx_bufsz_q1 = 32'hE000B4A0; +parameter val_gem0__rx_bufsz_q1 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q1 = 32'h00000000; + +parameter gem0__rx_bufsz_q2 = 32'hE000B4A4; +parameter val_gem0__rx_bufsz_q2 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q2 = 32'h00000000; + +parameter gem0__rx_bufsz_q3 = 32'hE000B4A8; +parameter val_gem0__rx_bufsz_q3 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q3 = 32'h00000000; + +parameter gem0__rx_bufsz_q4 = 32'hE000B4AC; +parameter val_gem0__rx_bufsz_q4 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q4 = 32'h00000000; + +parameter gem0__rx_bufsz_q5 = 32'hE000B4B0; +parameter val_gem0__rx_bufsz_q5 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q5 = 32'h00000000; + +parameter gem0__rx_bufsz_q6 = 32'hE000B4B4; +parameter val_gem0__rx_bufsz_q6 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q6 = 32'h00000000; + +parameter gem0__rx_bufsz_q7 = 32'hE000B4B8; +parameter val_gem0__rx_bufsz_q7 = 32'h00000000; +parameter mask_gem0__rx_bufsz_q7 = 32'h00000000; + +parameter gem0__screen_t1_r0 = 32'hE000B500; +parameter val_gem0__screen_t1_r0 = 32'h00000000; +parameter mask_gem0__screen_t1_r0 = 32'h00000000; + +parameter gem0__screen_t1_r1 = 32'hE000B504; +parameter val_gem0__screen_t1_r1 = 32'h00000000; +parameter mask_gem0__screen_t1_r1 = 32'h00000000; + +parameter gem0__screen_t1_r2 = 32'hE000B508; +parameter val_gem0__screen_t1_r2 = 32'h00000000; +parameter mask_gem0__screen_t1_r2 = 32'h00000000; + +parameter gem0__screen_t1_r3 = 32'hE000B50C; +parameter val_gem0__screen_t1_r3 = 32'h00000000; +parameter mask_gem0__screen_t1_r3 = 32'h00000000; + +parameter gem0__screen_t1_r4 = 32'hE000B510; +parameter val_gem0__screen_t1_r4 = 32'h00000000; +parameter mask_gem0__screen_t1_r4 = 32'h00000000; + +parameter gem0__screen_t1_r5 = 32'hE000B514; +parameter val_gem0__screen_t1_r5 = 32'h00000000; +parameter mask_gem0__screen_t1_r5 = 32'h00000000; + +parameter gem0__screen_t1_r6 = 32'hE000B518; +parameter val_gem0__screen_t1_r6 = 32'h00000000; +parameter mask_gem0__screen_t1_r6 = 32'h00000000; + +parameter gem0__screen_t1_r7 = 32'hE000B51C; +parameter val_gem0__screen_t1_r7 = 32'h00000000; +parameter mask_gem0__screen_t1_r7 = 32'h00000000; + +parameter gem0__screen_t1_r8 = 32'hE000B520; +parameter val_gem0__screen_t1_r8 = 32'h00000000; +parameter mask_gem0__screen_t1_r8 = 32'h00000000; + +parameter gem0__screen_t1_r9 = 32'hE000B524; +parameter val_gem0__screen_t1_r9 = 32'h00000000; +parameter mask_gem0__screen_t1_r9 = 32'h00000000; + +parameter gem0__screen_t1_r10 = 32'hE000B528; +parameter val_gem0__screen_t1_r10 = 32'h00000000; +parameter mask_gem0__screen_t1_r10 = 32'h00000000; + +parameter gem0__screen_t1_r11 = 32'hE000B52C; +parameter val_gem0__screen_t1_r11 = 32'h00000000; +parameter mask_gem0__screen_t1_r11 = 32'h00000000; + +parameter gem0__screen_t1_r12 = 32'hE000B530; +parameter val_gem0__screen_t1_r12 = 32'h00000000; +parameter mask_gem0__screen_t1_r12 = 32'h00000000; + +parameter gem0__screen_t1_r13 = 32'hE000B534; +parameter val_gem0__screen_t1_r13 = 32'h00000000; +parameter mask_gem0__screen_t1_r13 = 32'h00000000; + +parameter gem0__screen_t1_r14 = 32'hE000B538; +parameter val_gem0__screen_t1_r14 = 32'h00000000; +parameter mask_gem0__screen_t1_r14 = 32'h00000000; + +parameter gem0__screen_t1_r15 = 32'hE000B53C; +parameter val_gem0__screen_t1_r15 = 32'h00000000; +parameter mask_gem0__screen_t1_r15 = 32'h00000000; + +parameter gem0__screen_t2_r0 = 32'hE000B540; +parameter val_gem0__screen_t2_r0 = 32'h00000000; +parameter mask_gem0__screen_t2_r0 = 32'h00000000; + +parameter gem0__screen_t2_r1 = 32'hE000B544; +parameter val_gem0__screen_t2_r1 = 32'h00000000; +parameter mask_gem0__screen_t2_r1 = 32'h00000000; + +parameter gem0__screen_t2_r2 = 32'hE000B548; +parameter val_gem0__screen_t2_r2 = 32'h00000000; +parameter mask_gem0__screen_t2_r2 = 32'h00000000; + +parameter gem0__screen_t2_r3 = 32'hE000B54C; +parameter val_gem0__screen_t2_r3 = 32'h00000000; +parameter mask_gem0__screen_t2_r3 = 32'h00000000; + +parameter gem0__screen_t2_r4 = 32'hE000B550; +parameter val_gem0__screen_t2_r4 = 32'h00000000; +parameter mask_gem0__screen_t2_r4 = 32'h00000000; + +parameter gem0__screen_t2_r5 = 32'hE000B554; +parameter val_gem0__screen_t2_r5 = 32'h00000000; +parameter mask_gem0__screen_t2_r5 = 32'h00000000; + +parameter gem0__screen_t2_r6 = 32'hE000B558; +parameter val_gem0__screen_t2_r6 = 32'h00000000; +parameter mask_gem0__screen_t2_r6 = 32'h00000000; + +parameter gem0__screen_t2_r7 = 32'hE000B55C; +parameter val_gem0__screen_t2_r7 = 32'h00000000; +parameter mask_gem0__screen_t2_r7 = 32'h00000000; + +parameter gem0__screen_t2_r8 = 32'hE000B560; +parameter val_gem0__screen_t2_r8 = 32'h00000000; +parameter mask_gem0__screen_t2_r8 = 32'h00000000; + +parameter gem0__screen_t2_r9 = 32'hE000B564; +parameter val_gem0__screen_t2_r9 = 32'h00000000; +parameter mask_gem0__screen_t2_r9 = 32'h00000000; + +parameter gem0__screen_t2_r10 = 32'hE000B568; +parameter val_gem0__screen_t2_r10 = 32'h00000000; +parameter mask_gem0__screen_t2_r10 = 32'h00000000; + +parameter gem0__screen_t2_r11 = 32'hE000B56C; +parameter val_gem0__screen_t2_r11 = 32'h00000000; +parameter mask_gem0__screen_t2_r11 = 32'h00000000; + +parameter gem0__screen_t2_r12 = 32'hE000B570; +parameter val_gem0__screen_t2_r12 = 32'h00000000; +parameter mask_gem0__screen_t2_r12 = 32'h00000000; + +parameter gem0__screen_t2_r13 = 32'hE000B574; +parameter val_gem0__screen_t2_r13 = 32'h00000000; +parameter mask_gem0__screen_t2_r13 = 32'h00000000; + +parameter gem0__screen_t2_r14 = 32'hE000B578; +parameter val_gem0__screen_t2_r14 = 32'h00000000; +parameter mask_gem0__screen_t2_r14 = 32'h00000000; + +parameter gem0__screen_t2_r15 = 32'hE000B57C; +parameter val_gem0__screen_t2_r15 = 32'h00000000; +parameter mask_gem0__screen_t2_r15 = 32'h00000000; + +parameter gem0__intr_en_pq1 = 32'hE000B600; +parameter val_gem0__intr_en_pq1 = 32'h00000000; +parameter mask_gem0__intr_en_pq1 = 32'h00000000; + +parameter gem0__intr_en_pq2 = 32'hE000B604; +parameter val_gem0__intr_en_pq2 = 32'h00000000; +parameter mask_gem0__intr_en_pq2 = 32'h00000000; + +parameter gem0__intr_en_pq3 = 32'hE000B608; +parameter val_gem0__intr_en_pq3 = 32'h00000000; +parameter mask_gem0__intr_en_pq3 = 32'h00000000; + +parameter gem0__intr_en_pq4 = 32'hE000B60C; +parameter val_gem0__intr_en_pq4 = 32'h00000000; +parameter mask_gem0__intr_en_pq4 = 32'h00000000; + +parameter gem0__intr_en_pq5 = 32'hE000B610; +parameter val_gem0__intr_en_pq5 = 32'h00000000; +parameter mask_gem0__intr_en_pq5 = 32'h00000000; + +parameter gem0__intr_en_pq6 = 32'hE000B614; +parameter val_gem0__intr_en_pq6 = 32'h00000000; +parameter mask_gem0__intr_en_pq6 = 32'h00000000; + +parameter gem0__intr_en_pq7 = 32'hE000B618; +parameter val_gem0__intr_en_pq7 = 32'h00000000; +parameter mask_gem0__intr_en_pq7 = 32'h00000000; + +parameter gem0__intr_dis_pq1 = 32'hE000B620; +parameter val_gem0__intr_dis_pq1 = 32'h00000000; +parameter mask_gem0__intr_dis_pq1 = 32'h00000000; + +parameter gem0__intr_dis_pq2 = 32'hE000B624; +parameter val_gem0__intr_dis_pq2 = 32'h00000000; +parameter mask_gem0__intr_dis_pq2 = 32'h00000000; + +parameter gem0__intr_dis_pq3 = 32'hE000B628; +parameter val_gem0__intr_dis_pq3 = 32'h00000000; +parameter mask_gem0__intr_dis_pq3 = 32'h00000000; + +parameter gem0__intr_dis_pq4 = 32'hE000B62C; +parameter val_gem0__intr_dis_pq4 = 32'h00000000; +parameter mask_gem0__intr_dis_pq4 = 32'h00000000; + +parameter gem0__intr_dis_pq5 = 32'hE000B630; +parameter val_gem0__intr_dis_pq5 = 32'h00000000; +parameter mask_gem0__intr_dis_pq5 = 32'h00000000; + +parameter gem0__intr_dis_pq6 = 32'hE000B634; +parameter val_gem0__intr_dis_pq6 = 32'h00000000; +parameter mask_gem0__intr_dis_pq6 = 32'h00000000; + +parameter gem0__intr_dis_pq7 = 32'hE000B638; +parameter val_gem0__intr_dis_pq7 = 32'h00000000; +parameter mask_gem0__intr_dis_pq7 = 32'h00000000; + +parameter gem0__intr_mask_pq1 = 32'hE000B640; +parameter val_gem0__intr_mask_pq1 = 32'h00000000; +parameter mask_gem0__intr_mask_pq1 = 32'h00000000; + +parameter gem0__intr_mask_pq2 = 32'hE000B644; +parameter val_gem0__intr_mask_pq2 = 32'h00000000; +parameter mask_gem0__intr_mask_pq2 = 32'h00000000; + +parameter gem0__intr_mask_pq3 = 32'hE000B648; +parameter val_gem0__intr_mask_pq3 = 32'h00000000; +parameter mask_gem0__intr_mask_pq3 = 32'h00000000; + +parameter gem0__intr_mask_pq4 = 32'hE000B64C; +parameter val_gem0__intr_mask_pq4 = 32'h00000000; +parameter mask_gem0__intr_mask_pq4 = 32'h00000000; + +parameter gem0__intr_mask_pq5 = 32'hE000B650; +parameter val_gem0__intr_mask_pq5 = 32'h00000000; +parameter mask_gem0__intr_mask_pq5 = 32'h00000000; + +parameter gem0__intr_mask_pq6 = 32'hE000B654; +parameter val_gem0__intr_mask_pq6 = 32'h00000000; +parameter mask_gem0__intr_mask_pq6 = 32'h00000000; + +parameter gem0__intr_mask_pq7 = 32'hE000B658; +parameter val_gem0__intr_mask_pq7 = 32'h00000000; +parameter mask_gem0__intr_mask_pq7 = 32'h00000000; + + +// ************************************************************ +// Module gem1 GEM +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gem1__net_ctrl = 32'hE000C000; +parameter val_gem1__net_ctrl = 32'h00000000; +parameter mask_gem1__net_ctrl = 32'hFFFFFFFF; + +parameter gem1__net_cfg = 32'hE000C004; +parameter val_gem1__net_cfg = 32'h00080000; +parameter mask_gem1__net_cfg = 32'hFFFFFFFF; + +parameter gem1__net_status = 32'hE000C008; +parameter val_gem1__net_status = 32'h00000004; +parameter mask_gem1__net_status = 32'hFFFFFFFD; + +parameter gem1__user_io = 32'hE000C00C; +parameter val_gem1__user_io = 32'h00000000; +parameter mask_gem1__user_io = 32'h0000FFFF; + +parameter gem1__dma_cfg = 32'hE000C010; +parameter val_gem1__dma_cfg = 32'h00020784; +parameter mask_gem1__dma_cfg = 32'hFFFFFFFF; + +parameter gem1__tx_status = 32'hE000C014; +parameter val_gem1__tx_status = 32'h00000000; +parameter mask_gem1__tx_status = 32'hFFFFFFFF; + +parameter gem1__rx_qbar = 32'hE000C018; +parameter val_gem1__rx_qbar = 32'h00000000; +parameter mask_gem1__rx_qbar = 32'hFFFFFFFF; + +parameter gem1__tx_qbar = 32'hE000C01C; +parameter val_gem1__tx_qbar = 32'h00000000; +parameter mask_gem1__tx_qbar = 32'hFFFFFFFF; + +parameter gem1__rx_status = 32'hE000C020; +parameter val_gem1__rx_status = 32'h00000000; +parameter mask_gem1__rx_status = 32'hFFFFFFFF; + +parameter gem1__intr_status = 32'hE000C024; +parameter val_gem1__intr_status = 32'h00000000; +parameter mask_gem1__intr_status = 32'hFFFFFFFF; + +parameter gem1__intr_en = 32'hE000C028; +parameter val_gem1__intr_en = 32'h00000000; +parameter mask_gem1__intr_en = 32'h00000000; + +parameter gem1__intr_dis = 32'hE000C02C; +parameter val_gem1__intr_dis = 32'h00000000; +parameter mask_gem1__intr_dis = 32'h00000000; + +parameter gem1__intr_mask = 32'hE000C030; +parameter val_gem1__intr_mask = 32'h0001FFFF; +parameter mask_gem1__intr_mask = 32'hFC01FFFF; + +parameter gem1__phy_maint = 32'hE000C034; +parameter val_gem1__phy_maint = 32'h00000000; +parameter mask_gem1__phy_maint = 32'hFFFFFFFF; + +parameter gem1__rx_pauseq = 32'hE000C038; +parameter val_gem1__rx_pauseq = 32'h00000000; +parameter mask_gem1__rx_pauseq = 32'hFFFFFFFF; + +parameter gem1__tx_pauseq = 32'hE000C03C; +parameter val_gem1__tx_pauseq = 32'h0000FFFF; +parameter mask_gem1__tx_pauseq = 32'hFFFFFFFF; + +parameter gem1__tx_partial_st_fwd = 32'hE000C040; +parameter val_gem1__tx_partial_st_fwd = 32'h000003FF; +parameter mask_gem1__tx_partial_st_fwd = 32'hFFFFFFFF; + +parameter gem1__rx_partial_st_fwd = 32'hE000C044; +parameter val_gem1__rx_partial_st_fwd = 32'h000003FF; +parameter mask_gem1__rx_partial_st_fwd = 32'hFFFFFFFF; + +parameter gem1__hash_bot = 32'hE000C080; +parameter val_gem1__hash_bot = 32'h00000000; +parameter mask_gem1__hash_bot = 32'hFFFFFFFF; + +parameter gem1__hash_top = 32'hE000C084; +parameter val_gem1__hash_top = 32'h00000000; +parameter mask_gem1__hash_top = 32'hFFFFFFFF; + +parameter gem1__spec_addr1_bot = 32'hE000C088; +parameter val_gem1__spec_addr1_bot = 32'h00000000; +parameter mask_gem1__spec_addr1_bot = 32'hFFFFFFFF; + +parameter gem1__spec_addr1_top = 32'hE000C08C; +parameter val_gem1__spec_addr1_top = 32'h00000000; +parameter mask_gem1__spec_addr1_top = 32'hFFFFFFFF; + +parameter gem1__spec_addr2_bot = 32'hE000C090; +parameter val_gem1__spec_addr2_bot = 32'h00000000; +parameter mask_gem1__spec_addr2_bot = 32'hFFFFFFFF; + +parameter gem1__spec_addr2_top = 32'hE000C094; +parameter val_gem1__spec_addr2_top = 32'h00000000; +parameter mask_gem1__spec_addr2_top = 32'hFFFFFFFF; + +parameter gem1__spec_addr3_bot = 32'hE000C098; +parameter val_gem1__spec_addr3_bot = 32'h00000000; +parameter mask_gem1__spec_addr3_bot = 32'hFFFFFFFF; + +parameter gem1__spec_addr3_top = 32'hE000C09C; +parameter val_gem1__spec_addr3_top = 32'h00000000; +parameter mask_gem1__spec_addr3_top = 32'hFFFFFFFF; + +parameter gem1__spec_addr4_bot = 32'hE000C0A0; +parameter val_gem1__spec_addr4_bot = 32'h00000000; +parameter mask_gem1__spec_addr4_bot = 32'hFFFFFFFF; + +parameter gem1__spec_addr4_top = 32'hE000C0A4; +parameter val_gem1__spec_addr4_top = 32'h00000000; +parameter mask_gem1__spec_addr4_top = 32'hFFFFFFFF; + +parameter gem1__type_id_match1 = 32'hE000C0A8; +parameter val_gem1__type_id_match1 = 32'h00000000; +parameter mask_gem1__type_id_match1 = 32'hFFFFFFFF; + +parameter gem1__type_id_match2 = 32'hE000C0AC; +parameter val_gem1__type_id_match2 = 32'h00000000; +parameter mask_gem1__type_id_match2 = 32'hFFFFFFFF; + +parameter gem1__type_id_match3 = 32'hE000C0B0; +parameter val_gem1__type_id_match3 = 32'h00000000; +parameter mask_gem1__type_id_match3 = 32'hFFFFFFFF; + +parameter gem1__type_id_match4 = 32'hE000C0B4; +parameter val_gem1__type_id_match4 = 32'h00000000; +parameter mask_gem1__type_id_match4 = 32'hFFFFFFFF; + +parameter gem1__wake_on_lan = 32'hE000C0B8; +parameter val_gem1__wake_on_lan = 32'h00000000; +parameter mask_gem1__wake_on_lan = 32'hFFFFFFFF; + +parameter gem1__ipg_stretch = 32'hE000C0BC; +parameter val_gem1__ipg_stretch = 32'h00000000; +parameter mask_gem1__ipg_stretch = 32'hFFFFFFFF; + +parameter gem1__stacked_vlan = 32'hE000C0C0; +parameter val_gem1__stacked_vlan = 32'h00000000; +parameter mask_gem1__stacked_vlan = 32'hFFFFFFFF; + +parameter gem1__tx_pfc_pause = 32'hE000C0C4; +parameter val_gem1__tx_pfc_pause = 32'h00000000; +parameter mask_gem1__tx_pfc_pause = 32'hFFFFFFFF; + +parameter gem1__spec_addr1_mask_bot = 32'hE000C0C8; +parameter val_gem1__spec_addr1_mask_bot = 32'h00000000; +parameter mask_gem1__spec_addr1_mask_bot = 32'hFFFFFFFF; + +parameter gem1__spec_addr1_mask_top = 32'hE000C0CC; +parameter val_gem1__spec_addr1_mask_top = 32'h00000000; +parameter mask_gem1__spec_addr1_mask_top = 32'hFFFFFFFF; + +parameter gem1__module_id = 32'hE000C0FC; +parameter val_gem1__module_id = 32'h00020118; +parameter mask_gem1__module_id = 32'hFFFFFFFF; + +parameter gem1__octets_tx_bot = 32'hE000C100; +parameter val_gem1__octets_tx_bot = 32'h00000000; +parameter mask_gem1__octets_tx_bot = 32'hFFFFFFFF; + +parameter gem1__octets_tx_top = 32'hE000C104; +parameter val_gem1__octets_tx_top = 32'h00000000; +parameter mask_gem1__octets_tx_top = 32'hFFFFFFFF; + +parameter gem1__frames_tx = 32'hE000C108; +parameter val_gem1__frames_tx = 32'h00000000; +parameter mask_gem1__frames_tx = 32'hFFFFFFFF; + +parameter gem1__broadcast_frames_tx = 32'hE000C10C; +parameter val_gem1__broadcast_frames_tx = 32'h00000000; +parameter mask_gem1__broadcast_frames_tx = 32'hFFFFFFFF; + +parameter gem1__multi_frames_tx = 32'hE000C110; +parameter val_gem1__multi_frames_tx = 32'h00000000; +parameter mask_gem1__multi_frames_tx = 32'hFFFFFFFF; + +parameter gem1__pause_frames_tx = 32'hE000C114; +parameter val_gem1__pause_frames_tx = 32'h00000000; +parameter mask_gem1__pause_frames_tx = 32'hFFFFFFFF; + +parameter gem1__frames_64b_tx = 32'hE000C118; +parameter val_gem1__frames_64b_tx = 32'h00000000; +parameter mask_gem1__frames_64b_tx = 32'hFFFFFFFF; + +parameter gem1__frames_65to127b_tx = 32'hE000C11C; +parameter val_gem1__frames_65to127b_tx = 32'h00000000; +parameter mask_gem1__frames_65to127b_tx = 32'hFFFFFFFF; + +parameter gem1__frames_128to255b_tx = 32'hE000C120; +parameter val_gem1__frames_128to255b_tx = 32'h00000000; +parameter mask_gem1__frames_128to255b_tx = 32'hFFFFFFFF; + +parameter gem1__frames_256to511b_tx = 32'hE000C124; +parameter val_gem1__frames_256to511b_tx = 32'h00000000; +parameter mask_gem1__frames_256to511b_tx = 32'hFFFFFFFF; + +parameter gem1__frames_512to1023b_tx = 32'hE000C128; +parameter val_gem1__frames_512to1023b_tx = 32'h00000000; +parameter mask_gem1__frames_512to1023b_tx = 32'hFFFFFFFF; + +parameter gem1__frames_1024to1518b_tx = 32'hE000C12C; +parameter val_gem1__frames_1024to1518b_tx = 32'h00000000; +parameter mask_gem1__frames_1024to1518b_tx = 32'hFFFFFFFF; + +parameter gem1__frames_gt1518b_tx = 32'hE000C130; +parameter val_gem1__frames_gt1518b_tx = 32'h00000000; +parameter mask_gem1__frames_gt1518b_tx = 32'hFFFFFFFF; + +parameter gem1__tx_under_runs = 32'hE000C134; +parameter val_gem1__tx_under_runs = 32'h00000000; +parameter mask_gem1__tx_under_runs = 32'hFFFFFFFF; + +parameter gem1__single_collisn_frames = 32'hE000C138; +parameter val_gem1__single_collisn_frames = 32'h00000000; +parameter mask_gem1__single_collisn_frames = 32'hFFFFFFFF; + +parameter gem1__multi_collisn_frames = 32'hE000C13C; +parameter val_gem1__multi_collisn_frames = 32'h00000000; +parameter mask_gem1__multi_collisn_frames = 32'hFFFFFFFF; + +parameter gem1__excessive_collisns = 32'hE000C140; +parameter val_gem1__excessive_collisns = 32'h00000000; +parameter mask_gem1__excessive_collisns = 32'hFFFFFFFF; + +parameter gem1__late_collisns = 32'hE000C144; +parameter val_gem1__late_collisns = 32'h00000000; +parameter mask_gem1__late_collisns = 32'hFFFFFFFF; + +parameter gem1__deferred_tx_frames = 32'hE000C148; +parameter val_gem1__deferred_tx_frames = 32'h00000000; +parameter mask_gem1__deferred_tx_frames = 32'hFFFFFFFF; + +parameter gem1__carrier_sense_errs = 32'hE000C14C; +parameter val_gem1__carrier_sense_errs = 32'h00000000; +parameter mask_gem1__carrier_sense_errs = 32'hFFFFFFFF; + +parameter gem1__octets_rx_bot = 32'hE000C150; +parameter val_gem1__octets_rx_bot = 32'h00000000; +parameter mask_gem1__octets_rx_bot = 32'hFFFFFFFF; + +parameter gem1__octets_rx_top = 32'hE000C154; +parameter val_gem1__octets_rx_top = 32'h00000000; +parameter mask_gem1__octets_rx_top = 32'hFFFFFFFF; + +parameter gem1__frames_rx = 32'hE000C158; +parameter val_gem1__frames_rx = 32'h00000000; +parameter mask_gem1__frames_rx = 32'hFFFFFFFF; + +parameter gem1__bdcast_fames_rx = 32'hE000C15C; +parameter val_gem1__bdcast_fames_rx = 32'h00000000; +parameter mask_gem1__bdcast_fames_rx = 32'hFFFFFFFF; + +parameter gem1__multi_frames_rx = 32'hE000C160; +parameter val_gem1__multi_frames_rx = 32'h00000000; +parameter mask_gem1__multi_frames_rx = 32'hFFFFFFFF; + +parameter gem1__pause_rx = 32'hE000C164; +parameter val_gem1__pause_rx = 32'h00000000; +parameter mask_gem1__pause_rx = 32'hFFFFFFFF; + +parameter gem1__frames_64b_rx = 32'hE000C168; +parameter val_gem1__frames_64b_rx = 32'h00000000; +parameter mask_gem1__frames_64b_rx = 32'hFFFFFFFF; + +parameter gem1__frames_65to127b_rx = 32'hE000C16C; +parameter val_gem1__frames_65to127b_rx = 32'h00000000; +parameter mask_gem1__frames_65to127b_rx = 32'hFFFFFFFF; + +parameter gem1__frames_128to255b_rx = 32'hE000C170; +parameter val_gem1__frames_128to255b_rx = 32'h00000000; +parameter mask_gem1__frames_128to255b_rx = 32'hFFFFFFFF; + +parameter gem1__frames_256to511b_rx = 32'hE000C174; +parameter val_gem1__frames_256to511b_rx = 32'h00000000; +parameter mask_gem1__frames_256to511b_rx = 32'hFFFFFFFF; + +parameter gem1__frames_512to1023b_rx = 32'hE000C178; +parameter val_gem1__frames_512to1023b_rx = 32'h00000000; +parameter mask_gem1__frames_512to1023b_rx = 32'hFFFFFFFF; + +parameter gem1__frames_1024to1518b_rx = 32'hE000C17C; +parameter val_gem1__frames_1024to1518b_rx = 32'h00000000; +parameter mask_gem1__frames_1024to1518b_rx = 32'hFFFFFFFF; + +parameter gem1__frames_gt1518b_rx = 32'hE000C180; +parameter val_gem1__frames_gt1518b_rx = 32'h00000000; +parameter mask_gem1__frames_gt1518b_rx = 32'hFFFFFFFF; + +parameter gem1__undersz_rx = 32'hE000C184; +parameter val_gem1__undersz_rx = 32'h00000000; +parameter mask_gem1__undersz_rx = 32'hFFFFFFFF; + +parameter gem1__oversz_rx = 32'hE000C188; +parameter val_gem1__oversz_rx = 32'h00000000; +parameter mask_gem1__oversz_rx = 32'hFFFFFFFF; + +parameter gem1__jab_rx = 32'hE000C18C; +parameter val_gem1__jab_rx = 32'h00000000; +parameter mask_gem1__jab_rx = 32'hFFFFFFFF; + +parameter gem1__fcs_errors = 32'hE000C190; +parameter val_gem1__fcs_errors = 32'h00000000; +parameter mask_gem1__fcs_errors = 32'hFFFFFFFF; + +parameter gem1__length_field_errors = 32'hE000C194; +parameter val_gem1__length_field_errors = 32'h00000000; +parameter mask_gem1__length_field_errors = 32'hFFFFFFFF; + +parameter gem1__rx_symbol_errors = 32'hE000C198; +parameter val_gem1__rx_symbol_errors = 32'h00000000; +parameter mask_gem1__rx_symbol_errors = 32'hFFFFFFFF; + +parameter gem1__align_errors = 32'hE000C19C; +parameter val_gem1__align_errors = 32'h00000000; +parameter mask_gem1__align_errors = 32'hFFFFFFFF; + +parameter gem1__rx_resource_errors = 32'hE000C1A0; +parameter val_gem1__rx_resource_errors = 32'h00000000; +parameter mask_gem1__rx_resource_errors = 32'hFFFFFFFF; + +parameter gem1__rx_overrun_errors = 32'hE000C1A4; +parameter val_gem1__rx_overrun_errors = 32'h00000000; +parameter mask_gem1__rx_overrun_errors = 32'hFFFFFFFF; + +parameter gem1__ip_hdr_csum_errors = 32'hE000C1A8; +parameter val_gem1__ip_hdr_csum_errors = 32'h00000000; +parameter mask_gem1__ip_hdr_csum_errors = 32'hFFFFFFFF; + +parameter gem1__tcp_csum_errors = 32'hE000C1AC; +parameter val_gem1__tcp_csum_errors = 32'h00000000; +parameter mask_gem1__tcp_csum_errors = 32'hFFFFFFFF; + +parameter gem1__udp_csum_errors = 32'hE000C1B0; +parameter val_gem1__udp_csum_errors = 32'h00000000; +parameter mask_gem1__udp_csum_errors = 32'hFFFFFFFF; + +parameter gem1__timer_strobe_s = 32'hE000C1C8; +parameter val_gem1__timer_strobe_s = 32'h00000000; +parameter mask_gem1__timer_strobe_s = 32'hFFFFFFFF; + +parameter gem1__timer_strobe_ns = 32'hE000C1CC; +parameter val_gem1__timer_strobe_ns = 32'h00000000; +parameter mask_gem1__timer_strobe_ns = 32'hFFFFFFFF; + +parameter gem1__timer_s = 32'hE000C1D0; +parameter val_gem1__timer_s = 32'h00000000; +parameter mask_gem1__timer_s = 32'hFFFFFFFF; + +parameter gem1__timer_ns = 32'hE000C1D4; +parameter val_gem1__timer_ns = 32'h00000000; +parameter mask_gem1__timer_ns = 32'hFFFFFFFF; + +parameter gem1__timer_adjust = 32'hE000C1D8; +parameter val_gem1__timer_adjust = 32'h00000000; +parameter mask_gem1__timer_adjust = 32'hFFFFFFFF; + +parameter gem1__timer_incr = 32'hE000C1DC; +parameter val_gem1__timer_incr = 32'h00000000; +parameter mask_gem1__timer_incr = 32'hFFFFFFFF; + +parameter gem1__ptp_tx_s = 32'hE000C1E0; +parameter val_gem1__ptp_tx_s = 32'h00000000; +parameter mask_gem1__ptp_tx_s = 32'hFFFFFFFF; + +parameter gem1__ptp_tx_ns = 32'hE000C1E4; +parameter val_gem1__ptp_tx_ns = 32'h00000000; +parameter mask_gem1__ptp_tx_ns = 32'hFFFFFFFF; + +parameter gem1__ptp_rx_s = 32'hE000C1E8; +parameter val_gem1__ptp_rx_s = 32'h00000000; +parameter mask_gem1__ptp_rx_s = 32'hFFFFFFFF; + +parameter gem1__ptp_rx_ns = 32'hE000C1EC; +parameter val_gem1__ptp_rx_ns = 32'h00000000; +parameter mask_gem1__ptp_rx_ns = 32'hFFFFFFFF; + +parameter gem1__ptp_peer_tx_s = 32'hE000C1F0; +parameter val_gem1__ptp_peer_tx_s = 32'h00000000; +parameter mask_gem1__ptp_peer_tx_s = 32'hFFFFFFFF; + +parameter gem1__ptp_peer_tx_ns = 32'hE000C1F4; +parameter val_gem1__ptp_peer_tx_ns = 32'h00000000; +parameter mask_gem1__ptp_peer_tx_ns = 32'hFFFFFFFF; + +parameter gem1__ptp_peer_rx_s = 32'hE000C1F8; +parameter val_gem1__ptp_peer_rx_s = 32'h00000000; +parameter mask_gem1__ptp_peer_rx_s = 32'hFFFFFFFF; + +parameter gem1__ptp_peer_rx_ns = 32'hE000C1FC; +parameter val_gem1__ptp_peer_rx_ns = 32'h00000000; +parameter mask_gem1__ptp_peer_rx_ns = 32'hFFFFFFFF; + +parameter gem1__pcs_ctrl = 32'hE000C200; +parameter val_gem1__pcs_ctrl = 32'h00000000; +parameter mask_gem1__pcs_ctrl = 32'h00000000; + +parameter gem1__pcs_status = 32'hE000C204; +parameter val_gem1__pcs_status = 32'h00000000; +parameter mask_gem1__pcs_status = 32'h00000000; + +parameter gem1__pcs_upper_phy_id = 32'hE000C208; +parameter val_gem1__pcs_upper_phy_id = 32'h00000000; +parameter mask_gem1__pcs_upper_phy_id = 32'h00000000; + +parameter gem1__pcs_lower_phy_id = 32'hE000C20C; +parameter val_gem1__pcs_lower_phy_id = 32'h00000000; +parameter mask_gem1__pcs_lower_phy_id = 32'h00000000; + +parameter gem1__pcs_autoneg_ad = 32'hE000C210; +parameter val_gem1__pcs_autoneg_ad = 32'h00000000; +parameter mask_gem1__pcs_autoneg_ad = 32'h00000000; + +parameter gem1__pcs_autoneg_ability = 32'hE000C214; +parameter val_gem1__pcs_autoneg_ability = 32'h00000000; +parameter mask_gem1__pcs_autoneg_ability = 32'h00000000; + +parameter gem1__pcs_autonec_exp = 32'hE000C218; +parameter val_gem1__pcs_autonec_exp = 32'h00000000; +parameter mask_gem1__pcs_autonec_exp = 32'h00000000; + +parameter gem1__pcs_autoneg_next_pg = 32'hE000C21C; +parameter val_gem1__pcs_autoneg_next_pg = 32'h00000000; +parameter mask_gem1__pcs_autoneg_next_pg = 32'h00000000; + +parameter gem1__pcs_autoneg_pnext_pg = 32'hE000C220; +parameter val_gem1__pcs_autoneg_pnext_pg = 32'h00000000; +parameter mask_gem1__pcs_autoneg_pnext_pg = 32'h00000000; + +parameter gem1__pcs_extended_status = 32'hE000C23C; +parameter val_gem1__pcs_extended_status = 32'h00000000; +parameter mask_gem1__pcs_extended_status = 32'h00000000; + +parameter gem1__design_cfg1 = 32'hE000C280; +parameter val_gem1__design_cfg1 = 32'h02000000; +parameter mask_gem1__design_cfg1 = 32'h0E000000; + +parameter gem1__design_cfg2 = 32'hE000C284; +parameter val_gem1__design_cfg2 = 32'h2A813FFF; +parameter mask_gem1__design_cfg2 = 32'h3FCFFFFF; + +parameter gem1__design_cfg3 = 32'hE000C288; +parameter val_gem1__design_cfg3 = 32'h00000000; +parameter mask_gem1__design_cfg3 = 32'hFFFFFFFF; + +parameter gem1__design_cfg4 = 32'hE000C28C; +parameter val_gem1__design_cfg4 = 32'h00000000; +parameter mask_gem1__design_cfg4 = 32'hFFFFFFFF; + +parameter gem1__design_cfg5 = 32'hE000C290; +parameter val_gem1__design_cfg5 = 32'h002F2045; +parameter mask_gem1__design_cfg5 = 32'h0FFFFCFF; + +parameter gem1__design_cfg6 = 32'hE000C294; +parameter val_gem1__design_cfg6 = 32'h00000000; +parameter mask_gem1__design_cfg6 = 32'h00000000; + +parameter gem1__design_cfg7 = 32'hE000C298; +parameter val_gem1__design_cfg7 = 32'h00000000; +parameter mask_gem1__design_cfg7 = 32'h00000000; + +parameter gem1__isr_pq1 = 32'hE000C400; +parameter val_gem1__isr_pq1 = 32'h00000000; +parameter mask_gem1__isr_pq1 = 32'h00000000; + +parameter gem1__isr_pq2 = 32'hE000C404; +parameter val_gem1__isr_pq2 = 32'h00000000; +parameter mask_gem1__isr_pq2 = 32'h00000000; + +parameter gem1__isr_pq3 = 32'hE000C408; +parameter val_gem1__isr_pq3 = 32'h00000000; +parameter mask_gem1__isr_pq3 = 32'h00000000; + +parameter gem1__isr_pq4 = 32'hE000C40C; +parameter val_gem1__isr_pq4 = 32'h00000000; +parameter mask_gem1__isr_pq4 = 32'h00000000; + +parameter gem1__isr_pq5 = 32'hE000C410; +parameter val_gem1__isr_pq5 = 32'h00000000; +parameter mask_gem1__isr_pq5 = 32'h00000000; + +parameter gem1__isr_pq6 = 32'hE000C414; +parameter val_gem1__isr_pq6 = 32'h00000000; +parameter mask_gem1__isr_pq6 = 32'h00000000; + +parameter gem1__isr_pq7 = 32'hE000C418; +parameter val_gem1__isr_pq7 = 32'h00000000; +parameter mask_gem1__isr_pq7 = 32'h00000000; + +parameter gem1__tx_qbar_q1 = 32'hE000C440; +parameter val_gem1__tx_qbar_q1 = 32'h00000000; +parameter mask_gem1__tx_qbar_q1 = 32'h00000000; + +parameter gem1__tx_qbar_q2 = 32'hE000C444; +parameter val_gem1__tx_qbar_q2 = 32'h00000000; +parameter mask_gem1__tx_qbar_q2 = 32'h00000000; + +parameter gem1__tx_qbar_q3 = 32'hE000C448; +parameter val_gem1__tx_qbar_q3 = 32'h00000000; +parameter mask_gem1__tx_qbar_q3 = 32'h00000000; + +parameter gem1__tx_qbar_q4 = 32'hE000C44C; +parameter val_gem1__tx_qbar_q4 = 32'h00000000; +parameter mask_gem1__tx_qbar_q4 = 32'h00000000; + +parameter gem1__tx_qbar_q5 = 32'hE000C450; +parameter val_gem1__tx_qbar_q5 = 32'h00000000; +parameter mask_gem1__tx_qbar_q5 = 32'h00000000; + +parameter gem1__tx_qbar_q6 = 32'hE000C454; +parameter val_gem1__tx_qbar_q6 = 32'h00000000; +parameter mask_gem1__tx_qbar_q6 = 32'h00000000; + +parameter gem1__tx_qbar_q7 = 32'hE000C458; +parameter val_gem1__tx_qbar_q7 = 32'h00000000; +parameter mask_gem1__tx_qbar_q7 = 32'h00000000; + +parameter gem1__rx_qbar_q1 = 32'hE000C480; +parameter val_gem1__rx_qbar_q1 = 32'h00000000; +parameter mask_gem1__rx_qbar_q1 = 32'h00000000; + +parameter gem1__rx_qbar_q2 = 32'hE000C484; +parameter val_gem1__rx_qbar_q2 = 32'h00000000; +parameter mask_gem1__rx_qbar_q2 = 32'h00000000; + +parameter gem1__rx_qbar_q3 = 32'hE000C488; +parameter val_gem1__rx_qbar_q3 = 32'h00000000; +parameter mask_gem1__rx_qbar_q3 = 32'h00000000; + +parameter gem1__rx_qbar_q4 = 32'hE000C48C; +parameter val_gem1__rx_qbar_q4 = 32'h00000000; +parameter mask_gem1__rx_qbar_q4 = 32'h00000000; + +parameter gem1__rx_qbar_q5 = 32'hE000C490; +parameter val_gem1__rx_qbar_q5 = 32'h00000000; +parameter mask_gem1__rx_qbar_q5 = 32'h00000000; + +parameter gem1__rx_qbar_q6 = 32'hE000C494; +parameter val_gem1__rx_qbar_q6 = 32'h00000000; +parameter mask_gem1__rx_qbar_q6 = 32'h00000000; + +parameter gem1__rx_qbar_q7 = 32'hE000C498; +parameter val_gem1__rx_qbar_q7 = 32'h00000000; +parameter mask_gem1__rx_qbar_q7 = 32'h00000000; + +parameter gem1__rx_bufsz_q1 = 32'hE000C4A0; +parameter val_gem1__rx_bufsz_q1 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q1 = 32'h00000000; + +parameter gem1__rx_bufsz_q2 = 32'hE000C4A4; +parameter val_gem1__rx_bufsz_q2 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q2 = 32'h00000000; + +parameter gem1__rx_bufsz_q3 = 32'hE000C4A8; +parameter val_gem1__rx_bufsz_q3 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q3 = 32'h00000000; + +parameter gem1__rx_bufsz_q4 = 32'hE000C4AC; +parameter val_gem1__rx_bufsz_q4 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q4 = 32'h00000000; + +parameter gem1__rx_bufsz_q5 = 32'hE000C4B0; +parameter val_gem1__rx_bufsz_q5 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q5 = 32'h00000000; + +parameter gem1__rx_bufsz_q6 = 32'hE000C4B4; +parameter val_gem1__rx_bufsz_q6 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q6 = 32'h00000000; + +parameter gem1__rx_bufsz_q7 = 32'hE000C4B8; +parameter val_gem1__rx_bufsz_q7 = 32'h00000000; +parameter mask_gem1__rx_bufsz_q7 = 32'h00000000; + +parameter gem1__screen_t1_r0 = 32'hE000C500; +parameter val_gem1__screen_t1_r0 = 32'h00000000; +parameter mask_gem1__screen_t1_r0 = 32'h00000000; + +parameter gem1__screen_t1_r1 = 32'hE000C504; +parameter val_gem1__screen_t1_r1 = 32'h00000000; +parameter mask_gem1__screen_t1_r1 = 32'h00000000; + +parameter gem1__screen_t1_r2 = 32'hE000C508; +parameter val_gem1__screen_t1_r2 = 32'h00000000; +parameter mask_gem1__screen_t1_r2 = 32'h00000000; + +parameter gem1__screen_t1_r3 = 32'hE000C50C; +parameter val_gem1__screen_t1_r3 = 32'h00000000; +parameter mask_gem1__screen_t1_r3 = 32'h00000000; + +parameter gem1__screen_t1_r4 = 32'hE000C510; +parameter val_gem1__screen_t1_r4 = 32'h00000000; +parameter mask_gem1__screen_t1_r4 = 32'h00000000; + +parameter gem1__screen_t1_r5 = 32'hE000C514; +parameter val_gem1__screen_t1_r5 = 32'h00000000; +parameter mask_gem1__screen_t1_r5 = 32'h00000000; + +parameter gem1__screen_t1_r6 = 32'hE000C518; +parameter val_gem1__screen_t1_r6 = 32'h00000000; +parameter mask_gem1__screen_t1_r6 = 32'h00000000; + +parameter gem1__screen_t1_r7 = 32'hE000C51C; +parameter val_gem1__screen_t1_r7 = 32'h00000000; +parameter mask_gem1__screen_t1_r7 = 32'h00000000; + +parameter gem1__screen_t1_r8 = 32'hE000C520; +parameter val_gem1__screen_t1_r8 = 32'h00000000; +parameter mask_gem1__screen_t1_r8 = 32'h00000000; + +parameter gem1__screen_t1_r9 = 32'hE000C524; +parameter val_gem1__screen_t1_r9 = 32'h00000000; +parameter mask_gem1__screen_t1_r9 = 32'h00000000; + +parameter gem1__screen_t1_r10 = 32'hE000C528; +parameter val_gem1__screen_t1_r10 = 32'h00000000; +parameter mask_gem1__screen_t1_r10 = 32'h00000000; + +parameter gem1__screen_t1_r11 = 32'hE000C52C; +parameter val_gem1__screen_t1_r11 = 32'h00000000; +parameter mask_gem1__screen_t1_r11 = 32'h00000000; + +parameter gem1__screen_t1_r12 = 32'hE000C530; +parameter val_gem1__screen_t1_r12 = 32'h00000000; +parameter mask_gem1__screen_t1_r12 = 32'h00000000; + +parameter gem1__screen_t1_r13 = 32'hE000C534; +parameter val_gem1__screen_t1_r13 = 32'h00000000; +parameter mask_gem1__screen_t1_r13 = 32'h00000000; + +parameter gem1__screen_t1_r14 = 32'hE000C538; +parameter val_gem1__screen_t1_r14 = 32'h00000000; +parameter mask_gem1__screen_t1_r14 = 32'h00000000; + +parameter gem1__screen_t1_r15 = 32'hE000C53C; +parameter val_gem1__screen_t1_r15 = 32'h00000000; +parameter mask_gem1__screen_t1_r15 = 32'h00000000; + +parameter gem1__screen_t2_r0 = 32'hE000C540; +parameter val_gem1__screen_t2_r0 = 32'h00000000; +parameter mask_gem1__screen_t2_r0 = 32'h00000000; + +parameter gem1__screen_t2_r1 = 32'hE000C544; +parameter val_gem1__screen_t2_r1 = 32'h00000000; +parameter mask_gem1__screen_t2_r1 = 32'h00000000; + +parameter gem1__screen_t2_r2 = 32'hE000C548; +parameter val_gem1__screen_t2_r2 = 32'h00000000; +parameter mask_gem1__screen_t2_r2 = 32'h00000000; + +parameter gem1__screen_t2_r3 = 32'hE000C54C; +parameter val_gem1__screen_t2_r3 = 32'h00000000; +parameter mask_gem1__screen_t2_r3 = 32'h00000000; + +parameter gem1__screen_t2_r4 = 32'hE000C550; +parameter val_gem1__screen_t2_r4 = 32'h00000000; +parameter mask_gem1__screen_t2_r4 = 32'h00000000; + +parameter gem1__screen_t2_r5 = 32'hE000C554; +parameter val_gem1__screen_t2_r5 = 32'h00000000; +parameter mask_gem1__screen_t2_r5 = 32'h00000000; + +parameter gem1__screen_t2_r6 = 32'hE000C558; +parameter val_gem1__screen_t2_r6 = 32'h00000000; +parameter mask_gem1__screen_t2_r6 = 32'h00000000; + +parameter gem1__screen_t2_r7 = 32'hE000C55C; +parameter val_gem1__screen_t2_r7 = 32'h00000000; +parameter mask_gem1__screen_t2_r7 = 32'h00000000; + +parameter gem1__screen_t2_r8 = 32'hE000C560; +parameter val_gem1__screen_t2_r8 = 32'h00000000; +parameter mask_gem1__screen_t2_r8 = 32'h00000000; + +parameter gem1__screen_t2_r9 = 32'hE000C564; +parameter val_gem1__screen_t2_r9 = 32'h00000000; +parameter mask_gem1__screen_t2_r9 = 32'h00000000; + +parameter gem1__screen_t2_r10 = 32'hE000C568; +parameter val_gem1__screen_t2_r10 = 32'h00000000; +parameter mask_gem1__screen_t2_r10 = 32'h00000000; + +parameter gem1__screen_t2_r11 = 32'hE000C56C; +parameter val_gem1__screen_t2_r11 = 32'h00000000; +parameter mask_gem1__screen_t2_r11 = 32'h00000000; + +parameter gem1__screen_t2_r12 = 32'hE000C570; +parameter val_gem1__screen_t2_r12 = 32'h00000000; +parameter mask_gem1__screen_t2_r12 = 32'h00000000; + +parameter gem1__screen_t2_r13 = 32'hE000C574; +parameter val_gem1__screen_t2_r13 = 32'h00000000; +parameter mask_gem1__screen_t2_r13 = 32'h00000000; + +parameter gem1__screen_t2_r14 = 32'hE000C578; +parameter val_gem1__screen_t2_r14 = 32'h00000000; +parameter mask_gem1__screen_t2_r14 = 32'h00000000; + +parameter gem1__screen_t2_r15 = 32'hE000C57C; +parameter val_gem1__screen_t2_r15 = 32'h00000000; +parameter mask_gem1__screen_t2_r15 = 32'h00000000; + +parameter gem1__intr_en_pq1 = 32'hE000C600; +parameter val_gem1__intr_en_pq1 = 32'h00000000; +parameter mask_gem1__intr_en_pq1 = 32'h00000000; + +parameter gem1__intr_en_pq2 = 32'hE000C604; +parameter val_gem1__intr_en_pq2 = 32'h00000000; +parameter mask_gem1__intr_en_pq2 = 32'h00000000; + +parameter gem1__intr_en_pq3 = 32'hE000C608; +parameter val_gem1__intr_en_pq3 = 32'h00000000; +parameter mask_gem1__intr_en_pq3 = 32'h00000000; + +parameter gem1__intr_en_pq4 = 32'hE000C60C; +parameter val_gem1__intr_en_pq4 = 32'h00000000; +parameter mask_gem1__intr_en_pq4 = 32'h00000000; + +parameter gem1__intr_en_pq5 = 32'hE000C610; +parameter val_gem1__intr_en_pq5 = 32'h00000000; +parameter mask_gem1__intr_en_pq5 = 32'h00000000; + +parameter gem1__intr_en_pq6 = 32'hE000C614; +parameter val_gem1__intr_en_pq6 = 32'h00000000; +parameter mask_gem1__intr_en_pq6 = 32'h00000000; + +parameter gem1__intr_en_pq7 = 32'hE000C618; +parameter val_gem1__intr_en_pq7 = 32'h00000000; +parameter mask_gem1__intr_en_pq7 = 32'h00000000; + +parameter gem1__intr_dis_pq1 = 32'hE000C620; +parameter val_gem1__intr_dis_pq1 = 32'h00000000; +parameter mask_gem1__intr_dis_pq1 = 32'h00000000; + +parameter gem1__intr_dis_pq2 = 32'hE000C624; +parameter val_gem1__intr_dis_pq2 = 32'h00000000; +parameter mask_gem1__intr_dis_pq2 = 32'h00000000; + +parameter gem1__intr_dis_pq3 = 32'hE000C628; +parameter val_gem1__intr_dis_pq3 = 32'h00000000; +parameter mask_gem1__intr_dis_pq3 = 32'h00000000; + +parameter gem1__intr_dis_pq4 = 32'hE000C62C; +parameter val_gem1__intr_dis_pq4 = 32'h00000000; +parameter mask_gem1__intr_dis_pq4 = 32'h00000000; + +parameter gem1__intr_dis_pq5 = 32'hE000C630; +parameter val_gem1__intr_dis_pq5 = 32'h00000000; +parameter mask_gem1__intr_dis_pq5 = 32'h00000000; + +parameter gem1__intr_dis_pq6 = 32'hE000C634; +parameter val_gem1__intr_dis_pq6 = 32'h00000000; +parameter mask_gem1__intr_dis_pq6 = 32'h00000000; + +parameter gem1__intr_dis_pq7 = 32'hE000C638; +parameter val_gem1__intr_dis_pq7 = 32'h00000000; +parameter mask_gem1__intr_dis_pq7 = 32'h00000000; + +parameter gem1__intr_mask_pq1 = 32'hE000C640; +parameter val_gem1__intr_mask_pq1 = 32'h00000000; +parameter mask_gem1__intr_mask_pq1 = 32'h00000000; + +parameter gem1__intr_mask_pq2 = 32'hE000C644; +parameter val_gem1__intr_mask_pq2 = 32'h00000000; +parameter mask_gem1__intr_mask_pq2 = 32'h00000000; + +parameter gem1__intr_mask_pq3 = 32'hE000C648; +parameter val_gem1__intr_mask_pq3 = 32'h00000000; +parameter mask_gem1__intr_mask_pq3 = 32'h00000000; + +parameter gem1__intr_mask_pq4 = 32'hE000C64C; +parameter val_gem1__intr_mask_pq4 = 32'h00000000; +parameter mask_gem1__intr_mask_pq4 = 32'h00000000; + +parameter gem1__intr_mask_pq5 = 32'hE000C650; +parameter val_gem1__intr_mask_pq5 = 32'h00000000; +parameter mask_gem1__intr_mask_pq5 = 32'h00000000; + +parameter gem1__intr_mask_pq6 = 32'hE000C654; +parameter val_gem1__intr_mask_pq6 = 32'h00000000; +parameter mask_gem1__intr_mask_pq6 = 32'h00000000; + +parameter gem1__intr_mask_pq7 = 32'hE000C658; +parameter val_gem1__intr_mask_pq7 = 32'h00000000; +parameter mask_gem1__intr_mask_pq7 = 32'h00000000; + + +// ************************************************************ +// Module gpio gpio +// doc version: +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gpio__MASK_DATA_0_LSW = 32'hE000A000; +parameter val_gpio__MASK_DATA_0_LSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_0_LSW = 32'hFFFF0000; + +parameter gpio__MASK_DATA_0_MSW = 32'hE000A004; +parameter val_gpio__MASK_DATA_0_MSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_0_MSW = 32'hFFFF0000; + +parameter gpio__MASK_DATA_1_LSW = 32'hE000A008; +parameter val_gpio__MASK_DATA_1_LSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_1_LSW = 32'hFFFF0000; + +parameter gpio__MASK_DATA_1_MSW = 32'hE000A00C; +parameter val_gpio__MASK_DATA_1_MSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_1_MSW = 32'h003FFFC0; + +parameter gpio__MASK_DATA_2_LSW = 32'hE000A010; +parameter val_gpio__MASK_DATA_2_LSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_2_LSW = 32'hFFFFFFFF; + +parameter gpio__MASK_DATA_2_MSW = 32'hE000A014; +parameter val_gpio__MASK_DATA_2_MSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_2_MSW = 32'hFFFFFFFF; + +parameter gpio__MASK_DATA_3_LSW = 32'hE000A018; +parameter val_gpio__MASK_DATA_3_LSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_3_LSW = 32'hFFFFFFFF; + +parameter gpio__MASK_DATA_3_MSW = 32'hE000A01C; +parameter val_gpio__MASK_DATA_3_MSW = 32'h00000000; +parameter mask_gpio__MASK_DATA_3_MSW = 32'hFFFFFFFF; + +parameter gpio__DATA_0 = 32'hE000A040; +parameter val_gpio__DATA_0 = 32'h00000000; +parameter mask_gpio__DATA_0 = 32'h00000000; + +parameter gpio__DATA_1 = 32'hE000A044; +parameter val_gpio__DATA_1 = 32'h00000000; +parameter mask_gpio__DATA_1 = 32'h00000000; + +parameter gpio__DATA_2 = 32'hE000A048; +parameter val_gpio__DATA_2 = 32'h00000000; +parameter mask_gpio__DATA_2 = 32'hFFFFFFFF; + +parameter gpio__DATA_3 = 32'hE000A04C; +parameter val_gpio__DATA_3 = 32'h00000000; +parameter mask_gpio__DATA_3 = 32'hFFFFFFFF; + +parameter gpio__DATA_0_RO = 32'hE000A060; +parameter val_gpio__DATA_0_RO = 32'h00000000; +parameter mask_gpio__DATA_0_RO = 32'h00000000; + +parameter gpio__DATA_1_RO = 32'hE000A064; +parameter val_gpio__DATA_1_RO = 32'h00000000; +parameter mask_gpio__DATA_1_RO = 32'h00000000; + +parameter gpio__DATA_2_RO = 32'hE000A068; +parameter val_gpio__DATA_2_RO = 32'h00000000; +parameter mask_gpio__DATA_2_RO = 32'hFFFFFFFF; + +parameter gpio__DATA_3_RO = 32'hE000A06C; +parameter val_gpio__DATA_3_RO = 32'h00000000; +parameter mask_gpio__DATA_3_RO = 32'hFFFFFFFF; + +parameter gpio__BYPM_0 = 32'hE000A200; +parameter val_gpio__BYPM_0 = 32'h00000000; +parameter mask_gpio__BYPM_0 = 32'hFFFFFFFF; + +parameter gpio__DIRM_0 = 32'hE000A204; +parameter val_gpio__DIRM_0 = 32'h00000000; +parameter mask_gpio__DIRM_0 = 32'hFFFFFFFF; + +parameter gpio__OEN_0 = 32'hE000A208; +parameter val_gpio__OEN_0 = 32'h00000000; +parameter mask_gpio__OEN_0 = 32'hFFFFFFFF; + +parameter gpio__INT_MASK_0 = 32'hE000A20C; +parameter val_gpio__INT_MASK_0 = 32'h00000000; +parameter mask_gpio__INT_MASK_0 = 32'hFFFFFFFF; + +parameter gpio__INT_EN_0 = 32'hE000A210; +parameter val_gpio__INT_EN_0 = 32'h00000000; +parameter mask_gpio__INT_EN_0 = 32'hFFFFFFFF; + +parameter gpio__INT_DIS_0 = 32'hE000A214; +parameter val_gpio__INT_DIS_0 = 32'h00000000; +parameter mask_gpio__INT_DIS_0 = 32'hFFFFFFFF; + +parameter gpio__INT_STAT_0 = 32'hE000A218; +parameter val_gpio__INT_STAT_0 = 32'h00000000; +parameter mask_gpio__INT_STAT_0 = 32'hFFFFFFFF; + +parameter gpio__INT_TYPE_0 = 32'hE000A21C; +parameter val_gpio__INT_TYPE_0 = 32'hFFFFFFFF; +parameter mask_gpio__INT_TYPE_0 = 32'hFFFFFFFF; + +parameter gpio__INT_POLARITY_0 = 32'hE000A220; +parameter val_gpio__INT_POLARITY_0 = 32'h00000000; +parameter mask_gpio__INT_POLARITY_0 = 32'hFFFFFFFF; + +parameter gpio__INT_ANY_0 = 32'hE000A224; +parameter val_gpio__INT_ANY_0 = 32'h00000000; +parameter mask_gpio__INT_ANY_0 = 32'hFFFFFFFF; + +parameter gpio__BYPM_1 = 32'hE000A240; +parameter val_gpio__BYPM_1 = 32'h00000000; +parameter mask_gpio__BYPM_1 = 32'h003FFFFF; + +parameter gpio__DIRM_1 = 32'hE000A244; +parameter val_gpio__DIRM_1 = 32'h00000000; +parameter mask_gpio__DIRM_1 = 32'h003FFFFF; + +parameter gpio__OEN_1 = 32'hE000A248; +parameter val_gpio__OEN_1 = 32'h00000000; +parameter mask_gpio__OEN_1 = 32'h003FFFFF; + +parameter gpio__INT_MASK_1 = 32'hE000A24C; +parameter val_gpio__INT_MASK_1 = 32'h00000000; +parameter mask_gpio__INT_MASK_1 = 32'h003FFFFF; + +parameter gpio__INT_EN_1 = 32'hE000A250; +parameter val_gpio__INT_EN_1 = 32'h00000000; +parameter mask_gpio__INT_EN_1 = 32'h003FFFFF; + +parameter gpio__INT_DIS_1 = 32'hE000A254; +parameter val_gpio__INT_DIS_1 = 32'h00000000; +parameter mask_gpio__INT_DIS_1 = 32'h003FFFFF; + +parameter gpio__INT_STAT_1 = 32'hE000A258; +parameter val_gpio__INT_STAT_1 = 32'h00000000; +parameter mask_gpio__INT_STAT_1 = 32'h003FFFFF; + +parameter gpio__INT_TYPE_1 = 32'hE000A25C; +parameter val_gpio__INT_TYPE_1 = 32'h003FFFFF; +parameter mask_gpio__INT_TYPE_1 = 32'h003FFFFF; + +parameter gpio__INT_POLARITY_1 = 32'hE000A260; +parameter val_gpio__INT_POLARITY_1 = 32'h00000000; +parameter mask_gpio__INT_POLARITY_1 = 32'h003FFFFF; + +parameter gpio__INT_ANY_1 = 32'hE000A264; +parameter val_gpio__INT_ANY_1 = 32'h00000000; +parameter mask_gpio__INT_ANY_1 = 32'h003FFFFF; + +parameter gpio__BYPM_2 = 32'hE000A280; +parameter val_gpio__BYPM_2 = 32'h00000000; +parameter mask_gpio__BYPM_2 = 32'hFFFFFFFF; + +parameter gpio__DIRM_2 = 32'hE000A284; +parameter val_gpio__DIRM_2 = 32'h00000000; +parameter mask_gpio__DIRM_2 = 32'hFFFFFFFF; + +parameter gpio__OEN_2 = 32'hE000A288; +parameter val_gpio__OEN_2 = 32'h00000000; +parameter mask_gpio__OEN_2 = 32'hFFFFFFFF; + +parameter gpio__INT_MASK_2 = 32'hE000A28C; +parameter val_gpio__INT_MASK_2 = 32'h00000000; +parameter mask_gpio__INT_MASK_2 = 32'hFFFFFFFF; + +parameter gpio__INT_EN_2 = 32'hE000A290; +parameter val_gpio__INT_EN_2 = 32'h00000000; +parameter mask_gpio__INT_EN_2 = 32'hFFFFFFFF; + +parameter gpio__INT_DIS_2 = 32'hE000A294; +parameter val_gpio__INT_DIS_2 = 32'h00000000; +parameter mask_gpio__INT_DIS_2 = 32'hFFFFFFFF; + +parameter gpio__INT_STAT_2 = 32'hE000A298; +parameter val_gpio__INT_STAT_2 = 32'h00000000; +parameter mask_gpio__INT_STAT_2 = 32'hFFFFFFFF; + +parameter gpio__INT_TYPE_2 = 32'hE000A29C; +parameter val_gpio__INT_TYPE_2 = 32'hFFFFFFFF; +parameter mask_gpio__INT_TYPE_2 = 32'hFFFFFFFF; + +parameter gpio__INT_POLARITY_2 = 32'hE000A2A0; +parameter val_gpio__INT_POLARITY_2 = 32'h00000000; +parameter mask_gpio__INT_POLARITY_2 = 32'hFFFFFFFF; + +parameter gpio__INT_ANY_2 = 32'hE000A2A4; +parameter val_gpio__INT_ANY_2 = 32'h00000000; +parameter mask_gpio__INT_ANY_2 = 32'hFFFFFFFF; + +parameter gpio__BYPM_3 = 32'hE000A2C0; +parameter val_gpio__BYPM_3 = 32'h00000000; +parameter mask_gpio__BYPM_3 = 32'hFFFFFFFF; + +parameter gpio__DIRM_3 = 32'hE000A2C4; +parameter val_gpio__DIRM_3 = 32'h00000000; +parameter mask_gpio__DIRM_3 = 32'hFFFFFFFF; + +parameter gpio__OEN_3 = 32'hE000A2C8; +parameter val_gpio__OEN_3 = 32'h00000000; +parameter mask_gpio__OEN_3 = 32'hFFFFFFFF; + +parameter gpio__INT_MASK_3 = 32'hE000A2CC; +parameter val_gpio__INT_MASK_3 = 32'h00000000; +parameter mask_gpio__INT_MASK_3 = 32'hFFFFFFFF; + +parameter gpio__INT_EN_3 = 32'hE000A2D0; +parameter val_gpio__INT_EN_3 = 32'h00000000; +parameter mask_gpio__INT_EN_3 = 32'hFFFFFFFF; + +parameter gpio__INT_DIS_3 = 32'hE000A2D4; +parameter val_gpio__INT_DIS_3 = 32'h00000000; +parameter mask_gpio__INT_DIS_3 = 32'hFFFFFFFF; + +parameter gpio__INT_STAT_3 = 32'hE000A2D8; +parameter val_gpio__INT_STAT_3 = 32'h00000000; +parameter mask_gpio__INT_STAT_3 = 32'hFFFFFFFF; + +parameter gpio__INT_TYPE_3 = 32'hE000A2DC; +parameter val_gpio__INT_TYPE_3 = 32'hFFFFFFFF; +parameter mask_gpio__INT_TYPE_3 = 32'hFFFFFFFF; + +parameter gpio__INT_POLARITY_3 = 32'hE000A2E0; +parameter val_gpio__INT_POLARITY_3 = 32'h00000000; +parameter mask_gpio__INT_POLARITY_3 = 32'hFFFFFFFF; + +parameter gpio__INT_ANY_3 = 32'hE000A2E4; +parameter val_gpio__INT_ANY_3 = 32'h00000000; +parameter mask_gpio__INT_ANY_3 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module gpv_iou_switch gpv_iou_switch +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gpv_iou_switch__Remap = 32'hE0200000; +parameter val_gpv_iou_switch__Remap = 32'h00000000; +parameter mask_gpv_iou_switch__Remap = 32'h000000FF; + +parameter gpv_iou_switch__security2_sdio0 = 32'hE0200008; +parameter val_gpv_iou_switch__security2_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__security2_sdio0 = 32'h00000001; + +parameter gpv_iou_switch__security3_sdio1 = 32'hE020000C; +parameter val_gpv_iou_switch__security3_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__security3_sdio1 = 32'h00000001; + +parameter gpv_iou_switch__security4_qspi = 32'hE0200010; +parameter val_gpv_iou_switch__security4_qspi = 32'h00000000; +parameter mask_gpv_iou_switch__security4_qspi = 32'h00000001; + +parameter gpv_iou_switch__security5_miou = 32'hE0200014; +parameter val_gpv_iou_switch__security5_miou = 32'h00000000; +parameter mask_gpv_iou_switch__security5_miou = 32'h00000001; + +parameter gpv_iou_switch__security6_apb_slaves = 32'hE0200018; +parameter val_gpv_iou_switch__security6_apb_slaves = 32'h00000000; +parameter mask_gpv_iou_switch__security6_apb_slaves = 32'h00007FFF; + +parameter gpv_iou_switch__security7_smc = 32'hE020001C; +parameter val_gpv_iou_switch__security7_smc = 32'h00000000; +parameter mask_gpv_iou_switch__security7_smc = 32'h00000001; + +parameter gpv_iou_switch__peripheral_id4 = 32'hE0201FD0; +parameter val_gpv_iou_switch__peripheral_id4 = 32'h00000004; +parameter mask_gpv_iou_switch__peripheral_id4 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id5 = 32'hE0201FD4; +parameter val_gpv_iou_switch__peripheral_id5 = 32'h00000000; +parameter mask_gpv_iou_switch__peripheral_id5 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id6 = 32'hE0201FD8; +parameter val_gpv_iou_switch__peripheral_id6 = 32'h00000000; +parameter mask_gpv_iou_switch__peripheral_id6 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id7 = 32'hE0201FDC; +parameter val_gpv_iou_switch__peripheral_id7 = 32'h00000000; +parameter mask_gpv_iou_switch__peripheral_id7 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id0 = 32'hE0201FE0; +parameter val_gpv_iou_switch__peripheral_id0 = 32'h00000001; +parameter mask_gpv_iou_switch__peripheral_id0 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id1 = 32'hE0201FE4; +parameter val_gpv_iou_switch__peripheral_id1 = 32'h000000B3; +parameter mask_gpv_iou_switch__peripheral_id1 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id2 = 32'hE0201FE8; +parameter val_gpv_iou_switch__peripheral_id2 = 32'h0000005B; +parameter mask_gpv_iou_switch__peripheral_id2 = 32'h000000FF; + +parameter gpv_iou_switch__peripheral_id3 = 32'hE0201FEC; +parameter val_gpv_iou_switch__peripheral_id3 = 32'h00000000; +parameter mask_gpv_iou_switch__peripheral_id3 = 32'h000000FF; + +parameter gpv_iou_switch__component_id0 = 32'hE0201FF0; +parameter val_gpv_iou_switch__component_id0 = 32'h0000000D; +parameter mask_gpv_iou_switch__component_id0 = 32'h000000FF; + +parameter gpv_iou_switch__component_id1 = 32'hE0201FF4; +parameter val_gpv_iou_switch__component_id1 = 32'h000000F0; +parameter mask_gpv_iou_switch__component_id1 = 32'h000000FF; + +parameter gpv_iou_switch__component_id2 = 32'hE0201FF8; +parameter val_gpv_iou_switch__component_id2 = 32'h00000005; +parameter mask_gpv_iou_switch__component_id2 = 32'h000000FF; + +parameter gpv_iou_switch__component_id3 = 32'hE0201FFC; +parameter val_gpv_iou_switch__component_id3 = 32'h000000B1; +parameter mask_gpv_iou_switch__component_id3 = 32'h000000FF; + +parameter gpv_iou_switch__fn_mod_bm_iss_sdio0 = 32'hE0202008; +parameter val_gpv_iou_switch__fn_mod_bm_iss_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_bm_iss_sdio0 = 32'h00000003; + +parameter gpv_iou_switch__ahb_cntl_sdio0 = 32'hE0202044; +parameter val_gpv_iou_switch__ahb_cntl_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__ahb_cntl_sdio0 = 32'h00000000; + +parameter gpv_iou_switch__fn_mod_bm_iss_sdio1 = 32'hE0203008; +parameter val_gpv_iou_switch__fn_mod_bm_iss_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_bm_iss_sdio1 = 32'h00000003; + +parameter gpv_iou_switch__ahb_cntl_sdio1 = 32'hE0203044; +parameter val_gpv_iou_switch__ahb_cntl_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__ahb_cntl_sdio1 = 32'h00000000; + +parameter gpv_iou_switch__fn_mod_bm_iss_qspi = 32'hE0204008; +parameter val_gpv_iou_switch__fn_mod_bm_iss_qspi = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_bm_iss_qspi = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_bm_iss_miou = 32'hE0205008; +parameter val_gpv_iou_switch__fn_mod_bm_iss_miou = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_bm_iss_miou = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_bm_iss_smc = 32'hE0207008; +parameter val_gpv_iou_switch__fn_mod_bm_iss_smc = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_bm_iss_smc = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_ahb_gem0 = 32'hE0242028; +parameter val_gpv_iou_switch__fn_mod_ahb_gem0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_ahb_gem0 = 32'h00000007; + +parameter gpv_iou_switch__read_qos_gem0 = 32'hE0242100; +parameter val_gpv_iou_switch__read_qos_gem0 = 32'h00000000; +parameter mask_gpv_iou_switch__read_qos_gem0 = 32'h0000000F; + +parameter gpv_iou_switch__write_qos_gem0 = 32'hE0242104; +parameter val_gpv_iou_switch__write_qos_gem0 = 32'h00000000; +parameter mask_gpv_iou_switch__write_qos_gem0 = 32'h0000000F; + +parameter gpv_iou_switch__fn_mod_iss_gem0 = 32'hE0242108; +parameter val_gpv_iou_switch__fn_mod_iss_gem0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_gem0 = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_ahb_gem1 = 32'hE0243028; +parameter val_gpv_iou_switch__fn_mod_ahb_gem1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_ahb_gem1 = 32'h00000007; + +parameter gpv_iou_switch__read_qos_gem1 = 32'hE0243100; +parameter val_gpv_iou_switch__read_qos_gem1 = 32'h00000000; +parameter mask_gpv_iou_switch__read_qos_gem1 = 32'h0000000F; + +parameter gpv_iou_switch__write_qos_gem1 = 32'hE0243104; +parameter val_gpv_iou_switch__write_qos_gem1 = 32'h00000000; +parameter mask_gpv_iou_switch__write_qos_gem1 = 32'h0000000F; + +parameter gpv_iou_switch__fn_mod_iss_gem1 = 32'hE0243108; +parameter val_gpv_iou_switch__fn_mod_iss_gem1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_gem1 = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_ahb_usb0 = 32'hE0244028; +parameter val_gpv_iou_switch__fn_mod_ahb_usb0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_ahb_usb0 = 32'h00000007; + +parameter gpv_iou_switch__read_qos_usb0 = 32'hE0244100; +parameter val_gpv_iou_switch__read_qos_usb0 = 32'h00000000; +parameter mask_gpv_iou_switch__read_qos_usb0 = 32'h0000000F; + +parameter gpv_iou_switch__write_qos_usb0 = 32'hE0244104; +parameter val_gpv_iou_switch__write_qos_usb0 = 32'h00000000; +parameter mask_gpv_iou_switch__write_qos_usb0 = 32'h0000000F; + +parameter gpv_iou_switch__fn_mod_iss_usb0 = 32'hE0244108; +parameter val_gpv_iou_switch__fn_mod_iss_usb0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_usb0 = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_ahb_usb1 = 32'hE0245028; +parameter val_gpv_iou_switch__fn_mod_ahb_usb1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_ahb_usb1 = 32'h00000007; + +parameter gpv_iou_switch__read_qos_usb1 = 32'hE0245100; +parameter val_gpv_iou_switch__read_qos_usb1 = 32'h00000000; +parameter mask_gpv_iou_switch__read_qos_usb1 = 32'h0000000F; + +parameter gpv_iou_switch__write_qos_usb1 = 32'hE0245104; +parameter val_gpv_iou_switch__write_qos_usb1 = 32'h00000000; +parameter mask_gpv_iou_switch__write_qos_usb1 = 32'h0000000F; + +parameter gpv_iou_switch__fn_mod_iss_usb1 = 32'hE0245108; +parameter val_gpv_iou_switch__fn_mod_iss_usb1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_usb1 = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_ahb_sdio0 = 32'hE0246028; +parameter val_gpv_iou_switch__fn_mod_ahb_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_ahb_sdio0 = 32'h00000007; + +parameter gpv_iou_switch__read_qos_sdio0 = 32'hE0246100; +parameter val_gpv_iou_switch__read_qos_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__read_qos_sdio0 = 32'h0000000F; + +parameter gpv_iou_switch__write_qos_sdio0 = 32'hE0246104; +parameter val_gpv_iou_switch__write_qos_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__write_qos_sdio0 = 32'h0000000F; + +parameter gpv_iou_switch__fn_mod_iss_sdio0 = 32'hE0246108; +parameter val_gpv_iou_switch__fn_mod_iss_sdio0 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_sdio0 = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_ahb_sdio1 = 32'hE0247028; +parameter val_gpv_iou_switch__fn_mod_ahb_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_ahb_sdio1 = 32'h00000007; + +parameter gpv_iou_switch__read_qos_sdio1 = 32'hE0247100; +parameter val_gpv_iou_switch__read_qos_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__read_qos_sdio1 = 32'h0000000F; + +parameter gpv_iou_switch__write_qos_sdio1 = 32'hE0247104; +parameter val_gpv_iou_switch__write_qos_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__write_qos_sdio1 = 32'h0000000F; + +parameter gpv_iou_switch__fn_mod_iss_sdio1 = 32'hE0247108; +parameter val_gpv_iou_switch__fn_mod_iss_sdio1 = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_sdio1 = 32'h00000003; + +parameter gpv_iou_switch__fn_mod_iss_siou = 32'hE0249108; +parameter val_gpv_iou_switch__fn_mod_iss_siou = 32'h00000000; +parameter mask_gpv_iou_switch__fn_mod_iss_siou = 32'h00000003; + + +// ************************************************************ +// Module gpv_qos301_cpu qos301 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gpv_qos301_cpu__qos_cntl = 32'hF894610C; +parameter val_gpv_qos301_cpu__qos_cntl = 32'h00000000; +parameter mask_gpv_qos301_cpu__qos_cntl = 32'h000000FF; + +parameter gpv_qos301_cpu__max_ot = 32'hF8946110; +parameter val_gpv_qos301_cpu__max_ot = 32'h00000000; +parameter mask_gpv_qos301_cpu__max_ot = 32'h3FFF3FFF; + +parameter gpv_qos301_cpu__max_comb_ot = 32'hF8946114; +parameter val_gpv_qos301_cpu__max_comb_ot = 32'h00000000; +parameter mask_gpv_qos301_cpu__max_comb_ot = 32'h00007FFF; + +parameter gpv_qos301_cpu__aw_p = 32'hF8946118; +parameter val_gpv_qos301_cpu__aw_p = 32'h00000000; +parameter mask_gpv_qos301_cpu__aw_p = 32'hFF000000; + +parameter gpv_qos301_cpu__aw_b = 32'hF894611C; +parameter val_gpv_qos301_cpu__aw_b = 32'h00000000; +parameter mask_gpv_qos301_cpu__aw_b = 32'h0000FFFF; + +parameter gpv_qos301_cpu__aw_r = 32'hF8946120; +parameter val_gpv_qos301_cpu__aw_r = 32'h00000000; +parameter mask_gpv_qos301_cpu__aw_r = 32'hFFF00000; + +parameter gpv_qos301_cpu__ar_p = 32'hF8946124; +parameter val_gpv_qos301_cpu__ar_p = 32'h00000000; +parameter mask_gpv_qos301_cpu__ar_p = 32'hFF000000; + +parameter gpv_qos301_cpu__ar_b = 32'hF8946128; +parameter val_gpv_qos301_cpu__ar_b = 32'h00000000; +parameter mask_gpv_qos301_cpu__ar_b = 32'h0000FFFF; + +parameter gpv_qos301_cpu__ar_r = 32'hF894612C; +parameter val_gpv_qos301_cpu__ar_r = 32'h00000000; +parameter mask_gpv_qos301_cpu__ar_r = 32'hFFF00000; + + +// ************************************************************ +// Module gpv_qos301_dmac qos301 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gpv_qos301_dmac__qos_cntl = 32'hF894710C; +parameter val_gpv_qos301_dmac__qos_cntl = 32'h00000000; +parameter mask_gpv_qos301_dmac__qos_cntl = 32'h000000FF; + +parameter gpv_qos301_dmac__max_ot = 32'hF8947110; +parameter val_gpv_qos301_dmac__max_ot = 32'h00000000; +parameter mask_gpv_qos301_dmac__max_ot = 32'h3FFF3FFF; + +parameter gpv_qos301_dmac__max_comb_ot = 32'hF8947114; +parameter val_gpv_qos301_dmac__max_comb_ot = 32'h00000000; +parameter mask_gpv_qos301_dmac__max_comb_ot = 32'h00007FFF; + +parameter gpv_qos301_dmac__aw_p = 32'hF8947118; +parameter val_gpv_qos301_dmac__aw_p = 32'h00000000; +parameter mask_gpv_qos301_dmac__aw_p = 32'hFF000000; + +parameter gpv_qos301_dmac__aw_b = 32'hF894711C; +parameter val_gpv_qos301_dmac__aw_b = 32'h00000000; +parameter mask_gpv_qos301_dmac__aw_b = 32'h0000FFFF; + +parameter gpv_qos301_dmac__aw_r = 32'hF8947120; +parameter val_gpv_qos301_dmac__aw_r = 32'h00000000; +parameter mask_gpv_qos301_dmac__aw_r = 32'hFFF00000; + +parameter gpv_qos301_dmac__ar_p = 32'hF8947124; +parameter val_gpv_qos301_dmac__ar_p = 32'h00000000; +parameter mask_gpv_qos301_dmac__ar_p = 32'hFF000000; + +parameter gpv_qos301_dmac__ar_b = 32'hF8947128; +parameter val_gpv_qos301_dmac__ar_b = 32'h00000000; +parameter mask_gpv_qos301_dmac__ar_b = 32'h0000FFFF; + +parameter gpv_qos301_dmac__ar_r = 32'hF894712C; +parameter val_gpv_qos301_dmac__ar_r = 32'h00000000; +parameter mask_gpv_qos301_dmac__ar_r = 32'hFFF00000; + + +// ************************************************************ +// Module gpv_qos301_iou qos301 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gpv_qos301_iou__qos_cntl = 32'hF894810C; +parameter val_gpv_qos301_iou__qos_cntl = 32'h00000000; +parameter mask_gpv_qos301_iou__qos_cntl = 32'h000000FF; + +parameter gpv_qos301_iou__max_ot = 32'hF8948110; +parameter val_gpv_qos301_iou__max_ot = 32'h00000000; +parameter mask_gpv_qos301_iou__max_ot = 32'h3FFF3FFF; + +parameter gpv_qos301_iou__max_comb_ot = 32'hF8948114; +parameter val_gpv_qos301_iou__max_comb_ot = 32'h00000000; +parameter mask_gpv_qos301_iou__max_comb_ot = 32'h00007FFF; + +parameter gpv_qos301_iou__aw_p = 32'hF8948118; +parameter val_gpv_qos301_iou__aw_p = 32'h00000000; +parameter mask_gpv_qos301_iou__aw_p = 32'hFF000000; + +parameter gpv_qos301_iou__aw_b = 32'hF894811C; +parameter val_gpv_qos301_iou__aw_b = 32'h00000000; +parameter mask_gpv_qos301_iou__aw_b = 32'h0000FFFF; + +parameter gpv_qos301_iou__aw_r = 32'hF8948120; +parameter val_gpv_qos301_iou__aw_r = 32'h00000000; +parameter mask_gpv_qos301_iou__aw_r = 32'hFFF00000; + +parameter gpv_qos301_iou__ar_p = 32'hF8948124; +parameter val_gpv_qos301_iou__ar_p = 32'h00000000; +parameter mask_gpv_qos301_iou__ar_p = 32'hFF000000; + +parameter gpv_qos301_iou__ar_b = 32'hF8948128; +parameter val_gpv_qos301_iou__ar_b = 32'h00000000; +parameter mask_gpv_qos301_iou__ar_b = 32'h0000FFFF; + +parameter gpv_qos301_iou__ar_r = 32'hF894812C; +parameter val_gpv_qos301_iou__ar_r = 32'h00000000; +parameter mask_gpv_qos301_iou__ar_r = 32'hFFF00000; + + +// ************************************************************ +// Module gpv_trustzone nic301_addr_region_ctrl_registers +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter gpv_trustzone__Remap = 32'hF8900000; +parameter val_gpv_trustzone__Remap = 32'h00000000; +parameter mask_gpv_trustzone__Remap = 32'h000000C0; + +parameter gpv_trustzone__security_fssw_s0 = 32'hF890001C; +parameter val_gpv_trustzone__security_fssw_s0 = 32'h00000000; +parameter mask_gpv_trustzone__security_fssw_s0 = 32'h00000001; + +parameter gpv_trustzone__security_fssw_s1 = 32'hF8900020; +parameter val_gpv_trustzone__security_fssw_s1 = 32'h00000000; +parameter mask_gpv_trustzone__security_fssw_s1 = 32'h00000001; + +parameter gpv_trustzone__security_apb = 32'hF8900028; +parameter val_gpv_trustzone__security_apb = 32'h00000000; +parameter mask_gpv_trustzone__security_apb = 32'h0000003F; + + +// ************************************************************ +// Module i2c0 IIC +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter i2c0__Control_reg0 = 32'hE0004000; +parameter val_i2c0__Control_reg0 = 32'h00000000; +parameter mask_i2c0__Control_reg0 = 32'h0000FFFF; + +parameter i2c0__Status_reg0 = 32'hE0004004; +parameter val_i2c0__Status_reg0 = 32'h00000000; +parameter mask_i2c0__Status_reg0 = 32'h0000FFFF; + +parameter i2c0__I2C_address_reg0 = 32'hE0004008; +parameter val_i2c0__I2C_address_reg0 = 32'h00000000; +parameter mask_i2c0__I2C_address_reg0 = 32'h0000FFFF; + +parameter i2c0__I2C_data_reg0 = 32'hE000400C; +parameter val_i2c0__I2C_data_reg0 = 32'h00000000; +parameter mask_i2c0__I2C_data_reg0 = 32'h0000FFFF; + +parameter i2c0__Interrupt_status_reg0 = 32'hE0004010; +parameter val_i2c0__Interrupt_status_reg0 = 32'h00000000; +parameter mask_i2c0__Interrupt_status_reg0 = 32'h0000FFFF; + +parameter i2c0__Transfer_size_reg0 = 32'hE0004014; +parameter val_i2c0__Transfer_size_reg0 = 32'h00000000; +parameter mask_i2c0__Transfer_size_reg0 = 32'h000000FF; + +parameter i2c0__Slave_mon_pause_reg0 = 32'hE0004018; +parameter val_i2c0__Slave_mon_pause_reg0 = 32'h00000000; +parameter mask_i2c0__Slave_mon_pause_reg0 = 32'h000000FF; + +parameter i2c0__Time_out_reg0 = 32'hE000401C; +parameter val_i2c0__Time_out_reg0 = 32'h0000001F; +parameter mask_i2c0__Time_out_reg0 = 32'h000000FF; + +parameter i2c0__Intrpt_mask_reg0 = 32'hE0004020; +parameter val_i2c0__Intrpt_mask_reg0 = 32'h000002FF; +parameter mask_i2c0__Intrpt_mask_reg0 = 32'h0000FFFF; + +parameter i2c0__Intrpt_enable_reg0 = 32'hE0004024; +parameter val_i2c0__Intrpt_enable_reg0 = 32'h00000000; +parameter mask_i2c0__Intrpt_enable_reg0 = 32'h0000FFFF; + +parameter i2c0__Intrpt_disable_reg0 = 32'hE0004028; +parameter val_i2c0__Intrpt_disable_reg0 = 32'h00000000; +parameter mask_i2c0__Intrpt_disable_reg0 = 32'h0000FFFF; + + +// ************************************************************ +// Module i2c1 IIC +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter i2c1__Control_reg0 = 32'hE0005000; +parameter val_i2c1__Control_reg0 = 32'h00000000; +parameter mask_i2c1__Control_reg0 = 32'h0000FFFF; + +parameter i2c1__Status_reg0 = 32'hE0005004; +parameter val_i2c1__Status_reg0 = 32'h00000000; +parameter mask_i2c1__Status_reg0 = 32'h0000FFFF; + +parameter i2c1__I2C_address_reg0 = 32'hE0005008; +parameter val_i2c1__I2C_address_reg0 = 32'h00000000; +parameter mask_i2c1__I2C_address_reg0 = 32'h0000FFFF; + +parameter i2c1__I2C_data_reg0 = 32'hE000500C; +parameter val_i2c1__I2C_data_reg0 = 32'h00000000; +parameter mask_i2c1__I2C_data_reg0 = 32'h0000FFFF; + +parameter i2c1__Interrupt_status_reg0 = 32'hE0005010; +parameter val_i2c1__Interrupt_status_reg0 = 32'h00000000; +parameter mask_i2c1__Interrupt_status_reg0 = 32'h0000FFFF; + +parameter i2c1__Transfer_size_reg0 = 32'hE0005014; +parameter val_i2c1__Transfer_size_reg0 = 32'h00000000; +parameter mask_i2c1__Transfer_size_reg0 = 32'h000000FF; + +parameter i2c1__Slave_mon_pause_reg0 = 32'hE0005018; +parameter val_i2c1__Slave_mon_pause_reg0 = 32'h00000000; +parameter mask_i2c1__Slave_mon_pause_reg0 = 32'h000000FF; + +parameter i2c1__Time_out_reg0 = 32'hE000501C; +parameter val_i2c1__Time_out_reg0 = 32'h0000001F; +parameter mask_i2c1__Time_out_reg0 = 32'h000000FF; + +parameter i2c1__Intrpt_mask_reg0 = 32'hE0005020; +parameter val_i2c1__Intrpt_mask_reg0 = 32'h000002FF; +parameter mask_i2c1__Intrpt_mask_reg0 = 32'h0000FFFF; + +parameter i2c1__Intrpt_enable_reg0 = 32'hE0005024; +parameter val_i2c1__Intrpt_enable_reg0 = 32'h00000000; +parameter mask_i2c1__Intrpt_enable_reg0 = 32'h0000FFFF; + +parameter i2c1__Intrpt_disable_reg0 = 32'hE0005028; +parameter val_i2c1__Intrpt_disable_reg0 = 32'h00000000; +parameter mask_i2c1__Intrpt_disable_reg0 = 32'h0000FFFF; + + +// ************************************************************ +// Module l2cache L2Cpl310 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter l2cache__reg0_cache_id = 32'hF8F02000; +parameter val_l2cache__reg0_cache_id = 32'h410000C8; +parameter mask_l2cache__reg0_cache_id = 32'hFFFFFFFF; + +parameter l2cache__reg0_cache_type = 32'hF8F02004; +parameter val_l2cache__reg0_cache_type = 32'h9E300300; +parameter mask_l2cache__reg0_cache_type = 32'hFFFFFFFF; + +parameter l2cache__reg1_control = 32'hF8F02100; +parameter val_l2cache__reg1_control = 32'h00000000; +parameter mask_l2cache__reg1_control = 32'h7FFFFFFF; + +parameter l2cache__reg1_aux_control = 32'hF8F02104; +parameter val_l2cache__reg1_aux_control = 32'h02050000; +parameter mask_l2cache__reg1_aux_control = 32'hFFFFFFFF; + +parameter l2cache__reg1_tag_ram_control = 32'hF8F02108; +parameter val_l2cache__reg1_tag_ram_control = 32'h00000777; +parameter mask_l2cache__reg1_tag_ram_control = 32'hFFFFFFFF; + +parameter l2cache__reg1_data_ram_control = 32'hF8F0210C; +parameter val_l2cache__reg1_data_ram_control = 32'h00000777; +parameter mask_l2cache__reg1_data_ram_control = 32'hFFFFFFFF; + +parameter l2cache__reg2_ev_counter_ctrl = 32'hF8F02200; +parameter val_l2cache__reg2_ev_counter_ctrl = 32'h00000000; +parameter mask_l2cache__reg2_ev_counter_ctrl = 32'hFFFFFFFF; + +parameter l2cache__reg2_ev_counter1_cfg = 32'hF8F02204; +parameter val_l2cache__reg2_ev_counter1_cfg = 32'h00000000; +parameter mask_l2cache__reg2_ev_counter1_cfg = 32'hFFFFFFFF; + +parameter l2cache__reg2_ev_counter0_cfg = 32'hF8F02208; +parameter val_l2cache__reg2_ev_counter0_cfg = 32'h00000000; +parameter mask_l2cache__reg2_ev_counter0_cfg = 32'hFFFFFFFF; + +parameter l2cache__reg2_ev_counter1 = 32'hF8F0220C; +parameter val_l2cache__reg2_ev_counter1 = 32'h00000000; +parameter mask_l2cache__reg2_ev_counter1 = 32'hFFFFFFFF; + +parameter l2cache__reg2_ev_counter0 = 32'hF8F02210; +parameter val_l2cache__reg2_ev_counter0 = 32'h00000000; +parameter mask_l2cache__reg2_ev_counter0 = 32'hFFFFFFFF; + +parameter l2cache__reg2_int_mask = 32'hF8F02214; +parameter val_l2cache__reg2_int_mask = 32'h00000000; +parameter mask_l2cache__reg2_int_mask = 32'hFFFFFFFF; + +parameter l2cache__reg2_int_mask_status = 32'hF8F02218; +parameter val_l2cache__reg2_int_mask_status = 32'h00000000; +parameter mask_l2cache__reg2_int_mask_status = 32'hFFFFFFFF; + +parameter l2cache__reg2_int_raw_status = 32'hF8F0221C; +parameter val_l2cache__reg2_int_raw_status = 32'h00000000; +parameter mask_l2cache__reg2_int_raw_status = 32'hFFFFFFFF; + +parameter l2cache__reg2_int_clear = 32'hF8F02220; +parameter val_l2cache__reg2_int_clear = 32'h00000000; +parameter mask_l2cache__reg2_int_clear = 32'hFFFFFFFF; + +parameter l2cache__reg7_cache_sync = 32'hF8F02730; +parameter val_l2cache__reg7_cache_sync = 32'h00000000; +parameter mask_l2cache__reg7_cache_sync = 32'hFFFFFFFF; + +parameter l2cache__reg7_inv_pa = 32'hF8F02770; +parameter val_l2cache__reg7_inv_pa = 32'h00000000; +parameter mask_l2cache__reg7_inv_pa = 32'hFFFFFFFF; + +parameter l2cache__reg7_inv_way = 32'hF8F0277C; +parameter val_l2cache__reg7_inv_way = 32'h00000000; +parameter mask_l2cache__reg7_inv_way = 32'hFFFFFFFF; + +parameter l2cache__reg7_clean_pa = 32'hF8F027B0; +parameter val_l2cache__reg7_clean_pa = 32'h00000000; +parameter mask_l2cache__reg7_clean_pa = 32'hFFFFFFFF; + +parameter l2cache__reg7_clean_index = 32'hF8F027B8; +parameter val_l2cache__reg7_clean_index = 32'h00000000; +parameter mask_l2cache__reg7_clean_index = 32'hFFFFFFFF; + +parameter l2cache__reg7_clean_way = 32'hF8F027BC; +parameter val_l2cache__reg7_clean_way = 32'h00000000; +parameter mask_l2cache__reg7_clean_way = 32'hFFFFFFFF; + +parameter l2cache__reg7_clean_inv_pa = 32'hF8F027F0; +parameter val_l2cache__reg7_clean_inv_pa = 32'h00000000; +parameter mask_l2cache__reg7_clean_inv_pa = 32'hFFFFFFFF; + +parameter l2cache__reg7_clean_inv_index = 32'hF8F027F8; +parameter val_l2cache__reg7_clean_inv_index = 32'h00000000; +parameter mask_l2cache__reg7_clean_inv_index = 32'hFFFFFFFF; + +parameter l2cache__reg7_clean_inv_way = 32'hF8F027FC; +parameter val_l2cache__reg7_clean_inv_way = 32'h00000000; +parameter mask_l2cache__reg7_clean_inv_way = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown0 = 32'hF8F02900; +parameter val_l2cache__reg9_d_lockdown0 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown0 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown0 = 32'hF8F02904; +parameter val_l2cache__reg9_i_lockdown0 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown0 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown1 = 32'hF8F02908; +parameter val_l2cache__reg9_d_lockdown1 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown1 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown1 = 32'hF8F0290C; +parameter val_l2cache__reg9_i_lockdown1 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown1 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown2 = 32'hF8F02910; +parameter val_l2cache__reg9_d_lockdown2 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown2 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown2 = 32'hF8F02914; +parameter val_l2cache__reg9_i_lockdown2 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown2 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown3 = 32'hF8F02918; +parameter val_l2cache__reg9_d_lockdown3 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown3 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown3 = 32'hF8F0291C; +parameter val_l2cache__reg9_i_lockdown3 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown3 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown4 = 32'hF8F02920; +parameter val_l2cache__reg9_d_lockdown4 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown4 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown4 = 32'hF8F02924; +parameter val_l2cache__reg9_i_lockdown4 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown4 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown5 = 32'hF8F02928; +parameter val_l2cache__reg9_d_lockdown5 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown5 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown5 = 32'hF8F0292C; +parameter val_l2cache__reg9_i_lockdown5 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown5 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown6 = 32'hF8F02930; +parameter val_l2cache__reg9_d_lockdown6 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown6 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown6 = 32'hF8F02934; +parameter val_l2cache__reg9_i_lockdown6 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown6 = 32'hFFFFFFFF; + +parameter l2cache__reg9_d_lockdown7 = 32'hF8F02938; +parameter val_l2cache__reg9_d_lockdown7 = 32'h00000000; +parameter mask_l2cache__reg9_d_lockdown7 = 32'hFFFFFFFF; + +parameter l2cache__reg9_i_lockdown7 = 32'hF8F0293C; +parameter val_l2cache__reg9_i_lockdown7 = 32'h00000000; +parameter mask_l2cache__reg9_i_lockdown7 = 32'hFFFFFFFF; + +parameter l2cache__reg9_lock_line_en = 32'hF8F02950; +parameter val_l2cache__reg9_lock_line_en = 32'h00000000; +parameter mask_l2cache__reg9_lock_line_en = 32'hFFFFFFFF; + +parameter l2cache__reg9_unlock_way = 32'hF8F02954; +parameter val_l2cache__reg9_unlock_way = 32'h00000000; +parameter mask_l2cache__reg9_unlock_way = 32'hFFFFFFFF; + +parameter l2cache__reg12_addr_filtering_start = 32'hF8F02C00; +parameter val_l2cache__reg12_addr_filtering_start = 32'h40000001; +parameter mask_l2cache__reg12_addr_filtering_start = 32'hFFFFFFFF; + +parameter l2cache__reg12_addr_filtering_end = 32'hF8F02C04; +parameter val_l2cache__reg12_addr_filtering_end = 32'hFFF00000; +parameter mask_l2cache__reg12_addr_filtering_end = 32'hFFFFFFFF; + +parameter l2cache__reg15_debug_ctrl = 32'hF8F02F40; +parameter val_l2cache__reg15_debug_ctrl = 32'h00000000; +parameter mask_l2cache__reg15_debug_ctrl = 32'hFFFFFFFF; + +parameter l2cache__reg15_prefetch_ctrl = 32'hF8F02F60; +parameter val_l2cache__reg15_prefetch_ctrl = 32'h00000000; +parameter mask_l2cache__reg15_prefetch_ctrl = 32'hFFFFFFFF; + +parameter l2cache__reg15_power_ctrl = 32'hF8F02F80; +parameter val_l2cache__reg15_power_ctrl = 32'h00000000; +parameter mask_l2cache__reg15_power_ctrl = 32'hFFFFFFFF; + + +// ************************************************************ +// Module mpcore mpcore +// doc version: 1.3 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter mpcore__SCU_CONTROL_REGISTER = 32'hF8F00000; +parameter val_mpcore__SCU_CONTROL_REGISTER = 32'h00000002; +parameter mask_mpcore__SCU_CONTROL_REGISTER = 32'hFFFFFFFF; + +parameter mpcore__SCU_CONFIGURATION_REGISTER = 32'hF8F00004; +parameter val_mpcore__SCU_CONFIGURATION_REGISTER = 32'h00000501; +parameter mask_mpcore__SCU_CONFIGURATION_REGISTER = 32'hFFFFFFFF; + +parameter mpcore__SCU_CPU_Power_Status_Register = 32'hF8F00008; +parameter val_mpcore__SCU_CPU_Power_Status_Register = 32'h00000000; +parameter mask_mpcore__SCU_CPU_Power_Status_Register = 32'hFFFFFFFF; + +parameter mpcore__SCU_Invalidate_All_Registers_in_Secure_State = 32'hF8F0000C; +parameter val_mpcore__SCU_Invalidate_All_Registers_in_Secure_State = 32'h00000000; +parameter mask_mpcore__SCU_Invalidate_All_Registers_in_Secure_State = 32'hFFFFFFFF; + +parameter mpcore__Filtering_Start_Address_Register = 32'hF8F00040; +parameter val_mpcore__Filtering_Start_Address_Register = 32'h00100000; +parameter mask_mpcore__Filtering_Start_Address_Register = 32'hFFFFFFFF; + +parameter mpcore__Filtering_End_Address_Register = 32'hF8F00044; +parameter val_mpcore__Filtering_End_Address_Register = 32'h00000000; +parameter mask_mpcore__Filtering_End_Address_Register = 32'hFFFFFFFF; + +parameter mpcore__SCU_Access_Control_Register_SAC = 32'hF8F00050; +parameter val_mpcore__SCU_Access_Control_Register_SAC = 32'h0000000F; +parameter mask_mpcore__SCU_Access_Control_Register_SAC = 32'hFFFFFFFF; + +parameter mpcore__SCU_Non_secure_Access_Control_Register = 32'hF8F00054; +parameter val_mpcore__SCU_Non_secure_Access_Control_Register = 32'h00000000; +parameter mask_mpcore__SCU_Non_secure_Access_Control_Register = 32'hFFFFFFFF; + +parameter mpcore__ICCICR = 32'hF8F00100; +parameter val_mpcore__ICCICR = 32'h00000000; +parameter mask_mpcore__ICCICR = 32'hFFFFFFFF; + +parameter mpcore__ICCPMR = 32'hF8F00104; +parameter val_mpcore__ICCPMR = 32'h00000000; +parameter mask_mpcore__ICCPMR = 32'hFFFFFFFF; + +parameter mpcore__ICCBPR = 32'hF8F00108; +parameter val_mpcore__ICCBPR = 32'h00000002; +parameter mask_mpcore__ICCBPR = 32'hFFFFFFFF; + +parameter mpcore__ICCIAR = 32'hF8F0010C; +parameter val_mpcore__ICCIAR = 32'h000003FF; +parameter mask_mpcore__ICCIAR = 32'hFFFFFFFF; + +parameter mpcore__ICCEOIR = 32'hF8F00110; +parameter val_mpcore__ICCEOIR = 32'h00000000; +parameter mask_mpcore__ICCEOIR = 32'hFFFFFFFF; + +parameter mpcore__ICCRPR = 32'hF8F00114; +parameter val_mpcore__ICCRPR = 32'h000000FF; +parameter mask_mpcore__ICCRPR = 32'hFFFFFFFF; + +parameter mpcore__ICCHPIR = 32'hF8F00118; +parameter val_mpcore__ICCHPIR = 32'h000003FF; +parameter mask_mpcore__ICCHPIR = 32'hFFFFFFFF; + +parameter mpcore__ICCABPR = 32'hF8F0011C; +parameter val_mpcore__ICCABPR = 32'h00000003; +parameter mask_mpcore__ICCABPR = 32'hFFFFFFFF; + +parameter mpcore__ICCIDR = 32'hF8F001FC; +parameter val_mpcore__ICCIDR = 32'h3901243B; +parameter mask_mpcore__ICCIDR = 32'hFFFFFFFF; + +parameter mpcore__Global_Timer_Counter_Register0 = 32'hF8F00200; +parameter val_mpcore__Global_Timer_Counter_Register0 = 32'h00000000; +parameter mask_mpcore__Global_Timer_Counter_Register0 = 32'hFFFFFFFF; + +parameter mpcore__Global_Timer_Counter_Register1 = 32'hF8F00204; +parameter val_mpcore__Global_Timer_Counter_Register1 = 32'h00000000; +parameter mask_mpcore__Global_Timer_Counter_Register1 = 32'hFFFFFFFF; + +parameter mpcore__Global_Timer_Control_Register = 32'hF8F00208; +parameter val_mpcore__Global_Timer_Control_Register = 32'h00000000; +parameter mask_mpcore__Global_Timer_Control_Register = 32'hFFFFFFFF; + +parameter mpcore__Global_Timer_Interrupt_Status_Register = 32'hF8F0020C; +parameter val_mpcore__Global_Timer_Interrupt_Status_Register = 32'h00000000; +parameter mask_mpcore__Global_Timer_Interrupt_Status_Register = 32'hFFFFFFFF; + +parameter mpcore__Comparator_Value_Register0 = 32'hF8F00210; +parameter val_mpcore__Comparator_Value_Register0 = 32'h00000000; +parameter mask_mpcore__Comparator_Value_Register0 = 32'hFFFFFFFF; + +parameter mpcore__Comparator_Value_Register1 = 32'hF8F00214; +parameter val_mpcore__Comparator_Value_Register1 = 32'h00000000; +parameter mask_mpcore__Comparator_Value_Register1 = 32'hFFFFFFFF; + +parameter mpcore__Auto_increment_Register = 32'hF8F00218; +parameter val_mpcore__Auto_increment_Register = 32'h00000000; +parameter mask_mpcore__Auto_increment_Register = 32'hFFFFFFFF; + +parameter mpcore__Private_Timer_Load_Register = 32'hF8F00600; +parameter val_mpcore__Private_Timer_Load_Register = 32'h00000000; +parameter mask_mpcore__Private_Timer_Load_Register = 32'hFFFFFFFF; + +parameter mpcore__Private_Timer_Counter_Register = 32'hF8F00604; +parameter val_mpcore__Private_Timer_Counter_Register = 32'h00000000; +parameter mask_mpcore__Private_Timer_Counter_Register = 32'hFFFFFFFF; + +parameter mpcore__Private_Timer_Control_Register = 32'hF8F00608; +parameter val_mpcore__Private_Timer_Control_Register = 32'h00000000; +parameter mask_mpcore__Private_Timer_Control_Register = 32'hFFFFFFFF; + +parameter mpcore__Private_Timer_Interrupt_Status_Register = 32'hF8F0060C; +parameter val_mpcore__Private_Timer_Interrupt_Status_Register = 32'h00000000; +parameter mask_mpcore__Private_Timer_Interrupt_Status_Register = 32'hFFFFFFFF; + +parameter mpcore__Watchdog_Load_Register = 32'hF8F00620; +parameter val_mpcore__Watchdog_Load_Register = 32'h00000000; +parameter mask_mpcore__Watchdog_Load_Register = 32'hFFFFFFFF; + +parameter mpcore__Watchdog_Counter_Register = 32'hF8F00624; +parameter val_mpcore__Watchdog_Counter_Register = 32'h00000000; +parameter mask_mpcore__Watchdog_Counter_Register = 32'hFFFFFFFF; + +parameter mpcore__Watchdog_Control_Register = 32'hF8F00628; +parameter val_mpcore__Watchdog_Control_Register = 32'h00000000; +parameter mask_mpcore__Watchdog_Control_Register = 32'hFFFFFFFF; + +parameter mpcore__Watchdog_Interrupt_Status_Register = 32'hF8F0062C; +parameter val_mpcore__Watchdog_Interrupt_Status_Register = 32'h00000000; +parameter mask_mpcore__Watchdog_Interrupt_Status_Register = 32'hFFFFFFFF; + +parameter mpcore__Watchdog_Reset_Status_Register = 32'hF8F00630; +parameter val_mpcore__Watchdog_Reset_Status_Register = 32'h00000000; +parameter mask_mpcore__Watchdog_Reset_Status_Register = 32'hFFFFFFFF; + +parameter mpcore__Watchdog_Disable_Register = 32'hF8F00634; +parameter val_mpcore__Watchdog_Disable_Register = 32'h00000000; +parameter mask_mpcore__Watchdog_Disable_Register = 32'hFFFFFFFF; + +parameter mpcore__ICDDCR = 32'hF8F01000; +parameter val_mpcore__ICDDCR = 32'h00000000; +parameter mask_mpcore__ICDDCR = 32'hFFFFFFFF; + +parameter mpcore__ICDICTR = 32'hF8F01004; +parameter val_mpcore__ICDICTR = 32'h00000C22; +parameter mask_mpcore__ICDICTR = 32'hE000FFFF; + +parameter mpcore__ICDIIDR = 32'hF8F01008; +parameter val_mpcore__ICDIIDR = 32'h0102043B; +parameter mask_mpcore__ICDIIDR = 32'hFFFFFFFF; + +parameter mpcore__ICDISR0 = 32'hF8F01080; +parameter val_mpcore__ICDISR0 = 32'h00000000; +parameter mask_mpcore__ICDISR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDISR1 = 32'hF8F01084; +parameter val_mpcore__ICDISR1 = 32'h00000000; +parameter mask_mpcore__ICDISR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDISR2 = 32'hF8F01088; +parameter val_mpcore__ICDISR2 = 32'h00000000; +parameter mask_mpcore__ICDISR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDISER0 = 32'hF8F01100; +parameter val_mpcore__ICDISER0 = 32'h0000FFFF; +parameter mask_mpcore__ICDISER0 = 32'hFFFFFFFF; + +parameter mpcore__ICDISER1 = 32'hF8F01104; +parameter val_mpcore__ICDISER1 = 32'h00000000; +parameter mask_mpcore__ICDISER1 = 32'hFFFFFFFF; + +parameter mpcore__ICDISER2 = 32'hF8F01108; +parameter val_mpcore__ICDISER2 = 32'h00000000; +parameter mask_mpcore__ICDISER2 = 32'hFFFFFFFF; + +parameter mpcore__ICDICER0 = 32'hF8F01180; +parameter val_mpcore__ICDICER0 = 32'h0000FFFF; +parameter mask_mpcore__ICDICER0 = 32'hFFFFFFFF; + +parameter mpcore__ICDICER1 = 32'hF8F01184; +parameter val_mpcore__ICDICER1 = 32'h00000000; +parameter mask_mpcore__ICDICER1 = 32'hFFFFFFFF; + +parameter mpcore__ICDICER2 = 32'hF8F01188; +parameter val_mpcore__ICDICER2 = 32'h00000000; +parameter mask_mpcore__ICDICER2 = 32'hFFFFFFFF; + +parameter mpcore__ICDISPR0 = 32'hF8F01200; +parameter val_mpcore__ICDISPR0 = 32'h00000000; +parameter mask_mpcore__ICDISPR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDISPR1 = 32'hF8F01204; +parameter val_mpcore__ICDISPR1 = 32'h00000000; +parameter mask_mpcore__ICDISPR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDISPR2 = 32'hF8F01208; +parameter val_mpcore__ICDISPR2 = 32'h00000000; +parameter mask_mpcore__ICDISPR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDICPR0 = 32'hF8F01280; +parameter val_mpcore__ICDICPR0 = 32'h00000000; +parameter mask_mpcore__ICDICPR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDICPR1 = 32'hF8F01284; +parameter val_mpcore__ICDICPR1 = 32'h00000000; +parameter mask_mpcore__ICDICPR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDICPR2 = 32'hF8F01288; +parameter val_mpcore__ICDICPR2 = 32'h00000000; +parameter mask_mpcore__ICDICPR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDABR0 = 32'hF8F01300; +parameter val_mpcore__ICDABR0 = 32'h00000000; +parameter mask_mpcore__ICDABR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDABR1 = 32'hF8F01304; +parameter val_mpcore__ICDABR1 = 32'h00000000; +parameter mask_mpcore__ICDABR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDABR2 = 32'hF8F01308; +parameter val_mpcore__ICDABR2 = 32'h00000000; +parameter mask_mpcore__ICDABR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR0 = 32'hF8F01400; +parameter val_mpcore__ICDIPR0 = 32'h00000000; +parameter mask_mpcore__ICDIPR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR1 = 32'hF8F01404; +parameter val_mpcore__ICDIPR1 = 32'h00000000; +parameter mask_mpcore__ICDIPR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR2 = 32'hF8F01408; +parameter val_mpcore__ICDIPR2 = 32'h00000000; +parameter mask_mpcore__ICDIPR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR3 = 32'hF8F0140C; +parameter val_mpcore__ICDIPR3 = 32'h00000000; +parameter mask_mpcore__ICDIPR3 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR4 = 32'hF8F01410; +parameter val_mpcore__ICDIPR4 = 32'h00000000; +parameter mask_mpcore__ICDIPR4 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR5 = 32'hF8F01414; +parameter val_mpcore__ICDIPR5 = 32'h00000000; +parameter mask_mpcore__ICDIPR5 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR6 = 32'hF8F01418; +parameter val_mpcore__ICDIPR6 = 32'h00000000; +parameter mask_mpcore__ICDIPR6 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR7 = 32'hF8F0141C; +parameter val_mpcore__ICDIPR7 = 32'h00000000; +parameter mask_mpcore__ICDIPR7 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR8 = 32'hF8F01420; +parameter val_mpcore__ICDIPR8 = 32'h00000000; +parameter mask_mpcore__ICDIPR8 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR9 = 32'hF8F01424; +parameter val_mpcore__ICDIPR9 = 32'h00000000; +parameter mask_mpcore__ICDIPR9 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR10 = 32'hF8F01428; +parameter val_mpcore__ICDIPR10 = 32'h00000000; +parameter mask_mpcore__ICDIPR10 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR11 = 32'hF8F0142C; +parameter val_mpcore__ICDIPR11 = 32'h00000000; +parameter mask_mpcore__ICDIPR11 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR12 = 32'hF8F01430; +parameter val_mpcore__ICDIPR12 = 32'h00000000; +parameter mask_mpcore__ICDIPR12 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR13 = 32'hF8F01434; +parameter val_mpcore__ICDIPR13 = 32'h00000000; +parameter mask_mpcore__ICDIPR13 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR14 = 32'hF8F01438; +parameter val_mpcore__ICDIPR14 = 32'h00000000; +parameter mask_mpcore__ICDIPR14 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR15 = 32'hF8F0143C; +parameter val_mpcore__ICDIPR15 = 32'h00000000; +parameter mask_mpcore__ICDIPR15 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR16 = 32'hF8F01440; +parameter val_mpcore__ICDIPR16 = 32'h00000000; +parameter mask_mpcore__ICDIPR16 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR17 = 32'hF8F01444; +parameter val_mpcore__ICDIPR17 = 32'h00000000; +parameter mask_mpcore__ICDIPR17 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR18 = 32'hF8F01448; +parameter val_mpcore__ICDIPR18 = 32'h00000000; +parameter mask_mpcore__ICDIPR18 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR19 = 32'hF8F0144C; +parameter val_mpcore__ICDIPR19 = 32'h00000000; +parameter mask_mpcore__ICDIPR19 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR20 = 32'hF8F01450; +parameter val_mpcore__ICDIPR20 = 32'h00000000; +parameter mask_mpcore__ICDIPR20 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR21 = 32'hF8F01454; +parameter val_mpcore__ICDIPR21 = 32'h00000000; +parameter mask_mpcore__ICDIPR21 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR22 = 32'hF8F01458; +parameter val_mpcore__ICDIPR22 = 32'h00000000; +parameter mask_mpcore__ICDIPR22 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPR23 = 32'hF8F0145C; +parameter val_mpcore__ICDIPR23 = 32'h00000000; +parameter mask_mpcore__ICDIPR23 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR0 = 32'hF8F01800; +parameter val_mpcore__ICDIPTR0 = 32'h01010101; +parameter mask_mpcore__ICDIPTR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR1 = 32'hF8F01804; +parameter val_mpcore__ICDIPTR1 = 32'h01010101; +parameter mask_mpcore__ICDIPTR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR2 = 32'hF8F01808; +parameter val_mpcore__ICDIPTR2 = 32'h01010101; +parameter mask_mpcore__ICDIPTR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR3 = 32'hF8F0180C; +parameter val_mpcore__ICDIPTR3 = 32'h01010101; +parameter mask_mpcore__ICDIPTR3 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR4 = 32'hF8F01810; +parameter val_mpcore__ICDIPTR4 = 32'h01010101; +parameter mask_mpcore__ICDIPTR4 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR5 = 32'hF8F01814; +parameter val_mpcore__ICDIPTR5 = 32'h01010101; +parameter mask_mpcore__ICDIPTR5 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR6 = 32'hF8F01818; +parameter val_mpcore__ICDIPTR6 = 32'h01010101; +parameter mask_mpcore__ICDIPTR6 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR7 = 32'hF8F0181C; +parameter val_mpcore__ICDIPTR7 = 32'h01010101; +parameter mask_mpcore__ICDIPTR7 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR8 = 32'hF8F01820; +parameter val_mpcore__ICDIPTR8 = 32'h01010101; +parameter mask_mpcore__ICDIPTR8 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR9 = 32'hF8F01824; +parameter val_mpcore__ICDIPTR9 = 32'h01010101; +parameter mask_mpcore__ICDIPTR9 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR10 = 32'hF8F01828; +parameter val_mpcore__ICDIPTR10 = 32'h01010101; +parameter mask_mpcore__ICDIPTR10 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR11 = 32'hF8F0182C; +parameter val_mpcore__ICDIPTR11 = 32'h01010101; +parameter mask_mpcore__ICDIPTR11 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR12 = 32'hF8F01830; +parameter val_mpcore__ICDIPTR12 = 32'h01010101; +parameter mask_mpcore__ICDIPTR12 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR13 = 32'hF8F01834; +parameter val_mpcore__ICDIPTR13 = 32'h01010101; +parameter mask_mpcore__ICDIPTR13 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR14 = 32'hF8F01838; +parameter val_mpcore__ICDIPTR14 = 32'h01010101; +parameter mask_mpcore__ICDIPTR14 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR15 = 32'hF8F0183C; +parameter val_mpcore__ICDIPTR15 = 32'h01010101; +parameter mask_mpcore__ICDIPTR15 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR16 = 32'hF8F01840; +parameter val_mpcore__ICDIPTR16 = 32'h01010101; +parameter mask_mpcore__ICDIPTR16 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR17 = 32'hF8F01844; +parameter val_mpcore__ICDIPTR17 = 32'h01010101; +parameter mask_mpcore__ICDIPTR17 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR18 = 32'hF8F01848; +parameter val_mpcore__ICDIPTR18 = 32'h01010101; +parameter mask_mpcore__ICDIPTR18 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR19 = 32'hF8F0184C; +parameter val_mpcore__ICDIPTR19 = 32'h01010101; +parameter mask_mpcore__ICDIPTR19 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR20 = 32'hF8F01850; +parameter val_mpcore__ICDIPTR20 = 32'h01010101; +parameter mask_mpcore__ICDIPTR20 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR21 = 32'hF8F01854; +parameter val_mpcore__ICDIPTR21 = 32'h01010101; +parameter mask_mpcore__ICDIPTR21 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR22 = 32'hF8F01858; +parameter val_mpcore__ICDIPTR22 = 32'h01010101; +parameter mask_mpcore__ICDIPTR22 = 32'hFFFFFFFF; + +parameter mpcore__ICDIPTR23 = 32'hF8F0185C; +parameter val_mpcore__ICDIPTR23 = 32'h01010101; +parameter mask_mpcore__ICDIPTR23 = 32'hFFFFFFFF; + +parameter mpcore__ICDICFR0 = 32'hF8F01C00; +parameter val_mpcore__ICDICFR0 = 32'hAAAAAAAA; +parameter mask_mpcore__ICDICFR0 = 32'hFFFFFFFF; + +parameter mpcore__ICDICFR1 = 32'hF8F01C04; +parameter val_mpcore__ICDICFR1 = 32'h7DC00000; +parameter mask_mpcore__ICDICFR1 = 32'hFFFFFFFF; + +parameter mpcore__ICDICFR2 = 32'hF8F01C08; +parameter val_mpcore__ICDICFR2 = 32'h55555555; +parameter mask_mpcore__ICDICFR2 = 32'hFFFFFFFF; + +parameter mpcore__ICDICFR3 = 32'hF8F01C0C; +parameter val_mpcore__ICDICFR3 = 32'h55555555; +parameter mask_mpcore__ICDICFR3 = 32'hFFFFFFFF; + +parameter mpcore__ICDICFR4 = 32'hF8F01C10; +parameter val_mpcore__ICDICFR4 = 32'h55555555; +parameter mask_mpcore__ICDICFR4 = 32'hFFFFFFFF; + +parameter mpcore__ICDICFR5 = 32'hF8F01C14; +parameter val_mpcore__ICDICFR5 = 32'h55555555; +parameter mask_mpcore__ICDICFR5 = 32'hFFFFFFFF; + +parameter mpcore__ppi_status = 32'hF8F01D00; +parameter val_mpcore__ppi_status = 32'h00000000; +parameter mask_mpcore__ppi_status = 32'hFFFFFFFF; + +parameter mpcore__spi_status_0 = 32'hF8F01D04; +parameter val_mpcore__spi_status_0 = 32'h00000000; +parameter mask_mpcore__spi_status_0 = 32'hFFFFFFFF; + +parameter mpcore__spi_status_1 = 32'hF8F01D08; +parameter val_mpcore__spi_status_1 = 32'h00000000; +parameter mask_mpcore__spi_status_1 = 32'hFFFFFFFF; + +parameter mpcore__ICDSGIR = 32'hF8F01F00; +parameter val_mpcore__ICDSGIR = 32'h00000000; +parameter mask_mpcore__ICDSGIR = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR4 = 32'hF8F01FD0; +parameter val_mpcore__ICPIDR4 = 32'h00000004; +parameter mask_mpcore__ICPIDR4 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR5 = 32'hF8F01FD4; +parameter val_mpcore__ICPIDR5 = 32'h00000000; +parameter mask_mpcore__ICPIDR5 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR6 = 32'hF8F01FD8; +parameter val_mpcore__ICPIDR6 = 32'h00000000; +parameter mask_mpcore__ICPIDR6 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR7 = 32'hF8F01FDC; +parameter val_mpcore__ICPIDR7 = 32'h00000000; +parameter mask_mpcore__ICPIDR7 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR0 = 32'hF8F01FE0; +parameter val_mpcore__ICPIDR0 = 32'h00000090; +parameter mask_mpcore__ICPIDR0 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR1 = 32'hF8F01FE4; +parameter val_mpcore__ICPIDR1 = 32'h000000B3; +parameter mask_mpcore__ICPIDR1 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR2 = 32'hF8F01FE8; +parameter val_mpcore__ICPIDR2 = 32'h0000001B; +parameter mask_mpcore__ICPIDR2 = 32'hFFFFFFFF; + +parameter mpcore__ICPIDR3 = 32'hF8F01FEC; +parameter val_mpcore__ICPIDR3 = 32'h00000000; +parameter mask_mpcore__ICPIDR3 = 32'hFFFFFFFF; + +parameter mpcore__ICCIDR0 = 32'hF8F01FF0; +parameter val_mpcore__ICCIDR0 = 32'h0000000D; +parameter mask_mpcore__ICCIDR0 = 32'hFFFFFFFF; + +parameter mpcore__ICCIDR1 = 32'hF8F01FF4; +parameter val_mpcore__ICCIDR1 = 32'h000000F0; +parameter mask_mpcore__ICCIDR1 = 32'hFFFFFFFF; + +parameter mpcore__ICCIDR2 = 32'hF8F01FF8; +parameter val_mpcore__ICCIDR2 = 32'h00000005; +parameter mask_mpcore__ICCIDR2 = 32'hFFFFFFFF; + +parameter mpcore__ICCIDR3 = 32'hF8F01FFC; +parameter val_mpcore__ICCIDR3 = 32'h000000B1; +parameter mask_mpcore__ICCIDR3 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module ocm ocm +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter ocm__OCM_PARITY_CTRL = 32'hF800C000; +parameter val_ocm__OCM_PARITY_CTRL = 32'h00000000; +parameter mask_ocm__OCM_PARITY_CTRL = 32'hFFFFFFFF; + +parameter ocm__OCM_PARITY_ERRADDRESS = 32'hF800C004; +parameter val_ocm__OCM_PARITY_ERRADDRESS = 32'h00000000; +parameter mask_ocm__OCM_PARITY_ERRADDRESS = 32'hFFFFFFFF; + +parameter ocm__OCM_IRQ_STS = 32'hF800C008; +parameter val_ocm__OCM_IRQ_STS = 32'h00000000; +parameter mask_ocm__OCM_IRQ_STS = 32'hFFFFFFFF; + +parameter ocm__OCM_CONTROL = 32'hF800C00C; +parameter val_ocm__OCM_CONTROL = 32'h00000000; +parameter mask_ocm__OCM_CONTROL = 32'hFFFFFFFF; + + +// ************************************************************ +// Module qspi qspi +// doc version: 0.8, based on 11/01/10 Linear Quad-SPI Controller +// Design Specification document +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter qspi__Config_reg = 32'hE000D000; +parameter val_qspi__Config_reg = 32'h80000000; +parameter mask_qspi__Config_reg = 32'hFFFDFFFF; + +parameter qspi__Intr_status_REG = 32'hE000D004; +parameter val_qspi__Intr_status_REG = 32'h00000004; +parameter mask_qspi__Intr_status_REG = 32'hFFFFFFFF; + +parameter qspi__Intrpt_en_REG = 32'hE000D008; +parameter val_qspi__Intrpt_en_REG = 32'h00000000; +parameter mask_qspi__Intrpt_en_REG = 32'hFFFFFFFF; + +parameter qspi__Intrpt_dis_REG = 32'hE000D00C; +parameter val_qspi__Intrpt_dis_REG = 32'h00000000; +parameter mask_qspi__Intrpt_dis_REG = 32'hFFFFFFFF; + +parameter qspi__Intrpt_mask_REG = 32'hE000D010; +parameter val_qspi__Intrpt_mask_REG = 32'h00000000; +parameter mask_qspi__Intrpt_mask_REG = 32'hFFFFFFFF; + +parameter qspi__En_REG = 32'hE000D014; +parameter val_qspi__En_REG = 32'h00000000; +parameter mask_qspi__En_REG = 32'hFFFFFFFF; + +parameter qspi__Delay_REG = 32'hE000D018; +parameter val_qspi__Delay_REG = 32'h00000000; +parameter mask_qspi__Delay_REG = 32'hFFFFFFFF; + +parameter qspi__TXD0 = 32'hE000D01C; +parameter val_qspi__TXD0 = 32'h00000000; +parameter mask_qspi__TXD0 = 32'hFFFFFFFF; + +parameter qspi__Rx_data_REG = 32'hE000D020; +parameter val_qspi__Rx_data_REG = 32'h00000000; +parameter mask_qspi__Rx_data_REG = 32'hFFFFFFFF; + +parameter qspi__Slave_Idle_count_REG = 32'hE000D024; +parameter val_qspi__Slave_Idle_count_REG = 32'h000000FF; +parameter mask_qspi__Slave_Idle_count_REG = 32'hFFFFFFFF; + +parameter qspi__TX_thres_REG = 32'hE000D028; +parameter val_qspi__TX_thres_REG = 32'h00000001; +parameter mask_qspi__TX_thres_REG = 32'hFFFFFFFF; + +parameter qspi__RX_thres_REG = 32'hE000D02C; +parameter val_qspi__RX_thres_REG = 32'h00000001; +parameter mask_qspi__RX_thres_REG = 32'hFFFFFFFF; + +parameter qspi__GPIO = 32'hE000D030; +parameter val_qspi__GPIO = 32'h00000001; +parameter mask_qspi__GPIO = 32'hFFFFFFFF; + +parameter qspi__LPBK_DLY_ADJ = 32'hE000D038; +parameter val_qspi__LPBK_DLY_ADJ = 32'h00000033; +parameter mask_qspi__LPBK_DLY_ADJ = 32'hFFFFFFFF; + +parameter qspi__TXD1 = 32'hE000D080; +parameter val_qspi__TXD1 = 32'h00000000; +parameter mask_qspi__TXD1 = 32'hFFFFFFFF; + +parameter qspi__TXD2 = 32'hE000D084; +parameter val_qspi__TXD2 = 32'h00000000; +parameter mask_qspi__TXD2 = 32'hFFFFFFFF; + +parameter qspi__TXD3 = 32'hE000D088; +parameter val_qspi__TXD3 = 32'h00000000; +parameter mask_qspi__TXD3 = 32'hFFFFFFFF; + +parameter qspi__LQSPI_CFG = 32'hE000D0A0; +parameter val_qspi__LQSPI_CFG = 32'h03A002EB; +parameter mask_qspi__LQSPI_CFG = 32'hFBFF07FF; + +parameter qspi__LQSPI_STS = 32'hE000D0A4; +parameter val_qspi__LQSPI_STS = 32'h00000000; +parameter mask_qspi__LQSPI_STS = 32'h000001FF; + +parameter qspi__MOD_ID = 32'hE000D0FC; +parameter val_qspi__MOD_ID = 32'h01090101; +parameter mask_qspi__MOD_ID = 32'hFFFFFFFF; + + +// ************************************************************ +// Module sd0 sdio +// doc version: 4.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter sd0__SDMA_system_address_register = 32'hE0100000; +parameter val_sd0__SDMA_system_address_register = 32'h00000000; +parameter mask_sd0__SDMA_system_address_register = 32'hFFFFFFFF; + +parameter sd0__Block_Size_Block_Count = 32'hE0100004; +parameter val_sd0__Block_Size_Block_Count = 32'h00000000; +parameter mask_sd0__Block_Size_Block_Count = 32'hFFFFFFFF; + +parameter sd0__Argument = 32'hE0100008; +parameter val_sd0__Argument = 32'h00000000; +parameter mask_sd0__Argument = 32'hFFFFFFFF; + +parameter sd0__Transfer_Mode_Command = 32'hE010000C; +parameter val_sd0__Transfer_Mode_Command = 32'h00000000; +parameter mask_sd0__Transfer_Mode_Command = 32'h1FFFFFFF; + +parameter sd0__Response0 = 32'hE0100010; +parameter val_sd0__Response0 = 32'h00000000; +parameter mask_sd0__Response0 = 32'hFFFFFFFF; + +parameter sd0__Response1 = 32'hE0100014; +parameter val_sd0__Response1 = 32'h00000000; +parameter mask_sd0__Response1 = 32'hFFFFFFFF; + +parameter sd0__Response2 = 32'hE0100018; +parameter val_sd0__Response2 = 32'h00000000; +parameter mask_sd0__Response2 = 32'hFFFFFFFF; + +parameter sd0__Response3 = 32'hE010001C; +parameter val_sd0__Response3 = 32'h00000000; +parameter mask_sd0__Response3 = 32'hFFFFFFFF; + +parameter sd0__Buffer_Data_Port = 32'hE0100020; +parameter val_sd0__Buffer_Data_Port = 32'h00000000; +parameter mask_sd0__Buffer_Data_Port = 32'hFFFFFFFF; + +parameter sd0__Present_State = 32'hE0100024; +parameter val_sd0__Present_State = 32'h01F20000; +parameter mask_sd0__Present_State = 32'h01FFFFFF; + +parameter sd0__Host_control_Power_control_Block_Gap_Control_Wakeup_control = 32'hE0100028; +parameter val_sd0__Host_control_Power_control_Block_Gap_Control_Wakeup_control = 32'h00000000; +parameter mask_sd0__Host_control_Power_control_Block_Gap_Control_Wakeup_control = 32'hFFFFFFFF; + +parameter sd0__Clock_Control_Timeout_control_Software_reset = 32'hE010002C; +parameter val_sd0__Clock_Control_Timeout_control_Software_reset = 32'h00000000; +parameter mask_sd0__Clock_Control_Timeout_control_Software_reset = 32'h07FFFFFF; + +parameter sd0__Normal_interrupt_status_Error_interrupt_status = 32'hE0100030; +parameter val_sd0__Normal_interrupt_status_Error_interrupt_status = 32'h00000000; +parameter mask_sd0__Normal_interrupt_status_Error_interrupt_status = 32'h3FFFFFFF; + +parameter sd0__Normal_interrupt_status_enable_Error_interrupt_status_enable = 32'hE0100034; +parameter val_sd0__Normal_interrupt_status_enable_Error_interrupt_status_enable = 32'h00000000; +parameter mask_sd0__Normal_interrupt_status_enable_Error_interrupt_status_enable = 32'h3FFFFFFF; + +parameter sd0__Normal_interrupt_signal_enable_Error_interrupt_signal_enable = 32'hE0100038; +parameter val_sd0__Normal_interrupt_signal_enable_Error_interrupt_signal_enable = 32'h00000000; +parameter mask_sd0__Normal_interrupt_signal_enable_Error_interrupt_signal_enable = 32'h3FFFFFFF; + +parameter sd0__Auto_CMD12_error_status = 32'hE010003C; +parameter val_sd0__Auto_CMD12_error_status = 32'h00000000; +parameter mask_sd0__Auto_CMD12_error_status = 32'h000000FF; + +parameter sd0__Capabilities = 32'hE0100040; +parameter val_sd0__Capabilities = 32'h69EC0080; +parameter mask_sd0__Capabilities = 32'h7FFFFFFF; + +parameter sd0__Maximum_current_capabilities = 32'hE0100048; +parameter val_sd0__Maximum_current_capabilities = 32'h00000001; +parameter mask_sd0__Maximum_current_capabilities = 32'h00FFFFFF; + +parameter sd0__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status = 32'hE0100050; +parameter val_sd0__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status = 32'h00000000; +parameter mask_sd0__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status = 32'hFFFFFFFF; + +parameter sd0__ADMA_error_status = 32'hE0100054; +parameter val_sd0__ADMA_error_status = 32'h00000000; +parameter mask_sd0__ADMA_error_status = 32'h00000007; + +parameter sd0__ADMA_system_address = 32'hE0100058; +parameter val_sd0__ADMA_system_address = 32'h00000000; +parameter mask_sd0__ADMA_system_address = 32'hFFFFFFFF; + +parameter sd0__Boot_Timeout_control = 32'hE0100060; +parameter val_sd0__Boot_Timeout_control = 32'h00000000; +parameter mask_sd0__Boot_Timeout_control = 32'hFFFFFFFF; + +parameter sd0__Debug_Selection = 32'hE0100064; +parameter val_sd0__Debug_Selection = 32'h00000000; +parameter mask_sd0__Debug_Selection = 32'h00000001; + +parameter sd0__SPI_interrupt_support = 32'hE01000F0; +parameter val_sd0__SPI_interrupt_support = 32'h00000000; +parameter mask_sd0__SPI_interrupt_support = 32'h000000FF; + +parameter sd0__Slot_interrupt_status_Host_controller_version = 32'hE01000FC; +parameter val_sd0__Slot_interrupt_status_Host_controller_version = 32'h89010000; +parameter mask_sd0__Slot_interrupt_status_Host_controller_version = 32'hFFFFFFFF; + + +// ************************************************************ +// Module sd1 sdio +// doc version: 4.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter sd1__SDMA_system_address_register = 32'hE0101000; +parameter val_sd1__SDMA_system_address_register = 32'h00000000; +parameter mask_sd1__SDMA_system_address_register = 32'hFFFFFFFF; + +parameter sd1__Block_Size_Block_Count = 32'hE0101004; +parameter val_sd1__Block_Size_Block_Count = 32'h00000000; +parameter mask_sd1__Block_Size_Block_Count = 32'hFFFFFFFF; + +parameter sd1__Argument = 32'hE0101008; +parameter val_sd1__Argument = 32'h00000000; +parameter mask_sd1__Argument = 32'hFFFFFFFF; + +parameter sd1__Transfer_Mode_Command = 32'hE010100C; +parameter val_sd1__Transfer_Mode_Command = 32'h00000000; +parameter mask_sd1__Transfer_Mode_Command = 32'h1FFFFFFF; + +parameter sd1__Response0 = 32'hE0101010; +parameter val_sd1__Response0 = 32'h00000000; +parameter mask_sd1__Response0 = 32'hFFFFFFFF; + +parameter sd1__Response1 = 32'hE0101014; +parameter val_sd1__Response1 = 32'h00000000; +parameter mask_sd1__Response1 = 32'hFFFFFFFF; + +parameter sd1__Response2 = 32'hE0101018; +parameter val_sd1__Response2 = 32'h00000000; +parameter mask_sd1__Response2 = 32'hFFFFFFFF; + +parameter sd1__Response3 = 32'hE010101C; +parameter val_sd1__Response3 = 32'h00000000; +parameter mask_sd1__Response3 = 32'hFFFFFFFF; + +parameter sd1__Buffer_Data_Port = 32'hE0101020; +parameter val_sd1__Buffer_Data_Port = 32'h00000000; +parameter mask_sd1__Buffer_Data_Port = 32'hFFFFFFFF; + +parameter sd1__Present_State = 32'hE0101024; +parameter val_sd1__Present_State = 32'h01F20000; +parameter mask_sd1__Present_State = 32'h01FFFFFF; + +parameter sd1__Host_control_Power_control_Block_Gap_Control_Wakeup_control = 32'hE0101028; +parameter val_sd1__Host_control_Power_control_Block_Gap_Control_Wakeup_control = 32'h00000000; +parameter mask_sd1__Host_control_Power_control_Block_Gap_Control_Wakeup_control = 32'hFFFFFFFF; + +parameter sd1__Clock_Control_Timeout_control_Software_reset = 32'hE010102C; +parameter val_sd1__Clock_Control_Timeout_control_Software_reset = 32'h00000000; +parameter mask_sd1__Clock_Control_Timeout_control_Software_reset = 32'h07FFFFFF; + +parameter sd1__Normal_interrupt_status_Error_interrupt_status = 32'hE0101030; +parameter val_sd1__Normal_interrupt_status_Error_interrupt_status = 32'h00000000; +parameter mask_sd1__Normal_interrupt_status_Error_interrupt_status = 32'h3FFFFFFF; + +parameter sd1__Normal_interrupt_status_enable_Error_interrupt_status_enable = 32'hE0101034; +parameter val_sd1__Normal_interrupt_status_enable_Error_interrupt_status_enable = 32'h00000000; +parameter mask_sd1__Normal_interrupt_status_enable_Error_interrupt_status_enable = 32'h3FFFFFFF; + +parameter sd1__Normal_interrupt_signal_enable_Error_interrupt_signal_enable = 32'hE0101038; +parameter val_sd1__Normal_interrupt_signal_enable_Error_interrupt_signal_enable = 32'h00000000; +parameter mask_sd1__Normal_interrupt_signal_enable_Error_interrupt_signal_enable = 32'h3FFFFFFF; + +parameter sd1__Auto_CMD12_error_status = 32'hE010103C; +parameter val_sd1__Auto_CMD12_error_status = 32'h00000000; +parameter mask_sd1__Auto_CMD12_error_status = 32'h000000FF; + +parameter sd1__Capabilities = 32'hE0101040; +parameter val_sd1__Capabilities = 32'h69EC0080; +parameter mask_sd1__Capabilities = 32'h7FFFFFFF; + +parameter sd1__Maximum_current_capabilities = 32'hE0101048; +parameter val_sd1__Maximum_current_capabilities = 32'h00000001; +parameter mask_sd1__Maximum_current_capabilities = 32'h00FFFFFF; + +parameter sd1__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status = 32'hE0101050; +parameter val_sd1__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status = 32'h00000000; +parameter mask_sd1__Force_event_for_AutoCmd12_Error_Status_Force_event_register_for_error_interrupt_status = 32'hFFFFFFFF; + +parameter sd1__ADMA_error_status = 32'hE0101054; +parameter val_sd1__ADMA_error_status = 32'h00000000; +parameter mask_sd1__ADMA_error_status = 32'h00000007; + +parameter sd1__ADMA_system_address = 32'hE0101058; +parameter val_sd1__ADMA_system_address = 32'h00000000; +parameter mask_sd1__ADMA_system_address = 32'hFFFFFFFF; + +parameter sd1__Boot_Timeout_control = 32'hE0101060; +parameter val_sd1__Boot_Timeout_control = 32'h00000000; +parameter mask_sd1__Boot_Timeout_control = 32'hFFFFFFFF; + +parameter sd1__Debug_Selection = 32'hE0101064; +parameter val_sd1__Debug_Selection = 32'h00000000; +parameter mask_sd1__Debug_Selection = 32'h00000001; + +parameter sd1__SPI_interrupt_support = 32'hE01010F0; +parameter val_sd1__SPI_interrupt_support = 32'h00000000; +parameter mask_sd1__SPI_interrupt_support = 32'h000000FF; + +parameter sd1__Slot_interrupt_status_Host_controller_version = 32'hE01010FC; +parameter val_sd1__Slot_interrupt_status_Host_controller_version = 32'h89010000; +parameter mask_sd1__Slot_interrupt_status_Host_controller_version = 32'hFFFFFFFF; + + +// ************************************************************ +// Module slcr slcr +// doc version: 1.3, based on 11/18/2010 SLCR_spec.doc +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter slcr__SCL = 32'hF8000000; +parameter val_slcr__SCL = 32'h00000000; +parameter mask_slcr__SCL = 32'hFFFFFFFF; + +parameter slcr__SLCR_LOCK = 32'hF8000004; +parameter val_slcr__SLCR_LOCK = 32'h00000000; +parameter mask_slcr__SLCR_LOCK = 32'hFFFFFFFF; + +parameter slcr__SLCR_UNLOCK = 32'hF8000008; +parameter val_slcr__SLCR_UNLOCK = 32'h00000000; +parameter mask_slcr__SLCR_UNLOCK = 32'hFFFFFFFF; + +parameter slcr__SLCR_LOCKSTA = 32'hF800000C; +parameter val_slcr__SLCR_LOCKSTA = 32'h00000001; +parameter mask_slcr__SLCR_LOCKSTA = 32'hFFFFFFFF; + +parameter slcr__ARM_PLL_CTRL = 32'hF8000100; +parameter val_slcr__ARM_PLL_CTRL = 32'h0001A008; +parameter mask_slcr__ARM_PLL_CTRL = 32'hFFFFFFFF; + +parameter slcr__DDR_PLL_CTRL = 32'hF8000104; +parameter val_slcr__DDR_PLL_CTRL = 32'h0001A008; +parameter mask_slcr__DDR_PLL_CTRL = 32'hFFFFFFFF; + +parameter slcr__IO_PLL_CTRL = 32'hF8000108; +parameter val_slcr__IO_PLL_CTRL = 32'h0001A008; +parameter mask_slcr__IO_PLL_CTRL = 32'hFFFFFFFF; + +parameter slcr__PLL_STATUS = 32'hF800010C; +parameter val_slcr__PLL_STATUS = 32'h0000003F; +parameter mask_slcr__PLL_STATUS = 32'hFFFFFFFF; + +parameter slcr__ARM_PLL_CFG = 32'hF8000110; +parameter val_slcr__ARM_PLL_CFG = 32'h00177EA0; +parameter mask_slcr__ARM_PLL_CFG = 32'hFFFFFFFF; + +parameter slcr__DDR_PLL_CFG = 32'hF8000114; +parameter val_slcr__DDR_PLL_CFG = 32'h00177EA0; +parameter mask_slcr__DDR_PLL_CFG = 32'hFFFFFFFF; + +parameter slcr__IO_PLL_CFG = 32'hF8000118; +parameter val_slcr__IO_PLL_CFG = 32'h00177EA0; +parameter mask_slcr__IO_PLL_CFG = 32'hFFFFFFFF; + +parameter slcr__PLL_BG_CTRL = 32'hF800011C; +parameter val_slcr__PLL_BG_CTRL = 32'h00000000; +parameter mask_slcr__PLL_BG_CTRL = 32'hFFFFFFFF; + +parameter slcr__ARM_CLK_CTRL = 32'hF8000120; +parameter val_slcr__ARM_CLK_CTRL = 32'h1F000400; +parameter mask_slcr__ARM_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__DDR_CLK_CTRL = 32'hF8000124; +parameter val_slcr__DDR_CLK_CTRL = 32'h18400003; +parameter mask_slcr__DDR_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__DCI_CLK_CTRL = 32'hF8000128; +parameter val_slcr__DCI_CLK_CTRL = 32'h01E03201; +parameter mask_slcr__DCI_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__APER_CLK_CTRL = 32'hF800012C; +parameter val_slcr__APER_CLK_CTRL = 32'h01FFCCCD; +parameter mask_slcr__APER_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__USB0_CLK_CTRL = 32'hF8000130; +parameter val_slcr__USB0_CLK_CTRL = 32'h00101941; +parameter mask_slcr__USB0_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__USB1_CLK_CTRL = 32'hF8000134; +parameter val_slcr__USB1_CLK_CTRL = 32'h00101941; +parameter mask_slcr__USB1_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__GEM0_RCLK_CTRL = 32'hF8000138; +parameter val_slcr__GEM0_RCLK_CTRL = 32'h00000001; +parameter mask_slcr__GEM0_RCLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__GEM1_RCLK_CTRL = 32'hF800013C; +parameter val_slcr__GEM1_RCLK_CTRL = 32'h00000001; +parameter mask_slcr__GEM1_RCLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__GEM0_CLK_CTRL = 32'hF8000140; +parameter val_slcr__GEM0_CLK_CTRL = 32'h00003C01; +parameter mask_slcr__GEM0_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__GEM1_CLK_CTRL = 32'hF8000144; +parameter val_slcr__GEM1_CLK_CTRL = 32'h00003C01; +parameter mask_slcr__GEM1_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__SMC_CLK_CTRL = 32'hF8000148; +parameter val_slcr__SMC_CLK_CTRL = 32'h00003C21; +parameter mask_slcr__SMC_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__LQSPI_CLK_CTRL = 32'hF800014C; +parameter val_slcr__LQSPI_CLK_CTRL = 32'h00002821; +parameter mask_slcr__LQSPI_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__SDIO_CLK_CTRL = 32'hF8000150; +parameter val_slcr__SDIO_CLK_CTRL = 32'h00001E03; +parameter mask_slcr__SDIO_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__UART_CLK_CTRL = 32'hF8000154; +parameter val_slcr__UART_CLK_CTRL = 32'h00003F03; +parameter mask_slcr__UART_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__SPI_CLK_CTRL = 32'hF8000158; +parameter val_slcr__SPI_CLK_CTRL = 32'h00003F03; +parameter mask_slcr__SPI_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__CAN_CLK_CTRL = 32'hF800015C; +parameter val_slcr__CAN_CLK_CTRL = 32'h00501903; +parameter mask_slcr__CAN_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__CAN_MIOCLK_CTRL = 32'hF8000160; +parameter val_slcr__CAN_MIOCLK_CTRL = 32'h00000000; +parameter mask_slcr__CAN_MIOCLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__DBG_CLK_CTRL = 32'hF8000164; +parameter val_slcr__DBG_CLK_CTRL = 32'h00000F03; +parameter mask_slcr__DBG_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__PCAP_CLK_CTRL = 32'hF8000168; +parameter val_slcr__PCAP_CLK_CTRL = 32'h00000F01; +parameter mask_slcr__PCAP_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__TOPSW_CLK_CTRL = 32'hF800016C; +parameter val_slcr__TOPSW_CLK_CTRL = 32'h00000000; +parameter mask_slcr__TOPSW_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA0_CLK_CTRL = 32'hF8000170; +parameter val_slcr__FPGA0_CLK_CTRL = 32'h00101800; +parameter mask_slcr__FPGA0_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA0_THR_CTRL = 32'hF8000174; +parameter val_slcr__FPGA0_THR_CTRL = 32'h00000000; +parameter mask_slcr__FPGA0_THR_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA0_THR_CNT = 32'hF8000178; +parameter val_slcr__FPGA0_THR_CNT = 32'h00000000; +parameter mask_slcr__FPGA0_THR_CNT = 32'hFFFFFFFF; + +parameter slcr__FPGA0_THR_STA = 32'hF800017C; +parameter val_slcr__FPGA0_THR_STA = 32'h00010000; +parameter mask_slcr__FPGA0_THR_STA = 32'hFFFFFFFF; + +parameter slcr__FPGA1_CLK_CTRL = 32'hF8000180; +parameter val_slcr__FPGA1_CLK_CTRL = 32'h00101800; +parameter mask_slcr__FPGA1_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA1_THR_CTRL = 32'hF8000184; +parameter val_slcr__FPGA1_THR_CTRL = 32'h00000000; +parameter mask_slcr__FPGA1_THR_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA1_THR_CNT = 32'hF8000188; +parameter val_slcr__FPGA1_THR_CNT = 32'h00000000; +parameter mask_slcr__FPGA1_THR_CNT = 32'hFFFFFFFF; + +parameter slcr__FPGA1_THR_STA = 32'hF800018C; +parameter val_slcr__FPGA1_THR_STA = 32'h00010000; +parameter mask_slcr__FPGA1_THR_STA = 32'hFFFFFFFF; + +parameter slcr__FPGA2_CLK_CTRL = 32'hF8000190; +parameter val_slcr__FPGA2_CLK_CTRL = 32'h00101800; +parameter mask_slcr__FPGA2_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA2_THR_CTRL = 32'hF8000194; +parameter val_slcr__FPGA2_THR_CTRL = 32'h00000000; +parameter mask_slcr__FPGA2_THR_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA2_THR_CNT = 32'hF8000198; +parameter val_slcr__FPGA2_THR_CNT = 32'h00000000; +parameter mask_slcr__FPGA2_THR_CNT = 32'hFFFFFFFF; + +parameter slcr__FPGA2_THR_STA = 32'hF800019C; +parameter val_slcr__FPGA2_THR_STA = 32'h00010000; +parameter mask_slcr__FPGA2_THR_STA = 32'hFFFFFFFF; + +parameter slcr__FPGA3_CLK_CTRL = 32'hF80001A0; +parameter val_slcr__FPGA3_CLK_CTRL = 32'h00101800; +parameter mask_slcr__FPGA3_CLK_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA3_THR_CTRL = 32'hF80001A4; +parameter val_slcr__FPGA3_THR_CTRL = 32'h00000000; +parameter mask_slcr__FPGA3_THR_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA3_THR_CNT = 32'hF80001A8; +parameter val_slcr__FPGA3_THR_CNT = 32'h00000000; +parameter mask_slcr__FPGA3_THR_CNT = 32'hFFFFFFFF; + +parameter slcr__FPGA3_THR_STA = 32'hF80001AC; +parameter val_slcr__FPGA3_THR_STA = 32'h00010000; +parameter mask_slcr__FPGA3_THR_STA = 32'hFFFFFFFF; + +parameter slcr__SRST_UART_CTRL = 32'hF80001B0; +parameter val_slcr__SRST_UART_CTRL = 32'h00000000; +parameter mask_slcr__SRST_UART_CTRL = 32'hFFFFFFFF; + +parameter slcr__BANDGAP_TRIM = 32'hF80001B8; +parameter val_slcr__BANDGAP_TRIM = 32'h0000001F; +parameter mask_slcr__BANDGAP_TRIM = 32'hFFFFFFFF; + +parameter slcr__CC_TEST = 32'hF80001BC; +parameter val_slcr__CC_TEST = 32'h00000000; +parameter mask_slcr__CC_TEST = 32'hFFFFFFFF; + +parameter slcr__PLL_PREDIVISOR = 32'hF80001C0; +parameter val_slcr__PLL_PREDIVISOR = 32'h00000001; +parameter mask_slcr__PLL_PREDIVISOR = 32'hFFFFFFFF; + +parameter slcr__CLK_621_TRUE = 32'hF80001C4; +parameter val_slcr__CLK_621_TRUE = 32'h00000001; +parameter mask_slcr__CLK_621_TRUE = 32'hFFFFFFC1; + +parameter slcr__PICTURE_DBG = 32'hF80001D0; +parameter val_slcr__PICTURE_DBG = 32'h00000000; +parameter mask_slcr__PICTURE_DBG = 32'hFFFFFFFF; + +parameter slcr__PICTURE_DBG_UCNT = 32'hF80001D4; +parameter val_slcr__PICTURE_DBG_UCNT = 32'h00000000; +parameter mask_slcr__PICTURE_DBG_UCNT = 32'hFFFFFFFF; + +parameter slcr__PICTURE_DBG_LCNT = 32'hF80001D8; +parameter val_slcr__PICTURE_DBG_LCNT = 32'h00000000; +parameter mask_slcr__PICTURE_DBG_LCNT = 32'hFFFFFFFF; + +parameter slcr__PSS_RST_CTRL = 32'hF8000200; +parameter val_slcr__PSS_RST_CTRL = 32'h00000000; +parameter mask_slcr__PSS_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__DDR_RST_CTRL = 32'hF8000204; +parameter val_slcr__DDR_RST_CTRL = 32'h00000000; +parameter mask_slcr__DDR_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__TOPSW_RST_CTRL = 32'hF8000208; +parameter val_slcr__TOPSW_RST_CTRL = 32'h00000000; +parameter mask_slcr__TOPSW_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__DMAC_RST_CTRL = 32'hF800020C; +parameter val_slcr__DMAC_RST_CTRL = 32'h00000000; +parameter mask_slcr__DMAC_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__USB_RST_CTRL = 32'hF8000210; +parameter val_slcr__USB_RST_CTRL = 32'h00000000; +parameter mask_slcr__USB_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__GEM_RST_CTRL = 32'hF8000214; +parameter val_slcr__GEM_RST_CTRL = 32'h00000000; +parameter mask_slcr__GEM_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__SDIO_RST_CTRL = 32'hF8000218; +parameter val_slcr__SDIO_RST_CTRL = 32'h00000000; +parameter mask_slcr__SDIO_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__SPI_RST_CTRL = 32'hF800021C; +parameter val_slcr__SPI_RST_CTRL = 32'h00000000; +parameter mask_slcr__SPI_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__CAN_RST_CTRL = 32'hF8000220; +parameter val_slcr__CAN_RST_CTRL = 32'h00000000; +parameter mask_slcr__CAN_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__I2C_RST_CTRL = 32'hF8000224; +parameter val_slcr__I2C_RST_CTRL = 32'h00000000; +parameter mask_slcr__I2C_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__UART_RST_CTRL = 32'hF8000228; +parameter val_slcr__UART_RST_CTRL = 32'h00000000; +parameter mask_slcr__UART_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__GPIO_RST_CTRL = 32'hF800022C; +parameter val_slcr__GPIO_RST_CTRL = 32'h00000000; +parameter mask_slcr__GPIO_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__LQSPI_RST_CTRL = 32'hF8000230; +parameter val_slcr__LQSPI_RST_CTRL = 32'h00000000; +parameter mask_slcr__LQSPI_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__SMC_RST_CTRL = 32'hF8000234; +parameter val_slcr__SMC_RST_CTRL = 32'h00000000; +parameter mask_slcr__SMC_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__OCM_RST_CTRL = 32'hF8000238; +parameter val_slcr__OCM_RST_CTRL = 32'h00000000; +parameter mask_slcr__OCM_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__DEVCI_RST_CTRL = 32'hF800023C; +parameter val_slcr__DEVCI_RST_CTRL = 32'h00000000; +parameter mask_slcr__DEVCI_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__FPGA_RST_CTRL = 32'hF8000240; +parameter val_slcr__FPGA_RST_CTRL = 32'h01F33F0F; +parameter mask_slcr__FPGA_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__A9_CPU_RST_CTRL = 32'hF8000244; +parameter val_slcr__A9_CPU_RST_CTRL = 32'h00000000; +parameter mask_slcr__A9_CPU_RST_CTRL = 32'hFFFFFFFF; + +parameter slcr__RS_AWDT_CTRL = 32'hF800024C; +parameter val_slcr__RS_AWDT_CTRL = 32'h00000000; +parameter mask_slcr__RS_AWDT_CTRL = 32'hFFFFFFFF; + +parameter slcr__RST_REASON = 32'hF8000250; +parameter val_slcr__RST_REASON = 32'h00000040; +parameter mask_slcr__RST_REASON = 32'hFFFFFFFF; + +parameter slcr__RST_REASON_CLR = 32'hF8000254; +parameter val_slcr__RST_REASON_CLR = 32'h00000000; +parameter mask_slcr__RST_REASON_CLR = 32'hFFFFFFFF; + +parameter slcr__REBOOT_STATUS = 32'hF8000258; +parameter val_slcr__REBOOT_STATUS = 32'h00400000; +parameter mask_slcr__REBOOT_STATUS = 32'hFFFFFFFF; + +parameter slcr__BOOT_MODE = 32'hF800025C; +parameter val_slcr__BOOT_MODE = 32'h00000000; +parameter mask_slcr__BOOT_MODE = 32'hFFFFFFF0; + +parameter slcr__APU_CTRL = 32'hF8000300; +parameter val_slcr__APU_CTRL = 32'h00000000; +parameter mask_slcr__APU_CTRL = 32'hFFFFFFFF; + +parameter slcr__WDT_CLK_SEL = 32'hF8000304; +parameter val_slcr__WDT_CLK_SEL = 32'h00000000; +parameter mask_slcr__WDT_CLK_SEL = 32'hFFFFFFFF; + +parameter slcr__TZ_OCM_RAM0 = 32'hF8000400; +parameter val_slcr__TZ_OCM_RAM0 = 32'h00000000; +parameter mask_slcr__TZ_OCM_RAM0 = 32'hFFFFFFFF; + +parameter slcr__TZ_OCM_RAM1 = 32'hF8000404; +parameter val_slcr__TZ_OCM_RAM1 = 32'h00000000; +parameter mask_slcr__TZ_OCM_RAM1 = 32'hFFFFFFFF; + +parameter slcr__TZ_OCM_ROM = 32'hF8000408; +parameter val_slcr__TZ_OCM_ROM = 32'h00000000; +parameter mask_slcr__TZ_OCM_ROM = 32'hFFFFFFFF; + +parameter slcr__TZ_DDR_RAM = 32'hF8000430; +parameter val_slcr__TZ_DDR_RAM = 32'h00000000; +parameter mask_slcr__TZ_DDR_RAM = 32'h00000001; + +parameter slcr__TZ_DMA_NS = 32'hF8000440; +parameter val_slcr__TZ_DMA_NS = 32'h00000000; +parameter mask_slcr__TZ_DMA_NS = 32'hFFFFFFFF; + +parameter slcr__TZ_DMA_IRQ_NS = 32'hF8000444; +parameter val_slcr__TZ_DMA_IRQ_NS = 32'h00000000; +parameter mask_slcr__TZ_DMA_IRQ_NS = 32'hFFFFFFFF; + +parameter slcr__TZ_DMA_PERIPH_NS = 32'hF8000448; +parameter val_slcr__TZ_DMA_PERIPH_NS = 32'h00000000; +parameter mask_slcr__TZ_DMA_PERIPH_NS = 32'hFFFFFFFF; + +parameter slcr__TZ_GEM = 32'hF8000450; +parameter val_slcr__TZ_GEM = 32'h00000000; +parameter mask_slcr__TZ_GEM = 32'hFFFFFFFF; + +parameter slcr__TZ_SDIO = 32'hF8000454; +parameter val_slcr__TZ_SDIO = 32'h00000000; +parameter mask_slcr__TZ_SDIO = 32'hFFFFFFFF; + +parameter slcr__TZ_USB = 32'hF8000458; +parameter val_slcr__TZ_USB = 32'h00000000; +parameter mask_slcr__TZ_USB = 32'hFFFFFFFF; + +parameter slcr__TZ_FPGA_M = 32'hF8000484; +parameter val_slcr__TZ_FPGA_M = 32'h00000000; +parameter mask_slcr__TZ_FPGA_M = 32'hFFFFFFFF; + +parameter slcr__TZ_FPGA_AFI = 32'hF8000488; +parameter val_slcr__TZ_FPGA_AFI = 32'h00000000; +parameter mask_slcr__TZ_FPGA_AFI = 32'hFFFFFFFF; + +parameter slcr__DBG_CTRL = 32'hF8000500; +parameter val_slcr__DBG_CTRL = 32'h00000000; +parameter mask_slcr__DBG_CTRL = 32'hFFFFFFFF; + +parameter slcr__PSS_IDCODE = 32'hF8000530; +parameter val_slcr__PSS_IDCODE = 32'h03720093; +parameter mask_slcr__PSS_IDCODE = 32'h0FFE0FFF; + +parameter slcr__DDR_URGENT = 32'hF8000600; +parameter val_slcr__DDR_URGENT = 32'h00000000; +parameter mask_slcr__DDR_URGENT = 32'hFFFFFFFF; + +parameter slcr__DDR_CAL_START = 32'hF800060C; +parameter val_slcr__DDR_CAL_START = 32'h00000000; +parameter mask_slcr__DDR_CAL_START = 32'hFFFFFFFF; + +parameter slcr__DDR_REF_START = 32'hF8000614; +parameter val_slcr__DDR_REF_START = 32'h00000000; +parameter mask_slcr__DDR_REF_START = 32'hFFFFFFFF; + +parameter slcr__DDR_CMD_STA = 32'hF8000618; +parameter val_slcr__DDR_CMD_STA = 32'h00000000; +parameter mask_slcr__DDR_CMD_STA = 32'hFFFFFFFF; + +parameter slcr__DDR_URGENT_SEL = 32'hF800061C; +parameter val_slcr__DDR_URGENT_SEL = 32'h00000000; +parameter mask_slcr__DDR_URGENT_SEL = 32'hFFFFFFFF; + +parameter slcr__DDR_DFI_STATUS = 32'hF8000620; +parameter val_slcr__DDR_DFI_STATUS = 32'h00000000; +parameter mask_slcr__DDR_DFI_STATUS = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_00 = 32'hF8000700; +parameter val_slcr__MIO_PIN_00 = 32'h00001601; +parameter mask_slcr__MIO_PIN_00 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_01 = 32'hF8000704; +parameter val_slcr__MIO_PIN_01 = 32'h00001601; +parameter mask_slcr__MIO_PIN_01 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_02 = 32'hF8000708; +parameter val_slcr__MIO_PIN_02 = 32'h00000601; +parameter mask_slcr__MIO_PIN_02 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_03 = 32'hF800070C; +parameter val_slcr__MIO_PIN_03 = 32'h00000601; +parameter mask_slcr__MIO_PIN_03 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_04 = 32'hF8000710; +parameter val_slcr__MIO_PIN_04 = 32'h00000601; +parameter mask_slcr__MIO_PIN_04 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_05 = 32'hF8000714; +parameter val_slcr__MIO_PIN_05 = 32'h00000601; +parameter mask_slcr__MIO_PIN_05 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_06 = 32'hF8000718; +parameter val_slcr__MIO_PIN_06 = 32'h00000601; +parameter mask_slcr__MIO_PIN_06 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_07 = 32'hF800071C; +parameter val_slcr__MIO_PIN_07 = 32'h00000601; +parameter mask_slcr__MIO_PIN_07 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_08 = 32'hF8000720; +parameter val_slcr__MIO_PIN_08 = 32'h00000601; +parameter mask_slcr__MIO_PIN_08 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_09 = 32'hF8000724; +parameter val_slcr__MIO_PIN_09 = 32'h00001601; +parameter mask_slcr__MIO_PIN_09 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_10 = 32'hF8000728; +parameter val_slcr__MIO_PIN_10 = 32'h00001601; +parameter mask_slcr__MIO_PIN_10 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_11 = 32'hF800072C; +parameter val_slcr__MIO_PIN_11 = 32'h00001601; +parameter mask_slcr__MIO_PIN_11 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_12 = 32'hF8000730; +parameter val_slcr__MIO_PIN_12 = 32'h00001601; +parameter mask_slcr__MIO_PIN_12 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_13 = 32'hF8000734; +parameter val_slcr__MIO_PIN_13 = 32'h00001601; +parameter mask_slcr__MIO_PIN_13 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_14 = 32'hF8000738; +parameter val_slcr__MIO_PIN_14 = 32'h00001601; +parameter mask_slcr__MIO_PIN_14 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_15 = 32'hF800073C; +parameter val_slcr__MIO_PIN_15 = 32'h00001601; +parameter mask_slcr__MIO_PIN_15 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_16 = 32'hF8000740; +parameter val_slcr__MIO_PIN_16 = 32'h00001601; +parameter mask_slcr__MIO_PIN_16 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_17 = 32'hF8000744; +parameter val_slcr__MIO_PIN_17 = 32'h00001601; +parameter mask_slcr__MIO_PIN_17 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_18 = 32'hF8000748; +parameter val_slcr__MIO_PIN_18 = 32'h00001601; +parameter mask_slcr__MIO_PIN_18 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_19 = 32'hF800074C; +parameter val_slcr__MIO_PIN_19 = 32'h00001601; +parameter mask_slcr__MIO_PIN_19 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_20 = 32'hF8000750; +parameter val_slcr__MIO_PIN_20 = 32'h00001601; +parameter mask_slcr__MIO_PIN_20 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_21 = 32'hF8000754; +parameter val_slcr__MIO_PIN_21 = 32'h00001601; +parameter mask_slcr__MIO_PIN_21 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_22 = 32'hF8000758; +parameter val_slcr__MIO_PIN_22 = 32'h00001601; +parameter mask_slcr__MIO_PIN_22 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_23 = 32'hF800075C; +parameter val_slcr__MIO_PIN_23 = 32'h00001601; +parameter mask_slcr__MIO_PIN_23 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_24 = 32'hF8000760; +parameter val_slcr__MIO_PIN_24 = 32'h00001601; +parameter mask_slcr__MIO_PIN_24 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_25 = 32'hF8000764; +parameter val_slcr__MIO_PIN_25 = 32'h00001601; +parameter mask_slcr__MIO_PIN_25 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_26 = 32'hF8000768; +parameter val_slcr__MIO_PIN_26 = 32'h00001601; +parameter mask_slcr__MIO_PIN_26 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_27 = 32'hF800076C; +parameter val_slcr__MIO_PIN_27 = 32'h00001601; +parameter mask_slcr__MIO_PIN_27 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_28 = 32'hF8000770; +parameter val_slcr__MIO_PIN_28 = 32'h00001601; +parameter mask_slcr__MIO_PIN_28 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_29 = 32'hF8000774; +parameter val_slcr__MIO_PIN_29 = 32'h00001601; +parameter mask_slcr__MIO_PIN_29 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_30 = 32'hF8000778; +parameter val_slcr__MIO_PIN_30 = 32'h00001601; +parameter mask_slcr__MIO_PIN_30 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_31 = 32'hF800077C; +parameter val_slcr__MIO_PIN_31 = 32'h00001601; +parameter mask_slcr__MIO_PIN_31 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_32 = 32'hF8000780; +parameter val_slcr__MIO_PIN_32 = 32'h00001601; +parameter mask_slcr__MIO_PIN_32 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_33 = 32'hF8000784; +parameter val_slcr__MIO_PIN_33 = 32'h00001601; +parameter mask_slcr__MIO_PIN_33 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_34 = 32'hF8000788; +parameter val_slcr__MIO_PIN_34 = 32'h00001601; +parameter mask_slcr__MIO_PIN_34 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_35 = 32'hF800078C; +parameter val_slcr__MIO_PIN_35 = 32'h00001601; +parameter mask_slcr__MIO_PIN_35 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_36 = 32'hF8000790; +parameter val_slcr__MIO_PIN_36 = 32'h00001601; +parameter mask_slcr__MIO_PIN_36 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_37 = 32'hF8000794; +parameter val_slcr__MIO_PIN_37 = 32'h00001601; +parameter mask_slcr__MIO_PIN_37 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_38 = 32'hF8000798; +parameter val_slcr__MIO_PIN_38 = 32'h00001601; +parameter mask_slcr__MIO_PIN_38 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_39 = 32'hF800079C; +parameter val_slcr__MIO_PIN_39 = 32'h00001601; +parameter mask_slcr__MIO_PIN_39 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_40 = 32'hF80007A0; +parameter val_slcr__MIO_PIN_40 = 32'h00001601; +parameter mask_slcr__MIO_PIN_40 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_41 = 32'hF80007A4; +parameter val_slcr__MIO_PIN_41 = 32'h00001601; +parameter mask_slcr__MIO_PIN_41 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_42 = 32'hF80007A8; +parameter val_slcr__MIO_PIN_42 = 32'h00001601; +parameter mask_slcr__MIO_PIN_42 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_43 = 32'hF80007AC; +parameter val_slcr__MIO_PIN_43 = 32'h00001601; +parameter mask_slcr__MIO_PIN_43 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_44 = 32'hF80007B0; +parameter val_slcr__MIO_PIN_44 = 32'h00001601; +parameter mask_slcr__MIO_PIN_44 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_45 = 32'hF80007B4; +parameter val_slcr__MIO_PIN_45 = 32'h00001601; +parameter mask_slcr__MIO_PIN_45 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_46 = 32'hF80007B8; +parameter val_slcr__MIO_PIN_46 = 32'h00001601; +parameter mask_slcr__MIO_PIN_46 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_47 = 32'hF80007BC; +parameter val_slcr__MIO_PIN_47 = 32'h00001601; +parameter mask_slcr__MIO_PIN_47 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_48 = 32'hF80007C0; +parameter val_slcr__MIO_PIN_48 = 32'h00001601; +parameter mask_slcr__MIO_PIN_48 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_49 = 32'hF80007C4; +parameter val_slcr__MIO_PIN_49 = 32'h00001601; +parameter mask_slcr__MIO_PIN_49 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_50 = 32'hF80007C8; +parameter val_slcr__MIO_PIN_50 = 32'h00001601; +parameter mask_slcr__MIO_PIN_50 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_51 = 32'hF80007CC; +parameter val_slcr__MIO_PIN_51 = 32'h00001601; +parameter mask_slcr__MIO_PIN_51 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_52 = 32'hF80007D0; +parameter val_slcr__MIO_PIN_52 = 32'h00001601; +parameter mask_slcr__MIO_PIN_52 = 32'hFFFFFFFF; + +parameter slcr__MIO_PIN_53 = 32'hF80007D4; +parameter val_slcr__MIO_PIN_53 = 32'h00001601; +parameter mask_slcr__MIO_PIN_53 = 32'hFFFFFFFF; + +parameter slcr__MIO_FMIO_GEM_SEL = 32'hF8000800; +parameter val_slcr__MIO_FMIO_GEM_SEL = 32'h00000000; +parameter mask_slcr__MIO_FMIO_GEM_SEL = 32'hFFFFFFFF; + +parameter slcr__MIO_LOOPBACK = 32'hF8000804; +parameter val_slcr__MIO_LOOPBACK = 32'h00000000; +parameter mask_slcr__MIO_LOOPBACK = 32'hFFFFFFFF; + +parameter slcr__MIO_MST_TRI0 = 32'hF800080C; +parameter val_slcr__MIO_MST_TRI0 = 32'hFFFFFFFF; +parameter mask_slcr__MIO_MST_TRI0 = 32'hFFFFFFFF; + +parameter slcr__MIO_MST_TRI1 = 32'hF8000810; +parameter val_slcr__MIO_MST_TRI1 = 32'h003FFFFF; +parameter mask_slcr__MIO_MST_TRI1 = 32'hFFFFFFFF; + +parameter slcr__SD0_WP_CD_SEL = 32'hF8000830; +parameter val_slcr__SD0_WP_CD_SEL = 32'h00000000; +parameter mask_slcr__SD0_WP_CD_SEL = 32'hFFFFFFFF; + +parameter slcr__SD1_WP_CD_SEL = 32'hF8000834; +parameter val_slcr__SD1_WP_CD_SEL = 32'h00000000; +parameter mask_slcr__SD1_WP_CD_SEL = 32'hFFFFFFFF; + +parameter slcr__LVL_SHFTR_EN = 32'hF8000900; +parameter val_slcr__LVL_SHFTR_EN = 32'h00000000; +parameter mask_slcr__LVL_SHFTR_EN = 32'hFFFFFFFF; + +parameter slcr__OCM_CFG = 32'hF8000910; +parameter val_slcr__OCM_CFG = 32'h00000000; +parameter mask_slcr__OCM_CFG = 32'hFFFFFFFF; + +parameter slcr__CPU0_RAM0 = 32'hF8000A00; +parameter val_slcr__CPU0_RAM0 = 32'h00020202; +parameter mask_slcr__CPU0_RAM0 = 32'h00FFFFFF; + +parameter slcr__CPU0_RAM1 = 32'hF8000A04; +parameter val_slcr__CPU0_RAM1 = 32'h00020202; +parameter mask_slcr__CPU0_RAM1 = 32'h00FFFFFF; + +parameter slcr__CPU0_RAM2 = 32'hF8000A08; +parameter val_slcr__CPU0_RAM2 = 32'h02020202; +parameter mask_slcr__CPU0_RAM2 = 32'hFFFFFFFF; + +parameter slcr__CPU1_RAM0 = 32'hF8000A0C; +parameter val_slcr__CPU1_RAM0 = 32'h00020202; +parameter mask_slcr__CPU1_RAM0 = 32'h00FFFFFF; + +parameter slcr__CPU1_RAM1 = 32'hF8000A10; +parameter val_slcr__CPU1_RAM1 = 32'h00020202; +parameter mask_slcr__CPU1_RAM1 = 32'h00FFFFFF; + +parameter slcr__CPU1_RAM2 = 32'hF8000A14; +parameter val_slcr__CPU1_RAM2 = 32'h02020202; +parameter mask_slcr__CPU1_RAM2 = 32'hFFFFFFFF; + +parameter slcr__SCU_RAM = 32'hF8000A18; +parameter val_slcr__SCU_RAM = 32'h00000002; +parameter mask_slcr__SCU_RAM = 32'h000000FF; + +parameter slcr__L2C_RAM = 32'hF8000A1C; +parameter val_slcr__L2C_RAM = 32'h00020202; +parameter mask_slcr__L2C_RAM = 32'h00FFFFFF; + +parameter slcr__IOU_RAM_GEM01 = 32'hF8000A30; +parameter val_slcr__IOU_RAM_GEM01 = 32'h09090909; +parameter mask_slcr__IOU_RAM_GEM01 = 32'hFFFFFFFF; + +parameter slcr__IOU_RAM_USB01 = 32'hF8000A34; +parameter val_slcr__IOU_RAM_USB01 = 32'h09090909; +parameter mask_slcr__IOU_RAM_USB01 = 32'hFFFFFFFF; + +parameter slcr__IOU_RAM_SDIO0 = 32'hF8000A38; +parameter val_slcr__IOU_RAM_SDIO0 = 32'h09090909; +parameter mask_slcr__IOU_RAM_SDIO0 = 32'hFFFFFFFF; + +parameter slcr__IOU_RAM_SDIO1 = 32'hF8000A3C; +parameter val_slcr__IOU_RAM_SDIO1 = 32'h09090909; +parameter mask_slcr__IOU_RAM_SDIO1 = 32'hFFFFFFFF; + +parameter slcr__IOU_RAM_CAN0 = 32'hF8000A40; +parameter val_slcr__IOU_RAM_CAN0 = 32'h00090909; +parameter mask_slcr__IOU_RAM_CAN0 = 32'h00FFFFFF; + +parameter slcr__IOU_RAM_CAN1 = 32'hF8000A44; +parameter val_slcr__IOU_RAM_CAN1 = 32'h00090909; +parameter mask_slcr__IOU_RAM_CAN1 = 32'h00FFFFFF; + +parameter slcr__IOU_RAM_LQSPI = 32'hF8000A48; +parameter val_slcr__IOU_RAM_LQSPI = 32'h00000909; +parameter mask_slcr__IOU_RAM_LQSPI = 32'h0000FFFF; + +parameter slcr__DMAC_RAM = 32'hF8000A50; +parameter val_slcr__DMAC_RAM = 32'h00000009; +parameter mask_slcr__DMAC_RAM = 32'h000000FF; + +parameter slcr__AFI0_RAM0 = 32'hF8000A60; +parameter val_slcr__AFI0_RAM0 = 32'h09090909; +parameter mask_slcr__AFI0_RAM0 = 32'hFFFFFFFF; + +parameter slcr__AFI0_RAM1 = 32'hF8000A64; +parameter val_slcr__AFI0_RAM1 = 32'h09090909; +parameter mask_slcr__AFI0_RAM1 = 32'hFFFFFFFF; + +parameter slcr__AFI0_RAM2 = 32'hF8000A68; +parameter val_slcr__AFI0_RAM2 = 32'h00000909; +parameter mask_slcr__AFI0_RAM2 = 32'h0000FFFF; + +parameter slcr__AFI1_RAM0 = 32'hF8000A6C; +parameter val_slcr__AFI1_RAM0 = 32'h09090909; +parameter mask_slcr__AFI1_RAM0 = 32'hFFFFFFFF; + +parameter slcr__AFI1_RAM1 = 32'hF8000A70; +parameter val_slcr__AFI1_RAM1 = 32'h09090909; +parameter mask_slcr__AFI1_RAM1 = 32'hFFFFFFFF; + +parameter slcr__AFI1_RAM2 = 32'hF8000A74; +parameter val_slcr__AFI1_RAM2 = 32'h00000909; +parameter mask_slcr__AFI1_RAM2 = 32'h0000FFFF; + +parameter slcr__AFI2_RAM0 = 32'hF8000A78; +parameter val_slcr__AFI2_RAM0 = 32'h09090909; +parameter mask_slcr__AFI2_RAM0 = 32'hFFFFFFFF; + +parameter slcr__AFI2_RAM1 = 32'hF8000A7C; +parameter val_slcr__AFI2_RAM1 = 32'h09090909; +parameter mask_slcr__AFI2_RAM1 = 32'hFFFFFFFF; + +parameter slcr__AFI2_RAM2 = 32'hF8000A80; +parameter val_slcr__AFI2_RAM2 = 32'h00000909; +parameter mask_slcr__AFI2_RAM2 = 32'h0000FFFF; + +parameter slcr__AFI3_RAM0 = 32'hF8000A84; +parameter val_slcr__AFI3_RAM0 = 32'h09090909; +parameter mask_slcr__AFI3_RAM0 = 32'hFFFFFFFF; + +parameter slcr__AFI3_RAM1 = 32'hF8000A88; +parameter val_slcr__AFI3_RAM1 = 32'h09090909; +parameter mask_slcr__AFI3_RAM1 = 32'hFFFFFFFF; + +parameter slcr__AFI3_RAM2 = 32'hF8000A8C; +parameter val_slcr__AFI3_RAM2 = 32'h00000909; +parameter mask_slcr__AFI3_RAM2 = 32'h0000FFFF; + +parameter slcr__OCM_RAM = 32'hF8000A90; +parameter val_slcr__OCM_RAM = 32'h01010101; +parameter mask_slcr__OCM_RAM = 32'hFFFFFFFF; + +parameter slcr__OCM_ROM0 = 32'hF8000A94; +parameter val_slcr__OCM_ROM0 = 32'h09090909; +parameter mask_slcr__OCM_ROM0 = 32'hFFFFFFFF; + +parameter slcr__OCM_ROM1 = 32'hF8000A98; +parameter val_slcr__OCM_ROM1 = 32'h09090909; +parameter mask_slcr__OCM_ROM1 = 32'hFFFFFFFF; + +parameter slcr__DEVCI_RAM = 32'hF8000AA0; +parameter val_slcr__DEVCI_RAM = 32'h00000909; +parameter mask_slcr__DEVCI_RAM = 32'h0000FFFF; + +parameter slcr__CSG_RAM = 32'hF8000AB0; +parameter val_slcr__CSG_RAM = 32'h00000001; +parameter mask_slcr__CSG_RAM = 32'h000000FF; + +parameter slcr__GPIOB_CTRL = 32'hF8000B00; +parameter val_slcr__GPIOB_CTRL = 32'h00000000; +parameter mask_slcr__GPIOB_CTRL = 32'hFFFFFFFF; + +parameter slcr__GPIOB_CFG_CMOS18 = 32'hF8000B04; +parameter val_slcr__GPIOB_CFG_CMOS18 = 32'h00000000; +parameter mask_slcr__GPIOB_CFG_CMOS18 = 32'hFFFFFFFF; + +parameter slcr__GPIOB_CFG_CMOS25 = 32'hF8000B08; +parameter val_slcr__GPIOB_CFG_CMOS25 = 32'h00000000; +parameter mask_slcr__GPIOB_CFG_CMOS25 = 32'hFFFFFFFF; + +parameter slcr__GPIOB_CFG_CMOS33 = 32'hF8000B0C; +parameter val_slcr__GPIOB_CFG_CMOS33 = 32'h00000000; +parameter mask_slcr__GPIOB_CFG_CMOS33 = 32'hFFFFFFFF; + +parameter slcr__GPIOB_CFG_LVTTL = 32'hF8000B10; +parameter val_slcr__GPIOB_CFG_LVTTL = 32'h00000000; +parameter mask_slcr__GPIOB_CFG_LVTTL = 32'hFFFFFFFF; + +parameter slcr__GPIOB_CFG_HSTL = 32'hF8000B14; +parameter val_slcr__GPIOB_CFG_HSTL = 32'h00000000; +parameter mask_slcr__GPIOB_CFG_HSTL = 32'hFFFFFFFF; + +parameter slcr__GPIOB_DRVR_BIAS_CTRL = 32'hF8000B18; +parameter val_slcr__GPIOB_DRVR_BIAS_CTRL = 32'h00000000; +parameter mask_slcr__GPIOB_DRVR_BIAS_CTRL = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_ADDR0 = 32'hF8000B40; +parameter val_slcr__DDRIOB_ADDR0 = 32'h00000800; +parameter mask_slcr__DDRIOB_ADDR0 = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_ADDR1 = 32'hF8000B44; +parameter val_slcr__DDRIOB_ADDR1 = 32'h00000800; +parameter mask_slcr__DDRIOB_ADDR1 = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DATA0 = 32'hF8000B48; +parameter val_slcr__DDRIOB_DATA0 = 32'h00000800; +parameter mask_slcr__DDRIOB_DATA0 = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DATA1 = 32'hF8000B4C; +parameter val_slcr__DDRIOB_DATA1 = 32'h00000800; +parameter mask_slcr__DDRIOB_DATA1 = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DIFF0 = 32'hF8000B50; +parameter val_slcr__DDRIOB_DIFF0 = 32'h00000800; +parameter mask_slcr__DDRIOB_DIFF0 = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DIFF1 = 32'hF8000B54; +parameter val_slcr__DDRIOB_DIFF1 = 32'h00000800; +parameter mask_slcr__DDRIOB_DIFF1 = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_CLOCK = 32'hF8000B58; +parameter val_slcr__DDRIOB_CLOCK = 32'h00000800; +parameter mask_slcr__DDRIOB_CLOCK = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DRIVE_SLEW_ADDR = 32'hF8000B5C; +parameter val_slcr__DDRIOB_DRIVE_SLEW_ADDR = 32'h00000000; +parameter mask_slcr__DDRIOB_DRIVE_SLEW_ADDR = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DRIVE_SLEW_DATA = 32'hF8000B60; +parameter val_slcr__DDRIOB_DRIVE_SLEW_DATA = 32'h00000000; +parameter mask_slcr__DDRIOB_DRIVE_SLEW_DATA = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DRIVE_SLEW_DIFF = 32'hF8000B64; +parameter val_slcr__DDRIOB_DRIVE_SLEW_DIFF = 32'h00000000; +parameter mask_slcr__DDRIOB_DRIVE_SLEW_DIFF = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DRIVE_SLEW_CLOCK = 32'hF8000B68; +parameter val_slcr__DDRIOB_DRIVE_SLEW_CLOCK = 32'h00000000; +parameter mask_slcr__DDRIOB_DRIVE_SLEW_CLOCK = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DDR_CTRL = 32'hF8000B6C; +parameter val_slcr__DDRIOB_DDR_CTRL = 32'h00000000; +parameter mask_slcr__DDRIOB_DDR_CTRL = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DCI_CTRL = 32'hF8000B70; +parameter val_slcr__DDRIOB_DCI_CTRL = 32'h00000020; +parameter mask_slcr__DDRIOB_DCI_CTRL = 32'hFFFFFFFF; + +parameter slcr__DDRIOB_DCI_STATUS = 32'hF8000B74; +parameter val_slcr__DDRIOB_DCI_STATUS = 32'h00000000; +parameter mask_slcr__DDRIOB_DCI_STATUS = 32'hFFFFFFFF; + + +// ************************************************************ +// Module smcc pl353 +// doc version: 1.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter smcc__memc_status = 32'hE000E000; +parameter val_smcc__memc_status = 32'h00000000; +parameter mask_smcc__memc_status = 32'h00001FFF; + +parameter smcc__memif_cfg = 32'hE000E004; +parameter val_smcc__memif_cfg = 32'h00011205; +parameter mask_smcc__memif_cfg = 32'h0003FFFF; + +parameter smcc__memc_cfg_set = 32'hE000E008; +parameter val_smcc__memc_cfg_set = 32'h00000000; +parameter mask_smcc__memc_cfg_set = 32'h00000000; + +parameter smcc__memc_cfg_clr = 32'hE000E00C; +parameter val_smcc__memc_cfg_clr = 32'h00000000; +parameter mask_smcc__memc_cfg_clr = 32'h00000000; + +parameter smcc__direct_cmd = 32'hE000E010; +parameter val_smcc__direct_cmd = 32'h00000000; +parameter mask_smcc__direct_cmd = 32'h00000000; + +parameter smcc__set_cycles = 32'hE000E014; +parameter val_smcc__set_cycles = 32'h00000000; +parameter mask_smcc__set_cycles = 32'h00000000; + +parameter smcc__set_opmode = 32'hE000E018; +parameter val_smcc__set_opmode = 32'h00000000; +parameter mask_smcc__set_opmode = 32'h00000000; + +parameter smcc__refresh_period_0 = 32'hE000E020; +parameter val_smcc__refresh_period_0 = 32'h00000000; +parameter mask_smcc__refresh_period_0 = 32'h0000000F; + +parameter smcc__refresh_period_1 = 32'hE000E024; +parameter val_smcc__refresh_period_1 = 32'h00000000; +parameter mask_smcc__refresh_period_1 = 32'h0000000F; + +parameter smcc__sram_cycles0_0 = 32'hE000E100; +parameter val_smcc__sram_cycles0_0 = 32'h0002B3CC; +parameter mask_smcc__sram_cycles0_0 = 32'h001FFFFF; + +parameter smcc__opmode0_0 = 32'hE000E104; +parameter val_smcc__opmode0_0 = 32'hE2FE0800; +parameter mask_smcc__opmode0_0 = 32'hFFFFFFFF; + +parameter smcc__sram_cycles0_1 = 32'hE000E120; +parameter val_smcc__sram_cycles0_1 = 32'h0002B3CC; +parameter mask_smcc__sram_cycles0_1 = 32'h001FFFFF; + +parameter smcc__opmode0_1 = 32'hE000E124; +parameter val_smcc__opmode0_1 = 32'hE4FE0800; +parameter mask_smcc__opmode0_1 = 32'hFFFFFFFF; + +parameter smcc__nand_cycles1_0 = 32'hE000E180; +parameter val_smcc__nand_cycles1_0 = 32'h0024ABCC; +parameter mask_smcc__nand_cycles1_0 = 32'h00FFFFFF; + +parameter smcc__opmode1_0 = 32'hE000E184; +parameter val_smcc__opmode1_0 = 32'hE1FF0001; +parameter mask_smcc__opmode1_0 = 32'hFFFFFFFF; + +parameter smcc__user_status = 32'hE000E200; +parameter val_smcc__user_status = 32'h00000000; +parameter mask_smcc__user_status = 32'h000000FF; + +parameter smcc__user_config = 32'hE000E204; +parameter val_smcc__user_config = 32'h00000000; +parameter mask_smcc__user_config = 32'h00000000; + +parameter smcc__ecc_status_0 = 32'hE000E300; +parameter val_smcc__ecc_status_0 = 32'h00000000; +parameter mask_smcc__ecc_status_0 = 32'h3FFFFFFF; + +parameter smcc__ecc_memcfg_0 = 32'hE000E304; +parameter val_smcc__ecc_memcfg_0 = 32'h00000000; +parameter mask_smcc__ecc_memcfg_0 = 32'h00001FFF; + +parameter smcc__ecc_memcommand1_0 = 32'hE000E308; +parameter val_smcc__ecc_memcommand1_0 = 32'h00000000; +parameter mask_smcc__ecc_memcommand1_0 = 32'h01FFFFFF; + +parameter smcc__ecc_memcommand2_0 = 32'hE000E30C; +parameter val_smcc__ecc_memcommand2_0 = 32'h00000000; +parameter mask_smcc__ecc_memcommand2_0 = 32'h01FFFFFF; + +parameter smcc__ecc_addr0_0 = 32'hE000E310; +parameter val_smcc__ecc_addr0_0 = 32'h00000000; +parameter mask_smcc__ecc_addr0_0 = 32'hFFFFFFFF; + +parameter smcc__ecc_addr1_0 = 32'hE000E314; +parameter val_smcc__ecc_addr1_0 = 32'h00000000; +parameter mask_smcc__ecc_addr1_0 = 32'h00FFFFFF; + +parameter smcc__ecc_value0_0 = 32'hE000E318; +parameter val_smcc__ecc_value0_0 = 32'h00000000; +parameter mask_smcc__ecc_value0_0 = 32'hFFFFFFFF; + +parameter smcc__ecc_value1_0 = 32'hE000E31C; +parameter val_smcc__ecc_value1_0 = 32'h00000000; +parameter mask_smcc__ecc_value1_0 = 32'hFFFFFFFF; + +parameter smcc__ecc_value2_0 = 32'hE000E320; +parameter val_smcc__ecc_value2_0 = 32'h00000000; +parameter mask_smcc__ecc_value2_0 = 32'hFFFFFFFF; + +parameter smcc__ecc_value3_0 = 32'hE000E324; +parameter val_smcc__ecc_value3_0 = 32'h00000000; +parameter mask_smcc__ecc_value3_0 = 32'hFFFFFFFF; + +parameter smcc__ecc_status_1 = 32'hE000E400; +parameter val_smcc__ecc_status_1 = 32'h00000000; +parameter mask_smcc__ecc_status_1 = 32'h3FFFFFFF; + +parameter smcc__ecc_memcfg_1 = 32'hE000E404; +parameter val_smcc__ecc_memcfg_1 = 32'h00000043; +parameter mask_smcc__ecc_memcfg_1 = 32'h00001FFF; + +parameter smcc__ecc_memcommand1_1 = 32'hE000E408; +parameter val_smcc__ecc_memcommand1_1 = 32'h01300080; +parameter mask_smcc__ecc_memcommand1_1 = 32'h01FFFFFF; + +parameter smcc__ecc_memcommand2_1 = 32'hE000E40C; +parameter val_smcc__ecc_memcommand2_1 = 32'h01E00585; +parameter mask_smcc__ecc_memcommand2_1 = 32'h01FFFFFF; + +parameter smcc__ecc_addr0_1 = 32'hE000E410; +parameter val_smcc__ecc_addr0_1 = 32'h00000000; +parameter mask_smcc__ecc_addr0_1 = 32'hFFFFFFFF; + +parameter smcc__ecc_addr1_1 = 32'hE000E414; +parameter val_smcc__ecc_addr1_1 = 32'h00000000; +parameter mask_smcc__ecc_addr1_1 = 32'h00FFFFFF; + +parameter smcc__ecc_value0_1 = 32'hE000E418; +parameter val_smcc__ecc_value0_1 = 32'h00000000; +parameter mask_smcc__ecc_value0_1 = 32'hFFFFFFFF; + +parameter smcc__ecc_value1_1 = 32'hE000E41C; +parameter val_smcc__ecc_value1_1 = 32'h00000000; +parameter mask_smcc__ecc_value1_1 = 32'hFFFFFFFF; + +parameter smcc__ecc_value2_1 = 32'hE000E420; +parameter val_smcc__ecc_value2_1 = 32'h00000000; +parameter mask_smcc__ecc_value2_1 = 32'hFFFFFFFF; + +parameter smcc__ecc_value3_1 = 32'hE000E424; +parameter val_smcc__ecc_value3_1 = 32'h00000000; +parameter mask_smcc__ecc_value3_1 = 32'hFFFFFFFF; + +parameter smcc__integration_test = 32'hE000EE00; +parameter val_smcc__integration_test = 32'h00000000; +parameter mask_smcc__integration_test = 32'hFFFFFFFF; + +parameter smcc__periph_id_0 = 32'hE000EFE0; +parameter val_smcc__periph_id_0 = 32'h00000053; +parameter mask_smcc__periph_id_0 = 32'h000000FF; + +parameter smcc__periph_id_1 = 32'hE000EFE4; +parameter val_smcc__periph_id_1 = 32'h00000013; +parameter mask_smcc__periph_id_1 = 32'h000000FF; + +parameter smcc__periph_id_2 = 32'hE000EFE8; +parameter val_smcc__periph_id_2 = 32'h00000054; +parameter mask_smcc__periph_id_2 = 32'h000000FF; + +parameter smcc__periph_id_3 = 32'hE000EFEC; +parameter val_smcc__periph_id_3 = 32'h00000000; +parameter mask_smcc__periph_id_3 = 32'h00000001; + +parameter smcc__pcell_id_0 = 32'hE000EFF0; +parameter val_smcc__pcell_id_0 = 32'h0000000D; +parameter mask_smcc__pcell_id_0 = 32'h000000FF; + +parameter smcc__pcell_id_1 = 32'hE000EFF4; +parameter val_smcc__pcell_id_1 = 32'h000000F0; +parameter mask_smcc__pcell_id_1 = 32'h000000FF; + +parameter smcc__pcell_id_2 = 32'hE000EFF8; +parameter val_smcc__pcell_id_2 = 32'h00000005; +parameter mask_smcc__pcell_id_2 = 32'h000000FF; + +parameter smcc__pcell_id_3 = 32'hE000EFFC; +parameter val_smcc__pcell_id_3 = 32'h000000B1; +parameter mask_smcc__pcell_id_3 = 32'h000000FF; + + +// ************************************************************ +// Module spi0 SPI +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter spi0__Config_reg0 = 32'hE0006000; +parameter val_spi0__Config_reg0 = 32'h00020000; +parameter mask_spi0__Config_reg0 = 32'hFFFFFFFF; + +parameter spi0__Intr_status_reg0 = 32'hE0006004; +parameter val_spi0__Intr_status_reg0 = 32'h00000004; +parameter mask_spi0__Intr_status_reg0 = 32'hFFFFFFFF; + +parameter spi0__Intrpt_en_reg0 = 32'hE0006008; +parameter val_spi0__Intrpt_en_reg0 = 32'h00000000; +parameter mask_spi0__Intrpt_en_reg0 = 32'hFFFFFFFF; + +parameter spi0__Intrpt_dis_reg0 = 32'hE000600C; +parameter val_spi0__Intrpt_dis_reg0 = 32'h00000000; +parameter mask_spi0__Intrpt_dis_reg0 = 32'hFFFFFFFF; + +parameter spi0__Intrpt_mask_reg0 = 32'hE0006010; +parameter val_spi0__Intrpt_mask_reg0 = 32'h00000000; +parameter mask_spi0__Intrpt_mask_reg0 = 32'hFFFFFFFF; + +parameter spi0__En_reg0 = 32'hE0006014; +parameter val_spi0__En_reg0 = 32'h00000000; +parameter mask_spi0__En_reg0 = 32'hFFFFFFFF; + +parameter spi0__Delay_reg0 = 32'hE0006018; +parameter val_spi0__Delay_reg0 = 32'h00000000; +parameter mask_spi0__Delay_reg0 = 32'hFFFFFFFF; + +parameter spi0__Tx_data_reg0 = 32'hE000601C; +parameter val_spi0__Tx_data_reg0 = 32'h00000000; +parameter mask_spi0__Tx_data_reg0 = 32'hFFFFFFFF; + +parameter spi0__Rx_data_reg0 = 32'hE0006020; +parameter val_spi0__Rx_data_reg0 = 32'h00000000; +parameter mask_spi0__Rx_data_reg0 = 32'hFFFFFFFF; + +parameter spi0__Slave_Idle_count_reg0 = 32'hE0006024; +parameter val_spi0__Slave_Idle_count_reg0 = 32'h000000FF; +parameter mask_spi0__Slave_Idle_count_reg0 = 32'hFFFFFFFF; + +parameter spi0__TX_thres_reg0 = 32'hE0006028; +parameter val_spi0__TX_thres_reg0 = 32'h00000001; +parameter mask_spi0__TX_thres_reg0 = 32'hFFFFFFFF; + +parameter spi0__RX_thres_reg0 = 32'hE000602C; +parameter val_spi0__RX_thres_reg0 = 32'h00000001; +parameter mask_spi0__RX_thres_reg0 = 32'hFFFFFFFF; + +parameter spi0__Mod_id_reg0 = 32'hE00060FC; +parameter val_spi0__Mod_id_reg0 = 32'h00090106; +parameter mask_spi0__Mod_id_reg0 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module spi1 SPI +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter spi1__Config_reg0 = 32'hE0007000; +parameter val_spi1__Config_reg0 = 32'h00020000; +parameter mask_spi1__Config_reg0 = 32'hFFFFFFFF; + +parameter spi1__Intr_status_reg0 = 32'hE0007004; +parameter val_spi1__Intr_status_reg0 = 32'h00000004; +parameter mask_spi1__Intr_status_reg0 = 32'hFFFFFFFF; + +parameter spi1__Intrpt_en_reg0 = 32'hE0007008; +parameter val_spi1__Intrpt_en_reg0 = 32'h00000000; +parameter mask_spi1__Intrpt_en_reg0 = 32'hFFFFFFFF; + +parameter spi1__Intrpt_dis_reg0 = 32'hE000700C; +parameter val_spi1__Intrpt_dis_reg0 = 32'h00000000; +parameter mask_spi1__Intrpt_dis_reg0 = 32'hFFFFFFFF; + +parameter spi1__Intrpt_mask_reg0 = 32'hE0007010; +parameter val_spi1__Intrpt_mask_reg0 = 32'h00000000; +parameter mask_spi1__Intrpt_mask_reg0 = 32'hFFFFFFFF; + +parameter spi1__En_reg0 = 32'hE0007014; +parameter val_spi1__En_reg0 = 32'h00000000; +parameter mask_spi1__En_reg0 = 32'hFFFFFFFF; + +parameter spi1__Delay_reg0 = 32'hE0007018; +parameter val_spi1__Delay_reg0 = 32'h00000000; +parameter mask_spi1__Delay_reg0 = 32'hFFFFFFFF; + +parameter spi1__Tx_data_reg0 = 32'hE000701C; +parameter val_spi1__Tx_data_reg0 = 32'h00000000; +parameter mask_spi1__Tx_data_reg0 = 32'hFFFFFFFF; + +parameter spi1__Rx_data_reg0 = 32'hE0007020; +parameter val_spi1__Rx_data_reg0 = 32'h00000000; +parameter mask_spi1__Rx_data_reg0 = 32'hFFFFFFFF; + +parameter spi1__Slave_Idle_count_reg0 = 32'hE0007024; +parameter val_spi1__Slave_Idle_count_reg0 = 32'h000000FF; +parameter mask_spi1__Slave_Idle_count_reg0 = 32'hFFFFFFFF; + +parameter spi1__TX_thres_reg0 = 32'hE0007028; +parameter val_spi1__TX_thres_reg0 = 32'h00000001; +parameter mask_spi1__TX_thres_reg0 = 32'hFFFFFFFF; + +parameter spi1__RX_thres_reg0 = 32'hE000702C; +parameter val_spi1__RX_thres_reg0 = 32'h00000001; +parameter mask_spi1__RX_thres_reg0 = 32'hFFFFFFFF; + +parameter spi1__Mod_id_reg0 = 32'hE00070FC; +parameter val_spi1__Mod_id_reg0 = 32'h00090106; +parameter mask_spi1__Mod_id_reg0 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module swdt swdt +// doc version: 2.1 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter swdt__MODE = 32'hF8005000; +parameter val_swdt__MODE = 32'h000001C2; +parameter mask_swdt__MODE = 32'h00FFFFFF; + +parameter swdt__CONTROL = 32'hF8005004; +parameter val_swdt__CONTROL = 32'h03FFC3FC; +parameter mask_swdt__CONTROL = 32'h03FFFFFF; + +parameter swdt__RESTART = 32'hF8005008; +parameter val_swdt__RESTART = 32'h00000000; +parameter mask_swdt__RESTART = 32'h0000FFFF; + +parameter swdt__STATUS = 32'hF800500C; +parameter val_swdt__STATUS = 32'h00000000; +parameter mask_swdt__STATUS = 32'h00000001; + + +// ************************************************************ +// Module ttc0 ttc +// doc version: 2.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter ttc0__Clock_Control_1 = 32'hF8001000; +parameter val_ttc0__Clock_Control_1 = 32'h00000000; +parameter mask_ttc0__Clock_Control_1 = 32'h0000007F; + +parameter ttc0__Clock_Control_2 = 32'hF8001004; +parameter val_ttc0__Clock_Control_2 = 32'h00000000; +parameter mask_ttc0__Clock_Control_2 = 32'h0000007F; + +parameter ttc0__Clock_Control_3 = 32'hF8001008; +parameter val_ttc0__Clock_Control_3 = 32'h00000000; +parameter mask_ttc0__Clock_Control_3 = 32'h0000007F; + +parameter ttc0__Counter_Control_1 = 32'hF800100C; +parameter val_ttc0__Counter_Control_1 = 32'h00000021; +parameter mask_ttc0__Counter_Control_1 = 32'h0000007F; + +parameter ttc0__Counter_Control_2 = 32'hF8001010; +parameter val_ttc0__Counter_Control_2 = 32'h00000021; +parameter mask_ttc0__Counter_Control_2 = 32'h0000007F; + +parameter ttc0__Counter_Control_3 = 32'hF8001014; +parameter val_ttc0__Counter_Control_3 = 32'h00000021; +parameter mask_ttc0__Counter_Control_3 = 32'h0000007F; + +parameter ttc0__Counter_Value_1 = 32'hF8001018; +parameter val_ttc0__Counter_Value_1 = 32'h00000000; +parameter mask_ttc0__Counter_Value_1 = 32'h0000FFFF; + +parameter ttc0__Counter_Value_2 = 32'hF800101C; +parameter val_ttc0__Counter_Value_2 = 32'h00000000; +parameter mask_ttc0__Counter_Value_2 = 32'h0000FFFF; + +parameter ttc0__Counter_Value_3 = 32'hF8001020; +parameter val_ttc0__Counter_Value_3 = 32'h00000000; +parameter mask_ttc0__Counter_Value_3 = 32'h0000FFFF; + +parameter ttc0__Interval_Counter_1 = 32'hF8001024; +parameter val_ttc0__Interval_Counter_1 = 32'h00000000; +parameter mask_ttc0__Interval_Counter_1 = 32'h0000FFFF; + +parameter ttc0__Interval_Counter_2 = 32'hF8001028; +parameter val_ttc0__Interval_Counter_2 = 32'h00000000; +parameter mask_ttc0__Interval_Counter_2 = 32'h0000FFFF; + +parameter ttc0__Interval_Counter_3 = 32'hF800102C; +parameter val_ttc0__Interval_Counter_3 = 32'h00000000; +parameter mask_ttc0__Interval_Counter_3 = 32'h0000FFFF; + +parameter ttc0__Match_1_Counter_1 = 32'hF8001030; +parameter val_ttc0__Match_1_Counter_1 = 32'h00000000; +parameter mask_ttc0__Match_1_Counter_1 = 32'h0000FFFF; + +parameter ttc0__Match_1_Counter_2 = 32'hF8001034; +parameter val_ttc0__Match_1_Counter_2 = 32'h00000000; +parameter mask_ttc0__Match_1_Counter_2 = 32'h0000FFFF; + +parameter ttc0__Match_1_Counter_3 = 32'hF8001038; +parameter val_ttc0__Match_1_Counter_3 = 32'h00000000; +parameter mask_ttc0__Match_1_Counter_3 = 32'h0000FFFF; + +parameter ttc0__Match_2_Counter_1 = 32'hF800103C; +parameter val_ttc0__Match_2_Counter_1 = 32'h00000000; +parameter mask_ttc0__Match_2_Counter_1 = 32'h0000FFFF; + +parameter ttc0__Match_2_Counter_2 = 32'hF8001040; +parameter val_ttc0__Match_2_Counter_2 = 32'h00000000; +parameter mask_ttc0__Match_2_Counter_2 = 32'h0000FFFF; + +parameter ttc0__Match_2_Counter_3 = 32'hF8001044; +parameter val_ttc0__Match_2_Counter_3 = 32'h00000000; +parameter mask_ttc0__Match_2_Counter_3 = 32'h0000FFFF; + +parameter ttc0__Match_3_Counter_1 = 32'hF8001048; +parameter val_ttc0__Match_3_Counter_1 = 32'h00000000; +parameter mask_ttc0__Match_3_Counter_1 = 32'h0000FFFF; + +parameter ttc0__Match_3_Counter_2 = 32'hF800104C; +parameter val_ttc0__Match_3_Counter_2 = 32'h00000000; +parameter mask_ttc0__Match_3_Counter_2 = 32'h0000FFFF; + +parameter ttc0__Match_3_Counter_3 = 32'hF8001050; +parameter val_ttc0__Match_3_Counter_3 = 32'h00000000; +parameter mask_ttc0__Match_3_Counter_3 = 32'h0000FFFF; + +parameter ttc0__Interrupt_Register_1 = 32'hF8001054; +parameter val_ttc0__Interrupt_Register_1 = 32'h00000000; +parameter mask_ttc0__Interrupt_Register_1 = 32'h0000003F; + +parameter ttc0__Interrupt_Register_2 = 32'hF8001058; +parameter val_ttc0__Interrupt_Register_2 = 32'h00000000; +parameter mask_ttc0__Interrupt_Register_2 = 32'h0000003F; + +parameter ttc0__Interrupt_Register_3 = 32'hF800105C; +parameter val_ttc0__Interrupt_Register_3 = 32'h00000000; +parameter mask_ttc0__Interrupt_Register_3 = 32'h0000003F; + +parameter ttc0__Interrupt_Enable_1 = 32'hF8001060; +parameter val_ttc0__Interrupt_Enable_1 = 32'h00000000; +parameter mask_ttc0__Interrupt_Enable_1 = 32'h0000003F; + +parameter ttc0__Interrupt_Enable_2 = 32'hF8001064; +parameter val_ttc0__Interrupt_Enable_2 = 32'h00000000; +parameter mask_ttc0__Interrupt_Enable_2 = 32'h0000003F; + +parameter ttc0__Interrupt_Enable_3 = 32'hF8001068; +parameter val_ttc0__Interrupt_Enable_3 = 32'h00000000; +parameter mask_ttc0__Interrupt_Enable_3 = 32'h0000003F; + +parameter ttc0__Event_Control_Timer_1 = 32'hF800106C; +parameter val_ttc0__Event_Control_Timer_1 = 32'h00000000; +parameter mask_ttc0__Event_Control_Timer_1 = 32'h00000007; + +parameter ttc0__Event_Control_Timer_2 = 32'hF8001070; +parameter val_ttc0__Event_Control_Timer_2 = 32'h00000000; +parameter mask_ttc0__Event_Control_Timer_2 = 32'h00000007; + +parameter ttc0__Event_Control_Timer_3 = 32'hF8001074; +parameter val_ttc0__Event_Control_Timer_3 = 32'h00000000; +parameter mask_ttc0__Event_Control_Timer_3 = 32'h00000007; + +parameter ttc0__Event_Register_1 = 32'hF8001078; +parameter val_ttc0__Event_Register_1 = 32'h00000000; +parameter mask_ttc0__Event_Register_1 = 32'h0000FFFF; + +parameter ttc0__Event_Register_2 = 32'hF800107C; +parameter val_ttc0__Event_Register_2 = 32'h00000000; +parameter mask_ttc0__Event_Register_2 = 32'h0000FFFF; + +parameter ttc0__Event_Register_3 = 32'hF8001080; +parameter val_ttc0__Event_Register_3 = 32'h00000000; +parameter mask_ttc0__Event_Register_3 = 32'h0000FFFF; + + +// ************************************************************ +// Module ttc1 ttc +// doc version: 2.0 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter ttc1__Clock_Control_1 = 32'hF8002000; +parameter val_ttc1__Clock_Control_1 = 32'h00000000; +parameter mask_ttc1__Clock_Control_1 = 32'h0000007F; + +parameter ttc1__Clock_Control_2 = 32'hF8002004; +parameter val_ttc1__Clock_Control_2 = 32'h00000000; +parameter mask_ttc1__Clock_Control_2 = 32'h0000007F; + +parameter ttc1__Clock_Control_3 = 32'hF8002008; +parameter val_ttc1__Clock_Control_3 = 32'h00000000; +parameter mask_ttc1__Clock_Control_3 = 32'h0000007F; + +parameter ttc1__Counter_Control_1 = 32'hF800200C; +parameter val_ttc1__Counter_Control_1 = 32'h00000021; +parameter mask_ttc1__Counter_Control_1 = 32'h0000007F; + +parameter ttc1__Counter_Control_2 = 32'hF8002010; +parameter val_ttc1__Counter_Control_2 = 32'h00000021; +parameter mask_ttc1__Counter_Control_2 = 32'h0000007F; + +parameter ttc1__Counter_Control_3 = 32'hF8002014; +parameter val_ttc1__Counter_Control_3 = 32'h00000021; +parameter mask_ttc1__Counter_Control_3 = 32'h0000007F; + +parameter ttc1__Counter_Value_1 = 32'hF8002018; +parameter val_ttc1__Counter_Value_1 = 32'h00000000; +parameter mask_ttc1__Counter_Value_1 = 32'h0000FFFF; + +parameter ttc1__Counter_Value_2 = 32'hF800201C; +parameter val_ttc1__Counter_Value_2 = 32'h00000000; +parameter mask_ttc1__Counter_Value_2 = 32'h0000FFFF; + +parameter ttc1__Counter_Value_3 = 32'hF8002020; +parameter val_ttc1__Counter_Value_3 = 32'h00000000; +parameter mask_ttc1__Counter_Value_3 = 32'h0000FFFF; + +parameter ttc1__Interval_Counter_1 = 32'hF8002024; +parameter val_ttc1__Interval_Counter_1 = 32'h00000000; +parameter mask_ttc1__Interval_Counter_1 = 32'h0000FFFF; + +parameter ttc1__Interval_Counter_2 = 32'hF8002028; +parameter val_ttc1__Interval_Counter_2 = 32'h00000000; +parameter mask_ttc1__Interval_Counter_2 = 32'h0000FFFF; + +parameter ttc1__Interval_Counter_3 = 32'hF800202C; +parameter val_ttc1__Interval_Counter_3 = 32'h00000000; +parameter mask_ttc1__Interval_Counter_3 = 32'h0000FFFF; + +parameter ttc1__Match_1_Counter_1 = 32'hF8002030; +parameter val_ttc1__Match_1_Counter_1 = 32'h00000000; +parameter mask_ttc1__Match_1_Counter_1 = 32'h0000FFFF; + +parameter ttc1__Match_1_Counter_2 = 32'hF8002034; +parameter val_ttc1__Match_1_Counter_2 = 32'h00000000; +parameter mask_ttc1__Match_1_Counter_2 = 32'h0000FFFF; + +parameter ttc1__Match_1_Counter_3 = 32'hF8002038; +parameter val_ttc1__Match_1_Counter_3 = 32'h00000000; +parameter mask_ttc1__Match_1_Counter_3 = 32'h0000FFFF; + +parameter ttc1__Match_2_Counter_1 = 32'hF800203C; +parameter val_ttc1__Match_2_Counter_1 = 32'h00000000; +parameter mask_ttc1__Match_2_Counter_1 = 32'h0000FFFF; + +parameter ttc1__Match_2_Counter_2 = 32'hF8002040; +parameter val_ttc1__Match_2_Counter_2 = 32'h00000000; +parameter mask_ttc1__Match_2_Counter_2 = 32'h0000FFFF; + +parameter ttc1__Match_2_Counter_3 = 32'hF8002044; +parameter val_ttc1__Match_2_Counter_3 = 32'h00000000; +parameter mask_ttc1__Match_2_Counter_3 = 32'h0000FFFF; + +parameter ttc1__Match_3_Counter_1 = 32'hF8002048; +parameter val_ttc1__Match_3_Counter_1 = 32'h00000000; +parameter mask_ttc1__Match_3_Counter_1 = 32'h0000FFFF; + +parameter ttc1__Match_3_Counter_2 = 32'hF800204C; +parameter val_ttc1__Match_3_Counter_2 = 32'h00000000; +parameter mask_ttc1__Match_3_Counter_2 = 32'h0000FFFF; + +parameter ttc1__Match_3_Counter_3 = 32'hF8002050; +parameter val_ttc1__Match_3_Counter_3 = 32'h00000000; +parameter mask_ttc1__Match_3_Counter_3 = 32'h0000FFFF; + +parameter ttc1__Interrupt_Register_1 = 32'hF8002054; +parameter val_ttc1__Interrupt_Register_1 = 32'h00000000; +parameter mask_ttc1__Interrupt_Register_1 = 32'h0000003F; + +parameter ttc1__Interrupt_Register_2 = 32'hF8002058; +parameter val_ttc1__Interrupt_Register_2 = 32'h00000000; +parameter mask_ttc1__Interrupt_Register_2 = 32'h0000003F; + +parameter ttc1__Interrupt_Register_3 = 32'hF800205C; +parameter val_ttc1__Interrupt_Register_3 = 32'h00000000; +parameter mask_ttc1__Interrupt_Register_3 = 32'h0000003F; + +parameter ttc1__Interrupt_Enable_1 = 32'hF8002060; +parameter val_ttc1__Interrupt_Enable_1 = 32'h00000000; +parameter mask_ttc1__Interrupt_Enable_1 = 32'h0000003F; + +parameter ttc1__Interrupt_Enable_2 = 32'hF8002064; +parameter val_ttc1__Interrupt_Enable_2 = 32'h00000000; +parameter mask_ttc1__Interrupt_Enable_2 = 32'h0000003F; + +parameter ttc1__Interrupt_Enable_3 = 32'hF8002068; +parameter val_ttc1__Interrupt_Enable_3 = 32'h00000000; +parameter mask_ttc1__Interrupt_Enable_3 = 32'h0000003F; + +parameter ttc1__Event_Control_Timer_1 = 32'hF800206C; +parameter val_ttc1__Event_Control_Timer_1 = 32'h00000000; +parameter mask_ttc1__Event_Control_Timer_1 = 32'h00000007; + +parameter ttc1__Event_Control_Timer_2 = 32'hF8002070; +parameter val_ttc1__Event_Control_Timer_2 = 32'h00000000; +parameter mask_ttc1__Event_Control_Timer_2 = 32'h00000007; + +parameter ttc1__Event_Control_Timer_3 = 32'hF8002074; +parameter val_ttc1__Event_Control_Timer_3 = 32'h00000000; +parameter mask_ttc1__Event_Control_Timer_3 = 32'h00000007; + +parameter ttc1__Event_Register_1 = 32'hF8002078; +parameter val_ttc1__Event_Register_1 = 32'h00000000; +parameter mask_ttc1__Event_Register_1 = 32'h0000FFFF; + +parameter ttc1__Event_Register_2 = 32'hF800207C; +parameter val_ttc1__Event_Register_2 = 32'h00000000; +parameter mask_ttc1__Event_Register_2 = 32'h0000FFFF; + +parameter ttc1__Event_Register_3 = 32'hF8002080; +parameter val_ttc1__Event_Register_3 = 32'h00000000; +parameter mask_ttc1__Event_Register_3 = 32'h0000FFFF; + + +// ************************************************************ +// Module uart0 UART +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter uart0__Control_reg0 = 32'hE0000000; +parameter val_uart0__Control_reg0 = 32'h00000128; +parameter mask_uart0__Control_reg0 = 32'hFFFFFFFF; + +parameter uart0__mode_reg0 = 32'hE0000004; +parameter val_uart0__mode_reg0 = 32'h00000000; +parameter mask_uart0__mode_reg0 = 32'hFFFFFFFF; + +parameter uart0__Intrpt_en_reg0 = 32'hE0000008; +parameter val_uart0__Intrpt_en_reg0 = 32'h00000000; +parameter mask_uart0__Intrpt_en_reg0 = 32'hFFFFFFFF; + +parameter uart0__Intrpt_dis_reg0 = 32'hE000000C; +parameter val_uart0__Intrpt_dis_reg0 = 32'h00000000; +parameter mask_uart0__Intrpt_dis_reg0 = 32'hFFFFFFFF; + +parameter uart0__Intrpt_mask_reg0 = 32'hE0000010; +parameter val_uart0__Intrpt_mask_reg0 = 32'h00000000; +parameter mask_uart0__Intrpt_mask_reg0 = 32'hFFFFFFFF; + +parameter uart0__Chnl_int_sts_reg0 = 32'hE0000014; +parameter val_uart0__Chnl_int_sts_reg0 = 32'h00000200; +parameter mask_uart0__Chnl_int_sts_reg0 = 32'hFFFFFFFF; + +parameter uart0__Baud_rate_gen_reg0 = 32'hE0000018; +parameter val_uart0__Baud_rate_gen_reg0 = 32'h0000028B; +parameter mask_uart0__Baud_rate_gen_reg0 = 32'hFFFFFFFF; + +parameter uart0__Rcvr_timeout_reg0 = 32'hE000001C; +parameter val_uart0__Rcvr_timeout_reg0 = 32'h00000000; +parameter mask_uart0__Rcvr_timeout_reg0 = 32'hFFFFFFFF; + +parameter uart0__Rcvr_FIFO_trigger_level0 = 32'hE0000020; +parameter val_uart0__Rcvr_FIFO_trigger_level0 = 32'h00000020; +parameter mask_uart0__Rcvr_FIFO_trigger_level0 = 32'hFFFFFFFF; + +parameter uart0__Modem_ctrl_reg0 = 32'hE0000024; +parameter val_uart0__Modem_ctrl_reg0 = 32'h00000000; +parameter mask_uart0__Modem_ctrl_reg0 = 32'hFFFFFFFF; + +parameter uart0__Modem_sts_reg0 = 32'hE0000028; +parameter val_uart0__Modem_sts_reg0 = 32'h00000000; +parameter mask_uart0__Modem_sts_reg0 = 32'h00000000; + +parameter uart0__Channel_sts_reg0 = 32'hE000002C; +parameter val_uart0__Channel_sts_reg0 = 32'h00000000; +parameter mask_uart0__Channel_sts_reg0 = 32'hFFFFFFFF; + +parameter uart0__TX_RX_FIFO0 = 32'hE0000030; +parameter val_uart0__TX_RX_FIFO0 = 32'h00000000; +parameter mask_uart0__TX_RX_FIFO0 = 32'hFFFFFFFF; + +parameter uart0__Baud_rate_divider_reg0 = 32'hE0000034; +parameter val_uart0__Baud_rate_divider_reg0 = 32'h0000000F; +parameter mask_uart0__Baud_rate_divider_reg0 = 32'hFFFFFFFF; + +parameter uart0__Flow_delay_reg0 = 32'hE0000038; +parameter val_uart0__Flow_delay_reg0 = 32'h00000000; +parameter mask_uart0__Flow_delay_reg0 = 32'hFFFFFFFF; + +parameter uart0__IR_min_rcv_pulse_wdth0 = 32'hE000003C; +parameter val_uart0__IR_min_rcv_pulse_wdth0 = 32'h00000000; +parameter mask_uart0__IR_min_rcv_pulse_wdth0 = 32'hFFFFFFFF; + +parameter uart0__IR_transmitted_pulse_wdth0 = 32'hE0000040; +parameter val_uart0__IR_transmitted_pulse_wdth0 = 32'h00000000; +parameter mask_uart0__IR_transmitted_pulse_wdth0 = 32'hFFFF00FF; + +parameter uart0__Tx_FIFO_trigger_level0 = 32'hE0000044; +parameter val_uart0__Tx_FIFO_trigger_level0 = 32'h00000020; +parameter mask_uart0__Tx_FIFO_trigger_level0 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module uart1 UART +// doc version: 1.2 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter uart1__Control_reg0 = 32'hE0001000; +parameter val_uart1__Control_reg0 = 32'h00000128; +parameter mask_uart1__Control_reg0 = 32'hFFFFFFFF; + +parameter uart1__mode_reg0 = 32'hE0001004; +parameter val_uart1__mode_reg0 = 32'h00000000; +parameter mask_uart1__mode_reg0 = 32'hFFFFFFFF; + +parameter uart1__Intrpt_en_reg0 = 32'hE0001008; +parameter val_uart1__Intrpt_en_reg0 = 32'h00000000; +parameter mask_uart1__Intrpt_en_reg0 = 32'hFFFFFFFF; + +parameter uart1__Intrpt_dis_reg0 = 32'hE000100C; +parameter val_uart1__Intrpt_dis_reg0 = 32'h00000000; +parameter mask_uart1__Intrpt_dis_reg0 = 32'hFFFFFFFF; + +parameter uart1__Intrpt_mask_reg0 = 32'hE0001010; +parameter val_uart1__Intrpt_mask_reg0 = 32'h00000000; +parameter mask_uart1__Intrpt_mask_reg0 = 32'hFFFFFFFF; + +parameter uart1__Chnl_int_sts_reg0 = 32'hE0001014; +parameter val_uart1__Chnl_int_sts_reg0 = 32'h00000200; +parameter mask_uart1__Chnl_int_sts_reg0 = 32'hFFFFFFFF; + +parameter uart1__Baud_rate_gen_reg0 = 32'hE0001018; +parameter val_uart1__Baud_rate_gen_reg0 = 32'h0000028B; +parameter mask_uart1__Baud_rate_gen_reg0 = 32'hFFFFFFFF; + +parameter uart1__Rcvr_timeout_reg0 = 32'hE000101C; +parameter val_uart1__Rcvr_timeout_reg0 = 32'h00000000; +parameter mask_uart1__Rcvr_timeout_reg0 = 32'hFFFFFFFF; + +parameter uart1__Rcvr_FIFO_trigger_level0 = 32'hE0001020; +parameter val_uart1__Rcvr_FIFO_trigger_level0 = 32'h00000020; +parameter mask_uart1__Rcvr_FIFO_trigger_level0 = 32'hFFFFFFFF; + +parameter uart1__Modem_ctrl_reg0 = 32'hE0001024; +parameter val_uart1__Modem_ctrl_reg0 = 32'h00000000; +parameter mask_uart1__Modem_ctrl_reg0 = 32'hFFFFFFFF; + +parameter uart1__Modem_sts_reg0 = 32'hE0001028; +parameter val_uart1__Modem_sts_reg0 = 32'h00000000; +parameter mask_uart1__Modem_sts_reg0 = 32'h00000000; + +parameter uart1__Channel_sts_reg0 = 32'hE000102C; +parameter val_uart1__Channel_sts_reg0 = 32'h00000000; +parameter mask_uart1__Channel_sts_reg0 = 32'hFFFFFFFF; + +parameter uart1__TX_RX_FIFO0 = 32'hE0001030; +parameter val_uart1__TX_RX_FIFO0 = 32'h00000000; +parameter mask_uart1__TX_RX_FIFO0 = 32'hFFFFFFFF; + +parameter uart1__Baud_rate_divider_reg0 = 32'hE0001034; +parameter val_uart1__Baud_rate_divider_reg0 = 32'h0000000F; +parameter mask_uart1__Baud_rate_divider_reg0 = 32'hFFFFFFFF; + +parameter uart1__Flow_delay_reg0 = 32'hE0001038; +parameter val_uart1__Flow_delay_reg0 = 32'h00000000; +parameter mask_uart1__Flow_delay_reg0 = 32'hFFFFFFFF; + +parameter uart1__IR_min_rcv_pulse_wdth0 = 32'hE000103C; +parameter val_uart1__IR_min_rcv_pulse_wdth0 = 32'h00000000; +parameter mask_uart1__IR_min_rcv_pulse_wdth0 = 32'hFFFFFFFF; + +parameter uart1__IR_transmitted_pulse_wdth0 = 32'hE0001040; +parameter val_uart1__IR_transmitted_pulse_wdth0 = 32'h00000000; +parameter mask_uart1__IR_transmitted_pulse_wdth0 = 32'hFFFF00FF; + +parameter uart1__Tx_FIFO_trigger_level0 = 32'hE0001044; +parameter val_uart1__Tx_FIFO_trigger_level0 = 32'h00000020; +parameter mask_uart1__Tx_FIFO_trigger_level0 = 32'hFFFFFFFF; + + +// ************************************************************ +// Module usb0 usb +// doc version: 1.3 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter usb0__ID = 32'hE0002000; +parameter val_usb0__ID = 32'hE441FA05; +parameter mask_usb0__ID = 32'hFFFFFFFF; + +parameter usb0__HWGENERAL = 32'hE0002004; +parameter val_usb0__HWGENERAL = 32'h00000083; +parameter mask_usb0__HWGENERAL = 32'h00000FFF; + +parameter usb0__HWHOST = 32'hE0002008; +parameter val_usb0__HWHOST = 32'h10020001; +parameter mask_usb0__HWHOST = 32'hFFFFFFFF; + +parameter usb0__HWDEVICE = 32'hE000200C; +parameter val_usb0__HWDEVICE = 32'h00000019; +parameter mask_usb0__HWDEVICE = 32'h0000003F; + +parameter usb0__HWTXBUF = 32'hE0002010; +parameter val_usb0__HWTXBUF = 32'h80060A10; +parameter mask_usb0__HWTXBUF = 32'hFFFFFFFF; + +parameter usb0__HWRXBUF = 32'hE0002014; +parameter val_usb0__HWRXBUF = 32'h00000A10; +parameter mask_usb0__HWRXBUF = 32'hFF00FFFF; + +parameter usb0__GPTIMER0LD = 32'hE0002080; +parameter val_usb0__GPTIMER0LD = 32'h00000000; +parameter mask_usb0__GPTIMER0LD = 32'h00FFFFFF; + +parameter usb0__GPTIMER0CTRL = 32'hE0002084; +parameter val_usb0__GPTIMER0CTRL = 32'h00000000; +parameter mask_usb0__GPTIMER0CTRL = 32'hFFFFFFFF; + +parameter usb0__GPTIMER1LD = 32'hE0002088; +parameter val_usb0__GPTIMER1LD = 32'h00000000; +parameter mask_usb0__GPTIMER1LD = 32'h00FFFFFF; + +parameter usb0__GPTIMER1CTRL = 32'hE000208C; +parameter val_usb0__GPTIMER1CTRL = 32'h00000000; +parameter mask_usb0__GPTIMER1CTRL = 32'hFFFFFFFF; + +parameter usb0__SBUSCFG = 32'hE0002090; +parameter val_usb0__SBUSCFG = 32'h00000003; +parameter mask_usb0__SBUSCFG = 32'h00000007; + +parameter usb0__CAPLENGTH_HCIVERSION = 32'hE0002100; +parameter val_usb0__CAPLENGTH_HCIVERSION = 32'h01000040; +parameter mask_usb0__CAPLENGTH_HCIVERSION = 32'hFFFFFFFF; + +parameter usb0__HCSPARAMS = 32'hE0002104; +parameter val_usb0__HCSPARAMS = 32'h00010011; +parameter mask_usb0__HCSPARAMS = 32'h0FFFFFFF; + +parameter usb0__HCCPARAMS = 32'hE0002108; +parameter val_usb0__HCCPARAMS = 32'h00000006; +parameter mask_usb0__HCCPARAMS = 32'h0000FFFF; + +parameter usb0__DCIVERSION = 32'hE0002120; +parameter val_usb0__DCIVERSION = 32'h00000001; +parameter mask_usb0__DCIVERSION = 32'h0000FFFF; + +parameter usb0__DCCPARAMS = 32'hE0002124; +parameter val_usb0__DCCPARAMS = 32'h0000018C; +parameter mask_usb0__DCCPARAMS = 32'h000001FF; + +parameter usb0__USBCMD = 32'hE0002140; +parameter val_usb0__USBCMD = 32'h00000B00; +parameter mask_usb0__USBCMD = 32'h00FFFFFF; + +parameter usb0__USBSTS = 32'hE0002144; +parameter val_usb0__USBSTS = 32'h00000000; +parameter mask_usb0__USBSTS = 32'h03FFFFFF; + +parameter usb0__USBINTR = 32'hE0002148; +parameter val_usb0__USBINTR = 32'h00000000; +parameter mask_usb0__USBINTR = 32'h03FF0FFF; + +parameter usb0__FRINDEX = 32'hE000214C; +parameter val_usb0__FRINDEX = 32'h00000000; +parameter mask_usb0__FRINDEX = 32'h00003FFF; + +parameter usb0__PERIODICLISTBASE_DEVICEADDR = 32'hE0002154; +parameter val_usb0__PERIODICLISTBASE_DEVICEADDR = 32'h00000000; +parameter mask_usb0__PERIODICLISTBASE_DEVICEADDR = 32'hFFFFFFFF; + +parameter usb0__ASYNCLISTADDR_ENDPOINTLISTADDR = 32'hE0002158; +parameter val_usb0__ASYNCLISTADDR_ENDPOINTLISTADDR = 32'h00000000; +parameter mask_usb0__ASYNCLISTADDR_ENDPOINTLISTADDR = 32'hFFFFFFFF; + +parameter usb0__TTCTRL = 32'hE000215C; +parameter val_usb0__TTCTRL = 32'h00000000; +parameter mask_usb0__TTCTRL = 32'hFFFFFFFF; + +parameter usb0__BURSTSIZE = 32'hE0002160; +parameter val_usb0__BURSTSIZE = 32'h00001010; +parameter mask_usb0__BURSTSIZE = 32'h0001FFFF; + +parameter usb0__TXFILLTUNING = 32'hE0002164; +parameter val_usb0__TXFILLTUNING = 32'h00020000; +parameter mask_usb0__TXFILLTUNING = 32'h003FFFFF; + +parameter usb0__TXTTFILLTUNING = 32'hE0002168; +parameter val_usb0__TXTTFILLTUNING = 32'h00000000; +parameter mask_usb0__TXTTFILLTUNING = 32'h00001FFF; + +parameter usb0__IC_USB = 32'hE000216C; +parameter val_usb0__IC_USB = 32'h00000000; +parameter mask_usb0__IC_USB = 32'hFFFFFFFF; + +parameter usb0__ULPI_VIEWPORT = 32'hE0002170; +parameter val_usb0__ULPI_VIEWPORT = 32'h00000000; +parameter mask_usb0__ULPI_VIEWPORT = 32'hFFFFFFFF; + +parameter usb0__ENDPTNAK = 32'hE0002178; +parameter val_usb0__ENDPTNAK = 32'h00000000; +parameter mask_usb0__ENDPTNAK = 32'hFFFFFFFF; + +parameter usb0__ENDPTNAKEN = 32'hE000217C; +parameter val_usb0__ENDPTNAKEN = 32'h00000000; +parameter mask_usb0__ENDPTNAKEN = 32'hFFFFFFFF; + +parameter usb0__CONFIGFLAG = 32'hE0002180; +parameter val_usb0__CONFIGFLAG = 32'h00000001; +parameter mask_usb0__CONFIGFLAG = 32'hFFFFFFFF; + +parameter usb0__PORTSC1 = 32'hE0002184; +parameter val_usb0__PORTSC1 = 32'h00000000; +parameter mask_usb0__PORTSC1 = 32'hFFFFFFFF; + +parameter usb0__OTGSC = 32'hE00021A4; +parameter val_usb0__OTGSC = 32'h00000020; +parameter mask_usb0__OTGSC = 32'hFFFFFFFF; + +parameter usb0__USBMODE = 32'hE00021A8; +parameter val_usb0__USBMODE = 32'h00000000; +parameter mask_usb0__USBMODE = 32'h0000FFFF; + +parameter usb0__ENDPTSETUPSTAT = 32'hE00021AC; +parameter val_usb0__ENDPTSETUPSTAT = 32'h00000000; +parameter mask_usb0__ENDPTSETUPSTAT = 32'h0000FFFF; + +parameter usb0__ENDPTPRIME = 32'hE00021B0; +parameter val_usb0__ENDPTPRIME = 32'h00000000; +parameter mask_usb0__ENDPTPRIME = 32'hFFFFFFFF; + +parameter usb0__ENDPTFLUSH = 32'hE00021B4; +parameter val_usb0__ENDPTFLUSH = 32'h00000000; +parameter mask_usb0__ENDPTFLUSH = 32'hFFFFFFFF; + +parameter usb0__ENDPTSTAT = 32'hE00021B8; +parameter val_usb0__ENDPTSTAT = 32'h00000000; +parameter mask_usb0__ENDPTSTAT = 32'hFFFFFFFF; + +parameter usb0__ENDPTCOMPLETE = 32'hE00021BC; +parameter val_usb0__ENDPTCOMPLETE = 32'h00000000; +parameter mask_usb0__ENDPTCOMPLETE = 32'hFFFFFFFF; + +parameter usb0__ENDPTCTRL0 = 32'hE00021C0; +parameter val_usb0__ENDPTCTRL0 = 32'h00800080; +parameter mask_usb0__ENDPTCTRL0 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL1 = 32'hE00021C4; +parameter val_usb0__ENDPTCTRL1 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL1 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL2 = 32'hE00021C8; +parameter val_usb0__ENDPTCTRL2 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL2 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL3 = 32'hE00021CC; +parameter val_usb0__ENDPTCTRL3 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL3 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL4 = 32'hE00021D0; +parameter val_usb0__ENDPTCTRL4 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL4 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL5 = 32'hE00021D4; +parameter val_usb0__ENDPTCTRL5 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL5 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL6 = 32'hE00021D8; +parameter val_usb0__ENDPTCTRL6 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL6 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL7 = 32'hE00021DC; +parameter val_usb0__ENDPTCTRL7 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL7 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL8 = 32'hE00021E0; +parameter val_usb0__ENDPTCTRL8 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL8 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL9 = 32'hE00021E4; +parameter val_usb0__ENDPTCTRL9 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL9 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL10 = 32'hE00021E8; +parameter val_usb0__ENDPTCTRL10 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL10 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL11 = 32'hE00021EC; +parameter val_usb0__ENDPTCTRL11 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL11 = 32'h00FFFFFF; + +parameter usb0__ENDPTCTRL12 = 32'hE00021F0; +parameter val_usb0__ENDPTCTRL12 = 32'h00000000; +parameter mask_usb0__ENDPTCTRL12 = 32'h00FFFFFF; + + +// ************************************************************ +// Module usb1 usb +// doc version: 1.3 +// ************************************************************ + +// ADDRESS DEVFALUE MASK NAME +parameter usb1__ID = 32'hE0003000; +parameter val_usb1__ID = 32'hE441FA05; +parameter mask_usb1__ID = 32'hFFFFFFFF; + +parameter usb1__HWGENERAL = 32'hE0003004; +parameter val_usb1__HWGENERAL = 32'h00000083; +parameter mask_usb1__HWGENERAL = 32'h00000FFF; + +parameter usb1__HWHOST = 32'hE0003008; +parameter val_usb1__HWHOST = 32'h10020001; +parameter mask_usb1__HWHOST = 32'hFFFFFFFF; + +parameter usb1__HWDEVICE = 32'hE000300C; +parameter val_usb1__HWDEVICE = 32'h00000019; +parameter mask_usb1__HWDEVICE = 32'h0000003F; + +parameter usb1__HWTXBUF = 32'hE0003010; +parameter val_usb1__HWTXBUF = 32'h80060A10; +parameter mask_usb1__HWTXBUF = 32'hFFFFFFFF; + +parameter usb1__HWRXBUF = 32'hE0003014; +parameter val_usb1__HWRXBUF = 32'h00000A10; +parameter mask_usb1__HWRXBUF = 32'hFF00FFFF; + +parameter usb1__GPTIMER0LD = 32'hE0003080; +parameter val_usb1__GPTIMER0LD = 32'h00000000; +parameter mask_usb1__GPTIMER0LD = 32'h00FFFFFF; + +parameter usb1__GPTIMER0CTRL = 32'hE0003084; +parameter val_usb1__GPTIMER0CTRL = 32'h00000000; +parameter mask_usb1__GPTIMER0CTRL = 32'hFFFFFFFF; + +parameter usb1__GPTIMER1LD = 32'hE0003088; +parameter val_usb1__GPTIMER1LD = 32'h00000000; +parameter mask_usb1__GPTIMER1LD = 32'h00FFFFFF; + +parameter usb1__GPTIMER1CTRL = 32'hE000308C; +parameter val_usb1__GPTIMER1CTRL = 32'h00000000; +parameter mask_usb1__GPTIMER1CTRL = 32'hFFFFFFFF; + +parameter usb1__SBUSCFG = 32'hE0003090; +parameter val_usb1__SBUSCFG = 32'h00000003; +parameter mask_usb1__SBUSCFG = 32'h00000007; + +parameter usb1__CAPLENGTH_HCIVERSION = 32'hE0003100; +parameter val_usb1__CAPLENGTH_HCIVERSION = 32'h01000040; +parameter mask_usb1__CAPLENGTH_HCIVERSION = 32'hFFFFFFFF; + +parameter usb1__HCSPARAMS = 32'hE0003104; +parameter val_usb1__HCSPARAMS = 32'h00010011; +parameter mask_usb1__HCSPARAMS = 32'h0FFFFFFF; + +parameter usb1__HCCPARAMS = 32'hE0003108; +parameter val_usb1__HCCPARAMS = 32'h00000006; +parameter mask_usb1__HCCPARAMS = 32'h0000FFFF; + +parameter usb1__DCIVERSION = 32'hE0003120; +parameter val_usb1__DCIVERSION = 32'h00000001; +parameter mask_usb1__DCIVERSION = 32'h0000FFFF; + +parameter usb1__DCCPARAMS = 32'hE0003124; +parameter val_usb1__DCCPARAMS = 32'h0000018C; +parameter mask_usb1__DCCPARAMS = 32'h000001FF; + +parameter usb1__USBCMD = 32'hE0003140; +parameter val_usb1__USBCMD = 32'h00000B00; +parameter mask_usb1__USBCMD = 32'h00FFFFFF; + +parameter usb1__USBSTS = 32'hE0003144; +parameter val_usb1__USBSTS = 32'h00000000; +parameter mask_usb1__USBSTS = 32'h03FFFFFF; + +parameter usb1__USBINTR = 32'hE0003148; +parameter val_usb1__USBINTR = 32'h00000000; +parameter mask_usb1__USBINTR = 32'h03FF0FFF; + +parameter usb1__FRINDEX = 32'hE000314C; +parameter val_usb1__FRINDEX = 32'h00000000; +parameter mask_usb1__FRINDEX = 32'h00003FFF; + +parameter usb1__PERIODICLISTBASE_DEVICEADDR = 32'hE0003154; +parameter val_usb1__PERIODICLISTBASE_DEVICEADDR = 32'h00000000; +parameter mask_usb1__PERIODICLISTBASE_DEVICEADDR = 32'hFFFFFFFF; + +parameter usb1__ASYNCLISTADDR_ENDPOINTLISTADDR = 32'hE0003158; +parameter val_usb1__ASYNCLISTADDR_ENDPOINTLISTADDR = 32'h00000000; +parameter mask_usb1__ASYNCLISTADDR_ENDPOINTLISTADDR = 32'hFFFFFFFF; + +parameter usb1__TTCTRL = 32'hE000315C; +parameter val_usb1__TTCTRL = 32'h00000000; +parameter mask_usb1__TTCTRL = 32'hFFFFFFFF; + +parameter usb1__BURSTSIZE = 32'hE0003160; +parameter val_usb1__BURSTSIZE = 32'h00001010; +parameter mask_usb1__BURSTSIZE = 32'h0001FFFF; + +parameter usb1__TXFILLTUNING = 32'hE0003164; +parameter val_usb1__TXFILLTUNING = 32'h00020000; +parameter mask_usb1__TXFILLTUNING = 32'h003FFFFF; + +parameter usb1__TXTTFILLTUNING = 32'hE0003168; +parameter val_usb1__TXTTFILLTUNING = 32'h00000000; +parameter mask_usb1__TXTTFILLTUNING = 32'h00001FFF; + +parameter usb1__IC_USB = 32'hE000316C; +parameter val_usb1__IC_USB = 32'h00000000; +parameter mask_usb1__IC_USB = 32'hFFFFFFFF; + +parameter usb1__ULPI_VIEWPORT = 32'hE0003170; +parameter val_usb1__ULPI_VIEWPORT = 32'h00000000; +parameter mask_usb1__ULPI_VIEWPORT = 32'hFFFFFFFF; + +parameter usb1__ENDPTNAK = 32'hE0003178; +parameter val_usb1__ENDPTNAK = 32'h00000000; +parameter mask_usb1__ENDPTNAK = 32'hFFFFFFFF; + +parameter usb1__ENDPTNAKEN = 32'hE000317C; +parameter val_usb1__ENDPTNAKEN = 32'h00000000; +parameter mask_usb1__ENDPTNAKEN = 32'hFFFFFFFF; + +parameter usb1__CONFIGFLAG = 32'hE0003180; +parameter val_usb1__CONFIGFLAG = 32'h00000001; +parameter mask_usb1__CONFIGFLAG = 32'hFFFFFFFF; + +parameter usb1__PORTSC1 = 32'hE0003184; +parameter val_usb1__PORTSC1 = 32'h00000000; +parameter mask_usb1__PORTSC1 = 32'hFFFFFFFF; + +parameter usb1__OTGSC = 32'hE00031A4; +parameter val_usb1__OTGSC = 32'h00000020; +parameter mask_usb1__OTGSC = 32'hFFFFFFFF; + +parameter usb1__USBMODE = 32'hE00031A8; +parameter val_usb1__USBMODE = 32'h00000000; +parameter mask_usb1__USBMODE = 32'h0000FFFF; + +parameter usb1__ENDPTSETUPSTAT = 32'hE00031AC; +parameter val_usb1__ENDPTSETUPSTAT = 32'h00000000; +parameter mask_usb1__ENDPTSETUPSTAT = 32'h0000FFFF; + +parameter usb1__ENDPTPRIME = 32'hE00031B0; +parameter val_usb1__ENDPTPRIME = 32'h00000000; +parameter mask_usb1__ENDPTPRIME = 32'hFFFFFFFF; + +parameter usb1__ENDPTFLUSH = 32'hE00031B4; +parameter val_usb1__ENDPTFLUSH = 32'h00000000; +parameter mask_usb1__ENDPTFLUSH = 32'hFFFFFFFF; + +parameter usb1__ENDPTSTAT = 32'hE00031B8; +parameter val_usb1__ENDPTSTAT = 32'h00000000; +parameter mask_usb1__ENDPTSTAT = 32'hFFFFFFFF; + +parameter usb1__ENDPTCOMPLETE = 32'hE00031BC; +parameter val_usb1__ENDPTCOMPLETE = 32'h00000000; +parameter mask_usb1__ENDPTCOMPLETE = 32'hFFFFFFFF; + +parameter usb1__ENDPTCTRL0 = 32'hE00031C0; +parameter val_usb1__ENDPTCTRL0 = 32'h00800080; +parameter mask_usb1__ENDPTCTRL0 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL1 = 32'hE00031C4; +parameter val_usb1__ENDPTCTRL1 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL1 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL2 = 32'hE00031C8; +parameter val_usb1__ENDPTCTRL2 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL2 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL3 = 32'hE00031CC; +parameter val_usb1__ENDPTCTRL3 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL3 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL4 = 32'hE00031D0; +parameter val_usb1__ENDPTCTRL4 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL4 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL5 = 32'hE00031D4; +parameter val_usb1__ENDPTCTRL5 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL5 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL6 = 32'hE00031D8; +parameter val_usb1__ENDPTCTRL6 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL6 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL7 = 32'hE00031DC; +parameter val_usb1__ENDPTCTRL7 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL7 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL8 = 32'hE00031E0; +parameter val_usb1__ENDPTCTRL8 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL8 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL9 = 32'hE00031E4; +parameter val_usb1__ENDPTCTRL9 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL9 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL10 = 32'hE00031E8; +parameter val_usb1__ENDPTCTRL10 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL10 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL11 = 32'hE00031EC; +parameter val_usb1__ENDPTCTRL11 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL11 = 32'h00FFFFFF; + +parameter usb1__ENDPTCTRL12 = 32'hE00031F0; +parameter val_usb1__ENDPTCTRL12 = 32'h00000000; +parameter mask_usb1__ENDPTCTRL12 = 32'h00FFFFFF; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_regc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_regc.v new file mode 100644 index 0000000..5cb0341 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_regc.v @@ -0,0 +1,118 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_regc.v + * + * Date : 2012-11 + * + * Description : Controller for Register Map Memory + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_regc( + rstn, + sw_clk, + +/* Goes to port 0 of REG */ + reg_rd_req_port0, + reg_rd_dv_port0, + reg_rd_addr_port0, + reg_rd_data_port0, + reg_rd_bytes_port0, + reg_rd_qos_port0, + + +/* Goes to port 1 of REG */ + reg_rd_req_port1, + reg_rd_dv_port1, + reg_rd_addr_port1, + reg_rd_data_port1, + reg_rd_bytes_port1, + reg_rd_qos_port1 + +); + +input rstn; +input sw_clk; + +input reg_rd_req_port0; +output reg_rd_dv_port0; +input[31:0] reg_rd_addr_port0; +output[1023:0] reg_rd_data_port0; +input[7:0] reg_rd_bytes_port0; +input [3:0] reg_rd_qos_port0; + +input reg_rd_req_port1; +output reg_rd_dv_port1; +input[31:0] reg_rd_addr_port1; +output[1023:0] reg_rd_data_port1; +input[7:0] reg_rd_bytes_port1; +input[3:0] reg_rd_qos_port1; + +wire [3:0] rd_qos; +reg [1023:0] rd_data; +wire [31:0] rd_addr; +wire [7:0] rd_bytes; +reg rd_dv; +wire rd_req; + +processing_system7_bfm_v2_0_arb_rd reg_read_ports ( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(reg_rd_qos_port0), + .qos2(reg_rd_qos_port1), + + .prt_req1(reg_rd_req_port0), + .prt_req2(reg_rd_req_port1), + + .prt_data1(reg_rd_data_port0), + .prt_data2(reg_rd_data_port1), + + .prt_addr1(reg_rd_addr_port0), + .prt_addr2(reg_rd_addr_port1), + + .prt_bytes1(reg_rd_bytes_port0), + .prt_bytes2(reg_rd_bytes_port1), + + .prt_dv1(reg_rd_dv_port0), + .prt_dv2(reg_rd_dv_port1), + + .prt_qos(rd_qos), + .prt_req(rd_req), + .prt_data(rd_data), + .prt_addr(rd_addr), + .prt_bytes(rd_bytes), + .prt_dv(rd_dv) + +); + +processing_system7_bfm_v2_0_reg_map regm(); + +reg state; +always@(posedge sw_clk or negedge rstn) +begin +if(!rstn) begin + rd_dv <= 0; + state <= 0; +end else begin + case(state) + 0:begin + state <= 0; + rd_dv <= 0; + if(rd_req) begin + regm.read_reg_mem(rd_data,rd_addr, rd_bytes); + rd_dv <= 1; + state <= 1; + end + + end + 1:begin + rd_dv <= 0; + state <= 0; + end + + endcase +end /// if +end// always + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_sparse_mem.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_sparse_mem.v new file mode 100644 index 0000000..b8e954d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_sparse_mem.v @@ -0,0 +1,317 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_sparse_mem.v + * + * Date : 2012-11 + * + * Description : Sparse Memory Model + * + *****************************************************************************/ + +/*** WA for CR # 695818 ***/ +`ifdef XILINX_SIMULATOR + `define XSIM_ISIM +`endif +`ifdef XILINX_ISIM + `define XSIM_ISIM +`endif + + `timescale 1ns/1ps +module processing_system7_bfm_v2_0_sparse_mem(); + +`include "processing_system7_bfm_v2_0_local_params.v" + +parameter mem_size = 32'h4000_0000; /// 1GB mem size +parameter xsim_mem_size = 32'h1000_0000; ///256 MB mem size (x4 for XSIM/ISIM) + + +`ifdef XSIM_ISIM + reg [data_width-1:0] ddr_mem0 [0:(xsim_mem_size/mem_width)-1]; // 256MB mem + reg [data_width-1:0] ddr_mem1 [0:(xsim_mem_size/mem_width)-1]; // 256MB mem + reg [data_width-1:0] ddr_mem2 [0:(xsim_mem_size/mem_width)-1]; // 256MB mem + reg [data_width-1:0] ddr_mem3 [0:(xsim_mem_size/mem_width)-1]; // 256MB mem +`else + reg /*sparse*/ [data_width-1:0] ddr_mem [0:(mem_size/mem_width)-1]; // 'h10_0000 to 'h3FFF_FFFF - 1G mem +`endif + +event mem_updated; +reg check_we; +reg [addr_width-1:0] check_up_add; +reg [data_width-1:0] updated_data; + +/* preload memory from file */ +task automatic pre_load_mem_from_file; +input [(max_chars*8)-1:0] file_name; +input [addr_width-1:0] start_addr; +input [int_width-1:0] no_of_bytes; +`ifdef XSIM_ISIM + case(start_addr[31:28]) + 4'd0 : $readmemh(file_name,ddr_mem0,start_addr>>shft_addr_bits); + 4'd1 : $readmemh(file_name,ddr_mem1,start_addr>>shft_addr_bits); + 4'd2 : $readmemh(file_name,ddr_mem2,start_addr>>shft_addr_bits); + 4'd3 : $readmemh(file_name,ddr_mem3,start_addr>>shft_addr_bits); + endcase +`else + $readmemh(file_name,ddr_mem,start_addr>>shft_addr_bits); +`endif +endtask + +/* preload memory with some random data */ +task automatic pre_load_mem; +input [1:0] data_type; +input [addr_width-1:0] start_addr; +input [int_width-1:0] no_of_bytes; +integer i; +reg [addr_width-1:0] addr; +begin +addr = start_addr >> shft_addr_bits; +for (i = 0; i < no_of_bytes; i = i + mem_width) begin + case(data_type) + ALL_RANDOM : set_data(addr , $random); + ALL_ZEROS : set_data(addr , 32'h0000_0000); + ALL_ONES : set_data(addr , 32'hFFFF_FFFF); + default : set_data(addr , $random); + endcase + addr = addr+1; +end +end +endtask + +/* wait for memory update at certain location */ +task automatic wait_mem_update; +input[addr_width-1:0] address; +output[data_width-1:0] dataout; +begin + check_up_add = address >> shft_addr_bits; + check_we = 1; + @(mem_updated); + dataout = updated_data; + check_we = 0; +end +endtask + +/* internal task to write data in memory */ +task automatic set_data; +input [addr_width-1:0] addr; +input [data_width-1:0] data; +begin +if(check_we && (addr === check_up_add)) begin + updated_data = data; + -> mem_updated; +end +`ifdef XSIM_ISIM + case(addr[31:26]) + 6'd0 : ddr_mem0[addr[25:0]] = data; + 6'd1 : ddr_mem1[addr[25:0]] = data; + 6'd2 : ddr_mem2[addr[25:0]] = data; + 6'd3 : ddr_mem3[addr[25:0]] = data; + endcase +`else + ddr_mem[addr] = data; +`endif +end +endtask + +/* internal task to read data from memory */ +task automatic get_data; +input [addr_width-1:0] addr; +output [data_width-1:0] data; +begin +`ifdef XSIM_ISIM + case(addr[31:26]) + 6'd0 : data = ddr_mem0[addr[25:0]]; + 6'd1 : data = ddr_mem1[addr[25:0]]; + 6'd2 : data = ddr_mem2[addr[25:0]]; + 6'd3 : data = ddr_mem3[addr[25:0]]; + endcase +`else + data = ddr_mem[addr]; +`endif +end +endtask + +/* Write memory */ +task write_mem; +input [max_burst_bits-1 :0] data; +input [addr_width-1:0] start_addr; +input [max_burst_bytes_width:0] no_of_bytes; +reg [addr_width-1:0] addr; +reg [max_burst_bits-1 :0] wr_temp_data; +reg [data_width-1:0] pre_pad_data,post_pad_data,temp_data; +integer bytes_left; +integer pre_pad_bytes; +integer post_pad_bytes; +begin +addr = start_addr >> shft_addr_bits; +wr_temp_data = data; + +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : Writing DDR Memory starting address (0x%0h) with %0d bytes.\n Data (0x%0h)",$time, DISP_INT_INFO, start_addr, no_of_bytes, data); +`endif + +temp_data = wr_temp_data[data_width-1:0]; +bytes_left = no_of_bytes; +/* when the no. of bytes to be updated is less than mem_width */ +if(bytes_left < mem_width) begin + /* first data word in the burst , if unaligned address, the adjust the wr_data accordingly for first write*/ + if(start_addr[shft_addr_bits-1:0] > 0) begin + //temp_data = ddr_mem[addr]; + get_data(addr,temp_data); + pre_pad_bytes = mem_width - start_addr[shft_addr_bits-1:0]; + repeat(pre_pad_bytes) temp_data = temp_data << 8; + repeat(pre_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = wr_temp_data[7:0]; + wr_temp_data = wr_temp_data >> 8; + end + bytes_left = bytes_left + pre_pad_bytes; + end + /* This is needed for post padding the data ...*/ + post_pad_bytes = mem_width - bytes_left; + //post_pad_data = ddr_mem[addr]; + get_data(addr,post_pad_data); + repeat(post_pad_bytes) temp_data = temp_data << 8; + repeat(bytes_left) post_pad_data = post_pad_data >> 8; + repeat(post_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = post_pad_data[7:0]; + post_pad_data = post_pad_data >> 8; + end + //ddr_mem[addr] = temp_data; + set_data(addr,temp_data); +end else begin + /* first data word in the burst , if unaligned address, the adjust the wr_data accordingly for first write*/ + if(start_addr[shft_addr_bits-1:0] > 0) begin + //temp_data = ddr_mem[addr]; + get_data(addr,temp_data); + pre_pad_bytes = mem_width - start_addr[shft_addr_bits-1:0]; + repeat(pre_pad_bytes) temp_data = temp_data << 8; + repeat(pre_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = wr_temp_data[7:0]; + wr_temp_data = wr_temp_data >> 8; + bytes_left = bytes_left -1; + end + end else begin + wr_temp_data = wr_temp_data >> data_width; + bytes_left = bytes_left - mem_width; + end + /* first data word end */ + //ddr_mem[addr] = temp_data; + set_data(addr,temp_data); + addr = addr + 1; + while(bytes_left > (mem_width-1) ) begin /// for unaliged address necessary to check for mem_wd-1 , accordingly we have to pad post bytes. + //ddr_mem[addr] = wr_temp_data[data_width-1:0]; + set_data(addr,wr_temp_data[data_width-1:0]); + addr = addr+1; + wr_temp_data = wr_temp_data >> data_width; + bytes_left = bytes_left - mem_width; + end + + //post_pad_data = ddr_mem[addr]; + get_data(addr,post_pad_data); + post_pad_bytes = mem_width - bytes_left; + /* This is needed for last transfer in unaliged burst */ + if(bytes_left > 0) begin + temp_data = wr_temp_data[data_width-1:0]; + repeat(post_pad_bytes) temp_data = temp_data << 8; + repeat(bytes_left) post_pad_data = post_pad_data >> 8; + repeat(post_pad_bytes) begin + temp_data = temp_data >> 8; + temp_data[data_width-1:data_width-8] = post_pad_data[7:0]; + post_pad_data = post_pad_data >> 8; + end + //ddr_mem[addr] = temp_data; + set_data(addr,temp_data); + end +end +`ifdef XLNX_INT_DBG $display("[%0d] : %0s : DONE -> Writing DDR Memory starting address (0x%0h)",$time, DISP_INT_INFO, start_addr ); +`endif +end +endtask + +/* read_memory */ +task read_mem; +output[max_burst_bits-1 :0] data; +input [addr_width-1:0] start_addr; +input [max_burst_bytes_width :0] no_of_bytes; +integer i; +reg [addr_width-1:0] addr; +reg [data_width-1:0] temp_rd_data; +reg [max_burst_bits-1:0] temp_data; +integer pre_bytes; +integer bytes_left; +begin +addr = start_addr >> shft_addr_bits; +pre_bytes = start_addr[shft_addr_bits-1:0]; +bytes_left = no_of_bytes; + +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : Reading DDR Memory starting address (0x%0h) -> %0d bytes",$time, DISP_INT_INFO, start_addr,no_of_bytes ); +`endif + +/* Get first data ... if unaligned address */ +//temp_data[(max_burst * max_data_burst)-1 : (max_burst * max_data_burst)- data_width] = ddr_mem[addr]; +get_data(addr,temp_data[max_burst_bits-1 : max_burst_bits-data_width]); + +if(no_of_bytes < mem_width ) begin + temp_data = temp_data >> (pre_bytes * 8); + repeat(max_burst_bytes - mem_width) + temp_data = temp_data >> 8; + +end else begin + bytes_left = bytes_left - (mem_width - pre_bytes); + addr = addr+1; + /* Got first data */ + while (bytes_left > (mem_width-1) ) begin + temp_data = temp_data >> data_width; + //temp_data[(max_burst * max_data_burst)-1 : (max_burst * max_data_burst)- data_width] = ddr_mem[addr]; + get_data(addr,temp_data[max_burst_bits-1 : max_burst_bits-data_width]); + addr = addr+1; + bytes_left = bytes_left - mem_width; + end + + /* Get last valid data in the burst*/ + //temp_rd_data = ddr_mem[addr]; + get_data(addr,temp_rd_data); + while(bytes_left > 0) begin + temp_data = temp_data >> 8; + temp_data[max_burst_bits-1 : max_burst_bits-8] = temp_rd_data[7:0]; + temp_rd_data = temp_rd_data >> 8; + bytes_left = bytes_left - 1; + end + /* align to the brst_byte length */ + repeat(max_burst_bytes - no_of_bytes) + temp_data = temp_data >> 8; +end +data = temp_data; +`ifdef XLNX_INT_DBG + $display("[%0d] : %0s : DONE -> Reading DDR Memory starting address (0x%0h), Data returned(0x%0h)",$time, DISP_INT_INFO, start_addr, data ); +`endif +end +endtask + +/* backdoor read to memory */ +task peek_mem_to_file; +input [(max_chars*8)-1:0] file_name; +input [addr_width-1:0] start_addr; +input [int_width-1:0] no_of_bytes; + +integer rd_fd; +integer bytes; +reg [addr_width-1:0] addr; +reg [data_width-1:0] rd_data; +begin +rd_fd = $fopen(file_name,"w"); +bytes = no_of_bytes; + +addr = start_addr >> shft_addr_bits; +while (bytes > 0) begin + get_data(addr,rd_data); + $fdisplayh(rd_fd,rd_data); + bytes = bytes - 4; + addr = addr + 1; +end +end +endtask + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ssw_hp.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ssw_hp.v new file mode 100644 index 0000000..b8b2046 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_ssw_hp.v @@ -0,0 +1,443 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_ssw_hp.v + * + * Date : 2012-11 + * + * Description : SSW switch Model + * + *****************************************************************************/ + `timescale 1ns/1ps + +module processing_system7_bfm_v2_0_ssw_hp( + sw_clk, + rstn, + w_qos_hp0, + r_qos_hp0, + w_qos_hp1, + r_qos_hp1, + w_qos_hp2, + r_qos_hp2, + w_qos_hp3, + r_qos_hp3, + + wr_ack_ddr_hp0, + wr_data_hp0, + wr_addr_hp0, + wr_bytes_hp0, + wr_dv_ddr_hp0, + rd_req_ddr_hp0, + rd_addr_hp0, + rd_bytes_hp0, + rd_data_ddr_hp0, + rd_dv_ddr_hp0, + + rd_data_ocm_hp0, + wr_ack_ocm_hp0, + wr_dv_ocm_hp0, + rd_req_ocm_hp0, + rd_dv_ocm_hp0, + + wr_ack_ddr_hp1, + wr_data_hp1, + wr_addr_hp1, + wr_bytes_hp1, + wr_dv_ddr_hp1, + rd_req_ddr_hp1, + rd_addr_hp1, + rd_bytes_hp1, + rd_data_ddr_hp1, + rd_data_ocm_hp1, + rd_dv_ddr_hp1, + + wr_ack_ocm_hp1, + wr_dv_ocm_hp1, + rd_req_ocm_hp1, + rd_dv_ocm_hp1, + + wr_ack_ddr_hp2, + wr_data_hp2, + wr_addr_hp2, + wr_bytes_hp2, + wr_dv_ddr_hp2, + rd_req_ddr_hp2, + rd_addr_hp2, + rd_bytes_hp2, + rd_data_ddr_hp2, + rd_data_ocm_hp2, + rd_dv_ddr_hp2, + + wr_ack_ocm_hp2, + wr_dv_ocm_hp2, + rd_req_ocm_hp2, + rd_dv_ocm_hp2, + + wr_ack_ddr_hp3, + wr_data_hp3, + wr_addr_hp3, + wr_bytes_hp3, + wr_dv_ddr_hp3, + rd_req_ddr_hp3, + rd_addr_hp3, + rd_bytes_hp3, + rd_data_ocm_hp3, + rd_data_ddr_hp3, + rd_dv_ddr_hp3, + + wr_ack_ocm_hp3, + wr_dv_ocm_hp3, + rd_req_ocm_hp3, + rd_dv_ocm_hp3, + + ddr_wr_ack0, + ddr_wr_dv0, + ddr_rd_req0, + ddr_rd_dv0, + ddr_rd_qos0, + ddr_wr_qos0, + + ddr_wr_addr0, + ddr_wr_data0, + ddr_wr_bytes0, + ddr_rd_addr0, + ddr_rd_data0, + ddr_rd_bytes0, + + ddr_wr_ack1, + ddr_wr_dv1, + ddr_rd_req1, + ddr_rd_dv1, + ddr_rd_qos1, + ddr_wr_qos1, + ddr_wr_addr1, + ddr_wr_data1, + ddr_wr_bytes1, + ddr_rd_addr1, + ddr_rd_data1, + ddr_rd_bytes1, + + ocm_wr_ack, + ocm_wr_dv, + ocm_rd_req, + ocm_rd_dv, + + ocm_wr_qos, + ocm_rd_qos, + ocm_wr_addr, + ocm_wr_data, + ocm_wr_bytes, + ocm_rd_addr, + ocm_rd_data, + ocm_rd_bytes + + + +); + +input sw_clk; +input rstn; +input [3:0] w_qos_hp0; +input [3:0] r_qos_hp0; +input [3:0] w_qos_hp1; +input [3:0] r_qos_hp1; +input [3:0] w_qos_hp2; +input [3:0] r_qos_hp2; +input [3:0] w_qos_hp3; +input [3:0] r_qos_hp3; + +output [3:0] ddr_rd_qos0; +output [3:0] ddr_wr_qos0; +output [3:0] ddr_rd_qos1; +output [3:0] ddr_wr_qos1; +output [3:0] ocm_wr_qos; +output [3:0] ocm_rd_qos; + +output wr_ack_ddr_hp0; +input [1023:0] wr_data_hp0; +input [31:0] wr_addr_hp0; +input [7:0] wr_bytes_hp0; +output wr_dv_ddr_hp0; + +input rd_req_ddr_hp0; +input [31:0] rd_addr_hp0; +input [7:0] rd_bytes_hp0; +output [1023:0] rd_data_ddr_hp0; +output rd_dv_ddr_hp0; + +output wr_ack_ddr_hp1; +input [1023:0] wr_data_hp1; +input [31:0] wr_addr_hp1; +input [7:0] wr_bytes_hp1; +output wr_dv_ddr_hp1; + +input rd_req_ddr_hp1; +input [31:0] rd_addr_hp1; +input [7:0] rd_bytes_hp1; +output [1023:0] rd_data_ddr_hp1; +output rd_dv_ddr_hp1; + +output wr_ack_ddr_hp2; +input [1023:0] wr_data_hp2; +input [31:0] wr_addr_hp2; +input [7:0] wr_bytes_hp2; +output wr_dv_ddr_hp2; + +input rd_req_ddr_hp2; +input [31:0] rd_addr_hp2; +input [7:0] rd_bytes_hp2; +output [1023:0] rd_data_ddr_hp2; +output rd_dv_ddr_hp2; + +output wr_ack_ddr_hp3; +input [1023:0] wr_data_hp3; +input [31:0] wr_addr_hp3; +input [7:0] wr_bytes_hp3; +output wr_dv_ddr_hp3; + +input rd_req_ddr_hp3; +input [31:0] rd_addr_hp3; +input [7:0] rd_bytes_hp3; +output [1023:0] rd_data_ddr_hp3; +output rd_dv_ddr_hp3; + +input ddr_wr_ack0; +output ddr_wr_dv0; +output [31:0]ddr_wr_addr0; +output [1023:0]ddr_wr_data0; +output [7:0]ddr_wr_bytes0; + +input ddr_rd_dv0; +input [1023:0] ddr_rd_data0; +output ddr_rd_req0; +output [31:0] ddr_rd_addr0; +output [7:0] ddr_rd_bytes0; + +input ddr_wr_ack1; +output ddr_wr_dv1; +output [31:0]ddr_wr_addr1; +output [1023:0]ddr_wr_data1; +output [7:0]ddr_wr_bytes1; + +input ddr_rd_dv1; +input [1023:0] ddr_rd_data1; +output ddr_rd_req1; +output [31:0] ddr_rd_addr1; +output [7:0] ddr_rd_bytes1; + +output wr_ack_ocm_hp0; +input wr_dv_ocm_hp0; +input rd_req_ocm_hp0; +output rd_dv_ocm_hp0; +output [1023:0] rd_data_ocm_hp0; + +output wr_ack_ocm_hp1; +input wr_dv_ocm_hp1; +input rd_req_ocm_hp1; +output rd_dv_ocm_hp1; +output [1023:0] rd_data_ocm_hp1; + +output wr_ack_ocm_hp2; +input wr_dv_ocm_hp2; +input rd_req_ocm_hp2; +output rd_dv_ocm_hp2; +output [1023:0] rd_data_ocm_hp2; + +output wr_ack_ocm_hp3; +input wr_dv_ocm_hp3; +input rd_req_ocm_hp3; +output rd_dv_ocm_hp3; +output [1023:0] rd_data_ocm_hp3; + +input ocm_wr_ack; +output ocm_wr_dv; +output [31:0]ocm_wr_addr; +output [1023:0]ocm_wr_data; +output [7:0]ocm_wr_bytes; + +input ocm_rd_dv; +input [1023:0] ocm_rd_data; +output ocm_rd_req; +output [31:0] ocm_rd_addr; +output [7:0] ocm_rd_bytes; + +/* FOR DDR */ +processing_system7_bfm_v2_0_arb_hp0_1 ddr_hp01 ( + .sw_clk(sw_clk), + .rstn(rstn), + .w_qos_hp0(w_qos_hp0), + .r_qos_hp0(r_qos_hp0), + .w_qos_hp1(w_qos_hp1), + .r_qos_hp1(r_qos_hp1), + + .wr_ack_ddr_hp0(wr_ack_ddr_hp0), + .wr_data_hp0(wr_data_hp0), + .wr_addr_hp0(wr_addr_hp0), + .wr_bytes_hp0(wr_bytes_hp0), + .wr_dv_ddr_hp0(wr_dv_ddr_hp0), + .rd_req_ddr_hp0(rd_req_ddr_hp0), + .rd_addr_hp0(rd_addr_hp0), + .rd_bytes_hp0(rd_bytes_hp0), + .rd_data_ddr_hp0(rd_data_ddr_hp0), + .rd_dv_ddr_hp0(rd_dv_ddr_hp0), + + .wr_ack_ddr_hp1(wr_ack_ddr_hp1), + .wr_data_hp1(wr_data_hp1), + .wr_addr_hp1(wr_addr_hp1), + .wr_bytes_hp1(wr_bytes_hp1), + .wr_dv_ddr_hp1(wr_dv_ddr_hp1), + .rd_req_ddr_hp1(rd_req_ddr_hp1), + .rd_addr_hp1(rd_addr_hp1), + .rd_bytes_hp1(rd_bytes_hp1), + .rd_data_ddr_hp1(rd_data_ddr_hp1), + .rd_dv_ddr_hp1(rd_dv_ddr_hp1), + + .ddr_wr_ack(ddr_wr_ack0), + .ddr_wr_dv(ddr_wr_dv0), + .ddr_rd_req(ddr_rd_req0), + .ddr_rd_dv(ddr_rd_dv0), + .ddr_rd_qos(ddr_rd_qos0), + .ddr_wr_qos(ddr_wr_qos0), + .ddr_wr_addr(ddr_wr_addr0), + .ddr_wr_data(ddr_wr_data0), + .ddr_wr_bytes(ddr_wr_bytes0), + .ddr_rd_addr(ddr_rd_addr0), + .ddr_rd_data(ddr_rd_data0), + .ddr_rd_bytes(ddr_rd_bytes0) +); + +/* FOR DDR */ +processing_system7_bfm_v2_0_arb_hp2_3 ddr_hp23 ( + .sw_clk(sw_clk), + .rstn(rstn), + .w_qos_hp2(w_qos_hp2), + .r_qos_hp2(r_qos_hp2), + .w_qos_hp3(w_qos_hp3), + .r_qos_hp3(r_qos_hp3), + + .wr_ack_ddr_hp2(wr_ack_ddr_hp2), + .wr_data_hp2(wr_data_hp2), + .wr_addr_hp2(wr_addr_hp2), + .wr_bytes_hp2(wr_bytes_hp2), + .wr_dv_ddr_hp2(wr_dv_ddr_hp2), + .rd_req_ddr_hp2(rd_req_ddr_hp2), + .rd_addr_hp2(rd_addr_hp2), + .rd_bytes_hp2(rd_bytes_hp2), + .rd_data_ddr_hp2(rd_data_ddr_hp2), + .rd_dv_ddr_hp2(rd_dv_ddr_hp2), + + .wr_ack_ddr_hp3(wr_ack_ddr_hp3), + .wr_data_hp3(wr_data_hp3), + .wr_addr_hp3(wr_addr_hp3), + .wr_bytes_hp3(wr_bytes_hp3), + .wr_dv_ddr_hp3(wr_dv_ddr_hp3), + .rd_req_ddr_hp3(rd_req_ddr_hp3), + .rd_addr_hp3(rd_addr_hp3), + .rd_bytes_hp3(rd_bytes_hp3), + .rd_data_ddr_hp3(rd_data_ddr_hp3), + .rd_dv_ddr_hp3(rd_dv_ddr_hp3), + + .ddr_wr_ack(ddr_wr_ack1), + .ddr_wr_dv(ddr_wr_dv1), + .ddr_rd_req(ddr_rd_req1), + .ddr_rd_dv(ddr_rd_dv1), + .ddr_rd_qos(ddr_rd_qos1), + .ddr_wr_qos(ddr_wr_qos1), + + .ddr_wr_addr(ddr_wr_addr1), + .ddr_wr_data(ddr_wr_data1), + .ddr_wr_bytes(ddr_wr_bytes1), + .ddr_rd_addr(ddr_rd_addr1), + .ddr_rd_data(ddr_rd_data1), + .ddr_rd_bytes(ddr_rd_bytes1) +); + + +/* FOR OCM_WR */ +processing_system7_bfm_v2_0_arb_wr_4 ocm_wr_hp( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(w_qos_hp0), + .qos2(w_qos_hp1), + .qos3(w_qos_hp2), + .qos4(w_qos_hp3), + + .prt_dv1(wr_dv_ocm_hp0), + .prt_dv2(wr_dv_ocm_hp1), + .prt_dv3(wr_dv_ocm_hp2), + .prt_dv4(wr_dv_ocm_hp3), + + .prt_data1(wr_data_hp0), + .prt_data2(wr_data_hp1), + .prt_data3(wr_data_hp2), + .prt_data4(wr_data_hp3), + + .prt_addr1(wr_addr_hp0), + .prt_addr2(wr_addr_hp1), + .prt_addr3(wr_addr_hp2), + .prt_addr4(wr_addr_hp3), + + .prt_bytes1(wr_bytes_hp0), + .prt_bytes2(wr_bytes_hp1), + .prt_bytes3(wr_bytes_hp2), + .prt_bytes4(wr_bytes_hp3), + + .prt_ack1(wr_ack_ocm_hp0), + .prt_ack2(wr_ack_ocm_hp1), + .prt_ack3(wr_ack_ocm_hp2), + .prt_ack4(wr_ack_ocm_hp3), + + .prt_qos(ocm_wr_qos), + .prt_req(ocm_wr_dv), + .prt_data(ocm_wr_data), + .prt_addr(ocm_wr_addr), + .prt_bytes(ocm_wr_bytes), + .prt_ack(ocm_wr_ack) + +); + +/* FOR OCM_RD */ +processing_system7_bfm_v2_0_arb_rd_4 ocm_rd_hp( + .rstn(rstn), + .sw_clk(sw_clk), + + .qos1(r_qos_hp0), + .qos2(r_qos_hp1), + .qos3(r_qos_hp2), + .qos4(r_qos_hp3), + + .prt_req1(rd_req_ocm_hp0), + .prt_req2(rd_req_ocm_hp1), + .prt_req3(rd_req_ocm_hp2), + .prt_req4(rd_req_ocm_hp3), + + .prt_data1(rd_data_ocm_hp0), + .prt_data2(rd_data_ocm_hp1), + .prt_data3(rd_data_ocm_hp2), + .prt_data4(rd_data_ocm_hp3), + + .prt_addr1(rd_addr_hp0), + .prt_addr2(rd_addr_hp1), + .prt_addr3(rd_addr_hp2), + .prt_addr4(rd_addr_hp3), + + .prt_bytes1(rd_bytes_hp0), + .prt_bytes2(rd_bytes_hp1), + .prt_bytes3(rd_bytes_hp2), + .prt_bytes4(rd_bytes_hp3), + + .prt_dv1(rd_dv_ocm_hp0), + .prt_dv2(rd_dv_ocm_hp1), + .prt_dv3(rd_dv_ocm_hp2), + .prt_dv4(rd_dv_ocm_hp3), + + .prt_qos(ocm_rd_qos), + .prt_req(ocm_rd_req), + .prt_data(ocm_rd_data), + .prt_addr(ocm_rd_addr), + .prt_bytes(ocm_rd_bytes), + .prt_dv(ocm_rd_dv) + +); + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_unused_ports.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_unused_ports.v new file mode 100644 index 0000000..9b096f9 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_bfm_v2_0/adcdcea3/hdl/processing_system7_bfm_v2_0_unused_ports.v @@ -0,0 +1,433 @@ +/***************************************************************************** + * File : processing_system7_bfm_v2_0_unused_ports.v + * + * Date : 2012-11 + * + * Description : Semantic checks for unused ports. + * + *****************************************************************************/ + +/* CAN */ +assign CAN0_PHY_TX = 0; +assign CAN1_PHY_TX = 0; +always @(CAN0_PHY_RX or CAN1_PHY_RX) +begin + if(CAN0_PHY_RX | CAN1_PHY_RX) + $display("[%0d] : %0s : CAN Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* ETHERNET */ +/* ------------------------------------------- */ + +assign ENET0_GMII_TX_EN = 0; +assign ENET0_GMII_TX_ER = 0; +assign ENET0_MDIO_MDC = 0; +assign ENET0_MDIO_O = 0; /// confirm +assign ENET0_MDIO_T = 0; +assign ENET0_PTP_DELAY_REQ_RX = 0; +assign ENET0_PTP_DELAY_REQ_TX = 0; +assign ENET0_PTP_PDELAY_REQ_RX = 0; +assign ENET0_PTP_PDELAY_REQ_TX = 0; +assign ENET0_PTP_PDELAY_RESP_RX = 0; +assign ENET0_PTP_PDELAY_RESP_TX = 0; +assign ENET0_PTP_SYNC_FRAME_RX = 0; +assign ENET0_PTP_SYNC_FRAME_TX = 0; +assign ENET0_SOF_RX = 0; +assign ENET0_SOF_TX = 0; +assign ENET0_GMII_TXD = 0; +always@(ENET0_GMII_COL or ENET0_GMII_CRS or ENET0_EXT_INTIN or + ENET0_GMII_RX_CLK or ENET0_GMII_RX_DV or ENET0_GMII_RX_ER or + ENET0_GMII_TX_CLK or ENET0_MDIO_I or ENET0_GMII_RXD) +begin + if(ENET0_GMII_COL | ENET0_GMII_CRS | ENET0_EXT_INTIN | + ENET0_GMII_RX_CLK | ENET0_GMII_RX_DV | ENET0_GMII_RX_ER | + ENET0_GMII_TX_CLK | ENET0_MDIO_I ) + $display("[%0d] : %0s : ETHERNET Interface is not supported.",$time, DISP_ERR); +end + +assign ENET1_GMII_TX_EN = 0; +assign ENET1_GMII_TX_ER = 0; +assign ENET1_MDIO_MDC = 0; +assign ENET1_MDIO_O = 0;/// confirm +assign ENET1_MDIO_T = 0; +assign ENET1_PTP_DELAY_REQ_RX = 0; +assign ENET1_PTP_DELAY_REQ_TX = 0; +assign ENET1_PTP_PDELAY_REQ_RX = 0; +assign ENET1_PTP_PDELAY_REQ_TX = 0; +assign ENET1_PTP_PDELAY_RESP_RX = 0; +assign ENET1_PTP_PDELAY_RESP_TX = 0; +assign ENET1_PTP_SYNC_FRAME_RX = 0; +assign ENET1_PTP_SYNC_FRAME_TX = 0; +assign ENET1_SOF_RX = 0; +assign ENET1_SOF_TX = 0; +assign ENET1_GMII_TXD = 0; +always@(ENET1_GMII_COL or ENET1_GMII_CRS or ENET1_EXT_INTIN or + ENET1_GMII_RX_CLK or ENET1_GMII_RX_DV or ENET1_GMII_RX_ER or + ENET1_GMII_TX_CLK or ENET1_MDIO_I or ENET1_GMII_RXD) +begin + if(ENET1_GMII_COL | ENET1_GMII_CRS | ENET1_EXT_INTIN | + ENET1_GMII_RX_CLK | ENET1_GMII_RX_DV | ENET1_GMII_RX_ER | + ENET1_GMII_TX_CLK | ENET1_MDIO_I ) + $display("[%0d] : %0s : ETHERNET Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* GPIO */ +/* ------------------------------------------- */ + +assign GPIO_O = 0; +assign GPIO_T = 0; +always@(GPIO_I) +begin +if(GPIO_I !== 0) + $display("[%0d] : %0s : GPIO Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* I2C */ +/* ------------------------------------------- */ + +assign I2C0_SDA_O = 0; +assign I2C0_SDA_T = 0; +assign I2C0_SCL_O = 0; +assign I2C0_SCL_T = 0; +assign I2C1_SDA_O = 0; +assign I2C1_SDA_T = 0; +assign I2C1_SCL_O = 0; +assign I2C1_SCL_T = 0; +always@(I2C0_SDA_I or I2C0_SCL_I or I2C1_SDA_I or I2C1_SCL_I ) +begin + if(I2C0_SDA_I | I2C0_SCL_I | I2C1_SDA_I | I2C1_SCL_I) + $display("[%0d] : %0s : I2C Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* JTAG */ +/* ------------------------------------------- */ + +assign PJTAG_TD_T = 0; +assign PJTAG_TD_O = 0; +always@(PJTAG_TCK or PJTAG_TMS or PJTAG_TD_I) +begin + if(PJTAG_TCK | PJTAG_TMS | PJTAG_TD_I) + $display("[%0d] : %0s : JTAG Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* SDIO */ +/* ------------------------------------------- */ + +assign SDIO0_CLK = 0; +assign SDIO0_CMD_O = 0; +assign SDIO0_CMD_T = 0; +assign SDIO0_DATA_O = 0; +assign SDIO0_DATA_T = 0; +assign SDIO0_LED = 0; +assign SDIO0_BUSPOW = 0; +assign SDIO0_BUSVOLT = 0; +always@(SDIO0_CLK_FB or SDIO0_CMD_I or SDIO0_DATA_I or SDIO0_CDN or SDIO0_WP ) +begin + if(SDIO0_CLK_FB | SDIO0_CMD_I | SDIO0_CDN | SDIO0_WP ) + $display("[%0d] : %0s : SDIO Interface is not supported.",$time, DISP_ERR); +end + +assign SDIO1_CLK = 0; +assign SDIO1_CMD_O = 0; +assign SDIO1_CMD_T = 0; +assign SDIO1_DATA_O = 0; +assign SDIO1_DATA_T = 0; +assign SDIO1_LED = 0; +assign SDIO1_BUSPOW = 0; +assign SDIO1_BUSVOLT = 0; +always@(SDIO1_CLK_FB or SDIO1_CMD_I or SDIO1_DATA_I or SDIO1_CDN or SDIO1_WP ) +begin + if(SDIO1_CLK_FB | SDIO1_CMD_I | SDIO1_CDN | SDIO1_WP ) + $display("[%0d] : %0s : SDIO Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* SPI */ +/* ------------------------------------------- */ + +assign SPI0_SCLK_O = 0; +assign SPI0_SCLK_T = 0; +assign SPI0_MOSI_O = 0; +assign SPI0_MOSI_T = 0; +assign SPI0_MISO_O = 0; +assign SPI0_MISO_T = 0; +assign SPI0_SS_O = 0; /// confirm +assign SPI0_SS1_O = 0;/// confirm +assign SPI0_SS2_O = 0;/// confirm +assign SPI0_SS_T = 0; +always@(SPI0_SCLK_I or SPI0_MOSI_I or SPI0_MISO_I or SPI0_SS_I) +begin + if(SPI0_SCLK_I | SPI0_MOSI_I | SPI0_MISO_I | SPI0_SS_I) + $display("[%0d] : %0s : SPI Interface is not supported.",$time, DISP_ERR); +end + +assign SPI1_SCLK_O = 0; +assign SPI1_SCLK_T = 0; +assign SPI1_MOSI_O = 0; +assign SPI1_MOSI_T = 0; +assign SPI1_MISO_O = 0; +assign SPI1_MISO_T = 0; +assign SPI1_SS_O = 0; +assign SPI1_SS1_O = 0; +assign SPI1_SS2_O = 0; +assign SPI1_SS_T = 0; +always@(SPI1_SCLK_I or SPI1_MOSI_I or SPI1_MISO_I or SPI1_SS_I) +begin + if(SPI1_SCLK_I | SPI1_MOSI_I | SPI1_MISO_I | SPI1_SS_I) + $display("[%0d] : %0s : SPI Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* UART */ +/* ------------------------------------------- */ +/// confirm +assign UART0_DTRN = 0; +assign UART0_RTSN = 0; +assign UART0_TX = 0; +always@(UART0_CTSN or UART0_DCDN or UART0_DSRN or UART0_RIN or UART0_RX) +begin + if(UART0_CTSN | UART0_DCDN | UART0_DSRN | UART0_RIN | UART0_RX) + $display("[%0d] : %0s : UART Interface is not supported.",$time, DISP_ERR); +end + +assign UART1_DTRN = 0; +assign UART1_RTSN = 0; +assign UART1_TX = 0; +always@(UART1_CTSN or UART1_DCDN or UART1_DSRN or UART1_RIN or UART1_RX) +begin + if(UART1_CTSN | UART1_DCDN | UART1_DSRN | UART1_RIN | UART1_RX) + $display("[%0d] : %0s : UART Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* TTC */ +/* ------------------------------------------- */ + +assign TTC0_WAVE0_OUT = 0; +assign TTC0_WAVE1_OUT = 0; +assign TTC0_WAVE2_OUT = 0; +always@(TTC0_CLK0_IN or TTC0_CLK1_IN or TTC0_CLK2_IN) +begin + if(TTC0_CLK0_IN | TTC0_CLK1_IN | TTC0_CLK2_IN) + $display("[%0d] : %0s : TTC Interface is not supported.",$time, DISP_ERR); +end + +assign TTC1_WAVE0_OUT = 0; +assign TTC1_WAVE1_OUT = 0; +assign TTC1_WAVE2_OUT = 0; +always@(TTC1_CLK0_IN or TTC1_CLK1_IN or TTC1_CLK2_IN) +begin + if(TTC1_CLK0_IN | TTC1_CLK1_IN | TTC1_CLK2_IN) + $display("[%0d] : %0s : TTC Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* WDT */ +/* ------------------------------------------- */ + +assign WDT_RST_OUT = 0; +always@(WDT_CLK_IN) +begin + if(WDT_CLK_IN) + $display("[%0d] : %0s : WDT Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* TRACE */ +/* ------------------------------------------- */ + +assign TRACE_CTL = 0; +assign TRACE_DATA = 0; +always@(TRACE_CLK) +begin + if(TRACE_CLK) + $display("[%0d] : %0s : TRACE Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* USB */ +/* ------------------------------------------- */ +assign USB0_PORT_INDCTL = 0; +assign USB0_VBUS_PWRSELECT = 0; +always@(USB0_VBUS_PWRFAULT) +begin + if(USB0_VBUS_PWRFAULT) + $display("[%0d] : %0s : USB Interface is not supported.",$time, DISP_ERR); +end + +assign USB1_PORT_INDCTL = 0; +assign USB1_VBUS_PWRSELECT = 0; +always@(USB1_VBUS_PWRFAULT) +begin + if(USB1_VBUS_PWRFAULT) + $display("[%0d] : %0s : USB Interface is not supported.",$time, DISP_ERR); +end + +always@(SRAM_INTIN) +begin + if(SRAM_INTIN) + $display("[%0d] : %0s : SRAM_INTIN is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* DMA */ +/* ------------------------------------------- */ + +assign DMA0_DATYPE = 0; +assign DMA0_DAVALID = 0; +assign DMA0_DRREADY = 0; +assign DMA0_RSTN = 0; +always@(DMA0_ACLK or DMA0_DAREADY or DMA0_DRLAST or DMA0_DRVALID or DMA0_DRTYPE) +begin + if(DMA0_ACLK | DMA0_DAREADY | DMA0_DRLAST | DMA0_DRVALID | DMA0_DRTYPE) + $display("[%0d] : %0s : DMA Interface is not supported.",$time, DISP_ERR); +end + +assign DMA1_DATYPE = 0; +assign DMA1_DAVALID = 0; +assign DMA1_DRREADY = 0; +assign DMA1_RSTN = 0; +always@(DMA1_ACLK or DMA1_DAREADY or DMA1_DRLAST or DMA1_DRVALID or DMA1_DRTYPE) +begin + if(DMA1_ACLK | DMA1_DAREADY | DMA1_DRLAST | DMA1_DRVALID | DMA1_DRTYPE) + $display("[%0d] : %0s : DMA Interface is not supported.",$time, DISP_ERR); +end + +assign DMA2_DATYPE = 0; +assign DMA2_DAVALID = 0; +assign DMA2_DRREADY = 0; +assign DMA2_RSTN = 0; +always@(DMA2_ACLK or DMA2_DAREADY or DMA2_DRLAST or DMA2_DRVALID or DMA2_DRTYPE) +begin + if(DMA2_ACLK | DMA2_DAREADY | DMA2_DRLAST | DMA2_DRVALID | DMA2_DRTYPE) + $display("[%0d] : %0s : DMA Interface is not supported.",$time, DISP_ERR); +end + +assign DMA3_DATYPE = 0; +assign DMA3_DAVALID = 0; +assign DMA3_DRREADY = 0; +assign DMA3_RSTN = 0; +always@(DMA3_ACLK or DMA3_DAREADY or DMA3_DRLAST or DMA3_DRVALID or DMA3_DRTYPE) +begin + if(DMA3_ACLK | DMA3_DAREADY | DMA3_DRLAST | DMA3_DRVALID | DMA3_DRTYPE) + $display("[%0d] : %0s : DMA Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* FTM */ +/* ------------------------------------------- */ + +assign FTMT_F2P_TRIGACK = 0; +assign FTMT_P2F_TRIG = 0; +assign FTMT_P2F_DEBUG = 0; +always@(FTMD_TRACEIN_DATA or FTMD_TRACEIN_VALID or FTMD_TRACEIN_CLK or + FTMD_TRACEIN_ATID or FTMT_F2P_TRIG or FTMT_F2P_DEBUG or FTMT_P2F_TRIGACK) +begin + if(FTMD_TRACEIN_DATA | FTMD_TRACEIN_VALID | FTMD_TRACEIN_CLK | FTMD_TRACEIN_ATID | FTMT_F2P_TRIG | FTMT_F2P_DEBUG | FTMT_P2F_TRIGACK) + $display("[%0d] : %0s : FTM Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* EVENT */ +/* ------------------------------------------- */ + +assign EVENT_EVENTO = 0; +assign EVENT_STANDBYWFE = 0; +assign EVENT_STANDBYWFI = 0; +always@(EVENT_EVENTI) +begin + if(EVENT_EVENTI) + $display("[%0d] : %0s : EVENT Interface is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* MIO */ +/* ------------------------------------------- */ + +always@(MIO) +begin + if(MIO !== 0) + $display("[%0d] : %0s : MIO is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* FCLK_TRIG */ +/* ------------------------------------------- */ + +always@(FCLK_CLKTRIG3_N or FCLK_CLKTRIG2_N or FCLK_CLKTRIG1_N or FCLK_CLKTRIG0_N ) +begin + if(FCLK_CLKTRIG3_N | FCLK_CLKTRIG2_N | FCLK_CLKTRIG1_N | FCLK_CLKTRIG0_N ) + $display("[%0d] : %0s : FCLK_TRIG is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* MISC */ +/* ------------------------------------------- */ + +always@(FPGA_IDLE_N) +begin + if(FPGA_IDLE_N) + $display("[%0d] : %0s : FPGA_IDLE_N is not supported.",$time, DISP_ERR); +end + +always@(DDR_ARB) +begin + if(DDR_ARB !== 0) + $display("[%0d] : %0s : DDR_ARB is not supported.",$time, DISP_ERR); +end + +always@(Core0_nFIQ or Core0_nIRQ or Core1_nFIQ or Core1_nIRQ ) +begin + if(Core0_nFIQ | Core0_nIRQ | Core1_nFIQ | Core1_nIRQ) + $display("[%0d] : %0s : CORE FIQ,IRQ is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* DDR */ +/* ------------------------------------------- */ + +assign DDR_WEB = 0; +always@(DDR_Clk or DDR_CS_n) +begin +if(!DDR_CS_n) + $display("[%0d] : %0s : EXTERNAL DDR is not supported.",$time, DISP_ERR); +end + +/* ------------------------------------------- */ +/* IRQ_P2F */ +/* ------------------------------------------- */ + +assign IRQ_P2F_DMAC_ABORT = 0; +assign IRQ_P2F_DMAC0 = 0; +assign IRQ_P2F_DMAC1 = 0; +assign IRQ_P2F_DMAC2 = 0; +assign IRQ_P2F_DMAC3 = 0; +assign IRQ_P2F_DMAC4 = 0; +assign IRQ_P2F_DMAC5 = 0; +assign IRQ_P2F_DMAC6 = 0; +assign IRQ_P2F_DMAC7 = 0; +assign IRQ_P2F_SMC = 0; +assign IRQ_P2F_QSPI = 0; +assign IRQ_P2F_CTI = 0; +assign IRQ_P2F_GPIO = 0; +assign IRQ_P2F_USB0 = 0; +assign IRQ_P2F_ENET0 = 0; +assign IRQ_P2F_ENET_WAKE0 = 0; +assign IRQ_P2F_SDIO0 = 0; +assign IRQ_P2F_I2C0 = 0; +assign IRQ_P2F_SPI0 = 0; +assign IRQ_P2F_UART0 = 0; +assign IRQ_P2F_CAN0 = 0; +assign IRQ_P2F_USB1 = 0; +assign IRQ_P2F_ENET1 = 0; +assign IRQ_P2F_ENET_WAKE1 = 0; +assign IRQ_P2F_SDIO1 = 0; +assign IRQ_P2F_I2C1 = 0; +assign IRQ_P2F_SPI1 = 0; +assign IRQ_P2F_UART1 = 0; +assign IRQ_P2F_CAN1 = 0; diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio.xml new file mode 100644 index 0000000..565966e --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio.xml @@ -0,0 +1,10 @@ + + + xilinx.com + display_processing_system7 + fixedio + 1.0 + false + false + Zynq fixed IO interface consisting of ports with fixed locations + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio_rtl.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio_rtl.xml new file mode 100644 index 0000000..a390c88 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/fixedio_rtl.xml @@ -0,0 +1,106 @@ + + + xilinx.com + display_processing_system7 + fixedio_rtl + 1.0 + + + + MIO + Multiplexed IO + + + optional + 54 + inout + + + optional + 54 + inout + + + + + PS_SRSTB + Debug system reset + + + optional + 1 + inout + + + optional + 1 + inout + + + + + PS_CLK + System reference clock + + + optional + 1 + inout + + + optional + 1 + inout + + + + + PS_PORB + Power on reset + + + optional + 1 + inout + + + optional + 1 + inout + + + + + DDR_VRN + DCI voltage reference. Connect DDR_VRN to a resister to VCC_DDR + + + optional + 1 + inout + + + optional + 1 + inout + + + + + DDR_VRP + DCI voltage reference. Connect DDR_VRP to a resistor to GND + + + optional + 1 + inout + + + optional + 1 + inout + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_atc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_atc.v new file mode 100644 index 0000000..98caca1 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_atc.v @@ -0,0 +1,409 @@ +//----------------------------------------------------------------------------- +//-- (c) Copyright 2010 Xilinx, Inc. All rights reserved. +//-- +//-- This file contains confidential and proprietary information +//-- of Xilinx, Inc. and is protected under U.S. and +//-- international copyright and other intellectual property +//-- laws. +//-- +//-- DISCLAIMER +//-- This disclaimer is not a license and does not grant any +//-- rights to the materials distributed herewith. Except as +//-- otherwise provided in a valid license issued to you by +//-- Xilinx, and to the maximum extent permitted by applicable +//-- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +//-- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +//-- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +//-- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +//-- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +//-- (2) Xilinx shall not be liable (whether in contract or tort, +//-- including negligence, or under any other theory of +//-- liability) for any loss or damage of any kind or nature +//-- related to, arising under or in connection with these +//-- materials, including for any direct, or any indirect, +//-- special, incidental, or consequential loss or damage +//-- (including loss of data, profits, goodwill, or any type of +//-- loss or damage suffered as a result of any action brought +//-- by a third party) even if such damage or loss was +//-- reasonably foreseeable or Xilinx had been advised of the +//-- possibility of the same. +//-- +//-- CRITICAL APPLICATIONS +//-- Xilinx products are not designed or intended to be fail- +//-- safe, or for use in any application requiring fail-safe +//-- performance, such as life-support or safety devices or +//-- systems, Class III medical devices, nuclear facilities, +//-- applications related to the deployment of airbags, or any +//-- other applications that could lead to death, personal +//-- injury, or severe property or environmental damage +//-- (individually and collectively, "Critical +//-- Applications"). Customer assumes the sole risk and +//-- liability of any use of Xilinx products in Critical +//-- Applications, subject only to applicable laws and +//-- regulations governing limitations on product liability. +//-- +//-- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +//-- PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// +// Description: ACP Transaction Checker +// +// Check for optimized ACP transactions and flag if they are broken. +// +// +// +// Verilog-standard: Verilog 2001 +//-------------------------------------------------------------------------- +// +// Structure: +// atc +// aw_atc +// w_atc +// b_atc +// +//-------------------------------------------------------------------------- +`timescale 1ps/1ps +`default_nettype none + +module processing_system7_v5_5_atc # + ( + parameter C_FAMILY = "rtl", + // FPGA Family. Current version: virtex6, spartan6 or later. + parameter integer C_AXI_ID_WIDTH = 4, + // Width of all ID signals on SI and MI side of checker. + // Range: >= 1. + parameter integer C_AXI_ADDR_WIDTH = 32, + // Width of all ADDR signals on SI and MI side of checker. + // Range: 32. + parameter integer C_AXI_DATA_WIDTH = 64, + // Width of all DATA signals on SI and MI side of checker. + // Range: 64. + parameter integer C_AXI_AWUSER_WIDTH = 1, + // Width of AWUSER signals. + // Range: >= 1. + parameter integer C_AXI_ARUSER_WIDTH = 1, + // Width of ARUSER signals. + // Range: >= 1. + parameter integer C_AXI_WUSER_WIDTH = 1, + // Width of WUSER signals. + // Range: >= 1. + parameter integer C_AXI_RUSER_WIDTH = 1, + // Width of RUSER signals. + // Range: >= 1. + parameter integer C_AXI_BUSER_WIDTH = 1 + // Width of BUSER signals. + // Range: >= 1. + ) + ( + // Global Signals + input wire ACLK, + input wire ARESETN, + + // Slave Interface Write Address Ports + input wire [C_AXI_ID_WIDTH-1:0] S_AXI_AWID, + input wire [C_AXI_ADDR_WIDTH-1:0] S_AXI_AWADDR, + input wire [4-1:0] S_AXI_AWLEN, + input wire [3-1:0] S_AXI_AWSIZE, + input wire [2-1:0] S_AXI_AWBURST, + input wire [2-1:0] S_AXI_AWLOCK, + input wire [4-1:0] S_AXI_AWCACHE, + input wire [3-1:0] S_AXI_AWPROT, + input wire [C_AXI_AWUSER_WIDTH-1:0] S_AXI_AWUSER, + input wire S_AXI_AWVALID, + output wire S_AXI_AWREADY, + // Slave Interface Write Data Ports + input wire [C_AXI_ID_WIDTH-1:0] S_AXI_WID, + input wire [C_AXI_DATA_WIDTH-1:0] S_AXI_WDATA, + input wire [C_AXI_DATA_WIDTH/8-1:0] S_AXI_WSTRB, + input wire S_AXI_WLAST, + input wire [C_AXI_WUSER_WIDTH-1:0] S_AXI_WUSER, + input wire S_AXI_WVALID, + output wire S_AXI_WREADY, + // Slave Interface Write Response Ports + output wire [C_AXI_ID_WIDTH-1:0] S_AXI_BID, + output wire [2-1:0] S_AXI_BRESP, + output wire [C_AXI_BUSER_WIDTH-1:0] S_AXI_BUSER, + output wire S_AXI_BVALID, + input wire S_AXI_BREADY, + // Slave Interface Read Address Ports + input wire [C_AXI_ID_WIDTH-1:0] S_AXI_ARID, + input wire [C_AXI_ADDR_WIDTH-1:0] S_AXI_ARADDR, + input wire [4-1:0] S_AXI_ARLEN, + input wire [3-1:0] S_AXI_ARSIZE, + input wire [2-1:0] S_AXI_ARBURST, + input wire [2-1:0] S_AXI_ARLOCK, + input wire [4-1:0] S_AXI_ARCACHE, + input wire [3-1:0] S_AXI_ARPROT, + input wire [C_AXI_ARUSER_WIDTH-1:0] S_AXI_ARUSER, + input wire S_AXI_ARVALID, + output wire S_AXI_ARREADY, + // Slave Interface Read Data Ports + output wire [C_AXI_ID_WIDTH-1:0] S_AXI_RID, + output wire [C_AXI_DATA_WIDTH-1:0] S_AXI_RDATA, + output wire [2-1:0] S_AXI_RRESP, + output wire S_AXI_RLAST, + output wire [C_AXI_RUSER_WIDTH-1:0] S_AXI_RUSER, + output wire S_AXI_RVALID, + input wire S_AXI_RREADY, + + // Master Interface Write Address Port + output wire [C_AXI_ID_WIDTH-1:0] M_AXI_AWID, + output wire [C_AXI_ADDR_WIDTH-1:0] M_AXI_AWADDR, + output wire [4-1:0] M_AXI_AWLEN, + output wire [3-1:0] M_AXI_AWSIZE, + output wire [2-1:0] M_AXI_AWBURST, + output wire [2-1:0] M_AXI_AWLOCK, + output wire [4-1:0] M_AXI_AWCACHE, + output wire [3-1:0] M_AXI_AWPROT, + output wire [C_AXI_AWUSER_WIDTH-1:0] M_AXI_AWUSER, + output wire M_AXI_AWVALID, + input wire M_AXI_AWREADY, + // Master Interface Write Data Ports + output wire [C_AXI_ID_WIDTH-1:0] M_AXI_WID, + output wire [C_AXI_DATA_WIDTH-1:0] M_AXI_WDATA, + output wire [C_AXI_DATA_WIDTH/8-1:0] M_AXI_WSTRB, + output wire M_AXI_WLAST, + output wire [C_AXI_WUSER_WIDTH-1:0] M_AXI_WUSER, + output wire M_AXI_WVALID, + input wire M_AXI_WREADY, + // Master Interface Write Response Ports + input wire [C_AXI_ID_WIDTH-1:0] M_AXI_BID, + input wire [2-1:0] M_AXI_BRESP, + input wire [C_AXI_BUSER_WIDTH-1:0] M_AXI_BUSER, + input wire M_AXI_BVALID, + output wire M_AXI_BREADY, + // Master Interface Read Address Port + output wire [C_AXI_ID_WIDTH-1:0] M_AXI_ARID, + output wire [C_AXI_ADDR_WIDTH-1:0] M_AXI_ARADDR, + output wire [4-1:0] M_AXI_ARLEN, + output wire [3-1:0] M_AXI_ARSIZE, + output wire [2-1:0] M_AXI_ARBURST, + output wire [2-1:0] M_AXI_ARLOCK, + output wire [4-1:0] M_AXI_ARCACHE, + output wire [3-1:0] M_AXI_ARPROT, + output wire [C_AXI_ARUSER_WIDTH-1:0] M_AXI_ARUSER, + output wire M_AXI_ARVALID, + input wire M_AXI_ARREADY, + // Master Interface Read Data Ports + input wire [C_AXI_ID_WIDTH-1:0] M_AXI_RID, + input wire [C_AXI_DATA_WIDTH-1:0] M_AXI_RDATA, + input wire [2-1:0] M_AXI_RRESP, + input wire M_AXI_RLAST, + input wire [C_AXI_RUSER_WIDTH-1:0] M_AXI_RUSER, + input wire M_AXI_RVALID, + output wire M_AXI_RREADY, + + output wire ERROR_TRIGGER, + output wire [C_AXI_ID_WIDTH-1:0] ERROR_TRANSACTION_ID + ); + + + ///////////////////////////////////////////////////////////////////////////// + // Functions + ///////////////////////////////////////////////////////////////////////////// + + + ///////////////////////////////////////////////////////////////////////////// + // Local params + ///////////////////////////////////////////////////////////////////////////// + + localparam C_FIFO_DEPTH_LOG = 4; + + + ///////////////////////////////////////////////////////////////////////////// + // Internal signals + ///////////////////////////////////////////////////////////////////////////// + + // Internal reset. + reg ARESET; + + // AW->W command queue signals. + wire cmd_w_valid; + wire cmd_w_check; + wire [C_AXI_ID_WIDTH-1:0] cmd_w_id; + wire cmd_w_ready; + + // W->B command queue signals. + wire cmd_b_push; + wire cmd_b_error; + wire [C_AXI_ID_WIDTH-1:0] cmd_b_id; + wire cmd_b_full; + wire [C_FIFO_DEPTH_LOG-1:0] cmd_b_addr; + wire cmd_b_ready; + + + ///////////////////////////////////////////////////////////////////////////// + // Handle Internal Reset + ///////////////////////////////////////////////////////////////////////////// + always @ (posedge ACLK) begin + ARESET <= !ARESETN; + end + + + ///////////////////////////////////////////////////////////////////////////// + // Handle Write Channels (AW/W/B) + ///////////////////////////////////////////////////////////////////////////// + + // Write Address Channel. + processing_system7_v5_5_aw_atc # + ( + .C_FAMILY (C_FAMILY), + .C_AXI_ID_WIDTH (C_AXI_ID_WIDTH), + .C_AXI_ADDR_WIDTH (C_AXI_ADDR_WIDTH), + .C_AXI_AWUSER_WIDTH (C_AXI_AWUSER_WIDTH), + .C_FIFO_DEPTH_LOG (C_FIFO_DEPTH_LOG) + ) write_addr_inst + ( + // Global Signals + .ARESET (ARESET), + .ACLK (ACLK), + + // Command Interface (Out) + .cmd_w_valid (cmd_w_valid), + .cmd_w_check (cmd_w_check), + .cmd_w_id (cmd_w_id), + .cmd_w_ready (cmd_w_ready), + .cmd_b_addr (cmd_b_addr), + .cmd_b_ready (cmd_b_ready), + + // Slave Interface Write Address Ports + .S_AXI_AWID (S_AXI_AWID), + .S_AXI_AWADDR (S_AXI_AWADDR), + .S_AXI_AWLEN (S_AXI_AWLEN), + .S_AXI_AWSIZE (S_AXI_AWSIZE), + .S_AXI_AWBURST (S_AXI_AWBURST), + .S_AXI_AWLOCK (S_AXI_AWLOCK), + .S_AXI_AWCACHE (S_AXI_AWCACHE), + .S_AXI_AWPROT (S_AXI_AWPROT), + .S_AXI_AWUSER (S_AXI_AWUSER), + .S_AXI_AWVALID (S_AXI_AWVALID), + .S_AXI_AWREADY (S_AXI_AWREADY), + + // Master Interface Write Address Port + .M_AXI_AWID (M_AXI_AWID), + .M_AXI_AWADDR (M_AXI_AWADDR), + .M_AXI_AWLEN (M_AXI_AWLEN), + .M_AXI_AWSIZE (M_AXI_AWSIZE), + .M_AXI_AWBURST (M_AXI_AWBURST), + .M_AXI_AWLOCK (M_AXI_AWLOCK), + .M_AXI_AWCACHE (M_AXI_AWCACHE), + .M_AXI_AWPROT (M_AXI_AWPROT), + .M_AXI_AWUSER (M_AXI_AWUSER), + .M_AXI_AWVALID (M_AXI_AWVALID), + .M_AXI_AWREADY (M_AXI_AWREADY) + ); + + // Write Data channel. + processing_system7_v5_5_w_atc # + ( + .C_FAMILY (C_FAMILY), + .C_AXI_ID_WIDTH (C_AXI_ID_WIDTH), + .C_AXI_DATA_WIDTH (C_AXI_DATA_WIDTH), + .C_AXI_WUSER_WIDTH (C_AXI_WUSER_WIDTH) + ) write_data_inst + ( + // Global Signals + .ARESET (ARESET), + .ACLK (ACLK), + + // Command Interface (In) + .cmd_w_valid (cmd_w_valid), + .cmd_w_check (cmd_w_check), + .cmd_w_id (cmd_w_id), + .cmd_w_ready (cmd_w_ready), + + // Command Interface (Out) + .cmd_b_push (cmd_b_push), + .cmd_b_error (cmd_b_error), + .cmd_b_id (cmd_b_id), + .cmd_b_full (cmd_b_full), + + // Slave Interface Write Data Ports + .S_AXI_WID (S_AXI_WID), + .S_AXI_WDATA (S_AXI_WDATA), + .S_AXI_WSTRB (S_AXI_WSTRB), + .S_AXI_WLAST (S_AXI_WLAST), + .S_AXI_WUSER (S_AXI_WUSER), + .S_AXI_WVALID (S_AXI_WVALID), + .S_AXI_WREADY (S_AXI_WREADY), + + // Master Interface Write Data Ports + .M_AXI_WID (M_AXI_WID), + .M_AXI_WDATA (M_AXI_WDATA), + .M_AXI_WSTRB (M_AXI_WSTRB), + .M_AXI_WLAST (M_AXI_WLAST), + .M_AXI_WUSER (M_AXI_WUSER), + .M_AXI_WVALID (M_AXI_WVALID), + .M_AXI_WREADY (M_AXI_WREADY) + ); + + // Write Response channel. + processing_system7_v5_5_b_atc # + ( + .C_FAMILY (C_FAMILY), + .C_AXI_ID_WIDTH (C_AXI_ID_WIDTH), + .C_AXI_BUSER_WIDTH (C_AXI_BUSER_WIDTH), + .C_FIFO_DEPTH_LOG (C_FIFO_DEPTH_LOG) + ) write_response_inst + ( + // Global Signals + .ARESET (ARESET), + .ACLK (ACLK), + + // Command Interface (In) + .cmd_b_push (cmd_b_push), + .cmd_b_error (cmd_b_error), + .cmd_b_id (cmd_b_id), + .cmd_b_full (cmd_b_full), + .cmd_b_addr (cmd_b_addr), + .cmd_b_ready (cmd_b_ready), + + // Slave Interface Write Response Ports + .S_AXI_BID (S_AXI_BID), + .S_AXI_BRESP (S_AXI_BRESP), + .S_AXI_BUSER (S_AXI_BUSER), + .S_AXI_BVALID (S_AXI_BVALID), + .S_AXI_BREADY (S_AXI_BREADY), + + // Master Interface Write Response Ports + .M_AXI_BID (M_AXI_BID), + .M_AXI_BRESP (M_AXI_BRESP), + .M_AXI_BUSER (M_AXI_BUSER), + .M_AXI_BVALID (M_AXI_BVALID), + .M_AXI_BREADY (M_AXI_BREADY), + + // Trigger detection + .ERROR_TRIGGER (ERROR_TRIGGER), + .ERROR_TRANSACTION_ID (ERROR_TRANSACTION_ID) + ); + + + + ///////////////////////////////////////////////////////////////////////////// + // Handle Read Channels (AR/R) + ///////////////////////////////////////////////////////////////////////////// + // Read Address Port + assign M_AXI_ARID = S_AXI_ARID; + assign M_AXI_ARADDR = S_AXI_ARADDR; + assign M_AXI_ARLEN = S_AXI_ARLEN; + assign M_AXI_ARSIZE = S_AXI_ARSIZE; + assign M_AXI_ARBURST = S_AXI_ARBURST; + assign M_AXI_ARLOCK = S_AXI_ARLOCK; + assign M_AXI_ARCACHE = S_AXI_ARCACHE; + assign M_AXI_ARPROT = S_AXI_ARPROT; + assign M_AXI_ARUSER = S_AXI_ARUSER; + assign M_AXI_ARVALID = S_AXI_ARVALID; + assign S_AXI_ARREADY = M_AXI_ARREADY; + + // Read Data Port + assign S_AXI_RID = M_AXI_RID; + assign S_AXI_RDATA = M_AXI_RDATA; + assign S_AXI_RRESP = M_AXI_RRESP; + assign S_AXI_RLAST = M_AXI_RLAST; + assign S_AXI_RUSER = M_AXI_RUSER; + assign S_AXI_RVALID = M_AXI_RVALID; + assign M_AXI_RREADY = S_AXI_RREADY; + + +endmodule +`default_nettype wire diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_aw_atc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_aw_atc.v new file mode 100644 index 0000000..25bbc9d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_aw_atc.v @@ -0,0 +1,298 @@ +// -- (c) Copyright 2010 - 2011 Xilinx, Inc. All rights reserved. +// -- +// -- This file contains confidential and proprietary information +// -- of Xilinx, Inc. and is protected under U.S. and +// -- international copyright and other intellectual property +// -- laws. +// -- +// -- DISCLAIMER +// -- This disclaimer is not a license and does not grant any +// -- rights to the materials distributed herewith. Except as +// -- otherwise provided in a valid license issued to you by +// -- Xilinx, and to the maximum extent permitted by applicable +// -- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// -- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// -- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// -- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// -- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// -- (2) Xilinx shall not be liable (whether in contract or tort, +// -- including negligence, or under any other theory of +// -- liability) for any loss or damage of any kind or nature +// -- related to, arising under or in connection with these +// -- materials, including for any direct, or any indirect, +// -- special, incidental, or consequential loss or damage +// -- (including loss of data, profits, goodwill, or any type of +// -- loss or damage suffered as a result of any action brought +// -- by a third party) even if such damage or loss was +// -- reasonably foreseeable or Xilinx had been advised of the +// -- possibility of the same. +// -- +// -- CRITICAL APPLICATIONS +// -- Xilinx products are not designed or intended to be fail- +// -- safe, or for use in any application requiring fail-safe +// -- performance, such as life-support or safety devices or +// -- systems, Class III medical devices, nuclear facilities, +// -- applications related to the deployment of airbags, or any +// -- other applications that could lead to death, personal +// -- injury, or severe property or environmental damage +// -- (individually and collectively, "Critical +// -- Applications"). Customer assumes the sole risk and +// -- liability of any use of Xilinx products in Critical +// -- Applications, subject only to applicable laws and +// -- regulations governing limitations on product liability. +// -- +// -- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// -- PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// +// Description: Address Write Channel for ATC +// +// +// Verilog-standard: Verilog 2001 +//-------------------------------------------------------------------------- +// +// Structure: +// aw_atc +// +//-------------------------------------------------------------------------- +`timescale 1ps/1ps + + +module processing_system7_v5_5_aw_atc # + ( + parameter C_FAMILY = "rtl", + // FPGA Family. Current version: virtex6, spartan6 or later. + parameter integer C_AXI_ID_WIDTH = 4, + // Width of all ID signals on SI and MI side of checker. + // Range: >= 1. + parameter integer C_AXI_ADDR_WIDTH = 32, + // Width of all ADDR signals on SI and MI side of checker. + // Range: 32. + parameter integer C_AXI_AWUSER_WIDTH = 1, + // Width of AWUSER signals. + // Range: >= 1. + parameter integer C_FIFO_DEPTH_LOG = 4 + ) + ( + // Global Signals + input wire ARESET, + input wire ACLK, + + // Command Interface + output reg cmd_w_valid, + output wire cmd_w_check, + output wire [C_AXI_ID_WIDTH-1:0] cmd_w_id, + input wire cmd_w_ready, + input wire [C_FIFO_DEPTH_LOG-1:0] cmd_b_addr, + input wire cmd_b_ready, + + // Slave Interface Write Address Port + input wire [C_AXI_ID_WIDTH-1:0] S_AXI_AWID, + input wire [C_AXI_ADDR_WIDTH-1:0] S_AXI_AWADDR, + input wire [4-1:0] S_AXI_AWLEN, + input wire [3-1:0] S_AXI_AWSIZE, + input wire [2-1:0] S_AXI_AWBURST, + input wire [2-1:0] S_AXI_AWLOCK, + input wire [4-1:0] S_AXI_AWCACHE, + input wire [3-1:0] S_AXI_AWPROT, + input wire [C_AXI_AWUSER_WIDTH-1:0] S_AXI_AWUSER, + input wire S_AXI_AWVALID, + output wire S_AXI_AWREADY, + + // Master Interface Write Address Port + output wire [C_AXI_ID_WIDTH-1:0] M_AXI_AWID, + output wire [C_AXI_ADDR_WIDTH-1:0] M_AXI_AWADDR, + output wire [4-1:0] M_AXI_AWLEN, + output wire [3-1:0] M_AXI_AWSIZE, + output wire [2-1:0] M_AXI_AWBURST, + output wire [2-1:0] M_AXI_AWLOCK, + output wire [4-1:0] M_AXI_AWCACHE, + output wire [3-1:0] M_AXI_AWPROT, + output wire [C_AXI_AWUSER_WIDTH-1:0] M_AXI_AWUSER, + output wire M_AXI_AWVALID, + input wire M_AXI_AWREADY + ); + + + ///////////////////////////////////////////////////////////////////////////// + // Local params + ///////////////////////////////////////////////////////////////////////////// + + // Constants for burst types. + localparam [2-1:0] C_FIX_BURST = 2'b00; + localparam [2-1:0] C_INCR_BURST = 2'b01; + localparam [2-1:0] C_WRAP_BURST = 2'b10; + + // Constants for size. + localparam [3-1:0] C_OPTIMIZED_SIZE = 3'b011; + + // Constants for length. + localparam [4-1:0] C_OPTIMIZED_LEN = 4'b0011; + + // Constants for cacheline address. + localparam [4-1:0] C_NO_ADDR_OFFSET = 5'b0; + + // Command FIFO settings + localparam C_FIFO_WIDTH = C_AXI_ID_WIDTH + 1; + localparam C_FIFO_DEPTH = 2 ** C_FIFO_DEPTH_LOG; + + + ///////////////////////////////////////////////////////////////////////////// + // Variables for generating parameter controlled instances. + ///////////////////////////////////////////////////////////////////////////// + + integer index; + + + ///////////////////////////////////////////////////////////////////////////// + // Functions + ///////////////////////////////////////////////////////////////////////////// + + + ///////////////////////////////////////////////////////////////////////////// + // Internal signals + ///////////////////////////////////////////////////////////////////////////// + + // Transaction properties. + wire access_is_incr; + wire access_is_wrap; + wire access_is_coherent; + wire access_optimized_size; + wire incr_addr_boundary; + wire incr_is_optimized; + wire wrap_is_optimized; + wire access_is_optimized; + + // Command FIFO. + wire cmd_w_push; + reg cmd_full; + reg [C_FIFO_DEPTH_LOG-1:0] addr_ptr; + wire [C_FIFO_DEPTH_LOG-1:0] all_addr_ptr; + reg [C_FIFO_WIDTH-1:0] data_srl[C_FIFO_DEPTH-1:0]; + + + ///////////////////////////////////////////////////////////////////////////// + // Transaction Decode: + // + // Detect if transaction is of correct typ, size and length to qualify as + // an optimized transaction that has to be checked for errors. + // + ///////////////////////////////////////////////////////////////////////////// + + // Transaction burst type. + assign access_is_incr = ( S_AXI_AWBURST == C_INCR_BURST ); + assign access_is_wrap = ( S_AXI_AWBURST == C_WRAP_BURST ); + + // Transaction has to be Coherent. + assign access_is_coherent = ( S_AXI_AWUSER[0] == 1'b1 ) & + ( S_AXI_AWCACHE[1] == 1'b1 ); + + // Transaction cacheline boundary address. + assign incr_addr_boundary = ( S_AXI_AWADDR[4:0] == C_NO_ADDR_OFFSET ); + + // Transaction length & size. + assign access_optimized_size = ( S_AXI_AWSIZE == C_OPTIMIZED_SIZE ) & + ( S_AXI_AWLEN == C_OPTIMIZED_LEN ); + + // Transaction is optimized. + assign incr_is_optimized = access_is_incr & access_is_coherent & access_optimized_size & incr_addr_boundary; + assign wrap_is_optimized = access_is_wrap & access_is_coherent & access_optimized_size; + assign access_is_optimized = ( incr_is_optimized | wrap_is_optimized ); + + + ///////////////////////////////////////////////////////////////////////////// + // Command FIFO: + // + // Since supported write interleaving is only 1, it is safe to use only a + // simple SRL based FIFO as a command queue. + // + ///////////////////////////////////////////////////////////////////////////// + + // Determine when transaction infromation is pushed to the FIFO. + assign cmd_w_push = S_AXI_AWVALID & M_AXI_AWREADY & ~cmd_full; + + // SRL FIFO Pointer. + always @ (posedge ACLK) begin + if (ARESET) begin + addr_ptr <= {C_FIFO_DEPTH_LOG{1'b1}}; + end else begin + if ( cmd_w_push & ~cmd_w_ready ) begin + addr_ptr <= addr_ptr + 1; + end else if ( ~cmd_w_push & cmd_w_ready ) begin + addr_ptr <= addr_ptr - 1; + end + end + end + + // Total number of buffered commands. + assign all_addr_ptr = addr_ptr + cmd_b_addr + 2; + + // FIFO Flags. + always @ (posedge ACLK) begin + if (ARESET) begin + cmd_full <= 1'b0; + cmd_w_valid <= 1'b0; + end else begin + if ( cmd_w_push & ~cmd_w_ready ) begin + cmd_w_valid <= 1'b1; + end else if ( ~cmd_w_push & cmd_w_ready ) begin + cmd_w_valid <= ( addr_ptr != 0 ); + end + if ( cmd_w_push & ~cmd_b_ready ) begin + // Going to full. + cmd_full <= ( all_addr_ptr == C_FIFO_DEPTH-3 ); + end else if ( ~cmd_w_push & cmd_b_ready ) begin + // Pop in middle of queue doesn't affect full status. + cmd_full <= ( all_addr_ptr == C_FIFO_DEPTH-2 ); + end + end + end + + // Infere SRL for storage. + always @ (posedge ACLK) begin + if ( cmd_w_push ) begin + for (index = 0; index < C_FIFO_DEPTH-1 ; index = index + 1) begin + data_srl[index+1] <= data_srl[index]; + end + data_srl[0] <= {access_is_optimized, S_AXI_AWID}; + end + end + + // Get current transaction info. + assign {cmd_w_check, cmd_w_id} = data_srl[addr_ptr]; + + + ///////////////////////////////////////////////////////////////////////////// + // Transaction Throttling: + // + // Stall commands if FIFO is full. + // + ///////////////////////////////////////////////////////////////////////////// + + // Propagate masked valid. + assign M_AXI_AWVALID = S_AXI_AWVALID & ~cmd_full; + + // Return ready with push back. + assign S_AXI_AWREADY = M_AXI_AWREADY & ~cmd_full; + + + ///////////////////////////////////////////////////////////////////////////// + // Address Write propagation: + // + // All information is simply forwarded on from the SI- to MI-Side untouched. + // + ///////////////////////////////////////////////////////////////////////////// + + // 1:1 mapping. + assign M_AXI_AWID = S_AXI_AWID; + assign M_AXI_AWADDR = S_AXI_AWADDR; + assign M_AXI_AWLEN = S_AXI_AWLEN; + assign M_AXI_AWSIZE = S_AXI_AWSIZE; + assign M_AXI_AWBURST = S_AXI_AWBURST; + assign M_AXI_AWLOCK = S_AXI_AWLOCK; + assign M_AXI_AWCACHE = S_AXI_AWCACHE; + assign M_AXI_AWPROT = S_AXI_AWPROT; + assign M_AXI_AWUSER = S_AXI_AWUSER; + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_b_atc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_b_atc.v new file mode 100644 index 0000000..36f280f --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_b_atc.v @@ -0,0 +1,413 @@ +// -- (c) Copyright 2010 - 2011 Xilinx, Inc. All rights reserved. +// -- +// -- This file contains confidential and proprietary information +// -- of Xilinx, Inc. and is protected under U.S. and +// -- international copyright and other intellectual property +// -- laws. +// -- +// -- DISCLAIMER +// -- This disclaimer is not a license and does not grant any +// -- rights to the materials distributed herewith. Except as +// -- otherwise provided in a valid license issued to you by +// -- Xilinx, and to the maximum extent permitted by applicable +// -- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// -- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// -- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// -- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// -- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// -- (2) Xilinx shall not be liable (whether in contract or tort, +// -- including negligence, or under any other theory of +// -- liability) for any loss or damage of any kind or nature +// -- related to, arising under or in connection with these +// -- materials, including for any direct, or any indirect, +// -- special, incidental, or consequential loss or damage +// -- (including loss of data, profits, goodwill, or any type of +// -- loss or damage suffered as a result of any action brought +// -- by a third party) even if such damage or loss was +// -- reasonably foreseeable or Xilinx had been advised of the +// -- possibility of the same. +// -- +// -- CRITICAL APPLICATIONS +// -- Xilinx products are not designed or intended to be fail- +// -- safe, or for use in any application requiring fail-safe +// -- performance, such as life-support or safety devices or +// -- systems, Class III medical devices, nuclear facilities, +// -- applications related to the deployment of airbags, or any +// -- other applications that could lead to death, personal +// -- injury, or severe property or environmental damage +// -- (individually and collectively, "Critical +// -- Applications"). Customer assumes the sole risk and +// -- liability of any use of Xilinx products in Critical +// -- Applications, subject only to applicable laws and +// -- regulations governing limitations on product liability. +// -- +// -- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// -- PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// +// Description: Write Response Channel for ATC +// +// +// Verilog-standard: Verilog 2001 +//-------------------------------------------------------------------------- +// +// Structure: +// b_atc +// +//-------------------------------------------------------------------------- +`timescale 1ps/1ps + + +module processing_system7_v5_5_b_atc # + ( + parameter C_FAMILY = "rtl", + // FPGA Family. Current version: virtex6, spartan6 or later. + parameter integer C_AXI_ID_WIDTH = 4, + // Width of all ID signals on SI and MI side of checker. + // Range: >= 1. + parameter integer C_AXI_BUSER_WIDTH = 1, + // Width of AWUSER signals. + // Range: >= 1. + parameter integer C_FIFO_DEPTH_LOG = 4 + ) + ( + // Global Signals + input wire ARESET, + input wire ACLK, + + // Command Interface + input wire cmd_b_push, + input wire cmd_b_error, + input wire [C_AXI_ID_WIDTH-1:0] cmd_b_id, + output wire cmd_b_ready, + output wire [C_FIFO_DEPTH_LOG-1:0] cmd_b_addr, + output reg cmd_b_full, + + // Slave Interface Write Response Ports + output wire [C_AXI_ID_WIDTH-1:0] S_AXI_BID, + output reg [2-1:0] S_AXI_BRESP, + output wire [C_AXI_BUSER_WIDTH-1:0] S_AXI_BUSER, + output wire S_AXI_BVALID, + input wire S_AXI_BREADY, + + // Master Interface Write Response Ports + input wire [C_AXI_ID_WIDTH-1:0] M_AXI_BID, + input wire [2-1:0] M_AXI_BRESP, + input wire [C_AXI_BUSER_WIDTH-1:0] M_AXI_BUSER, + input wire M_AXI_BVALID, + output wire M_AXI_BREADY, + + // Trigger detection + output reg ERROR_TRIGGER, + output reg [C_AXI_ID_WIDTH-1:0] ERROR_TRANSACTION_ID + ); + + + ///////////////////////////////////////////////////////////////////////////// + // Local params + ///////////////////////////////////////////////////////////////////////////// + + // Constants for packing levels. + localparam [2-1:0] C_RESP_OKAY = 2'b00; + localparam [2-1:0] C_RESP_EXOKAY = 2'b01; + localparam [2-1:0] C_RESP_SLVERROR = 2'b10; + localparam [2-1:0] C_RESP_DECERR = 2'b11; + + // Command FIFO settings + localparam C_FIFO_WIDTH = C_AXI_ID_WIDTH + 1; + localparam C_FIFO_DEPTH = 2 ** C_FIFO_DEPTH_LOG; + + + ///////////////////////////////////////////////////////////////////////////// + // Variables for generating parameter controlled instances. + ///////////////////////////////////////////////////////////////////////////// + + integer index; + + + ///////////////////////////////////////////////////////////////////////////// + // Functions + ///////////////////////////////////////////////////////////////////////////// + + + ///////////////////////////////////////////////////////////////////////////// + // Internal signals + ///////////////////////////////////////////////////////////////////////////// + + // Command Queue. + reg [C_FIFO_DEPTH_LOG-1:0] addr_ptr; + reg [C_FIFO_WIDTH-1:0] data_srl[C_FIFO_DEPTH-1:0]; + reg cmd_b_valid; + wire cmd_b_ready_i; + wire inject_error; + wire [C_AXI_ID_WIDTH-1:0] current_id; + + // Search command. + wire found_match; + wire use_match; + wire matching_id; + + // Manage valid command. + wire write_valid_cmd; + reg [C_FIFO_DEPTH-2:0] valid_cmd; + reg [C_FIFO_DEPTH-2:0] updated_valid_cmd; + reg [C_FIFO_DEPTH-2:0] next_valid_cmd; + reg [C_FIFO_DEPTH_LOG-1:0] search_addr_ptr; + reg [C_FIFO_DEPTH_LOG-1:0] collapsed_addr_ptr; + + // Pipelined data + reg [C_AXI_ID_WIDTH-1:0] M_AXI_BID_I; + reg [2-1:0] M_AXI_BRESP_I; + reg [C_AXI_BUSER_WIDTH-1:0] M_AXI_BUSER_I; + reg M_AXI_BVALID_I; + wire M_AXI_BREADY_I; + + + ///////////////////////////////////////////////////////////////////////////// + // Command Queue: + // + // Keep track of depth of Queue to generate full flag. + // + // Also generate valid to mark pressence of commands in Queue. + // + // Maintain Queue and extract data from currently searched entry. + // + ///////////////////////////////////////////////////////////////////////////// + + // SRL FIFO Pointer. + always @ (posedge ACLK) begin + if (ARESET) begin + addr_ptr <= {C_FIFO_DEPTH_LOG{1'b1}}; + end else begin + if ( cmd_b_push & ~cmd_b_ready_i ) begin + // Pushing data increase length/addr. + addr_ptr <= addr_ptr + 1; + end else if ( cmd_b_ready_i ) begin + // Collapse addr when data is popped. + addr_ptr <= collapsed_addr_ptr; + end + end + end + + // FIFO Flags. + always @ (posedge ACLK) begin + if (ARESET) begin + cmd_b_full <= 1'b0; + cmd_b_valid <= 1'b0; + end else begin + if ( cmd_b_push & ~cmd_b_ready_i ) begin + cmd_b_full <= ( addr_ptr == C_FIFO_DEPTH-3 ); + cmd_b_valid <= 1'b1; + end else if ( ~cmd_b_push & cmd_b_ready_i ) begin + cmd_b_full <= 1'b0; + cmd_b_valid <= ( collapsed_addr_ptr != C_FIFO_DEPTH-1 ); + end + end + end + + // Infere SRL for storage. + always @ (posedge ACLK) begin + if ( cmd_b_push ) begin + for (index = 0; index < C_FIFO_DEPTH-1 ; index = index + 1) begin + data_srl[index+1] <= data_srl[index]; + end + data_srl[0] <= {cmd_b_error, cmd_b_id}; + end + end + + // Get current transaction info. + assign {inject_error, current_id} = data_srl[search_addr_ptr]; + + // Assign outputs. + assign cmd_b_addr = collapsed_addr_ptr; + + + ///////////////////////////////////////////////////////////////////////////// + // Search Command Queue: + // + // Search for matching valid command in queue. + // + // A command is found when an valid entry with correct ID is found. The queue + // is search from the oldest entry, i.e. from a high value. + // When new commands are pushed the search address has to be updated to always + // start the search from the oldest available. + // + ///////////////////////////////////////////////////////////////////////////// + + // Handle search addr. + always @ (posedge ACLK) begin + if (ARESET) begin + search_addr_ptr <= {C_FIFO_DEPTH_LOG{1'b1}}; + end else begin + if ( cmd_b_ready_i ) begin + // Collapse addr when data is popped. + search_addr_ptr <= collapsed_addr_ptr; + + end else if ( M_AXI_BVALID_I & cmd_b_valid & ~found_match & ~cmd_b_push ) begin + // Skip non valid command. + search_addr_ptr <= search_addr_ptr - 1; + + end else if ( cmd_b_push ) begin + search_addr_ptr <= search_addr_ptr + 1; + + end + end + end + + // Check if searched command is valid and match ID (for existing response on MI side). + assign matching_id = ( M_AXI_BID_I == current_id ); + assign found_match = valid_cmd[search_addr_ptr] & matching_id & M_AXI_BVALID_I; + assign use_match = found_match & S_AXI_BREADY; + + + ///////////////////////////////////////////////////////////////////////////// + // Track Used Commands: + // + // Actions that affect Valid Command: + // * When a new command is pushed + // => Shift valid vector one step + // * When a command is used + // => Clear corresponding valid bit + // + ///////////////////////////////////////////////////////////////////////////// + + // Valid command status is updated when a command is used or a new one is pushed. + assign write_valid_cmd = cmd_b_push | cmd_b_ready_i; + + // Update the used command valid bit. + always @ * + begin + updated_valid_cmd = valid_cmd; + updated_valid_cmd[search_addr_ptr] = ~use_match; + end + + // Shift valid vector when command is pushed. + always @ * + begin + if ( cmd_b_push ) begin + next_valid_cmd = {updated_valid_cmd[C_FIFO_DEPTH-3:0], 1'b1}; + end else begin + next_valid_cmd = updated_valid_cmd; + end + end + + // Valid signals for next cycle. + always @ (posedge ACLK) begin + if (ARESET) begin + valid_cmd <= {C_FIFO_WIDTH{1'b0}}; + end else if ( write_valid_cmd ) begin + valid_cmd <= next_valid_cmd; + end + end + + // Detect oldest available command in Queue. + always @ * + begin + // Default to empty. + collapsed_addr_ptr = {C_FIFO_DEPTH_LOG{1'b1}}; + + for (index = 0; index < C_FIFO_DEPTH-2 ; index = index + 1) begin + if ( next_valid_cmd[index] ) begin + collapsed_addr_ptr = index; + end + end + end + + + ///////////////////////////////////////////////////////////////////////////// + // Pipe incoming data: + // + // The B channel is piped to improve timing and avoid impact in search + // mechanism due to late arriving signals. + // + ///////////////////////////////////////////////////////////////////////////// + + // Clock data. + always @ (posedge ACLK) begin + if (ARESET) begin + M_AXI_BID_I <= {C_AXI_ID_WIDTH{1'b0}}; + M_AXI_BRESP_I <= 2'b00; + M_AXI_BUSER_I <= {C_AXI_BUSER_WIDTH{1'b0}}; + M_AXI_BVALID_I <= 1'b0; + end else begin + if ( M_AXI_BREADY_I | ~M_AXI_BVALID_I ) begin + M_AXI_BVALID_I <= 1'b0; + end + if (M_AXI_BVALID & ( M_AXI_BREADY_I | ~M_AXI_BVALID_I) ) begin + M_AXI_BID_I <= M_AXI_BID; + M_AXI_BRESP_I <= M_AXI_BRESP; + M_AXI_BUSER_I <= M_AXI_BUSER; + M_AXI_BVALID_I <= 1'b1; + end + end + end + + // Generate ready to get new transaction. + assign M_AXI_BREADY = M_AXI_BREADY_I | ~M_AXI_BVALID_I; + + + ///////////////////////////////////////////////////////////////////////////// + // Inject Error: + // + // BRESP is modified according to command information. + // + ///////////////////////////////////////////////////////////////////////////// + + // Inject error in response. + always @ * + begin + if ( inject_error ) begin + S_AXI_BRESP = C_RESP_SLVERROR; + end else begin + S_AXI_BRESP = M_AXI_BRESP_I; + end + end + + // Handle interrupt generation. + always @ (posedge ACLK) begin + if (ARESET) begin + ERROR_TRIGGER <= 1'b0; + ERROR_TRANSACTION_ID <= {C_AXI_ID_WIDTH{1'b0}}; + end else begin + if ( inject_error & cmd_b_ready_i ) begin + ERROR_TRIGGER <= 1'b1; + ERROR_TRANSACTION_ID <= M_AXI_BID_I; + end else begin + ERROR_TRIGGER <= 1'b0; + end + end + end + + + ///////////////////////////////////////////////////////////////////////////// + // Transaction Throttling: + // + // Response is passed forward when a matching entry has been found in queue. + // Both ready and valid are set when the command is completed. + // + ///////////////////////////////////////////////////////////////////////////// + + // Propagate masked valid. + assign S_AXI_BVALID = M_AXI_BVALID_I & cmd_b_valid & found_match; + + // Return ready with push back. + assign M_AXI_BREADY_I = cmd_b_valid & use_match; + + // Command has been handled. + assign cmd_b_ready_i = M_AXI_BVALID_I & cmd_b_valid & use_match; + assign cmd_b_ready = cmd_b_ready_i; + + + ///////////////////////////////////////////////////////////////////////////// + // Write Response Propagation: + // + // All information is simply forwarded on from MI- to SI-Side untouched. + // + ///////////////////////////////////////////////////////////////////////////// + + // 1:1 mapping. + assign S_AXI_BID = M_AXI_BID_I; + assign S_AXI_BUSER = M_AXI_BUSER_I; + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_trace_buffer.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_trace_buffer.v new file mode 100644 index 0000000..0c776b3 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_trace_buffer.v @@ -0,0 +1,310 @@ +// -- (c) Copyright 2009 - 2011 Xilinx, Inc. All rights reserved. +// -- +// -- This file contains confidential and proprietary information +// -- of Xilinx, Inc. and is protected under U.S. and +// -- international copyright and other intellectual property +// -- laws. +// -- +// -- DISCLAIMER +// -- This disclaimer is not a license and does not grant any +// -- rights to the materials distributed herewith. Except as +// -- otherwise provided in a valid license issued to you by +// -- Xilinx, and to the maximum extent permitted by applicable +// -- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// -- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// -- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// -- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// -- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// -- (2) Xilinx shall not be liable (whether in contract or tort, +// -- including negligence, or under any other theory of +// -- liability) for any loss or damage of any kind or nature +// -- related to, arising under or in connection with these +// -- materials, including for any direct, or any indirect, +// -- special, incidental, or consequential loss or damage +// -- (including loss of data, profits, goodwill, or any type of +// -- loss or damage suffered as a result of any action brought +// -- by a third party) even if such damage or loss was +// -- reasonably foreseeable or Xilinx had been advised of the +// -- possibility of the same. +// -- +// -- CRITICAL APPLICATIONS +// -- Xilinx products are not designed or intended to be fail- +// -- safe, or for use in any application requiring fail-safe +// -- performance, such as life-support or safety devices or +// -- systems, Class III medical devices, nuclear facilities, +// -- applications related to the deployment of airbags, or any +// -- other applications that could lead to death, personal +// -- injury, or severe property or environmental damage +// -- (individually and collectively, "Critical +// -- Applications"). Customer assumes the sole risk and +// -- liability of any use of Xilinx products in Critical +// -- Applications, subject only to applicable laws and +// -- regulations governing limitations on product liability. +// -- +// -- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// -- PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// Filename: trace_buffer.v +// Description: Trace port buffer +//----------------------------------------------------------------------------- +// Structure: This section shows the hierarchical structure of +// pss_wrapper. +// +// --processing_system7 +// | +// --trace_buffer +//----------------------------------------------------------------------------- + + +module processing_system7_v5_5_trace_buffer # + ( + parameter integer FIFO_SIZE = 128, + parameter integer USE_TRACE_DATA_EDGE_DETECTOR = 0, + parameter integer C_DELAY_CLKS = 12 + ) + ( + input wire TRACE_CLK, + input wire RST, + input wire TRACE_VALID_IN, + input wire [3:0] TRACE_ATID_IN, + input wire [31:0] TRACE_DATA_IN, + output wire TRACE_VALID_OUT, + output wire [3:0] TRACE_ATID_OUT, + output wire [31:0] TRACE_DATA_OUT + ); + +//------------------------------------------------------------ +// Architecture section +//------------------------------------------------------------ + +// function called clogb2 that returns an integer which has the +// value of the ceiling of the log base 2. + +function integer clogb2 (input integer bit_depth); + integer i; + integer temp_log; + begin + temp_log = 0; + for(i=bit_depth; i > 0; i = i>>1) + clogb2 = temp_log; + temp_log=temp_log+1; + end +endfunction + +localparam DEPTH = clogb2(FIFO_SIZE-1); + +wire [31:0] reset_zeros; +reg [31:0] trace_pedge; // write enable for FIFO +reg [31:0] ti; +reg [31:0] tom; + +reg [3:0] atid; + +reg [31:0] trace_fifo [FIFO_SIZE-1:0];//Memory + +reg [4:0] dly_ctr; +reg [DEPTH-1:0] fifo_wp; +reg [DEPTH-1:0] fifo_rp; + +reg fifo_re; +wire fifo_empty; +wire fifo_full; +reg fifo_full_reg; + +assign reset_zeros = 32'h0; + + +// Pipeline Stage for Traceport ATID ports + always @(posedge TRACE_CLK) begin + // process pedge_ti + // rising clock edge + if((RST == 1'b1)) begin + atid <= reset_zeros; + end + else begin + atid <= TRACE_ATID_IN; + end + end + + assign TRACE_ATID_OUT = atid; + + ///////////////////////////////////////////// + // Generate FIFO data based on TRACE_VALID_IN + ///////////////////////////////////////////// + generate + if (USE_TRACE_DATA_EDGE_DETECTOR == 0) begin : gen_no_data_edge_detector + ///////////////////////////////////////////// + + // memory update process + // Update memory when positive edge detected and FIFO not full + always @(posedge TRACE_CLK) begin + if (TRACE_VALID_IN == 1'b1 && fifo_full_reg != 1'b1) begin + trace_fifo[fifo_wp] <= TRACE_DATA_IN; + end + end + + // fifo write pointer + always @(posedge TRACE_CLK) begin + // process + if(RST == 1'b1) begin + fifo_wp <= {DEPTH{1'b0}}; + end + else if(TRACE_VALID_IN ) begin + if(fifo_wp == (FIFO_SIZE - 1)) begin + if (fifo_empty) begin + fifo_wp <= {DEPTH{1'b0}}; + end + end + else begin + fifo_wp <= fifo_wp + 1; + end + end + end + + + ///////////////////////////////////////////// + // Generate FIFO data based on data edge + ///////////////////////////////////////////// + end else begin : gen_data_edge_detector + ///////////////////////////////////////////// + + + // purpose: check for pos edge on any trace input + always @(posedge TRACE_CLK) begin + // process pedge_ti + // rising clock edge + if((RST == 1'b1)) begin + ti <= reset_zeros; + trace_pedge <= reset_zeros; + end + else begin + ti <= TRACE_DATA_IN; + trace_pedge <= (~ti & TRACE_DATA_IN); + //trace_pedge <= ((~ti ^ TRACE_DATA_IN)) & ~ti; + // posedge only + end + end + + // memory update process + // Update memory when positive edge detected and FIFO not full + always @(posedge TRACE_CLK) begin + if(|(trace_pedge) == 1'b1 && fifo_full_reg != 1'b1) begin + trace_fifo[fifo_wp] <= trace_pedge; + end + end + + // fifo write pointer + always @(posedge TRACE_CLK) begin + // process + if(RST == 1'b1) begin + fifo_wp <= {DEPTH{1'b0}}; + end + else if(|(trace_pedge) == 1'b1) begin + if(fifo_wp == (FIFO_SIZE - 1)) begin + if (fifo_empty) begin + fifo_wp <= {DEPTH{1'b0}}; + end + end + else begin + fifo_wp <= fifo_wp + 1; + end + end + end + + + end + endgenerate + + + always @(posedge TRACE_CLK) begin + tom <= trace_fifo[fifo_rp] ; + end + + +// // fifo write pointer +// always @(posedge TRACE_CLK) begin +// // process +// if(RST == 1'b1) begin +// fifo_wp <= {DEPTH{1'b0}}; +// end +// else if(|(trace_pedge) == 1'b1) begin +// if(fifo_wp == (FIFO_SIZE - 1)) begin +// fifo_wp <= {DEPTH{1'b0}}; +// end +// else begin +// fifo_wp <= fifo_wp + 1; +// end +// end +// end + + + // fifo read pointer update + always @(posedge TRACE_CLK) begin + if(RST == 1'b1) begin + fifo_rp <= {DEPTH{1'b0}}; + fifo_re <= 1'b0; + end + else if(fifo_empty != 1'b1 && dly_ctr == 5'b00000 && fifo_re == 1'b0) begin + fifo_re <= 1'b1; + if(fifo_rp == (FIFO_SIZE - 1)) begin + fifo_rp <= {DEPTH{1'b0}}; + end + else begin + fifo_rp <= fifo_rp + 1; + end + end + else begin + fifo_re <= 1'b0; + end + end + + // delay counter update + always @(posedge TRACE_CLK) begin + if(RST == 1'b1) begin + dly_ctr <= 5'h0; + end + else if (fifo_re == 1'b1) begin + dly_ctr <= C_DELAY_CLKS-1; + end + else if(dly_ctr != 5'h0) begin + dly_ctr <= dly_ctr - 1; + end + end + + // fifo empty update + assign fifo_empty = (fifo_wp == fifo_rp) ? 1'b1 : 1'b0; + + // fifo full update + assign fifo_full = (fifo_wp == FIFO_SIZE-1)? 1'b1 : 1'b0; + + always @(posedge TRACE_CLK) begin + if(RST == 1'b1) begin + fifo_full_reg <= 1'b0; + end + else if (fifo_empty) begin + fifo_full_reg <= 1'b0; + end else begin + fifo_full_reg <= fifo_full; + end + end + +// always @(posedge TRACE_CLK) begin +// if(RST == 1'b1) begin +// fifo_full_reg <= 1'b0; +// end +// else if ((fifo_wp == FIFO_SIZE-1) && (|(trace_pedge) == 1'b1)) begin +// fifo_full_reg <= 1'b1; +// end +// else begin +// fifo_full_reg <= 1'b0; +// end +// end +// + assign TRACE_DATA_OUT = tom; + + assign TRACE_VALID_OUT = fifo_re; + + + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_w_atc.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_w_atc.v new file mode 100644 index 0000000..8b19a70 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hdl/verilog/processing_system7_v5_5_w_atc.v @@ -0,0 +1,244 @@ +// -- (c) Copyright 2010 - 2011 Xilinx, Inc. All rights reserved. +// -- +// -- This file contains confidential and proprietary information +// -- of Xilinx, Inc. and is protected under U.S. and +// -- international copyright and other intellectual property +// -- laws. +// -- +// -- DISCLAIMER +// -- This disclaimer is not a license and does not grant any +// -- rights to the materials distributed herewith. Except as +// -- otherwise provided in a valid license issued to you by +// -- Xilinx, and to the maximum extent permitted by applicable +// -- law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND +// -- WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES +// -- AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING +// -- BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON- +// -- INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and +// -- (2) Xilinx shall not be liable (whether in contract or tort, +// -- including negligence, or under any other theory of +// -- liability) for any loss or damage of any kind or nature +// -- related to, arising under or in connection with these +// -- materials, including for any direct, or any indirect, +// -- special, incidental, or consequential loss or damage +// -- (including loss of data, profits, goodwill, or any type of +// -- loss or damage suffered as a result of any action brought +// -- by a third party) even if such damage or loss was +// -- reasonably foreseeable or Xilinx had been advised of the +// -- possibility of the same. +// -- +// -- CRITICAL APPLICATIONS +// -- Xilinx products are not designed or intended to be fail- +// -- safe, or for use in any application requiring fail-safe +// -- performance, such as life-support or safety devices or +// -- systems, Class III medical devices, nuclear facilities, +// -- applications related to the deployment of airbags, or any +// -- other applications that could lead to death, personal +// -- injury, or severe property or environmental damage +// -- (individually and collectively, "Critical +// -- Applications"). Customer assumes the sole risk and +// -- liability of any use of Xilinx products in Critical +// -- Applications, subject only to applicable laws and +// -- regulations governing limitations on product liability. +// -- +// -- THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS +// -- PART OF THIS FILE AT ALL TIMES. +//----------------------------------------------------------------------------- +// +// Description: Write Channel for ATC +// +// +// Verilog-standard: Verilog 2001 +//-------------------------------------------------------------------------- +// +// Structure: +// w_atc +// +//-------------------------------------------------------------------------- +`timescale 1ps/1ps + + +module processing_system7_v5_5_w_atc # + ( + parameter C_FAMILY = "rtl", + // FPGA Family. Current version: virtex6, spartan6 or later. + parameter integer C_AXI_ID_WIDTH = 4, + // Width of all ID signals on SI and MI side of checker. + // Range: >= 1. + parameter integer C_AXI_DATA_WIDTH = 64, + // Width of all DATA signals on SI and MI side of checker. + // Range: 64. + parameter integer C_AXI_WUSER_WIDTH = 1 + // Width of AWUSER signals. + // Range: >= 1. + ) + ( + // Global Signals + input wire ARESET, + input wire ACLK, + + // Command Interface (In) + input wire cmd_w_valid, + input wire cmd_w_check, + input wire [C_AXI_ID_WIDTH-1:0] cmd_w_id, + output wire cmd_w_ready, + + // Command Interface (Out) + output wire cmd_b_push, + output wire cmd_b_error, + output reg [C_AXI_ID_WIDTH-1:0] cmd_b_id, + input wire cmd_b_full, + + // Slave Interface Write Port + input wire [C_AXI_ID_WIDTH-1:0] S_AXI_WID, + input wire [C_AXI_DATA_WIDTH-1:0] S_AXI_WDATA, + input wire [C_AXI_DATA_WIDTH/8-1:0] S_AXI_WSTRB, + input wire S_AXI_WLAST, + input wire [C_AXI_WUSER_WIDTH-1:0] S_AXI_WUSER, + input wire S_AXI_WVALID, + output wire S_AXI_WREADY, + + // Master Interface Write Address Port + output wire [C_AXI_ID_WIDTH-1:0] M_AXI_WID, + output wire [C_AXI_DATA_WIDTH-1:0] M_AXI_WDATA, + output wire [C_AXI_DATA_WIDTH/8-1:0] M_AXI_WSTRB, + output wire M_AXI_WLAST, + output wire [C_AXI_WUSER_WIDTH-1:0] M_AXI_WUSER, + output wire M_AXI_WVALID, + input wire M_AXI_WREADY + ); + + + ///////////////////////////////////////////////////////////////////////////// + // Local params + ///////////////////////////////////////////////////////////////////////////// + + + ///////////////////////////////////////////////////////////////////////////// + // Variables for generating parameter controlled instances. + ///////////////////////////////////////////////////////////////////////////// + + + ///////////////////////////////////////////////////////////////////////////// + // Functions + ///////////////////////////////////////////////////////////////////////////// + + + ///////////////////////////////////////////////////////////////////////////// + // Internal signals + ///////////////////////////////////////////////////////////////////////////// + + // Detecttion. + wire any_strb_deasserted; + wire incoming_strb_issue; + reg first_word; + reg strb_issue; + + // Data flow. + wire data_pop; + wire cmd_b_push_blocked; + reg cmd_b_push_i; + + + ///////////////////////////////////////////////////////////////////////////// + // Detect error: + // + // Detect and accumulate error when a transaction shall be scanned for + // potential issues. + // Accumulation of error is restarted for each ne transaction. + // + ///////////////////////////////////////////////////////////////////////////// + + // Check stobe information + assign any_strb_deasserted = ( S_AXI_WSTRB != {C_AXI_DATA_WIDTH/8{1'b1}} ); + assign incoming_strb_issue = cmd_w_valid & S_AXI_WVALID & cmd_w_check & any_strb_deasserted; + + // Keep track of first word in a transaction. + always @ (posedge ACLK) begin + if (ARESET) begin + first_word <= 1'b1; + end else if ( data_pop ) begin + first_word <= S_AXI_WLAST; + end + end + + // Keep track of error status. + always @ (posedge ACLK) begin + if (ARESET) begin + strb_issue <= 1'b0; + cmd_b_id <= {C_AXI_ID_WIDTH{1'b0}}; + end else if ( data_pop ) begin + if ( first_word ) begin + strb_issue <= incoming_strb_issue; + end else begin + strb_issue <= incoming_strb_issue | strb_issue; + end + cmd_b_id <= cmd_w_id; + end + end + + assign cmd_b_error = strb_issue; + + + ///////////////////////////////////////////////////////////////////////////// + // Control command queue to B: + // + // Push command to B queue when all data for the transaction has flowed + // through. + // Delay pipelined command until there is room in the Queue. + // + ///////////////////////////////////////////////////////////////////////////// + + // Detect when data is popped. + assign data_pop = S_AXI_WVALID & M_AXI_WREADY & cmd_w_valid & ~cmd_b_full & ~cmd_b_push_blocked; + + // Push command when last word in transfered (pipelined). + always @ (posedge ACLK) begin + if (ARESET) begin + cmd_b_push_i <= 1'b0; + end else begin + cmd_b_push_i <= ( S_AXI_WLAST & data_pop ) | cmd_b_push_blocked; + end + end + + // Detect if pipelined push is blocked. + assign cmd_b_push_blocked = cmd_b_push_i & cmd_b_full; + + // Assign output. + assign cmd_b_push = cmd_b_push_i & ~cmd_b_full; + + + ///////////////////////////////////////////////////////////////////////////// + // Transaction Throttling: + // + // Stall commands if FIFO is full or there is no valid command information + // from AW. + // + ///////////////////////////////////////////////////////////////////////////// + + // Propagate masked valid. + assign M_AXI_WVALID = S_AXI_WVALID & cmd_w_valid & ~cmd_b_full & ~cmd_b_push_blocked; + + // Return ready with push back. + assign S_AXI_WREADY = M_AXI_WREADY & cmd_w_valid & ~cmd_b_full & ~cmd_b_push_blocked; + + // End of burst. + assign cmd_w_ready = S_AXI_WVALID & M_AXI_WREADY & cmd_w_valid & ~cmd_b_full & ~cmd_b_push_blocked & S_AXI_WLAST; + + + ///////////////////////////////////////////////////////////////////////////// + // Write propagation: + // + // All information is simply forwarded on from the SI- to MI-Side untouched. + // + ///////////////////////////////////////////////////////////////////////////// + + // 1:1 mapping. + assign M_AXI_WID = S_AXI_WID; + assign M_AXI_WDATA = S_AXI_WDATA; + assign M_AXI_WSTRB = S_AXI_WSTRB; + assign M_AXI_WLAST = S_AXI_WLAST; + assign M_AXI_WUSER = S_AXI_WUSER; + + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl.xml new file mode 100644 index 0000000..16ca7bc --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl.xml @@ -0,0 +1,10 @@ + + + xilinx.com + display_processing_system7 + hpstatusctrl + 1.0 + false + false + Zynq HP status ctrl interface consists of FIFO occupancy and Interconnect Issuance Throttling signals for High performance axi interface + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl_rtl.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl_rtl.xml new file mode 100644 index 0000000..ddf2cbd --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/hpstatusctrl_rtl.xml @@ -0,0 +1,106 @@ + + + xilinx.com + display_processing_system7 + hpstatusctrl_rtl + 1.0 + + + + RCOUNT + Fill level of the RdData Channel FIFO + + + optional + 8 + out + + + optional + 8 + in + + + + + WCOUNT + Fill level of the WrData Channel FIFO + + + optional + 8 + out + + + optional + 8 + in + + + + + RACOUNT + Fill level of the RdAddr Channel FIFO + + + optional + 3 + out + + + optional + 3 + in + + + + + WACOUNT + Fill level of the WrAddr Channel FIFO + + + optional + 6 + out + + + optional + 6 + in + + + + + RDISSUECAPEN + Enables Maximum Outstanding Read Commands Capability + + + optional + 1 + in + + + optional + 1 + out + + + + + WRISSUECAPEN + Enables Maximum Outstanding Write Commands Capability + + + optional + 1 + in + + + optional + 1 + out + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag.xml new file mode 100644 index 0000000..8cbced8 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag.xml @@ -0,0 +1,12 @@ + + + xilinx.com + interface + jtag + 2.0 + true + false + 1 + 1 + Provides debug access via a standard JTAG debug interface + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag_rtl.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag_rtl.xml new file mode 100644 index 0000000..2cb2f4d --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/jtag_rtl.xml @@ -0,0 +1,79 @@ + + + xilinx.com + interface + jtag_rtl + 2.0 + + + + TCK + + + true + + + required + 1 + out + + + required + 1 + in + + + + + TMS + + + required + 1 + out + + + required + 1 + in + + + + + TDI + + + true + + + required + 1 + out + + + required + 1 + in + + + + + TDO + + + true + + + required + 1 + in + + + required + 1 + out + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl.xml new file mode 100644 index 0000000..987fa44 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl.xml @@ -0,0 +1,10 @@ + + + xilinx.com + display_processing_system7 + usbctrl + 1.0 + false + false + The usbctrl interface consists of Port indicator and power signals + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl_rtl.xml b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl_rtl.xml new file mode 100644 index 0000000..b0af643 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/processing_system7_v5_5/ad955ff5/usbctrl_rtl.xml @@ -0,0 +1,58 @@ + + + xilinx.com + display_processing_system7 + usbctrl_rtl + 1.0 + + + + PORT_INDCTL + Port Indicator + + + optional + 2 + out + + + optional + 2 + in + + + + + VBUS_PWRSELECT + Power Select + + + optional + 1 + out + + + optional + 1 + in + + + + + VBUS_PWRFAULT + Power Fault + + + optional + 1 + in + + + optional + 1 + out + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd new file mode 100644 index 0000000..cb7fa3f --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/util_vector_logic_v2_0/5ac42227/hdl/util_vector_logic.vhd @@ -0,0 +1,140 @@ +------------------------------------------------------------------------------- +-- $Id: util_vector_logic.vhd,v 2.0 2014/10/03 04:52:57 abq_ip Exp $ +------------------------------------------------------------------------------- +-- util_vector_logic.vhd - Entity and architecture +-- +-- *************************************************************************** +-- ** Copyright(C) 2003 by Xilinx, Inc. All rights reserved. ** +-- ** ** +-- ** This text contains proprietary, confidential ** +-- ** information of Xilinx, Inc. , is distributed by ** +-- ** under license from Xilinx, Inc., and may be used, ** +-- ** copied and/or disclosed only pursuant to the terms ** +-- ** of a valid license agreement with Xilinx, Inc. ** +-- ** ** +-- ** Unmodified source code is guaranteed to place and route, ** +-- ** function and run at speed according to the datasheet ** +-- ** specification. Source code is provided "as-is", with no ** +-- ** obligation on the part of Xilinx to provide support. ** +-- ** ** +-- ** Xilinx Hotline support of source code IP shall only include ** +-- ** standard level Xilinx Hotline support, and will only address ** +-- ** issues and questions related to the standard released Netlist ** +-- ** version of the core (and thus indirectly, the original core source). ** +-- ** ** +-- ** The Xilinx Support Hotline does not have access to source ** +-- ** code and therefore cannot answer specific questions related ** +-- ** to source HDL. The Xilinx Support Hotline will only be able ** +-- ** to confirm the problem in the Netlist version of the core. ** +-- ** ** +-- ** This copyright and support notice must be retained as part ** +-- ** of this text at all times. ** +-- *************************************************************************** +-- +------------------------------------------------------------------------------- +-- Filename: util_vector_logic.vhd +-- +-- Description: +-- +-- VHDL-Standard: VHDL'93 +------------------------------------------------------------------------------- +-- Structure: +-- util_vector_logic.vhd +-- +------------------------------------------------------------------------------- +-- Author: goran +-- Revision: $Revision: 1.1 $ +-- Date: $Date: 2003/10/03 04:52:57 $ +-- +-- History: +-- goran 2003-06-06 First Version +-- +------------------------------------------------------------------------------- +-- Naming Conventions: +-- active low signals: "*_n" +-- clock signals: "clk", "clk_div#", "clk_#x" +-- reset signals: "rst", "rst_n" +-- generics: "C_*" +-- user defined types: "*_TYPE" +-- state machine next state: "*_ns" +-- state machine current state: "*_cs" +-- combinatorial signals: "*_com" +-- pipelined or register delay signals: "*_d#" +-- counter signals: "*cnt*" +-- clock enable signals: "*_ce" +-- internal version of output port "*_i" +-- device pins: "*_pin" +-- ports: - Names begin with Uppercase +-- processes: "*_PROCESS" +-- component instantiations: "I_<#|FUNC> +------------------------------------------------------------------------------- + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity util_vector_logic is + generic ( + C_OPERATION : string := "and"; + C_SIZE : integer := 8 + ); + port ( + Op1 : in std_logic_vector(C_SIZE-1 downto 0); + Op2 : in std_logic_vector(C_SIZE-1 downto 0); + Res : out std_logic_vector(C_SIZE-1 downto 0) + ); +end util_vector_logic; + +architecture IMP of util_vector_logic is + + function LowerCase_Char(char : character) return character is + begin + -- If char is not an upper case letter then return char + if char < 'A' or char > 'Z' then + return char; + end if; + -- Otherwise map char to its corresponding lower case character and + -- return that + case char is + when 'A' => return 'a'; when 'B' => return 'b'; when 'C' => return 'c'; when 'D' => return 'd'; + when 'E' => return 'e'; when 'F' => return 'f'; when 'G' => return 'g'; when 'H' => return 'h'; + when 'I' => return 'i'; when 'J' => return 'j'; when 'K' => return 'k'; when 'L' => return 'l'; + when 'M' => return 'm'; when 'N' => return 'n'; when 'O' => return 'o'; when 'P' => return 'p'; + when 'Q' => return 'q'; when 'R' => return 'r'; when 'S' => return 's'; when 'T' => return 't'; + when 'U' => return 'u'; when 'V' => return 'v'; when 'W' => return 'w'; when 'X' => return 'x'; + when 'Y' => return 'y'; when 'Z' => return 'z'; + when others => return char; + end case; + end LowerCase_Char; + + function LowerCase_String (s : string) return string is + variable res : string(s'range); + begin -- function LoweerCase_String + for I in s'range loop + res(I) := LowerCase_Char(s(I)); + end loop; -- I + return res; + end function LowerCase_String; + + constant C_Oper : string := LowerCase_String(C_OPERATION); + +begin + + Use_AND: if (C_Oper = "and") generate + res <= Op1 and Op2; + end generate Use_AND; + + Use_OR: if (C_Oper = "or") generate + res <= Op1 or Op2; + end generate Use_OR; + + Use_XOR: if (C_Oper = "xor") generate + res <= Op1 xor Op2; + end generate Use_XOR; + + Use_NOT: if (C_Oper = "not") generate + res <= NOT Op1; + end generate Use_NOT; + +end IMP; + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v new file mode 100644 index 0000000..04b9d03 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/ipshared/xilinx.com/xlconcat_v2_1/21a398c4/xlconcat.v @@ -0,0 +1,276 @@ +//------------------------------------------------------------------------ +//-- +//-- Filename : xlconcat.v +//-- +//-- Date : 06/05/12 +//- +//- Description : Verilog description of a concat block. This +//- block does not use a core. +//- +//----------------------------------------------------------------------- + +`timescale 1ps/1ps + +module xlconcat (In0, In1, In2, In3, In4, In5, In6, In7, In8, In9, In10, In11, In12, In13, In14, In15, In16, In17, In18, In19, In20, In21, In22, In23, In24, In25, In26, In27, In28, In29, In30, In31, dout); +parameter IN0_WIDTH = 1; +input [IN0_WIDTH -1:0] In0; +parameter IN1_WIDTH = 1; +input [IN1_WIDTH -1:0] In1; +parameter IN2_WIDTH = 1; +input [IN2_WIDTH -1:0] In2; +parameter IN3_WIDTH = 1; +input [IN3_WIDTH -1:0] In3; +parameter IN4_WIDTH = 1; +input [IN4_WIDTH -1:0] In4; +parameter IN5_WIDTH = 1; +input [IN5_WIDTH -1:0] In5; +parameter IN6_WIDTH = 1; +input [IN6_WIDTH -1:0] In6; +parameter IN7_WIDTH = 1; +input [IN7_WIDTH -1:0] In7; +parameter IN8_WIDTH = 1; +input [IN8_WIDTH -1:0] In8; +parameter IN9_WIDTH = 1; +input [IN9_WIDTH -1:0] In9; +parameter IN10_WIDTH = 1; +input [IN10_WIDTH -1:0] In10; +parameter IN11_WIDTH = 1; +input [IN11_WIDTH -1:0] In11; +parameter IN12_WIDTH = 1; +input [IN12_WIDTH -1:0] In12; +parameter IN13_WIDTH = 1; +input [IN13_WIDTH -1:0] In13; +parameter IN14_WIDTH = 1; +input [IN14_WIDTH -1:0] In14; +parameter IN15_WIDTH = 1; +input [IN15_WIDTH -1:0] In15; +parameter IN16_WIDTH = 1; +input [IN16_WIDTH -1:0] In16; +parameter IN17_WIDTH = 1; +input [IN17_WIDTH -1:0] In17; +parameter IN18_WIDTH = 1; +input [IN18_WIDTH -1:0] In18; +parameter IN19_WIDTH = 1; +input [IN19_WIDTH -1:0] In19; +parameter IN20_WIDTH = 1; +input [IN20_WIDTH -1:0] In20; +parameter IN21_WIDTH = 1; +input [IN21_WIDTH -1:0] In21; +parameter IN22_WIDTH = 1; +input [IN22_WIDTH -1:0] In22; +parameter IN23_WIDTH = 1; +input [IN23_WIDTH -1:0] In23; +parameter IN24_WIDTH = 1; +input [IN24_WIDTH -1:0] In24; +parameter IN25_WIDTH = 1; +input [IN25_WIDTH -1:0] In25; +parameter IN26_WIDTH = 1; +input [IN26_WIDTH -1:0] In26; +parameter IN27_WIDTH = 1; +input [IN27_WIDTH -1:0] In27; +parameter IN28_WIDTH = 1; +input [IN28_WIDTH -1:0] In28; +parameter IN29_WIDTH = 1; +input [IN29_WIDTH -1:0] In29; +parameter IN30_WIDTH = 1; +input [IN30_WIDTH -1:0] In30; +parameter IN31_WIDTH = 1; +input [IN31_WIDTH -1:0] In31; +parameter dout_width = 2; +output [dout_width-1:0] dout; +parameter NUM_PORTS =2; + + +generate if (NUM_PORTS == 1) +begin : C_NUM_1 + assign dout = In0; +end +endgenerate + +generate if (NUM_PORTS == 2) +begin : C_NUM_2 + assign dout = {In1,In0}; +end +endgenerate + +generate if (NUM_PORTS == 3) +begin:C_NUM_3 + assign dout = {In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 4) +begin:C_NUM_4 + assign dout = {In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 5) +begin:C_NUM_5 + assign dout = {In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 6) +begin:C_NUM_6 + assign dout = {In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 7) +begin:C_NUM_7 + assign dout = {In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 8) +begin:C_NUM_8 + assign dout = {In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 9) +begin:C_NUM_9 + assign dout = {In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 10) +begin:C_NUM_10 + assign dout = {In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 11) +begin:C_NUM_11 + assign dout = {In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 12) +begin:C_NUM_12 + assign dout = {In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 13) +begin:C_NUM_13 + assign dout = {In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 14) +begin:C_NUM_14 + assign dout = {In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 15) +begin:C_NUM_15 + assign dout = {In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 16) +begin:C_NUM_16 + assign dout = {In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 17) +begin:C_NUM_17 + assign dout = {In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 18) +begin:C_NUM_18 + assign dout = {In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 19) +begin:C_NUM_19 + assign dout = {In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 20) +begin:C_NUM_20 + assign dout = {In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 21) +begin:C_NUM_21 + assign dout = {In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 22) +begin:C_NUM_22 + assign dout = {In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 23) +begin:C_NUM_23 + assign dout = {In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 24) +begin:C_NUM_24 + assign dout = {In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 25) +begin:C_NUM_25 + assign dout = {In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 26) +begin:C_NUM_26 + assign dout = {In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 27) +begin:C_NUM_27 + assign dout = {In26, In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 28) +begin:C_NUM_28 + assign dout = {In27, In26, In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 29) +begin:C_NUM_29 + assign dout = {In28, In27, In26, In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 30) +begin:C_NUM_30 + assign dout = {In29, In28, In27, In26, In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 31) +begin:C_NUM_31 + assign dout = {In30, In29, In28, In27, In26, In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +generate if (NUM_PORTS == 32) +begin:C_NUM_32 + assign dout = {In31, In30, In29, In28, In27, In26, In25, In24, In23, In22, In21, In20, In19, In18, In17, In16, In15, In14, In13, In12, In11, In10, In9, In8, In7, In6, In5, In4, In3, In2, In1, In0}; +end +endgenerate + +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.xpr b/sdsoc-platform/zturn-7z020/vivado/z_turn20.xpr new file mode 100644 index 0000000..e41d149 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.xpr @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/z_turn20_hw.pfm b/sdsoc-platform/zturn-7z020/z_turn20_hw.pfm new file mode 100644 index 0000000..372689b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/z_turn20_hw.pfm @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/z_turn20_sw.pfm b/sdsoc-platform/zturn-7z020/z_turn20_sw.pfm new file mode 100644 index 0000000..9fe85bd --- /dev/null +++ b/sdsoc-platform/zturn-7z020/z_turn20_sw.pfm @@ -0,0 +1,27 @@ + + + + Basic platform targeting the Z-turn Board, which includes 1 GB of DDR3, 128 Mb QSPI Flash and a MicroSD card interface. More information at http://www.myir-tech.com/product/z-turn_board.htm + + + + + + + + +

1HjY+j3ii2(2GloiPuO2^Ay6zV{0_s5O)PXiWH>KFjUj^i;L02YtQ{i`BuP8o` z{@V^W+d74SW2%EqiKo<|(R$OxQb4w+fgPsxL%k{fj3q7$*eOZ(&|W(AD3HU7b_kCr zsZ~y<3iX|7{hcLptrLixgp9Aw_a!_=Yj z5>uz2INap3vJe&QZKo88);3R1-_E@WjMElHvPCDSfdCqRbF)yia@&v>jeB=c#p>1!{g{97(O18flPXbOzE}=mGei2>fkDyJVk9v_xr%z!3FC!tIcspNE(~X&#c?*x` zFg(-+VtDL`BZG(_JcC<7+jnDkYy05tZXTMp{DD2jYpFhI{?e7r@v?F}y4fOJnG$|1 z11@%Iz1J<7!cZTX7~lBtr?m30CN4 z$hXHg^Af4q*&J)380K|~b=KH0qS)AubyB4h(>X79b2CJ1XfA`|gibRv*YfbUTB(o_()hTLMx?v7XUtE6Wpylb$mq0DNk8AfYdV3Y$ zheV=)OUfLZU)haxU6(tj^qA!Ji)G;zPuHf28Sv?a^7YN=Uo^qS)M4AW(Ka)M`o@)o;nLlGJ! z0H3$KcmkxrQ@}nmmo~+qG&7b9f7P|xqI3SXhA8DTSf75|Kk$E#L7cs-o$PpxOSjrj zb2||Wmu|)KEt_U#_;u`Y0>YEsE%8UE;0!JyKEgKd+x z*FB>INMA0C;N9a^xq#~28xIW&Q+f`xz@ew*87?<**em$!t zgzOvLEm(OT4dw%2NazdSvPgHSMb{rar0TOF8)slGZC7O}dm$=oaqPVkm$f*&e%C8R zJIu7Ockg_vd@_Hy7ata6fSvNx_M~}6z|?+OaTZMe4nc$B!%bjH>&aZm?p;b@oJro5 zf0Mk(B_hrkGVH0T!;c7+2Xp7fed3Ngpna`n+mVH|oby{t{#zcS7o{=`*B=<84T_=T z+kA3ev11t~5)(AWAQ_1vDRu~ZV+Z05e-x{eLYn4_G^=@~DrG8?`@v)VmBVB(Jyl6| z(D*7pOYK$dwTBdADuxu!EwELn_{*0hn-zw3DCK|ODnk`3cZzM{l(`VS*dgOZ=1O`} zIa6l)2#*|DF59;^wB<~^?K?t<-Pwa`RxP$O2}1c|H0=`ha?nJ$T2eupfyhwCYHU5m~% z=(_NXuG_kP2>`8Vx>D`>YFyt_xZ1sZtZMOGgT>VAnjs5CyK(uFJgOBQ*Q2wT~IwSBx=jTbU`)g-%w-*}^PdO&mV)T3C5v3c>&0%9ZGj(+y^k$D_4qpPx zwD>53gKvST9k!$Gf`d}R`^o#W#V=ldko_r^kFV6SHz;fG|MSj(Buc?Bgc8kkTfCtSJXTLn= z|2Vb2-YsvgBCRJ~_fiiIB#Y^L4+FDbN$`&U(Y@uJy^-J@Owzs0hQ6A-Pf>UPLlxXC z-1l~{7yT%(mY}P@o!n(gnpjaZaP%~@jUvmvz`zavB*j11Am22%n8u2;9)ywWCZLlL zc*I#p9*_%9#95e>VYkN~J3LDrL6L)$VL#x?a;`8W7Uel}j)qUy7B2tsz9EHa2_pfc zGnR_`$Z8eo-4Ki{``%U50+(ul!mYSu2TFzbIw(l-y~k~CRy;kx3Y`{O&PJNwsDM>-9S;>vRc8P^TN@HZ}|JJdHNvzn!a zQvB75L1f(Aq~Im3ArjepMETA&U4(NMc#rNT&{V!VblcXzZpa8`-)iF)U|`dts5>9m zJf_XiPp+nOE53-~B$Mpm*cdd4LD3FvWaj1wkq}6L=}NA!@siUWy7Fr3b|507Y+>Eh z8BKSZgVC>n6OqaDkP}O=ou~EFqTpShQ@1f#t@gq0L&%XJgeU1FG-O^_C#dC>J_;3v27R5NBQv{kb4-W?x%k#++ zW+A}+Tlf*D=@Q`cP>(C!u5&0jai$UjP1Aq7x|N zj)ep$BlNC2t7G0_x(XR`)i>BGZsG@Fg!Q0)tooMtFj4E-B|O7>|4z(cr;Ls{iNTyZ z2NX9Iss`daLf|8KaviMiR~C!g{4~*t>ykd~i)r2zd`f?*Fc^wZq)*Z)f3eNbw%qiC4@1~js$;ic))eB0{sN%PTuFMw(LkK-0S z{eb?w5fnq8NAZsdu)qQ;@IBxSDhhJZBI7_SZst9H$z=9H0?W zoee?-p+98F$c{bD^;yIxY&m{#O<}S&`rU1wKwZI&tG?kvNb`)B%r<`M1=nGd#K5cg zN*~cy`cu!VFU=Tz$pUbck3Uf&d`yf#d~jOPB(~$8)~^c~ONZ#a!M@K{Q72{`;+?vl zb!YHtS^hL6;UXptNG^lt)Hr@jgDcN%5R6Rl&=$CeZWnwAr=*9Yp zEU0hJH+3y9+m$%k*E-lZ`$`2>SX}sdP!zL8&U@sW>OuRH^jwEP^E$TMt9L56b<^N` z_Z#GY0$9#Zdx*UelM8;Gvr^N@T12P%slk9Mv7;^$G4S_(bqzL`%}xw)SAT0aj2f*T z&}tjFE{*YcT6%K(8ng;G-Y>zsuI@{FTtTg|UjQPlBAJH3{Lh+FAmE>%dvub0NGo;J%=T|RT01v2vP z#!w3x+c+gNMJ-vD4VVm2RhH|FVp0QO%xj~zSmqeQTLxpkF*_Z)wHkzcMKf4Az`oH% zcNq$m7J`56Jz=$m%cp23_tO@3kEl?$_mB6(T({F6ERbuddt3kh8jNO5(U(A*w((k> z!BT}M*NSt5A_m3e*Z%acMF7kX3n1lXM~-7!d;`$mLQ}kcEMY;yJ%NM4PJ&j(^ccPV zpV-Lg&_bL+KViKza`9}UV6D+ut1o! zYz!8AR>T>ii~>1c3CIotIiNuYw2~s!EN0_pQjJZs2Sv-KJH(uq)9~1NswP;`IZM^q6-*`jK+j@ktS3avu3Ux$gJHS7I|vta?_n|;aC5BL?<6k% z7aFQt+vS{|wr^?PkCSN4T`yucbHvYwUn2{J@3=+sUtil|gb>(8K~>A$j<0V*PmIsu z=~8;8p{SARjxG-U^_hOGyH*L}X81t6IDQ1pUriPaY6^`KO~V|nMl%#_O9x~3OlY+@&r#nD0bXEV+UhQ zKzoE@htk>_t~kRf*2{Z@GF}Uwc!1J=+2@2-zJ+!=7hlE_j?U8=6_Lj$G4|x#X;xlQ zHf!bPEyd8sk#qPL%8kD>xa}B6OOXRlxQ#aef6n;tWQpFdhZEdj4aiuyj1J_x7%Hs; zj?uMmRj68?Q>&zwaWBC3=^LN_(G?+~k9)t;qlUDERTKPuF$%3hVKv=)l0a?0X3-D>W1_3!5a5iBWz+8)yg2oE*r~U}&Xu0dtMPXAbpe~h1{w92K*7oL zOhH5u%}Vxr5h+jk4rnOfgaHeBpS?9LI?_gElM!-RC=n|)ttTP*Y4mI!p>NF@d<~*D zg+I;czmwoM0V26Rpdt%Nba{s&`T#a9{j;S|u4c-;E~nD2S0AlW!M@d|u}ChbA-VcH z%he>^s<19_>Z}VSBT8N1>F5F($qVWNODH8&>H?)M@Evr4_K&3tsMuAWPZHW|1FVxt z4$yT02$4sm3ozk+6kR~|lBs0V;p$A3dpx=T(eDS+1*XERavvF=x~4TwK|~9eKcEZb zTXPY*fQ^Y~@ed?8Bv%DgU?De#1kR6G6#&KIZ<2U=_mpz z#f#|y%P8ev>H(!5@E!Dk+aJjzpq(*#jJbV;XJ)V|U8JB7ev3AP1`GyB5yoD z8i-fPUP#^3W|@NSCO^kG49NCx0 zpoXBv`f0~%88tL@OoWV(DYJ>cLpHHmOi`Xu61}{huDpdDvZ48sRkYzdm$FqyScj8* zssXCouX*n&J0`lJ3VkMdI4gWZ0YQ|c;!$|F_q^W=8#~_CYmbVUAlMiY?A0|Kikwl{ zPa+fOhgQ(1I){m>OdW#abUGT zP|=`veDEBr@WPOsE3-1$xgJfDFisRt{{$gZPDp9L{TiglCH~L&^VYxv`anzVY-PPF7IdMU(+W=8vretrU3kJAK3pdls zWzCE7oY$p>VlG1LaA`jP*EZ{iERqMp{VG3 z$}wpTUk%L@EeJ52vNJUvBzU4(RY#5le7)4BxUt_La?SaQYQ+pY!)iP%Rl zQ?ARXTq1X=yi*ac2G>EF>adVA*>68yvdQZ=t8b<|E#x2;;~z-_pc6<+SM_ffM7}t%l>8{QAQyoxp_vux7wEe1%m=5=(x{Rr7LGjU88q|TL zvH+G=^8wioNxQYRx8CPd?{D7z>8mRKX8_xs{>$HxcxwR4fyu5wjQ}bbjyvoog^1fI z+=#N<>$o9RuRuqFfoJ05C9b*&xH2=KR8o39uf98DBDH*jhq5CBd1bm2U2Tc_CXi(L0)(q0y zd!+vLXS5Ydo`4zCG;hf|QPfS_2UiaMdB?d*?nXEQT5`-}9lWA!l&T799IPsWDhKaz z`;?Iy-dwKh!`VlVH14DGqtl~@*|RNXrh%aL5`#S$t#zG`TJY zxCb4CNMAoNJwmcNmni~&KfZ97O(s{!J(d#&^;Y2AK+1;?$eEg?z}YYGFbC++L1Tdl zJ-1XQ7##0?rm}A6aRT)g8Qo-jK~eXl^-ijiGx1QP1PnkL+ilcApBI)9G~N{0NeP&E zk{H0Jh2HF!pA+@spkIeW&%SrQu-Y1pu;2CO&=tUBuw_#m#~L(fvP+t#<}f^HzdOhYHg)O z@Ba+rE^Ys$1qIFrumcwjV`;-pFocUasMNF#sL@KpY(_Nm&msCmv_B;6dk@xQ8w|B2j&pxNEu0(?`g1FM4 zx1M5GD*dwKnF=wKMJNhnnLI+eF|fq||9g(YSOO3yy&FbG)AbBhQ&C~qXhvBuYH7-S z-F|L@n=0}~-l>QQu7zywWh5DHzOHU=Rhn8@iNz%Ho%k3ZXNMaJPH?rup)q=9(0Zsg zxowQWE0lIP*@@M{EW&uV3gyY~k-lI|ftn;>EuK)o%9w&OrXcUJ`-q#-vdyX9Hr5|k zV6zl+oN6yo(W~+r)*&UerV9!vVEd7=z`?SFwq#sl#C*XOHqng*K?DZ`NQ2YoqgL(#1vGiJC+G;-OA0*HHk@F~&6fL0t?{ z^qjqu#-3(|CG<(nYJ93TLn_CB255w&$iIyUhgTb(F$}Kx22#<-C+WPRZ_kX(n|RL{O@cP~*mTe!a0 zxoS>sEv^YWGMI#TWBiY`PtQ$dTG$G_R|LXe!1U~!A%>Yg#^G9U1A84m*WvH4P|4Q& z-)KN4J9>kdY`!QQNw1Wd^nyzmcRdtqHcf9AuC?FB)p(?F>%(>*ir9Cy!cnPNjny^i z;I3X42(Y=&hDOi`KBQW~DPLx62-cgxhnAV1q~WZr$u5q;XJCoM(~&dgy`OR?N222y zQI~i*40|SW^rh8z`xgCBnvOpiT4CG0=fPA-n<6saBU9i|Ix z&Wd%@3k*c~4xWuc{aa7tRZaf+KNslwN2RQscZIWAgR`HN_fe(u;GZ9ND8?|4NiwlW z!ghg>A-FEkEf~$v@b%t3AdfqN)M+%{(FUl*ft?tu(D$wb zoEESxQ$OLge(;rC3S>BXnVFHvns^2IMW;^UiOj?n{l>Qe4dG|R6@s{ATEg$+FDAn0 z*TSGghH0wiPOd2`M0bcDH;EZ)uI46*RWnByo)2mlA76S^a)VUqA_miZ5dog$=gk*fl%K}4 z?>#?}Qdd0gf;;$h`&|!_Qz-8UhD~8M`_~y`@3WKrl#9@LG&e3cngG89xv(vE+Hvh%Y|`*+8`W{FM1Ez*7v1ASdqOrJTQTgOrdgPzds(#lpJ6 z5mMorjmD#v*W4~$&F#{vElUb&d8a~lX=9e2D)vUsWxxM;R4%XIu2!lWZ$iyRV95+Q zj@NvgU3$dA?P{0aC~TL8R4(n(Ptz`~9>{V>N)V97hq`0C(k@-vrGE&!G#u^j$YgV8 zM11E5h-Pi^)r>lAgfpyF%|_PgB=`5=fU$@LMA8@v>M&*6I1#qM2L>X2?>U1;PJRnW zKjptJUl8)(=o*78$w)Fkydj@CQ%n#O<8EEsb`OhGZLg{xqlRs1a@IX6a!^CE5T_~T zCWMr7DT++Gs*jQ?OGEN2NL&MP$r12k(bP&3=nx4PU%7`dp+&74=Ai8#1h!}>PaC4{ zYK?F({wQ;(d+wy)M~(Tk7I~Ix20HYpV=c#_nVkgR&|O-NCdou2qk%fq*uBGVJ?cdW zOX`63B$-NYZo&?k!IPRc_?Duf5%P-IZ?wTg&$zgI!v+a7T?!D`nuN00uQo45uxH;k z7oFN7Q!J}W8I6<_)}&3OjVYu9DwC-6AJj-|w?r;4e{Ms7P))ZmS(P$<&rTY)=ba02 z(mh%%;+)!ns*+Dza=%c(swxXK79vZq#ttf_I9`-`86uUof1S9MV4XQWpibNHdiA|8 zo$f8tK5_I>MZWAAoCkNbiIWzL)GBR{^AScaBq>0B8_mtLt0@Np z2RM0IxRYag!7V!`a9=dhZ4KMz!ShZEbhFETw>=z$Fi56dC)ddbVjRhQ>XYvfS4K@Z z=qULeR@5+#x-erR2A8I^Tjw%xNFRU)(M4UX7`w+I^wJ-Vj8m7{>vOX>5|eFO`efJx z3(1)R_DY`LUvO%98NmTcW$dF4WO#qrXyE7sO|TL}e96hbF>J>8zfP7jj&TS^=H9?q z33FX1yv4JTkr`hlz=}pibU1K8084t4dw^ty8RH1Y;-`MINN>93HC-Kv+5zAIH9-`PxMrYcG?f{|M7uR&0P~Z||Eua#m?(xYI z-SpZa@a=$OI{ImjANlH-sSImXlg+)5R6P>pMI+m)==G^8`r6Jkph*QZD#H}Qw*`O` z$JHb5;1qEN9K}KEMNNcxa8v?)&H~<$s%at@Or)DhA~o?9hW7pFih>%z0+RZP7gVJ> zgAwAHR2_m$;o}v3&=^o9;D@g>Oq-x8;>#ZKAEK718#*2~^{j#Y`Fg>b-|OjY=`^eK z>s{Z~$-zw-s6PEiJ!v!vQ~i0T`m_B|xyaPm*__+%>|78as1vDTaM&TXv0rP}wZ`f; z>dmMR*IAK(i;c?8h9=I{{r^A)jyg`ANMi$SfV#p2!mt>WfXl}T7Da?WcrAoj3;~Y` znjLYP?u4rrftB0cZtpT^IJfSGOLIeIQ*A#OG@!EScO=t1Ho~ZPH1{2EWWHnF-y}Is z-f0Hk@l=L+IhQR6a`~n`TXnnoX1m&)YE#I0_>dXrJ09`lC8B6T7iGFrzRsJ4eaAp5 zrSJG@`i@nQD!E?T88Y9oI#QE=rSG`(9sdx%14XXC-$Dh)Y7AUu& z4bhfXRgbg*%b~?S6{bb97U~s|SCQ8Qwrfhlf&qmLG;Dgd-*ztRkMLC#s_1;FyF2F5 z?AU&woMPH)ZcK&TB#qTDLG2Jzr%*MSvrz-p4HXLFJSp-Vw4$qFoS3Tip-^0La@7tS z7~n-R#x(Z$(K>obOM~2LLrTcnpoq!9~&JX~@8H@;QF(Mx=GYqd{sIn`X$5L;eoj7xzH&-vv3KGq(gh z9Vo(u_W@&(n};qB*eL=-9hm{|8triH@-CV9GU!MBUr2QWPj>0yxY`Oir=ah_w9{`~ zhs`01FtNi17vQ_pm}s6I&ur?VvLTT9IQL#>o>KO}gze~x-vsXli(+eOOKW;AUkD|0zj6;RuEC$U-I^(G)k8zy<1uW6t_zZR1^<`%4A8kn!I|&)+SbD zKrSts_c@krqq?7b!t3>sl;a^iC?>-xmZcH&Lxg9r?>_BtkuDRFq7Tm?`2}GY9c3Rl z1oPrq$phfcaa+0p9GDqPm<&?<7U6#J05&q%YU%OQRYM36IHcW1IVDO0G(3j%Q(71p z%J8(qPBh?0u-E!sbVX}wW~ci%Fg=b4M5Q!uqvqh+!_&8;KY35Q^f1A=t7)DNt^RXz z2%3!6+b(Lytm+})3OFUzH8j*)7Q->tFdq(0TyA;p72+I(rgNSuzg*Q8@F|0t1+NEoJ8j#~I$yy<+GD4DA@Mc#Nb-JBr1Bf^h^_?^um@f8E zL4VhKU#oZ(vJJkk`JQjSsd~QoX1o<-YSl^G)+E?nH+FS%$Jy#lMXkffXymg=YBnsN zb{bWWv7HT_`Pha$_P5r63vhNbUBMYR5^1|4_T@9f&>ippd$xV~zD8+F@qe~=D*t^6 z8heLWd;Wx9$@M}fDDw7E2~ zpb7=;;j{s&ygwkQ#-$dKusVo<_8`_lEyEhG3{1&VRFh1_dor8kujR_)Zfq>TvGoaS z82_8Wg#20HOgW`QeMCF*4e4m&c&6vki~J$ebaM(Ex(pGiWCz-?rS*Aa zMiAE-^qXA`?nNO4<2gLYo(k{^0h*%=kxs>c4I&N!m?7X<(>#@WPML);4s&w~lJk)y z-3elc8Vs@dmMk4J8EP#?P6Nz~MeR}5T*zbi+3(-StS~4`pi&Tan)@&4ARXNG+yi2^ zcB;-%hlwNX@olx7*5F}K$fOC|64|0M!Kf^TjM;_1A$l`w*snN?SR`!4q7jHErt_eV zNdIWWD>{W}L}IWr^hrEo_RHjReLvC2fQIT&qta}$N$(M^mZBpTEOf+WAq*6PnLwt> zx4oYUukxZ2MG-lZ$V+|M_+V?jOUX8c;X6EPjE1*9EhGKyYpMu{=%78A~_+-ayf8steR z?=*wca2i&WQ)$<$kEYqStW#Rfpn3~OmL-t^4|xmeL@=xD>MhJimfpfA)>ToGzE}lB z_xiP^w{U8ex9qA&2FKkI5t_Ri55qo^t9oSWw&nF)a8oOS5x!21$BMLM+j4gmZmaGN z4KS&|OdeCxaH0*cmRJrrAddhW(d`aw2;xOj#TCN~KFLUwz=;Lzj;a?X`6vAWx+kWW zHSapXP1MLu)TS0rYIT5Z9Jv;7c(tIdCdKJY_6Vy{yh&5CCd!_1NR7v!HJq9cdLBzSR&oW!F>vF6MQWTa-hLmDw` zurjw6uorhO;$r~IwzIb7Z|wNaZtV@ITlNb)%pD^jGasNy4zhMBlc>UD@Sc;N6B&~F zE>F8qfmtO&sny`-7E9yFUu z;L9cjTosgLSgD;nG3_LydqLIYz-H21#%XY> zR830NB-bt;adGzW#y!;sRT;Dc+&XY1+?}?Ah#WK3={d~+6;^ye?1J%Mu6h3m+Q{sN z^%CaPHh=}JsoXV=k1+_4YG&31_RAfg@OWnw=M7aqy6jX|aNwL23=tPie2yxT+|l_>M8JIa@Q>JKeUG zcY4gQce663P?0Z`at4RICRrsZsmBuFA>7L~o#_^g^Hmi@_k~+*P?wv=&Oob zsaRTvfpeN)d~0utTzS|VWjAhy@viSR!gjmg z3mR}t?^eA1v)bWN?cnV6thRgEMw*`Y`Q-58-L7A${Pid1uo?&XU3GSULX9Ew)gej? zQfPvelv{>te9v$VQ<#%vs?8D)v)@Jm!>BfgwvE(%r|k)CfVvepv^7cfG=cZLB1rK1 zlWT)=8Lc!YGQq$}1S#hV_Zw4|PN-D*BZPmQMo*D7t?$t*?xG zQ%p0}o$EFTZ6jVkLUJNNyg_FO)#Zo)RBr8bhsb;5%L&0XyA+XPp42qip{MM4$3rAa zjy_YRf;6VJ1%AIoXj=!g-#?L?r<)J7AD1 z*tp%rNt1;yp+&1lC2XS>MWrL24LkU*hrio-(O%2|jyA3i&J+nyCmglF!9@Xr%(b3R99j2DaGv2GuI z8;UX+va{SBAjD-lpwJo3e*1?H58CeY;j_827RZm#x9S)!3Os1gL~Lf6myonnc)$ed zfxlSj+~+c|U6m_PQ$c0sUBp<0P03~G3txm`6K=KFeJ+xX&%efXw`bq`VVY8rPt8H1 za}F^A{%MnG$Uq&S2{vtjD%FmYYJ61NH9LKh3gAc+$rI%0#H1qLI1ID3V<<3V1m&nQ zjcjj}0x$}2ZfH;s61foaRz(aAKIFnOLa%(BSlSC&gpx1Bh6Y|6SRw@in#tIZlxeIV z{_bjP$VZl@h9_ofkfbkYX>b;xrIW36vi%TFHX!asSV!V|9gd#*Nb1SM=%V6oZg36> z*D!)*uafGZHo!Wo0XQUeN*Qp0TgK=c<(u7v{LOMlo0At#XS#&r#gM=ltb!G zngh#=$+iiq1b_wYA{@(j&d5N=YSs8V0Fuff9#xi)8qt6XD^LtMj3LA%dEfXT@P z_beGwtidVE@x3!@^PSju2Bsiox*1*$uh>%c3uTlL4g)M!+P*MkgJG)O1+U_NSw|=C z;^qs+ON@_6N;pCjlg?hI#2HLhRM`uYt%32@TJ1ZV4Q5q?s6afwPN8a-D^mUnW&gds z9?1qSR}STdiG&UqGpaRmJCZq#R{J)tw~?dPMmrLuzS-1#_-NR6&kTEviD64!@ff{4 zim&(^_dbQN_-J(femeeAm%RB$#pK00Gq_(ZP zBwUbpDr75ZHPm2r$?0+)ZD(lDrEMh(cghL)z&%V_PaOW9K{I>e@qXZU)wjO}9;L<|!#4IEu)GufxQF999{*pMOG?J7?k{`lILi;0? zto2Jx%&Yc@WyEA?xzXxFX#=doO77NkF6wTgG19_e9QDa<&8W5^6%7}^c$IZZOhaAo z8g+W!K_NhxIs8pTTc9c@6$Rf%{p20*H3uJ?n(@#dcoZW=q+-VQEgrlO320Db`M2x4@A&d zK<62a_2jF?g^s1m1|G7qe?=x3h@ z9GGrVrQ3f^abA|>*`B~da}g{a+IUmI4avRN=w>}CA*&?6k_#$}6hn<}yME~&c7$LR zl?OFcN1-aV0+ZW{v@z-cjnTCMsvzQkIBF4L>i$!Z-j4U+k%na(-k_NTggKQK=i?57 zha>*xax-wCIU)_if*UGp_|D=}@67}@9X%n(J@K4aIo&(xq=B^?sX0EYb=NvHnOoJu zx*AXTKNkqCDim0yai4l{Y6F(QuHdHmu`4+7VRrp_1=)4fYGYela$ApGI@OJ;3f_hr^qO?5%@lY^Q`)GaFwvAY z7bRfqQ9bp}mYkBM?4*V=W;oSFr!m}8>|{R<$AL{;!2TqTgSF(o@pjwROn1C3-FEv! zFq{_Ft_qVSS=fFYmII&6iRJnpOe+_e>G!@^e*8WI7KNJjrE})f zG}cX$VK7(Bi8nnMHO8=}YFYN-`%-yyE|PJ?w9H|E_nFGU?*uMOsfGes$fzYDLMC$4^8GydwNRnBER0j9(4eg50lJ7!_4~- zR9m=_eX3|CiG-f2*>cjx#crF|#`WP)e132roD)l=499taFD7m9QQU(zpyl>99+7Fc zHAN{Qv-OPjRI9k%A& zqyap{W2J#VlQgLQ0MdX{=pWaKzak>RS2wCE6VQlKRXr!m1a&TTSTUiX&9iu^F#Q&t zn^b_MZmd*5d`5a`J&Y0V>8bukDHe(-0;?hxoTL8W40f;8Va{;(m>ab$yC$?Am}v2W zVftMVydi%@cogbx|GGPDL(L@1QWCPIh=q;W!~(3ek6(Ex z;ljlsxyD@sn`A(QotFc9L>4HbdywVsllLkdD6)hG447h4xgbk2$ak79VC25FXvUC{ zxO-bTWCUZ&kddbvGQz|!7&77v_sfuxsU6E@vD)uhtTy%FV|P5#Muu+1V}ZOk{-y53({!f45XON!qpz&uOgo<1s{ zQZmxiOyqmdiCISEidTI>w?PHovA_EMi&f`6Jugb-yk*5_6yd#jGM{?h`B{3NjAHar zGRx%Wjh=heB|BM1ncQDmdY(B3oueO@7dlXgrV=5RAmy`2p zm`c?X(#s*wZ;Ho9NdhT)6=5o2pIhDA&f*#Ka@LgxDv2oQC z7;95UQj3TqyvJCt=g3&n_G{b5F>P)epGsuOd(B`Qw{_b*Vn%w?<74HHlNx(z z2QTg5KSb&zN_c#!pb=)h+Z-tJUbP)o-Rr2U2_o7?(r~l-P}%_N)RJ2@jj;HSzf<`y zdNrMNOzb|Yu3Sf`;uVKC$UyKQLZ0D@0UUSH;djc*~P4*>PQK}+# zBuapxUo5`ud(=UVu1xRfJx>w==wy76OxOs}{Uw{Ciw}1c+`%o7DQQ4-IOg;MYKy#1 z<;pNE;hv-g9o19ENE&f^zW037f`A}C;Z02Bgw_4Z8Fy|qvw9fu_e?im#!sC z9R0`CY)3!}>bxIbtb6~d^6H_L70uZ}L2fk9qMvBWw7`3^TBf9TzF0Qr&Ba(x4~`s&RFs)m%lYD|&J)ka?1^UO_R_yr{fJTz*Kg|@r}s%ksS z4D@!hS1O~(QrDLX^HZ64+CN1EGP+#qz6))AHy&k8H<*3VR|7(ox($YCJi#Y)b&ZbJ zY<)cRMxaJ;Xv9h|1gEL_kR7^xG{!)q)uhJ-yCM<Y#QCNw~wA|*blD4Ig8%3t3+Yug%3@&4r$EWD8RfbXwii4gh^EKP>_EOmf$`S zZA!-#n2?Bf`1|<+s1`L*wLjZbiXc=q34gmlX+9D`DRSN>EYGudQpt(wMK&t|L zqB54Y!L|!^oJ+f2eYQq*Q+pvx zAj?VEWkyCcc)OxLjz@deMDcxfvA2JEL{6QL^dH$~htO-|rdc0EHzAI42#97d2HD3U;Yiw&nq(Pl9i(~yt#zo z0$rOLut9zC8h4F$NH){KEtyTpBF2`mPGT#qkpc4{=)syAddDZnXKZ?nvruUgZW`AV4mJ2YYTa?4b=ZlDv9kf9?+8sAY1J@rEYs-vMgg zaN#<8?!-lne&Fq4GxX3ec?~{h9*Z(|X!eXMdi)6$`r2OzZ$_Q3VLb4{L4%%~&B{h7 zbUWx1j^5vRaBkcSNl|Y_-@+!CYu8_ZpdjvTMJ+IIe~|X{REVzfi4R+@8b+#N7Eh2E$3rpNBZjY$g?c05a#ZosM{jIrtV%0x}AQ zH$C)}w-;enryU7@$u#!er;tTk1?;=%J?u_Q)p(^5bJ8rTKr#eHsZ98euEGvU3s8>9 zz?(SnrxoVuQS!Xn{aU5WsgqN zIECcXBo7*OJL^fMPZkorE@Va;Y(s4I?&P<3X=DP#Ow<9VzG8O*u`JwO4f1wH>xhJ5 z4rH@#vlRgzw7<6NVds^XeHAyAudc9SxD*y=%nnhNPP_odwS-X^1H*I%^+tO{y`O@K z;iPajE5R%5&cutCNC)jOh+k0wS5q^UB@#~1ach;Z9=HzWTXC)i@k`I&F@IT{1TqFV z&pM6kxZCNXmsax*{fDE5*N?8Ko#WsdPDSRlYjQRuha^ty`PW?~fdy&Hr(I(Zx9K42 zI7_WJ1>6mrkCWhO7ioiWnCx-)#`}1E=N({uQ1Pe{ch`xoB-8S*Ad=|fbejfkc%1u2 zL?mKJTzeJ5hi-gG06RQ#0s9$fr``vSYS&pPIa3vFz?=g}*f^}s^!>V4YnWiNyG2C>Th(fk`|;9Vr=Gvu%#MFhLG3E#FGUx#1D;`p`Dtd3m3lIzje-!7*rIyz#%9Pqpdn8=>8LBp-pu?{r z#hy%L%TaRu_)ICiNrXVgJA*Qxn{JYqf=S-Ah|dkR*II9u;B(vFuK1NHjXUz42ydjJ zaHIiK{2iNPSa%_lF64-?)TCl`?5Q@vJBMSjj+n^k(!m**jVXO^PsjHrh+fdurrJa` zq*%JzN>|%sceNRt4zw;7qU4!?jl2HMujrM^n%O$L>Ku<_^6e<^5^!DTzk?SPXkwUJZbs&qpdZPZMfPY5Sp)TIQ} zc6-FR>S`j9a5h5^Im}nLoFt39M-iCsFC(tbuV_2l;u!fZSP$TL!0yB>Q53#Yz#_Xl z>(||O(*eWV14|(Pbb$OQUaPj%%@Z#Mre5rr^iTSHW20?gz zc7Gald*-V{Na5z-de?IJmz9~nXJuwni=tR~(K6!Z+>^DGt!kZ4Qc3vq;nVrip*_m= z^q2P|2R`F-5)FOZ;qJ7`LW~A5VVgeq|e^t3NRe#R@7H0B9eh?tDw@{`#Tf$y$lqE$cY6_0}T-pF#f^dr<`}OB3 zK?*JIvPuc7@p)3Skz{|ZN5iNqd|-k(;XS0a;GIrv9wgi9z@*Wqdf&IoOCtvz3fg_^wu!of+?7sJL zV!}Po@qsT51fU^Wz4U;U2rtnGR+1hP)m$Hsp z!LSWY6G43(mP7HthB;9eigj`%GFY=wEi2TKL6Q)t-N^*>wxrQh*5c~s|HV8jACHk^P_JK$TOB)Np01e zfRfiBKhUPL9rf`O+(F1(S$|=#v#T;B`9HI|B{HWz>>+Lp^{6Ne(VphvbLWk_iyU@u zZI8M+UI(Md6T66W zf-*sF8ybnU9rUw%ok_h0MNFOspkN*AaeXiB~pDvE;^W+Blgpo)Zj__>B3HX@Kh1FybPW@1;4?$|@$3f3|Bq~emUuK2Ltf9JDMaq16k0RDke|x&%L^+Q}Y4y2A z1a&6YEI21;ILM=)($n1=QFjt)KOts5UD9d+3uv{pfIdA7D2QIr0y^Rw$rxM(PNfC3 zw1EB)7SOA1HAO4+YpV7F6cafcs{krgZ>xrF{Z{x0F~won$9i0*#Vaz~RZ_GkiR+;F zU%7H|lZ=p!?&$ZoaaOz{tI>WL!r)*GPl!6ka-;T6lThOy!w?nWZ@OP;a#JDWSxTE{ zlu3=;#l&=m7>Wa<`35oICsJG!@I%%q3J)25kpG*MIq3hA_?3Zj`A zGLwozqPcs7I$tTRB(e-2QGUPG60q!YCj zy$NXRucL9$n)mlG?2VtM&?CT-<3GEcm3bt3%z$5xrPTvk(nsE-2$rr+E3)K7(_jvH z{nU&j2aUtiBWP!OJiSo>Pa_&4c>C)s6r4rbSuR5BT|)N_<6T6ygza{}7c{_dyA^N$ ztaf-*J2*R?IXw3m|0)%laQ|&Bsfz1;fbC$KC6|NujHy8zW*uN+&d(Gb>pBR9@SUHp z##K)KL5(q#>1>H2p3xjIhrnh@JY`gcBzcVG}dy{AgH#D4dA!3!O z{-lUfX1gHZbSFfVgMm`00)d{7N#RX=1r+{_Dnrzor(fIN5qY1utj#lyxrSqyRsvbj|x=U1L>lzhh&58w)|CyMY{?`O`&WWe_hN&whQ39EV z6Uyv0cJzwuGAnPh=_$ZRSD!wtW*jhwN7oRqou_5FHGa$$uT#g5cuGHjXac2ljkyhjn;E@}Q@Gj)D!OI#|a(yo_` zAg`~!+4NO`Wif&rHBP-70pHWBcbf&&JE+&CdI!ZeOB0p+AXUj#Qtzg+sYoeTN!2?w z&%;_a0UAs7u2k2u|@!^h8P3(xm(+a5MsQhe@Mi{By2*pAb$6eUOS%natx6f7>ir zTI1A5UzAA&?<%uysWC~@v1{;+tqwD?YXY%})hP`DzA}nNM(x=!03+G_^-Ind=KAnk z582+PV@9imV&vf6OKK95IOYPc72YPPpX*%wnmCi(btYsFY@eix6N{&nY>ac!=$hibykE%aM>Y=b8_zZm3fnWiB>_$J#NrGI@x!qh6Fz)8d5h9$35@u zBawEher)FIhYDsSW6FCJQ9qWEwCZn7C*S3}2%!xvof{8&Be?Kk&Ew$RQN4C_Tst~{ zSHC!Ue^jfuB(07aU1}pwCwOZt`HO{d?WusM)Jtae#+JpBzDuzrPJ860u5pDLPsD>d zC&Sdg={mJMxFncI*%Rj-GG*;%8SN-E#Ty-ELEh3ndyJ!1SuTT-B32`#@1v`mUcQpPM7Ao%kSnorSiocsAy{19-sG^@%6iBq@F{5@?3CufAdeP@JvO>OUe=7~6vZQWCk=p&V{;$SGi zBTz4^&OCyBJqd%V@?cXVx5~m)rhxt_{HShl7dAP+$0mHt{=j@Ps&SJZl$#(_#YPHP zd5hvEh{YQr;Bv2^4WP!t7K6xlf?z-y5Tq8d6Er;vY&ILOA|WH{S5&ye(A}R>!$SR> z5Mli!4I`Aq=cH*wCTad8q;qrbP^L}Kywh$asEI6o@)`5CAKucfF!2JbU@VeZ;>qi1S zl;}bQ1Vo~K8YTwwG7wUlv2Plm!T6u_JzGFnkrZb(yP$l0A+_g?yJrnGk~Ey6iC$ex zlE_BBoj!@G@VrloOwhu3ypd4y`xf~;)M-zYe_(2oKh4l-J?U6Sg~R)%Ue@RxOxiW- zJv6BSAQh8n!AvN$oROVNPP=B9)`LS7VK&)I?;lj;$4o$S(4k}KsDhZ#3A zGZwWhlSW-_I3R2@paj-W2Uw>RFNUZ0oy`&@o-Xn9qsG&yHDii(-4xD^T~5BlgcJ*T z5=nfd4^i>aNZl?h3TMX>Ji1rgDETePvPMh=XHTR7E?lT;B=?zHv#@=cpj7~HL}hQ0 z$NHRVVdX`<==&E0o71+-S#g`N!%fDL@?OtJYI=noq+^^FujKVP9$(1|^*p$dgNe4P zd_%2|1cl}BYtGr*rruUzrd(p0ht6ecgvP{t5|uY=6fBu>!qQnYseqQVCa3ym&!cgs z8HVN*;P{MP&6ihD6rjV;#l$es+j;?QyGA|uhU;B-aJH)sx+!B z@DAEx5U-&fyAjy96=!90+r^Q3VA*(d^Fiw?O3^1}GJPQKxkHZwciI6L6Xc=-s3(p% zW9XR(bTq{RvQX1&ss@hQ9uW#+aChnkJq(o@euvphp+FEm9X8_<#axC`2-y zZ=XLfi|aH3S=dkR6*`>J2PAonSDl$P7qi8f_4Q8Gx#YbGV$@hkbquNlmd~tlGj4xH z;hPjPF^|Tml~RCPZ7B-gB&kS^AYrKi+bo8AQA3mY%kcE_d6^D_!~&SQ$8Fh_gpp0H zJV@>ykt?RfU;$fkb!(@p)??8`D%zXTKl^QRXS6oVIk0~6JgPkQyA&bY1CBW#PVMMLdLm>is{3|mj>K(0i(1+YvukFX}h#JiZF}FakJk11HC8+ zPcR_SmR}PU6sh3cLVzW}E+6N|45 z6_SxR>XXj0ke0BdG7<5EK~N9x!a9phXX3xv(QBEi8`cni@f*EpG&k*ZLli8IcXTJt z6gTp_R6?D%SeHg(+VRy!W-r%madMN(8x*vcLs?sb(Y(RaXvTSKlgoFyNO3}%L5Edh zBy2>zW0)mPur=DYZF8n=+qR8q+jjT#v~AnAZQHhY+qd6y&V9aLdq-7eMMgeVS(&jS zR@eoG71VpUWK=ghnTRBzE9OXvstk~@86S;`U2}yG&pVdBPfOWYaOdEBCAaPEFtc}Z zl{#G)Tr9gE5XkZteJ`*3SH~0?;#?rbGiQd`IEOP3Qw>8*FRd9)N}T`I6X#u3JSDk# z?RyQwwEn~S@{YV_2!QgJ&mxloJI+?af(vzMg$l|0CO=>5fIl(WK6=1$Qv-WE)KAj0 z7LyJTT281xX{gh<1kP?W2Qt9qG$k^X~<_`%)5$fO=s1wx`^DsX)L zHdON=JL9qc>kFM(zXns96>x@P6Gdv0KD=l$kzsOFVM3qDl~+^^%&Px&9^Nx@x2awvoVXdVI@qg+jNT z51Hll_Lv^dab@)Xpqv7E5>!kEZ<;z3AwG_Yd?U^z5_BSkB^qosTV46tb$|Wy zrN^{#*g>L36IhHhA`#5Pw(0k4#uGSAGlQ(xBy%0>0k+h_Qek=l)Pswccjz_md zGrvkG=f$IFkCQLJpzyo?k~-wjHR|xuP85wpfXk+o@8k!knA)w}=}BO7`}*SNS*kCf?J5-l{>Dz# zof)p$4JyX02d)d7In-+59uoeL=!HFXjr1glpieNUT0+LV1ZpA{b%r#xI`(qDT@lR& zD4p5WD9REG$cX%zG&RfUL;tI34#xX0ORVu)kMK!qoVR4v`XlgLp8eFhYndT*i)kA2 zDQXQ>58%x)0=)n)>+8kESaN^hi6xJWDJY*5iX1Qd!2jh(ZILLqIoNU1*Wu>q>!5O< zt=?_(;$;15Jjv6vKG!!iXXx{NnE$o6;ALv6s$|`v{_I45-Qo@*nO~2r6R|{@!LnA8 zu+H+?A;)}8G73Tb8Y)W#)q=R-#;sFu@ghBVrDve?JO2%W=$-8wY$`(7y4vuoI$2y$I-dg67GBx|b$-AkX-5p|iJWcs!pkQ3TmjBaO^X+wAl<33CNVAgfpKZgSqA4y4u5A!SzWrB}q9VTToaY$w4s)Y4>DVI-SXHj99@5+eSf$5dtqQ4=1M zy4Fl~nCjs+I6AS^L|CU4@=gDKkQPgTC4Me|)m)pBjA1@FSh`*QlKEiIT2t#xo-nb= z)tR~UncAhVqzG2dAlPVqH&08cc@aX|#=i6Tp|zeM1H_l`#a4hY}sUHFkIc@D$0QPg(M z*ZbH$KHB6^=HUaU{`Y2c=(neM6Og$UaMR(!@!W7J=;7-x_|0`7>AVzBOXA8+d}SAr z#a)czemD?CbajnxgWE!9!PTC1;K`80jj;483YnD)*+DqL%%mrzsDdKK&jK zM$-K_*tk29f6-fQMjO0w&RnQ5-f~g><)(VLyQ3%r)9bw4cpOF^lML8j)6;M$f|e3A z!rgCaRBpwcri`Gw&L6}lb0U#XI?8onnM4VYw^_t&Jq+vQe?inwZs+^ve{j*e%Z0v% zz*E~2XB;|jo#OmgJyPqI_pV%E%q`oY4gLyzf~DQdU$pM&KD&&d8X8zKXA!k?rOL$X z7KPm+$f|Co`#Niy+?vN>Dy_<-S>iW!V8b`lwiX8oe;~PtwFTxjY(K#16gh;}yfz~` zzNK9rMn5}&OKgkwdB11LOPb2c!)_E9SG|0Foo~-?PiINFV@_&x^Ro%?Rx$rBVc}rb zQm@EnyL!Uq4@#fA2!t6aWd#5GrH}CL65T~X>4tv)x_$2^*m1N6*~$@zX;eHVR%B9i zG1btUCBxhgV?ja8ZFJ-;%tY|k_8GohUpx$Rcu|4VDgAv^^rniu2-6RAOcn39 zJLBG@v0vSfxK)?w?0+ogLSyL~ecP~`Ar%oZ*tERdcVD~1HsSc-&51Az?PLvaLN!53 znEvHLWC;HLnQLJY+ZNbd8}aCty!R`$$}yCn-wuU;Tnt>mkc{L6hXhk#cwO~ ztP!qNJBe15w+oP3Tl9%f$SmMu6UKn5}5N))A zb`oN127Z))0)9w9kQSePTrS3S$wdt*0wXzX=ArOju2#opO z3g<`8nYz0;{b$*psRT)kLNxgNp$?m+hFk)_71Lj0cE}S>A}$9&Q4_d_vWfq>qP-j*0S4Vm=!?TpA$@-fgrYk^30 zLKM1Kn&DH}-=co}X+x2;QapuEcQV0FfPpG+yyR$^NW*U6@ zt$jS5Sg50|mz%evcj%-r%iR^xe4Nr)Xf3*S5Ytsb2 zG!-LsI?(7d)Vlv#QXQ&kicxdG`%TVN2^E=HeRJT9A-gu!MQiI?T1oQyMO53ljI_0f zHxS&D*3_JR>pHun?3KU7sXy1_=E_=jxV;wfy&QWQS+`p)cDHM+$K@f+M#I_odz#?+ z1ZCx;Hg@@F!QC`&T z>#z-jnDDeLjzQP1(OBKJ)E3SBk78v?$heRbDvFMCTGR=<;x`4BfDMDkVU??WQcKmE zcsT0KE|;};04q-(Jwozu3bzL*2N66OyR#^o)T*VRN8O4$L2T2jI6j+CCjV1aiG7#K zPX_9)6Rsr4gM5a}#{Bh^1lyFzy38*ij)NhIOi~@=z_+CVT*sGpuF5$QFq4rA?+pZ%cVjU&ckIa-?!sY_P z%RIkc!N-DWl%SGt5N{ueuo1&ybc~BIoRL05Mhp}J%Lyx+i&L;L5vA1KbM$?7xqhQr zn}&LwcHo%VGbjw*@B@uue4~4OPdMk5>Pm3^)^kFNyECEDcBP3gJd+zEYNnls~Uwh>2vG zTh9}LXr>(8HmRR2mpj>V{>gtl?7rC(Zf`Nm#;i{MmOGSz9tN;Z!TlQiH3g`NiG~mQ zX?kEyE7ibrH&_uNj7wv_F|FC4x%rm-=hf%htQD&yzP9h@|K~i7{BZxKvU2)SmS#T7 z#0FH||ER?aP5R?;;7UCOXd5g3?}*2OwzMTF>GBDgJvaMAg)7e$MUkc+1QX?U*E~&5 zTGOm;ef(nM=I;y@*Z&F7;g>a|jh)6CGii%V$xupvR%+<wkTiIk(kSgQZoNU}OAq6obuRDS3UN)#GAJGo$g9UBgPQ zz?|G-FLOf1cH|{31&uwyoNPu@L$bpe9;LRBVrObX<9AEE<*!tm zk`aWMIS7$^b|A-xER{ct0erR1ijdJC8$d8_Y0LU4O;kE zGF}bO!y0mY2D(!~n)hT(0P7z+V}8r3np3jRrB^`!N01ToF&Y(N`GD9qpf`rJ9G-w| z^Ed(5r@`iac9AX8@Dj6bf9s;gvkeER8bd3VTB5DcKMb0FO zr}yiacZ&yGg|h;H?9e4_$fL(9C&L3OO{*-L88JMFXVpEzT2L0-EKH7&^W^0NdTj%f zgH2gq@|}W)@?#o?ybWjcB}{Ko5uJ;uBCyn`YXza6g@m z%&sVl;peFt!-uW0Y+U`EmoVO~dIvsgo%xeg)MMyM7A=&YcOyzKZnN?QU-bRM`FZCj;!Z^Au+hIPT9HY%XJc*Bz-Kg449?EM^r$#gz z&fU@oWmrf4sQcP{M4}!k+{2!E#ke|UE$?o;e?Fbl^e<{}ZP(s%TBZ0hmXT(RX;)_K zf#%;K)??4f$5<=kYzp@dL)`1k`WN|K&%-f)$TU;li+m@*Zm8#C(6>m}*X_E}@&s;u z&-MghWq?$FMn6U_r~f~zXEc|km&I5D^B>pY*VPC;abmibi?6)mXeB)INh1o2U3~Lg zZBN@ksQ_NkW0rYtBJV%NqxOGWZ6XM_)Qp!4ed=PKGeZKkyt^rsU~9<<+v{XY5Xu?^ z0F2OeDJl;2Jo>Zb#Q8p;eG~k~vk&A4;k4U>O6tjBt4A|^(0(ec@^gS*D*d1@? zxrGQvXC78o{D3J%Z?amUf^PWGDBSiuRlYR@#7kjD>wy3qe{<(sKZ<=+y_*k#b55;Ksr)WyT^C z_aYVraC2k1KZH6TR&TgaS)R`bBKWS*RH18DbzSS*VN$h?3{XML=Sn@NKg*R`E-Mrh zO^Po0p=-|<3xyCHL>Yf`1Tw6jyfBl*dXWdv#Q4QF*bXN<-@>U1gfmH~VP{wF7trxaB zT0llMa&>e!qJ$KNQ#9lnoRiIdtb~(beNyt2Zd zXM$uRnYbBFbqsVQnYeQk({|r@VwOuIR3bb)iC8TZ0HucDCmQfYRqsZ9)*)k@Px~k* zOu{yLC|cNQrYla|+2q?n7)vPiNvaiZw6oFjC*n}xy~|33v}|V(z4gR>FPrpj+Z;`H zi_heK-Rf`9z1(}LQz;xa-d8%=Ul#T^o^m%AVUks*L^E?^)4%^|T$QaRTf0fXd0p<8 zjZRFRWLEM_IqN67q)-pUf#2&|WoSdEbhuu#aL#e|# zH^Mhn#?&Z@#KM!rVnQwHceyO$Eqnfg)g{rV=CiJc6?dU%4kJ ztSaM5zqp6@Y1yKp87N3bzIh0~6XesqwiWbH9+JR-l3eeYg#9DyOoZiaPZ_z2Eum&X zLA%IWS`Jwq;E-s6dAW~@*ZUMAfyc!S(*y-PX0+eBj^H&r46lYSfjfon<}xhU3(-@W zaF=a0IyAd?a6QQ4eCIZpHr5{7=Q$ zAiD8b!&PYInP!2|Zx1qTpXf2LwLr9AYpw}L&|WkL8PqlOB((?KyJma^-f?@teuixu zjt&w3br7!Gq=TT2%QGc`rQKpZnYrG3R^N#GKY-0ssL^d?+hJnurJ^)fl&z;Ryl1kq@QB}pxd zcVU&;2LHYeyW^?>AX7k2v~2q^L{8lLXt{Vc7qv<{^)SLj=2Qsda#OtYk06%~pGp=v zf}UxIzi(5<-CdhdK|`Y%L-g8=7%srM2r!_Ne7EmTJ`tV6*GlfkLr2~)Kf#+fBCT8>px^Xd7W!u zpkAeEO5SAdIGYDngGq#zJ*+eLkR0a~V)B>C*MKIf+{=~VN6DAPz;pjeUvAfyCOu(l znND-h#q~%H7-^YWQgK}$;?fMRIpYK?pjb^O{f$Bx_slDtoOBeN0BMc6l|9#>GkDq6 zPud%h&#x}ou3Se5&mqEZIP{k5Z0HR40)HG$KF=Kz@(n+!sPm5l`mC45v@BQA1RKV9 zT4Bue(4NMyh-cx#4TrUEHfR`f8l_8yA)-0_K8OiIq&Xz?HXtSpBGUfG@b*kRwQS0t z&>WpnIa5UfNNW0{6lspe*hcAb zgfK{GUS>QDc1zM69%KcEcw+#jn16n<6jHdf%YqzyB>8Azclr7sGX6V7orAFe6A{Y; zNvtFP^ivJwA?eI97!#YX9h2zL$x^2pHQ)G!03gJyM$>U2@DF-?cIcYxIe#)1yA}+1 z#c9mUElZofTX7nHr|7v(U9 z_A>BYhc})clr5K+Bf+;t0zE>jPQ9C&1owndiF_YRh;b(GI0Tr5TS7Dbh_*hpSM zIB<JRt=w&Va8hxhMXbbBX}xl6-MsH0;I;BUxZVC}Pnmo9tKKI&^?) zGmkEfmi_snj+QwH4(PJW`qE-DCT^xbMTA9Sb@fH;8KtE8L_5L-SLKC5ylGTs-C^5c z`?M}$K2V$t8iaAk-AMKL6EF$eD?nt?O&m$t#|0A8-#Ssu!50!}ZF4g|Z*hew z9|wddsW7CF<~40vw)~q3K)Ib+mz^5LPZYXgyH3yKLW9!v;GUA^NN{Sh?1I1-3&Vu5 ze^*$96UzXu$~sdNFH`16(2hV0yJy=EBZNOfyX-QLbMh);*ddqVk`?wTF=tZ8%ck5h zjbPD0Uc`woe<~q4=C`?oz|G|lJB$ixaTpPF#U)0>w&5an{S)Sh_(G%*09JuTZC&9~aC*m|T3 zu8CQf!{D{`S_LO((CGQH$D zIDcyCFUy0HK0@I6)U&(J2Sv`^y{FEy3QSMXP9{qtyxASi!{CWI_O+euW<+sNHm-b4 znQuXRdz;mk({i$}Wi_1wD~cCMrfgxszKE>--tg?vZr3Uy_@^C7y63!~1IC4YHZmGk zC>7|fzH<%nr-kN$Iof72d-q+99bouM6DmSdCeZ#edN(e?_YxA7`1e%j+;)6@FF06% zXdR#sjDO5DF{=$EaeJX+%@v~2Ra*ts@+y{zf63sLc~?TcDfX-Qi|nZ%I&!#g%oLMH znUZ1BQeksU;K8o*i~Uv`AAH4EUmaSBugWs9w?#D>;>{g!GUB#BA92JN4lx&HP)(Jy z3Z+C!?Wg|nm*|7H?Va0!30aWC{{%=l4pmu~(rx>1I{G!0e^{9b&e?Ptfrhkws_MOH zNX26(L*a1FIt!a?)icmLNB_}GTD9|^(COtrrN8-;s}svT(IV4vq_B)vB^Gy!P{rT) zA?sS7dM3sgoyFrQi*3=mQ1wm6%DfVw`)3o6G`9&l3r$6SU2-b`Aeuq3fb3(QC_p_b zfLtlvt26tyV@x1ox*U+Up*bC*QWQ2MPy6DSkgKuY=T@WM*+D{?pi)@150n3JD>l21 z!5A#639jrFYViz-+$~1a86X{DFaqAzw|vfr9ScR^$T1hPC|nYsBR?UBMK1?D$imny z(4jFy`4P4xS)TUzYB|ACR~`TK(co-_8-T<`cuEs?qE6}8;1Ct{p(|d>?LQFgw}eJI zKIp9BP2L4c+ahr!$Wxh$Z$iq{Si3@z7vvzw1RH^%f9eN<$I37fY?%U`Ok9Q(3FuYt> zbgiS;hqD8nDP|!7`p&0{*h@N>1R_F65edLE-cg=R+*r=xzZP)i2lO~jL-bgR{t$DD zx>g-=n4wQBaC$L7o7L8o)-42qr4b5oYMS))CPQ0{8EExARkVn4RQiEJ%VsTUDTQS} zQ2N>3uziW!jGtubA8iKQzd@LAczm40W=?J4`wV?);_3pfo6Iji*=|Fxt-)|_&@Yvx zE|l#|Iwi<<$WnVhoZ?en`S;nN@-XyB-r)cEXeikBAo?>X-tN_q&lL5$No}w0 z|HjsT+p==vqBY7032G=gw7p-Bv8%gr+fkM+g>Pv4$NZ=yiQouh;sMy#RzNzGk!^uV zEnWe>>|#GS#m{`r%{W(kJ=xFce|;RM{+3qOiR4)Y*((;V@^wDk+5n95w%?1eJAa0w zv6HqT_v<8%(4avDXK|qUO&hQ;aSnB^K8h3N=}_091!K5mEST_5=u%V6NyuZz78l5vIf;aTv(u{v)?t_lqB%OHo*>FH>lknOikm7 zyJLzg->qs*a9YT6@8WalE7r2&*Bnl?L|?y0#XlZUCRr9*PNjd&fHG&y20Lz>HT*W+s*x{T{||*$U;_8*iFxLvj+8$0vF?i9z8jF zjT`vFQ^_ZssbvBMXX<;PmH!Zg#lo2 zId#`2bA$?uIF%G8TxH9Gx%01{9e;t3;!kSRcS_*Ve#m%MYNpsU;1gEheJC;u+V%C( z`0=?fZufx^_R=i#J?QeS0Yk8gMx4pP9cpDKawWtdMLNQdWg1FcM3oK|-cE}PC&*;P z=K;bVKkHvJ4WB^^qz*;afnF1^+5X-OBT=CUvZsZiRm=w0Nl(g)sj#~|1WEeNu4^PV zy6#7NY8HUt=jCISr#9o9j+0#{NMKQ*d&{y}T-MF&&_zD+F}%Wi)FzWM2r>*sIf!yl z0T>`-Mk21*{lqR<5zZ<)>ZxVbP-^0&eEmL8VqG;9dh{(VOIdwjxS%ZIex0$;c>RDr zbf-$-HvIkpv~~EdZb%CH7b?ktESN+C18$k<5!5qg=3t#RrAG)@7c8ByYj?P0DBUIU zNBuWhet?Sf*?!fkdlfw9Jgnh zZCTwcc9J&aVeov9YL5Ir;2GwuMbP`TMbGs$79ia62gFPG58^f#1<;d5%T#PF)=Ic# zyQf}Zg4JT4yRpwaHT(1(hf?UsSV>&dVhPC;A^y7}+yHH8Ys40IAmrXjAQ;8|BeEi4 zPBPQ)Ki!Ji>#;!hz{atD{ zKT^<;P4p>ZA?x?3aDZJHs2DtdO}I!MX$PV>5u|7?(}9L9pv)-U5v{L;(?Cxom*qGZ zPSycJcPP%7_<(I0+ZSR*@3IY!Qj!!$P!$mTkRRDbm(tWDWX#upzkPc^C?_%rpx zAWmA=oW972UR5vXu#`-4X#Sqilp0Q5HaC2wx!h2_{G=lJ6i5Ogxs=P^SLJIEc}DHR zA*Cl@TYLRaXi`$)u8wxpKUOPi^#tCM`<1wg@TKr#X*hqyVr0@5bM~lXLF(u7EdcU)7#rPk(I-LE^xKxFScFDoL(-(D2cI)dx9ZaLoz-YCt7 zM7OzX#V1#$pPrBqOhp?vokomMbC#sF(vKU7ZUT3cK8%%PerG9E*ujcAOT|G(&7h~na|={ zyD;%C;twwj>hvzha3FR!f#^F#F}n`CH9^e(Xunn86cbCYa3$X435Sh$^B>y}dMeMn zWlq!T3g-z3;m(TomMj9PYr0eO6fCBv>j{Sw>}pTgRq?wLYOQBmAJvn%=jx5>tw)n2 zMSZwNJM_-|^Ywi`V#cTp=<@4{?3TKqCn~*lg(;MKP9ZgyRcQw@0 znjOpy93%Ui4M;yz#+EkaF+>(9khh*8@I_Y_q;wQY7$QraUZkxNp889Nj(NDCXz+-V z&U|P$Y})1@fSk8O5fr3R?3=b{zUdf?*e?ui7~U17!gJ6>6}U(CBS=uk4V5s{-?=bC z+5aBYk2?lUDhAo@B?BfQZ!h7tq|PK16+NE1)ao&tX~$!&sq~>FVI2K1%!$EgA9fQ3 zt$tYqb`Eemz=+vMtb^F4zjTe7KR3b|Eknfnjj9lGX@=Rl!+k8j??smwz=x%74aZ~^ zzsP<`vglDh2V$nkhyLl=Zj6rEDZK&1Y>tP`S^;#Jrm)OQR};m{xyXln z3kSA;=4>&W1Rh_k&5VovjThni;@X5I8H529z_CTB+QjnumpUmLvk)sUQPXUv`vA_XpL^OQJF8p+sCf^ z{iz0|8F?K4)G+bV{Hg0=d>?cWDg0Z`y@@NUyw4N z5EIZH|HJ)C)4j1F=27H^H>pj%$S7z>(hRAwQTpk_!va-}tMkUKdEEv+jNHr=T! zNSl&{{|ejKSt2Yc*3BSg^yhIg#X=A5*_X=gk$HVo{*O_fkPGHf^S4n6pb_+Na#)#z zPq@hc4X-?y+-Rg)F&V9ooHHDdSEhz%ra-aKnEv@Ohh(}_bOL7j0U7Q$j2<7=E(Iv1 z2@S#WSlwj*Zg8LEbdVbE52?g}R=<{&eSZCd{^+W{oI`&cmmh&z)M8mjsvZ#gSn?t_ zD$k5Dfh6#)z=`(_`4>f#_#U_khbDkw7mTtgEC4lA0O1#vO2hLngyI^RJp7A9jYF9f z5VGdeEt$NRY_+t?n8%U{2cbBD`QI^?0{H`E)Dov{^?@ox%z;O3qD0hVBN1}hZ)S?H zpkc{a#~UUhj$yD$RlUZMb}jXrxkk<`Uvwsch@4umcg+%S8F>L7+s9&f!d^evUgpj~ zjH(OVSZ3+;fEC)!05%KJ!EB_hcxyl&urO#S#0-ZFc>)m@j=g8hkM#W*!|zL9NJ1+5 zxHzsaaT7;N9SQ+SNcCyv0He$WGjvHHO#l%J@n=z-3r;?HGbm3mJJ)U~54cRtAO!69 zIvhNiKt(!QVjl2Gb1i6%X=Du@i+Q{_k1*)yyF2TTziDtK!S(roKqdA|wBRnfvR)w| z`M@3wVQv;fc9T*Xajw)V-asByGb@^u#URZoI5Y)K`Dct*7jl_Qhc)YY8qKBzov#VBR~sODP1(^!4}0vY^eakh23l-X|Fo$rrKJq zTLIL~t)=wX;W@7)5hgD@FPz#EU@shVQ27n}L<&sh^6L5$V1@^Mk+VzUDWt_>F;;hH zG%Oqj7OFc`5?w709z!{Ks!JS&KkbwKsOg1T0qnru+)pg-g9`>MA%PiPzIf3%7>dxP z=w=KI)9&{lLdb9z3f7BQPoCkhPh(J|=es9Z!Q;!s)?8+8ft1da{=AJl$`u6`S7r^; z(B;Q!f%%T3fkulcBsu;uvT$If5QUeQmsvj>q^x3dwaBKQy9B52j9 ztwmTb_3J}z`iIb4DHCdo@_|g<3qfMDae2Iwy)vd7jhhg#O>VW*m zK3b86&};kC=OXn{B)-^h#9m#E9R^Rz>!zT=<%?z*;ib4*II}i)K_1f*z>FCx_+1P)kBN$TXmQNx8=5RgnjN5-B3Yp{T_!> zTM?j)5he@rS@5ZjNTwBdmTG3BBYR?Ym!T`&KC|r&R=mCg#7%ecX25Iy>t#Pk>GId> z<^7T3M&@-hG*hiqXz-{^T|tr12kWh_CAI5-&AruOC{$1i_5(!!2bO zRkC;4%6~4`Ei`}bh~w69`nC}zI6S-TDdqe4?4M7A$T~KH(G?>J`x&s!QO;n z5(v^k%8h#k7zjEN1erkDjx&L)D6&E3m_mPCYXjOFrVC&lAZs&=`(Ti>Vgqk~3)QH~ z#I5HMiANSRmVz{?=4#6CSP>uyDw(6Y2W?JA^mMcK0v;<0ScCFbGo6C#u(GT$reqp& z$(e0my~F=Dz!RAp3#2Z z=WA-nWj5S5{~t=H3dW}qfdk0PrgOr(uE>zTIgd|OYx$eevpzVRGuPDR2w998t@6pq zS3=6N&*C##L%<5MgkaJoic=XVGsRap<)TIR(ENksyo0yUs%0T_3#~(x_RRP*!yqC^ z>T2Q`M5q$B)bEg+3LmRs547JEUx^Z_8BS8E^&PU<_rRP(7XF&va>(F*Ta#1ZnRcGv z?}WU-r%@5-W@cU~c(|4g%KfEnkVkA3<;b-6@ioh2nV@RZOe@x5<%p3}Xnz;V&SHX}&yE zJQ)~zJuBnjN4*+Aby(ZF@$CkaZX+fCU7PZ~_YbxZoQ1FWq48tvRxmwuLf3Xn) zxIaBjv*8tzz$jDqWn+}t3`vHEn71IJ8|t28e`~`9#bPhdCYUSnLIM`iIn;1;0Ma9= z%)iEO7h5dsfX%^P_4b-}C0!8c#oN^r;R)z;jLAcwOqZ!~TnJ%w{r2_SaoUgNC&=-$ z3P&3==iM6F4+G-UQTJZa*a-2P+KOwst4x^M(Lx z%r@i_x;8FA6HBOkkl?iTmNa+^s3p*z`izeck3&X>v_LN*;|dEvm-gU+ru(PzM%3HRBND0*h-{yNxuWTR)aGTq@q z+}65{j&#v3?eJ@x65R>D;|h7+p!GnBqLB5#pII6M%t=ZB6KVM~9lI=Xt75 z%T7*|87b6X8FgQrZ)n&zsW;_5m)*RA>zqw=HayH`s8!0hH;Qe<8vcmBlXH8tQjXp- zFIsuJ)r3wYI$T)H?uclSkd1c0(9SQvT`U3?SAr#NDqRa31~1Lj+u=4J zeR7^#C~8(5t?*vs6Ibh5>CZD$LW}i4)ymZVh&5fy_F+1{i^)>Z7KOjjUZEW2KRrng zs0?UI7%22g_cw*zP}+#D12~!f9Vx;vZ{x}v#t#ICMC_^Cdvq{Y{XLtE!wHi(=%jj5E%1@0 z#QyW67!2`dd%}~uQB8={w)EoMx~3{&~dde=Te-};IvZ~x})-YH5hnPFa|60{KooBWam-+ zpU{T}NjdF%WOTWTs7|_90%J`91Gr78uw73UDcSRqwfH2X%H%2 zD9ET5Gh7g3E;dI*7Q4N9zwMbUM6rLG)K>Q(nUX;eFYEb^ex`8 zwuxMp5J4)VJIJorBI7-W{9a+F@R;?mMQG1I5^`w8Iu}UJ5BI_USCN2O7r|KiaKrLq`4pc<<34ii0X!(44lQ4BwY@5@^PMC+a3apNX3h2GpN~NiQtreFf=qbii9>{WBwf;=FUf~X1 zcp=GpT33ux^*9}}zNtoeW9eY_aAOYT{IucrgzLtH+lw`a0ceWv;rp$hM&b7(;)mB2 zFy|`Kl8FwVMIBPpcFbGQTs57k!g_*i6}Z7GmvdqirB z?&YdLHm|XDCg<=mG}&_w8=D*#n`Gru{YY`w&eq6<*eBn}Do>x-)1mPKL{F&q9M4|w zt|%$wpKMX#;v3Il+;p5&N_|Gk*f7+qKQ^ykpXd#3(Uh_qgn`5;j!DAirRLx7fHQSO zxPNt?hc`}e^IQa+&k$#2>hpP#kOIFYe{N4yb+i_wj>7RJa9kwf?p5wo>I66{b@T9i zP#s$}Zxy&5_DeI~T?Sag6#WJqjdn~OUKdR`zWPg8YpPnEo)_~y(&#E?$SF&E@%;Gm}lNLyF*`p>}I?M52*39&8l&n5H~j^hiUNHhZXqV+Pn%cT|Xdn zWGQzx#>X6MC|h~RG;v#)OaR2e9eL5j$zMyqN>{y7`9YN^2U7c#ipsgl?4wNcIMaNC z!VZ09p}|~H-N%LVjkQkm2jpjtlDnn&vNE6P(^PLcguW9_B|3Jmjf zj%Y+fzi~pA@d|3yjBM7Z(B?O29MRY!6<167VdM-qCZqah=J=G^U_xl!eu^DfMD`!! z6)3omJ>rH45lxYZ8%|(_RB?(KUd@CEjgJ4w8(1M%|0@SR@BhdnSRq+&1p>(dM4(C8 z8QlsRml1d&&%;!mImT$qUpnqR_Wg;LP|g5C%^4wO^}Z!eiZD96M)q(=Yh^cZ zbz3^`L4BIpPnTHh4a{Lrn_6B`d8upOaTR?EIa!>GC(G-E@Iw!^5qJ>7ey+!}IocO~ zY-kkgBw>9DxmlcOr^|0S@DmHU_`*RyXLDD6d*?+`pf~W*II?2>YGe+B=~C3Fx1y@0 zlMi!+!(UGm4%^oFZpgcZ$85uaBma@Z|C0?pw44`a^D~^x=PuCg6;R_gXCvZM%i}+!SZy z>7!#Ky)HbsrhS}QP@X9J$!va3zUAJ6hhqxD0HEKd#nKZ?%7Vn=Twd;q+D$m7+9PVfiztv-#RTMsi!#us0@`h_=AdwzGy| zbTxdL2^;3q{*0NHv(=9^W}h>mM;3FmKgLYuiT3Dw@fR)sKbGI(i_ zkKuEpv8k8NO?bYz!&tufIgb0pEnfjwie>aVL_{p)AzmR5!TJA_(F>X9FguU`2IJo) zBv=N{C|t#mUJ`_3cYce&_N#ld{5LTFdkew;nb!Zi14+&Ml9JYWG(Q0{qqiw4wFBp8H#3b^$Z!T9AxsCEmS(tjpl%-#CWze@AWeVwK%a)TL@(D^k%?;g|a!t@?pd; zdH7eEvlYYXTz@hMyx5|nvb+k9zwlgh&O?e4*|K4;JPTEosF~IK>uVIvb`BZZH@6NL zH?G{GD+^DXS9j?>c~)I^?c>W+-D~a0617Fo_W!j@AQ-e9{Osbw7gudQSFE|m-`?z) z5j-Z$$<6V&tC3(*BYg6nKJyRl--tCd``#qfg8V?23bl}Fd2T5AZZ{D+v=G{8W%%Ut z@xAOoDQGOj*i^VFfBpodY6qgojqit5lsp0b~wW z4j@}^#fDaGz@@e5cGh3o17GFNo zc`$4oJ2dMWLOpf4v3iG&LVQV&6qtx8`qM88{kg{Sg^u~*HBBruvtFu5q1xRFDtbpx zLK`7rnD8Fvalo!JK}h=2CM8l>oBOVFN;oTMTh)$abl?|^(62JiheZL~T|2>6<@^`# zE<+W&uHnK2@A%fo1GKh|%ZP7;E@&K_sCF+YvdUNr6HMMX2ZnLH>RnO!RBC*KjsWPd z%;%=7fxB}p0hR15PgqApDhdv2`ry^NdB!Tg)*#mt7+i2N!UQEJe`sg=M!VXpcjb`-NIJYz}%yauk!7RduMF%$h@53UuHzZ@`ETFz)VmHCt zUlU^l`)iWbm9hFZV)|pc*+RPqj8*oB(W6>-o(o7rZ(?&(K7H#BB<|LBHoEO_0l$a% zW(4g(fCy7V-zf5ho{0==j~B*GYCaq zo><|S+4(+E^Wz6h#5k!x%uUJTXB&ADXL-!}t1acR_Bl=~OHG1of#Dg3o0s`i1WJ70 z<^r*9c6(6HdJ?zqeL}i6qJ!M_U=VW4RH-GNjh$xwIWpffVtK92{2_f=eLOfDIIxdp z8?gdo^EVQozcD_4{wj`U-G68qZ|Yw3>s1Q2QEO!P6I);2QINDyZ1DwZZbh{kBR?fV z_!1{=apVhEs}+15KMt1)POhS&kl`#It!1;8!q#Oz^i0g-aU2&Jfs&{=2PuL~oD@Y# zuK$4pCmLye`Gg- zTb(aBX#SyR=n1$A#vXjL>VP$tJL5nVn1)9x;76=)j1Aul{o(I>ZkXaS@}1biYnU_I(mD^Yxtbq(UzGjn7;Bmf8oB#;wASpUnZ!n$O}e16+ZuPoibTK10?l9bR+fH9mR! z*IGoAI-;g1mhe0kSG|VO)lKCP-x|{=N><*gl+_iEI>GN_tm3)Km$nKEWc@j(ob0u5 zing4b8eq%9jcXI|DkoBF$F*M$e4ncs~wh%z>q}p>X+Gs?TJ0`=ky?`c6-g~+zT#g zU;P!?T7c0ufW~lR2%3O7$91DcvWz)2%K^H?IvqFj# z|Ep?~+=!&b%wSQ2)&~pyGm+E5q9*+&C>8ktCthZ|7a{VDyE{-Y9T|s+Lfy$fh{7S; zu7lmcG0Sjs^Y3R!oAj9X$OE_ooZ+u(XI}?%w)uEmD1*jFO=_a=Tm+zgYX1ePbDHi~ z{J4(3a+%vPh-<|@u{38w`358nXyuPf>EfBkEmLn?B-(v|AcTbWit$*T)>EFtFN zbdwQ;1po6q`{eLVb!n}vF5{Tj&I${AGRR|k*F=%&ClulA*TF7r-@idlIafNsI+c}; z3LMi@zvZ^5>A#^ftw}sL8%u`g^i0`asj~JCI+c0Ce1oLhq-V07db{82^E1f*d-BjR zVlifDNDan$(Yk>-&=ArZ-OjWe`eA$%Wl~Za357`|ZWe%Z1_HTWtm2^#ab2A;1X| zZ7x%Sk}vjozxID*S9g43(dOZ4FH?VdrhPcM;?Tbf@JnlO$p?|8u5PN2yl)4+|Gj z(FcRjUbn+vUq5ene$TcvL4Vp1_&ku$)%we!pXK8m33GqX^Vxl8AGm?zV4JxNRLpkb zu(Z5ZvaIB{guh(bHos;l`c||4ZW(hQ-s`~DArWdBX|rt5mrbpPa?QtnNty;My|WyQwDrrAp9 z+I(XL+iQ1S_8&X3Lo4C!&ygGz-TLHowd1lpN4&gj|f7P>RZWUF0}Wruf3!<1yV)g)#LY4;XC&= zRXOAX&q$9XWo1_p^i-rZ=bh6Y{n<>a>=VVmM+xet-x8DE1z?V8PjzR3!lU|Tn>Yql zT8Rgt!C6WdM;M=uVa9cwjEe=voqy1)Z5B_+JR@i(S&*^%9Fo+4{f--7)or+OUa+GlAuRNtu#-xl>>9p3Ox}Xx{AdT3Po^z*t zv$W=81nqqJmAtC1u@Z6afnD&YQl%1Uc8RRtRxq2$zK8cYdVXmRxvacV*VFXi*F3_V zeMseH{m9Yn>Vv7j8hoOY`P~q4iQ^*qD9jP0;jQ=s={^)GmVSflhVgR7V>cNo2Ujv+ zPCHn)J#*iOUvT<27YzqjRpBvElE3X^oIk}0vv#cW_ZP~c!c)n!xnazGxJ2TZU|nXc ziIkRLF{*859*>(u|C{AOL$q~I&akq5@ZhhGw2peGY94YI2fY7Pp%!yJz>Nlhnc5Uj7Z(c|+@I(ppcl+0mcb2%${6e!G(zRZm-u%wx-}uh-ZID}f06SZ< z1a>OT;^GhN+q`6IHfZ znex)6GOe5XAS?!je*A>bh0wr)b1Frm-=+Z3M!5p+l)KGix=_X(tlEpZYbnhf<#?d! z7rtHJ#qJLNV^{Hm!>h9Ap>q-xL*n_d@Gj!{)jxt2xHhcwdgfK> zwv8#HTZn-rO(u|cajxK1D~2COrD>q|mV*>vG=0BmX_V;?ZvQG2%n(*+gx`zsJ*D&K zS;1l^TO{uMxyb8rc0f4WM9nqVsj|k5_eudTpdYyVb@(iG*)o{5djoWATRF6vD&pP1 z-I0XO+8eXpi9?&l0qpwQ$LYU8$M(TcQLy*WW|cg7#0dL71UT89bHpCH4*&=4$PjK(m9 zPO+fnQ(q9y+5dU|p8+SG;oRKkzvFl#=%CYGN>j!7w#vYBquE^z-|=WAadpW*wddjE zQh&*LVMr1Q3NaipHInWPKK8>NK?M}1W2MJT43Yy{5e`bZ&uo1Cnz{xV_c2CfuC}R$ zexL|-gFmg&W1yJ1V0!oL-Bukzq}M#?iPgSq%K>*rg&fgi9&a5*-D?XxvJ#b# z*ba>o1Q3m8-5~sy5w|lz?#KQ44V~{nn0SA-4*~&Xv#jeH8WyI~`CV^y zcg1DY@qXtY187!(*%u*|hF^~o$@Ivgu^%wCnJB}ftQ=rHoqE+ny3hik?7fQVwxumm zu5WFZ@YWZ5nTr-qv(mU2QvDqp_nB^EQJ|2x>i9uSKsOO zJnIj&9i}6Icf`R}xy+=ZPs-;PFI6i%&A*1NIo+ihWF`cU>N}&d>Gg#L6%q3A(?+KF zm*;^?(m1^LGXqD;3p$r}-&+Np(TX^Aj_f<5IxDf30qhm%9gd{^;E`;s3Tn{Ig1)1@ z5dUi`kLMS5T_ro9eAu!1ksze4FMCdGkv;u^v*9#MBiH`vdR(d7NDXJTDZCob?3dMm znX^-bo$|^86IHa*4PhAn&clf=76&b3CWl#?#)|u$gZUL4q%*sZvGr%C<7*{uv*qi# znk~)6VuYFc-#~vLNvDeobNtjg<$}zr(N1E$;M(uULU8%dhg^4|&u>E_TQ2)};9{Tu z?2oP9_cJA|R46c}M-${0JQR;>YjkyPop=lb`X|pF0j;(d6A_A#q;jqk?_hAildJQc zrFP3Fz3Fyto)Zpy?C{5q&j{sdceebRb*}+LFJzZxE03Yn`w#d(qQ)<6e;Jy)@TZLl zbC#Ln7{pcatxX10o+j|VJ;ype*T1h}a=qP-^IeB#Nuu)E-B=f`dVN~qqpea-OSLxo z2(>uvcI(&2_0V1RYo zgSw#l$h01{@#g16=9DlN1FiX&5vMFJi`Q+?T0ri`Q!UDLjv;0aZ}-nbhtm1a8H?m);df+FG{F6eb?u9t~N4f+Ov3$O8MIS&n!8?rXE=G}s zljo8rV}_5(wgUVGSEI<4u>-Vb?rCn5`1@dP$%*vuJ27?$kA=NOe0&oiac+$bjN22< zOCUgn^(EiLWY*i|wVg{xS-HFPA?DDa5Thnw@SK_5$pM9*(7L`8II%*tKN64yoN#!n z225WAMBcB-q1vGbiQJcpMB35|us_u z(R^ZLZn{%d`ZZ14GnPZ^uqaX!zDF;#;r?o5=%!99Avv%KKOOi#1An3SD!n>iJ-4=W zUQz|#_^8OQ@V&VDBbo*v;sHaSmX`QZoLa6duYJb9PEjbbIiz`DHK7v@37%u7!ITdv z?TF-job|Cw0FiRp@{`vcn{Ckd?#nj&&>4|s`zHvTfrrD20_^Qa^wr;2tr4}PNSL>l z$D8Z)rWMB>ctIbJ#65wN?i-XARY-Z5~;%%Y`3n`?d3^=DxFtKAZ_xxlU-`bV2 zZv5(2kwaHe&~{l2C=l1-d3Q+6E=GiA+WMf^z5{*-XTRM~dUwn-(Wvf!-&UmXfKdvBcMC8(e)oXiX1o#TG$DIF%cl24e^A5GiXr(5Io z<#{BQQsH6G^p3CK50b;qZNFR(sLU6BWx? zkYbuZ8b(oGd^=@`eE8 z3mzgHh6P2I+9cHiQIq$l(%zjb28ihh4-XL#5-g5hWvYs*XGX$|j#$c~Wn&uMuNV^~ zn;>9nG%RuB(`<)7QC@7^`FdEaOa#+DE+1;CiVQ}D58&crL(U34r^l*Vs#l$ssyC&! zarHdvD50(Uit1Oi*?fG(Zi}p+7CFh6S#sh-mvVIgVy~gNho?cszHcXw z3l*RC-LAbJ$>3*gac=mF%RXhPe$?ywVz);%irV_IM%sP1lee!0#$M8#l3T#GQm ze&a+WsXG&`T8(+tYr1m+L-QjyX?0cgX(^! zoQ6zE3%;sV$+TQ?x=gKoTU0O+H`f;QS%%y%8Tq(lGIP zDt#}DLIxCQ>*U>08mQ%FgL68{WkXRC2x4lwfJz+qpQe{?(7mI0_Q#}Jl50peBM=ad zQvX*0m3WziS5T}NCo&=}o=*w>Ea|#v3BGogcBiLaqQL*_O)=PAd2G~4ny4QbgH7R6 zhzf*%cc)rn{$-{aW!=L-MY(iW43%!i2DC^Vr^u9cFJzAv)!sIrG4}>T&MF5xIiAa? zQkjFSrSP1Domo^Y=SzM*;{7SafNr$8mDvRk2eQM}Un3K8qPH*7g)AO^8=>Vh-y8X+ z`DigZ^b-b;FCSApHPB&Bs^O|ZBa7DiT-!Wqz0PvuK9l9y;?6GK5JRaRhpW-SV#96G z1F!_C9r;Zu^Vv!IdPu(Anw_f?${9{&G7rvcv+l;m_|34KhBcf+r~EeB$aGue!eTVP zd);2-(yqW}Zd19_Ps>RUiksz0^J9Yu9|vbHdHCI}Rg86=>jS~<6e46_BHMlMs(WY} z&kuULz8FZM7&d52vmO?s>i9Z&!1gUuJMfLZqpFC4FBR z2_%}J(^@4_bA=2O74LO$?u$?`g31n#9cGn1)fm}j{dp|>_85_mdiZf&LNoux&QI%* z|JPpP>muk-( zn;{>YZNVzX->g281I#yrzU3Ids))f9s$OEYw2|}B%=QS0zysL1f+u9AN&HTNYAt1Y z(9|;wUGfgJp|g_BporH#d9lv<6RYW(|Eeol9?*zWu`@q{)Xb};D#pE9H508JmV8_{ z9QxEU%m0*TsbCC8u8=oj?Fi{6tn9d&NqqQdSI zD!ieNW(7*20l*pnjEM0!tr%B(CS|;f>19_vy>gSRCQi)UnfWXVA=#?hP0tFuEfx5^ zR(QGQ!qr1q)G#g)7C&AAGx0P9z)A0>JU8oS;FSpiFR*EQ?kTP>vqkgkdA>^AYsc)4 z@qawjIh8mt&1++VGcQa{ssE(SOZs-(Na~ zI`&6mw^I-=gFjxnEBut+4fVJ<5cx@~J~KISsTo8_LtZ{ZXBIY#RFo#}~WnR+8rlE=H3EO(}~i&+O7 z%q4n^ILH%6u&8M-2aLG#NwEi!65mM7R62y8H~xfi+KbHR^7Pre>+ZCu=uklvRI}G9 z8KGB5224jr(Va|3#)VxuQXNnCb+z=4N}~z#qd}#mxy)nF zdu-_$X$me2`Joaz40cu9iPDbhMJYgrtKBH40as4^PPj4#vJ^cbdn`D=jpWZYti@A7 zgny%VGlEE@Gf#z4EuYc_oe-AJmpHyeeWT+ZAHc;^pzm~sLM-=S<(8je>X`mErGH&S z7-qTwtXBu1V!;@6Y|xNGce6x`+O@4deC zOl=@Rfl#c0R_wqy(UbykX6TMP2%S+*Oe*BcROn94BJw5`_d%-K^sFKXKC17wA9BXN?aG}hzWE2B1;A7! zq_R7|#p+1ipFGP4?*1^z;U|aLH~uun7Y(-$bfI8Ib1@+H_5;1={B;iKtIC>9|413F z{pi=b*oaWiSl}b=WfbizQT*9hL*dg%(%tt8zS%@5Ozc~9=a`hJ(QzKmxUKT)bl=i< z0d@zS-ak{zZo^9ow|;;#nQ7whw*sw25T2+JQMnPT-Le!Y(PNw98)6QU5Qfq79F^8* zISG&H`ESbbaW~Fhs4}TpV}WElomP@MjAsn;1LcGq-2J5tH@- zBQv1qv)E9ktkMwDT@w{KUyM)(u?Ez}EK*t;O&+o;NE*|*!aO}ZMMzDX9wVu-^g$-r zS<>##9S&c1`G*>+qd@v_4-#oT;zJ5%*{Z|cb@U#y087gq)>3%m!PNy8U%^TAZG+d> zhRPrKe;V>9xMh1OQXmp_h`&t_@Dq`iE11hbVvMFkwDlO&x1a6 zzcmzSaV;C;&yL4huttU^(LK?PAGLBN(!~SE%EU&f=IgDts;jwY9-ycUZ{vPQI|nyA zjAQSOR@2ktL{*X!{(tG(x`bNS|1UPf1x7EHR5kbk!hdMM;rHp?@VF!Ur*%v5VCKeY z$(7>A(+75LmNV&Qaki622Ucj`pN~dk<_m0A>cEz{7wa0DKU3zo*?vyjAn&p2%S{j$ z_A1rYg^j8vZu&@L=wlNttW7^n-cxg3Y4uqt^G~t(rhn!bc|7#(7=>_ACha#wpunr@xeRh{~jp zM&A4G6~E6bxZ$^D(i*9XJB+V>x(KNqIU{tI$^ng&hjtfX7#_PW+#=mYOTOuV>T&!N zY4N&Kny?N&awQ3B1fsA((E$iPU}%h|b_Y$RuyG;HP!dTd$(!RqKar15?erm1 zsrC@vhq07uXyyqz;Y9Ba@I_aq4xCQWp`?@iFU+#BB}bGo(+vWYe!MD2z*;iW_m;gN z5=k`zeyNsmYOW`Xm3@f&M!TDk+MXFC9fmNdkMK+H*hIHYTeOM{2E}U%@^s8r5gsZUoeis5TE-*6RmKRCUYZk0eoSgw<;GeW< zytdec3Urqe%FS&aV5Ab;oWD(ecY)+#dH5t0J&MaZ^GOIHE$+Mj7iuGvM~HqEpS$)Z zq=nQ>FpDTmoZ&5Tbdkt^NCET!v}6~$a>bJlDQDJE?sacSsQT~1Z$NYUfCH76(m3uY&rpHNE>b*o60+E9=2Lk=xId zCH6!>#Z0rL%3$Y}BA3v%aylkQ&j;;_)hGm<%F<7;f!V6vXJ00I! zY5kI7GDo-Y88J>R?j_r{AxKVGflc&<{aZiZ!nN?r9IW_@{s=477aLD4(l-sFel$sh zuWvXJ57ltt$d`cfcB!S%*_JYF@B^B$am+*03O}dV?|(s-GmB_cR8<)f3hsQ=orP?8 zOUCQhPKed@vd1E`vsA^x6;O|`zJeOc<5D`kzurgBci_nU_wWs1E>%y*5QRYGCjCOx z+i{X`{UrazLdohwIR||ms0vU%3RD{;vN?D+sgyj0w!YO_fg90DaEEe#GgNL5#21%s z?|J1+*C*}WOVhQ-0U^FT`17}9$;VFXprC?3(=ElGLCIyHD?dzl=a~`K5 z8+}+byV#b4Pfj6P|IP*oYMLRDgj2(|WFfW$KxHELIEyXgUOfK9p_>bohX+y6Z8H2E zuq?a(Ei40`z5ECXQd{u`s)nh!<&J2X{=KG*q}7GW{a?SyvXMqTQ#NA7^a?H zIkio)39H|;)SjC|xMge6gzi}_A8H}M^z-Saj_d2UP5avd@zQ6k#8Rs}GAfZU94)7Z zX>7a*F2W18vYJId%CZT>hx3DkqItyUEswi5tDh~%bBf)B-^pS$WZ{>~RPr(%n(xJ) zjHYSL=B~BUtxZuz8Zo~lfY!uI;b?2q)2;YwLD)|BOpAbHJ zeYIU18iFJzd3o-QI9vOzV)FS%V$+dl0#0;%WgCu+8^Vt9mI>~CDxzxma4F6jSV<<{jL^N6Z*)E=Dr$Z~8C$~f6AxB*h zU5eXqVsUUxG~Xq62#RH0>;Kr$E3Hd804`Jqaud`cmckQUF3t+U+zd&k%N=cJhjTAX z7ap{f2XJLpA`{KW@z;!02m6mEEDWIy3sG5r%ND*Kn2o_5fq}bOK%Re6N@IByrY4xo z1Ie{rEd;AbD1kk=L^#w&RI-0tjb-v5S--tL~mNPZW| zhi6vP^O@A^QG{8(w*FeEe5Wl&5`DAtO$RJePqRd&-(XSr!PzjW$t3k&z!{+w`+WPN zVBNbqajeq2C*{Mte_a8~Tt-GV6^Ss!^xz<&>8pAXEDd$?TEk z*u7Nw7_M9S<1}djLVO58qp!u|*j4%-+h}g)9yL=J-e_v*Wm7AFZREX`#;|pRbtC|u z#<2ZnIsfIpNy#6gN9{GTy&-&(e^pDWt$5QZczL#CP0FRNb@HCcY+nbBBgMtHQ#|ej zDJ=Qp#ta#i1jBN|be|83q|L?*tO~RmsNN^S7s~~JVV>VzoxPaI_3gd_VdEUC0{xXb zP+7Ze(sEt%Odiw2gcE%OAap+Qm|VSa;1&;0NAdQv7;r0n6Oz5s!S`;^(&5E&E4Diu z(--4omsYT0U?nzeKq+c(gxL2i!nc9F`tl^fk&C5=6VKAAAGQwhjIlKER1YM*OI4TA zzbL>z&(A)pB@YE7K_mKBDF{UY)lt zc)7c6&;F_j1E!k0t2F6cTT0bA-oBa>3J<0q)}H@i$NYtRVd78XyJ1~?(^SE5_!G>fN`rk#jn3UP zF(P$>e;RG7e+CJD7YLhP8-|~?QAR;dAPztS;}HL6=kDjq;eLEwt@=UJm>)9w@PC*Q z_Y-tw?)W)J9L`^$SFQ7+fQobabz^ClD{QsuI8t2{Pe9|GVhuhM^yuSpuE>0LcGfkZ z^oyW$oyYUC&oPd7fADp8?cc|I2_Ba>oS{eH$c^Wcu@}SjEcJ|;as#=~abv0A{}#+W zs)nsNYzKz=6SY|`>DNLq6SdP{mz@2R%ZGBVQ#ro!2t6OyQXObQ;iP0iUeTEAT#$*; zt%Df+)6s7}p5XaI|IPip?#_4I!-z`E$+(*8k56;`j3&>sEb;y@FgK9xRXAY2Kku#r zB>}-u^?8+$CAPF2k6L+_}=2LOJer*5>IaSb#9o;+cV)Z z02zJeFAm%(5`Po#ZwF3mVW0Gk-27MBkUKMV1f4+HtZOb>QP%YPq)l{(QLzEZ4wM%3A2kl3F!^SG3`D3z!Wruedhp&l|4zj;5!k<>oTjlmw@G#>@-o@2ODi(j@t*h2=L5H^NFyx z4Kd7_p_PzE&Svw$@dB~5&(Ve8d7f*Pg$H?7%P;MNx&Nrq_V1bhpn>zJEHKTWwk?yx zi!pLgjp6FlSS9)T=3o{yb*agNZx)iXo2WvNY5L-Cl_q?C8hnZg`6ZuMPuQSGJo9q| z05`G(67rCc+wtc5KGWP+3dm}dNQonK^fQVjxvJ=uPwtcwW!J7}+!NbJ9n8~@2vRi_ zpU!~`c25o&#{NyelPvIq*+wGR{m#=+ezNAJfl=i7l@srWVpa>=go5RtAdGV0z~;r- zO#uSYy0X9=_?WaDCX;VS)74Y+dOoT#^$*Pf*fiPm?d6KXWeHRx+ht#LHB-rd_rN-= zm}_5&=dY;ac;%%a=s;WOq=K&?^Hv=wHn_!I=Z?*o=a%G|P z!9AHejEuKlmeZxwo_DNTMKycx5}#Az?m91yKgE2buk8#F$X6a@+;CAa>;o006Mt_( zbcM>x2DrzOT$fe}P9<7zV7szEB^`P@1#e8eow~iQAeD;1K}E)wNgWUDuC>LLuK~cO zK36%U5jGCUk&d-PU1&#+K1x(*Jw6A_Q;*j(Kxq|n5aD_2CbQ}N^wkG(Ffqgdpo*Ar zEe1Mn>k~F7oia8JIXt!RMO- z2$#4S$YOt0&H=zvCgsvU`r5<)gjWdLy&lGh=lCGoBMLll0+gTM(1^tuh#O!F{5rfw z-R`)IImDZ)+fsJ+`{n6iza-E_>Yr~*itF|gqh`$) zDS;YdNWx^{fkP?H+rnZ8k-^C~rhoNLd@$B{kV6+R=VfL0c+rPM6-86zh$Dw6={;ah zF&w^Q|LjsnnEETrRuJIyGbf|sHx#S9i0FQd$$_W)FJ|iD#qR9v9kim+!Sglf{sN6S z4#5&g%rQD=*SCVwwwP69BuQ7!6QH00askPY4~b;n>8gQ5JMaAbLX1xzl;1ewkSAaE zjFT~GF`xSO!_B=qZf6Op>{w|BnSXz}L{dKdg9S*-*`G3+dgca4u!c*QB)v zBl>BxB~CVCzFK2=H~nTre1$B_e90wi{LZ6s{quv8SV=uXbiV-p5A+|>LeN4k7vV}A zS@9nHxKR5RFm|AlBrEA!4cd=W*(bX$522z!^cVilUIvc&LtGkx2Cd6GCufh7E(M;@ zKFTZfvF^@=_sdBOV_gL$P|xW#_C4PpQH@Q$5>{C(Dha^cXMl%z+JY@B_?Kh`z%8rw4B0P zdbY`aA$Z|ep>vNmX!lV_;?ZjYrMh~z={nL_f1>-}n;pT1! zwNt&<-=T<*#!0gYFnHTQVWpgMhlQWn$zY3towc7rUgzscMKrx)Q69ncJaUf6+kGr@ z&I|)8GZJ#v0&xybO9>qRMimT*3ol1DcjkqLtG{Sx2g1TB{aoq$Qpicfe6@YtT9a>n z*HXOO25%F~Y1mt~k}ZM9&n%}{uz~uEYsOJ3`~Vq*m&3+y=_x40uPKd!n^Q}}zW{tR zkHUBQ94bue>h14zWT?0rW^rU0)rB5)Rz{x5!NS{~UrQySSr40n`|6*GTzC*^Lbw;E zKpjP^a$~;h49ZQ|^Sh*8&e6#jC7L>^f)YNy!p5Uk6zS~Wg|G@J%ZOEF{)!H~=WUfJbc;m)~b@ z`A4}uv$=}y@5ra?Hc+>#py^+-o{IzAcHUxtAS@J|#07a);xM+Amu3;}*=o*f(_s#NytnVuB9ERdkv1c|8!-!&1_!HE;Nf^w@!~GB~_i$hw-l zb?~~DpxZgKlM1RDO5N@aD$^5M-U;ihX+$GunX0X)keU;kY)^L%ZlAyF{!8nihGbD_ zT)2gq=6F|um~Dz3na{N+m2?+w=9x{~ClD~Xb>eNVzI$@Sl@ypg^Owb}c~%~;fz8Zv zcp^TVjL-AL5=i^UWmti=9S3O%>177G;e0j-Y_zwzdd$ouAV;}^E#YM4on|LPOQnj~ zaLvnC+j#A*f8gfax^+FJRTf$u8mfW31cAyaUzC)M-kZ4Gy|-=`@1caG&?HE|t#ykX zfE1~z5tY9o@F(EVo%48}Wz{g4H2(=v5=q!)ofK88hCgO#8_CajDdr-Oe>He0q}E@4 z*YL^|%7r#g?EZAr!BmNTq=Bb2lF{3uGLFst8+_e`%T)W*6om;ScwPzIQ>WCEWeVt) zPf@1QU#Cw@6WAyz5c%p6$Sghft0%zQD&8?5t6#s-&2^=`_T_da=Dh9*FLLS9u2B|1 zaIo-wFbx6>O%>nf+ugc-BBk?J1hB3ajM0CoiuQ5ZmNQxZ#aq49?()rt$647$KHHur z>F3(i7EdZ{N-=7Av8rI>@E{tg4m-2wZRK4X#A?18Yfh>ez*`+{;k0x#3_(8Q!z(C_ zBr(7SQH1zVHlYWkPG6P6d0Ph^ZY+r0oa0S(3k!MT-Z}^9b%2p0&ue#xxNrY7mrE-U z`^Fs7@34Z?C;TrCN~eFvJ)6<0qqJoM)~A-d+Mt@0Xw?JF05OL^ z<)WuFYvH@gVDwi~pkX4px3s%qC?-EgIZz7jILX^Abf5eNMhNyeO%*LiARk{}EtR8YvK?d4KV8ld1Q@IO{>cM&kkWw!&DH((uMvMr z@`?i0e~9uyM^kjbmA}=X@e%?lcm2SB{qK$-)?b%#5R)w9=XgE%kA6xWOrmGf2z1*y zU$l}t)^degXUJ_8Yxeoiz@Hq-a~kOR+xr^-6{+dS2KHU)_dJ%RSmdH1eYW0V^u^e$ zb(SUUqOE^7ijx{~(0{m1tXt1+f*FnA!Jpoz^|tmPFEAL6O^Fkj-YCo9`+teKQm@Ae ziz0|6_OcvGeAkq-*8KA^=vTNy>)>K}p0A!gjkEL*SdAxgcyp9f&}FJ9G=n;+eWNm* zH6LhlpdFXv$eCk0gMPwnLA`zY9w?(^!jdI#`Z?l^0^gg=(j8~%GLY-5HLW14eRR-S zg@pym;e^2%J>r^fMOiSBE3*~AJQtY%3<84vvHQ1OUSoB52(PKb^qlQ6vgYLYT87P3&dNielSSdw$`aQ1uV3%2VX-y1^`=1`kx#>FXa_*9rFpcYo9>8x zc^6F?8P9zRHjofdZWM^e7YV+A?a}iN!+ZXowV@lXuzO70eU2%c&^wmqe zKfd*$WPGA`C&2Ye?zApewo{emfq{dW84ym1o(j}5E95WUVBezah4E~Uw}FdoSb>eN zV=NcZthQ)r>s;k{*kCgkJHAsLp`jVKA@d+QsQp)5903YZQ1qnPJ(HN`uDV&=dWvtXmz3n>U^5qJfQ~3#&mDkmWjH{y&?E=-rIO`PJd9`-YP{ zlEi^t5f|ri$j&(XNSkAz;JVRc!Fn*MPc2DYk0x&jSXS!u#Gb}L=~7%jmnsIAfNRF2 z_0JR>h0cS~9B22vV=K^-Y)1M?7*Bi3K-m`?8Py+(J%wdcDuRC)Ikq1cCGz>sIuffp!(yL`US+1(Ak zhvNcUT;^6&yC#pa%=p7t-{RK^Yr1XEH@dmAW0vN6J8g7*3ZmNE8)kKk@20W$()_BX z+j0$a%r;2dnI7ACpW8<;;+SEWAHaJvycN<&3a2?EoU?i&JqA><&6km%l4|pBi=iG&d@p zs{5n<&5d~+;UivBSq()eI}m=>6JizHk3x9ZYioDdoy`vQY{~pqZs2ol@Sy;E)~^xO zEkcZ2Zq1O;t#q11Kw%9?p(MA~nrFR_V>I@asVt+_1fW9NE!1U1 zN&ioa;2#eUMZ#C)W5LM}6oqG5e~6GGJwIcamD%c&;{*|t+I^sH6V?6hv4?Ms1{s)d zuFXyn-e$Hq&}*4(OlA;|-XaO|cjhPqB+|n4Os06yj}JVu5NEz~N`&I#oF8R=yN;{- zlmo(8kVh)8Tlanu*rve(v@*4D5(iBn1NAd3Sh;du>{^eJfc>Cw!UniOnI zYVXhy8OVUisynzoGSKL(u5*xegP8HEogtXKwX#q72#Ha1GkPOHw)e2Fb8$6 zi@a`Vl!J$R>+NN+4k#cALtXlx`*hZ{^GP3HKK@i^tAGL)<8}aa@#lurU>f2em#YWE zz@Jy9jJ_hM6(`nz%&?_BT>qD}ul72Loz^=8_*AiUn_-&|zh7@lpc{1$rLe(-{dajT z!xZ5@1daIr>FXV!BWb&K;f^|XCbl!NZJQHJY}>YN+sVWePi#zV+qQG^y#N26@4Vl4 z)~Q}qtE*OBd*8jQ`tH7JtMU9@#mEqdxa?^*-ialQ94AE$h8;V2`wmCnd}v?a4s&S4mc zL(V2vY^%bhc4KKI7J2w5}3bdVr-pbPN4WNjeteG5!Y zRy(kwTocQzv=xs}G6&j>p77>oKcY+8TqhkAtPya&>MZce7WjYxwW2>~8Q?PN9yiy7 z`J36ybV>)~H@)tx!PGy$8)#-~obZ^xYp~67qf5SD#=>zvc`7IHcp^R~m>gjJoqIo| zaI~#}P!DWt2z{0EXsHx66<`0F(#kwR3z?7PN|ULC9wG78kb@VdI${Dne=`3_kCsYo zEgZr$HgQpW>(lBAFLU3HC;_d>xQ(X&Vo(pn?B&`)?>0Uzgv_vgn#b<`+@{JzL# zmcyV@?0yn+mP3g0gaFM4e;selzmkzo{rbYFoJ`;nqaKV2yMO{d+>kekOUml zuYbZfAbl&nAmR4Zu!n8u!EVU@%B+X^zrg_98v&L8_leui1OXjdE^b2KF3A)Ja>$$L zjk^N`DaT2K6% zvG#}cm|t+oRv?RF;7g3lwLvNM^sqRUD5v09A^PIT3H3>ug1b)ez#iU^juS z{C(^f-1z=jK1y&%%lA_YvQXb#M|YIl4s|+Rfs*;wH?cxs>ZV^|miC@*M&uvd`x{y` zdT!wzX|27-ulm6UV_G?_JdW-MH{<)2_Rqij3tNS2D6A+DQExDrJooLRhwIlYa%4d3 zTex{iu%dVBibu>8+Cu+mycL!@EG4lpclB!tkJWZyTgj{aXe6#UoBr^RcqDs=axEK> znSps7zuD##(1&+oP)6p;Q$ ziLum=J&F2OU|5dTp-O|Eb?`W97ONC>EQ%*@>2LP>n%d@H@51H+#bI$fT zeS@GhOzV(7qPnDEwy#3^o}7OzZb*G<>d~%5XUzR)v$;6%dTlXFyEw9J@SKuOvX&|4 zX$Ft8>`Szex1yM{?7z~-qQH0W3{E7K68e->zg-Dfh`@Fqe^EB2`H;Jd9Sd~mr}@*N zFVZHN)ao>;E zk&=S({D=!`s#bc%)rEe;X@rh5dxp6i1LpZ zt%&marG?dMaC4;>3rYCGWcT{uwbOC!n5*<1XT+&xgPwGNFqz!fPCu^A$|+-dS3H#! z!_lp^8MHnZG@DOS2jhBI5JJj>N2)YpujN-3DKoy7wb4@aL!^mWO1yroicZu+q>joa zj6W7SD7MmC+|HyQTC;&t*8b8_eHh9JeGZ!ZRWf#w8zUkWLa$l~ny+&a2eqqMdv>o_ z5aR)~c|jVGwWx(?V0S@aHJ)eyp2|kTUO0lCJ_n2nUrECL_mdSL1aUc2Cg;W)R@k!$ zhk&Il4`C$XZEkbg#K2m^P(%LiUpV2MHqc!c{-xw!UFmi3A#44ymlVP_-|nbx&@v^0 z$q21UkW;iH3u<NmJ26VBN}SNcpo+ zxI9rQ2XQWm@OXfbo8yyDGm>w7t$$IJKF+Totd;F-pe4MtbH@+CK7 za0x8g7u#8qEco@BzNlw`aK~h9IiPCU1dOHoj67iX6_yro6wcSH{iKB)NE0_TrRGZf z^Btd8(B9(esF;VxW8~_nMqcST0yB zegbd2>ev(HDBPM=3o+}V3xs=EIv3nx~2E?BXBtv7S*&99(}z({gNt@F7fAy zWV+@U8*(K6MTjU1S4|%Z>K~t`DSvqTEv+(6{kXzP|IHAP0_90u3;da*o9DzLH_QzD zPLRP8aTbpXQISG%au^CaYlXD^nVg=^T&S{n_TJdliUiN zEfsbk-6`$E&e`+#Yv_LS%!VUy;RGkSCBxb%1Vxq==l8>t*-+XGhvP`CDeO!ppge-& zIbcCn(Cg+Hlw62ILebyS2vVpCXGK~g9g@F!$%i|pdnhGx=r)Cu{uDxRr-v99-qGUg zLbuPcs0-mpWrMTF7ahU*cJuts*gm75DwZ^sSIBPK9r7nbz#f&-26W)Z6B^^ORSl#6 z4!Ob`7F0E^$S)50`swt&9}p1~P}1c+piabA*~ zO&1>5sH6auh_7e{<*PP#ay8%QBbD!S?8i!!tQV;_(YU_~a80Y*nIjreE%1&D^ zO&mQh{Gx)qxg9oOa70qNxOX->+I?#lMwCyMYj;Av`7ZowfoqvF9Z();TPl~~cxF?# zN0sX={pCg#N;y_9+aCcLDnzW5g<-thVdpLpF*dYFJfKWFBY6#3F1c~WlF~R9*mhk! zR@~3o0T(cy+H!Lh7Hy5i`%TZbl42FoHiVp=r8R%#2hTU!wIpX!Z56DHwW+;HKXU#k zbB7e?!nOX&f)P}>5}@n{Bcklb^weHW964moVbO>N2x-g_^FLtOE4Pg;`xLd(TasYE zERaYnSJ6Zq_o-)@6Ps}biXSo|H^RHZ%DhWz?N%-#+bw~kcsI7EPjC}GV_oxtuT-As z(Iz#ojv3~O(&k#K&kZj~(-}eQ+xFW`HQ6%Oi_Oyr?M#FX`{1seMl4{aWW z0I@FD7z>^E(8>?bz8HuQMSHiObjdOqw7dZQ8LRBfhABgk6%xW9#N@lv^0=Ra4oFc+ z<^DD3%?Nva+1nxK0(w8k(&06mW=BXU{aL0h7y}9Lr&%!jW4fI3#)LMlLqQiy9lBio z);V72{*-db9mV83k$FJxH)E@H1jb%Fq=*hVwUw}sq?%NA$Hbup&pOO4#)w;AwEiO2 z3}GsoVagK{=@tklDzY|fHMEaYH#eg(jlKC=#~mKN(V6y~dNe3Hp=W%f&%+BBB5cTF z9n<*Vo8^~?@+OZaJ}f*4U8fkvv1L0is+6jrPA@p^RxFPJsYEg=b)LViW}-wed?hxl z?F}Zb4_IHKclK!_W6YcLq`NV?vSfd;u%tBPeyQ}AXPD8ckz1igjTA9WvE$U-HM4Ws zVgCOVE+g4Eu%JM)E?AASH74->o4qz90EMdc=RU^K`4=$i8fT zIl&Q2l6|O!oC(v7xZ3d9@)@X3Ak4;JffhA$>u3ddYh~_Otn}zLD00L4r3g0FlD~Ki z@Pjffmxz}}2IYY|D5;SIf(sC9svVhaiBCyLJ|`L-<=i2^P(RfP9J4fkHib{n2EVg% zwe*+vgb_faXsUN;_@b5elxd3$`4D=6`NoC@99j6H9euSG|3kv{N;3Pi-*_CT$}{J5 zlFfDI{P5mG{)fry;c8~QgAmAJ z?uq1qfUUu-i^&8}dkV6;*nqX@7-dAGQQxHbZ3*m67`CZA_DqZjEj+7DnZ0oIVe#NS z$@jGINMmX^)(HoRGrcm+AwCkLvg<>!XnHYajNcYU#0$O%@rARCk5Y`vnUl(@N+A@R zF!DBc9dZwe6#Sz-iS(-?JkLJIp2&PSW;Y6()U1z=*cv%xnk-bH?pOA`yAMg>Ps z7g{TT<@Z>b!$em3km(PpJ>d<$qdalPzxw9aM+mCLG}FKp@-`l=SxlI9g(LIQ`ey$A zXNn|m-mo}SUwUkRauMYgW{%f4Vnk`*7%Hcf_`)$YDel8ax=rZdiRfM!Pr*&HWFh(5 z%w?*(J|P5{cchip{3%_W;251rSM|1(rR{L`a`<2b@agm63tv?BXpcu&(lqL~vCR+L z$jgUeZF*y=*{{|}Sbt%S*37c4j5SA!h8d`soFIiw?o`M<+M>-Uo#H*tlzp*B)oxXZ zv*sT|bG3R96QcSCgzF&4a79sqWC2@5$hTFNP@XqV;8KR>UIU5;;5|Z$3DQ z|MKtaO{H3U0Xwc#`{6wD**iX=GmUE{RRcv`UoS<@+`JfrVlWoKGx`Sf_ne(r?Iti+ ztAH8&2nW-`-JAAy&(XY>n~^Vja!%`zVKXU+8Bwf=IrzeVh1+;p4ezAdc;^k^UFjs> zW!BuatYO>rZcNhtV3|YHQqBqsCK?BcMNgHTG2zw?TJ&HWr?5z^GHoAD^1Z#)A~_z? zd=nQ}8D+nucg>M)Pw$k*cFiebWo>b!Ms!8kP1v5$#dEFZ#Sz^;{FU^z2k(l1Sya~7 z49$-y%&M|NQ%zs}XcvS6i^B<);{PR8E7`g_2Hy1pw8ar?uwpX1G_5?)Z+qe~hMRr+ z@O32HccLfz>%LiYAGQmWij>c}{Z7jWdp5fb#;s~zu9lMiaJ4W!58^IY4Uvp4nG>2y z?0NC`fcJBh)cZm=*`HrtmaZd#U%pYjFIRekm)aMzIvU^s=h|~-0Dq|@nOe5O|Gh{RxVmYYtB1r};aHdz&o-oP zj_QSvn^<%nHW=%AvA&JVB>rI>i>|eyY1~^hNdClQvStoJjrYU&kQl63sobAvYMIE| z(Af&=?oc2vw4l!dk?HMW<9d~x?TvIcUz=;(cSnrV#b62%fnG{7_7*+NVRL2Iw%0>A zXiOMAnKBjZ$D4eFENKl&#v2pX&D!)fBABa?!PI3|sL-YUROr*KbP^5X4GBOp8Y7@g z>Z!yoKiMH)5&hCcrT*aO^8s5QJhip@@%>@g@swrKKqW;;8e9L}2gN!MjaWa6ywmg# zB4fwLNCjW?t}Ir8Ym6LjG% zczlI4Hc11rX0DjvJ@?$zk5<0L#%agri*@=X@XYUrp``6XM0DCC_({vh={V#x4`HOH zb(LaW@bf6B?j5D$ztP60j7n0iiA}gtX#H`ssEwr!2CTx0Lr4>;Not@`akb$|IY(2h z=x(^SN&?lO%FKt!zborXd9>L~p0k4nRL`1QwJi8jI@rq?4?T*KbMJRv7eg;_pLd#% zyDET|%-!uIW#s!+G=<1@d@KJMd&# z-_2*Tb~EIC!}OsY%wNfYG*~|gM8`^DQeUHs+i3JkW~7$bQjlUy2Aw7#DVfmbXRoeb z2S%`KD49L3S5`Qr3YGJaD=53weuUbZJbv~ip}NQEgz3&vABDbW45s{nK~tI>1wL?d zb=N;_T^_yA|808#ITFi<7B&AZNJhLc{z!hXFMc(*uk^ViEzn|Bx3R&oD{9%(-tFpw z#2e|)794>An}*xFh|#CAklDM*)?`WB-@LD)+p$^5;`}Kgb`zrQ&uFMMxR)#S(LEZ9 z6B$6o%C2glAaW^_cF3^vz?=AK?gj;c11*}ARdXqAL`r|7z{Ln5s+T{WR#J+fbWaR1 z42P<~X&NU9IzVKZ`KhpJ$v@LB7o9Fct{m#4>F^Z9PPGPMqR z%S3N|$$j^^g|XtzS@79qX1SXBg)+)>2L~HikzXA#xIxKokxeJ8UC$1;aAXOcXW0)a z$Sr?z7%-s)6DUaBSApks&d+6z>)SX|7+y1AaikSaVy!llm|p3q09ryEH)Pv7vE3B_pDW-`9M65 zBJV;~;H)8ZWac7~Pc~H4ou4R)l?uXod$8%4IV-Nvoayo}LxD4G`>1>Hp;{E7Q8&@= zvR$Qb*hA{=E;74kGRKThoLz|{w=BF}gwU8nfYopDf{)GY^+$ZWh#AkTThy%I zfyoaSp7Jx2+^3Qb7mrl+0I03dwF?c9EB3`uA67U$5Kj{^5(sdW^MO1_)Qnl2md$nl z-Fv-wa>(X8-J6ypw79q*lpSUGPO$gnwHqP|w$nQfh~9QwJNQCfRHol5x8cYe?R10f;(tW@O%W z;VgO*J=SX=A1hGWe$pvV$~qWx&-=FxXTY+84Yh^XRY%cgcx2}-@F&}x6LILVLJZaS zZNMCYdsqF@_oUyG0h0pp<_8aC>vBWXQ2R$R_@whOM7a5e+9*i4D0aKe{3MoG zn#AD_;u0o2-|?Qq0x6U>sLZN2%yb{#e#E{}$37xg{fL01w|J{;w>u--fR(%q-47G9 ztHsJ=NX3-n0l3XQRoM~FK!S$8F%UoDAv|{@XG9~Gr6y0PNlx7V+Aux@ay#u*u5Hkw z>7ZdanNN0ZPoVD|Vs1ufxyGW}ULm|NTB(e5Ft=|)Hu0VOHueWHwMBkJRS$N)Go%Y5 zrFpWugwowvg`EYgifXFYYj^vk@Q|>%`A8fW`4)H~(~7Y-JzF}eB@nc8ZpvzDn~ zHujgypwq%6%sne(HkfM(#vB#Ks1L{CiQdFJ^#0wd0`B;T7-so8s4(HX`B$h4X9HW| zeNPs(P=7+%BA0(2`82P!u8)~Y&7{Y@7$g{vXX@XVa&?FhGp{rtc7X{HK|e5R2!o7c zJ6JNg!e=r#)CEPx>ZiN=UBM0dC&;#KIe7Q=!VtjM}z^GcgO|Rs$YAd-(zMp5FXZtSre^Z8)L}31UnR z9)?^IZqp~&Ah^!N&)`Io9{>0)a9FGHKYa~LBRF@%cyH446{7^1n!G*G%IVbenxy(E**HFr_<97B&k>jL^eus;f;XIO zB;QnNq!t9v+UfJ!)NW(T6>9YO{);qkaw9+4`it{zC@=>i=#p{Gfk_6XN;%s+2~72!XrlK)gZJF2PWw8nVLB=4gZ}OuTyKu~VVYpO67edBUH2S!`S) z|A-;rx_i%wRm2?uk#jkPSmoYc`DGlIaM<)!3l&$7-8og&PzN%hA?gQ1OK; zvz)A+ED2sEbJpaideF|~jiT5KLLN(aCY-OWr9^jH#q>l2*)I^-4aPtDa_80aeSRTC z2E}UW7t;L*|2x`%?Pf*nuGCj%D;`Q)pw9{}NZtR;1|6VN^1_y*WUWTWuf@9R#v#n2 z=_W_QRcVneVP5)h>|O|F89FEYtIj9u`*o^22HQI@#MqPfwN49mYJb(G6x`e{u}8MO zPj=p8mwx?6f4t8P@4FM3)lYV=+nGjq({7<+<3?G2DrkHV%4CQmN?9Hx11`VVfxf=_ zuxho_Q>yFt<3iN#Sm!?YDsXIqueKNbnYLzB77+d1ZEMQL4)C;Fs`60I10`Boefdkj z#KJ!7>--UFkhy|nDWuy=g_V|KUGtT!^aB0i+XLYn+iY}~G%^}GFB0+W(JSMHameN@ z6O_sW0q<}knER5t971k1Cm+)aD!bsxFX`_L5b@%$K3DK|oRPq0{!+FhZgda>FCHEm zyk3YofgR*~XSP7LUJzO#>^G=^zsJvUgAa9LY_>|Z{tbUZPF`SYktObd78~grFcv0& z!BY^-ip^U_l$XO_f92#3ev#bGWlg8Y37K@waxF_~X_c;4G!bz(>i9nWMvVq#v*gJp zOa2D9#i#jwG)|$+_;_}G)|1^=&S($oF45JIx}-1Wllhl{zd}a-1bnef^cWQ4WiH!> zJrvfZ;Ia-DacRSA8NwfO&o=SMR6i7k$B^LlvnYL>YE|C&b&%Tls1ocAuTAdRnS>vc919BB;SlGiY!cSLt*vEM|p#hKn-a zMz7QN!-LTJR#l+aS|*Pzj_avF}?7W-oB$KZg=lAErC2+t&(c7=((C$aorfmyKOT~ed9=D+SydnX| z!|WzFYM+?{Vf*rF~*^FMnZ@ z2iaL{jI4P%C8<;}S={@DitsQ4&F_bbvr1A2nEACx;Emca(tAqc&l&J5afTvU^&5Z% z7uW9_ijF^ionr5j=OG0?-V?v=1a%|5d)uJtJG|cv-%F8;ZS2qlT(rF|NRN1E0&^X(c+%p z*rdYST(`_sb8{@>1up)f1aZ-HiPYu4r;<&&88#!da^~-|z{DdojUS%iGrn6B5}Vf(Y2ZdnZtek! zl%@#mNLt?rOWTy^-nQLVP|gdAy={>ZE^SDA4uZ$si&Y?gV;to(N?ij+QHa_Y+=@>^ zcb(iv`>aJ+GUTNn9Zs7o=1_^?dB0f5sypu*!hPF@!2*Tr34?s)Ia`PA^gtnzD_kq; zE%U4Rg;#nMu(?CfV3Nva(Fq~%eC0)}iSN_}nCE)ui6l*IAKO%chCVjpfz)E?Itz++ z5krKBa`q0-6ZRJi))kk=n*S>|Z18Le4CK{65Q4^($i%cQ&DW0NW3k!qTwk;Hva&oD z_mXx{tp{O8b301FdIUN=>eztABNXIEOXDf$r$&oi&}B!N96&;BACf9PU`V}a;PBL~2ySYuB0u)Ue}fd!Lt~%Ym{S&ZCxhrwuM$QP8;Ta(ABy8!?O^Zi zEv>mw`a-Z7tF7E>fjdMP&={z?n_=@R1UcQk4;=eLOhfWs6=^V$cTBL483-T2NNJL* zC{yX;vSG=(+OhJZ*)_v@HfqU@oXJqN6u~S4ub{2PP$|xJZ3vN_)b5J zA*jncSe(VQB^N~t|AWVqo+}ZOg2w>a=R7gS8|opH!*>lG>;MzV$c*+89KdhT5NAGI zI0MTsAp0FpmX4Vvdo1IKjSffcut2r7Oj}o_4L;n?tB%xuy+W-`Mf$kH;YaFs=|QaMuvDmWl@@@uEtKLB$_ai#KWvo4 zs8kv5x7H1;KeZ{}3ldPlbyCxKL(9_{C0tqTpH%v#pz&tD!2XH|&^7arSgN=*hi;Pw z3&hbyvPDCso)>F&0s2l4&1OkXAGIyYAWUimPq5v+)C2hTRdJOn~02u zft4xO>*5D>%TxHQao1|>OlNOG>J_SZg_67JI^%l4WZexl`c?g8Rj@`;FnJ^w^*oWT z2~AALlZ2JzV9IX&4l9t8Fb&!T;Ukucn4}8mC*wd=h3@>yyx)91@vPN!`(j*+_HwIP2D3+F%pkjZu8b}@5R-M#*Vb%_*{B9F5R*uSLzD_*-r!CpSjdusDZ!n)P zvTU_Y0A%7gA)XKTe#p0)6NXE@Hd5n+qIx8;?}p+^SoMa({wmpQGo}16k^mEpl^)$< zeSC}Remps)6-4hAl=|cJCwvR%FGi?us7}R$h4n2KwK7Ezl55fMVPyk(k zY%7Z6%5My);YIyCbwiymY@>`(jS7Np{RvG7eb2ZPGJuf&!jVNC5Fqu!rv>;P+jZWG z*96x(#&buG*fJkgWq`mv4HCPWtKf&n9tr>S(_38IRtYX64Nlmu)4-+hUg9z-^n8FQ zFKJ}pH|hOX8Q*?BECfLMnv8T0hyecg^q$tO_}dHn9r(P$zj@80!X++Umwrn+!+R;g zxQq;3{vS~actc^K(EX(2dIyf70uQl=ptgq%Jq$3zAF%#giX@7<@dM|7Pi;=ysJ~pg zX>0c3F*47b$%$4uy)!?-c*aiQjeL0HIPKi%^0aui+Hz26ghGvkC9s7Ya-l~|Di0A` zL*n{(Yh|&tG0Ogq7r}@Ns1Si745X2sz@wR?{lQ7l98>VXC@R8T5n5_6_+`)|Di)G1 z6v=x)`b`(bPFOF75%}KGp=9$Pml7)UXVE zJif;)OQT~M81&;;J79>VmOL#bfD7Yj18XsDGj{$Hn8NT7()7PrG;3@2^myE$Y`EMGU>;H4aubzYV}k z-z;-ceI*5^%Ef0N3yDjP$D>@M#Ae;mMTukD76_I?K1bxjh$`9cWgD_gxqaw4N@TP1@iN7l84+4&=>83!viqQ`~{z7tt1@q=mVmcT_hsf z9YD*~mwe-h%To7Nf4$JtCUN{Unr)@6PC;)tV3M7sBS{2|GbFU>rDwNiv0X0o#Cx;J zxNLC5Y*JyKvJfk!_2k6o`zwHhx4695ihWw7_=^?<^vPy`ff@{*@gi;_Z<^}pXz>T? zkt4Rv$Xj7I_>K3U-S)$LczQ?z0aR_q&M(Idi=vh#$ONk_3(r~$dRStQxiu1UD;u(? zQMQC^Bz-hGl&Y4W4iJmJpvQsAgZr4=;d2kJ3{EUOos9}oC`Mk+RJ?-yU#fW}S}+&S8WdYQ-%SWgk1<1{icv83u@MARALIe_fEk!+7Odo&PEMtUT| zyMfNPdc>i%hVG~z!R$w_byA)j@-JNCw%-QNF+|ogzZl{MA?;2NMth3H$c_pG6F7K+ zIyKITM``|Ix=8#AUq$WmNNd{yQU#(5pc$u>gT$pjk>x?CV-8cnn=Q~$4h$q%f-|6C z=Gkk-slTI;y1S@CHKjWcjx4FeN)DP}Ta&Pj#*iA~Sd(I9+JHz3rToDZa(Fi$v+yk%CH^g}fXCb(}9dart0Z_XS%rK1W4QXKcq zhFpq5)O&=6-fnxE9>r`Q@s-&OYfL=gcGTbmXa)k}wm$8ssSX$lRFw zN$vT9R0;%~Hv8-prl&=}=-6^}Gu>JXqS0SlBu9p}`RO11;yE3@@VDIkF(Hs%OSvILzWExHPEJ<0 zUD^tMJ`8P?>vei7r(}rYR_bT70{AOJAb_Bd{1eucwfZNONnX=Hpo5|(2kH5_&KMC&Ghp=ve-N(_xdJL~S;`o{)%w45bi!b9sy_h_b7KKzz2vBg=PFxTQF zgCdV>LU#7d>nrrqiXiP9*V)?fnmR8h|kuY1KNbx~a&_Hv1x< zYFXkTiH^M~yQ055Dh;kn28m_5st(9j=tZK2LvGcgfSx8_c%feMGN2-g@{nU`oCTU+ z_Td}kOkw$NGji~ujS&I@&|VhD%wd;yYXR;o;k-Mov&pJH>P|V!1TxUG^E1|_8)-5DT(^?NO2=21Rx~6!K(l=|v_w%MDHV2|;d1LD) zpxq#Tb9C?Eir7i^O>^{p^QzEl_mC)YtRv6M-;{k?!P31X_w zcT0NMMsDU)mTF@=Ahq~8%0&+Ejv&^u?}o6&^1Npm3TX=A`?1QCV%75to@Xen6RX#r zfsR_=1=XS`r(MmuAm?OVK0{WIlo|%vVafUFPNMhU4Sng(rkfXRRfo3D1smL~Q?^sf zT)V}G#(N{(FOwzIz`A>DPx0&Kt#i2STIS|YKR9oXbede&66wxf*^I0NN6_fkzD8WB zb4kv;?!mYW8OC49r_}kU41C4a;4Eq-DQ2S+9`49-_>&Z6ME(G!8H>M6ZUBY}=CE_w zq1U70g@Dg@HvnOTNM%gKCpWMs@e}xmfo-EPpeM8Pp|`Tig}In?pqz>)k9dV%UkW6@;%7T_ z1<|_8?%UgMT8qDx4TI0l?K9RaHI(kVyW(?g70$Cqc%Zy{TBr!+2H7bfTJO?V5;U0K zcr9FbP;e}_|GbpYd>4k3d<=y7c)D0AAPaWy_INv} z%9`P`Yn;%SG+5YPpYd-376E||rUwcP02 z5(Q%KXwBjl5U3khj<@sO)CKmav!KMOW;i9%zcb|tj1Py3-YY~UI19G=qv2M>2H-JB zp*~OX?W6M4*9xyIKM&t}ddiFe6GiN$Iy81-2het$0zLZ5@h!-AQt%bsS=$J&7b3BE zsMa>s)PwnJcitAED$YBeKv^HwuX{~p`QXvf%YK0Wu%gF!{1o8Pzevhg5)gI%3L2hc z|LPDdg!dzk8?0-2LobM$m!q42J(1#sN&z3TgmuKMDyP&eG=D*Zo3(NJcy3Nkdv`Fj zy~R|M8HzGHJtfiIyTf2WKhEfkz!?jrkR_1x{s!9nF^g2SPpL^XkaTsZ zYj&BKo}#r-n>dj4AIuD)WS=B)swKzBj~*l#FbszT>O-nP(qkJVq}#+jQppMmE8j22 z*!_UHxJva&!9%fwv$Kcb<0w6KRmvKbtv1-JmZf%J8HtwrLI+wL#YqJR%wvkW4H4d|BmeeBFWRiCzygX2q*x61^@t{0P1F!Vt0z?0PC+KH{bvO^w-gU z7Lc#C$^V~sX0ArYCUkDrR{w?p|9@DLVHf0fHUI#g4+OycbLQ9b4-5cE`V!`$>*VZU zLuck{_TO>Z#}@s4-vEGda{vJTU+4cDm!0=-oUVZpos;4JQ0co|mRfuY0AL(J{Wq17 zO#pzMBfGA-jkyz@;eS`T#S_oO1_c0^e|_lx9IAQ&$baGf$52J^8hW0N0RXstC;-BL z47I7^zi_&yc2@syo&Skl`LfTy$NDeq|IlmxcCW9C^kt&>FWvv4mnZwbu>Us;1>wRS ofO~=gH1O#Dn{fxK{tu*?(?8b}0{D+?=&u*#*A=^?{Ac%n0sWQ>!~g&Q literal 0 HcmV?d00001 diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/apsys_0.xml b/sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/apsys_0.xml new file mode 100644 index 0000000..cf74959 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/apsys_0.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/partitions.xml b/sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/partitions.xml new file mode 100644 index 0000000..8eebba3 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/hardware/prebuilt/hwcf/partitions.xml @@ -0,0 +1,4 @@ + + + + diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.c b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.c new file mode 100644 index 0000000..0820d34 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.c @@ -0,0 +1,65 @@ +/* File: E:/temp/SDSoc_2015.2/z_turn20/SDDebug/_sds/p0/.cf_work/devreg.c */ +#include "cf_lib.h" +#include "cf_request.h" +#include "devreg.h" + +#include "stdio.h" // for getting printf +#include "xlnk_core_cf.h" +#include "accel_info.h" +#include "axi_dma_simple_dm.h" +#include "axi_lite_dm.h" + +axi_dma_simple_info_t _p0_datamover_0 = { + .device_id = 0, + .phys_base_addr = 0x80400000, + .addr_range = 0x10000, + .dir = XLNK_DMA_TO_DEV, +}; + +axi_dma_simple_info_t _p0_datamover_1 = { + .device_id = 1, + .phys_base_addr = 0x80410000, + .addr_range = 0x10000, + .dir = XLNK_DMA_TO_DEV, +}; + +axi_dma_simple_info_t _p0_datamover_2 = { + .device_id = 2, + .phys_base_addr = 0x80420000, + .addr_range = 0x10000, + .dir = XLNK_DMA_FROM_DEV, +}; + +accel_info_t _sds__p0_mmult_0 = { + .device_id = 3, + .phys_base_addr = 0x83c00000, + .addr_range = 0x10000, + .ip_type = "axis_acc_adapter" +}; + +void _p0_cf_register(int first) +{ + int xlnk_init_done = cf_xlnk_open(first); + if (xlnk_init_done == 0) { + axi_dma_simple_register(&_p0_datamover_0); + axi_dma_simple_register(&_p0_datamover_1); + axi_dma_simple_register(&_p0_datamover_2); + accel_register(&_sds__p0_mmult_0); + cf_xlnk_init(first); + } + else if (xlnk_init_done <0) { + fprintf(stderr, "ERROR: unable to open xlnk %d\n", xlnk_init_done); + } + else { + } +} + +void _p0_cf_unregister(int last) +{ + axi_dma_simple_unregister(&_p0_datamover_0); + axi_dma_simple_unregister(&_p0_datamover_1); + axi_dma_simple_unregister(&_p0_datamover_2); + accel_unregister(&_sds__p0_mmult_0); + xlnkClose(last,NULL); +} + diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.h b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.h new file mode 100644 index 0000000..f965ad9 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/devreg.h @@ -0,0 +1,13 @@ +#ifndef _SDI_DEVREG_H +#define _SDI_DEVREG_H +/* File: E:/temp/SDSoc_2015.2/z_turn20/SDDebug/_sds/p0/.cf_work/devreg.h */ +#ifdef __cplusplus +extern "C" { +#endif + +void _p0_cf_register(int); +void _p0_cf_unregister(int); +#ifdef __cplusplus +}; +#endif +#endif /* _SDI_DEVREG_H_ */ diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.c b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.c new file mode 100644 index 0000000..1dc7ad5 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.c @@ -0,0 +1,137 @@ +/* File: E:/temp/SDSoc_2015.2/z_turn20/SDDebug/_sds/p0/.cf_work/portinfo.c */ +#include "cf_lib.h" +#include "cf_request.h" +#include "devreg.h" + +#include "portinfo.h" + +#include "stdio.h" // for printf + +#include "xlnk_core_cf.h" +#include "accel_info.h" +#include "axi_dma_simple_dm.h" +#include "axi_lite_dm.h" + +extern axi_dma_simple_info_t _p0_datamover_0; +extern axi_dma_simple_info_t _p0_datamover_1; +extern axi_dma_simple_info_t _p0_datamover_2; +extern accel_info_t _sds__p0_mmult_0; + +axi_lite_info_t _p0_swinst_mmult_0_cmd_mmult_info = { + .accel_info = &_sds__p0_mmult_0, + .reg_name = "0x28" +}; + +axi_dma_simple_channel_info_t _p0_swinst_mmult_0_A_info = { + .dma_info = &_p0_datamover_1, + .in_use = 0, + .needs_cache_flush_invalidate = 0 +}; + +axi_dma_simple_channel_info_t _p0_swinst_mmult_0_B_info = { + .dma_info = &_p0_datamover_0, + .in_use = 0, + .needs_cache_flush_invalidate = 0 +}; + +axi_dma_simple_channel_info_t _p0_swinst_mmult_0_C_info = { + .dma_info = &_p0_datamover_2, + .in_use = 0, + .needs_cache_flush_invalidate = 0 +}; + +struct _p0_swblk_mmult _p0_swinst_mmult_0 = { + .cmd_mmult = { .base = { + .channel_info = &_p0_swinst_mmult_0_cmd_mmult_info, + .open_i = &axi_lite_open, + .close_i = &axi_lite_close }, + .send_i = &axi_lite_send }, + .A = { .base = { + .channel_info = &_p0_swinst_mmult_0_A_info, + .open_i = &axi_dma_simple_open, + .close_i = &axi_dma_simple_close }, + .send_i = &axi_dma_simple_send_i }, + .B = { .base = { + .channel_info = &_p0_swinst_mmult_0_B_info, + .open_i = &axi_dma_simple_open, + .close_i = &axi_dma_simple_close }, + .send_i = &axi_dma_simple_send_i }, + .C = { .base = { + .channel_info = &_p0_swinst_mmult_0_C_info, + .open_i = &axi_dma_simple_open, + .close_i = &axi_dma_simple_close }, + .receive_ref_i = 0, + .receive_i = &axi_dma_simple_recv_i }, +}; + +void _p0_cf_open_port (cf_port_base_t *port) +{ + port->open_i(port, NULL); +} + +void _p0_cf_framework_open(int first) +{ + cf_context_init(); + xlnkCounterMap(); + _p0_cf_register(first); + cf_get_current_context(); + accel_open(&_sds__p0_mmult_0); + _p0_cf_open_port( &_p0_swinst_mmult_0.cmd_mmult.base ); + _p0_cf_open_port( &_p0_swinst_mmult_0.A.base ); + _p0_cf_open_port( &_p0_swinst_mmult_0.B.base ); + _p0_cf_open_port( &_p0_swinst_mmult_0.C.base ); +} + +void _p0_cf_framework_close(int last) +{ + cf_close_i( &_p0_swinst_mmult_0.cmd_mmult, NULL); + cf_close_i( &_p0_swinst_mmult_0.A, NULL); + cf_close_i( &_p0_swinst_mmult_0.B, NULL); + cf_close_i( &_p0_swinst_mmult_0.C, NULL); + accel_close(&_sds__p0_mmult_0); + _p0_cf_unregister(last); +} + +#define TOTAL_PARTITIONS 1 +int current_partition_num = 0; +struct { + void (*open)(int); + void (*close)(int); +} + +_ptable[TOTAL_PARTITIONS] = { + {.open = &_p0_cf_framework_open, .close= &_p0_cf_framework_close}, +}; + +void switch_to_next_partition(int partition_num) +{ +#ifdef __linux__ + if (current_partition_num != partition_num) { + _ptable[current_partition_num].close(0); + char buf[128]; + sprintf(buf, "cat /mnt/_sds/_p%d_.bin > /dev/xdevcfg", partition_num); + system(buf); + _ptable[partition_num].open(0); + current_partition_num = partition_num; + } +#endif +} + +void init_first_partition() __attribute__ ((constructor)); +void close_last_partition() __attribute__ ((destructor)); +void init_first_partition() +{ + current_partition_num = 0; + _ptable[current_partition_num].open(1); +} + + +void close_last_partition() +{ +#ifdef PERF_EST + apf_perf_estimation_exit(); +#endif + _ptable[current_partition_num].close(1); + current_partition_num = 0; +} + diff --git a/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.h b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.h new file mode 100644 index 0000000..cf979e4 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/hardware/prebuilt/swcf/portinfo.h @@ -0,0 +1,31 @@ +#ifndef _SDI_PORTINFO_H +#define _SDI_PORTINFO_H +/* File: E:/temp/SDSoc_2015.2/z_turn20/SDDebug/_sds/p0/.cf_work/portinfo.h */ +#ifdef __cplusplus +extern "C" { +#endif + +struct _p0_swblk_mmult { + cf_port_send_t cmd_mmult; + cf_port_send_t A; + cf_port_send_t B; + cf_port_receive_t C; +}; + +extern struct _p0_swblk_mmult _p0_swinst_mmult_0; +void _p0_cf_framework_open(int); +void _p0_cf_framework_close(int); + +#ifdef __cplusplus +}; +#endif +#ifdef __cplusplus +extern "C" { +#endif +void switch_to_next_partition(int); +void init_first_partition(); +void close_last_partition(); +#ifdef __cplusplus +}; +#endif /* extern "C" */ +#endif /* _SDI_PORTINFO_H_ */ diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/constrs_1/new/system.xdc b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/constrs_1/new/system.xdc new file mode 100644 index 0000000..3ca434f --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/constrs_1/new/system.xdc @@ -0,0 +1,203 @@ +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LN[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LN[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LN[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LN[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LN[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LP[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LP[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LP[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LP[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B34_LP[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[24]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[23]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[22]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[21]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[20]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[19]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[18]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[17]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[16]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[15]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[14]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[13]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[12]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[11]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[10]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[9]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[8]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[7]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[6]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LP[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[24]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[23]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[22]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[21]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[20]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[19]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[18]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[17]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[16]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[15]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[14]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[13]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[12]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[11]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[10]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[9]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[8]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[7]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[6]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {IO_B35_LN[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[15]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[14]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[13]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[12]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[11]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[10]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[9]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[8]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[7]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[6]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[5]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[4]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LCD_DATA[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LEDS[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LEDS[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {LEDS[0]}] +set_property PACKAGE_PIN T11 [get_ports {IO_B34_LP[1]}] +set_property PACKAGE_PIN T10 [get_ports {IO_B34_LN[1]}] +set_property PACKAGE_PIN T12 [get_ports {IO_B34_LP[2]}] +set_property PACKAGE_PIN U12 [get_ports {IO_B34_LN[2]}] +set_property PACKAGE_PIN U13 [get_ports {IO_B34_LP[3]}] +set_property PACKAGE_PIN V13 [get_ports {IO_B34_LN[3]}] +set_property PACKAGE_PIN V12 [get_ports {IO_B34_LP[4]}] +set_property PACKAGE_PIN W13 [get_ports {IO_B34_LN[4]}] +set_property PACKAGE_PIN T14 [get_ports {IO_B34_LP[5]}] +set_property PACKAGE_PIN T15 [get_ports {IO_B34_LN[5]}] +set_property PACKAGE_PIN T16 [get_ports {LCD_DATA[0]}] +set_property PACKAGE_PIN U17 [get_ports {LCD_DATA[1]}] +set_property PACKAGE_PIN V15 [get_ports {LCD_DATA[2]}] +set_property PACKAGE_PIN W15 [get_ports {LCD_DATA[3]}] +set_property PACKAGE_PIN U18 [get_ports {LCD_DATA[4]}] +set_property PACKAGE_PIN U19 [get_ports {LCD_DATA[5]}] +set_property PACKAGE_PIN N18 [get_ports {LCD_DATA[6]}] +set_property PACKAGE_PIN P19 [get_ports {LCD_DATA[7]}] +set_property PACKAGE_PIN N20 [get_ports {LCD_DATA[8]}] +set_property PACKAGE_PIN P20 [get_ports {LCD_DATA[9]}] +set_property PACKAGE_PIN T20 [get_ports {LCD_DATA[10]}] +set_property PACKAGE_PIN U20 [get_ports {LCD_DATA[11]}] +set_property PACKAGE_PIN V20 [get_ports {LCD_DATA[12]}] +set_property PACKAGE_PIN W20 [get_ports {LCD_DATA[13]}] +set_property PACKAGE_PIN Y18 [get_ports {LCD_DATA[14]}] +set_property PACKAGE_PIN Y19 [get_ports {LCD_DATA[15]}] +set_property PACKAGE_PIN P18 [get_ports BP] +set_property PACKAGE_PIN P15 [get_ports iic_0_sda_io] +set_property PACKAGE_PIN P16 [get_ports iic_0_scl_io] +set_property IOSTANDARD LVCMOS33 [get_ports BP] +set_property IOSTANDARD LVCMOS33 [get_ports iic_0_scl_io] +set_property IOSTANDARD LVCMOS33 [get_ports iic_0_sda_io] +set_property PACKAGE_PIN N17 [get_ports MEMS_INTn] +set_property IOSTANDARD LVCMOS33 [get_ports MEMS_INTn] +set_property PACKAGE_PIN V16 [get_ports LCD_VSYNC] +set_property PACKAGE_PIN W16 [get_ports LCD_HSYNC] +set_property PACKAGE_PIN R16 [get_ports LCD_DE] +set_property PACKAGE_PIN R17 [get_ports LCD_PCLK] +set_property IOSTANDARD LVCMOS33 [get_ports LCD_PCLK] +set_property IOSTANDARD LVCMOS33 [get_ports LCD_HSYNC] +set_property IOSTANDARD LVCMOS33 [get_ports LCD_DE] +set_property IOSTANDARD LVCMOS33 [get_ports LCD_VSYNC] +set_property PACKAGE_PIN W18 [get_ports I2S_DIN] +set_property PACKAGE_PIN V18 [get_ports I2S_FSYNC_IN] +set_property IOSTANDARD LVCMOS33 [get_ports I2S_DIN] +set_property IOSTANDARD LVCMOS33 [get_ports I2S_FSYNC_IN] +set_property PACKAGE_PIN P14 [get_ports IO_B34_LP6] +set_property PACKAGE_PIN W14 [get_ports IO_B34_LP8] +set_property PACKAGE_PIN Y14 [get_ports IO_B34_LN8] +set_property PACKAGE_PIN U14 [get_ports IO_B34_LP11] +set_property PACKAGE_PIN U15 [get_ports IO_B34_LN11] +set_property IOSTANDARD LVCMOS33 [get_ports IO_B34_LP11] +set_property IOSTANDARD LVCMOS33 [get_ports IO_B34_LP8] +set_property IOSTANDARD LVCMOS33 [get_ports IO_B34_LN11] +set_property IOSTANDARD LVCMOS33 [get_ports IO_B34_LN8] +set_property IOSTANDARD LVCMOS33 [get_ports IO_B34_LP6] +set_property PACKAGE_PIN C20 [get_ports {IO_B35_LP[1]}] +set_property PACKAGE_PIN B20 [get_ports {IO_B35_LN[1]}] +set_property PACKAGE_PIN A20 [get_ports {IO_B35_LN[2]}] +set_property PACKAGE_PIN B19 [get_ports {IO_B35_LP[2]}] +set_property PACKAGE_PIN E17 [get_ports {IO_B35_LP[3]}] +set_property PACKAGE_PIN D18 [get_ports {IO_B35_LN[3]}] +set_property PACKAGE_PIN D19 [get_ports {IO_B35_LP[4]}] +set_property PACKAGE_PIN D20 [get_ports {IO_B35_LN[4]}] +set_property PACKAGE_PIN E18 [get_ports {IO_B35_LP[5]}] +set_property PACKAGE_PIN E19 [get_ports {IO_B35_LN[5]}] +set_property PACKAGE_PIN F16 [get_ports {IO_B35_LP[6]}] +set_property PACKAGE_PIN F17 [get_ports {IO_B35_LN[6]}] +set_property PACKAGE_PIN M19 [get_ports {IO_B35_LP[7]}] +set_property PACKAGE_PIN M20 [get_ports {IO_B35_LN[7]}] +set_property PACKAGE_PIN M17 [get_ports {IO_B35_LP[8]}] +set_property PACKAGE_PIN M18 [get_ports {IO_B35_LN[8]}] +set_property PACKAGE_PIN L19 [get_ports {IO_B35_LP[9]}] +set_property PACKAGE_PIN L20 [get_ports {IO_B35_LN[9]}] +set_property PACKAGE_PIN K19 [get_ports {IO_B35_LP[10]}] +set_property PACKAGE_PIN J19 [get_ports {IO_B35_LN[10]}] +set_property PACKAGE_PIN L16 [get_ports {IO_B35_LP[11]}] +set_property PACKAGE_PIN L17 [get_ports {IO_B35_LN[11]}] +set_property PACKAGE_PIN K17 [get_ports {IO_B35_LP[12]}] +set_property PACKAGE_PIN K18 [get_ports {IO_B35_LN[12]}] +set_property PACKAGE_PIN H16 [get_ports {IO_B35_LP[13]}] +set_property PACKAGE_PIN H17 [get_ports {IO_B35_LN[13]}] +set_property PACKAGE_PIN J18 [get_ports {IO_B35_LP[14]}] +set_property PACKAGE_PIN H18 [get_ports {IO_B35_LN[14]}] +set_property PACKAGE_PIN F19 [get_ports {IO_B35_LP[15]}] +set_property PACKAGE_PIN F20 [get_ports {IO_B35_LN[15]}] +set_property PACKAGE_PIN G17 [get_ports {IO_B35_LP[16]}] +set_property PACKAGE_PIN G18 [get_ports {IO_B35_LN[16]}] +set_property PACKAGE_PIN J20 [get_ports {IO_B35_LP[17]}] +set_property PACKAGE_PIN H20 [get_ports {IO_B35_LN[17]}] +set_property PACKAGE_PIN G19 [get_ports {IO_B35_LP[18]}] +set_property PACKAGE_PIN G20 [get_ports {IO_B35_LN[18]}] +set_property PACKAGE_PIN H15 [get_ports {IO_B35_LP[19]}] +set_property PACKAGE_PIN G15 [get_ports {IO_B35_LN[19]}] +set_property PACKAGE_PIN K14 [get_ports {IO_B35_LP[20]}] +set_property PACKAGE_PIN J14 [get_ports {IO_B35_LN[20]}] +set_property PACKAGE_PIN N15 [get_ports {IO_B35_LP[21]}] +set_property PACKAGE_PIN N16 [get_ports {IO_B35_LN[21]}] +set_property PACKAGE_PIN L14 [get_ports {IO_B35_LP[22]}] +set_property PACKAGE_PIN L15 [get_ports {IO_B35_LN[22]}] +set_property PACKAGE_PIN M14 [get_ports {IO_B35_LP[23]}] +set_property PACKAGE_PIN M15 [get_ports {IO_B35_LN[23]}] +set_property PACKAGE_PIN K16 [get_ports {IO_B35_LP[24]}] +set_property PACKAGE_PIN J16 [get_ports {IO_B35_LN[24]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SW[3]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SW[2]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SW[1]}] +set_property IOSTANDARD LVCMOS33 [get_ports {SW[0]}] +set_property IOSTANDARD LVCMOS33 [get_ports HDMI_INTn] +set_property PACKAGE_PIN W19 [get_ports HDMI_INTn] +set_property IOSTANDARD LVCMOS33 [get_ports I2S_FSYNC_OUT] +set_property IOSTANDARD LVCMOS33 [get_ports I2S_SCLK] +set_property IOSTANDARD LVCMOS33 [get_ports I2S_DOUT] +set_property PACKAGE_PIN V17 [get_ports I2S_DOUT] +set_property PACKAGE_PIN T17 [get_ports I2S_SCLK] +set_property PACKAGE_PIN R18 [get_ports I2S_FSYNC_OUT] +set_property PACKAGE_PIN R19 [get_ports {SW[0]}] +set_property PACKAGE_PIN T19 [get_ports {SW[1]}] +set_property PACKAGE_PIN G14 [get_ports {SW[2]}] +set_property PACKAGE_PIN J15 [get_ports {SW[3]}] +set_property PACKAGE_PIN Y16 [get_ports {LEDS[0]}] +set_property PACKAGE_PIN Y17 [get_ports {LEDS[1]}] +set_property PACKAGE_PIN R14 [get_ports {LEDS[2]}] + +set_property CFGBVS VCCO [current_design] +set_property CONFIG_VOLTAGE 3.3 [current_design] diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.hwdef b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.hwdef new file mode 100644 index 0000000000000000000000000000000000000000..bf6aff7ed8b27254910fa81afdd1581f6bf1d45d GIT binary patch literal 379587 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�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ⅆ3|_n_L34CBW9d9r}Z?{n;h;bN(L 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 b3u)u=&w3(){*jIHdLg~8Sn)98>)ZbVgxmWN literal 0 HcmV?d00001 diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.v new file mode 100644 index 0000000..d14a506 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn.v @@ -0,0 +1,2007 @@ +//Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +//-------------------------------------------------------------------------------- +//Tool Version: Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +//Date : Wed Jul 15 11:10:09 2015 +//Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +//Command : generate_target z_turn.bd +//Design : z_turn +//Purpose : IP block netlist +//-------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps + +module s00_couplers_imp_1N0XG9 + (M_ACLK, + M_ARESETN, + M_AXI_araddr, + M_AXI_arburst, + M_AXI_arcache, + M_AXI_arid, + M_AXI_arlen, + M_AXI_arlock, + M_AXI_arprot, + M_AXI_arqos, + M_AXI_arready, + M_AXI_arsize, + M_AXI_arvalid, + M_AXI_awaddr, + M_AXI_awburst, + M_AXI_awcache, + M_AXI_awid, + M_AXI_awlen, + M_AXI_awlock, + M_AXI_awprot, + M_AXI_awqos, + M_AXI_awready, + M_AXI_awsize, + M_AXI_awvalid, + M_AXI_bid, + M_AXI_bready, + M_AXI_bresp, + M_AXI_bvalid, + M_AXI_rdata, + M_AXI_rid, + M_AXI_rlast, + M_AXI_rready, + M_AXI_rresp, + M_AXI_rvalid, + M_AXI_wdata, + M_AXI_wid, + M_AXI_wlast, + M_AXI_wready, + M_AXI_wstrb, + M_AXI_wvalid, + S_ACLK, + S_ARESETN, + S_AXI_araddr, + S_AXI_arburst, + S_AXI_arcache, + S_AXI_arid, + S_AXI_arlen, + S_AXI_arlock, + S_AXI_arprot, + S_AXI_arqos, + S_AXI_arready, + S_AXI_arsize, + S_AXI_arvalid, + S_AXI_awaddr, + S_AXI_awburst, + S_AXI_awcache, + S_AXI_awid, + S_AXI_awlen, + S_AXI_awlock, + S_AXI_awprot, + S_AXI_awqos, + S_AXI_awready, + S_AXI_awsize, + S_AXI_awvalid, + S_AXI_bid, + S_AXI_bready, + S_AXI_bresp, + S_AXI_bvalid, + S_AXI_rdata, + S_AXI_rid, + S_AXI_rlast, + S_AXI_rready, + S_AXI_rresp, + S_AXI_rvalid, + S_AXI_wdata, + S_AXI_wid, + S_AXI_wlast, + S_AXI_wready, + S_AXI_wstrb, + S_AXI_wvalid); + input M_ACLK; + input [0:0]M_ARESETN; + output M_AXI_araddr; + output M_AXI_arburst; + output M_AXI_arcache; + output M_AXI_arid; + output M_AXI_arlen; + output M_AXI_arlock; + output M_AXI_arprot; + output M_AXI_arqos; + input M_AXI_arready; + output M_AXI_arsize; + output M_AXI_arvalid; + output M_AXI_awaddr; + output M_AXI_awburst; + output M_AXI_awcache; + output M_AXI_awid; + output M_AXI_awlen; + output M_AXI_awlock; + output M_AXI_awprot; + output M_AXI_awqos; + input M_AXI_awready; + output M_AXI_awsize; + output M_AXI_awvalid; + input M_AXI_bid; + output M_AXI_bready; + input M_AXI_bresp; + input M_AXI_bvalid; + input M_AXI_rdata; + input M_AXI_rid; + input M_AXI_rlast; + output M_AXI_rready; + input M_AXI_rresp; + input M_AXI_rvalid; + output M_AXI_wdata; + output M_AXI_wid; + output M_AXI_wlast; + input M_AXI_wready; + output M_AXI_wstrb; + output M_AXI_wvalid; + input S_ACLK; + input [0:0]S_ARESETN; + input S_AXI_araddr; + input S_AXI_arburst; + input S_AXI_arcache; + input S_AXI_arid; + input S_AXI_arlen; + input S_AXI_arlock; + input S_AXI_arprot; + input S_AXI_arqos; + output S_AXI_arready; + input S_AXI_arsize; + input S_AXI_arvalid; + input S_AXI_awaddr; + input S_AXI_awburst; + input S_AXI_awcache; + input S_AXI_awid; + input S_AXI_awlen; + input S_AXI_awlock; + input S_AXI_awprot; + input S_AXI_awqos; + output S_AXI_awready; + input S_AXI_awsize; + input S_AXI_awvalid; + output S_AXI_bid; + input S_AXI_bready; + output S_AXI_bresp; + output S_AXI_bvalid; + output S_AXI_rdata; + output S_AXI_rid; + output S_AXI_rlast; + input S_AXI_rready; + output S_AXI_rresp; + output S_AXI_rvalid; + input S_AXI_wdata; + input S_AXI_wid; + input S_AXI_wlast; + output S_AXI_wready; + input S_AXI_wstrb; + input S_AXI_wvalid; + + wire s00_couplers_to_s00_couplers_ARADDR; + wire s00_couplers_to_s00_couplers_ARBURST; + wire s00_couplers_to_s00_couplers_ARCACHE; + wire s00_couplers_to_s00_couplers_ARID; + wire s00_couplers_to_s00_couplers_ARLEN; + wire s00_couplers_to_s00_couplers_ARLOCK; + wire s00_couplers_to_s00_couplers_ARPROT; + wire s00_couplers_to_s00_couplers_ARQOS; + wire s00_couplers_to_s00_couplers_ARREADY; + wire s00_couplers_to_s00_couplers_ARSIZE; + wire s00_couplers_to_s00_couplers_ARVALID; + wire s00_couplers_to_s00_couplers_AWADDR; + wire s00_couplers_to_s00_couplers_AWBURST; + wire s00_couplers_to_s00_couplers_AWCACHE; + wire s00_couplers_to_s00_couplers_AWID; + wire s00_couplers_to_s00_couplers_AWLEN; + wire s00_couplers_to_s00_couplers_AWLOCK; + wire s00_couplers_to_s00_couplers_AWPROT; + wire s00_couplers_to_s00_couplers_AWQOS; + wire s00_couplers_to_s00_couplers_AWREADY; + wire s00_couplers_to_s00_couplers_AWSIZE; + wire s00_couplers_to_s00_couplers_AWVALID; + wire s00_couplers_to_s00_couplers_BID; + wire s00_couplers_to_s00_couplers_BREADY; + wire s00_couplers_to_s00_couplers_BRESP; + wire s00_couplers_to_s00_couplers_BVALID; + wire s00_couplers_to_s00_couplers_RDATA; + wire s00_couplers_to_s00_couplers_RID; + wire s00_couplers_to_s00_couplers_RLAST; + wire s00_couplers_to_s00_couplers_RREADY; + wire s00_couplers_to_s00_couplers_RRESP; + wire s00_couplers_to_s00_couplers_RVALID; + wire s00_couplers_to_s00_couplers_WDATA; + wire s00_couplers_to_s00_couplers_WID; + wire s00_couplers_to_s00_couplers_WLAST; + wire s00_couplers_to_s00_couplers_WREADY; + wire s00_couplers_to_s00_couplers_WSTRB; + wire s00_couplers_to_s00_couplers_WVALID; + + assign M_AXI_araddr = s00_couplers_to_s00_couplers_ARADDR; + assign M_AXI_arburst = s00_couplers_to_s00_couplers_ARBURST; + assign M_AXI_arcache = s00_couplers_to_s00_couplers_ARCACHE; + assign M_AXI_arid = s00_couplers_to_s00_couplers_ARID; + assign M_AXI_arlen = s00_couplers_to_s00_couplers_ARLEN; + assign M_AXI_arlock = s00_couplers_to_s00_couplers_ARLOCK; + assign M_AXI_arprot = s00_couplers_to_s00_couplers_ARPROT; + assign M_AXI_arqos = s00_couplers_to_s00_couplers_ARQOS; + assign M_AXI_arsize = s00_couplers_to_s00_couplers_ARSIZE; + assign M_AXI_arvalid = s00_couplers_to_s00_couplers_ARVALID; + assign M_AXI_awaddr = s00_couplers_to_s00_couplers_AWADDR; + assign M_AXI_awburst = s00_couplers_to_s00_couplers_AWBURST; + assign M_AXI_awcache = s00_couplers_to_s00_couplers_AWCACHE; + assign M_AXI_awid = s00_couplers_to_s00_couplers_AWID; + assign M_AXI_awlen = s00_couplers_to_s00_couplers_AWLEN; + assign M_AXI_awlock = s00_couplers_to_s00_couplers_AWLOCK; + assign M_AXI_awprot = s00_couplers_to_s00_couplers_AWPROT; + assign M_AXI_awqos = s00_couplers_to_s00_couplers_AWQOS; + assign M_AXI_awsize = s00_couplers_to_s00_couplers_AWSIZE; + assign M_AXI_awvalid = s00_couplers_to_s00_couplers_AWVALID; + assign M_AXI_bready = s00_couplers_to_s00_couplers_BREADY; + assign M_AXI_rready = s00_couplers_to_s00_couplers_RREADY; + assign M_AXI_wdata = s00_couplers_to_s00_couplers_WDATA; + assign M_AXI_wid = s00_couplers_to_s00_couplers_WID; + assign M_AXI_wlast = s00_couplers_to_s00_couplers_WLAST; + assign M_AXI_wstrb = s00_couplers_to_s00_couplers_WSTRB; + assign M_AXI_wvalid = s00_couplers_to_s00_couplers_WVALID; + assign S_AXI_arready = s00_couplers_to_s00_couplers_ARREADY; + assign S_AXI_awready = s00_couplers_to_s00_couplers_AWREADY; + assign S_AXI_bid = s00_couplers_to_s00_couplers_BID; + assign S_AXI_bresp = s00_couplers_to_s00_couplers_BRESP; + assign S_AXI_bvalid = s00_couplers_to_s00_couplers_BVALID; + assign S_AXI_rdata = s00_couplers_to_s00_couplers_RDATA; + assign S_AXI_rid = s00_couplers_to_s00_couplers_RID; + assign S_AXI_rlast = s00_couplers_to_s00_couplers_RLAST; + assign S_AXI_rresp = s00_couplers_to_s00_couplers_RRESP; + assign S_AXI_rvalid = s00_couplers_to_s00_couplers_RVALID; + assign S_AXI_wready = s00_couplers_to_s00_couplers_WREADY; + assign s00_couplers_to_s00_couplers_ARADDR = S_AXI_araddr; + assign s00_couplers_to_s00_couplers_ARBURST = S_AXI_arburst; + assign s00_couplers_to_s00_couplers_ARCACHE = S_AXI_arcache; + assign s00_couplers_to_s00_couplers_ARID = S_AXI_arid; + assign s00_couplers_to_s00_couplers_ARLEN = S_AXI_arlen; + assign s00_couplers_to_s00_couplers_ARLOCK = S_AXI_arlock; + assign s00_couplers_to_s00_couplers_ARPROT = S_AXI_arprot; + assign s00_couplers_to_s00_couplers_ARQOS = S_AXI_arqos; + assign s00_couplers_to_s00_couplers_ARREADY = M_AXI_arready; + assign s00_couplers_to_s00_couplers_ARSIZE = S_AXI_arsize; + assign s00_couplers_to_s00_couplers_ARVALID = S_AXI_arvalid; + assign s00_couplers_to_s00_couplers_AWADDR = S_AXI_awaddr; + assign s00_couplers_to_s00_couplers_AWBURST = S_AXI_awburst; + assign s00_couplers_to_s00_couplers_AWCACHE = S_AXI_awcache; + assign s00_couplers_to_s00_couplers_AWID = S_AXI_awid; + assign s00_couplers_to_s00_couplers_AWLEN = S_AXI_awlen; + assign s00_couplers_to_s00_couplers_AWLOCK = S_AXI_awlock; + assign s00_couplers_to_s00_couplers_AWPROT = S_AXI_awprot; + assign s00_couplers_to_s00_couplers_AWQOS = S_AXI_awqos; + assign s00_couplers_to_s00_couplers_AWREADY = M_AXI_awready; + assign s00_couplers_to_s00_couplers_AWSIZE = S_AXI_awsize; + assign s00_couplers_to_s00_couplers_AWVALID = S_AXI_awvalid; + assign s00_couplers_to_s00_couplers_BID = M_AXI_bid; + assign s00_couplers_to_s00_couplers_BREADY = S_AXI_bready; + assign s00_couplers_to_s00_couplers_BRESP = M_AXI_bresp; + assign s00_couplers_to_s00_couplers_BVALID = M_AXI_bvalid; + assign s00_couplers_to_s00_couplers_RDATA = M_AXI_rdata; + assign s00_couplers_to_s00_couplers_RID = M_AXI_rid; + assign s00_couplers_to_s00_couplers_RLAST = M_AXI_rlast; + assign s00_couplers_to_s00_couplers_RREADY = S_AXI_rready; + assign s00_couplers_to_s00_couplers_RRESP = M_AXI_rresp; + assign s00_couplers_to_s00_couplers_RVALID = M_AXI_rvalid; + assign s00_couplers_to_s00_couplers_WDATA = S_AXI_wdata; + assign s00_couplers_to_s00_couplers_WID = S_AXI_wid; + assign s00_couplers_to_s00_couplers_WLAST = S_AXI_wlast; + assign s00_couplers_to_s00_couplers_WREADY = M_AXI_wready; + assign s00_couplers_to_s00_couplers_WSTRB = S_AXI_wstrb; + assign s00_couplers_to_s00_couplers_WVALID = S_AXI_wvalid; +endmodule + +module s00_couplers_imp_QSJACF + (M_ACLK, + M_ARESETN, + M_AXI_araddr, + M_AXI_arburst, + M_AXI_arcache, + M_AXI_arid, + M_AXI_arlen, + M_AXI_arlock, + M_AXI_arprot, + M_AXI_arqos, + M_AXI_arready, + M_AXI_arsize, + M_AXI_arvalid, + M_AXI_awaddr, + M_AXI_awburst, + M_AXI_awcache, + M_AXI_awid, + M_AXI_awlen, + M_AXI_awlock, + M_AXI_awprot, + M_AXI_awqos, + M_AXI_awready, + M_AXI_awsize, + M_AXI_awvalid, + M_AXI_bid, + M_AXI_bready, + M_AXI_bresp, + M_AXI_bvalid, + M_AXI_rdata, + M_AXI_rid, + M_AXI_rlast, + M_AXI_rready, + M_AXI_rresp, + M_AXI_rvalid, + M_AXI_wdata, + M_AXI_wid, + M_AXI_wlast, + M_AXI_wready, + M_AXI_wstrb, + M_AXI_wvalid, + S_ACLK, + S_ARESETN, + S_AXI_araddr, + S_AXI_arburst, + S_AXI_arcache, + S_AXI_arid, + S_AXI_arlen, + S_AXI_arlock, + S_AXI_arprot, + S_AXI_arqos, + S_AXI_arready, + S_AXI_arsize, + S_AXI_arvalid, + S_AXI_awaddr, + S_AXI_awburst, + S_AXI_awcache, + S_AXI_awid, + S_AXI_awlen, + S_AXI_awlock, + S_AXI_awprot, + S_AXI_awqos, + S_AXI_awready, + S_AXI_awsize, + S_AXI_awvalid, + S_AXI_bid, + S_AXI_bready, + S_AXI_bresp, + S_AXI_bvalid, + S_AXI_rdata, + S_AXI_rid, + S_AXI_rlast, + S_AXI_rready, + S_AXI_rresp, + S_AXI_rvalid, + S_AXI_wdata, + S_AXI_wid, + S_AXI_wlast, + S_AXI_wready, + S_AXI_wstrb, + S_AXI_wvalid); + input M_ACLK; + input [0:0]M_ARESETN; + output M_AXI_araddr; + output M_AXI_arburst; + output M_AXI_arcache; + output M_AXI_arid; + output M_AXI_arlen; + output M_AXI_arlock; + output M_AXI_arprot; + output M_AXI_arqos; + input M_AXI_arready; + output M_AXI_arsize; + output M_AXI_arvalid; + output M_AXI_awaddr; + output M_AXI_awburst; + output M_AXI_awcache; + output M_AXI_awid; + output M_AXI_awlen; + output M_AXI_awlock; + output M_AXI_awprot; + output M_AXI_awqos; + input M_AXI_awready; + output M_AXI_awsize; + output M_AXI_awvalid; + input M_AXI_bid; + output M_AXI_bready; + input M_AXI_bresp; + input M_AXI_bvalid; + input M_AXI_rdata; + input M_AXI_rid; + input M_AXI_rlast; + output M_AXI_rready; + input M_AXI_rresp; + input M_AXI_rvalid; + output M_AXI_wdata; + output M_AXI_wid; + output M_AXI_wlast; + input M_AXI_wready; + output M_AXI_wstrb; + output M_AXI_wvalid; + input S_ACLK; + input [0:0]S_ARESETN; + input S_AXI_araddr; + input S_AXI_arburst; + input S_AXI_arcache; + input S_AXI_arid; + input S_AXI_arlen; + input S_AXI_arlock; + input S_AXI_arprot; + input S_AXI_arqos; + output S_AXI_arready; + input S_AXI_arsize; + input S_AXI_arvalid; + input S_AXI_awaddr; + input S_AXI_awburst; + input S_AXI_awcache; + input S_AXI_awid; + input S_AXI_awlen; + input S_AXI_awlock; + input S_AXI_awprot; + input S_AXI_awqos; + output S_AXI_awready; + input S_AXI_awsize; + input S_AXI_awvalid; + output S_AXI_bid; + input S_AXI_bready; + output S_AXI_bresp; + output S_AXI_bvalid; + output S_AXI_rdata; + output S_AXI_rid; + output S_AXI_rlast; + input S_AXI_rready; + output S_AXI_rresp; + output S_AXI_rvalid; + input S_AXI_wdata; + input S_AXI_wid; + input S_AXI_wlast; + output S_AXI_wready; + input S_AXI_wstrb; + input S_AXI_wvalid; + + wire s00_couplers_to_s00_couplers_ARADDR; + wire s00_couplers_to_s00_couplers_ARBURST; + wire s00_couplers_to_s00_couplers_ARCACHE; + wire s00_couplers_to_s00_couplers_ARID; + wire s00_couplers_to_s00_couplers_ARLEN; + wire s00_couplers_to_s00_couplers_ARLOCK; + wire s00_couplers_to_s00_couplers_ARPROT; + wire s00_couplers_to_s00_couplers_ARQOS; + wire s00_couplers_to_s00_couplers_ARREADY; + wire s00_couplers_to_s00_couplers_ARSIZE; + wire s00_couplers_to_s00_couplers_ARVALID; + wire s00_couplers_to_s00_couplers_AWADDR; + wire s00_couplers_to_s00_couplers_AWBURST; + wire s00_couplers_to_s00_couplers_AWCACHE; + wire s00_couplers_to_s00_couplers_AWID; + wire s00_couplers_to_s00_couplers_AWLEN; + wire s00_couplers_to_s00_couplers_AWLOCK; + wire s00_couplers_to_s00_couplers_AWPROT; + wire s00_couplers_to_s00_couplers_AWQOS; + wire s00_couplers_to_s00_couplers_AWREADY; + wire s00_couplers_to_s00_couplers_AWSIZE; + wire s00_couplers_to_s00_couplers_AWVALID; + wire s00_couplers_to_s00_couplers_BID; + wire s00_couplers_to_s00_couplers_BREADY; + wire s00_couplers_to_s00_couplers_BRESP; + wire s00_couplers_to_s00_couplers_BVALID; + wire s00_couplers_to_s00_couplers_RDATA; + wire s00_couplers_to_s00_couplers_RID; + wire s00_couplers_to_s00_couplers_RLAST; + wire s00_couplers_to_s00_couplers_RREADY; + wire s00_couplers_to_s00_couplers_RRESP; + wire s00_couplers_to_s00_couplers_RVALID; + wire s00_couplers_to_s00_couplers_WDATA; + wire s00_couplers_to_s00_couplers_WID; + wire s00_couplers_to_s00_couplers_WLAST; + wire s00_couplers_to_s00_couplers_WREADY; + wire s00_couplers_to_s00_couplers_WSTRB; + wire s00_couplers_to_s00_couplers_WVALID; + + assign M_AXI_araddr = s00_couplers_to_s00_couplers_ARADDR; + assign M_AXI_arburst = s00_couplers_to_s00_couplers_ARBURST; + assign M_AXI_arcache = s00_couplers_to_s00_couplers_ARCACHE; + assign M_AXI_arid = s00_couplers_to_s00_couplers_ARID; + assign M_AXI_arlen = s00_couplers_to_s00_couplers_ARLEN; + assign M_AXI_arlock = s00_couplers_to_s00_couplers_ARLOCK; + assign M_AXI_arprot = s00_couplers_to_s00_couplers_ARPROT; + assign M_AXI_arqos = s00_couplers_to_s00_couplers_ARQOS; + assign M_AXI_arsize = s00_couplers_to_s00_couplers_ARSIZE; + assign M_AXI_arvalid = s00_couplers_to_s00_couplers_ARVALID; + assign M_AXI_awaddr = s00_couplers_to_s00_couplers_AWADDR; + assign M_AXI_awburst = s00_couplers_to_s00_couplers_AWBURST; + assign M_AXI_awcache = s00_couplers_to_s00_couplers_AWCACHE; + assign M_AXI_awid = s00_couplers_to_s00_couplers_AWID; + assign M_AXI_awlen = s00_couplers_to_s00_couplers_AWLEN; + assign M_AXI_awlock = s00_couplers_to_s00_couplers_AWLOCK; + assign M_AXI_awprot = s00_couplers_to_s00_couplers_AWPROT; + assign M_AXI_awqos = s00_couplers_to_s00_couplers_AWQOS; + assign M_AXI_awsize = s00_couplers_to_s00_couplers_AWSIZE; + assign M_AXI_awvalid = s00_couplers_to_s00_couplers_AWVALID; + assign M_AXI_bready = s00_couplers_to_s00_couplers_BREADY; + assign M_AXI_rready = s00_couplers_to_s00_couplers_RREADY; + assign M_AXI_wdata = s00_couplers_to_s00_couplers_WDATA; + assign M_AXI_wid = s00_couplers_to_s00_couplers_WID; + assign M_AXI_wlast = s00_couplers_to_s00_couplers_WLAST; + assign M_AXI_wstrb = s00_couplers_to_s00_couplers_WSTRB; + assign M_AXI_wvalid = s00_couplers_to_s00_couplers_WVALID; + assign S_AXI_arready = s00_couplers_to_s00_couplers_ARREADY; + assign S_AXI_awready = s00_couplers_to_s00_couplers_AWREADY; + assign S_AXI_bid = s00_couplers_to_s00_couplers_BID; + assign S_AXI_bresp = s00_couplers_to_s00_couplers_BRESP; + assign S_AXI_bvalid = s00_couplers_to_s00_couplers_BVALID; + assign S_AXI_rdata = s00_couplers_to_s00_couplers_RDATA; + assign S_AXI_rid = s00_couplers_to_s00_couplers_RID; + assign S_AXI_rlast = s00_couplers_to_s00_couplers_RLAST; + assign S_AXI_rresp = s00_couplers_to_s00_couplers_RRESP; + assign S_AXI_rvalid = s00_couplers_to_s00_couplers_RVALID; + assign S_AXI_wready = s00_couplers_to_s00_couplers_WREADY; + assign s00_couplers_to_s00_couplers_ARADDR = S_AXI_araddr; + assign s00_couplers_to_s00_couplers_ARBURST = S_AXI_arburst; + assign s00_couplers_to_s00_couplers_ARCACHE = S_AXI_arcache; + assign s00_couplers_to_s00_couplers_ARID = S_AXI_arid; + assign s00_couplers_to_s00_couplers_ARLEN = S_AXI_arlen; + assign s00_couplers_to_s00_couplers_ARLOCK = S_AXI_arlock; + assign s00_couplers_to_s00_couplers_ARPROT = S_AXI_arprot; + assign s00_couplers_to_s00_couplers_ARQOS = S_AXI_arqos; + assign s00_couplers_to_s00_couplers_ARREADY = M_AXI_arready; + assign s00_couplers_to_s00_couplers_ARSIZE = S_AXI_arsize; + assign s00_couplers_to_s00_couplers_ARVALID = S_AXI_arvalid; + assign s00_couplers_to_s00_couplers_AWADDR = S_AXI_awaddr; + assign s00_couplers_to_s00_couplers_AWBURST = S_AXI_awburst; + assign s00_couplers_to_s00_couplers_AWCACHE = S_AXI_awcache; + assign s00_couplers_to_s00_couplers_AWID = S_AXI_awid; + assign s00_couplers_to_s00_couplers_AWLEN = S_AXI_awlen; + assign s00_couplers_to_s00_couplers_AWLOCK = S_AXI_awlock; + assign s00_couplers_to_s00_couplers_AWPROT = S_AXI_awprot; + assign s00_couplers_to_s00_couplers_AWQOS = S_AXI_awqos; + assign s00_couplers_to_s00_couplers_AWREADY = M_AXI_awready; + assign s00_couplers_to_s00_couplers_AWSIZE = S_AXI_awsize; + assign s00_couplers_to_s00_couplers_AWVALID = S_AXI_awvalid; + assign s00_couplers_to_s00_couplers_BID = M_AXI_bid; + assign s00_couplers_to_s00_couplers_BREADY = S_AXI_bready; + assign s00_couplers_to_s00_couplers_BRESP = M_AXI_bresp; + assign s00_couplers_to_s00_couplers_BVALID = M_AXI_bvalid; + assign s00_couplers_to_s00_couplers_RDATA = M_AXI_rdata; + assign s00_couplers_to_s00_couplers_RID = M_AXI_rid; + assign s00_couplers_to_s00_couplers_RLAST = M_AXI_rlast; + assign s00_couplers_to_s00_couplers_RREADY = S_AXI_rready; + assign s00_couplers_to_s00_couplers_RRESP = M_AXI_rresp; + assign s00_couplers_to_s00_couplers_RVALID = M_AXI_rvalid; + assign s00_couplers_to_s00_couplers_WDATA = S_AXI_wdata; + assign s00_couplers_to_s00_couplers_WID = S_AXI_wid; + assign s00_couplers_to_s00_couplers_WLAST = S_AXI_wlast; + assign s00_couplers_to_s00_couplers_WREADY = M_AXI_wready; + assign s00_couplers_to_s00_couplers_WSTRB = S_AXI_wstrb; + assign s00_couplers_to_s00_couplers_WVALID = S_AXI_wvalid; +endmodule + +(* CORE_GENERATION_INFO = "z_turn,IP_Integrator,{x_ipProduct=Vivado 2015.2,x_ipVendor=xilinx.com,x_ipLibrary=BlockDiagram,x_ipName=z_turn,x_ipVersion=1.00.a,x_ipLanguage=VERILOG,numBlks=16,numReposBlks=12,numNonXlnxBlks=0,numHierBlks=4,maxHierDepth=0,da_axi4_cnt=1,synth_mode=Global}" *) (* HW_HANDOFF = "z_turn.hwdef" *) +module z_turn + (BP, + DDR_addr, + DDR_ba, + DDR_cas_n, + DDR_ck_n, + DDR_ck_p, + DDR_cke, + DDR_cs_n, + DDR_dm, + DDR_dq, + DDR_dqs_n, + DDR_dqs_p, + DDR_odt, + DDR_ras_n, + DDR_reset_n, + DDR_we_n, + FIXED_IO_ddr_vrn, + FIXED_IO_ddr_vrp, + FIXED_IO_mio, + FIXED_IO_ps_clk, + FIXED_IO_ps_porb, + FIXED_IO_ps_srstb, + HDMI_INTn, + I2S_DIN, + I2S_DOUT, + I2S_FSYNC_IN, + I2S_FSYNC_OUT, + I2S_SCLK, + IIC_0_scl_i, + IIC_0_scl_o, + IIC_0_scl_t, + IIC_0_sda_i, + IIC_0_sda_o, + IIC_0_sda_t, + IO_B34_LN, + IO_B34_LN11, + IO_B34_LN8, + IO_B34_LP, + IO_B34_LP11, + IO_B34_LP6, + IO_B34_LP8, + IO_B35_LN, + IO_B35_LP, + LCD_DATA, + LCD_DE, + LCD_HSYNC, + LCD_PCLK, + LCD_VSYNC, + LEDS, + MEMS_INTn, + SW); + output BP; + inout [14:0]DDR_addr; + inout [2:0]DDR_ba; + inout DDR_cas_n; + inout DDR_ck_n; + inout DDR_ck_p; + inout DDR_cke; + inout DDR_cs_n; + inout [3:0]DDR_dm; + inout [31:0]DDR_dq; + inout [3:0]DDR_dqs_n; + inout [3:0]DDR_dqs_p; + inout DDR_odt; + inout DDR_ras_n; + inout DDR_reset_n; + inout DDR_we_n; + inout FIXED_IO_ddr_vrn; + inout FIXED_IO_ddr_vrp; + inout [53:0]FIXED_IO_mio; + inout FIXED_IO_ps_clk; + inout FIXED_IO_ps_porb; + inout FIXED_IO_ps_srstb; + input HDMI_INTn; + input I2S_DIN; + output I2S_DOUT; + input I2S_FSYNC_IN; + output I2S_FSYNC_OUT; + output I2S_SCLK; + input IIC_0_scl_i; + output IIC_0_scl_o; + output IIC_0_scl_t; + input IIC_0_sda_i; + output IIC_0_sda_o; + output IIC_0_sda_t; + input [5:1]IO_B34_LN; + input IO_B34_LN11; + input IO_B34_LN8; + input [5:1]IO_B34_LP; + input IO_B34_LP11; + input IO_B34_LP6; + input IO_B34_LP8; + input [24:1]IO_B35_LN; + input [24:1]IO_B35_LP; + output [15:0]LCD_DATA; + output LCD_DE; + output LCD_HSYNC; + output LCD_PCLK; + output LCD_VSYNC; + output [2:0]LEDS; + input MEMS_INTn; + input [3:0]SW; + + wire GND_1; + wire HDMI_INTn_1; + wire MEMS_INTn_1; + wire [3:0]SW_1; + wire VCC_1; + wire io2axis_M00_AXI_ARADDR; + wire io2axis_M00_AXI_ARBURST; + wire io2axis_M00_AXI_ARCACHE; + wire io2axis_M00_AXI_ARID; + wire io2axis_M00_AXI_ARLEN; + wire io2axis_M00_AXI_ARLOCK; + wire io2axis_M00_AXI_ARPROT; + wire io2axis_M00_AXI_ARQOS; + wire io2axis_M00_AXI_ARREADY; + wire io2axis_M00_AXI_ARSIZE; + wire io2axis_M00_AXI_ARVALID; + wire io2axis_M00_AXI_AWADDR; + wire io2axis_M00_AXI_AWBURST; + wire io2axis_M00_AXI_AWCACHE; + wire io2axis_M00_AXI_AWID; + wire io2axis_M00_AXI_AWLEN; + wire io2axis_M00_AXI_AWLOCK; + wire io2axis_M00_AXI_AWPROT; + wire io2axis_M00_AXI_AWQOS; + wire io2axis_M00_AXI_AWREADY; + wire io2axis_M00_AXI_AWSIZE; + wire io2axis_M00_AXI_AWVALID; + wire [5:0]io2axis_M00_AXI_BID; + wire io2axis_M00_AXI_BREADY; + wire [1:0]io2axis_M00_AXI_BRESP; + wire io2axis_M00_AXI_BVALID; + wire [63:0]io2axis_M00_AXI_RDATA; + wire [5:0]io2axis_M00_AXI_RID; + wire io2axis_M00_AXI_RLAST; + wire io2axis_M00_AXI_RREADY; + wire [1:0]io2axis_M00_AXI_RRESP; + wire io2axis_M00_AXI_RVALID; + wire io2axis_M00_AXI_WDATA; + wire io2axis_M00_AXI_WID; + wire io2axis_M00_AXI_WLAST; + wire io2axis_M00_AXI_WREADY; + wire io2axis_M00_AXI_WSTRB; + wire io2axis_M00_AXI_WVALID; + wire [0:0]proc_sys_reset2_interconnect_aresetn; + wire [0:0]proc_sys_reset2_peripheral_aresetn; + wire ps7_IIC_0_SCL_I; + wire ps7_IIC_0_SCL_O; + wire ps7_IIC_0_SCL_T; + wire ps7_IIC_0_SDA_I; + wire ps7_IIC_0_SDA_O; + wire ps7_IIC_0_SDA_T; + wire [14:0]ps_7_DDR_ADDR; + wire [2:0]ps_7_DDR_BA; + wire ps_7_DDR_CAS_N; + wire ps_7_DDR_CKE; + wire ps_7_DDR_CK_N; + wire ps_7_DDR_CK_P; + wire ps_7_DDR_CS_N; + wire [3:0]ps_7_DDR_DM; + wire [31:0]ps_7_DDR_DQ; + wire [3:0]ps_7_DDR_DQS_N; + wire [3:0]ps_7_DDR_DQS_P; + wire ps_7_DDR_ODT; + wire ps_7_DDR_RAS_N; + wire ps_7_DDR_RESET_N; + wire ps_7_DDR_WE_N; + wire ps_7_FCLK_CLK0; + wire ps_7_FCLK_CLK1; + wire ps_7_FCLK_CLK2; + wire ps_7_FCLK_CLK3; + wire ps_7_FCLK_RESET0_N; + wire ps_7_FCLK_RESET1_N; + wire ps_7_FCLK_RESET2_N; + wire ps_7_FCLK_RESET3_N; + wire ps_7_FIXED_IO_DDR_VRN; + wire ps_7_FIXED_IO_DDR_VRP; + wire [53:0]ps_7_FIXED_IO_MIO; + wire ps_7_FIXED_IO_PS_CLK; + wire ps_7_FIXED_IO_PS_PORB; + wire ps_7_FIXED_IO_PS_SRSTB; + wire [31:0]ps_7_M_AXI_GP0_ARADDR; + wire [1:0]ps_7_M_AXI_GP0_ARBURST; + wire [3:0]ps_7_M_AXI_GP0_ARCACHE; + wire [11:0]ps_7_M_AXI_GP0_ARID; + wire [3:0]ps_7_M_AXI_GP0_ARLEN; + wire [1:0]ps_7_M_AXI_GP0_ARLOCK; + wire [2:0]ps_7_M_AXI_GP0_ARPROT; + wire [3:0]ps_7_M_AXI_GP0_ARQOS; + wire ps_7_M_AXI_GP0_ARREADY; + wire [2:0]ps_7_M_AXI_GP0_ARSIZE; + wire ps_7_M_AXI_GP0_ARVALID; + wire [31:0]ps_7_M_AXI_GP0_AWADDR; + wire [1:0]ps_7_M_AXI_GP0_AWBURST; + wire [3:0]ps_7_M_AXI_GP0_AWCACHE; + wire [11:0]ps_7_M_AXI_GP0_AWID; + wire [3:0]ps_7_M_AXI_GP0_AWLEN; + wire [1:0]ps_7_M_AXI_GP0_AWLOCK; + wire [2:0]ps_7_M_AXI_GP0_AWPROT; + wire [3:0]ps_7_M_AXI_GP0_AWQOS; + wire ps_7_M_AXI_GP0_AWREADY; + wire [2:0]ps_7_M_AXI_GP0_AWSIZE; + wire ps_7_M_AXI_GP0_AWVALID; + wire ps_7_M_AXI_GP0_BID; + wire ps_7_M_AXI_GP0_BREADY; + wire ps_7_M_AXI_GP0_BRESP; + wire ps_7_M_AXI_GP0_BVALID; + wire ps_7_M_AXI_GP0_RDATA; + wire ps_7_M_AXI_GP0_RID; + wire ps_7_M_AXI_GP0_RLAST; + wire ps_7_M_AXI_GP0_RREADY; + wire ps_7_M_AXI_GP0_RRESP; + wire ps_7_M_AXI_GP0_RVALID; + wire [31:0]ps_7_M_AXI_GP0_WDATA; + wire [11:0]ps_7_M_AXI_GP0_WID; + wire ps_7_M_AXI_GP0_WLAST; + wire ps_7_M_AXI_GP0_WREADY; + wire [3:0]ps_7_M_AXI_GP0_WSTRB; + wire ps_7_M_AXI_GP0_WVALID; + wire [0:0]rst_ps_7_166M_interconnect_aresetn; + wire [0:0]rst_ps_7_166M_peripheral_aresetn; + wire [0:0]util_vector_logic_0_Res; + wire [0:0]util_vector_logic_1_Res; + wire [0:0]util_vector_logic_2_Res; + wire [15:0]xlconcat_0_dout; + wire [63:0]xlconcat_0_dout1; + wire [31:0]xlconcat_1_dout; + wire [31:0]xlconcat_2_dout; + + assign HDMI_INTn_1 = HDMI_INTn; + assign IIC_0_scl_o = ps7_IIC_0_SCL_O; + assign IIC_0_scl_t = ps7_IIC_0_SCL_T; + assign IIC_0_sda_o = ps7_IIC_0_SDA_O; + assign IIC_0_sda_t = ps7_IIC_0_SDA_T; + assign MEMS_INTn_1 = MEMS_INTn; + assign SW_1 = SW[3:0]; + assign ps7_IIC_0_SCL_I = IIC_0_scl_i; + assign ps7_IIC_0_SDA_I = IIC_0_sda_i; + GND GND + (.G(GND_1)); + VCC VCC + (.P(VCC_1)); + z_turn_proc_sys_reset_3_0 proc_sys_reset_0 + (.aux_reset_in(VCC_1), + .dcm_locked(VCC_1), + .ext_reset_in(ps_7_FCLK_RESET0_N), + .mb_debug_sys_rst(GND_1), + .slowest_sync_clk(ps_7_FCLK_CLK1)); + z_turn_rst_ps_7_166M_0 proc_sys_reset_1 + (.aux_reset_in(VCC_1), + .dcm_locked(VCC_1), + .ext_reset_in(ps_7_FCLK_RESET1_N), + .interconnect_aresetn(rst_ps_7_166M_interconnect_aresetn), + .mb_debug_sys_rst(GND_1), + .peripheral_aresetn(rst_ps_7_166M_peripheral_aresetn), + .slowest_sync_clk(ps_7_FCLK_CLK0)); + z_turn_proc_sys_reset1_0 proc_sys_reset_2 + (.aux_reset_in(VCC_1), + .dcm_locked(VCC_1), + .ext_reset_in(ps_7_FCLK_RESET2_N), + .interconnect_aresetn(proc_sys_reset2_interconnect_aresetn), + .mb_debug_sys_rst(GND_1), + .peripheral_aresetn(proc_sys_reset2_peripheral_aresetn), + .slowest_sync_clk(ps_7_FCLK_CLK2)); + z_turn_proc_sys_reset_1_0 proc_sys_reset_3 + (.aux_reset_in(VCC_1), + .dcm_locked(VCC_1), + .ext_reset_in(ps_7_FCLK_RESET3_N), + .mb_debug_sys_rst(GND_1), + .slowest_sync_clk(ps_7_FCLK_CLK3)); + z_turn_processing_system7_0_0 ps7 + (.DDR_Addr(DDR_addr[14:0]), + .DDR_BankAddr(DDR_ba[2:0]), + .DDR_CAS_n(DDR_cas_n), + .DDR_CKE(DDR_cke), + .DDR_CS_n(DDR_cs_n), + .DDR_Clk(DDR_ck_p), + .DDR_Clk_n(DDR_ck_n), + .DDR_DM(DDR_dm[3:0]), + .DDR_DQ(DDR_dq[31:0]), + .DDR_DQS(DDR_dqs_p[3:0]), + .DDR_DQS_n(DDR_dqs_n[3:0]), + .DDR_DRSTB(DDR_reset_n), + .DDR_ODT(DDR_odt), + .DDR_RAS_n(DDR_ras_n), + .DDR_VRN(FIXED_IO_ddr_vrn), + .DDR_VRP(FIXED_IO_ddr_vrp), + .DDR_WEB(DDR_we_n), + .FCLK_CLK0(ps_7_FCLK_CLK1), + .FCLK_CLK1(ps_7_FCLK_CLK0), + .FCLK_CLK2(ps_7_FCLK_CLK2), + .FCLK_CLK3(ps_7_FCLK_CLK3), + .FCLK_RESET0_N(ps_7_FCLK_RESET0_N), + .FCLK_RESET1_N(ps_7_FCLK_RESET1_N), + .FCLK_RESET2_N(ps_7_FCLK_RESET2_N), + .FCLK_RESET3_N(ps_7_FCLK_RESET3_N), + .GPIO_I(xlconcat_0_dout1), + .I2C0_SCL_I(ps7_IIC_0_SCL_I), + .I2C0_SCL_O(ps7_IIC_0_SCL_O), + .I2C0_SCL_T(ps7_IIC_0_SCL_T), + .I2C0_SDA_I(ps7_IIC_0_SDA_I), + .I2C0_SDA_O(ps7_IIC_0_SDA_O), + .I2C0_SDA_T(ps7_IIC_0_SDA_T), + .IRQ_F2P(xlconcat_0_dout), + .MIO(FIXED_IO_mio[53:0]), + .M_AXI_GP0_ACLK(ps_7_FCLK_CLK0), + .M_AXI_GP0_ARADDR(ps_7_M_AXI_GP0_ARADDR), + .M_AXI_GP0_ARBURST(ps_7_M_AXI_GP0_ARBURST), + .M_AXI_GP0_ARCACHE(ps_7_M_AXI_GP0_ARCACHE), + .M_AXI_GP0_ARID(ps_7_M_AXI_GP0_ARID), + .M_AXI_GP0_ARLEN(ps_7_M_AXI_GP0_ARLEN), + .M_AXI_GP0_ARLOCK(ps_7_M_AXI_GP0_ARLOCK), + .M_AXI_GP0_ARPROT(ps_7_M_AXI_GP0_ARPROT), + .M_AXI_GP0_ARQOS(ps_7_M_AXI_GP0_ARQOS), + .M_AXI_GP0_ARREADY(ps_7_M_AXI_GP0_ARREADY), + .M_AXI_GP0_ARSIZE(ps_7_M_AXI_GP0_ARSIZE), + .M_AXI_GP0_ARVALID(ps_7_M_AXI_GP0_ARVALID), + .M_AXI_GP0_AWADDR(ps_7_M_AXI_GP0_AWADDR), + .M_AXI_GP0_AWBURST(ps_7_M_AXI_GP0_AWBURST), + .M_AXI_GP0_AWCACHE(ps_7_M_AXI_GP0_AWCACHE), + .M_AXI_GP0_AWID(ps_7_M_AXI_GP0_AWID), + .M_AXI_GP0_AWLEN(ps_7_M_AXI_GP0_AWLEN), + .M_AXI_GP0_AWLOCK(ps_7_M_AXI_GP0_AWLOCK), + .M_AXI_GP0_AWPROT(ps_7_M_AXI_GP0_AWPROT), + .M_AXI_GP0_AWQOS(ps_7_M_AXI_GP0_AWQOS), + .M_AXI_GP0_AWREADY(ps_7_M_AXI_GP0_AWREADY), + .M_AXI_GP0_AWSIZE(ps_7_M_AXI_GP0_AWSIZE), + .M_AXI_GP0_AWVALID(ps_7_M_AXI_GP0_AWVALID), + .M_AXI_GP0_BID({ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID,ps_7_M_AXI_GP0_BID}), + .M_AXI_GP0_BREADY(ps_7_M_AXI_GP0_BREADY), + .M_AXI_GP0_BRESP({ps_7_M_AXI_GP0_BRESP,ps_7_M_AXI_GP0_BRESP}), + .M_AXI_GP0_BVALID(ps_7_M_AXI_GP0_BVALID), + .M_AXI_GP0_RDATA({ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA,ps_7_M_AXI_GP0_RDATA}), + .M_AXI_GP0_RID({ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID,ps_7_M_AXI_GP0_RID}), + .M_AXI_GP0_RLAST(ps_7_M_AXI_GP0_RLAST), + .M_AXI_GP0_RREADY(ps_7_M_AXI_GP0_RREADY), + .M_AXI_GP0_RRESP({ps_7_M_AXI_GP0_RRESP,ps_7_M_AXI_GP0_RRESP}), + .M_AXI_GP0_RVALID(ps_7_M_AXI_GP0_RVALID), + .M_AXI_GP0_WDATA(ps_7_M_AXI_GP0_WDATA), + .M_AXI_GP0_WID(ps_7_M_AXI_GP0_WID), + .M_AXI_GP0_WLAST(ps_7_M_AXI_GP0_WLAST), + .M_AXI_GP0_WREADY(ps_7_M_AXI_GP0_WREADY), + .M_AXI_GP0_WSTRB(ps_7_M_AXI_GP0_WSTRB), + .M_AXI_GP0_WVALID(ps_7_M_AXI_GP0_WVALID), + .PS_CLK(FIXED_IO_ps_clk), + .PS_PORB(FIXED_IO_ps_porb), + .PS_SRSTB(FIXED_IO_ps_srstb), + .S_AXI_HP0_ACLK(ps_7_FCLK_CLK2), + .S_AXI_HP0_ARADDR({io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR,io2axis_M00_AXI_ARADDR}), + .S_AXI_HP0_ARBURST({io2axis_M00_AXI_ARBURST,io2axis_M00_AXI_ARBURST}), + .S_AXI_HP0_ARCACHE({io2axis_M00_AXI_ARCACHE,io2axis_M00_AXI_ARCACHE,io2axis_M00_AXI_ARCACHE,io2axis_M00_AXI_ARCACHE}), + .S_AXI_HP0_ARID({io2axis_M00_AXI_ARID,io2axis_M00_AXI_ARID,io2axis_M00_AXI_ARID,io2axis_M00_AXI_ARID,io2axis_M00_AXI_ARID,io2axis_M00_AXI_ARID}), + .S_AXI_HP0_ARLEN({io2axis_M00_AXI_ARLEN,io2axis_M00_AXI_ARLEN,io2axis_M00_AXI_ARLEN,io2axis_M00_AXI_ARLEN}), + .S_AXI_HP0_ARLOCK({io2axis_M00_AXI_ARLOCK,io2axis_M00_AXI_ARLOCK}), + .S_AXI_HP0_ARPROT({io2axis_M00_AXI_ARPROT,io2axis_M00_AXI_ARPROT,io2axis_M00_AXI_ARPROT}), + .S_AXI_HP0_ARQOS({io2axis_M00_AXI_ARQOS,io2axis_M00_AXI_ARQOS,io2axis_M00_AXI_ARQOS,io2axis_M00_AXI_ARQOS}), + .S_AXI_HP0_ARREADY(io2axis_M00_AXI_ARREADY), + .S_AXI_HP0_ARSIZE({io2axis_M00_AXI_ARSIZE,io2axis_M00_AXI_ARSIZE,io2axis_M00_AXI_ARSIZE}), + .S_AXI_HP0_ARVALID(io2axis_M00_AXI_ARVALID), + .S_AXI_HP0_AWADDR({io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR,io2axis_M00_AXI_AWADDR}), + .S_AXI_HP0_AWBURST({io2axis_M00_AXI_AWBURST,io2axis_M00_AXI_AWBURST}), + .S_AXI_HP0_AWCACHE({io2axis_M00_AXI_AWCACHE,io2axis_M00_AXI_AWCACHE,io2axis_M00_AXI_AWCACHE,io2axis_M00_AXI_AWCACHE}), + .S_AXI_HP0_AWID({io2axis_M00_AXI_AWID,io2axis_M00_AXI_AWID,io2axis_M00_AXI_AWID,io2axis_M00_AXI_AWID,io2axis_M00_AXI_AWID,io2axis_M00_AXI_AWID}), + .S_AXI_HP0_AWLEN({io2axis_M00_AXI_AWLEN,io2axis_M00_AXI_AWLEN,io2axis_M00_AXI_AWLEN,io2axis_M00_AXI_AWLEN}), + .S_AXI_HP0_AWLOCK({io2axis_M00_AXI_AWLOCK,io2axis_M00_AXI_AWLOCK}), + .S_AXI_HP0_AWPROT({io2axis_M00_AXI_AWPROT,io2axis_M00_AXI_AWPROT,io2axis_M00_AXI_AWPROT}), + .S_AXI_HP0_AWQOS({io2axis_M00_AXI_AWQOS,io2axis_M00_AXI_AWQOS,io2axis_M00_AXI_AWQOS,io2axis_M00_AXI_AWQOS}), + .S_AXI_HP0_AWREADY(io2axis_M00_AXI_AWREADY), + .S_AXI_HP0_AWSIZE({io2axis_M00_AXI_AWSIZE,io2axis_M00_AXI_AWSIZE,io2axis_M00_AXI_AWSIZE}), + .S_AXI_HP0_AWVALID(io2axis_M00_AXI_AWVALID), + .S_AXI_HP0_BID(io2axis_M00_AXI_BID), + .S_AXI_HP0_BREADY(io2axis_M00_AXI_BREADY), + .S_AXI_HP0_BRESP(io2axis_M00_AXI_BRESP), + .S_AXI_HP0_BVALID(io2axis_M00_AXI_BVALID), + .S_AXI_HP0_RDATA(io2axis_M00_AXI_RDATA), + .S_AXI_HP0_RDISSUECAP1_EN(GND_1), + .S_AXI_HP0_RID(io2axis_M00_AXI_RID), + .S_AXI_HP0_RLAST(io2axis_M00_AXI_RLAST), + .S_AXI_HP0_RREADY(io2axis_M00_AXI_RREADY), + .S_AXI_HP0_RRESP(io2axis_M00_AXI_RRESP), + .S_AXI_HP0_RVALID(io2axis_M00_AXI_RVALID), + .S_AXI_HP0_WDATA({io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA,io2axis_M00_AXI_WDATA}), + .S_AXI_HP0_WID({io2axis_M00_AXI_WID,io2axis_M00_AXI_WID,io2axis_M00_AXI_WID,io2axis_M00_AXI_WID,io2axis_M00_AXI_WID,io2axis_M00_AXI_WID}), + .S_AXI_HP0_WLAST(io2axis_M00_AXI_WLAST), + .S_AXI_HP0_WREADY(io2axis_M00_AXI_WREADY), + .S_AXI_HP0_WRISSUECAP1_EN(GND_1), + .S_AXI_HP0_WSTRB({io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB,io2axis_M00_AXI_WSTRB}), + .S_AXI_HP0_WVALID(io2axis_M00_AXI_WVALID), + .USB0_VBUS_PWRFAULT(GND_1)); + z_turn_util_vector_logic_0_0 util_vector_logic_0 + (.Op1(HDMI_INTn_1), + .Res(util_vector_logic_0_Res)); + z_turn_util_vector_logic_0_1 util_vector_logic_1 + (.Op1(MEMS_INTn_1), + .Res(util_vector_logic_1_Res)); + z_turn_util_vector_logic_1_0 util_vector_logic_2 + (.Op1(MEMS_INTn_1), + .Res(util_vector_logic_2_Res)); + z_turn_xlconcat_0_0 xlconcat + (.In0(util_vector_logic_0_Res), + .In1(GND_1), + .In10(GND_1), + .In11(GND_1), + .In12(GND_1), + .In13(GND_1), + .In14(GND_1), + .In15(GND_1), + .In2(util_vector_logic_1_Res), + .In3(util_vector_logic_2_Res), + .In4(GND_1), + .In5(GND_1), + .In6(GND_1), + .In7(GND_1), + .In8(GND_1), + .In9(GND_1), + .dout(xlconcat_0_dout)); + z_turn_xlconcat_0_1 xlconcat_0 + (.In0(xlconcat_1_dout), + .In1(xlconcat_2_dout), + .dout(xlconcat_0_dout1)); + z_turn_xlconcat_0_2 xlconcat_1 + (.In0(GND_1), + .In1(GND_1), + .In10(GND_1), + .In11(GND_1), + .In12(GND_1), + .In13(GND_1), + .In14(GND_1), + .In15(GND_1), + .In16(GND_1), + .In17(GND_1), + .In18(GND_1), + .In19(GND_1), + .In2(GND_1), + .In20(GND_1), + .In21(GND_1), + .In22(GND_1), + .In23(GND_1), + .In24(GND_1), + .In25(GND_1), + .In26(GND_1), + .In27(GND_1), + .In28(GND_1), + .In29(GND_1), + .In3(GND_1), + .In30(GND_1), + .In31(GND_1), + .In4(GND_1), + .In5(GND_1), + .In6(GND_1), + .In7(GND_1), + .In8(GND_1), + .In9(GND_1), + .dout(xlconcat_1_dout)); + z_turn_xlconcat_1_0 xlconcat_2 + (.In0(GND_1), + .In1(GND_1), + .In10(GND_1), + .In11(GND_1), + .In12(GND_1), + .In13(GND_1), + .In14(GND_1), + .In15(GND_1), + .In16(GND_1), + .In17(GND_1), + .In18(GND_1), + .In19(GND_1), + .In2(GND_1), + .In20(GND_1), + .In21(GND_1), + .In22(GND_1), + .In23(GND_1), + .In24(SW_1), + .In25(GND_1), + .In26(GND_1), + .In27(GND_1), + .In28(GND_1), + .In3(GND_1), + .In4(GND_1), + .In5(GND_1), + .In6(GND_1), + .In7(GND_1), + .In8(GND_1), + .In9(GND_1), + .dout(xlconcat_2_dout)); + z_turn_ps_7_axi_periph_0 z_turn_ps_7_axi_periph_0 + (.ACLK(ps_7_FCLK_CLK0), + .ARESETN(rst_ps_7_166M_interconnect_aresetn), + .M00_ACLK(ps_7_FCLK_CLK0), + .M00_ARESETN(rst_ps_7_166M_peripheral_aresetn), + .M00_AXI_arready(GND_1), + .M00_AXI_awready(GND_1), + .M00_AXI_bid(GND_1), + .M00_AXI_bresp(GND_1), + .M00_AXI_bvalid(GND_1), + .M00_AXI_rdata(GND_1), + .M00_AXI_rid(GND_1), + .M00_AXI_rlast(GND_1), + .M00_AXI_rresp(GND_1), + .M00_AXI_rvalid(GND_1), + .M00_AXI_wready(GND_1), + .S00_ACLK(ps_7_FCLK_CLK0), + .S00_ARESETN(rst_ps_7_166M_peripheral_aresetn), + .S00_AXI_araddr(ps_7_M_AXI_GP0_ARADDR[0]), + .S00_AXI_arburst(ps_7_M_AXI_GP0_ARBURST[0]), + .S00_AXI_arcache(ps_7_M_AXI_GP0_ARCACHE[0]), + .S00_AXI_arid(ps_7_M_AXI_GP0_ARID[0]), + .S00_AXI_arlen(ps_7_M_AXI_GP0_ARLEN[0]), + .S00_AXI_arlock(ps_7_M_AXI_GP0_ARLOCK[0]), + .S00_AXI_arprot(ps_7_M_AXI_GP0_ARPROT[0]), + .S00_AXI_arqos(ps_7_M_AXI_GP0_ARQOS[0]), + .S00_AXI_arready(ps_7_M_AXI_GP0_ARREADY), + .S00_AXI_arsize(ps_7_M_AXI_GP0_ARSIZE[0]), + .S00_AXI_arvalid(ps_7_M_AXI_GP0_ARVALID), + .S00_AXI_awaddr(ps_7_M_AXI_GP0_AWADDR[0]), + .S00_AXI_awburst(ps_7_M_AXI_GP0_AWBURST[0]), + .S00_AXI_awcache(ps_7_M_AXI_GP0_AWCACHE[0]), + .S00_AXI_awid(ps_7_M_AXI_GP0_AWID[0]), + .S00_AXI_awlen(ps_7_M_AXI_GP0_AWLEN[0]), + .S00_AXI_awlock(ps_7_M_AXI_GP0_AWLOCK[0]), + .S00_AXI_awprot(ps_7_M_AXI_GP0_AWPROT[0]), + .S00_AXI_awqos(ps_7_M_AXI_GP0_AWQOS[0]), + .S00_AXI_awready(ps_7_M_AXI_GP0_AWREADY), + .S00_AXI_awsize(ps_7_M_AXI_GP0_AWSIZE[0]), + .S00_AXI_awvalid(ps_7_M_AXI_GP0_AWVALID), + .S00_AXI_bid(ps_7_M_AXI_GP0_BID), + .S00_AXI_bready(ps_7_M_AXI_GP0_BREADY), + .S00_AXI_bresp(ps_7_M_AXI_GP0_BRESP), + .S00_AXI_bvalid(ps_7_M_AXI_GP0_BVALID), + .S00_AXI_rdata(ps_7_M_AXI_GP0_RDATA), + .S00_AXI_rid(ps_7_M_AXI_GP0_RID), + .S00_AXI_rlast(ps_7_M_AXI_GP0_RLAST), + .S00_AXI_rready(ps_7_M_AXI_GP0_RREADY), + .S00_AXI_rresp(ps_7_M_AXI_GP0_RRESP), + .S00_AXI_rvalid(ps_7_M_AXI_GP0_RVALID), + .S00_AXI_wdata(ps_7_M_AXI_GP0_WDATA[0]), + .S00_AXI_wid(ps_7_M_AXI_GP0_WID[0]), + .S00_AXI_wlast(ps_7_M_AXI_GP0_WLAST), + .S00_AXI_wready(ps_7_M_AXI_GP0_WREADY), + .S00_AXI_wstrb(ps_7_M_AXI_GP0_WSTRB[0]), + .S00_AXI_wvalid(ps_7_M_AXI_GP0_WVALID)); + z_turn_ps_7_axi_periph_1 z_turn_ps_7_axi_periph_1 + (.ACLK(ps_7_FCLK_CLK2), + .ARESETN(proc_sys_reset2_interconnect_aresetn), + .M00_ACLK(ps_7_FCLK_CLK2), + .M00_ARESETN(proc_sys_reset2_peripheral_aresetn), + .M00_AXI_araddr(io2axis_M00_AXI_ARADDR), + .M00_AXI_arburst(io2axis_M00_AXI_ARBURST), + .M00_AXI_arcache(io2axis_M00_AXI_ARCACHE), + .M00_AXI_arid(io2axis_M00_AXI_ARID), + .M00_AXI_arlen(io2axis_M00_AXI_ARLEN), + .M00_AXI_arlock(io2axis_M00_AXI_ARLOCK), + .M00_AXI_arprot(io2axis_M00_AXI_ARPROT), + .M00_AXI_arqos(io2axis_M00_AXI_ARQOS), + .M00_AXI_arready(io2axis_M00_AXI_ARREADY), + .M00_AXI_arsize(io2axis_M00_AXI_ARSIZE), + .M00_AXI_arvalid(io2axis_M00_AXI_ARVALID), + .M00_AXI_awaddr(io2axis_M00_AXI_AWADDR), + .M00_AXI_awburst(io2axis_M00_AXI_AWBURST), + .M00_AXI_awcache(io2axis_M00_AXI_AWCACHE), + .M00_AXI_awid(io2axis_M00_AXI_AWID), + .M00_AXI_awlen(io2axis_M00_AXI_AWLEN), + .M00_AXI_awlock(io2axis_M00_AXI_AWLOCK), + .M00_AXI_awprot(io2axis_M00_AXI_AWPROT), + .M00_AXI_awqos(io2axis_M00_AXI_AWQOS), + .M00_AXI_awready(io2axis_M00_AXI_AWREADY), + .M00_AXI_awsize(io2axis_M00_AXI_AWSIZE), + .M00_AXI_awvalid(io2axis_M00_AXI_AWVALID), + .M00_AXI_bid(io2axis_M00_AXI_BID[0]), + .M00_AXI_bready(io2axis_M00_AXI_BREADY), + .M00_AXI_bresp(io2axis_M00_AXI_BRESP[0]), + .M00_AXI_bvalid(io2axis_M00_AXI_BVALID), + .M00_AXI_rdata(io2axis_M00_AXI_RDATA[0]), + .M00_AXI_rid(io2axis_M00_AXI_RID[0]), + .M00_AXI_rlast(io2axis_M00_AXI_RLAST), + .M00_AXI_rready(io2axis_M00_AXI_RREADY), + .M00_AXI_rresp(io2axis_M00_AXI_RRESP[0]), + .M00_AXI_rvalid(io2axis_M00_AXI_RVALID), + .M00_AXI_wdata(io2axis_M00_AXI_WDATA), + .M00_AXI_wid(io2axis_M00_AXI_WID), + .M00_AXI_wlast(io2axis_M00_AXI_WLAST), + .M00_AXI_wready(io2axis_M00_AXI_WREADY), + .M00_AXI_wstrb(io2axis_M00_AXI_WSTRB), + .M00_AXI_wvalid(io2axis_M00_AXI_WVALID), + .S00_ACLK(ps_7_FCLK_CLK2), + .S00_ARESETN(proc_sys_reset2_peripheral_aresetn), + .S00_AXI_araddr(GND_1), + .S00_AXI_arburst(GND_1), + .S00_AXI_arcache(GND_1), + .S00_AXI_arid(GND_1), + .S00_AXI_arlen(GND_1), + .S00_AXI_arlock(GND_1), + .S00_AXI_arprot(GND_1), + .S00_AXI_arqos(GND_1), + .S00_AXI_arsize(GND_1), + .S00_AXI_arvalid(GND_1), + .S00_AXI_awaddr(GND_1), + .S00_AXI_awburst(GND_1), + .S00_AXI_awcache(GND_1), + .S00_AXI_awid(GND_1), + .S00_AXI_awlen(GND_1), + .S00_AXI_awlock(GND_1), + .S00_AXI_awprot(GND_1), + .S00_AXI_awqos(GND_1), + .S00_AXI_awsize(GND_1), + .S00_AXI_awvalid(GND_1), + .S00_AXI_bready(GND_1), + .S00_AXI_rready(GND_1), + .S00_AXI_wdata(GND_1), + .S00_AXI_wid(GND_1), + .S00_AXI_wlast(GND_1), + .S00_AXI_wstrb(GND_1), + .S00_AXI_wvalid(GND_1)); +endmodule + +module z_turn_ps_7_axi_periph_0 + (ACLK, + ARESETN, + M00_ACLK, + M00_ARESETN, + M00_AXI_araddr, + M00_AXI_arburst, + M00_AXI_arcache, + M00_AXI_arid, + M00_AXI_arlen, + M00_AXI_arlock, + M00_AXI_arprot, + M00_AXI_arqos, + M00_AXI_arready, + M00_AXI_arsize, + M00_AXI_arvalid, + M00_AXI_awaddr, + M00_AXI_awburst, + M00_AXI_awcache, + M00_AXI_awid, + M00_AXI_awlen, + M00_AXI_awlock, + M00_AXI_awprot, + M00_AXI_awqos, + M00_AXI_awready, + M00_AXI_awsize, + M00_AXI_awvalid, + M00_AXI_bid, + M00_AXI_bready, + M00_AXI_bresp, + M00_AXI_bvalid, + M00_AXI_rdata, + M00_AXI_rid, + M00_AXI_rlast, + M00_AXI_rready, + M00_AXI_rresp, + M00_AXI_rvalid, + M00_AXI_wdata, + M00_AXI_wid, + M00_AXI_wlast, + M00_AXI_wready, + M00_AXI_wstrb, + M00_AXI_wvalid, + S00_ACLK, + S00_ARESETN, + S00_AXI_araddr, + S00_AXI_arburst, + S00_AXI_arcache, + S00_AXI_arid, + S00_AXI_arlen, + S00_AXI_arlock, + S00_AXI_arprot, + S00_AXI_arqos, + S00_AXI_arready, + S00_AXI_arsize, + S00_AXI_arvalid, + S00_AXI_awaddr, + S00_AXI_awburst, + S00_AXI_awcache, + S00_AXI_awid, + S00_AXI_awlen, + S00_AXI_awlock, + S00_AXI_awprot, + S00_AXI_awqos, + S00_AXI_awready, + S00_AXI_awsize, + S00_AXI_awvalid, + S00_AXI_bid, + S00_AXI_bready, + S00_AXI_bresp, + S00_AXI_bvalid, + S00_AXI_rdata, + S00_AXI_rid, + S00_AXI_rlast, + S00_AXI_rready, + S00_AXI_rresp, + S00_AXI_rvalid, + S00_AXI_wdata, + S00_AXI_wid, + S00_AXI_wlast, + S00_AXI_wready, + S00_AXI_wstrb, + S00_AXI_wvalid); + input ACLK; + input [0:0]ARESETN; + input M00_ACLK; + input [0:0]M00_ARESETN; + output M00_AXI_araddr; + output M00_AXI_arburst; + output M00_AXI_arcache; + output M00_AXI_arid; + output M00_AXI_arlen; + output M00_AXI_arlock; + output M00_AXI_arprot; + output M00_AXI_arqos; + input M00_AXI_arready; + output M00_AXI_arsize; + output M00_AXI_arvalid; + output M00_AXI_awaddr; + output M00_AXI_awburst; + output M00_AXI_awcache; + output M00_AXI_awid; + output M00_AXI_awlen; + output M00_AXI_awlock; + output M00_AXI_awprot; + output M00_AXI_awqos; + input M00_AXI_awready; + output M00_AXI_awsize; + output M00_AXI_awvalid; + input M00_AXI_bid; + output M00_AXI_bready; + input M00_AXI_bresp; + input M00_AXI_bvalid; + input M00_AXI_rdata; + input M00_AXI_rid; + input M00_AXI_rlast; + output M00_AXI_rready; + input M00_AXI_rresp; + input M00_AXI_rvalid; + output M00_AXI_wdata; + output M00_AXI_wid; + output M00_AXI_wlast; + input M00_AXI_wready; + output M00_AXI_wstrb; + output M00_AXI_wvalid; + input S00_ACLK; + input [0:0]S00_ARESETN; + input S00_AXI_araddr; + input S00_AXI_arburst; + input S00_AXI_arcache; + input S00_AXI_arid; + input S00_AXI_arlen; + input S00_AXI_arlock; + input S00_AXI_arprot; + input S00_AXI_arqos; + output S00_AXI_arready; + input S00_AXI_arsize; + input S00_AXI_arvalid; + input S00_AXI_awaddr; + input S00_AXI_awburst; + input S00_AXI_awcache; + input S00_AXI_awid; + input S00_AXI_awlen; + input S00_AXI_awlock; + input S00_AXI_awprot; + input S00_AXI_awqos; + output S00_AXI_awready; + input S00_AXI_awsize; + input S00_AXI_awvalid; + output S00_AXI_bid; + input S00_AXI_bready; + output S00_AXI_bresp; + output S00_AXI_bvalid; + output S00_AXI_rdata; + output S00_AXI_rid; + output S00_AXI_rlast; + input S00_AXI_rready; + output S00_AXI_rresp; + output S00_AXI_rvalid; + input S00_AXI_wdata; + input S00_AXI_wid; + input S00_AXI_wlast; + output S00_AXI_wready; + input S00_AXI_wstrb; + input S00_AXI_wvalid; + + wire S00_ACLK_1; + wire [0:0]S00_ARESETN_1; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARADDR; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARBURST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARCACHE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARLEN; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARLOCK; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARPROT; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARQOS; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARSIZE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_ARVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWADDR; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWBURST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWCACHE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWLEN; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWLOCK; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWPROT; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWQOS; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWSIZE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_AWVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_BID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_BREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_BRESP; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_BVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_RDATA; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_RID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_RLAST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_RREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_RRESP; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_RVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_WDATA; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_WID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_WLAST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_WREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_WSTRB; + wire s00_couplers_to_z_turn_ps_7_axi_periph_0_WVALID; + wire z_turn_ps_7_axi_periph_0_ACLK_net; + wire [0:0]z_turn_ps_7_axi_periph_0_ARESETN_net; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARADDR; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARBURST; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARCACHE; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARLEN; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARLOCK; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARPROT; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARQOS; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARREADY; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARSIZE; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_ARVALID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWADDR; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWBURST; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWCACHE; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWLEN; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWLOCK; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWPROT; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWQOS; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWREADY; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWSIZE; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_AWVALID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_BID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_BREADY; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_BRESP; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_BVALID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_RDATA; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_RID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_RLAST; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_RREADY; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_RRESP; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_RVALID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_WDATA; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_WID; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_WLAST; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_WREADY; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_WSTRB; + wire z_turn_ps_7_axi_periph_0_to_s00_couplers_WVALID; + + assign M00_AXI_araddr = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARADDR; + assign M00_AXI_arburst = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARBURST; + assign M00_AXI_arcache = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARCACHE; + assign M00_AXI_arid = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARID; + assign M00_AXI_arlen = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARLEN; + assign M00_AXI_arlock = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARLOCK; + assign M00_AXI_arprot = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARPROT; + assign M00_AXI_arqos = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARQOS; + assign M00_AXI_arsize = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARSIZE; + assign M00_AXI_arvalid = s00_couplers_to_z_turn_ps_7_axi_periph_0_ARVALID; + assign M00_AXI_awaddr = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWADDR; + assign M00_AXI_awburst = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWBURST; + assign M00_AXI_awcache = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWCACHE; + assign M00_AXI_awid = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWID; + assign M00_AXI_awlen = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWLEN; + assign M00_AXI_awlock = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWLOCK; + assign M00_AXI_awprot = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWPROT; + assign M00_AXI_awqos = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWQOS; + assign M00_AXI_awsize = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWSIZE; + assign M00_AXI_awvalid = s00_couplers_to_z_turn_ps_7_axi_periph_0_AWVALID; + assign M00_AXI_bready = s00_couplers_to_z_turn_ps_7_axi_periph_0_BREADY; + assign M00_AXI_rready = s00_couplers_to_z_turn_ps_7_axi_periph_0_RREADY; + assign M00_AXI_wdata = s00_couplers_to_z_turn_ps_7_axi_periph_0_WDATA; + assign M00_AXI_wid = s00_couplers_to_z_turn_ps_7_axi_periph_0_WID; + assign M00_AXI_wlast = s00_couplers_to_z_turn_ps_7_axi_periph_0_WLAST; + assign M00_AXI_wstrb = s00_couplers_to_z_turn_ps_7_axi_periph_0_WSTRB; + assign M00_AXI_wvalid = s00_couplers_to_z_turn_ps_7_axi_periph_0_WVALID; + assign S00_ACLK_1 = S00_ACLK; + assign S00_ARESETN_1 = S00_ARESETN[0]; + assign S00_AXI_arready = z_turn_ps_7_axi_periph_0_to_s00_couplers_ARREADY; + assign S00_AXI_awready = z_turn_ps_7_axi_periph_0_to_s00_couplers_AWREADY; + assign S00_AXI_bid = z_turn_ps_7_axi_periph_0_to_s00_couplers_BID; + assign S00_AXI_bresp = z_turn_ps_7_axi_periph_0_to_s00_couplers_BRESP; + assign S00_AXI_bvalid = z_turn_ps_7_axi_periph_0_to_s00_couplers_BVALID; + assign S00_AXI_rdata = z_turn_ps_7_axi_periph_0_to_s00_couplers_RDATA; + assign S00_AXI_rid = z_turn_ps_7_axi_periph_0_to_s00_couplers_RID; + assign S00_AXI_rlast = z_turn_ps_7_axi_periph_0_to_s00_couplers_RLAST; + assign S00_AXI_rresp = z_turn_ps_7_axi_periph_0_to_s00_couplers_RRESP; + assign S00_AXI_rvalid = z_turn_ps_7_axi_periph_0_to_s00_couplers_RVALID; + assign S00_AXI_wready = z_turn_ps_7_axi_periph_0_to_s00_couplers_WREADY; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_ARREADY = M00_AXI_arready; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_AWREADY = M00_AXI_awready; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_BID = M00_AXI_bid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_BRESP = M00_AXI_bresp; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_BVALID = M00_AXI_bvalid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_RDATA = M00_AXI_rdata; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_RID = M00_AXI_rid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_RLAST = M00_AXI_rlast; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_RRESP = M00_AXI_rresp; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_RVALID = M00_AXI_rvalid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_0_WREADY = M00_AXI_wready; + assign z_turn_ps_7_axi_periph_0_ACLK_net = M00_ACLK; + assign z_turn_ps_7_axi_periph_0_ARESETN_net = M00_ARESETN[0]; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARADDR = S00_AXI_araddr; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARBURST = S00_AXI_arburst; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARCACHE = S00_AXI_arcache; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARID = S00_AXI_arid; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARLEN = S00_AXI_arlen; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARLOCK = S00_AXI_arlock; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARPROT = S00_AXI_arprot; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARQOS = S00_AXI_arqos; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARSIZE = S00_AXI_arsize; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_ARVALID = S00_AXI_arvalid; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWADDR = S00_AXI_awaddr; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWBURST = S00_AXI_awburst; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWCACHE = S00_AXI_awcache; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWID = S00_AXI_awid; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWLEN = S00_AXI_awlen; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWLOCK = S00_AXI_awlock; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWPROT = S00_AXI_awprot; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWQOS = S00_AXI_awqos; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWSIZE = S00_AXI_awsize; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_AWVALID = S00_AXI_awvalid; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_BREADY = S00_AXI_bready; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_RREADY = S00_AXI_rready; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_WDATA = S00_AXI_wdata; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_WID = S00_AXI_wid; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_WLAST = S00_AXI_wlast; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_WSTRB = S00_AXI_wstrb; + assign z_turn_ps_7_axi_periph_0_to_s00_couplers_WVALID = S00_AXI_wvalid; + s00_couplers_imp_QSJACF s00_couplers + (.M_ACLK(z_turn_ps_7_axi_periph_0_ACLK_net), + .M_ARESETN(z_turn_ps_7_axi_periph_0_ARESETN_net), + .M_AXI_araddr(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARADDR), + .M_AXI_arburst(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARBURST), + .M_AXI_arcache(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARCACHE), + .M_AXI_arid(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARID), + .M_AXI_arlen(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARLEN), + .M_AXI_arlock(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARLOCK), + .M_AXI_arprot(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARPROT), + .M_AXI_arqos(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARQOS), + .M_AXI_arready(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARREADY), + .M_AXI_arsize(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARSIZE), + .M_AXI_arvalid(s00_couplers_to_z_turn_ps_7_axi_periph_0_ARVALID), + .M_AXI_awaddr(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWADDR), + .M_AXI_awburst(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWBURST), + .M_AXI_awcache(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWCACHE), + .M_AXI_awid(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWID), + .M_AXI_awlen(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWLEN), + .M_AXI_awlock(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWLOCK), + .M_AXI_awprot(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWPROT), + .M_AXI_awqos(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWQOS), + .M_AXI_awready(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWREADY), + .M_AXI_awsize(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWSIZE), + .M_AXI_awvalid(s00_couplers_to_z_turn_ps_7_axi_periph_0_AWVALID), + .M_AXI_bid(s00_couplers_to_z_turn_ps_7_axi_periph_0_BID), + .M_AXI_bready(s00_couplers_to_z_turn_ps_7_axi_periph_0_BREADY), + .M_AXI_bresp(s00_couplers_to_z_turn_ps_7_axi_periph_0_BRESP), + .M_AXI_bvalid(s00_couplers_to_z_turn_ps_7_axi_periph_0_BVALID), + .M_AXI_rdata(s00_couplers_to_z_turn_ps_7_axi_periph_0_RDATA), + .M_AXI_rid(s00_couplers_to_z_turn_ps_7_axi_periph_0_RID), + .M_AXI_rlast(s00_couplers_to_z_turn_ps_7_axi_periph_0_RLAST), + .M_AXI_rready(s00_couplers_to_z_turn_ps_7_axi_periph_0_RREADY), + .M_AXI_rresp(s00_couplers_to_z_turn_ps_7_axi_periph_0_RRESP), + .M_AXI_rvalid(s00_couplers_to_z_turn_ps_7_axi_periph_0_RVALID), + .M_AXI_wdata(s00_couplers_to_z_turn_ps_7_axi_periph_0_WDATA), + .M_AXI_wid(s00_couplers_to_z_turn_ps_7_axi_periph_0_WID), + .M_AXI_wlast(s00_couplers_to_z_turn_ps_7_axi_periph_0_WLAST), + .M_AXI_wready(s00_couplers_to_z_turn_ps_7_axi_periph_0_WREADY), + .M_AXI_wstrb(s00_couplers_to_z_turn_ps_7_axi_periph_0_WSTRB), + .M_AXI_wvalid(s00_couplers_to_z_turn_ps_7_axi_periph_0_WVALID), + .S_ACLK(S00_ACLK_1), + .S_ARESETN(S00_ARESETN_1), + .S_AXI_araddr(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARADDR), + .S_AXI_arburst(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARBURST), + .S_AXI_arcache(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARCACHE), + .S_AXI_arid(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARID), + .S_AXI_arlen(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARLEN), + .S_AXI_arlock(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARLOCK), + .S_AXI_arprot(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARPROT), + .S_AXI_arqos(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARQOS), + .S_AXI_arready(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARREADY), + .S_AXI_arsize(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARSIZE), + .S_AXI_arvalid(z_turn_ps_7_axi_periph_0_to_s00_couplers_ARVALID), + .S_AXI_awaddr(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWADDR), + .S_AXI_awburst(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWBURST), + .S_AXI_awcache(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWCACHE), + .S_AXI_awid(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWID), + .S_AXI_awlen(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWLEN), + .S_AXI_awlock(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWLOCK), + .S_AXI_awprot(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWPROT), + .S_AXI_awqos(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWQOS), + .S_AXI_awready(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWREADY), + .S_AXI_awsize(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWSIZE), + .S_AXI_awvalid(z_turn_ps_7_axi_periph_0_to_s00_couplers_AWVALID), + .S_AXI_bid(z_turn_ps_7_axi_periph_0_to_s00_couplers_BID), + .S_AXI_bready(z_turn_ps_7_axi_periph_0_to_s00_couplers_BREADY), + .S_AXI_bresp(z_turn_ps_7_axi_periph_0_to_s00_couplers_BRESP), + .S_AXI_bvalid(z_turn_ps_7_axi_periph_0_to_s00_couplers_BVALID), + .S_AXI_rdata(z_turn_ps_7_axi_periph_0_to_s00_couplers_RDATA), + .S_AXI_rid(z_turn_ps_7_axi_periph_0_to_s00_couplers_RID), + .S_AXI_rlast(z_turn_ps_7_axi_periph_0_to_s00_couplers_RLAST), + .S_AXI_rready(z_turn_ps_7_axi_periph_0_to_s00_couplers_RREADY), + .S_AXI_rresp(z_turn_ps_7_axi_periph_0_to_s00_couplers_RRESP), + .S_AXI_rvalid(z_turn_ps_7_axi_periph_0_to_s00_couplers_RVALID), + .S_AXI_wdata(z_turn_ps_7_axi_periph_0_to_s00_couplers_WDATA), + .S_AXI_wid(z_turn_ps_7_axi_periph_0_to_s00_couplers_WID), + .S_AXI_wlast(z_turn_ps_7_axi_periph_0_to_s00_couplers_WLAST), + .S_AXI_wready(z_turn_ps_7_axi_periph_0_to_s00_couplers_WREADY), + .S_AXI_wstrb(z_turn_ps_7_axi_periph_0_to_s00_couplers_WSTRB), + .S_AXI_wvalid(z_turn_ps_7_axi_periph_0_to_s00_couplers_WVALID)); +endmodule + +module z_turn_ps_7_axi_periph_1 + (ACLK, + ARESETN, + M00_ACLK, + M00_ARESETN, + M00_AXI_araddr, + M00_AXI_arburst, + M00_AXI_arcache, + M00_AXI_arid, + M00_AXI_arlen, + M00_AXI_arlock, + M00_AXI_arprot, + M00_AXI_arqos, + M00_AXI_arready, + M00_AXI_arsize, + M00_AXI_arvalid, + M00_AXI_awaddr, + M00_AXI_awburst, + M00_AXI_awcache, + M00_AXI_awid, + M00_AXI_awlen, + M00_AXI_awlock, + M00_AXI_awprot, + M00_AXI_awqos, + M00_AXI_awready, + M00_AXI_awsize, + M00_AXI_awvalid, + M00_AXI_bid, + M00_AXI_bready, + M00_AXI_bresp, + M00_AXI_bvalid, + M00_AXI_rdata, + M00_AXI_rid, + M00_AXI_rlast, + M00_AXI_rready, + M00_AXI_rresp, + M00_AXI_rvalid, + M00_AXI_wdata, + M00_AXI_wid, + M00_AXI_wlast, + M00_AXI_wready, + M00_AXI_wstrb, + M00_AXI_wvalid, + S00_ACLK, + S00_ARESETN, + S00_AXI_araddr, + S00_AXI_arburst, + S00_AXI_arcache, + S00_AXI_arid, + S00_AXI_arlen, + S00_AXI_arlock, + S00_AXI_arprot, + S00_AXI_arqos, + S00_AXI_arready, + S00_AXI_arsize, + S00_AXI_arvalid, + S00_AXI_awaddr, + S00_AXI_awburst, + S00_AXI_awcache, + S00_AXI_awid, + S00_AXI_awlen, + S00_AXI_awlock, + S00_AXI_awprot, + S00_AXI_awqos, + S00_AXI_awready, + S00_AXI_awsize, + S00_AXI_awvalid, + S00_AXI_bid, + S00_AXI_bready, + S00_AXI_bresp, + S00_AXI_bvalid, + S00_AXI_rdata, + S00_AXI_rid, + S00_AXI_rlast, + S00_AXI_rready, + S00_AXI_rresp, + S00_AXI_rvalid, + S00_AXI_wdata, + S00_AXI_wid, + S00_AXI_wlast, + S00_AXI_wready, + S00_AXI_wstrb, + S00_AXI_wvalid); + input ACLK; + input [0:0]ARESETN; + input M00_ACLK; + input [0:0]M00_ARESETN; + output M00_AXI_araddr; + output M00_AXI_arburst; + output M00_AXI_arcache; + output M00_AXI_arid; + output M00_AXI_arlen; + output M00_AXI_arlock; + output M00_AXI_arprot; + output M00_AXI_arqos; + input M00_AXI_arready; + output M00_AXI_arsize; + output M00_AXI_arvalid; + output M00_AXI_awaddr; + output M00_AXI_awburst; + output M00_AXI_awcache; + output M00_AXI_awid; + output M00_AXI_awlen; + output M00_AXI_awlock; + output M00_AXI_awprot; + output M00_AXI_awqos; + input M00_AXI_awready; + output M00_AXI_awsize; + output M00_AXI_awvalid; + input M00_AXI_bid; + output M00_AXI_bready; + input M00_AXI_bresp; + input M00_AXI_bvalid; + input M00_AXI_rdata; + input M00_AXI_rid; + input M00_AXI_rlast; + output M00_AXI_rready; + input M00_AXI_rresp; + input M00_AXI_rvalid; + output M00_AXI_wdata; + output M00_AXI_wid; + output M00_AXI_wlast; + input M00_AXI_wready; + output M00_AXI_wstrb; + output M00_AXI_wvalid; + input S00_ACLK; + input [0:0]S00_ARESETN; + input S00_AXI_araddr; + input S00_AXI_arburst; + input S00_AXI_arcache; + input S00_AXI_arid; + input S00_AXI_arlen; + input S00_AXI_arlock; + input S00_AXI_arprot; + input S00_AXI_arqos; + output S00_AXI_arready; + input S00_AXI_arsize; + input S00_AXI_arvalid; + input S00_AXI_awaddr; + input S00_AXI_awburst; + input S00_AXI_awcache; + input S00_AXI_awid; + input S00_AXI_awlen; + input S00_AXI_awlock; + input S00_AXI_awprot; + input S00_AXI_awqos; + output S00_AXI_awready; + input S00_AXI_awsize; + input S00_AXI_awvalid; + output S00_AXI_bid; + input S00_AXI_bready; + output S00_AXI_bresp; + output S00_AXI_bvalid; + output S00_AXI_rdata; + output S00_AXI_rid; + output S00_AXI_rlast; + input S00_AXI_rready; + output S00_AXI_rresp; + output S00_AXI_rvalid; + input S00_AXI_wdata; + input S00_AXI_wid; + input S00_AXI_wlast; + output S00_AXI_wready; + input S00_AXI_wstrb; + input S00_AXI_wvalid; + + wire S00_ACLK_1; + wire [0:0]S00_ARESETN_1; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARADDR; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARBURST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARCACHE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARLEN; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARLOCK; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARPROT; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARQOS; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARSIZE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_ARVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWADDR; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWBURST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWCACHE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWLEN; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWLOCK; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWPROT; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWQOS; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWSIZE; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_AWVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_BID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_BREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_BRESP; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_BVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_RDATA; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_RID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_RLAST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_RREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_RRESP; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_RVALID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_WDATA; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_WID; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_WLAST; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_WREADY; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_WSTRB; + wire s00_couplers_to_z_turn_ps_7_axi_periph_1_WVALID; + wire z_turn_ps_7_axi_periph_1_ACLK_net; + wire [0:0]z_turn_ps_7_axi_periph_1_ARESETN_net; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARADDR; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARBURST; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARCACHE; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARLEN; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARLOCK; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARPROT; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARQOS; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARREADY; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARSIZE; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_ARVALID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWADDR; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWBURST; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWCACHE; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWLEN; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWLOCK; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWPROT; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWQOS; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWREADY; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWSIZE; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_AWVALID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_BID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_BREADY; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_BRESP; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_BVALID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_RDATA; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_RID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_RLAST; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_RREADY; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_RRESP; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_RVALID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_WDATA; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_WID; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_WLAST; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_WREADY; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_WSTRB; + wire z_turn_ps_7_axi_periph_1_to_s00_couplers_WVALID; + + assign M00_AXI_araddr = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARADDR; + assign M00_AXI_arburst = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARBURST; + assign M00_AXI_arcache = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARCACHE; + assign M00_AXI_arid = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARID; + assign M00_AXI_arlen = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARLEN; + assign M00_AXI_arlock = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARLOCK; + assign M00_AXI_arprot = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARPROT; + assign M00_AXI_arqos = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARQOS; + assign M00_AXI_arsize = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARSIZE; + assign M00_AXI_arvalid = s00_couplers_to_z_turn_ps_7_axi_periph_1_ARVALID; + assign M00_AXI_awaddr = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWADDR; + assign M00_AXI_awburst = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWBURST; + assign M00_AXI_awcache = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWCACHE; + assign M00_AXI_awid = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWID; + assign M00_AXI_awlen = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWLEN; + assign M00_AXI_awlock = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWLOCK; + assign M00_AXI_awprot = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWPROT; + assign M00_AXI_awqos = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWQOS; + assign M00_AXI_awsize = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWSIZE; + assign M00_AXI_awvalid = s00_couplers_to_z_turn_ps_7_axi_periph_1_AWVALID; + assign M00_AXI_bready = s00_couplers_to_z_turn_ps_7_axi_periph_1_BREADY; + assign M00_AXI_rready = s00_couplers_to_z_turn_ps_7_axi_periph_1_RREADY; + assign M00_AXI_wdata = s00_couplers_to_z_turn_ps_7_axi_periph_1_WDATA; + assign M00_AXI_wid = s00_couplers_to_z_turn_ps_7_axi_periph_1_WID; + assign M00_AXI_wlast = s00_couplers_to_z_turn_ps_7_axi_periph_1_WLAST; + assign M00_AXI_wstrb = s00_couplers_to_z_turn_ps_7_axi_periph_1_WSTRB; + assign M00_AXI_wvalid = s00_couplers_to_z_turn_ps_7_axi_periph_1_WVALID; + assign S00_ACLK_1 = S00_ACLK; + assign S00_ARESETN_1 = S00_ARESETN[0]; + assign S00_AXI_arready = z_turn_ps_7_axi_periph_1_to_s00_couplers_ARREADY; + assign S00_AXI_awready = z_turn_ps_7_axi_periph_1_to_s00_couplers_AWREADY; + assign S00_AXI_bid = z_turn_ps_7_axi_periph_1_to_s00_couplers_BID; + assign S00_AXI_bresp = z_turn_ps_7_axi_periph_1_to_s00_couplers_BRESP; + assign S00_AXI_bvalid = z_turn_ps_7_axi_periph_1_to_s00_couplers_BVALID; + assign S00_AXI_rdata = z_turn_ps_7_axi_periph_1_to_s00_couplers_RDATA; + assign S00_AXI_rid = z_turn_ps_7_axi_periph_1_to_s00_couplers_RID; + assign S00_AXI_rlast = z_turn_ps_7_axi_periph_1_to_s00_couplers_RLAST; + assign S00_AXI_rresp = z_turn_ps_7_axi_periph_1_to_s00_couplers_RRESP; + assign S00_AXI_rvalid = z_turn_ps_7_axi_periph_1_to_s00_couplers_RVALID; + assign S00_AXI_wready = z_turn_ps_7_axi_periph_1_to_s00_couplers_WREADY; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_ARREADY = M00_AXI_arready; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_AWREADY = M00_AXI_awready; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_BID = M00_AXI_bid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_BRESP = M00_AXI_bresp; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_BVALID = M00_AXI_bvalid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_RDATA = M00_AXI_rdata; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_RID = M00_AXI_rid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_RLAST = M00_AXI_rlast; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_RRESP = M00_AXI_rresp; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_RVALID = M00_AXI_rvalid; + assign s00_couplers_to_z_turn_ps_7_axi_periph_1_WREADY = M00_AXI_wready; + assign z_turn_ps_7_axi_periph_1_ACLK_net = M00_ACLK; + assign z_turn_ps_7_axi_periph_1_ARESETN_net = M00_ARESETN[0]; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARADDR = S00_AXI_araddr; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARBURST = S00_AXI_arburst; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARCACHE = S00_AXI_arcache; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARID = S00_AXI_arid; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARLEN = S00_AXI_arlen; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARLOCK = S00_AXI_arlock; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARPROT = S00_AXI_arprot; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARQOS = S00_AXI_arqos; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARSIZE = S00_AXI_arsize; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_ARVALID = S00_AXI_arvalid; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWADDR = S00_AXI_awaddr; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWBURST = S00_AXI_awburst; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWCACHE = S00_AXI_awcache; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWID = S00_AXI_awid; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWLEN = S00_AXI_awlen; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWLOCK = S00_AXI_awlock; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWPROT = S00_AXI_awprot; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWQOS = S00_AXI_awqos; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWSIZE = S00_AXI_awsize; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_AWVALID = S00_AXI_awvalid; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_BREADY = S00_AXI_bready; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_RREADY = S00_AXI_rready; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_WDATA = S00_AXI_wdata; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_WID = S00_AXI_wid; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_WLAST = S00_AXI_wlast; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_WSTRB = S00_AXI_wstrb; + assign z_turn_ps_7_axi_periph_1_to_s00_couplers_WVALID = S00_AXI_wvalid; + s00_couplers_imp_1N0XG9 s00_couplers + (.M_ACLK(z_turn_ps_7_axi_periph_1_ACLK_net), + .M_ARESETN(z_turn_ps_7_axi_periph_1_ARESETN_net), + .M_AXI_araddr(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARADDR), + .M_AXI_arburst(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARBURST), + .M_AXI_arcache(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARCACHE), + .M_AXI_arid(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARID), + .M_AXI_arlen(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARLEN), + .M_AXI_arlock(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARLOCK), + .M_AXI_arprot(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARPROT), + .M_AXI_arqos(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARQOS), + .M_AXI_arready(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARREADY), + .M_AXI_arsize(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARSIZE), + .M_AXI_arvalid(s00_couplers_to_z_turn_ps_7_axi_periph_1_ARVALID), + .M_AXI_awaddr(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWADDR), + .M_AXI_awburst(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWBURST), + .M_AXI_awcache(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWCACHE), + .M_AXI_awid(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWID), + .M_AXI_awlen(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWLEN), + .M_AXI_awlock(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWLOCK), + .M_AXI_awprot(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWPROT), + .M_AXI_awqos(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWQOS), + .M_AXI_awready(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWREADY), + .M_AXI_awsize(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWSIZE), + .M_AXI_awvalid(s00_couplers_to_z_turn_ps_7_axi_periph_1_AWVALID), + .M_AXI_bid(s00_couplers_to_z_turn_ps_7_axi_periph_1_BID), + .M_AXI_bready(s00_couplers_to_z_turn_ps_7_axi_periph_1_BREADY), + .M_AXI_bresp(s00_couplers_to_z_turn_ps_7_axi_periph_1_BRESP), + .M_AXI_bvalid(s00_couplers_to_z_turn_ps_7_axi_periph_1_BVALID), + .M_AXI_rdata(s00_couplers_to_z_turn_ps_7_axi_periph_1_RDATA), + .M_AXI_rid(s00_couplers_to_z_turn_ps_7_axi_periph_1_RID), + .M_AXI_rlast(s00_couplers_to_z_turn_ps_7_axi_periph_1_RLAST), + .M_AXI_rready(s00_couplers_to_z_turn_ps_7_axi_periph_1_RREADY), + .M_AXI_rresp(s00_couplers_to_z_turn_ps_7_axi_periph_1_RRESP), + .M_AXI_rvalid(s00_couplers_to_z_turn_ps_7_axi_periph_1_RVALID), + .M_AXI_wdata(s00_couplers_to_z_turn_ps_7_axi_periph_1_WDATA), + .M_AXI_wid(s00_couplers_to_z_turn_ps_7_axi_periph_1_WID), + .M_AXI_wlast(s00_couplers_to_z_turn_ps_7_axi_periph_1_WLAST), + .M_AXI_wready(s00_couplers_to_z_turn_ps_7_axi_periph_1_WREADY), + .M_AXI_wstrb(s00_couplers_to_z_turn_ps_7_axi_periph_1_WSTRB), + .M_AXI_wvalid(s00_couplers_to_z_turn_ps_7_axi_periph_1_WVALID), + .S_ACLK(S00_ACLK_1), + .S_ARESETN(S00_ARESETN_1), + .S_AXI_araddr(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARADDR), + .S_AXI_arburst(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARBURST), + .S_AXI_arcache(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARCACHE), + .S_AXI_arid(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARID), + .S_AXI_arlen(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARLEN), + .S_AXI_arlock(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARLOCK), + .S_AXI_arprot(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARPROT), + .S_AXI_arqos(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARQOS), + .S_AXI_arready(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARREADY), + .S_AXI_arsize(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARSIZE), + .S_AXI_arvalid(z_turn_ps_7_axi_periph_1_to_s00_couplers_ARVALID), + .S_AXI_awaddr(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWADDR), + .S_AXI_awburst(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWBURST), + .S_AXI_awcache(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWCACHE), + .S_AXI_awid(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWID), + .S_AXI_awlen(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWLEN), + .S_AXI_awlock(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWLOCK), + .S_AXI_awprot(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWPROT), + .S_AXI_awqos(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWQOS), + .S_AXI_awready(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWREADY), + .S_AXI_awsize(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWSIZE), + .S_AXI_awvalid(z_turn_ps_7_axi_periph_1_to_s00_couplers_AWVALID), + .S_AXI_bid(z_turn_ps_7_axi_periph_1_to_s00_couplers_BID), + .S_AXI_bready(z_turn_ps_7_axi_periph_1_to_s00_couplers_BREADY), + .S_AXI_bresp(z_turn_ps_7_axi_periph_1_to_s00_couplers_BRESP), + .S_AXI_bvalid(z_turn_ps_7_axi_periph_1_to_s00_couplers_BVALID), + .S_AXI_rdata(z_turn_ps_7_axi_periph_1_to_s00_couplers_RDATA), + .S_AXI_rid(z_turn_ps_7_axi_periph_1_to_s00_couplers_RID), + .S_AXI_rlast(z_turn_ps_7_axi_periph_1_to_s00_couplers_RLAST), + .S_AXI_rready(z_turn_ps_7_axi_periph_1_to_s00_couplers_RREADY), + .S_AXI_rresp(z_turn_ps_7_axi_periph_1_to_s00_couplers_RRESP), + .S_AXI_rvalid(z_turn_ps_7_axi_periph_1_to_s00_couplers_RVALID), + .S_AXI_wdata(z_turn_ps_7_axi_periph_1_to_s00_couplers_WDATA), + .S_AXI_wid(z_turn_ps_7_axi_periph_1_to_s00_couplers_WID), + .S_AXI_wlast(z_turn_ps_7_axi_periph_1_to_s00_couplers_WLAST), + .S_AXI_wready(z_turn_ps_7_axi_periph_1_to_s00_couplers_WREADY), + .S_AXI_wstrb(z_turn_ps_7_axi_periph_1_to_s00_couplers_WSTRB), + .S_AXI_wvalid(z_turn_ps_7_axi_periph_1_to_s00_couplers_WVALID)); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn_wrapper.v b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn_wrapper.v new file mode 100644 index 0000000..94d9908 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hdl/z_turn_wrapper.v @@ -0,0 +1,224 @@ +//Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. +//-------------------------------------------------------------------------------- +//Tool Version: Vivado v.2015.2 (win64) Build 1263262 Tue Jun 23 17:59:39 MDT 2015 +//Date : Wed Jul 15 11:10:09 2015 +//Host : Mitch-PC running 64-bit Service Pack 1 (build 7601) +//Command : generate_target z_turn_wrapper.bd +//Design : z_turn_wrapper +//Purpose : IP block netlist +//-------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps + +module z_turn_wrapper + (BP, + DDR_addr, + DDR_ba, + DDR_cas_n, + DDR_ck_n, + DDR_ck_p, + DDR_cke, + DDR_cs_n, + DDR_dm, + DDR_dq, + DDR_dqs_n, + DDR_dqs_p, + DDR_odt, + DDR_ras_n, + DDR_reset_n, + DDR_we_n, + FIXED_IO_ddr_vrn, + FIXED_IO_ddr_vrp, + FIXED_IO_mio, + FIXED_IO_ps_clk, + FIXED_IO_ps_porb, + FIXED_IO_ps_srstb, + HDMI_INTn, + I2S_DIN, + I2S_DOUT, + I2S_FSYNC_IN, + I2S_FSYNC_OUT, + I2S_SCLK, + IO_B34_LN, + IO_B34_LN11, + IO_B34_LN8, + IO_B34_LP, + IO_B34_LP11, + IO_B34_LP6, + IO_B34_LP8, + IO_B35_LN, + IO_B35_LP, + LCD_DATA, + LCD_DE, + LCD_HSYNC, + LCD_PCLK, + LCD_VSYNC, + LEDS, + MEMS_INTn, + SW, + iic_0_scl_io, + iic_0_sda_io); + output BP; + inout [14:0]DDR_addr; + inout [2:0]DDR_ba; + inout DDR_cas_n; + inout DDR_ck_n; + inout DDR_ck_p; + inout DDR_cke; + inout DDR_cs_n; + inout [3:0]DDR_dm; + inout [31:0]DDR_dq; + inout [3:0]DDR_dqs_n; + inout [3:0]DDR_dqs_p; + inout DDR_odt; + inout DDR_ras_n; + inout DDR_reset_n; + inout DDR_we_n; + inout FIXED_IO_ddr_vrn; + inout FIXED_IO_ddr_vrp; + inout [53:0]FIXED_IO_mio; + inout FIXED_IO_ps_clk; + inout FIXED_IO_ps_porb; + inout FIXED_IO_ps_srstb; + input HDMI_INTn; + input I2S_DIN; + output I2S_DOUT; + input I2S_FSYNC_IN; + output I2S_FSYNC_OUT; + output I2S_SCLK; + input [5:1]IO_B34_LN; + input IO_B34_LN11; + input IO_B34_LN8; + input [5:1]IO_B34_LP; + input IO_B34_LP11; + input IO_B34_LP6; + input IO_B34_LP8; + input [24:1]IO_B35_LN; + input [24:1]IO_B35_LP; + output [15:0]LCD_DATA; + output LCD_DE; + output LCD_HSYNC; + output LCD_PCLK; + output LCD_VSYNC; + output [2:0]LEDS; + input MEMS_INTn; + input [3:0]SW; + inout iic_0_scl_io; + inout iic_0_sda_io; + + wire BP; + wire [14:0]DDR_addr; + wire [2:0]DDR_ba; + wire DDR_cas_n; + wire DDR_ck_n; + wire DDR_ck_p; + wire DDR_cke; + wire DDR_cs_n; + wire [3:0]DDR_dm; + wire [31:0]DDR_dq; + wire [3:0]DDR_dqs_n; + wire [3:0]DDR_dqs_p; + wire DDR_odt; + wire DDR_ras_n; + wire DDR_reset_n; + wire DDR_we_n; + wire FIXED_IO_ddr_vrn; + wire FIXED_IO_ddr_vrp; + wire [53:0]FIXED_IO_mio; + wire FIXED_IO_ps_clk; + wire FIXED_IO_ps_porb; + wire FIXED_IO_ps_srstb; + wire HDMI_INTn; + wire I2S_DIN; + wire I2S_DOUT; + wire I2S_FSYNC_IN; + wire I2S_FSYNC_OUT; + wire I2S_SCLK; + wire [5:1]IO_B34_LN; + wire IO_B34_LN11; + wire IO_B34_LN8; + wire [5:1]IO_B34_LP; + wire IO_B34_LP11; + wire IO_B34_LP6; + wire IO_B34_LP8; + wire [24:1]IO_B35_LN; + wire [24:1]IO_B35_LP; + wire [15:0]LCD_DATA; + wire LCD_DE; + wire LCD_HSYNC; + wire LCD_PCLK; + wire LCD_VSYNC; + wire [2:0]LEDS; + wire MEMS_INTn; + wire [3:0]SW; + wire iic_0_scl_i; + wire iic_0_scl_io; + wire iic_0_scl_o; + wire iic_0_scl_t; + wire iic_0_sda_i; + wire iic_0_sda_io; + wire iic_0_sda_o; + wire iic_0_sda_t; + + IOBUF iic_0_scl_iobuf + (.I(iic_0_scl_o), + .IO(iic_0_scl_io), + .O(iic_0_scl_i), + .T(iic_0_scl_t)); + IOBUF iic_0_sda_iobuf + (.I(iic_0_sda_o), + .IO(iic_0_sda_io), + .O(iic_0_sda_i), + .T(iic_0_sda_t)); + z_turn z_turn_i + (.BP(BP), + .DDR_addr(DDR_addr), + .DDR_ba(DDR_ba), + .DDR_cas_n(DDR_cas_n), + .DDR_ck_n(DDR_ck_n), + .DDR_ck_p(DDR_ck_p), + .DDR_cke(DDR_cke), + .DDR_cs_n(DDR_cs_n), + .DDR_dm(DDR_dm), + .DDR_dq(DDR_dq), + .DDR_dqs_n(DDR_dqs_n), + .DDR_dqs_p(DDR_dqs_p), + .DDR_odt(DDR_odt), + .DDR_ras_n(DDR_ras_n), + .DDR_reset_n(DDR_reset_n), + .DDR_we_n(DDR_we_n), + .FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn), + .FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp), + .FIXED_IO_mio(FIXED_IO_mio), + .FIXED_IO_ps_clk(FIXED_IO_ps_clk), + .FIXED_IO_ps_porb(FIXED_IO_ps_porb), + .FIXED_IO_ps_srstb(FIXED_IO_ps_srstb), + .HDMI_INTn(HDMI_INTn), + .I2S_DIN(I2S_DIN), + .I2S_DOUT(I2S_DOUT), + .I2S_FSYNC_IN(I2S_FSYNC_IN), + .I2S_FSYNC_OUT(I2S_FSYNC_OUT), + .I2S_SCLK(I2S_SCLK), + .IIC_0_scl_i(iic_0_scl_i), + .IIC_0_scl_o(iic_0_scl_o), + .IIC_0_scl_t(iic_0_scl_t), + .IIC_0_sda_i(iic_0_sda_i), + .IIC_0_sda_o(iic_0_sda_o), + .IIC_0_sda_t(iic_0_sda_t), + .IO_B34_LN(IO_B34_LN), + .IO_B34_LN11(IO_B34_LN11), + .IO_B34_LN8(IO_B34_LN8), + .IO_B34_LP(IO_B34_LP), + .IO_B34_LP11(IO_B34_LP11), + .IO_B34_LP6(IO_B34_LP6), + .IO_B34_LP8(IO_B34_LP8), + .IO_B35_LN(IO_B35_LN), + .IO_B35_LP(IO_B35_LP), + .LCD_DATA(LCD_DATA), + .LCD_DE(LCD_DE), + .LCD_HSYNC(LCD_HSYNC), + .LCD_PCLK(LCD_PCLK), + .LCD_VSYNC(LCD_VSYNC), + .LEDS(LEDS), + .MEMS_INTn(MEMS_INTn), + .SW(SW)); +endmodule diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn.hwh b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn.hwh new file mode 100644 index 0000000..bdee514 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn.hwh @@ -0,0 +1,3298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn_bd.tcl b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn_bd.tcl new file mode 100644 index 0000000..ddf6f60 --- /dev/null +++ b/sdsoc-platform/zturn-7z020/vivado/z_turn20.srcs/sources_1/bd/z_turn/hw_handoff/z_turn_bd.tcl @@ -0,0 +1,300 @@ + +################################################################ +# This is a generated script based on design: z_turn +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2015.2 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + puts "ERROR: This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script." + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source z_turn_script.tcl + +# If you do not already have a project created, +# you can create a project using the following command: +# create_project project_1 myproj -part xc7z020clg400-1 + +# CHECKING IF PROJECT EXISTS +if { [get_projects -quiet] eq "" } { + puts "ERROR: Please open or create a project!" + return 1 +} + + + +# CHANGE DESIGN NAME HERE +set design_name z_turn + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "ERROR: Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + puts "INFO: Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + puts "INFO: Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "ERROR: Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "ERROR: Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + puts "INFO: Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + puts "INFO: Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +puts "INFO: Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + puts $errMsg + return $nRet +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + puts "ERROR: Unable to find parent cell <$parentCell>!" + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + puts "ERROR: Parent <$parentObj> has TYPE = <$parentType>. Expected to be ." + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + set DDR [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:ddrx_rtl:1.0 DDR ] + set FIXED_IO [ create_bd_intf_port -mode Master -vlnv xilinx.com:display_processing_system7:fixedio_rtl:1.0 FIXED_IO ] + set IIC_0 [ create_bd_intf_port -mode Master -vlnv xilinx.com:interface:iic_rtl:1.0 IIC_0 ] + + # Create ports + set BP [ create_bd_port -dir O BP ] + set HDMI_INTn [ create_bd_port -dir I HDMI_INTn ] + set I2S_DIN [ create_bd_port -dir I I2S_DIN ] + set I2S_DOUT [ create_bd_port -dir O I2S_DOUT ] + set I2S_FSYNC_IN [ create_bd_port -dir I I2S_FSYNC_IN ] + set I2S_FSYNC_OUT [ create_bd_port -dir O I2S_FSYNC_OUT ] + set I2S_SCLK [ create_bd_port -dir O -type clk I2S_SCLK ] + set IO_B34_LN [ create_bd_port -dir I -from 5 -to 1 IO_B34_LN ] + set IO_B34_LN8 [ create_bd_port -dir I IO_B34_LN8 ] + set IO_B34_LN11 [ create_bd_port -dir I IO_B34_LN11 ] + set IO_B34_LP [ create_bd_port -dir I -from 5 -to 1 IO_B34_LP ] + set IO_B34_LP6 [ create_bd_port -dir I IO_B34_LP6 ] + set IO_B34_LP8 [ create_bd_port -dir I IO_B34_LP8 ] + set IO_B34_LP11 [ create_bd_port -dir I -type clk IO_B34_LP11 ] + set_property -dict [ list CONFIG.FREQ_HZ {50000000} ] $IO_B34_LP11 + set IO_B35_LN [ create_bd_port -dir I -from 24 -to 1 -type data IO_B35_LN ] + set IO_B35_LP [ create_bd_port -dir I -from 24 -to 1 -type data IO_B35_LP ] + set LCD_DATA [ create_bd_port -dir O -from 15 -to 0 -type data LCD_DATA ] + set LCD_DE [ create_bd_port -dir O LCD_DE ] + set LCD_HSYNC [ create_bd_port -dir O LCD_HSYNC ] + set LCD_PCLK [ create_bd_port -dir O -type clk LCD_PCLK ] + set LCD_VSYNC [ create_bd_port -dir O LCD_VSYNC ] + set LEDS [ create_bd_port -dir O -from 2 -to 0 LEDS ] + set MEMS_INTn [ create_bd_port -dir I MEMS_INTn ] + set SW [ create_bd_port -dir I -from 3 -to 0 SW ] + + # Create instance: proc_sys_reset_0, and set properties + set proc_sys_reset_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 proc_sys_reset_0 ] + + # Create instance: proc_sys_reset_1, and set properties + set proc_sys_reset_1 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 proc_sys_reset_1 ] + + # Create instance: proc_sys_reset_2, and set properties + set proc_sys_reset_2 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 proc_sys_reset_2 ] + + # Create instance: proc_sys_reset_3, and set properties + set proc_sys_reset_3 [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 proc_sys_reset_3 ] + + # Create instance: ps7, and set properties + set ps7 [ create_bd_cell -type ip -vlnv xilinx.com:ip:processing_system7:5.5 ps7 ] + set_property -dict [ list CONFIG.PCW_CAN0_CAN0_IO {MIO 14 .. 15} \ +CONFIG.PCW_CAN0_PERIPHERAL_ENABLE {1} CONFIG.PCW_ENET0_ENET0_IO {MIO 16 .. 27} \ +CONFIG.PCW_ENET0_GRP_MDIO_ENABLE {1} CONFIG.PCW_ENET0_PERIPHERAL_ENABLE {1} \ +CONFIG.PCW_ENET_RESET_ENABLE {0} CONFIG.PCW_EN_CLK1_PORT {1} \ +CONFIG.PCW_EN_CLK2_PORT {1} CONFIG.PCW_EN_CLK3_PORT {1} \ +CONFIG.PCW_EN_RST1_PORT {1} CONFIG.PCW_EN_RST2_PORT {1} \ +CONFIG.PCW_EN_RST3_PORT {1} CONFIG.PCW_FPGA0_PERIPHERAL_FREQMHZ {166.667} \ +CONFIG.PCW_FPGA2_PERIPHERAL_FREQMHZ {100} CONFIG.PCW_FPGA3_PERIPHERAL_FREQMHZ {200} \ +CONFIG.PCW_GPIO_EMIO_GPIO_ENABLE {1} CONFIG.PCW_GPIO_MIO_GPIO_ENABLE {1} \ +CONFIG.PCW_I2C0_PERIPHERAL_ENABLE {1} CONFIG.PCW_I2C1_I2C1_IO {MIO 12 .. 13} \ +CONFIG.PCW_I2C1_PERIPHERAL_ENABLE {1} CONFIG.PCW_I2C_RESET_ENABLE {0} \ +CONFIG.PCW_IRQ_F2P_INTR {1} CONFIG.PCW_MIO_51_PULLUP {disabled} \ +CONFIG.PCW_PRESET_BANK1_VOLTAGE {LVCMOS 1.8V} CONFIG.PCW_QSPI_GRP_FBCLK_ENABLE {1} \ +CONFIG.PCW_QSPI_GRP_SINGLE_SS_ENABLE {1} CONFIG.PCW_QSPI_PERIPHERAL_ENABLE {1} \ +CONFIG.PCW_SD0_GRP_CD_ENABLE {1} CONFIG.PCW_SD0_GRP_CD_IO {MIO 46} \ +CONFIG.PCW_SD0_GRP_WP_ENABLE {1} CONFIG.PCW_SD0_GRP_WP_IO {MIO 47} \ +CONFIG.PCW_SD0_PERIPHERAL_ENABLE {1} CONFIG.PCW_SD1_PERIPHERAL_ENABLE {0} \ +CONFIG.PCW_UART0_PERIPHERAL_ENABLE {0} CONFIG.PCW_UART0_UART0_IO { + + + + + + +

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 W`nB2XFT6~)vN_wM$$O>U$o~mu57;^Y literal 0 HcmV?d00001 diff --git a/sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lscript.ld b/sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lscript.ld new file mode 100644 index 0000000..2f20d8b --- /dev/null +++ b/sdsoc-platform/zturn-7z020/arm-xilinx-eabi/lscript.ld @@ -0,0 +1,285 @@ +/*******************************************************************/ +/* */ +/* This file is automatically generated by linker script generator.*/ +/* */ +/* Version: Xilinx EDK 2013.4 EDK_2013.4.20131205 */ +/* */ +/* Copyright (c) 2010 Xilinx, Inc. All rights reserved. */ +/* */ +/* Description : Cortex-A9 Linker Script */ +/* */ +/*******************************************************************/ + +_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x40000; +_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x8000000; + +_ABORT_STACK_SIZE = DEFINED(_ABORT_STACK_SIZE) ? _ABORT_STACK_SIZE : 1024; +_SUPERVISOR_STACK_SIZE = DEFINED(_SUPERVISOR_STACK_SIZE) ? _SUPERVISOR_STACK_SIZE : 2048; +_IRQ_STACK_SIZE = DEFINED(_IRQ_STACK_SIZE) ? _IRQ_STACK_SIZE : 1024; +_FIQ_STACK_SIZE = DEFINED(_FIQ_STACK_SIZE) ? _FIQ_STACK_SIZE : 1024; +_UNDEF_STACK_SIZE = DEFINED(_UNDEF_STACK_SIZE) ? _UNDEF_STACK_SIZE : 1024; + +/* Define Memories in the system */ + +MEMORY +{ + ps7_ddr_0_S_AXI_BASEADDR : ORIGIN = 0x00100000, LENGTH = 0x3FF00000 + ps7_ram_0_S_AXI_BASEADDR : ORIGIN = 0x00000000, LENGTH = 0x00030000 + ps7_ram_1_S_AXI_BASEADDR : ORIGIN = 0xFFFF0000, LENGTH = 0x0000FE00 +} + +/* Specify the default entry point to the program */ + +ENTRY(_vector_table) + +/* Define the sections, and where they are mapped in memory */ + +SECTIONS +{ +.text : { + *(.vectors) + *(.boot) + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + *(.plt) + *(.gnu_warning) + *(.gcc_execpt_table) + *(.glue_7) + *(.glue_7t) + *(.vfp11_veneer) + *(.ARM.extab) + *(.gnu.linkonce.armextab.*) +} > ps7_ddr_0_S_AXI_BASEADDR + +.init : { + KEEP (*(.init)) +} > ps7_ddr_0_S_AXI_BASEADDR + +.fini : { + KEEP (*(.fini)) +} > ps7_ddr_0_S_AXI_BASEADDR + +.rodata : { + __rodata_start = .; + *(.rodata) + *(.rodata.*) + *(.gnu.linkonce.r.*) + __rodata_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.rodata1 : { + __rodata1_start = .; + *(.rodata1) + *(.rodata1.*) + __rodata1_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.sdata2 : { + __sdata2_start = .; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + __sdata2_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.sbss2 : { + __sbss2_start = .; + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + __sbss2_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.data : { + __data_start = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + *(.jcr) + *(.got) + *(.got.plt) + __data_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.data1 : { + __data1_start = .; + *(.data1) + *(.data1.*) + __data1_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.got : { + *(.got) +} > ps7_ddr_0_S_AXI_BASEADDR + +.ctors : { + __CTOR_LIST__ = .; + ___CTORS_LIST___ = .; + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __CTOR_END__ = .; + ___CTORS_END___ = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.dtors : { + __DTOR_LIST__ = .; + ___DTORS_LIST___ = .; + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __DTOR_END__ = .; + ___DTORS_END___ = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.fixup : { + __fixup_start = .; + *(.fixup) + __fixup_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.eh_frame : { + *(.eh_frame) +} > ps7_ddr_0_S_AXI_BASEADDR + +.eh_framehdr : { + __eh_framehdr_start = .; + *(.eh_framehdr) + __eh_framehdr_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.gcc_except_table : { + *(.gcc_except_table) +} > ps7_ddr_0_S_AXI_BASEADDR + +.mmu_tbl (ALIGN(16384)) : { + __mmu_tbl_start = .; + *(.mmu_tbl) + __mmu_tbl_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx*) + *(.gnu.linkonce.armexidix.*.*) + __exidx_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.preinit_array : { + __preinit_array_start = .; + KEEP (*(SORT(.preinit_array.*))) + KEEP (*(.preinit_array)) + __preinit_array_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.init_array : { + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.fini_array : { + __fini_array_start = .; + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array)) + __fini_array_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.ARM.attributes : { + __ARM.attributes_start = .; + *(.ARM.attributes) + __ARM.attributes_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.sdata : { + __sdata_start = .; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __sdata_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.sbss (NOLOAD) : { + __sbss_start = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + __sbss_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.tdata : { + __tdata_start = .; + *(.tdata) + *(.tdata.*) + *(.gnu.linkonce.td.*) + __tdata_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.tbss : { + __tbss_start = .; + *(.tbss) + *(.tbss.*) + *(.gnu.linkonce.tb.*) + __tbss_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.bss (NOLOAD) : { + __bss_start = .; + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + __bss_end = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 ); + +_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); + +/* Generate Stack and Heap definitions */ + +.heap (NOLOAD) : { + . = ALIGN(16); + _heap = .; + HeapBase = .; + _heap_start = .; + . += _HEAP_SIZE; + _heap_end = .; + HeapLimit = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +.stack (NOLOAD) : { + . = ALIGN(16); + _stack_end = .; + . += _STACK_SIZE; + _stack = .; + __stack = _stack; + . = ALIGN(16); + _irq_stack_end = .; + . += _IRQ_STACK_SIZE; + __irq_stack = .; + _supervisor_stack_end = .; + . += _SUPERVISOR_STACK_SIZE; + . = ALIGN(16); + __supervisor_stack = .; + _abort_stack_end = .; + . += _ABORT_STACK_SIZE; + . = ALIGN(16); + __abort_stack = .; + _fiq_stack_end = .; + . += _FIQ_STACK_SIZE; + . = ALIGN(16); + __fiq_stack = .; + _undef_stack_end = .; + . += _UNDEF_STACK_SIZE; + . = ALIGN(16); + __undef_stack = .; +} > ps7_ddr_0_S_AXI_BASEADDR + +_end = .; +} + diff --git a/sdsoc-platform/zturn-7z020/boot/fsbl.elf b/sdsoc-platform/zturn-7z020/boot/fsbl.elf new file mode 100644 index 0000000000000000000000000000000000000000..2cfcc4d96faeebd0dcb44169494172cb92ab8d97 GIT binary patch literal 420331 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